@serifpersia/dango 3.7.6 → 3.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +1 -1
  2. package/client/dist/assets/{AnimeCard-a7KkMGQv.js → AnimeCard-aZA4-g8o.js} +1 -1
  3. package/client/dist/assets/{AnimeInfo-De3gudGy.js → AnimeInfo-CFGRb1OW.js} +1 -1
  4. package/client/dist/assets/{AnimeInfoPage-adJHjnqz.js → AnimeInfoPage-CozJH4AM.js} +2 -2
  5. package/client/dist/assets/{Asmr-BH3j9n5n.js → Asmr-AxjnBdsh.js} +1 -1
  6. package/client/dist/assets/{AsmrResetProgressModal-CZGzmnlI.js → AsmrResetProgressModal-NKywttOY.js} +1 -1
  7. package/client/dist/assets/{Home-4lO9InFx.js → Home-CkdWZK2L.js} +1 -1
  8. package/client/dist/assets/{Insights-Co9pEzWb.js → Insights-DgnlUFjW.js} +1 -1
  9. package/client/dist/assets/{LibraryListPage-CgZiYRmp.js → LibraryListPage-CJxNJYC3.js} +1 -1
  10. package/client/dist/assets/{ListeningList-DX_Imiie.js → ListeningList-VZTVSt_i.js} +1 -1
  11. package/client/dist/assets/{Manga-tDOa59vQ.js → Manga-dDQAtejO.js} +1 -1
  12. package/client/dist/assets/{MangaInfoPage-D_3Rx6rr.js → MangaInfoPage-DzaSKarW.js} +1 -1
  13. package/client/dist/assets/{MangaReadPage-D0satiXp.js → MangaReadPage-CT6THZho.js} +1 -1
  14. package/client/dist/assets/{MangaResetProgressModal-Bd_lIuFo.js → MangaResetProgressModal-DrqN7OF0.js} +1 -1
  15. package/client/dist/assets/{Mature-DhozU6BP.js → Mature-BGitA9fy.js} +1 -1
  16. package/client/dist/assets/{MatureConsentModal-RZ_j_2BD.js → MatureConsentModal-DLVOORqW.js} +1 -1
  17. package/client/dist/assets/{MediaCard-BODgA6ir.js → MediaCard-DJNRuWDJ.js} +1 -1
  18. package/client/dist/assets/{OptionListMenu-CGazCg0C.js → OptionListMenu-CRaHF9k4.js} +1 -1
  19. package/client/dist/assets/Player-CdSjfMoO.js +56 -0
  20. package/client/dist/assets/{PlayerProvider-pi0at080.js → PlayerProvider-D02-hqdz.js} +1 -1
  21. package/client/dist/assets/{PlayerSettings-k4bqwbns.js → PlayerSettings-CXmAyRJh.js} +1 -1
  22. package/client/dist/assets/{QueueOptionsButton-C-y5QFrT.js → QueueOptionsButton-ByAwxtJ-.js} +1 -1
  23. package/client/dist/assets/{QueueRail-DGFI6xTM.js → QueueRail-BLf4fWOA.js} +1 -1
  24. package/client/dist/assets/{ReadingList-BB_fA_j0.js → ReadingList-Cm5omw5j.js} +1 -1
  25. package/client/dist/assets/{ResetProgressModal-DEnbScHS.js → ResetProgressModal-Dq-B23o_.js} +1 -1
  26. package/client/dist/assets/{Search-Dikasx2q.js → Search-C8rfGyYH.js} +1 -1
  27. package/client/dist/assets/{Settings-CCoAhBc0.js → Settings-Do5F5e2c.js} +1 -1
  28. package/client/dist/assets/{SkeletonGrid-w6TsxWu7.js → SkeletonGrid-sA6_IQY1.js} +1 -1
  29. package/client/dist/assets/{Trackers-CoM-8Hz9.js → Trackers-DeJr1sbR.js} +1 -1
  30. package/client/dist/assets/Tv-BkApELpu.js +4 -0
  31. package/client/dist/assets/{TvInfo-BjFZ57fG.js → TvInfo-C5cVdHka.js} +1 -1
  32. package/client/dist/assets/{TvPopup-D6UvGI7M.js → TvPopup-DyFUi32m.js} +1 -1
  33. package/client/dist/assets/{TvSearch-BDNZjbZo.js → TvSearch-BBYYrww5.js} +1 -1
  34. package/client/dist/assets/{TvWatchlist-er5RKLmv.js → TvWatchlist-SjHmyo2P.js} +1 -1
  35. package/client/dist/assets/{Watchlist-BiJ1SCAH.js → Watchlist-BnmsAcx0.js} +1 -1
  36. package/client/dist/assets/{index-BP1z44Uk.js → index-vb4WPdcb.js} +2 -2
  37. package/client/dist/assets/{libraryInvalidation-CVK2SYUR.js → libraryInvalidation-2sAPXNhJ.js} +1 -1
  38. package/client/dist/assets/{useAnimeInfoData-8RI9qMzw.js → useAnimeInfoData-Ai39I_f0.js} +1 -1
  39. package/client/dist/assets/{useAsmr-ClAcWwjW.js → useAsmr-XBCV7iDw.js} +1 -1
  40. package/client/dist/assets/{useAsmrPopup-CDcDqi0C.js → useAsmrPopup-DViHcQnO.js} +1 -1
  41. package/client/dist/assets/{useMangaLibrary-D3Foz2m_.js → useMangaLibrary-DrPp5K_1.js} +1 -1
  42. package/client/dist/assets/{useMangaPopup-kZzwoCN6.js → useMangaPopup-VGTfdKEu.js} +1 -1
  43. package/client/dist/assets/usePlaybackEnd-C5EyqR1L.js +10 -0
  44. package/client/dist/assets/{useProviders-OKWPunZg.js → useProviders-Bt-p5Jxv.js} +1 -1
  45. package/client/dist/assets/{useTv-BgO7EV-p.js → useTv-BpVapcT5.js} +1 -1
  46. package/client/dist/assets/{useTvLibrary-C6rSJQi_.js → useTvLibrary-BFRidauf.js} +1 -1
  47. package/client/dist/index.html +1 -1
  48. package/package.json +2 -2
  49. package/server/package.json +1 -1
  50. package/client/dist/assets/Player-M3yMiFzg.js +0 -56
  51. package/client/dist/assets/Tv-BLUeZ2n8.js +0 -4
  52. package/client/dist/assets/usePlaybackEnd-DmvZ__Ut.js +0 -10
@@ -0,0 +1,56 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PlayerSettings-CXmAyRJh.js","assets/vendor-core-DfaOB3Rn.js","assets/vendor-icons-DrybRNxP.js","assets/OptionListMenu-CRaHF9k4.js","assets/usePlaybackEnd-C5EyqR1L.js","assets/index-vb4WPdcb.js","assets/vendor-query-BBT5_sHx.js","assets/index-5x1mF1nD.css","assets/PlayerProvider-D02-hqdz.js","assets/PlayerProvider-N2pT5gty.css","assets/playbackCompletion-IPHm9fp5.js","assets/usePlaybackEnd-BMf_H2dw.css","assets/PlayerSettings-BXGe3F5k.css"])))=>i.map(i=>d[i]);
2
+ import{u as t,g as dt,h as W,P as jt,z as Ht,d as oe,A as C,q as U,y as Yt,T as Me,o as Xt,a as Jt,c as Zt,_ as er,S as ct}from"./vendor-core-DfaOB3Rn.js";import{P as tr,a as rr,b as nr,F as sr,s as or,c as ar}from"./PlayerProvider-D02-hqdz.js";import{u as Nt,b as Ct,a as bt}from"./vendor-query-BBT5_sHx.js";import{p as Et,s as ir,C as lr,P as cr,a as ur,b as Ie,c as Mt,f as Pt,d as dr,e as mr,g as fr,r as hr,u as pr,h as vr,i as gr,j as yr,k as br,l as Sr,m as Er,n as be,A as wr,o as kr,R as Tr,E as Cr,q as Mr,t as w,v as Rr,w as Nr,x as Pr}from"./usePlaybackEnd-C5EyqR1L.js";import{I as de}from"./vendor-icons-DrybRNxP.js";import{_ as At,S as Ye,i as Ar,q as se,t as ue,A as we,O as _r,P as Ve,M as mt,e as xr,m as Br,n as Lr,o as Dr,p as $r,d as Ir,u as Fr,B as ut,Q as Or,f as Wr}from"./index-vb4WPdcb.js";import{l as Ur,i as ft,s as Vr}from"./playbackCompletion-IPHm9fp5.js";import{M as Qr}from"./MatureConsentModal-DLVOORqW.js";import{u as Kr}from"./useIsMobile-Dvx1uJ82.js";import{s as Ee,Q as Gr}from"./QueueRail-BLf4fWOA.js";import{u as qr,Q as zr}from"./QueueOptionsButton-ByAwxtJ-.js";import{u as _t}from"./useProviders-Bt-p5Jxv.js";import{A as jr}from"./AnimeMetaDetails-B3-A7O5H.js";import{S as Hr}from"./SynopsisText-B3Sa5pRv.js";import"./vendor-ui-3qrARCPr.js";const Yr="_controlsOverlay_cejny_1",Xr="_hidden_cejny_21",Jr="_topControls_cejny_27",Zr="_backBtn_cejny_47",en="_videoTitleInfo_cejny_67",tn="_animeTitle_cejny_73",rn="_episodeNumber_cejny_83",nn="_bottomControls_cejny_91",sn="_progressBarContainer_cejny_110",on="_progressBar_cejny_110",an="_thumb_cejny_129",ln="_scrubbing_cejny_144",cn="_watchedBar_cejny_148",un="_bufferedBar_cejny_149",dn="_timeBubble_cejny_187",mn="_skipSegment_cejny_221",fn="_bottomControlsRow_cejny_231",hn="_leftControls_cejny_239",pn="_rightControls_cejny_240",vn="_controlBtn_cejny_247",gn="_theaterBtn_cejny_288",yn="_nextEpisodeBtn_cejny_292",bn="_active_cejny_313",Sn="_timeDisplay_cejny_317",En="_skipControls_cejny_325",_={controlsOverlay:Yr,hidden:Xr,topControls:Jr,backBtn:Zr,videoTitleInfo:en,animeTitle:tn,episodeNumber:rn,bottomControls:nn,progressBarContainer:sn,progressBar:on,thumb:an,scrubbing:ln,watchedBar:cn,bufferedBar:un,timeBubble:dn,skipSegment:mn,bottomControlsRow:fn,leftControls:hn,rightControls:pn,controlBtn:vn,theaterBtn:gn,nextEpisodeBtn:yn,active:bn,timeDisplay:Sn,skipControls:En},wn=({player:r,handlers:n,visible:i,skipIntervals:h,showNextEpisodeButton:a,onNextEpisode:o,isTheaterMode:s,onTheaterModeToggle:l,settingsBtnRef:u,timeDisplayRef:f})=>{const{state:k,refs:e,actions:d}=r,{showSettings:R}=k;return t("div",{className:`${_.controlsOverlay} ${i?"":_.hidden} `,"data-speed-boost-ignore":"true",style:{pointerEvents:"none",background:"none",justifyContent:"flex-end"},children:t("div",{className:_.bottomControls,"data-speed-boost-ignore":"true",onClick:p=>p.stopPropagation(),children:[t(tr,{classes:{container:_.progressBarContainer,scrubbing:_.scrubbing,timeBubble:_.timeBubble,bar:_.progressBar,buffered:_.bufferedBar,watched:_.watchedBar,thumb:_.thumb},timeLabelRef:f,children:[k.duration>0&&r.state.currentSkipInterval&&t("div",{className:`${_.skipSegment} ${_[r.state.currentSkipInterval.skip_type]} `,style:{left:`${r.state.currentSkipInterval.start_time/k.duration*100}% `,width:`${(r.state.currentSkipInterval.end_time-r.state.currentSkipInterval.start_time)/k.duration*100}% `}}),h.map(p=>{const T=p.start_time/k.duration*100,M=(p.end_time-p.start_time)/k.duration*100;return t("div",{className:`${_.skipSegment} ${_[p.skip_type]} `,style:{left:`${T}% `,width:`${M}% `},title:p.skip_type.toUpperCase()},p.skip_id)})]}),t("div",{className:_.bottomControlsRow,children:[t("div",{className:_.leftControls,children:[t(rr,{className:_.controlBtn}),t(nr,{buttonClassName:_.controlBtn,onExpandedChange:d.setShowVolumeSlider}),t("span",{className:_.timeDisplay,ref:f,children:[d.formatTime(0)," / ",d.formatTime(k.duration)]}),k.currentSkipInterval&&!k.isAutoSkipEnabled&&t("button",{className:_.controlBtn,onClick:()=>{e.videoRef.current&&k.currentSkipInterval&&(e.videoRef.current.currentTime=k.currentSkipInterval.end_time,d.setCurrentSkipInterval(null))},children:["Skip ",k.currentSkipInterval.skip_type==="op"?"Opening":"Ending"]})]}),t("div",{className:_.rightControls,children:[t("div",{className:_.skipControls,children:a&&t("button",{className:_.nextEpisodeBtn,onClick:o,title:"Play next episode",children:"Next EP"})}),t("button",{className:`${_.controlBtn} ${n.isSubtitleActive?_.active:""}`,onClick:n.handleCCToggle,title:n.isSubtitleActive?"Disable Subtitles":"Enable Subtitles","aria-label":"Toggle Subtitles",children:t(de,{name:"closed-captioning",size:22})}),t("button",{ref:u,className:`${_.controlBtn} ${R?_.active:""} `,onClick:()=>d.setShowSettings(!R),"aria-label":"Settings",children:t(de,{name:"cog"})}),t("button",{className:`${_.controlBtn} ${_.theaterBtn} ${s?_.active:""} `,onClick:p=>{p.stopPropagation(),l()},title:s?"Exit Theater Mode":"Theater Mode","aria-label":s?"Exit Theater Mode":"Theater Mode",children:t(de,{name:"tv"})}),t(sr,{className:_.controlBtn})]})]})]})})};function kn(r){const{state:n,refs:i,actions:h}=r,a=l=>{if(!i.videoRef.current)return;h.setActiveSubtitleTrack(l);try{if(l===null||l==="off")localStorage.setItem("playerSubtitlesEnabled","false");else{localStorage.setItem("playerSubtitlesEnabled","true");const f=n.availableSubtitles.find(k=>k.label===l||k.lang===l);f?localStorage.setItem("playerLastSubtitle",ir(f)):localStorage.setItem("playerLastSubtitle",l)}}catch{}let u=!1;Array.from(i.videoRef.current.textTracks).forEach(f=>{const e=l!==null&&l!=="off"&&(f.language===l||f.label===l)&&!u;f.mode=e?"showing":"hidden",e&&(u=!0)})},o=n.activeSubtitleTrack!==null&&n.activeSubtitleTrack!=="off";return{handleSubtitleSelection:a,isSubtitleActive:o,handleCCToggle:()=>{if(!i.videoRef.current)return;if(o){a("off");return}if(n.availableSubtitles.length===0)return;let l=null;try{l=localStorage.getItem("playerLastSubtitle")}catch{}const u=Et(n.availableSubtitles,{lastKey:l,enabled:!0});if(u<0)return;const f=n.availableSubtitles[u];a(f.label||f.lang)}}}const Tn=Ht(()=>At(()=>import("./PlayerSettings-CXmAyRJh.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]))),Cn=({player:r,isAutoplayEnabled:n,onAutoplayChange:i,showNextEpisodeButton:h,onNextEpisode:a,videoSources:o,selectedSource:s,selectedLink:l,onSourceChange:u,loadingVideo:f,skipIntervals:k,animeTitle:e,episodeNumber:d,isTheaterMode:R,onTheaterModeToggle:p,anime4kEnabled:T,onAnime4kToggle:M,anime4kSupported:N,anime4kProfile:A,onAnime4kProfileChange:S,anime4kInitializing:y,anime4kError:P,videoDelayEnabled:m,onVideoDelayToggle:E,videoDelayMs:B,onVideoDelayChange:H,onCalibrateAvSync:O,fallbackChoice:K,onFallbackChoiceChange:G,ambientSettings:L,onAmbientChange:x,children:q,overlays:Q,isInteractingExtra:me=!1,className:c,hideChrome:b=!1})=>{const{state:v,actions:D}=r,{showSettings:Y}=v,{setShowSettings:I}=D,V=kn(r),J=dt.useRef(null),Se=dt.useRef(null),Ae=dt.useRef(null);W(()=>{const j=pe=>{J.current&&!J.current.contains(pe.target)&&Se.current&&!Se.current.contains(pe.target)&&Y&&I(!1)};return Y&&document.addEventListener("mousedown",j),()=>{document.removeEventListener("mousedown",j)}},[Y,I]);const Re=v.showControls||Y||v.isScrubbing,Z=t(ur,{visible:Re,title:e,episode:d?`Episode ${d}`:void 0,onBack:()=>window.history.back(),classes:{overlay:_.controlsOverlay,hidden:_.hidden,top:_.topControls,backBtn:_.backBtn,titleInfo:_.videoTitleInfo,title:_.animeTitle,episode:_.episodeNumber}}),z=!f&&!v.isBuffering&&v.duration>0?t(lr,{}):null,ke=t(wn,{player:r,handlers:V,visible:Re,skipIntervals:k,showNextEpisodeButton:h,onNextEpisode:a,isTheaterMode:R,onTheaterModeToggle:p,settingsBtnRef:Se,timeDisplayRef:Ae}),_e=t(jt,{fallback:null,children:t(Tn,{ref:J,isOpen:Y,onClose:()=>I(!1),videoSources:o,currentSource:s,currentLink:l,onSourceChange:u,subtitles:v.availableSubtitles,activeSubtitleTrack:v.activeSubtitleTrack,onSubtitleChange:V.handleSubtitleSelection,subtitleSettings:{fontSize:v.subtitleFontSize,position:v.subtitlePosition,bgOpacity:v.subtitleBgOpacity,bgColor:v.subtitleBgColor,textColor:v.subtitleTextColor,edge:v.subtitleEdge,bold:v.subtitleBold},onSubtitleSettingsChange:D.setSubtitleStyle,useNativeControls:v.useNativeControls,onNativeControlsToggle:D.setUseNativeControls,anime4kEnabled:T,onAnime4kToggle:M,anime4kSupported:N,anime4kProfile:A,onAnime4kProfileChange:S,anime4kInitializing:y,anime4kError:P,videoDelayEnabled:m,onVideoDelayToggle:E,videoDelayMs:B,onVideoDelayChange:H,onCalibrateAvSync:O,isAutoSkipEnabled:v.isAutoSkipEnabled,onAutoSkipChange:j=>{D.setIsAutoSkipEnabled(j);try{localStorage.setItem("autoSkipEnabled",j.toString())}catch{}},isAutoplayEnabled:n,onAutoplayChange:i,fallbackChoice:K,onFallbackChoiceChange:G,isTheaterMode:R,ambientSettings:L,onAmbientChange:x})}),ee=Y?t("div",{"data-speed-boost-ignore":"true",onClick:j=>j.stopPropagation(),children:_e}):null;return t(cr,{engine:r.engine,topBar:Z,centerControls:z,bottomBar:!f&&v.duration>0?ke:null,settingsPanel:ee,overlays:Q,isInteracting:me||v.showSettings||v.showVolumeSlider,nativeControls:v.useNativeControls,className:c,chromeDisabled:b,children:q})},Mn=({count:r=3})=>t("section",{className:Ee.section,children:[t("div",{className:Ee.header,children:t("button",{className:Ee.headerToggle,disabled:!0,children:[t("span",{className:Ee.title,children:t(Ye,{width:"60px",height:"1.2rem",variant:"text"})}),t(de,{name:"chevron-down",style:{opacity:.3}})]})}),t("div",{className:Ee.list,children:Array.from({length:r}).map((n,i)=>t("div",{className:Ee.item,style:{pointerEvents:"none"},children:[t("div",{className:Ee.dragHandle,style:{opacity:.2},children:t(Ye,{width:"16px",height:"16px",variant:"rectangular"})}),t("div",{className:Ee.thumbnail,style:{overflow:"hidden",background:"transparent"},children:t(Ye,{width:"100%",height:"100%",variant:"rectangular"})}),t("div",{className:Ee.meta,children:[t(Ye,{width:"80%",height:"1.2rem",variant:"text",className:Ee.metaGap}),t(Ye,{width:"40%",height:"0.8rem",variant:"rectangular",style:{borderRadius:"var(--radius-sm)"}})]})]},i))})]}),Rn={soft:"Softsub",hard:"Hardsub",mixed:"Mixed"},Nn={direct:"Direct",embed:"Embed",cookie:"Needs cookie"},Pn=["direct","cookie","embed"],An=({selectedProvider:r,onProviderChange:n,isAdult:i,options:h})=>{const o=(h&&h.length>0?h:[]).filter(s=>s.mature===(i===!0));return t("div",{className:Ie.providerSelectContainer,children:[t("h4",{children:"Provider"}),t("select",{className:Ie.providerSelect,value:r,onChange:s=>n(s.currentTarget.value),children:Pn.map(s=>{const l=o.filter(u=>(u.tier??"direct")===s);return l.length===0?null:t("optgroup",{label:Nn[s],children:l.map(u=>t("option",{value:u.id,children:u.sub?`${u.label} (${Rn[u.sub]})`:u.label},u.id))},s)})})]})},_n=({videoSources:r,selectedSource:n,selectedLink:i,onSourceChange:h,onLinkChange:a})=>{const o=Array.isArray(r)?r:[];if(o.length===0)return null;const s=n?.type==="iframe"&&(n.links?.length??0)>1;return t("div",{className:Ie.sourceSelectionContainer,children:[t("h4",{children:"Source"}),t("div",{className:Ie.sourceButtons,children:o.map((l,u)=>t("button",{className:`${Ie.sourceButton} ${n?.sourceName===l.sourceName?Ie.active:""} `,onClick:()=>h(l),children:l.sourceName},`${l.sourceName}-${u}`))}),s&&t("select",{className:Ie.sourceSelect,"aria-label":"Fallback embed quality",value:i?.link??n.links[0]?.link??"",onChange:l=>{const u=n.links.find(f=>f.link===l.currentTarget.value);u&&a(u)},children:n.links.map(l=>t("option",{value:l.link,children:l.resolutionStr},l.link))})]})},xn=dt.memo(_n,(r,n)=>r.selectedSource?.sourceName===n.selectedSource?.sourceName&&r.selectedLink?.link===n.selectedLink?.link&&r.videoSources===n.videoSources),Bn={low:{sd:1.5,hd:1.3,fhd:1.25},balanced:{sd:2,hd:1.5,fhd:1.25},high:{sd:2.5,hd:2,fhd:1.5},denoise:{sd:1.5,hd:1.5,fhd:1.5}},Ln={low:"ModeB",balanced:"ModeA",high:"ModeAA",denoise:"ModeC"},Dn=5,$n=15e3,In=`
3
+ @group(0) @binding(0) var extTex: texture_external;
4
+ @group(0) @binding(1) var extSamp: sampler;
5
+ struct VSOut {
6
+ @builtin(position) pos: vec4f,
7
+ @location(0) uv: vec2f,
8
+ };
9
+ @vertex
10
+ fn vs(@builtin(vertex_index) idx: u32) -> VSOut {
11
+ var positions = array<vec2f, 6>(
12
+ vec2f(-1.0, -1.0), vec2f(1.0, -1.0), vec2f(-1.0, 1.0),
13
+ vec2f(-1.0, 1.0), vec2f(1.0, -1.0), vec2f(1.0, 1.0)
14
+ );
15
+ var uvs = array<vec2f, 6>(
16
+ vec2f(0.0, 1.0), vec2f(1.0, 1.0), vec2f(0.0, 0.0),
17
+ vec2f(0.0, 0.0), vec2f(1.0, 1.0), vec2f(1.0, 0.0)
18
+ );
19
+ var out: VSOut;
20
+ out.pos = vec4f(positions[idx], 0.0, 1.0);
21
+ out.uv = uvs[idx];
22
+ return out;
23
+ }
24
+ @fragment
25
+ fn fs(@location(0) uv: vec2f) -> @location(0) vec4f {
26
+ return textureSampleBaseClampToEdge(extTex, extSamp, uv);
27
+ }
28
+ `;function Fn({videoRef:r,canvasRef:n,profile:i="balanced",delayMs:h=0}){const[a,o]=oe(!1),[s,l]=oe(()=>{try{return localStorage.getItem("anime4kEnabled")==="true"}catch{return!1}}),[u,f]=oe(!1),[k,e]=oe(null),[d,R]=oe(0),p=C(0),T=C(null),M=C(null),N=C(null),A=C(null),S=C(null),y=C(null),P=C(null),m=C(null),E=C(null),B=C(!1),H=C(-1),O=C(0),K=C(h);K.current=h;const G=C([]),L=C(!1),x=C(!1),q=C(!1),Q=C(null),me=C(-1),c=C(-1),b=C(!1),v=C(0);W(()=>{async function I(){if(typeof navigator>"u"||!navigator.gpu){o(!1);return}try{const V=await navigator.gpu.requestAdapter();o(!!V)}catch{o(!1)}}I()},[]),W(()=>{if(!s||!a)return;let I=!1;const V=++p.current,J=z=>{if(z)try{z.close()}catch{}},Se=()=>{for(const z of G.current)J(z.bitmap);G.current=[]},Ae=z=>Math.max(8,Math.min(40,Math.ceil(z/16.7)+4));function Re(){E.current!==null&&(cancelAnimationFrame(E.current),E.current=null)}async function Z(){let z=r.current;const ke=n.current;if(!z||!ke||p.current!==V)return;const _e=performance.now()+$n;for(;(!z||z.videoWidth===0)&&performance.now()<_e;){if(await new Promise(ie=>requestAnimationFrame(ie)),I||p.current!==V)return;z=r.current}if(!z||z.videoWidth===0){!I&&p.current===V&&(e("Timed out waiting for video metadata"),f(!1),l(!1));return}const ee=z.videoWidth,j=z.videoHeight,pe=Math.max(ee,j),ht=window.innerWidth,xe=window.innerHeight,Je=Math.max(ht,xe),Ze=pe<Je?Je/pe:1,Qe=Bn[i],pt=pe<=480?Qe.sd:pe<=720?Qe.hd:pe<=1080?Qe.fhd:1,ae=Math.min(pt,Ze);ke.width=Math.round(ee*ae),ke.height=Math.round(j*ae),f(!0),e(null),O.current=0,H.current=-1,me.current=-1,c.current=-1,b.current=!1,v.current=0,Se(),B.current=!1;try{let ie=function(){I||p.current!==V||(Re(),E.current=requestAnimationFrame(()=>{at()}))};const{ModeA:vt,ModeB:Te,ModeC:et,ModeAA:Ke}=await At(async()=>{const{ModeA:F,ModeB:te,ModeC:fe,ModeAA:le}=await import("./index-BOKlZEHq.js").then(ce=>ce.i);return{ModeA:F,ModeB:te,ModeC:fe,ModeAA:le}},[]);if(I||p.current!==V)return;if(!navigator.gpu)throw new Error("WebGPU not available");const tt=await navigator.gpu.requestAdapter();if(I||p.current!==V)return;if(!tt)throw new Error("No GPU adapter found");const $=await tt.requestDevice();if(!$)throw new Error("Failed to get GPU device");if(I||p.current!==V){$.destroy();return}T.current=$;const Ne=ke.getContext("webgpu");if(!Ne)throw new Error("Failed to get WebGPU context");M.current=Ne;const Ge=navigator.gpu.getPreferredCanvasFormat();Ne.configure({device:$,format:Ge,alphaMode:"premultiplied"});const ve=$.createTexture({size:[ee,j],format:"rgba16float",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),rt=Ln[i],Fe=Math.round(ee*ae),Oe=Math.round(j*ae),qe=(()=>{switch(rt){case"ModeB":return new Te({device:$,inputTexture:ve,nativeDimensions:{width:ee,height:j},targetDimensions:{width:Fe,height:Oe}});case"ModeC":return new et({device:$,inputTexture:ve,nativeDimensions:{width:ee,height:j},targetDimensions:{width:Fe,height:Oe}});case"ModeAA":return new Ke({device:$,inputTexture:ve,nativeDimensions:{width:ee,height:j},targetDimensions:{width:Fe,height:Oe}});default:return new vt({device:$,inputTexture:ve,nativeDimensions:{width:ee,height:j},targetDimensions:{width:Fe,height:Oe}})}})(),Be=qe.getOutputTexture(),ze=$.createSampler({magFilter:"linear",minFilter:"linear"}),nt=$.createShaderModule({code:`
29
+ @group(0) @binding(0) var tex: texture_2d<f32>;
30
+ @group(0) @binding(1) var samp: sampler;
31
+ struct VertexOutput {
32
+ @builtin(position) pos: vec4f,
33
+ @location(0) uv: vec2f,
34
+ }
35
+ @vertex
36
+ fn vs(@builtin(vertex_index) idx: u32) -> VertexOutput {
37
+ var positions = array<vec2f, 6>(
38
+ vec2f(-1.0, -1.0), vec2f(1.0, -1.0), vec2f(-1.0, 1.0),
39
+ vec2f(-1.0, 1.0), vec2f(1.0, -1.0), vec2f(1.0, 1.0)
40
+ );
41
+ var uvs = array<vec2f, 6>(
42
+ vec2f(0.0, 1.0), vec2f(1.0, 1.0), vec2f(0.0, 0.0),
43
+ vec2f(0.0, 0.0), vec2f(1.0, 1.0), vec2f(1.0, 0.0)
44
+ );
45
+ var out: VertexOutput;
46
+ out.pos = vec4f(positions[idx], 0.0, 1.0);
47
+ out.uv = uvs[idx];
48
+ return out;
49
+ }
50
+ @fragment
51
+ fn fs(@location(0) uv: vec2f) -> @location(0) vec4f {
52
+ return textureSample(tex, samp, uv);
53
+ }
54
+ `}),Le=$.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),De=$.createRenderPipeline({layout:$.createPipelineLayout({bindGroupLayouts:[Le]}),vertex:{module:nt,entryPoint:"vs"},fragment:{module:nt,entryPoint:"fs",targets:[{format:Ge}]},primitive:{topology:"triangle-list"}}),st=$.createBindGroup({layout:Le,entries:[{binding:0,resource:Be.createView()},{binding:1,resource:ze}]});try{const F=$.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,externalTexture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),te=$.createShaderModule({code:In}),fe=$.createRenderPipeline({layout:$.createPipelineLayout({bindGroupLayouts:[F]}),vertex:{module:te,entryPoint:"vs"},fragment:{module:te,entryPoint:"fs",targets:[{format:"rgba16float"}]},primitive:{topology:"triangle-list"}});Q.current={pipeline:fe,layout:F,inputView:ve.createView()}}catch{Q.current=null}N.current=qe,A.current=ve,S.current=Be,y.current=De,P.current=ze,m.current=Le,x.current=!1,q.current=!1;async function ot(){const F=Q.current;if(!F||x.current)return!1;const te=r.current;if(!te)return!1;const fe=!q.current;fe&&$.pushErrorScope("validation");try{const le=$.importExternalTexture({source:te}),ce=$.createBindGroup({layout:F.layout,entries:[{binding:0,resource:le},{binding:1,resource:ze}]}),he=$.createCommandEncoder(),ge=he.beginRenderPass({colorAttachments:[{view:F.inputView,loadOp:"load",storeOp:"store"}]});ge.setPipeline(F.pipeline),ge.setBindGroup(0,ce),ge.draw(6),ge.end(),$.queue.submit([he.finish()])}catch{return x.current=!0,Q.current=null,!1}if(fe){const le=await $.popErrorScope().catch(()=>null);if(le)return console.warn("[anime4k] blit probe failed:",le.message),x.current=!0,Q.current=null,!1;q.current=!0}return!0}f(!1);async function at(){if(I||p.current!==V||!Ne)return;const F=r.current;if(!F||F.videoWidth===0){ie();return}if(F!==z||F.videoWidth!==ee||F.videoHeight!==j){R(ce=>ce+1);return}if(F.paused||F.ended||document.hidden||F.readyState<HTMLMediaElement.HAVE_CURRENT_DATA){ie();return}const te=F.getVideoPlaybackQuality().totalVideoFrames;if(te===c.current){ie();return}if(B.current){ie();return}const fe=F.currentTime;(F.seeking||me.current>=0&&Math.abs(fe-me.current)>.5)&&(Se(),b.current=!1,v.current=0,c.current=-1),me.current=fe;const le=Math.max(0,K.current||0);le>v.current&&(b.current=!1),B.current=!0;try{const ce=performance.now();let he=null,ge=!1;if(le<=0){G.current.length>0&&Se(),b.current=!1,v.current=0;let ye=!1;if(!L.current)try{$.queue.copyExternalImageToTexture({source:F},{texture:ve},[ee,j]),c.current=te,ye=!0}catch(re){if(re instanceof TypeError)L.current=!0;else throw re}if(!ye&&!x.current&&Q.current&&await ot()&&(c.current=te,ye=!0),!ye){const re=await createImageBitmap(F);c.current=te,$.queue.copyExternalImageToTexture({source:re},{texture:ve},[ee,j]),J(re)}}else{const ye=await createImageBitmap(F);c.current=te;const re=G.current;re.push({bitmap:ye,capture:ce});const it=Ae(le);for(;re.length>it;)J(re.shift()?.bitmap);let Ue=-1;for(let ne=re.length-1;ne>=0;ne--)if(ce-re[ne].capture>=le){Ue=ne;break}if(Ue!==-1){for(let He=0;He<Ue;He++)J(re.shift()?.bitmap);const ne=re.shift();ne?(he=ne.bitmap,b.current=!0,v.current=le):(he=ye,ge=!0)}else if(!b.current)he=ye,ge=!0;else{const ne=re.shift();he=ne?ne.bitmap:ye,ne||(ge=!0)}if(!he){B.current=!1,ie();return}$.queue.copyExternalImageToTexture({source:he},{texture:ve},[ee,j]),ge||J(he)}const je=$.createCommandEncoder();await qe.pass(je);const We=je.beginRenderPass({colorAttachments:[{view:Ne.getCurrentTexture().createView(),clearValue:{r:0,g:0,b:0,a:1},loadOp:"clear",storeOp:"store"}]});We.setPipeline(De),We.setBindGroup(0,st),We.draw(6),We.end(),$.queue.submit([je.finish()]),H.current=te,O.current=0,$.queue.onSubmittedWorkDone().then(()=>{p.current===V&&(B.current=!1)})}catch(ce){if(B.current=!1,O.current+=1,O.current>=Dn&&!I&&p.current===V){console.error(ce),e(ce instanceof Error?ce.message:"Render error"),l(!1);return}}ie()}ie()}catch(ie){!I&&p.current===V&&(M.current?.unconfigure(),T.current?.destroy(),T.current=null,M.current=null,e(ie instanceof Error?ie.message:"Failed to initialize upscaler"),f(!1),l(!1))}}return Z(),()=>{I=!0,p.current+=1,Re(),Se(),M.current?.unconfigure(),A.current&&(A.current.destroy(),A.current=null),S.current&&(S.current.destroy(),S.current=null),T.current&&(T.current.destroy(),T.current=null),N.current=null,y.current=null,P.current=null,m.current=null,Q.current=null,M.current=null,B.current=!1}},[s,a,r,n,i,d]);const D=U(I=>{l(I);try{localStorage.setItem("anime4kEnabled",String(I))}catch{}},[]),Y=U(()=>{l(I=>{const V=!I;try{localStorage.setItem("anime4kEnabled",String(V))}catch{}return V})},[]);return{isWebGPUSupported:a,isEnabled:s,isInitializing:u,error:k,toggle:Y,setEnabled:D}}function On({videoRef:r,episodeKey:n,isEnabled:i,isSupported:h,mediaReady:a,isIframeSource:o,setEnabled:s}){const l=C(null),u=C(!1),f=C(!1),k=C(s);k.current=s,W(()=>{const e=l.current;l.current=n,!(e===null||e===n)&&(!i||!h||(u.current=!0,f.current=!1,k.current(!1)))},[n,i,h]),W(()=>{if(!u.current)return;if(i){f.current&&(u.current=!1);return}if(f.current=!0,!a)return;if(o){u.current=!1,k.current(!0);return}const e=r.current;if(!e)return;let d,R=!1;const p=()=>{R||(R=!0,u.current=!1,k.current(!0))};if(e.readyState>=2)return d=window.setTimeout(p,500),()=>window.clearTimeout(d);const T=()=>{window.setTimeout(p,500)};return e.addEventListener("canplay",T,{once:!0}),e.addEventListener("playing",T,{once:!0}),d=window.setTimeout(p,5e3),()=>{window.clearTimeout(d),e.removeEventListener("canplay",T),e.removeEventListener("playing",T)}},[i,a,o,r])}const Wn=()=>localStorage.getItem("preferredMode")==="dub"?"dub":"sub",Un=/^[a-z0-9-]+$/i,xt=r=>r?"preferredProviderMature":"preferredProvider",Bt=r=>{const n=localStorage.getItem(xt(r));return n&&Un.test(n)?n:null},Lt=(r,n)=>{localStorage.setItem(xt(n),r)},Vn=()=>Bt(!1)??"megaplay",Qn=()=>({showMeta:{},episodes:[],watchedEpisodes:[],watchlistStatus:null,showCombinedDetails:!1,currentMode:Wn(),inWatchlist:!1,videoSources:[],selectedSource:null,selectedLink:null,isAutoplayEnabled:Ur(),showResumeModal:!0,resumeProgressPending:!0,resumeTime:0,resumeDuration:0,skipIntervals:[],selectedProvider:Vn(),loadingShowData:!0,loadingVideo:!1,error:null,showCookieModal:!1,cookieProvider:null});function Kn(r,n){switch(n.type){case"SET_STATE":return{...r,...n.payload};case"SET_MODE":return{...r,currentMode:n.payload,videoSources:[],selectedSource:null,selectedLink:null};case"SET_PROVIDER":return{...r,selectedProvider:n.payload};default:return r}}async function Rt(r,n,i,h,a=!1){if(!r||!n)throw new Error("Missing params");try{const[o,s,l,u]=await Promise.all([ue.data.video.query({showId:r,episodeNumber:n,mode:i.currentMode,provider:i.selectedProvider}).catch(S=>{const y=S.data?.cause;return S.message==="AUTH_REQUIRED"&&y?.provider==="mkissa"&&h({type:"SET_STATE",payload:{showCookieModal:!0,cookieProvider:"mkissa"}}),null}),ue.progress.getEpisode.query({showId:r,episodeNumber:n}).catch(()=>null),ue.settings.getByKey.query({key:"preferredSource"}).catch(()=>null),ue.data.skipTimes.query({showId:r,episodeNumber:n}).catch(()=>[])]),f=l?.value,k=o?.filter(S=>{const y=S.sourceName.toLowerCase();return i.currentMode==="dub"?y.includes("eng")||y.includes("dub"):y.includes("jpn")||y.includes("sub")||!y.includes("eng")&&!y.includes("dub")})??[],e=k.length>0?k:o??[];let d=e.length>0?e[0]:null;if(f){const S=e.find(y=>y.sourceName===f);S&&(d=S)}const R=d&&d.links.length>0?d.links.sort((S,y)=>(parseInt(y.resolutionStr)||0)-(parseInt(S.resolutionStr)||0))[0]:null,p=s?.currentTime||0,T=s?.duration||0,M=p,A=(Array.isArray(u)?u:u?.results||[]).map(S=>({skip_id:S.skip_id||"",skip_type:S.skip_type||"",start_time:S.interval?.start_time??S.start_time??0,end_time:S.interval?.end_time??S.end_time??0})).filter(S=>S.end_time>0);return(!o||o.length===0)&&(a||we.error(`No video sources found for ${i.selectedProvider}`)),{videoSources:o,selectedSource:d,selectedLink:R,resumeTime:M,resumeDuration:T,showResumeModal:M>5&&!ft(M,T)&&d?.type!=="iframe",skipIntervals:A,fetchedEpisodeNumber:n}}catch(o){const s=o;if(s.message==="AUTH_REQUIRED")return h({type:"SET_STATE",payload:{showCookieModal:!0,cookieProvider:s.provider}}),{videoSources:[],selectedSource:null,selectedLink:null,resumeTime:0,resumeDuration:0,showResumeModal:!1,skipIntervals:[],fetchedEpisodeNumber:n};throw o}}const Gn=(r,n,i,h)=>{const[a,o]=Yt(Kn,i,c=>({...Qn(),showMeta:c?.name?{name:c.name,thumbnail:c.thumbnail,nativeName:c.nativeName,englishName:c.englishName,names:{romaji:c.name||c.englishName,english:c.englishName||c.name,native:c.nativeName}}:{}})),s=Nt(),l=Ar(),u=C(null),f=C(null),{options:k}=_t(),e=Me(()=>k.filter(c=>(c.kind??"anime")==="anime"),[k]),d=n||a.initialEpisode,R=C(d);W(()=>{R.current!==d&&(R.current=d,o({type:"SET_STATE",payload:{selectedSource:null,selectedLink:null}}))},[d,o]),W(()=>{r&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r)&&a.selectedProvider!=="animepahe"&&u.current!==r&&(u.current=r,o({type:"SET_PROVIDER",payload:"animepahe"}))},[r,a.selectedProvider]);const{data:p,isLoading:T,error:M}=qr(r),{data:N}=Ct({queryKey:[se.playerData,r,a.currentMode,a.selectedProvider],queryFn:async()=>{if(!r)throw new Error("No showId");const c=async()=>{try{const I=await ue.data.episodes.query({showId:r,mode:a.currentMode,provider:a.selectedProvider}).catch(()=>null);if(I?.episodes?.length)return I}catch{}return null},[b,v,D]=await Promise.all([c(),ue.watchlist.check.query({showId:r}).catch(()=>({inWatchlist:!1,status:null})),ue.progress.getWatchedEpisodes.query({showId:r}).catch(()=>[])]),Y=b?.episodes?b.episodes.sort((I,V)=>parseFloat(I)-parseFloat(V)):[];return{description:b?.description||"",episodes:Y,inWatchlist:v.inWatchlist,watchlistStatus:v.status??null,watchedEpisodes:D}},enabled:!!r});W(()=>{!n&&N?.episodes&&N.episodes.length>0&&!n&&o({type:"SET_STATE",payload:{initialEpisode:N.episodes[0]}})},[N,n]),W(()=>{if(p?.isAdult===void 0||f.current===r)return;const c=p.isAdult===!0,b=e.filter(D=>D.mature===c);if(b.length===0||e.find(D=>D.id===a.selectedProvider)?.mature===c)return;const v=Bt(c);f.current=r??null,o({type:"SET_PROVIDER",payload:b.find(D=>D.id===v)?.id??b[0].id})},[p?.isAdult,a.selectedProvider,r,e]),W(()=>{if(!r||!/^dango-mt-\d+$/.test(r)||f.current===`temp:${r}`)return;const c=p?.provider;c&&(f.current=`temp:${r}`,c!==a.selectedProvider&&o({type:"SET_PROVIDER",payload:c}))},[r,p,a.selectedProvider]);const{data:A,isLoading:S,isFetching:y,error:P}=Ct({queryKey:[se.videoSources,r,d,a.selectedProvider,a.currentMode],queryFn:()=>Rt(r,d,a,o),enabled:!!r&&!!d&&!(a.showMeta?.isAdult===!0&&!h?.hasMatureConsent)}),{mutateAsync:m}=bt({mutationFn:async({wasIn:c,showMeta:b})=>{if(!r)throw new Error("Missing showId");if(c)await ue.watchlist.remove.mutate({id:r});else{const v=b.name||b.names?.romaji;if(!v)throw new Error("Missing show name");await ue.watchlist.add.mutate({id:r,name:v,thumbnail:b.thumbnail,nativeName:b.names?.native,englishName:b.names?.english,type:b.type,isAdult:b.isAdult})}return!c},onSuccess:c=>{we.success(c?"Added to watchlist":"Removed from watchlist"),s.invalidateQueries({queryKey:[se.playerData,r]}),s.invalidateQueries({queryKey:[se.showData,r]}),s.invalidateQueries({queryKey:[se.watchlist]})},onError:c=>we.error(c instanceof Error?c.message:"Failed to update watchlist")}),E=U(async()=>{!r||!p||await m({wasIn:!!N?.inWatchlist,showMeta:p})},[r,p,N?.inWatchlist,m]),B=U(async c=>{try{await ue.settings.set.mutate({key:"preferredSource",value:c})}catch(b){console.error(b)}},[]),{mutateAsync:H,isPending:O}=bt({mutationFn:async({status:c})=>{if(!r)throw new Error("Missing showId");if(N?.inWatchlist)return await ue.watchlist.setStatus.mutate({id:r,status:c}),c;const b=p,v=b?.name||b?.names?.romaji;if(!b||!v)throw new Error("Missing show name");return await ue.watchlist.add.mutate({id:r,name:v,thumbnail:b.thumbnail,nativeName:b.names?.native,englishName:b.names?.english,type:b.type,isAdult:b.isAdult,status:c}),c},onSuccess:c=>{o({type:"SET_STATE",payload:{inWatchlist:!0,watchlistStatus:c}}),we.success(`Moved to ${c}`),s.invalidateQueries({queryKey:[se.showData,r]}),s.invalidateQueries({queryKey:[se.watchlist]}),s.invalidateQueries({queryKey:[se.continueWatching]})},onError:()=>we.error("Failed to update watchlist status")}),K=U(async()=>{await H({status:"Completed"})},[H]),{mutateAsync:G,isPending:L}=bt({mutationFn:async({episodeNumber:c,duration:b,showMeta:v,episodes:D})=>{await ue.progress.updateProgress.mutate({showId:r??"",episodeNumber:c,currentTime:b,duration:b,showName:v.name,showThumbnail:v.thumbnail,nativeName:v.names?.native,englishName:v.names?.english,genres:v.genres?.map(Y=>Y.name),popularityScore:_r(v.score)??void 0,type:v.type,status:v.status,episodeCount:D.length,isAdult:v.isAdult})},onSuccess:(c,b)=>{we.success(`Episode ${b.episodeNumber} marked as watched`),s.invalidateQueries({queryKey:[se.playerData,r]}),s.invalidateQueries({queryKey:[se.showMeta,r]}),s.invalidateQueries({queryKey:[se.videoSources,r,b.episodeNumber]}),s.invalidateQueries({queryKey:[se.continueWatching]}),s.invalidateQueries({queryKey:[se.thisWeekSchedule]}),s.invalidateQueries(l.continueWatching.pathFilter())},onError:()=>we.error("Failed to mark episode as watched")}),x=U(async(c,b)=>{!r||!p||await G({episodeNumber:c,duration:b,showMeta:p,episodes:N?.episodes||[]})},[r,p,N?.episodes,G]),q=U(async()=>{o({type:"SET_STATE",payload:{showCombinedDetails:!a.showCombinedDetails}})},[a.showCombinedDetails]),Q=Me(()=>{const c=M||P,b=c?c.message:null,v=b==="AUTH_REQUIRED"?null:b,D=A&&A.fetchedEpisodeNumber===d?A:null,Y=!!A&&!D;return{...a,currentEpisode:d,showMeta:{...a.showMeta||{},...p||{}},episodes:N?.episodes||[],watchedEpisodes:N?.watchedEpisodes||[],inWatchlist:!!N?.inWatchlist,watchlistStatus:N?.watchlistStatus??a.watchlistStatus??null,videoSources:D?.videoSources||[],selectedSource:a.selectedSource||D?.selectedSource||null,selectedLink:a.selectedLink||D?.selectedLink||null,resumeTime:D?.resumeTime||0,resumeDuration:D?.resumeDuration||0,resumeProgressPending:y,showResumeModal:a.showResumeModal&&(D?.showResumeModal??!1),skipIntervals:D?.skipIntervals||[],loadingShowData:T,loadingVideo:S||Y,error:v,fetchedEpisodeNumber:D?.fetchedEpisodeNumber}},[a,p,N,A,T,S,y,M,P,d]),me=U((c,b)=>{const v=b||r;if(!v||!c||v===r&&c===d)return;const Y=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(v)&&a.selectedProvider!=="animepahe"?"animepahe":a.selectedProvider,I=["video-sources",v,c,Y,a.currentMode];s.getQueryState(I)?.status!=="success"&&s.prefetchQuery({queryKey:I,queryFn:()=>Rt(v,c,{selectedProvider:Y,currentMode:a.currentMode},o,!0),staleTime:300*1e3,gcTime:1800*1e3})},[r,d,s,a,o]);return{state:Q,dispatch:o,toggleWatchlist:E,moveToCompleted:K,setPreferredSource:B,handleToggleDetails:q,markEpisodeWatched:x,prefetchEpisodeSources:me,isMarkingWatched:L,isUpdatingWatchlistStatus:O}};function qn({onNext:r,onToggleTheater:n,flashControls:i}){W(()=>{const h=a=>{a.defaultPrevented||a.ctrlKey||a.metaKey||a.altKey||a.repeat||a.target.closest('input, textarea, button, select, a, [role="button"], [role="slider"], [contenteditable="true"]')||(["arrowup","arrowdown","arrowleft","arrowright"].includes(a.key.toLowerCase())&&i(),a.key.toLowerCase()==="n"&&r(),a.key.toLowerCase()==="t"&&n())};return document.addEventListener("keydown",h),()=>{document.removeEventListener("keydown",h)}},[i,r,n])}const Xe=(r,n,i)=>r.showId===n||!!i&&r.showId===i;function zn({testClipActive:r,selectedSourceType:n,onEnded:i,queue:h,removeFromQueue:a,showId:o,showMetaId:s,currentEpisode:l,isAutoplayEnabled:u,nextEpisode:f,previousEpisode:k,navigate:e,invalidateContinueWatching:d,dispatch:R}){const[p,T]=oe(!1),[M,N]=oe(null),[A,S]=oe(null),y=C(a);y.current=a;const P=C(!1);W(()=>{P.current=!1,T(!1)},[o,l]);const m=U(()=>{if(r||P.current)return;P.current=!0,i();const L=h.find(x=>Xe(x,o,s)&&x.episodeNumber===l);if(h.length>0){const x=h.findIndex(Q=>Xe(Q,o,s)&&Q.episodeNumber===l),q=x>=0?h[x+1]||null:h[0];S({nextItem:q,playedItem:L||null}),N(2);return}if(L&&y.current({showId:L.showId,episodeNumber:L.episodeNumber}),u&&f){d(),e(`/watch/${o}/${f}`);return}f||T(!0)},[i,e,h,o,s,l,f,u,d,r]),E=U(()=>{if(h.length===0)return;i();const L=h.find(Q=>Xe(Q,o,s)&&Q.episodeNumber===l),x=h.findIndex(Q=>Xe(Q,o,s)&&Q.episodeNumber===l),q=x>=0?h[x+1]||null:h[0];L&&a({showId:L.showId,episodeNumber:L.episodeNumber}),q?e(`/watch/${q.showId}/${q.episodeNumber}`):f||T(!0)},[i,e,h,a,o,s,l,f]),B=U(()=>{f&&(d(),e(`/watch/${o}/${f}`)),T(!1),R({type:"SET_STATE",payload:{showResumeModal:!1}})},[f,e,o,R,d]),H=U(()=>{h.length>0?E():f?B():we.error("No next episode available")},[h.length,E,B,f]),O=U(()=>T(!1),[]),K=U(()=>{S(null),N(null)},[]),G=U(()=>{k&&e(`/watch/${o}/${k}`)},[k,e,o]);return W(()=>{const L=x=>{x.origin===window.location.origin&&n==="iframe"&&x.data?.type==="ANI_WEB_MEDIA_ENDED"&&m()};return window.addEventListener("message",L),()=>window.removeEventListener("message",L)},[m,n]),W(()=>{if(!A||M===null)return;if(M<=0){const{nextItem:x,playedItem:q}=A;S(null),N(null),q&&y.current({showId:q.showId,episodeNumber:q.episodeNumber}),x?e(`/watch/${x.showId}/${x.episodeNumber}`):f||T(!0);return}const L=window.setTimeout(()=>{N(x=>x===null?null:x-1)},1e3);return()=>window.clearTimeout(L)},[A,M,e,f]),{showCompleteModal:p,queueCountdown:M,pendingQueueTransition:A,handleQueueTransition:E,handleNextEpisode:B,handleNShortcut:H,handlePreviousEpisode:G,handlePlaybackFinished:m,closeCompleteModal:O,cancelQueueTransition:K}}function jn({videoRef:r,queue:n,showId:i,showMetaId:h,currentEpisode:a,selectedSource:o,hasNextEpisode:s,nextEpisode:l,prefetchEpisodeSources:u,matchesQueueItem:f}){const[k,e]=oe(!1),d=C(u);d.current=u;const R=C("");W(()=>{e(!1)},[a]);const p=U(()=>{const T=r.current;if(!T||o?.type==="iframe")return;const M=T.duration,N=T.currentTime;if(!M||Number.isNaN(M)){e(!1);return}if(M-N<=60){const A=n.findIndex(P=>f(P,i,h)&&P.episodeNumber===a),S=n.length>0?A>=0?n[A+1]||null:n[0]:null,y=S?`${S.showId}:${S.episodeNumber}`:s?`${i}:${l}`:"";y&&R.current!==y&&(R.current=y,S?d.current(S.episodeNumber,S.showId):d.current(l??""))}e(s&&ft(N,M))},[r,o,n,i,h,a,s,l,f]);return{showNextEpisodePrompt:k,handleThresholds:p}}const St="fallbackChoice";function Hn(){try{const r=localStorage.getItem(St);return r==="iframe"||r==="retry"?r:null}catch{return null}}function Yn(r){try{r===null?localStorage.removeItem(St):localStorage.setItem(St,r)}catch{}}function Xn({showId:r,episodeNumber:n,currentMode:i,selectedProvider:h,selectedSourceType:a,videoSources:o,isAdult:s,providerOrder:l,matureProviders:u,setPreferredSource:f,dispatch:k,showControls:e}){const d=C(!1),R=C([]),p=C(!1),[T,M]=oe(null),[N,A]=oe(!1),[S,y]=oe(!1),[P,m]=oe(()=>Hn()??"ask"),E=U(c=>{m(c),Yn(c==="ask"?null:c)},[]),B=C(P);W(()=>{B.current=P},[P]);const H=C(o);H.current=o;const O=U(()=>{d.current=!1,R.current=[],p.current=!1,M(null),A(!1)},[]);W(()=>{O()},[O,r,n]);const K=U(c=>{if(d.current)return;d.current=!0;const b=c.links[0];f(c.sourceName),k({type:"SET_STATE",payload:{selectedSource:c,selectedLink:b}}),M(null)},[k,f]),G=U(()=>{const b=H.current.find(v=>v.type==="iframe");return b?.links?.length?b:null},[]),L=U(async()=>{const c=l.filter(b=>{if(R.current.includes(b))return!1;const v=u.has(b);return s===void 0?!0:v===s});A(!0);try{for(const b of c){R.current.push(b);let v=null;try{v=await ue.data.video.query({showId:r,episodeNumber:n,mode:i,provider:b})}catch{continue}const D=(v??[]).filter(V=>{const J=V.sourceName.toLowerCase();return i==="dub"?J.includes("eng")||J.includes("dub"):J.includes("jpn")||J.includes("sub")||!J.includes("eng")&&!J.includes("dub")});if((D.length>0?D:v??[]).find(V=>V.type!=="iframe"&&V.links?.length)){R.current=[h],p.current=!1,k({type:"SET_STATE",payload:{selectedProvider:b,videoSources:[],selectedSource:null,selectedLink:null,loadingVideo:!0}}),Lt(b,s===!0),M(null),we.success(`Switched to ${b} (direct stream)`);return}}M({retryFailed:!0}),we.error("No working direct stream found on other providers")}finally{A(!1)}},[r,n,i,s,h,k,l,u]),x=U(()=>{if(d.current||p.current||a!=="player")return;const c=G();if(!c)return;R.current.includes(h)||R.current.push(h);const b=B.current;if(b==="iframe"){K(c);return}if(b==="retry"){L();return}e(!0),M({retryFailed:!1})},[a,h,G,K,L,e]),q=U(()=>{p.current=!0,M(null),y(!1)},[]),Q=U(()=>{S&&E("iframe");const c=G();c?K(c):M(null)},[S,E,G,K]),me=U(()=>{S&&E("retry"),L()},[S,E,L]);return{fallbackPrompt:T,isRetryingProvider:N,rememberFallbackChoice:S,setRememberFallbackChoice:y,fallbackChoice:P,updateFallbackChoice:E,dismissFallbackPrompt:q,chooseIframeFallback:Q,chooseProviderRetry:me,handleVideoSourceError:x,resetFallback:O}}function Jn({engine:r,videoRef:n,selectedSource:i,selectedLink:h,loadingVideo:a,testClipActive:o,resumeTime:s,resumeDuration:l=0,showResumeModal:u,calibReturnRef:f,setAvailableSubtitles:k,setActiveSubtitleTrack:e,onFatalError:d}){const R=C(null),p=C(s),T=C(l),M=C(u),N=C(d);return N.current=d,W(()=>{p.current=s,T.current=l,M.current=u},[s,l,u]),W(()=>{const A=n.current;if(!A)return;for(;A.firstChild;)A.removeChild(A.firstChild);if(o)return r.loadSource({url:"/av-sync-test.mp4"},{autoPlay:!0});if(a||!i||!h||i.type==="iframe"){r.unload();return}f.current!=null?(R.current=f.current,f.current=null):R.current===null&&p.current>5&&!M.current&&!ft(p.current,T.current)?R.current=p.current:R.current===null&&M.current&&(R.current=0);let S=h.link;if(S.startsWith("/api/proxy")||(S=`/api/proxy?url=${encodeURIComponent(S)}`,h.headers?.Referer&&(S+=`&referer=${encodeURIComponent(h.headers.Referer)}`)),i.subtitles){const m=localStorage.getItem("playerSubtitlesEnabled")!=="false";let E=null;try{E=localStorage.getItem("playerLastSubtitle")}catch{}const B=Et(i.subtitles,{lastKey:E,enabled:m}),H=B>=0?i.subtitles[B]:null;i.subtitles.forEach(O=>{const K=document.createElement("track");K.kind="subtitles",K.label=O.label,K.srclang=O.lang;const G=O.src??O.url;if(G){let L=`/api/subtitle-proxy?url=${encodeURIComponent(G)}`;const x=h.headers?.Referer;x&&(L+=`&referer=${encodeURIComponent(x)}`),K.src=L}H&&O.label===H.label&&O.lang===H.lang&&(K.default=!0),A.appendChild(K)}),m||e("off"),k(i.subtitles)}const y=R.current??0;R.current=null;const P=document.body.classList.contains("low-end");return r.loadSource({url:S,hls:h.hls},{initialTime:y,autoPlay:!(M.current&&p.current>5)&&!ft(p.current,T.current),hlsConfig:{maxBufferLength:P?15:30,maxMaxBufferLength:P?30:60,maxBufferSize:(P?25:60)*1e3*1e3,startLevel:-1},onHls:(m,E)=>{if(!i.subtitles?.length)return;const B=()=>{m.subtitleTrack!==-1&&(m.subtitleTrack=-1)};m.on(E.Events.SUBTITLE_TRACK_SWITCH,B),B()},onError:()=>N.current()})},[r,i,h,n,f,a,o,e,k]),{seekToTimeRef:R}}function Zn({videoRef:r,availableSubtitles:n,activeSubtitleTrack:i,setAvailableSubtitles:h,setActiveSubtitleTrack:a}){W(()=>{const o=r.current;if(!o)return;const s=()=>{const l=Array.from(o.textTracks).map(u=>({label:u.label,lang:u.language,src:void 0,mode:u.mode}));h(l)};return o.textTracks.addEventListener("addtrack",s),o.textTracks.addEventListener("removetrack",s),s(),()=>{o.textTracks.removeEventListener("addtrack",s),o.textTracks.removeEventListener("removetrack",s)}},[r,h]),W(()=>{if(i===null&&n.length>0&&localStorage.getItem("playerSubtitlesEnabled")!=="false"){let o=null;try{o=localStorage.getItem("playerLastSubtitle")}catch{}const s=Et(n,{lastKey:o,enabled:!0});if(s<0){a("off");return}const l=n[s];a(l.lang||l.label)}},[i,n,a]),W(()=>{const o=r.current;if(!o||n.length===0)return;const s=i;if(!(localStorage.getItem("playerSubtitlesEnabled")!=="false")||s==="off"||s===null){Array.from(o.textTracks).forEach(f=>{f.mode="hidden"});return}let u=!1;if(Array.from(o.textTracks).forEach(f=>{const e=(f.language===s||f.label===s)&&!u;f.mode=e?"showing":"hidden",e&&(u=!0)}),!u&&o.textTracks.length>0){const f=Array.from(o.textTracks).find(k=>k.language==="en"||k.label==="English")||o.textTracks[0];f&&(f.mode="showing")}},[i,n,r])}function es({videoRef:r,videoBoxH:n,style:i,sourceKey:h,activeSubtitleTrack:a,availableSubtitles:o}){W(()=>{const s="dynamic-subtitle-styles";let l=document.getElementById(s);l||(l=document.createElement("style"),l.id=s,document.head.appendChild(l)),l.textContent=Mt(i);const u=r.current;if(!u)return;const f=Pt(i.fontSize,n||u.clientHeight||720);l.textContent=Mt({...i,fontSize:f});const k=()=>{const y=Number(i.position),P=isNaN(y)?0:Math.max(0,Math.min(100,y));return Math.max(0,Math.min(100,100-P))},e=(y,P)=>{try{const m=y;m.snapToLines=!1,m.line=P}catch{}},d=()=>{const y=f*16,P=u.videoHeight||u.clientHeight||720,m=u.videoWidth||u.clientWidth||1280;return{step:y*1.3/P*100,chars:Math.max(20,Math.floor(m/(y*.55)))}},R=y=>{const P=k(),m=Array.from(y.activeCues??[]);if(m.length<=1){m.forEach(O=>e(O,P));return}const{step:E,chars:B}=d();let H=P;for(let O=m.length-1;O>=0;O--){const G=String(m[O].text??"").replace(/<[^>]*>/g,"").split(`
55
+ `).reduce((x,q)=>x+Math.max(1,Math.ceil(q.length/B)),0),L=H-G*E;e(m[O],Math.max(0,L)),H=L-E*.4}},p=y=>{if(!y.cues)return;const P=k();Array.from(y.cues).forEach(m=>e(m,P)),y.mode==="showing"&&R(y)},T=()=>{Array.from(u.textTracks).forEach(p)};T();const M=y=>{const P=y.target;P.mode==="showing"&&R(P)};Array.from(u.textTracks).forEach(y=>{y.addEventListener("cuechange",M)});const N=()=>{Array.from(u.textTracks).forEach(y=>{y.removeEventListener("cuechange",M),y.addEventListener("cuechange",M)}),T()};u.textTracks.addEventListener("addtrack",N),u.textTracks.addEventListener("removetrack",N);const A=Array.from(u.querySelectorAll("track")),S=()=>{T()};return A.forEach(y=>{y.addEventListener("load",S)}),()=>{Array.from(u.textTracks).forEach(y=>{y.removeEventListener("cuechange",M)}),u.textTracks.removeEventListener("addtrack",N),u.textTracks.removeEventListener("removetrack",N),A.forEach(y=>{y.removeEventListener("load",S)})}},[i,n,r,h,a,o])}function ts({videoRef:r,overlayRef:n,style:i,activeSubtitleTrack:h,delayMs:a,enabled:o}){W(()=>{if(!o)return;const s=r.current,l=n.current;if(!s||!l)return;const u=localStorage.getItem("playerSubtitlesEnabled")!=="false",f=()=>{if(l.innerHTML="",!u||h==="off"||h===null)return;const d=Array.from(s.textTracks).find(S=>S.language===h||S.label===h);if(!d||d.mode!=="showing")return;const R=a/1e3;let p;if(R>0&&d.cues){const S=s.currentTime-R;p=Array.from(d.cues).filter(y=>y.startTime<=S&&S<=y.endTime)}else p=Array.from(d.activeCues??[]);if(p.length===0)return;const T={...i,fontSize:Pt(i.fontSize,s.clientHeight||0)},M=dr(T),N=mr(s,T.position),A=Array.from(p);A.forEach((S,y)=>{const P=String(S.text??"");if(!fr(P).trim())return;const m=document.createElement("div"),E=(A.length-1-y)*1.7;m.style.cssText=`${M}
56
+ bottom: calc(${N}px + ${E}em);`,m.innerHTML=hr(P),l.appendChild(m)})},k=()=>f(),e=()=>f();return Array.from(s.textTracks).forEach(d=>{d.addEventListener("cuechange",k)}),s.addEventListener("timeupdate",e),f(),()=>{Array.from(s.textTracks).forEach(d=>{d.removeEventListener("cuechange",k)}),s.removeEventListener("timeupdate",e),l.innerHTML=""}},[h,a,o,n,i,r])}const rs=({isOpen:r,onClose:n,onSuccess:i})=>{const h=()=>{i?.(),n()};return t(mt,{isOpen:r,onClose:n,title:"MKissa Browser Verification",children:t("div",{className:Ve.container,children:[t("p",{children:"Open MKissa in this browser, play an anime episode, and complete any Cloudflare verification it shows. Once playback works there, return to Dango and click Refresh."}),t("div",{className:Ve.actions,children:t("a",{className:Ve.link,href:"https://mkissa.to/anime",target:"_blank",rel:"noreferrer",children:"Open MKissa anime"})}),t("div",{className:Ve.actions,children:[t("button",{className:Ve.secondaryButton,onClick:n,children:"Cancel"}),t("button",{className:Ve.button,onClick:h,children:"Refresh Dango"})]})]})})},bs=()=>{const{id:r,episodeNumber:n}=Xt(),i=Jt(),h=Nt(),a=Zt(),{hasConsent:o,grant:s}=xr(),{options:l}=_t(),u=Me(()=>l.filter(g=>(g.kind??"anime")==="anime"),[l]),f=Me(()=>u.map(g=>g.id),[u]),k=Me(()=>new Set(u.filter(g=>g.mature).map(g=>g.id)),[u]),{state:e,dispatch:d,toggleWatchlist:R,moveToCompleted:p,setPreferredSource:T,handleToggleDetails:M,markEpisodeWatched:N,prefetchEpisodeSources:A,isMarkingWatched:S,isUpdatingWatchlistStatus:y}=Gn(r,n,a.state||null,{hasMatureConsent:o});W(()=>{if(r&&e.showMeta?.id&&e.showMeta.id!==r){const g=n?`/watch/${e.showMeta.id}/${n}${window.location.search}`:`/watch/${e.showMeta.id}${window.location.search}`;i(g,{replace:!0})}},[r,e.showMeta?.id,n,i]);const P=Me(()=>{if(e.showMeta.name)return{name:e.showMeta.name,thumbnail:e.showMeta.thumbnail,names:e.showMeta.names,genres:e.showMeta.genres,score:e.showMeta.score,isAdult:e.showMeta.isAdult}},[e.showMeta.name,e.showMeta.thumbnail,e.showMeta.names,e.showMeta.genres,e.showMeta.score,e.showMeta.isAdult]),m=pr({skipIntervals:e.skipIntervals,showId:r,episodeNumber:e.currentEpisode?.toString(),episodeCount:e.episodes.length||void 0,sourceType:e.selectedSource?.type,showMeta:P}),{refs:E,actions:B}=m,H=Kr(),O=C(null),K=C(null),G=C(null),[L,x]=oe(()=>{try{const g=localStorage.getItem("anime4kProfile");return["low","balanced","high","denoise"].includes(g)?g:"balanced"}catch{return"balanced"}}),{videoDelayMs:q,videoDelayEnabled:Q,setDelayEnabled:me,handleVideoDelayChange:c,isCalibrating:b,testClipActive:v,stopCalibration:D,openAvSyncCalibrator:Y,cancelAvSyncCalibrator:I,applyAvSyncCalibrator:V,toggleTestClip:J,calibReturnRef:Se,effectiveVideoDelayMs:Ae}=vr(E.videoRef,()=>B.setShowSettings(!1)),Re=C(null),Z=Fn({videoRef:E.videoRef,canvasRef:K,profile:L,delayMs:Ae}),z=Z.isEnabled&&Z.isWebGPUSupported;On({videoRef:E.videoRef,episodeKey:`${r??""}:${e.currentEpisode??""}`,isEnabled:Z.isEnabled,isSupported:Z.isWebGPUSupported,mediaReady:!e.loadingVideo&&!!e.selectedLink,isIframeSource:e.selectedSource?.type==="iframe",setEnabled:Z.setEnabled}),gr({videoRef:E.videoRef,canvasRef:Re,delayMs:Ae,enabled:Q&&!z});const ke=Q&&!z,_e=z||ke,[ee,j]=oe(!1),pe=C(n);W(()=>{pe.current!==n&&(pe.current=n,D())},[n,D]);const ht=U(()=>{h.invalidateQueries({queryKey:[se.continueWatching]})},[h]),{data:xe=[],isLoading:Je}=Br(),Ze=Lr(),Qe=Dr(),pt=$r(),{isTheaterMode:ae,toggleTheaterMode:ie,handleLayoutClick:vt}=yr();er(()=>{if(m.state.isFullscreen||ae)return;const g=E.playerContainerRef.current,X=O.current;if(!g||!X)return;const $e=()=>{const yt=g.getBoundingClientRect().height;X.style.height=`${yt}px`};$e();const lt=new ResizeObserver($e);return lt.observe(g),()=>lt.disconnect()},[m.state.isFullscreen,ae,E.playerContainerRef]);const Te=Me(()=>e.episodes.findIndex(g=>g===e.currentEpisode),[e.episodes,e.currentEpisode]),et=Te>0?e.episodes[Te-1]:null,Ke=Te>=0&&Te<e.episodes.length-1?e.episodes[Te+1]:null,tt=Te>-1&&Te<e.episodes.length-1,{showCompleteModal:$,queueCountdown:Ne,pendingQueueTransition:Ge,handleQueueTransition:ve,handleNextEpisode:rt,handleNShortcut:Fe,handlePreviousEpisode:Oe,handlePlaybackFinished:qe,closeCompleteModal:Be,cancelQueueTransition:ze}=zn({testClipActive:v,selectedSourceType:e.selectedSource?.type,onEnded:B.onEnded,queue:xe,removeFromQueue:Ze.mutate,showId:r,showMetaId:e.showMeta?.id,currentEpisode:e.currentEpisode,isAutoplayEnabled:e.isAutoplayEnabled,nextEpisode:Ke,previousEpisode:et,navigate:i,invalidateContinueWatching:ht,dispatch:d}),{showNextEpisodePrompt:nt,handleThresholds:Le}=jn({videoRef:E.videoRef,queue:xe,showId:r,showMetaId:e.showMeta?.id,currentEpisode:e.currentEpisode,selectedSource:e.selectedSource,hasNextEpisode:tt,nextEpisode:Ke,prefetchEpisodeSources:A,matchesQueueItem:Xe}),{checkEnd:De,logDuration:st}=br({videoRef:E.videoRef,sourceType:e.selectedSource?.type,resetKey:`${r}:${e.currentEpisode}`,onEnd:qe}),ot=e.showResumeModal&&!e.resumeProgressPending,at=$,F=ot||at;Sr(m,!!e.selectedLink&&!ae&&!F);const{fallbackPrompt:te,isRetryingProvider:fe,rememberFallbackChoice:le,setRememberFallbackChoice:ce,fallbackChoice:he,updateFallbackChoice:ge,dismissFallbackPrompt:je,chooseIframeFallback:We,chooseProviderRetry:ye,handleVideoSourceError:re,resetFallback:it}=Xn({showId:r,episodeNumber:e.currentEpisode??void 0,currentMode:e.currentMode,selectedProvider:e.selectedProvider,selectedSourceType:e.selectedSource?.type,videoSources:e.videoSources,isAdult:e.showMeta?.isAdult,providerOrder:f,matureProviders:k,setPreferredSource:T,showControls:B.setShowControls,dispatch:d}),{seekToTimeRef:Ue}=Jn({engine:m.engine,videoRef:E.videoRef,selectedSource:e.selectedSource,selectedLink:e.selectedLink,loadingVideo:e.loadingVideo,testClipActive:v,resumeTime:e.resumeTime,resumeDuration:e.resumeDuration,showResumeModal:e.showResumeModal,calibReturnRef:Se,setAvailableSubtitles:B.setAvailableSubtitles,setActiveSubtitleTrack:B.setActiveSubtitleTrack,onFatalError:re});W(()=>{F&&m.state.isFullscreen&&m.actions.toggleFullscreen()},[F,m.state.isFullscreen,m.actions]),W(()=>{F&&E.videoRef.current&&E.videoRef.current.pause()},[F,E.videoRef]);const{titlePreference:ne}=Ir(),{lowEndMode:He}=Fr(),{settings:gt,update:Dt}=Er(),$t=ae&&gt.enabled&&!He&&e.selectedSource?.type!=="iframe"&&!!e.selectedLink,Pe=Me(()=>{if(!e.showMeta||e.loadingShowData)return"Loading...";const{name:g,names:X}=e.showMeta;return ne==="name"?g||"Loading...":ne==="nativeName"?X?.native||g||"Loading...":ne==="englishName"?X?.english||g||"Loading...":g||"Loading..."},[e.showMeta,ne,e.loadingShowData]);W(()=>{Pe&&Pe!=="Loading..."&&e.currentEpisode&&(document.title=`► ${Pe} Episode ${e.currentEpisode} - dango`)},[Pe,e.currentEpisode]),qn({onNext:Fe,onToggleTheater:ie,flashControls:m.actions.flashControls});const{setAvailableSubtitles:It,setActiveSubtitleTrack:Ft}=B,wt=Me(()=>({fontSize:m.state.subtitleFontSize,position:m.state.subtitlePosition,bgOpacity:m.state.subtitleBgOpacity,bgColor:m.state.subtitleBgColor,textColor:m.state.subtitleTextColor,edge:m.state.subtitleEdge,bold:m.state.subtitleBold}),[m.state.subtitleFontSize,m.state.subtitlePosition,m.state.subtitleBgOpacity,m.state.subtitleBgColor,m.state.subtitleTextColor,m.state.subtitleEdge,m.state.subtitleBold]);Zn({videoRef:E.videoRef,availableSubtitles:m.state.availableSubtitles,activeSubtitleTrack:m.state.activeSubtitleTrack,setAvailableSubtitles:It,setActiveSubtitleTrack:Ft});const[Ot,Wt]=oe(0);W(()=>{const g=E.videoRef.current;if(!g)return;const X=()=>Wt(g.clientHeight||0);X();const $e=new ResizeObserver(X);return $e.observe(g),()=>$e.disconnect()},[E.videoRef,e.selectedSource,e.selectedLink]),es({videoRef:E.videoRef,videoBoxH:Ot,style:wt,sourceKey:`${e.selectedSource?.sourceName??""}:${e.selectedLink?.link??""}`,activeSubtitleTrack:m.state.activeSubtitleTrack,availableSubtitles:m.state.availableSubtitles}),ts({videoRef:E.videoRef,overlayRef:G,style:wt,activeSubtitleTrack:m.state.activeSubtitleTrack,delayMs:Ae,enabled:_e}),W(()=>{try{localStorage.setItem("anime4kProfile",L)}catch{}},[L]);const Ut=()=>{E.videoRef.current&&(E.videoRef.current.currentTime=e.resumeTime,E.videoRef.current.play()),d({type:"SET_STATE",payload:{showResumeModal:!1}})},Vt=()=>{E.videoRef.current&&(E.videoRef.current.currentTime=0,E.videoRef.current.play()),d({type:"SET_STATE",payload:{showResumeModal:!1}})},Qt=U(()=>{d({type:"SET_STATE",payload:{showResumeModal:!1}})},[d]),Kt=U(async()=>{try{await p(),Be(),d({type:"SET_STATE",payload:{showResumeModal:!1}}),i("/")}catch{}},[p,Be,d,i]),kt=(g,X)=>t("div",{className:g,children:[t("button",{className:`${w.episodeNavBtn} ${w.secondary}`,onClick:Oe,disabled:!et,type:"button",children:[t(de,{name:"chevron-left",size:12}),"Prev EP"]}),t("button",{className:`${w.episodeNavBtn} ${w.primary}`,onClick:rt,disabled:!Ke,type:"button",children:["Next EP",t(de,{name:"chevron-right",size:12})]}),X==="mobile"&&H&&t("button",{className:`${w.episodeNavBtn} ${w.episodePickerBtn}`,onClick:()=>j(!0),type:"button",children:[t(de,{name:"list-ul",size:12}),"Episodes"]})]}),Gt=g=>{d({type:"SET_STATE",payload:{isAutoplayEnabled:g}}),Vr(g)},Tt=!!(e.currentEpisode&&e.watchedEpisodes.includes(e.currentEpisode)),qt=e.selectedProvider!=="megaplay"||e.selectedSource?.type==="iframe",zt=U(async()=>{if(!r||!e.currentEpisode||!e.showMeta.name||S)return;const g=E.videoRef.current?.duration,X=Math.max(g||0,e.resumeDuration||0,Number(e.showMeta.episodeDuration||0)*60,1);await N(e.currentEpisode,X)},[r,e.currentEpisode,e.showMeta,e.resumeDuration,N,S,E.videoRef]);if(e.error&&!e.showMeta.name&&e.videoSources.length===0&&e.episodes.length===0)return t("p",{className:"error-message",children:["Error: ",e.error]});const Ce=e.loadingShowData||e.loadingVideo;return e.showMeta?.isAdult===!0&&!o?t("div",{className:be.playerPageLayout,children:t(Qr,{isOpen:!0,onClose:()=>i("/home"),onGrant:s})}):t("div",{className:`${be.playerPageLayout} ${ae?be.theaterMode:""}`,onClick:vt,children:[ae&&t(wr,{videoRef:E.videoRef,active:$t,settings:gt}),t(kr,{isOpen:at,onClose:Be,title:"Show Completed!",heading:Pe,message:"Congratulations! You finished all available episodes.",children:[t(ut,{variant:"secondary",onClick:Be,children:"Close"}),t(ut,{onClick:Kt,disabled:y,children:y?"Saving...":"Move to Completed"})]}),t(Tr,{isOpen:ot,onClose:Qt,title:"Resume Playback?",message:t(ct,{children:["You were watching at ",t("strong",{children:m.actions.formatTime(e.resumeTime)}),". Would you like to continue?"]}),onResume:Ut,onRestart:Vt}),t(mt,{isOpen:!!te,onClose:je,title:"Direct stream failed",width:"sm",children:[t(mt.Body,{children:[t("p",{children:[t("strong",{children:e.selectedProvider}),"'s direct stream failed for this episode."]}),te?.retryFailed&&t("p",{children:"No working direct stream was found on the other providers either."}),t("p",{children:["You can continue with the embedded (iframe) player, but embedded players may show"," ",t("strong",{children:"ads and pop-ups"}),"."]}),t("label",{style:{display:"flex",alignItems:"center",gap:"8px",marginTop:"0.75rem",cursor:"pointer"},children:[t("input",{type:"checkbox",checked:le,onChange:g=>ce(g.currentTarget.checked)}),"Remember my choice"]})]}),t(mt.Actions,{children:[t(ut,{variant:"secondary",onClick:We,children:"Continue with iframe"}),t(ut,{onClick:ye,disabled:fe,children:fe?"Searching…":"Try another provider"})]})]}),t(Or,{isOpen:!!e.showCookieModal&&e.cookieProvider!=="mkissa",onClose:()=>d({type:"SET_STATE",payload:{showCookieModal:!1}}),onSuccess:()=>{h.invalidateQueries({queryKey:[se.videoSources,r,e.currentEpisode,e.selectedProvider,e.currentMode]})}}),t(rs,{isOpen:!!e.showCookieModal&&e.cookieProvider==="mkissa",onClose:()=>d({type:"SET_STATE",payload:{showCookieModal:!1}}),onSuccess:()=>{h.invalidateQueries({queryKey:[se.videoSources,r,e.currentEpisode,e.selectedProvider,e.currentMode]})}}),!ae&&t("aside",{ref:O,className:be.episodeSidebar,children:e.loadingShowData?t(Cr,{variant:"sidebar"}):t(Mr,{episodes:e.episodes,currentEpisode:e.currentEpisode??void 0,watchedEpisodes:e.watchedEpisodes,onEpisodeClick:g=>i(`/watch/${r}/${g}`)})}),t("div",{className:be.playerMain,children:[t("div",{className:`${w.videoContainer} ${m.state.isFullscreen?"":be.videoPlayerWrapper} ${m.state.isFullscreen?w.fullscreenActive:""}`,style:{...F?{visibility:"hidden"}:{}},onContextMenu:g=>g.preventDefault(),children:t(Cn,{player:m,isAutoplayEnabled:e.isAutoplayEnabled,onAutoplayChange:Gt,fallbackChoice:he,onFallbackChoiceChange:ge,ambientSettings:gt,onAmbientChange:Dt,showNextEpisodeButton:!F&&nt&&xe.length===0,onNextEpisode:rt,videoSources:e.videoSources,selectedSource:e.selectedSource,selectedLink:e.selectedLink,onSourceChange:(g,X)=>{E.videoRef.current&&!isNaN(E.videoRef.current.currentTime)&&(Ue.current=E.videoRef.current.currentTime),T(g.sourceName),d({type:"SET_STATE",payload:{selectedSource:g,selectedLink:X,showResumeModal:e.showResumeModal&&g.type!=="iframe"}})},loadingVideo:Ce,skipIntervals:e.skipIntervals,animeTitle:Pe,episodeNumber:e.currentEpisode??void 0,isTheaterMode:ae,onTheaterModeToggle:ie,anime4kEnabled:Z.isEnabled,onAnime4kToggle:Z.toggle,anime4kSupported:Z.isWebGPUSupported,anime4kProfile:L,onAnime4kProfileChange:x,anime4kInitializing:Z.isInitializing,anime4kError:Z.error,videoDelayEnabled:Q,onVideoDelayToggle:me,videoDelayMs:q,onVideoDelayChange:c,onCalibrateAvSync:Y,isInteractingExtra:ee||b,className:or.shellFill,hideChrome:e.selectedSource?.type==="iframe",overlays:t(ct,{children:[m.state.isSpeedBoostActive&&t("div",{className:w.speedBoostBadge,"aria-hidden":"true",children:[t("span",{children:"2x"}),t(de,{name:"forward",size:12})]}),Ne!==null&&Ge?.nextItem&&t("div",{className:w.queueCountdown,children:["Queue next in ",Ne,"s"]})]}),children:[Ce&&t("div",{className:w.loadingOverlay,children:t("div",{className:w.loadingDots,children:[t("div",{className:w.dot}),t("div",{className:w.dot}),t("div",{className:w.dot})]})}),m.state.isBuffering&&!Ce&&e.selectedSource?.type!=="iframe"&&t("div",{className:w.bufferingOverlay,children:t("div",{className:w.bufferingSpinner})}),e.selectedSource?.type==="iframe"?!Ce&&t("iframe",{src:e.selectedLink?.link,className:w.videoIframe,allow:"autoplay; fullscreen; picture-in-picture",allowFullScreen:!0,sandbox:e.selectedSource.sandbox?`${e.selectedSource.sandbox} allow-fullscreen allow-popups allow-popups-to-escape-sandbox`:void 0}):t(ct,{children:[!Ce&&e.videoSources.length===0&&t("div",{className:w.errorOverlay,children:[t("p",{children:["No sources found for this episode with ",e.selectedProvider,"."]}),t("p",{className:w.errorSubtext,children:"Please try selecting a different provider below."}),t("button",{className:w.retryButton,onClick:()=>window.location.reload(),"data-speed-boost-ignore":"true",style:{marginTop:8},children:"Retry"})]}),!Ce&&e.videoSources.length>0&&t(ar,{controls:m.state.useNativeControls,playsInline:!0,"webkit-playsinline":"true",disablePictureInPicture:!0,disableRemotePlayback:!0,onPlay:B.onPlay,onPause:B.onPause,onEnded:()=>{v||De(!0)},onDurationChange:()=>{st()},onSeeked:()=>{v||(Le(),De())},onLoadedMetadata:()=>{Le(),st(),v||De()},onTimeUpdate:()=>{v||(B.onTimeUpdate(),Le(),De(),Ge&&E.videoRef.current&&E.videoRef.current.currentTime<E.videoRef.current.duration-1&&ze())},onError:re,onContextMenu:g=>g.preventDefault(),className:_e?w.videoElementHidden:""}),Z.isWebGPUSupported&&!Ce&&e.videoSources.length>0&&t("canvas",{ref:K,className:`${w.upscalerCanvas} ${z?w.upscalerActive:""}`}),!z&&!Ce&&e.videoSources.length>0&&t("canvas",{ref:Re,className:`${w.upscalerCanvas} ${ke?w.upscalerActive:""}`}),Z.isEnabled&&Z.isWebGPUSupported&&Z.isInitializing&&t("div",{className:w.upscalerStatusBadge,children:"Preparing upscaler…"}),_e&&t("div",{ref:G,className:w.subtitleOverlay}),t(Rr,{isOpen:b,ms:q,onChange:c,onApply:V,onClose:I,testClipActive:v,onTestClip:J})]})]})}),!ae&&t(Nr,{}),!ae&&t(ct,{children:[Je&&xe.length===0?t(Mn,{count:3}):t(Gr,{title:"Queue",items:xe,currentShowId:r,currentEpisode:e.currentEpisode??void 0,onNextQueue:ve,onRemove:g=>Ze.mutate({showId:g.showId,episodeNumber:g.episodeNumber}),onClear:()=>Qe.mutate(),showClearAll:!0,onReorder:g=>pt.mutate(g.map(X=>({id:X.id,showId:X.showId,episodeNumber:X.episodeNumber})))}),t("div",{className:w.streamPanel,children:[t(An,{selectedProvider:e.selectedProvider,isAdult:e.showMeta?.isAdult,options:u,onProviderChange:g=>{it(),d({type:"SET_STATE",payload:{selectedProvider:g,videoSources:[],selectedSource:null,selectedLink:null,loadingVideo:!0}}),Lt(g,e.showMeta?.isAdult===!0)}}),kt(`${w.episodeActions} ${w.desktopEpisodeActions}`,"desktop"),Ce?t("div",{className:w.sourceLoader,children:t("div",{className:w.spinner})}):t(xn,{videoSources:e.videoSources,selectedSource:e.selectedSource,selectedLink:e.selectedLink,onSourceChange:g=>{E.videoRef.current&&!isNaN(E.videoRef.current.currentTime)&&(Ue.current=E.videoRef.current.currentTime);const $e=(g.links||[]).sort((lt,yt)=>(parseInt(yt.resolutionStr)||0)-(parseInt(lt.resolutionStr)||0))[0]||null;T(g.sourceName),d({type:"SET_STATE",payload:{selectedSource:g,selectedLink:$e,showResumeModal:e.showResumeModal&&g.type!=="iframe"}})},onLinkChange:g=>{e.selectedSource&&(T(e.selectedSource.sourceName),d({type:"SET_STATE",payload:{selectedLink:g}}))}})]}),t("div",{className:be.playerInfoContainer,children:[t("div",{className:be.playerInfoHeader,children:[t("div",{className:be.playerAnimeCard,children:t("img",{src:Wr(e.showMeta.thumbnail||""),alt:Pe,loading:"lazy",decoding:"async",onError:g=>{g.target.src="/placeholder.svg"}})}),t("div",{className:be.videoTitleSection,children:[t("div",{className:w.titleContainer,children:[t("h1",{children:Pe}),t("div",{className:w.scheduleInfo,children:[e.showMeta.status&&t("span",{className:w.status,children:e.showMeta.status}),e.showMeta.nextEpisodeAirDate&&t("span",{className:w.nextEpisode,children:["Next episode: ",e.showMeta.nextEpisodeAirDate]})]})]}),t("div",{className:w.controls,children:[t("button",{className:`${w.watchlistBtn} ${e.inWatchlist?w.inList:""}`,onClick:R,children:[e.inWatchlist?t(de,{name:"check",size:14}):t(de,{name:"plus",size:14}),e.inWatchlist?"In Watchlist":"Add to Watchlist"]}),t(zr,{showId:r,showName:e.showMeta.name||e.showMeta.names?.romaji,showThumbnail:e.showMeta.thumbnail,nativeName:e.showMeta.names?.native,englishName:e.showMeta.names?.english,showType:e.showMeta.type,className:`${w.watchlistBtn} ${w.queueBtn}`,activeClassName:w.queueActive}),qt&&t("button",{className:`${w.watchlistBtn} ${w.markWatchedBtn} ${Tt?w.markWatchedDone:""}`,onClick:zt,disabled:S||!e.currentEpisode,children:[t(de,{name:"check",size:14}),S?"Saving...":Tt?"Watched":"Mark Watched"]}),t("button",{className:`${w.watchlistBtn} ${w.modeToggleBtn} ${e.currentMode==="dub"?w.modeToggleActive:""}`,onClick:()=>{const g=e.currentMode==="dub"?"sub":"dub";it(),d({type:"SET_MODE",payload:g}),localStorage.setItem("preferredMode",g)},type:"button","aria-pressed":e.currentMode==="dub",children:e.currentMode==="dub"?"DUB":"SUB"}),He&&t("button",{className:`${w.watchlistBtn} ${w.modeToggleBtn} ${m.state.useNativeControls?w.modeToggleActive:""}`,onClick:()=>{const g=!m.state.useNativeControls;m.actions.setUseNativeControls(g),localStorage.setItem("playerUseNativeControls",g.toString())},type:"button",children:m.state.useNativeControls?"NATIVE: ON":"NATIVE: OFF"})]})]})]}),kt(`${w.episodeActions} ${w.mobileEpisodeActions}`,"mobile"),t("div",{className:be.infoColumns,children:[t("div",{className:`${w.descriptionSection} ${w.synopsisFlat}`,children:[t("h3",{children:"Synopsis"}),t(Hr,{text:e.showMeta.description?e.showMeta.description.replace(/<[^>]*>?/gm,""):"",emptyText:"No description available."}),t("button",{className:w.detailsToggleBtn,onClick:M,children:[e.showCombinedDetails?t(de,{name:"chevron-up"}):t(de,{name:"chevron-down"}),e.showCombinedDetails?"Hide Details":"Show Details"]})]}),e.showCombinedDetails&&t(jr,{showMeta:e.showMeta,styles:w})]})]})]})]}),t(Pr,{isOpen:ee,onClose:()=>j(!1),episodes:e.episodes,currentEpisode:e.currentEpisode??void 0,watchedEpisodes:e.watchedEpisodes,onEpisodeClick:g=>{j(!1),i(`/watch/${r}/${g}`)}})]})};export{bs as default};
@@ -1 +1 @@
1
- import{X as ke,x as he,u as y,A as C,q as fe,h as j,d as ie,T as ce,_ as Ee,C as de}from"./vendor-core-DfaOB3Rn.js";import{I as Z}from"./vendor-icons-DrybRNxP.js";import{_ as we,g as me}from"./index-BP1z44Uk.js";const pe=ke(null);function N(){const n=he(pe);if(!n)throw new Error("Player controls must be inside a PlayerProvider.");return n}function ve(n,i){const t=N(),r=C(i);r.current=i;const l=n?.url,m=n?.hls,s=fe(g=>{t.mediaRef.current=g,t.connect()},[t]);return j(()=>{if(l)return t.loadSource({url:l,hls:m},r.current)},[t,l,m]),s}function Xe({source:n,sourceOptions:i,...t}){const r=ve(n,i);return y("video",{playsInline:!0,...t,ref:r})}function Qe({source:n,sourceOptions:i,...t}){const r=ve(n,i);return y("audio",{...t,ref:r})}const Te="_shell_u5gii_1",Pe="_stage_u5gii_38",Se="_shellFill_u5gii_87",Le="_shellFullscreen_u5gii_95",Fe="_uiLayer_u5gii_110",Me="_engineStatus_u5gii_121",xe="_volumeWrap_u5gii_134",Re="_volumeSlider_u5gii_140",oe={shell:Te,stage:Pe,shellFill:Se,shellFullscreen:Le,uiLayer:Fe,engineStatus:Me,volumeWrap:xe,volumeSlider:Re},Ce=({classes:n,videoRef:i,duration:t,formatTime:r,isScrubbing:l,buffered:m="auto",onSeek:s,onScrubStart:g,onScrubMove:h,onScrubEnd:M,timeLabelRef:E,children:w})=>{const v=C(null),S=C(null),P=C(null),k=C(null),c=C(null),f=C(!1),p=C(l);p.current=l;const d=C({onScrubMove:h,onScrubEnd:M});d.current={onScrubMove:h,onScrubEnd:M};const[H,A]=ie({time:0,position:null});j(()=>{const a=i.current;if(!a)return;const b=_=>{const e=_/t*100||0;v.current?.setAttribute("aria-valuenow",String(Math.round(_))),v.current?.setAttribute("aria-valuetext",`${r(_)} of ${r(t)}`),S.current&&(S.current.style.width=`${e}%`),P.current&&(P.current.style.left=`${e}%`),E?.current&&(E.current.innerText=`${r(_)} / ${r(t)}`)},x=()=>{l||b(a.currentTime)},$=()=>{if(m==="auto"&&a.buffered.length>0){const e=a.buffered.end(a.buffered.length-1)/t*100||0;k.current&&(k.current.style.width=`${e}%`)}};return b(a.currentTime),$(),a.addEventListener("timeupdate",x),a.addEventListener("progress",$),()=>{a.removeEventListener("timeupdate",x),a.removeEventListener("progress",$)}},[i,t,l,m,r,E]);const V=a=>{if(!v.current)return 0;const b=v.current.getBoundingClientRect();return b.width<=0?0:Math.min(1,Math.max(0,(a-b.left)/b.width))},ee=a=>{const b=a*t;v.current?.setAttribute("aria-valuenow",String(Math.round(b))),v.current?.setAttribute("aria-valuetext",`${r(b)} of ${r(t)}`);const x=b/t*100||0;S.current&&(S.current.style.width=`${x}%`),P.current&&(P.current.style.left=`${x}%`),E?.current&&(E.current.innerText=`${r(b)} / ${r(t)}`);const $=v.current?.getBoundingClientRect();A({time:b,position:$?a*$.width:null})};j(()=>{if(!l){c.current=null;return}const a=x=>{if(c.current!==null&&x.pointerId!==c.current||!t)return;const $=V(x.clientX);d.current.onScrubMove($);const _=$*t;v.current?.setAttribute("aria-valuenow",String(Math.round(_))),v.current?.setAttribute("aria-valuetext",`${r(_)} of ${r(t)}`);const e=_/t*100||0;S.current&&(S.current.style.width=`${e}%`),P.current&&(P.current.style.left=`${e}%`),E?.current&&(E.current.innerText=`${r(_)} / ${r(t)}`);const u=v.current?.getBoundingClientRect();A({time:_,position:u?$*u.width:null})},b=x=>{c.current!==null&&x.pointerId!==c.current||(c.current=null,f.current=!0,x.pointerType!=="mouse"&&A({time:0,position:null}),d.current.onScrubEnd())};return document.addEventListener("pointermove",a),document.addEventListener("pointerup",b),document.addEventListener("pointercancel",b),()=>{document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",b),document.removeEventListener("pointercancel",b)}},[l,t,r,E]);const Q=a=>{if(a.pointerType==="mouse"&&a.button!==0||!i.current||!t)return;a.preventDefault(),c.current=a.pointerId;try{v.current?.setPointerCapture(a.pointerId)}catch{}p.current||(p.current=!0,g());const b=V(a.clientX);h(b),ee(b)},te=a=>{if(!t||p.current||a.pointerType!=="mouse")return;const b=V(a.clientX);A({time:b*t,position:a.clientX-(v.current?.getBoundingClientRect().left??0)})},G=a=>{if(!(c.current!==null&&a.pointerId!==c.current)&&p.current){c.current=null,f.current=!0,a.pointerType!=="mouse"&&A({time:0,position:null});try{v.current?.hasPointerCapture(a.pointerId)&&v.current.releasePointerCapture(a.pointerId)}catch{}M()}};return y("div",{className:`${n.container} ${l&&n.scrubbing?n.scrubbing:""}`,ref:v,role:"slider","aria-label":"Seek","aria-valuemin":0,"aria-valuemax":Math.round(t||0),"aria-valuenow":Math.round(i.current?.currentTime||0),"aria-disabled":!t,tabIndex:0,onClick:a=>{if(f.current){f.current=!1;return}!i.current||isNaN(t)||t===0||s(V(a.clientX))},onPointerDown:Q,onPointerMove:te,onPointerUp:G,onPointerCancel:G,onMouseMove:a=>{if(l||!t)return;const b=V(a.clientX);A({time:b*t,position:a.clientX-(v.current?.getBoundingClientRect().left??0)})},onMouseLeave:()=>{l||A({time:0,position:null})},onKeyDown:a=>{if(!(!i.current||!t)&&((a.key==="Home"||a.key==="End")&&(a.preventDefault(),s(a.key==="Home"?0:1)),a.key==="ArrowRight"||a.key==="ArrowLeft")){a.preventDefault();const b=(a.key==="ArrowRight"?5:-5)/t,x=i.current.currentTime/t||0;s(Math.min(1,Math.max(0,x+b)))}},children:[H.position!==null&&y("div",{className:n.timeBubble,style:{left:H.position},children:r(H.time)}),y("div",{className:n.bar,children:[y("div",{className:n.buffered,ref:k,style:m==="full"?{width:"100%"}:void 0}),y("div",{className:n.watched,ref:S}),y("div",{className:n.thumb,ref:P,onMouseDown:a=>{a.preventDefault(),i.current&&(p.current||g())}}),w]})]})};function ne(){try{if(typeof window>"u")return!1;const n=window.matchMedia?.("(pointer: coarse)").matches??!1,t=(navigator.maxTouchPoints??0)>0||"ontouchstart"in window;return n||t}catch{return!1}}function _e(){const[n,i]=ie(ne);return j(()=>{i(ne());let t=null;const r=()=>i(ne());try{t=window.matchMedia("(pointer: coarse)"),t.addEventListener?t.addEventListener("change",r):t.addListener(r)}catch{}return window.addEventListener("touchstart",r,{passive:!0,once:!0}),()=>{try{t&&(t.removeEventListener?t.removeEventListener("change",r):t.removeListener(r))}catch{}window.removeEventListener("touchstart",r)}},[]),n}const Be=450,Ae=({muted:n,volume:i,volumeIcon:t,buttonClassName:r,sliderClassName:l,onToggleMute:m,onVolumeChange:s,onExpandedChange:g})=>{const h=_e(),[M,E]=ie(!1),w=C(null),v=C(!1),S=C(null),P=fe(d=>{E(d),g?.(d)},[g]);j(()=>()=>{w.current&&window.clearTimeout(w.current)},[]),j(()=>{if(!M)return;const d=H=>{S.current&&!S.current.contains(H.target)&&P(!1)};return document.addEventListener("pointerdown",d),()=>document.removeEventListener("pointerdown",d)},[M,P]);const k=n?0:i,c=()=>{v.current=!1,w.current&&window.clearTimeout(w.current),w.current=window.setTimeout(()=>{v.current=!0,P(!0)},Be)},f=()=>{w.current&&(window.clearTimeout(w.current),w.current=null)},p=d=>{if(d.stopPropagation(),v.current){v.current=!1;return}if(h){M?m():P(!0);return}m()};return y("div",{ref:S,className:oe.volumeWrap,"data-expanded":M?"true":"false",onContextMenu:d=>d.preventDefault(),children:[y("button",{type:"button",className:r,onClick:p,onPointerDown:c,onPointerUp:f,onPointerLeave:f,onContextMenu:d=>d.preventDefault(),"aria-label":n?"Unmute":"Mute","aria-expanded":M,children:t}),y("input",{type:"range",min:"0",max:"1",step:"0.05",value:k,onChange:d=>s(parseFloat(d.currentTarget.value)),onClick:d=>d.stopPropagation(),onPointerDown:d=>d.stopPropagation(),onContextMenu:d=>d.preventDefault(),className:`${oe.volumeSlider} ${l??""}`,style:{"--volume-percent":`${k*100}%`},"aria-label":"Volume"})]})};let Y=null,re=null;async function $e(){return Y||(re||(re=we(()=>import("./hls-BOLXTnjL.js"),[]).then(n=>(Y=n.default,Y)).catch(()=>null)),re)}function De(n){return n.canPlayType("application/vnd.apple.mpegurl")!==""||n.canPlayType("application/x-mpegURL")!==""}function ue(){return document}function le(n){const i=ue();if(document.fullscreenElement)return document.fullscreenElement;if(i.webkitFullscreenElement)return i.webkitFullscreenElement;const t=n;return t?.webkitDisplayingFullscreen?t:null}function be(n){return le(n)!==null}async function Ie(n,i){if(le(i))return;const t=n;try{if(typeof n.requestFullscreen=="function"){await n.requestFullscreen();return}if(typeof t.webkitRequestFullscreen=="function"){await t.webkitRequestFullscreen();return}if(typeof t.webkitRequestFullScreen=="function"){await t.webkitRequestFullScreen();return}}catch{}const r=i;if(r&&typeof r.webkitEnterFullscreen=="function"){if(r.webkitSupportsFullscreen===!1)return;try{await r.webkitEnterFullscreen()}catch{}}}async function Ne(n){const i=ue();try{if(document.fullscreenElement&&typeof document.exitFullscreen=="function"){await document.exitFullscreen();return}if(i.webkitFullscreenElement&&typeof i.webkitExitFullscreen=="function"){await i.webkitExitFullscreen();return}}catch{}const t=n;if(t?.webkitDisplayingFullscreen&&typeof t.webkitExitFullscreen=="function"){try{t.webkitExitFullscreen()}catch{}return}try{typeof i.webkitCancelFullScreen=="function"?i.webkitCancelFullScreen():!document.fullscreenElement&&typeof document.exitFullscreen=="function"&&(document.fullscreenElement??i.webkitFullscreenElement)&&await document.exitFullscreen()}catch{}}async function Ve(n,i){!n&&!i||(be(i)?await Ne(i):n&&await Ie(n,i))}function qe(n,i){const t=()=>{try{i(be(n()))}catch{}},r=ue(),l=t;r.addEventListener("fullscreenchange",t),r.addEventListener("webkitfullscreenchange",l),r.addEventListener("webkitbeginfullscreen",l,!0),r.addEventListener("webkitendfullscreen",l,!0);const m=n();return m?.addEventListener("webkitbeginfullscreen",l),m?.addEventListener("webkitendfullscreen",l),()=>{r.removeEventListener("fullscreenchange",t),r.removeEventListener("webkitfullscreenchange",l),r.removeEventListener("webkitbeginfullscreen",l,!0),r.removeEventListener("webkitendfullscreen",l,!0),m?.removeEventListener("webkitbeginfullscreen",l),m?.removeEventListener("webkitendfullscreen",l)}}let U=null;function se(n){try{return n?localStorage.getItem(n):null}catch{return null}}function J(n,i){try{n&&localStorage.setItem(n,String(i))}catch{}}function Ue(n={}){const i=Number.parseFloat(se(n.volumeKey)??"");let t={isPlaying:!1,isBuffering:!1,isMuted:se(n.mutedKey)==="true",volume:Number.isFinite(i)?Math.max(0,Math.min(1,i)):1,duration:0,playbackRate:1,isScrubbing:!1,isFullscreen:!1,showControls:!0,isSpeedBoostActive:!1,audioTracks:[],subtitleTracks:[],qualities:[],activeAudioTrack:-1,activeSubtitleTrack:-1,activeQuality:-1,error:null,playBlocked:!1},r={currentTime:0,bufferedEnd:0};const l=new Set,m=new Set,s={current:null},g={current:null};let h=null,M=()=>{},E=()=>{},w=0,v=!1,S=1,P=!1,k=null;function c(e){Object.entries(e).every(([u,o])=>Object.is(t[u],o))||(t={...t,...e},l.forEach(u=>u()))}function f(e){r.currentTime===e.currentTime&&r.bufferedEnd===e.bufferedEnd||(r=e,m.forEach(u=>u()))}function p(e){if(!e)return;let u=0;for(let o=0;o<e.buffered.length;o++)if(e.buffered.start(o)<=e.currentTime&&e.buffered.end(o)>=e.currentTime){u=e.buffered.end(o);break}f({currentTime:Number.isFinite(e.currentTime)?e.currentTime:0,bufferedEnd:u})}function d(){p(s.current)}function H(){const e=s.current;if(h===e||(h&&(U===h&&(U=e),p(h),E(),h.pause(),h.removeAttribute("src"),h.load()),M(),h=e,!e))return;P=!1,U||(U=e),e.volume=t.volume,e.muted=t.isMuted,e.playbackRate=t.playbackRate;const u=()=>{const T=Array.from(e.textTracks);if(!T.length)return;const q=T.findIndex(O=>O.mode==="showing");c({subtitleTracks:T.map((O,X)=>({id:X,label:O.label||O.language||`Track ${X+1}`,language:O.language})),...q>=0?{activeSubtitleTrack:q}:{}})},o={play:()=>{U=e,c({isPlaying:!0,playBlocked:!1,error:null})},playing:()=>c({isPlaying:!0,isBuffering:!1,playBlocked:!1}),pause:()=>c({isPlaying:!1,isBuffering:!1}),ended:()=>{c({isPlaying:!1,isBuffering:!1}),d()},waiting:()=>{!e.paused&&(e.readyState<3||e.seeking)&&c({isBuffering:!0})},canplay:()=>c({isBuffering:!1}),seeking:()=>{e.paused||c({isBuffering:!0}),d()},seeked:()=>{c({isBuffering:!1}),d()},timeupdate:()=>{d(),!e.paused&&!e.seeking&&c({isBuffering:!1})},progress:d,loadedmetadata:()=>{e.playbackRate=t.playbackRate,c({duration:Number.isFinite(e.duration)?e.duration:0}),u()},durationchange:()=>c({duration:Number.isFinite(e.duration)?e.duration:0}),ratechange:()=>{t.isSpeedBoostActive||(S=e.playbackRate),e.defaultPlaybackRate!==e.playbackRate&&(e.defaultPlaybackRate=e.playbackRate),c({playbackRate:e.playbackRate})},volumechange:()=>{c({volume:e.volume,isMuted:e.muted}),J(n.volumeKey,e.volume),J(n.mutedKey,e.muted)},error:()=>c({error:e.error?.message||"Unable to play this source.",isPlaying:!1,isBuffering:!1})};Object.entries(o).forEach(([T,q])=>e.addEventListener(T,q)),e.textTracks.addEventListener("addtrack",u),e.textTracks.addEventListener("removetrack",u),e.textTracks.addEventListener("change",u);const L=()=>e.tagName==="VIDEO"?e:null,K=()=>{const T=le(L());c({isFullscreen:T!==null&&(T===e||T===g.current)})},B=typeof document>"u"?()=>{}:qe(L,K);typeof document<"u"&&K(),M=()=>{Object.entries(o).forEach(([T,q])=>e.removeEventListener(T,q)),B(),e.textTracks.removeEventListener("addtrack",u),e.textTracks.removeEventListener("removetrack",u),e.textTracks.removeEventListener("change",u)}}async function A(){const e=s.current;if(!e)return!1;U=e;const u=w;try{return await e.play(),u===w}catch(o){if(u===w){const L=o instanceof Error&&o.name==="NotAllowedError",K=o instanceof Error&&o.name==="AbortError";c({isPlaying:!1,isBuffering:!1,playBlocked:L,...!L&&!K?{error:o instanceof Error?o.message:"Playback failed."}:{}})}return!1}}function V(){s.current?.pause()}function ee(){s.current?.paused?A():V()}function Q(e){const u=s.current;if(!u||!Number.isFinite(e))return;let o=Math.max(0,e);if(Number.isFinite(u.duration))o=Math.min(u.duration,o);else if(u.seekable.length)for(let L=0;L<u.seekable.length;L++){if(o<=u.seekable.end(L)){o=Math.max(u.seekable.start(L),o);break}L===u.seekable.length-1&&(o=u.seekable.end(L))}u.currentTime=o,d()}function te(e){Q((s.current?.currentTime??r.currentTime)+e)}function G(e){if(!Number.isFinite(e))return;const u=Math.max(0,Math.min(1,e));c({volume:u,isMuted:u===0}),s.current&&(s.current.volume=u,s.current.muted=u===0),J(n.volumeKey,u),J(n.mutedKey,u===0)}function a(){const e=!t.isMuted;!e&&t.volume===0&&G(.5),c({isMuted:e}),s.current&&(s.current.muted=e),J(n.mutedKey,e)}function b(e){if(!Number.isFinite(e)||e<.25||e>4)return;S=e;const u=t.isSpeedBoostActive?2:e;c({playbackRate:u}),s.current&&(s.current.playbackRate=u)}function x(){t.isScrubbing||(v=!!s.current&&!s.current.paused,c({isScrubbing:!0}),V())}function $(){t.isScrubbing&&(c({isScrubbing:!1}),v&&A(),v=!1)}function _(e,u={}){E(),H();const o=s.current,L=++w;if(!o)return()=>{};let K=!1,B=null;const T=()=>!K&&w===L&&s.current===o;o.pause(),o.removeAttribute("src"),o.load(),c({duration:0,isPlaying:!1,isBuffering:!0,isScrubbing:!1,error:null,playBlocked:!1,audioTracks:[],subtitleTracks:[],qualities:[],activeAudioTrack:-1,activeSubtitleTrack:-1,activeQuality:-1}),f({currentTime:0,bufferedEnd:0});const q=()=>{T()&&u.initialTime&&u.initialTime>0&&Q(u.initialTime)};o.addEventListener("loadedmetadata",q,{once:!0});const O=()=>{T()&&(u.onReady?.(),u.autoPlay&&T()&&A())},X=F=>{if(!T())return;const D=F instanceof Error?F:new Error(String(F));c({error:D.message,isPlaying:!1,isBuffering:!1}),u.onError?.(D)},z=()=>{K||(K=!0,o.removeEventListener("loadedmetadata",q),o.removeEventListener("error",ae),B?.destroy(),k===B&&(k=null),B=null,w===L&&w++)},ae=()=>{X(new Error(o.error?.message||"Unable to play this source.")),z()};return o.addEventListener("error",ae),E=z,(async()=>{if(e.hls){const F=await $e();if(!T())return;if(F?.isSupported()){B=new F({enableWorker:!0,startPosition:u.initialTime??-1,...u.hlsConfig}),k=B;const D=B,ge=()=>{T()&&c({audioTracks:D.audioTracks.map((R,I)=>({id:I,label:R.name||R.lang||`Track ${I+1}`,language:R.lang})),...o.querySelector("track")?{}:{subtitleTracks:D.subtitleTracks.map((R,I)=>({id:I,label:R.name||R.lang||`Track ${I+1}`,language:R.lang}))},qualities:D.levels.map((R,I)=>({id:I,label:R.height?`${R.height}p`:`${Math.round(R.bitrate/1e3)}k`})),activeAudioTrack:D.audioTrack,...o.querySelector("track")?{}:{activeSubtitleTrack:D.subtitleTrack},activeQuality:D.currentLevel})};for(const R of[F.Events.MANIFEST_PARSED,F.Events.AUDIO_TRACKS_UPDATED,F.Events.AUDIO_TRACK_SWITCHED,F.Events.SUBTITLE_TRACKS_UPDATED,F.Events.SUBTITLE_TRACK_SWITCH,F.Events.LEVEL_SWITCHED])D.on(R,ge);if(B.on(F.Events.ERROR,(R,I)=>{I.fatal&&T()&&(X(new Error(`Stream failed (${I.details}). Try another source or reload.`)),z())}),B.once(F.Events.MANIFEST_PARSED,O),u.onHls?.(B,F),!T())return;B.loadSource(e.url),B.attachMedia(o);return}if(!De(o))throw new Error("HLS playback is unavailable in this browser.")}T()&&(o.src=e.url,o.load(),O())})().catch(F=>{X(F),z()}),z}return{mediaRef:s,containerRef:g,connect:H,getState:()=>t,getTimeline:()=>r,getHls:()=>k,isActive:()=>U===s.current,subscribe:e=>(l.add(e),()=>{l.delete(e)}),subscribeTimeline:e=>(m.add(e),()=>{m.delete(e)}),play:A,pause:V,togglePlay:ee,seek:Q,seekRelative:te,setVolume:G,toggleMute:a,setPlaybackRate:b,setAudioTrack:e=>{k&&t.audioTracks.some(u=>u.id===e)&&(k.audioTrack=e,c({activeAudioTrack:e}))},setSubtitleTrack:e=>{if(e!==-1&&!t.subtitleTracks.some(o=>o.id===e))return;const u=s.current;u?.querySelector("track")?Array.from(u.textTracks).forEach((o,L)=>{o.mode=L===e?"showing":"disabled"}):k&&(k.subtitleTrack=e),c({activeSubtitleTrack:e})},setQuality:e=>{k&&(e===-1||t.qualities.some(u=>u.id===e))&&(k.currentLevel=e,c({activeQuality:e}))},setSpeedBoost:e=>{const u=e?2:S;c({isSpeedBoostActive:e,playbackRate:u}),s.current&&(s.current.playbackRate=u)},setShowControls:e=>c({showControls:e}),startScrubbing:x,endScrubbing:$,loadSource:_,unload:()=>{const e=s.current;p(e),E(),e&&(e.pause(),e.removeAttribute("src"),e.load()),c({isPlaying:!1,isBuffering:!1,duration:0,error:null}),f({currentTime:0,bufferedEnd:0})},toggleFullscreen:()=>{const e=s.current;Ve(g.current,e?.tagName==="VIDEO"?e:null).catch(u=>c({error:u instanceof Error?u.message:"Fullscreen failed."}))},reset:()=>{c({duration:0,isBuffering:!1,error:null}),f({currentTime:0,bufferedEnd:0})},destroy:()=>{if(P)return;P=!0;const e=h??s.current;p(e),M(),h=null,E(),e?.pause(),e?.removeAttribute("src"),e?.load(),U===e&&(U=null)}}}function W(n){return de(n.subscribe,n.getState)}function ye(n){return de(n.subscribeTimeline,n.getTimeline)}function Ge(n={}){const i=C(n),t=ce(()=>Ue(i.current),[]);return Ee(()=>{t.connect()}),j(()=>()=>t.destroy(),[t]),ce(()=>({engine:t,mediaRef:t.mediaRef}),[t])}function He({children:n,...i}){const t=N(),{isPlaying:r}=W(t);return y("button",{type:"button","aria-label":r?"Pause":"Play",...i,onClick:t.togglePlay,children:n??y(Z,{name:r?"pause":"play"})})}function ze({seconds:n,children:i,...t}){const r=N();return y("button",{type:"button","aria-label":`Seek ${n<0?"back":"forward"} ${Math.abs(n)} seconds`,...t,onClick:()=>r.seekRelative(n),children:i??y(Z,{name:n<0?"replay-10":"forward-10"})})}function Je(n){const i=N(),{isFullscreen:t}=W(i);return y("button",{type:"button","aria-label":t?"Exit Fullscreen":"Fullscreen",...n,onClick:i.toggleFullscreen,children:y(Z,{name:t?"compress":"expand"})})}function Ye({buttonClassName:n,onExpandedChange:i}){const t=N(),{isMuted:r,volume:l}=W(t);return y(Ae,{muted:r,volume:l,volumeIcon:y(Z,{name:r||l===0?"volume-mute":l<.5?"volume-down":"volume-up"}),buttonClassName:n,onToggleMute:t.toggleMute,onVolumeChange:t.setVolume,onExpandedChange:i})}function Ze({className:n}){const i=N(),{volume:t,isMuted:r}=W(i);return y("input",{type:"range",min:0,max:1,step:.01,value:r?0:t,onChange:l=>i.setVolume(Number(l.currentTarget.value)),className:n,style:{"--volume-percent":`${(r?0:t)*100}%`},"aria-label":"Volume"})}function et({classes:n,timeLabelRef:i,children:t}){const r=N(),{duration:l,isScrubbing:m}=W(r);return y(Ce,{classes:n,videoRef:r.mediaRef,duration:l,formatTime:me,isScrubbing:m,onSeek:s=>r.seek(s*l),onScrubStart:r.startScrubbing,onScrubMove:s=>r.seek(s*l),onScrubEnd:r.endScrubbing,timeLabelRef:i,children:t})}function tt({className:n}){const i=N(),{currentTime:t,bufferedEnd:r}=ye(i),{duration:l}=W(i),m=l?Math.min(100,t/l*100):0,s=l?Math.min(100,Math.max(m,r/l*100)):0;return y("input",{type:"range",min:0,max:l,step:.1,value:Math.min(t,l),onChange:g=>i.seek(Number(g.currentTarget.value)),onPointerDown:g=>{g.currentTarget.setPointerCapture(g.pointerId),i.startScrubbing()},onPointerUp:i.endScrubbing,onPointerCancel:i.endScrubbing,onLostPointerCapture:i.endScrubbing,className:n,style:{"--played-percent":`${m}%`,"--buffered-percent":`${s}%`},"aria-label":"Seek"})}function nt({className:n,durationOnly:i=!1}){const t=N(),{currentTime:r}=ye(t),{duration:l}=W(t);return y("span",{className:n,children:me(i?l:r)})}function rt(){const n=N(),{error:i,playBlocked:t,isBuffering:r}=W(n);return i?y("div",{role:"alert",children:i}):t?y(He,{children:"Tap to play"}):r?y("div",{role:"status","aria-label":"Buffering",children:"Loading…"}):null}const Ke='input, textarea, button, select, a, [role="button"], [role="slider"], [contenteditable]:not([contenteditable="false"]), [data-player-ui="true"], [data-speed-boost-ignore="true"]';function it(n,i,t=!0){const r=C(i);r.current=i,j(()=>{if(!t)return;let l=!1,m=!1,s=!1,g,h,M=!1;const E=()=>{const f=m||s;f!==M&&(M=f,n.setSpeedBoost(f))},w=f=>f instanceof Element&&!!f.closest(Ke),v=f=>{if(!n.isActive()||!n.mediaRef.current||f.defaultPrevented||f.ctrlKey||f.metaKey||f.altKey||w(f.target))return;if(f.code==="Space"){if(f.preventDefault(),l)return;l=!0,g=setTimeout(()=>{g=void 0,m=!0,E()},180),r.current();return}const p=f.key.toLowerCase();["k","j","l","arrowleft","arrowright","arrowup","arrowdown","m","f"].includes(p)&&(f.preventDefault(),!(f.repeat&&["k","m","f"].includes(p))&&(p==="k"&&n.togglePlay(),(p==="j"||p==="arrowleft")&&n.seekRelative(-10),(p==="l"||p==="arrowright")&&n.seekRelative(10),p==="arrowup"&&n.setVolume(n.getState().volume+.1),p==="arrowdown"&&n.setVolume(n.getState().volume-.1),p==="m"&&n.toggleMute(),p==="f"&&n.toggleFullscreen(),r.current()))},S=f=>{f.code!=="Space"||!l||(f.preventDefault(),l=!1,clearTimeout(g),g=void 0,m?(m=!1,E()):n.togglePlay(),r.current())},P=f=>{const p=f.target;f.button!==0||!(p instanceof Element)||w(p)||!n.containerRef.current?.contains(p)||(clearTimeout(h),h=setTimeout(()=>{h=void 0,s=!0,E()},180))},k=()=>{clearTimeout(h),h=void 0,s=!1,E()},c=()=>{clearTimeout(g),g=void 0,l=!1,m=!1,k()};return document.addEventListener("keydown",v),document.addEventListener("keyup",S),document.addEventListener("pointerdown",P),document.addEventListener("pointerup",k),document.addEventListener("pointercancel",k),window.addEventListener("blur",c),()=>{document.removeEventListener("keydown",v),document.removeEventListener("keyup",S),document.removeEventListener("pointerdown",P),document.removeEventListener("pointerup",k),document.removeEventListener("pointercancel",k),window.removeEventListener("blur",c),c()}},[n,t])}function ut({engine:n,children:i}){return y(pe.Provider,{value:n,children:i})}export{Je as F,et as P,ze as S,Ze as V,He as a,Ye as b,Xe as c,ut as d,N as e,W as f,ye as g,it as h,nt as i,tt as j,rt as k,Qe as l,_e as m,be as n,oe as s,Ge as u};
1
+ import{X as ke,x as he,u as y,A as C,q as fe,h as j,d as ie,T as ce,_ as Ee,C as de}from"./vendor-core-DfaOB3Rn.js";import{I as Z}from"./vendor-icons-DrybRNxP.js";import{_ as we,g as me}from"./index-vb4WPdcb.js";const pe=ke(null);function N(){const n=he(pe);if(!n)throw new Error("Player controls must be inside a PlayerProvider.");return n}function ve(n,i){const t=N(),r=C(i);r.current=i;const l=n?.url,m=n?.hls,s=fe(g=>{t.mediaRef.current=g,t.connect()},[t]);return j(()=>{if(l)return t.loadSource({url:l,hls:m},r.current)},[t,l,m]),s}function Xe({source:n,sourceOptions:i,...t}){const r=ve(n,i);return y("video",{playsInline:!0,...t,ref:r})}function Qe({source:n,sourceOptions:i,...t}){const r=ve(n,i);return y("audio",{...t,ref:r})}const Te="_shell_u5gii_1",Pe="_stage_u5gii_38",Se="_shellFill_u5gii_87",Le="_shellFullscreen_u5gii_95",Fe="_uiLayer_u5gii_110",Me="_engineStatus_u5gii_121",xe="_volumeWrap_u5gii_134",Re="_volumeSlider_u5gii_140",oe={shell:Te,stage:Pe,shellFill:Se,shellFullscreen:Le,uiLayer:Fe,engineStatus:Me,volumeWrap:xe,volumeSlider:Re},Ce=({classes:n,videoRef:i,duration:t,formatTime:r,isScrubbing:l,buffered:m="auto",onSeek:s,onScrubStart:g,onScrubMove:h,onScrubEnd:M,timeLabelRef:E,children:w})=>{const v=C(null),S=C(null),P=C(null),k=C(null),c=C(null),f=C(!1),p=C(l);p.current=l;const d=C({onScrubMove:h,onScrubEnd:M});d.current={onScrubMove:h,onScrubEnd:M};const[H,A]=ie({time:0,position:null});j(()=>{const a=i.current;if(!a)return;const b=_=>{const e=_/t*100||0;v.current?.setAttribute("aria-valuenow",String(Math.round(_))),v.current?.setAttribute("aria-valuetext",`${r(_)} of ${r(t)}`),S.current&&(S.current.style.width=`${e}%`),P.current&&(P.current.style.left=`${e}%`),E?.current&&(E.current.innerText=`${r(_)} / ${r(t)}`)},x=()=>{l||b(a.currentTime)},$=()=>{if(m==="auto"&&a.buffered.length>0){const e=a.buffered.end(a.buffered.length-1)/t*100||0;k.current&&(k.current.style.width=`${e}%`)}};return b(a.currentTime),$(),a.addEventListener("timeupdate",x),a.addEventListener("progress",$),()=>{a.removeEventListener("timeupdate",x),a.removeEventListener("progress",$)}},[i,t,l,m,r,E]);const V=a=>{if(!v.current)return 0;const b=v.current.getBoundingClientRect();return b.width<=0?0:Math.min(1,Math.max(0,(a-b.left)/b.width))},ee=a=>{const b=a*t;v.current?.setAttribute("aria-valuenow",String(Math.round(b))),v.current?.setAttribute("aria-valuetext",`${r(b)} of ${r(t)}`);const x=b/t*100||0;S.current&&(S.current.style.width=`${x}%`),P.current&&(P.current.style.left=`${x}%`),E?.current&&(E.current.innerText=`${r(b)} / ${r(t)}`);const $=v.current?.getBoundingClientRect();A({time:b,position:$?a*$.width:null})};j(()=>{if(!l){c.current=null;return}const a=x=>{if(c.current!==null&&x.pointerId!==c.current||!t)return;const $=V(x.clientX);d.current.onScrubMove($);const _=$*t;v.current?.setAttribute("aria-valuenow",String(Math.round(_))),v.current?.setAttribute("aria-valuetext",`${r(_)} of ${r(t)}`);const e=_/t*100||0;S.current&&(S.current.style.width=`${e}%`),P.current&&(P.current.style.left=`${e}%`),E?.current&&(E.current.innerText=`${r(_)} / ${r(t)}`);const u=v.current?.getBoundingClientRect();A({time:_,position:u?$*u.width:null})},b=x=>{c.current!==null&&x.pointerId!==c.current||(c.current=null,f.current=!0,x.pointerType!=="mouse"&&A({time:0,position:null}),d.current.onScrubEnd())};return document.addEventListener("pointermove",a),document.addEventListener("pointerup",b),document.addEventListener("pointercancel",b),()=>{document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",b),document.removeEventListener("pointercancel",b)}},[l,t,r,E]);const Q=a=>{if(a.pointerType==="mouse"&&a.button!==0||!i.current||!t)return;a.preventDefault(),c.current=a.pointerId;try{v.current?.setPointerCapture(a.pointerId)}catch{}p.current||(p.current=!0,g());const b=V(a.clientX);h(b),ee(b)},te=a=>{if(!t||p.current||a.pointerType!=="mouse")return;const b=V(a.clientX);A({time:b*t,position:a.clientX-(v.current?.getBoundingClientRect().left??0)})},G=a=>{if(!(c.current!==null&&a.pointerId!==c.current)&&p.current){c.current=null,f.current=!0,a.pointerType!=="mouse"&&A({time:0,position:null});try{v.current?.hasPointerCapture(a.pointerId)&&v.current.releasePointerCapture(a.pointerId)}catch{}M()}};return y("div",{className:`${n.container} ${l&&n.scrubbing?n.scrubbing:""}`,ref:v,role:"slider","aria-label":"Seek","aria-valuemin":0,"aria-valuemax":Math.round(t||0),"aria-valuenow":Math.round(i.current?.currentTime||0),"aria-disabled":!t,tabIndex:0,onClick:a=>{if(f.current){f.current=!1;return}!i.current||isNaN(t)||t===0||s(V(a.clientX))},onPointerDown:Q,onPointerMove:te,onPointerUp:G,onPointerCancel:G,onMouseMove:a=>{if(l||!t)return;const b=V(a.clientX);A({time:b*t,position:a.clientX-(v.current?.getBoundingClientRect().left??0)})},onMouseLeave:()=>{l||A({time:0,position:null})},onKeyDown:a=>{if(!(!i.current||!t)&&((a.key==="Home"||a.key==="End")&&(a.preventDefault(),s(a.key==="Home"?0:1)),a.key==="ArrowRight"||a.key==="ArrowLeft")){a.preventDefault();const b=(a.key==="ArrowRight"?5:-5)/t,x=i.current.currentTime/t||0;s(Math.min(1,Math.max(0,x+b)))}},children:[H.position!==null&&y("div",{className:n.timeBubble,style:{left:H.position},children:r(H.time)}),y("div",{className:n.bar,children:[y("div",{className:n.buffered,ref:k,style:m==="full"?{width:"100%"}:void 0}),y("div",{className:n.watched,ref:S}),y("div",{className:n.thumb,ref:P,onMouseDown:a=>{a.preventDefault(),i.current&&(p.current||g())}}),w]})]})};function ne(){try{if(typeof window>"u")return!1;const n=window.matchMedia?.("(pointer: coarse)").matches??!1,t=(navigator.maxTouchPoints??0)>0||"ontouchstart"in window;return n||t}catch{return!1}}function _e(){const[n,i]=ie(ne);return j(()=>{i(ne());let t=null;const r=()=>i(ne());try{t=window.matchMedia("(pointer: coarse)"),t.addEventListener?t.addEventListener("change",r):t.addListener(r)}catch{}return window.addEventListener("touchstart",r,{passive:!0,once:!0}),()=>{try{t&&(t.removeEventListener?t.removeEventListener("change",r):t.removeListener(r))}catch{}window.removeEventListener("touchstart",r)}},[]),n}const Be=450,Ae=({muted:n,volume:i,volumeIcon:t,buttonClassName:r,sliderClassName:l,onToggleMute:m,onVolumeChange:s,onExpandedChange:g})=>{const h=_e(),[M,E]=ie(!1),w=C(null),v=C(!1),S=C(null),P=fe(d=>{E(d),g?.(d)},[g]);j(()=>()=>{w.current&&window.clearTimeout(w.current)},[]),j(()=>{if(!M)return;const d=H=>{S.current&&!S.current.contains(H.target)&&P(!1)};return document.addEventListener("pointerdown",d),()=>document.removeEventListener("pointerdown",d)},[M,P]);const k=n?0:i,c=()=>{v.current=!1,w.current&&window.clearTimeout(w.current),w.current=window.setTimeout(()=>{v.current=!0,P(!0)},Be)},f=()=>{w.current&&(window.clearTimeout(w.current),w.current=null)},p=d=>{if(d.stopPropagation(),v.current){v.current=!1;return}if(h){M?m():P(!0);return}m()};return y("div",{ref:S,className:oe.volumeWrap,"data-expanded":M?"true":"false",onContextMenu:d=>d.preventDefault(),children:[y("button",{type:"button",className:r,onClick:p,onPointerDown:c,onPointerUp:f,onPointerLeave:f,onContextMenu:d=>d.preventDefault(),"aria-label":n?"Unmute":"Mute","aria-expanded":M,children:t}),y("input",{type:"range",min:"0",max:"1",step:"0.05",value:k,onChange:d=>s(parseFloat(d.currentTarget.value)),onClick:d=>d.stopPropagation(),onPointerDown:d=>d.stopPropagation(),onContextMenu:d=>d.preventDefault(),className:`${oe.volumeSlider} ${l??""}`,style:{"--volume-percent":`${k*100}%`},"aria-label":"Volume"})]})};let Y=null,re=null;async function $e(){return Y||(re||(re=we(()=>import("./hls-BOLXTnjL.js"),[]).then(n=>(Y=n.default,Y)).catch(()=>null)),re)}function De(n){return n.canPlayType("application/vnd.apple.mpegurl")!==""||n.canPlayType("application/x-mpegURL")!==""}function ue(){return document}function le(n){const i=ue();if(document.fullscreenElement)return document.fullscreenElement;if(i.webkitFullscreenElement)return i.webkitFullscreenElement;const t=n;return t?.webkitDisplayingFullscreen?t:null}function be(n){return le(n)!==null}async function Ie(n,i){if(le(i))return;const t=n;try{if(typeof n.requestFullscreen=="function"){await n.requestFullscreen();return}if(typeof t.webkitRequestFullscreen=="function"){await t.webkitRequestFullscreen();return}if(typeof t.webkitRequestFullScreen=="function"){await t.webkitRequestFullScreen();return}}catch{}const r=i;if(r&&typeof r.webkitEnterFullscreen=="function"){if(r.webkitSupportsFullscreen===!1)return;try{await r.webkitEnterFullscreen()}catch{}}}async function Ne(n){const i=ue();try{if(document.fullscreenElement&&typeof document.exitFullscreen=="function"){await document.exitFullscreen();return}if(i.webkitFullscreenElement&&typeof i.webkitExitFullscreen=="function"){await i.webkitExitFullscreen();return}}catch{}const t=n;if(t?.webkitDisplayingFullscreen&&typeof t.webkitExitFullscreen=="function"){try{t.webkitExitFullscreen()}catch{}return}try{typeof i.webkitCancelFullScreen=="function"?i.webkitCancelFullScreen():!document.fullscreenElement&&typeof document.exitFullscreen=="function"&&(document.fullscreenElement??i.webkitFullscreenElement)&&await document.exitFullscreen()}catch{}}async function Ve(n,i){!n&&!i||(be(i)?await Ne(i):n&&await Ie(n,i))}function qe(n,i){const t=()=>{try{i(be(n()))}catch{}},r=ue(),l=t;r.addEventListener("fullscreenchange",t),r.addEventListener("webkitfullscreenchange",l),r.addEventListener("webkitbeginfullscreen",l,!0),r.addEventListener("webkitendfullscreen",l,!0);const m=n();return m?.addEventListener("webkitbeginfullscreen",l),m?.addEventListener("webkitendfullscreen",l),()=>{r.removeEventListener("fullscreenchange",t),r.removeEventListener("webkitfullscreenchange",l),r.removeEventListener("webkitbeginfullscreen",l,!0),r.removeEventListener("webkitendfullscreen",l,!0),m?.removeEventListener("webkitbeginfullscreen",l),m?.removeEventListener("webkitendfullscreen",l)}}let U=null;function se(n){try{return n?localStorage.getItem(n):null}catch{return null}}function J(n,i){try{n&&localStorage.setItem(n,String(i))}catch{}}function Ue(n={}){const i=Number.parseFloat(se(n.volumeKey)??"");let t={isPlaying:!1,isBuffering:!1,isMuted:se(n.mutedKey)==="true",volume:Number.isFinite(i)?Math.max(0,Math.min(1,i)):1,duration:0,playbackRate:1,isScrubbing:!1,isFullscreen:!1,showControls:!0,isSpeedBoostActive:!1,audioTracks:[],subtitleTracks:[],qualities:[],activeAudioTrack:-1,activeSubtitleTrack:-1,activeQuality:-1,error:null,playBlocked:!1},r={currentTime:0,bufferedEnd:0};const l=new Set,m=new Set,s={current:null},g={current:null};let h=null,M=()=>{},E=()=>{},w=0,v=!1,S=1,P=!1,k=null;function c(e){Object.entries(e).every(([u,o])=>Object.is(t[u],o))||(t={...t,...e},l.forEach(u=>u()))}function f(e){r.currentTime===e.currentTime&&r.bufferedEnd===e.bufferedEnd||(r=e,m.forEach(u=>u()))}function p(e){if(!e)return;let u=0;for(let o=0;o<e.buffered.length;o++)if(e.buffered.start(o)<=e.currentTime&&e.buffered.end(o)>=e.currentTime){u=e.buffered.end(o);break}f({currentTime:Number.isFinite(e.currentTime)?e.currentTime:0,bufferedEnd:u})}function d(){p(s.current)}function H(){const e=s.current;if(h===e||(h&&(U===h&&(U=e),p(h),E(),h.pause(),h.removeAttribute("src"),h.load()),M(),h=e,!e))return;P=!1,U||(U=e),e.volume=t.volume,e.muted=t.isMuted,e.playbackRate=t.playbackRate;const u=()=>{const T=Array.from(e.textTracks);if(!T.length)return;const q=T.findIndex(O=>O.mode==="showing");c({subtitleTracks:T.map((O,X)=>({id:X,label:O.label||O.language||`Track ${X+1}`,language:O.language})),...q>=0?{activeSubtitleTrack:q}:{}})},o={play:()=>{U=e,c({isPlaying:!0,playBlocked:!1,error:null})},playing:()=>c({isPlaying:!0,isBuffering:!1,playBlocked:!1}),pause:()=>c({isPlaying:!1,isBuffering:!1}),ended:()=>{c({isPlaying:!1,isBuffering:!1}),d()},waiting:()=>{!e.paused&&(e.readyState<3||e.seeking)&&c({isBuffering:!0})},canplay:()=>c({isBuffering:!1}),seeking:()=>{e.paused||c({isBuffering:!0}),d()},seeked:()=>{c({isBuffering:!1}),d()},timeupdate:()=>{d(),!e.paused&&!e.seeking&&c({isBuffering:!1})},progress:d,loadedmetadata:()=>{e.playbackRate=t.playbackRate,c({duration:Number.isFinite(e.duration)?e.duration:0}),u()},durationchange:()=>c({duration:Number.isFinite(e.duration)?e.duration:0}),ratechange:()=>{t.isSpeedBoostActive||(S=e.playbackRate),e.defaultPlaybackRate!==e.playbackRate&&(e.defaultPlaybackRate=e.playbackRate),c({playbackRate:e.playbackRate})},volumechange:()=>{c({volume:e.volume,isMuted:e.muted}),J(n.volumeKey,e.volume),J(n.mutedKey,e.muted)},error:()=>c({error:e.error?.message||"Unable to play this source.",isPlaying:!1,isBuffering:!1})};Object.entries(o).forEach(([T,q])=>e.addEventListener(T,q)),e.textTracks.addEventListener("addtrack",u),e.textTracks.addEventListener("removetrack",u),e.textTracks.addEventListener("change",u);const L=()=>e.tagName==="VIDEO"?e:null,K=()=>{const T=le(L());c({isFullscreen:T!==null&&(T===e||T===g.current)})},B=typeof document>"u"?()=>{}:qe(L,K);typeof document<"u"&&K(),M=()=>{Object.entries(o).forEach(([T,q])=>e.removeEventListener(T,q)),B(),e.textTracks.removeEventListener("addtrack",u),e.textTracks.removeEventListener("removetrack",u),e.textTracks.removeEventListener("change",u)}}async function A(){const e=s.current;if(!e)return!1;U=e;const u=w;try{return await e.play(),u===w}catch(o){if(u===w){const L=o instanceof Error&&o.name==="NotAllowedError",K=o instanceof Error&&o.name==="AbortError";c({isPlaying:!1,isBuffering:!1,playBlocked:L,...!L&&!K?{error:o instanceof Error?o.message:"Playback failed."}:{}})}return!1}}function V(){s.current?.pause()}function ee(){s.current?.paused?A():V()}function Q(e){const u=s.current;if(!u||!Number.isFinite(e))return;let o=Math.max(0,e);if(Number.isFinite(u.duration))o=Math.min(u.duration,o);else if(u.seekable.length)for(let L=0;L<u.seekable.length;L++){if(o<=u.seekable.end(L)){o=Math.max(u.seekable.start(L),o);break}L===u.seekable.length-1&&(o=u.seekable.end(L))}u.currentTime=o,d()}function te(e){Q((s.current?.currentTime??r.currentTime)+e)}function G(e){if(!Number.isFinite(e))return;const u=Math.max(0,Math.min(1,e));c({volume:u,isMuted:u===0}),s.current&&(s.current.volume=u,s.current.muted=u===0),J(n.volumeKey,u),J(n.mutedKey,u===0)}function a(){const e=!t.isMuted;!e&&t.volume===0&&G(.5),c({isMuted:e}),s.current&&(s.current.muted=e),J(n.mutedKey,e)}function b(e){if(!Number.isFinite(e)||e<.25||e>4)return;S=e;const u=t.isSpeedBoostActive?2:e;c({playbackRate:u}),s.current&&(s.current.playbackRate=u)}function x(){t.isScrubbing||(v=!!s.current&&!s.current.paused,c({isScrubbing:!0}),V())}function $(){t.isScrubbing&&(c({isScrubbing:!1}),v&&A(),v=!1)}function _(e,u={}){E(),H();const o=s.current,L=++w;if(!o)return()=>{};let K=!1,B=null;const T=()=>!K&&w===L&&s.current===o;o.pause(),o.removeAttribute("src"),o.load(),c({duration:0,isPlaying:!1,isBuffering:!0,isScrubbing:!1,error:null,playBlocked:!1,audioTracks:[],subtitleTracks:[],qualities:[],activeAudioTrack:-1,activeSubtitleTrack:-1,activeQuality:-1}),f({currentTime:0,bufferedEnd:0});const q=()=>{T()&&u.initialTime&&u.initialTime>0&&Q(u.initialTime)};o.addEventListener("loadedmetadata",q,{once:!0});const O=()=>{T()&&(u.onReady?.(),u.autoPlay&&T()&&A())},X=F=>{if(!T())return;const D=F instanceof Error?F:new Error(String(F));c({error:D.message,isPlaying:!1,isBuffering:!1}),u.onError?.(D)},z=()=>{K||(K=!0,o.removeEventListener("loadedmetadata",q),o.removeEventListener("error",ae),B?.destroy(),k===B&&(k=null),B=null,w===L&&w++)},ae=()=>{X(new Error(o.error?.message||"Unable to play this source.")),z()};return o.addEventListener("error",ae),E=z,(async()=>{if(e.hls){const F=await $e();if(!T())return;if(F?.isSupported()){B=new F({enableWorker:!0,startPosition:u.initialTime??-1,...u.hlsConfig}),k=B;const D=B,ge=()=>{T()&&c({audioTracks:D.audioTracks.map((R,I)=>({id:I,label:R.name||R.lang||`Track ${I+1}`,language:R.lang})),...o.querySelector("track")?{}:{subtitleTracks:D.subtitleTracks.map((R,I)=>({id:I,label:R.name||R.lang||`Track ${I+1}`,language:R.lang}))},qualities:D.levels.map((R,I)=>({id:I,label:R.height?`${R.height}p`:`${Math.round(R.bitrate/1e3)}k`})),activeAudioTrack:D.audioTrack,...o.querySelector("track")?{}:{activeSubtitleTrack:D.subtitleTrack},activeQuality:D.currentLevel})};for(const R of[F.Events.MANIFEST_PARSED,F.Events.AUDIO_TRACKS_UPDATED,F.Events.AUDIO_TRACK_SWITCHED,F.Events.SUBTITLE_TRACKS_UPDATED,F.Events.SUBTITLE_TRACK_SWITCH,F.Events.LEVEL_SWITCHED])D.on(R,ge);if(B.on(F.Events.ERROR,(R,I)=>{I.fatal&&T()&&(X(new Error(`Stream failed (${I.details}). Try another source or reload.`)),z())}),B.once(F.Events.MANIFEST_PARSED,O),u.onHls?.(B,F),!T())return;B.loadSource(e.url),B.attachMedia(o);return}if(!De(o))throw new Error("HLS playback is unavailable in this browser.")}T()&&(o.src=e.url,o.load(),O())})().catch(F=>{X(F),z()}),z}return{mediaRef:s,containerRef:g,connect:H,getState:()=>t,getTimeline:()=>r,getHls:()=>k,isActive:()=>U===s.current,subscribe:e=>(l.add(e),()=>{l.delete(e)}),subscribeTimeline:e=>(m.add(e),()=>{m.delete(e)}),play:A,pause:V,togglePlay:ee,seek:Q,seekRelative:te,setVolume:G,toggleMute:a,setPlaybackRate:b,setAudioTrack:e=>{k&&t.audioTracks.some(u=>u.id===e)&&(k.audioTrack=e,c({activeAudioTrack:e}))},setSubtitleTrack:e=>{if(e!==-1&&!t.subtitleTracks.some(o=>o.id===e))return;const u=s.current;u?.querySelector("track")?Array.from(u.textTracks).forEach((o,L)=>{o.mode=L===e?"showing":"disabled"}):k&&(k.subtitleTrack=e),c({activeSubtitleTrack:e})},setQuality:e=>{k&&(e===-1||t.qualities.some(u=>u.id===e))&&(k.currentLevel=e,c({activeQuality:e}))},setSpeedBoost:e=>{const u=e?2:S;c({isSpeedBoostActive:e,playbackRate:u}),s.current&&(s.current.playbackRate=u)},setShowControls:e=>c({showControls:e}),startScrubbing:x,endScrubbing:$,loadSource:_,unload:()=>{const e=s.current;p(e),E(),e&&(e.pause(),e.removeAttribute("src"),e.load()),c({isPlaying:!1,isBuffering:!1,duration:0,error:null}),f({currentTime:0,bufferedEnd:0})},toggleFullscreen:()=>{const e=s.current;Ve(g.current,e?.tagName==="VIDEO"?e:null).catch(u=>c({error:u instanceof Error?u.message:"Fullscreen failed."}))},reset:()=>{c({duration:0,isBuffering:!1,error:null}),f({currentTime:0,bufferedEnd:0})},destroy:()=>{if(P)return;P=!0;const e=h??s.current;p(e),M(),h=null,E(),e?.pause(),e?.removeAttribute("src"),e?.load(),U===e&&(U=null)}}}function W(n){return de(n.subscribe,n.getState)}function ye(n){return de(n.subscribeTimeline,n.getTimeline)}function Ge(n={}){const i=C(n),t=ce(()=>Ue(i.current),[]);return Ee(()=>{t.connect()}),j(()=>()=>t.destroy(),[t]),ce(()=>({engine:t,mediaRef:t.mediaRef}),[t])}function He({children:n,...i}){const t=N(),{isPlaying:r}=W(t);return y("button",{type:"button","aria-label":r?"Pause":"Play",...i,onClick:t.togglePlay,children:n??y(Z,{name:r?"pause":"play"})})}function ze({seconds:n,children:i,...t}){const r=N();return y("button",{type:"button","aria-label":`Seek ${n<0?"back":"forward"} ${Math.abs(n)} seconds`,...t,onClick:()=>r.seekRelative(n),children:i??y(Z,{name:n<0?"replay-10":"forward-10"})})}function Je(n){const i=N(),{isFullscreen:t}=W(i);return y("button",{type:"button","aria-label":t?"Exit Fullscreen":"Fullscreen",...n,onClick:i.toggleFullscreen,children:y(Z,{name:t?"compress":"expand"})})}function Ye({buttonClassName:n,onExpandedChange:i}){const t=N(),{isMuted:r,volume:l}=W(t);return y(Ae,{muted:r,volume:l,volumeIcon:y(Z,{name:r||l===0?"volume-mute":l<.5?"volume-down":"volume-up"}),buttonClassName:n,onToggleMute:t.toggleMute,onVolumeChange:t.setVolume,onExpandedChange:i})}function Ze({className:n}){const i=N(),{volume:t,isMuted:r}=W(i);return y("input",{type:"range",min:0,max:1,step:.01,value:r?0:t,onChange:l=>i.setVolume(Number(l.currentTarget.value)),className:n,style:{"--volume-percent":`${(r?0:t)*100}%`},"aria-label":"Volume"})}function et({classes:n,timeLabelRef:i,children:t}){const r=N(),{duration:l,isScrubbing:m}=W(r);return y(Ce,{classes:n,videoRef:r.mediaRef,duration:l,formatTime:me,isScrubbing:m,onSeek:s=>r.seek(s*l),onScrubStart:r.startScrubbing,onScrubMove:s=>r.seek(s*l),onScrubEnd:r.endScrubbing,timeLabelRef:i,children:t})}function tt({className:n}){const i=N(),{currentTime:t,bufferedEnd:r}=ye(i),{duration:l}=W(i),m=l?Math.min(100,t/l*100):0,s=l?Math.min(100,Math.max(m,r/l*100)):0;return y("input",{type:"range",min:0,max:l,step:.1,value:Math.min(t,l),onChange:g=>i.seek(Number(g.currentTarget.value)),onPointerDown:g=>{g.currentTarget.setPointerCapture(g.pointerId),i.startScrubbing()},onPointerUp:i.endScrubbing,onPointerCancel:i.endScrubbing,onLostPointerCapture:i.endScrubbing,className:n,style:{"--played-percent":`${m}%`,"--buffered-percent":`${s}%`},"aria-label":"Seek"})}function nt({className:n,durationOnly:i=!1}){const t=N(),{currentTime:r}=ye(t),{duration:l}=W(t);return y("span",{className:n,children:me(i?l:r)})}function rt(){const n=N(),{error:i,playBlocked:t,isBuffering:r}=W(n);return i?y("div",{role:"alert",children:i}):t?y(He,{children:"Tap to play"}):r?y("div",{role:"status","aria-label":"Buffering",children:"Loading…"}):null}const Ke='input, textarea, button, select, a, [role="button"], [role="slider"], [contenteditable]:not([contenteditable="false"]), [data-player-ui="true"], [data-speed-boost-ignore="true"]';function it(n,i,t=!0){const r=C(i);r.current=i,j(()=>{if(!t)return;let l=!1,m=!1,s=!1,g,h,M=!1;const E=()=>{const f=m||s;f!==M&&(M=f,n.setSpeedBoost(f))},w=f=>f instanceof Element&&!!f.closest(Ke),v=f=>{if(!n.isActive()||!n.mediaRef.current||f.defaultPrevented||f.ctrlKey||f.metaKey||f.altKey||w(f.target))return;if(f.code==="Space"){if(f.preventDefault(),l)return;l=!0,g=setTimeout(()=>{g=void 0,m=!0,E()},180),r.current();return}const p=f.key.toLowerCase();["k","j","l","arrowleft","arrowright","arrowup","arrowdown","m","f"].includes(p)&&(f.preventDefault(),!(f.repeat&&["k","m","f"].includes(p))&&(p==="k"&&n.togglePlay(),(p==="j"||p==="arrowleft")&&n.seekRelative(-10),(p==="l"||p==="arrowright")&&n.seekRelative(10),p==="arrowup"&&n.setVolume(n.getState().volume+.1),p==="arrowdown"&&n.setVolume(n.getState().volume-.1),p==="m"&&n.toggleMute(),p==="f"&&n.toggleFullscreen(),r.current()))},S=f=>{f.code!=="Space"||!l||(f.preventDefault(),l=!1,clearTimeout(g),g=void 0,m?(m=!1,E()):n.togglePlay(),r.current())},P=f=>{const p=f.target;f.button!==0||!(p instanceof Element)||w(p)||!n.containerRef.current?.contains(p)||(clearTimeout(h),h=setTimeout(()=>{h=void 0,s=!0,E()},180))},k=()=>{clearTimeout(h),h=void 0,s=!1,E()},c=()=>{clearTimeout(g),g=void 0,l=!1,m=!1,k()};return document.addEventListener("keydown",v),document.addEventListener("keyup",S),document.addEventListener("pointerdown",P),document.addEventListener("pointerup",k),document.addEventListener("pointercancel",k),window.addEventListener("blur",c),()=>{document.removeEventListener("keydown",v),document.removeEventListener("keyup",S),document.removeEventListener("pointerdown",P),document.removeEventListener("pointerup",k),document.removeEventListener("pointercancel",k),window.removeEventListener("blur",c),c()}},[n,t])}function ut({engine:n,children:i}){return y(pe.Provider,{value:n,children:i})}export{Je as F,et as P,ze as S,Ze as V,He as a,Ye as b,Xe as c,ut as d,N as e,W as f,ye as g,it as h,nt as i,tt as j,rt as k,Qe as l,_e as m,be as n,oe as s,Ge as u};
@@ -1 +1 @@
1
- import{g as w,d as ne,T as te,u as e}from"./vendor-core-DfaOB3Rn.js";import{I as o}from"./vendor-icons-DrybRNxP.js";import{S as ae,O as A,a as se,A as le,b as ie}from"./OptionListMenu-CGazCg0C.js";import{u as re}from"./index-BP1z44Uk.js";import"./usePlaybackEnd-DmvZ__Ut.js";import"./PlayerProvider-pi0at080.js";import"./vendor-query-BBT5_sHx.js";import"./playbackCompletion-IPHm9fp5.js";const ce="_settingsPanel_1dymm_1",oe="_header_1dymm_33",me="_backBtn_1dymm_56",de="_contentWrapper_1dymm_76",ue="_menuContent_1dymm_82",he="_menuItem_1dymm_89",pe="_selected_1dymm_114",be="_currentValue_1dymm_134",ye="_menuNote_1dymm_141",ge="_menuError_1dymm_150",n={settingsPanel:ce,header:oe,backBtn:me,contentWrapper:de,menuContent:ue,menuItem:he,selected:pe,currentValue:be,menuNote:ye,menuError:ge},ve=($,P)=>{const{isOpen:y,onClose:ke,videoSources:Ce,currentSource:C,currentLink:N,onSourceChange:V,subtitles:O,activeSubtitleTrack:g,onSubtitleChange:E,subtitleSettings:z,onSubtitleSettingsChange:T,useNativeControls:v,onNativeControlsToggle:U,anime4kEnabled:u,onAnime4kToggle:B,anime4kSupported:f,anime4kProfile:r,onAnime4kProfileChange:h,anime4kInitializing:L,anime4kError:S,videoDelayEnabled:_,onVideoDelayToggle:M,videoDelayMs:I,onVideoDelayChange:D,onCalibrateAvSync:x,isAutoSkipEnabled:m,onAutoSkipChange:W,isAutoplayEnabled:d,onAutoplayChange:G,fallbackChoice:p,onFallbackChoiceChange:j,isTheaterMode:q,ambientSettings:b,onAmbientChange:k}=$,{lowEndMode:F}=re(),[a,i]=ne("main");w.useEffect(()=>{if(!y){const t=setTimeout(()=>i("main"),300);return()=>clearTimeout(t)}},[y]);const Q=()=>e("div",{className:n.menuContent,children:[e("button",{className:n.menuItem,onClick:()=>i("quality"),children:[e("span",{children:"Quality"}),e("span",{className:n.currentValue,children:N?.resolutionStr||"Auto"})]}),e("button",{className:n.menuItem,onClick:()=>i("subtitles"),children:[e("span",{children:"Subtitles"}),e("span",{className:n.currentValue,children:g||"Off"})]}),e("button",{className:n.menuItem,onClick:()=>i("subtitle-style"),children:e("span",{children:"Subtitle Style"})}),F&&e("button",{className:`${n.menuItem} ${v?n.selected:""}`,onClick:()=>{const t=!v;U(t),localStorage.setItem("playerUseNativeControls",t.toString())},children:[e("span",{children:"Native Controls"}),v&&e(o,{name:"check",size:12})]}),f&&e("button",{className:`${n.menuItem} ${u?n.selected:""}`,onClick:()=>{B(!u)},children:[e("span",{children:"Anime4K Upscaler"}),u&&e(o,{name:"check",size:12})]}),f&&u&&e("button",{className:n.menuItem,onClick:()=>i("upscaler"),children:e("span",{children:"Upscaler Settings"})}),e("button",{className:n.menuItem,onClick:()=>i("av-sync"),children:[e("span",{children:"A/V Sync"}),e("span",{className:n.currentValue,children:_?`${I}ms`:"Off"})]}),e("button",{className:n.menuItem,onClick:()=>i("playback"),children:[e("span",{children:"Playback"}),e("span",{className:n.currentValue,children:[m?"Auto-skip On":null,d?"Autoplay On":null].filter(Boolean).join(" • ")||"Off"})]}),q&&b&&k&&e("button",{className:n.menuItem,onClick:()=>i("ambient"),children:[e("span",{children:"Ambient Light"}),e("span",{className:n.currentValue,children:b.enabled?"On":"Off"})]})]}),R=()=>{const t=C?.links.sort((s,c)=>(parseInt(c.resolutionStr)||0)-(parseInt(s.resolutionStr)||0))||[];return e("div",{className:n.menuContent,children:e(A,{classes:{item:n.menuItem,active:n.selected},options:t.map(s=>({key:s.resolutionStr,label:s.resolutionStr,selected:N?.resolutionStr===s.resolutionStr})),onSelect:s=>{const c=t.find(l=>l.resolutionStr===s);c&&V(C,c)}})})},H=()=>e("div",{className:n.menuContent,children:e(A,{classes:{item:n.menuItem,active:n.selected},options:[{key:"off",label:"Off",selected:g==="off"},...O.map(t=>({key:t.label||t.lang,label:t.label,selected:g===(t.label||t.lang)}))],onSelect:t=>E(t)})}),K=()=>e("div",{className:n.menuContent,children:e(se,{classes:{item:n.menuItem,active:n.selected},values:z,onChange:T})}),J=te(()=>{try{const s=navigator.userAgentData?.brands?.map(l=>l.brand.toLowerCase())??[];if(s.length>0)return s.some(l=>l.includes("chromium")||l.includes("chrome")||l.includes("edge")||l.includes("opera")||l.includes("brave")||l.includes("vivaldi"));const c=navigator.userAgent.toLowerCase();return c.includes("chrome")||c.includes("chromium")||c.includes("edg")}catch{return!0}},[]),X=()=>e("div",{className:n.menuContent,children:[L&&e("div",{className:n.menuNote,role:"status",children:"Preparing GPU, this can take a few seconds…"}),S&&e("div",{className:n.menuError,role:"alert",children:["Upscaler failed: ",S]}),!J&&e("div",{className:n.menuNote,children:"Upscaling performs best in Chrome-based browsers."}),e("button",{className:`${n.menuItem} ${r==="low"?n.selected:""}`,onClick:()=>h("low"),children:[e("div",{children:[e("div",{children:"Low"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Lightest, best for weaker GPUs"})]}),r==="low"&&e(o,{name:"check",size:12})]}),e("button",{className:`${n.menuItem} ${r==="balanced"?n.selected:""}`,onClick:()=>h("balanced"),children:[e("div",{children:[e("div",{children:"Balanced"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Source + display aware"})]}),r==="balanced"&&e(o,{name:"check",size:12})]}),e("button",{className:`${n.menuItem} ${r==="high"?n.selected:""}`,onClick:()=>h("high"),children:[e("div",{children:[e("div",{children:"High"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Aggressive, needs strong GPU"})]}),r==="high"&&e(o,{name:"check",size:12})]}),e("button",{className:`${n.menuItem} ${r==="denoise"?n.selected:""}`,onClick:()=>h("denoise"),children:[e("div",{children:[e("div",{children:"Denoise"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Denoise + upscale noisy, compressed sources"})]}),r==="denoise"&&e(o,{name:"check",size:12})]})]}),Y=()=>e("div",{className:n.menuContent,children:[e("button",{type:"button",className:`${n.menuItem} ${m?n.selected:""}`,onClick:()=>W(!m),"aria-pressed":m,children:[e("span",{children:"Auto-skip openings and endings"}),e("span",{className:n.currentValue,children:m?"On":"Off"})]}),e("div",{className:n.menuNote,children:"Automatically jump past opening, ending and recap segments when detected."}),e("button",{type:"button",className:`${n.menuItem} ${d?n.selected:""}`,onClick:()=>G(!d),"aria-pressed":d,children:[e("span",{children:"Autoplay next episode"}),e("span",{className:n.currentValue,children:d?"On":"Off"})]}),e("div",{className:n.menuNote,children:"Automatically start the next episode when this one ends."}),e("button",{type:"button",className:n.menuItem,onClick:()=>j(p==="ask"?"iframe":p==="iframe"?"retry":"ask"),children:[e("span",{children:"Failed direct stream"}),e("span",{className:n.currentValue,children:p==="iframe"?"Use iframe":p==="retry"?"Try provider":"Ask me"})]}),e("div",{className:n.menuNote,children:"When a direct stream fails: ask each time, go straight to the embedded player (may show ads), or automatically try another provider."})]}),Z=()=>e("div",{className:n.menuContent,children:e(le,{classes:{item:n.menuItem,active:n.selected,note:n.menuNote},enabled:_,delayMs:I,onToggle:M,onDelayChange:D,onCalibrate:x})}),ee=()=>b&&k?e("div",{className:n.menuContent,children:e(ie,{classes:{item:n.menuItem,active:n.selected,note:n.menuNote},values:b,onChange:k})}):null;return y?e(ae,{classes:{panel:n.settingsPanel,header:n.header,backBtn:n.backBtn,title:"",content:n.contentWrapper},title:a==="main"?"Settings":a==="ambient"?"Ambient Light":a.charAt(0).toUpperCase()+a.slice(1).replace("-"," "),titleTag:"h3",showBack:a!=="main",onBack:()=>i("main"),panelRef:P,onPanelClick:t=>t.stopPropagation(),children:[a==="main"&&Q(),a==="quality"&&R(),a==="subtitles"&&H(),a==="subtitle-style"&&K(),a==="upscaler"&&X(),a==="av-sync"&&Z(),a==="playback"&&Y(),a==="ambient"&&ee()]}):null},Pe=w.forwardRef(ve);export{Pe as default};
1
+ import{g as w,d as ne,T as te,u as e}from"./vendor-core-DfaOB3Rn.js";import{I as o}from"./vendor-icons-DrybRNxP.js";import{S as ae,O as A,a as se,A as le,b as ie}from"./OptionListMenu-CRaHF9k4.js";import{u as re}from"./index-vb4WPdcb.js";import"./usePlaybackEnd-C5EyqR1L.js";import"./PlayerProvider-D02-hqdz.js";import"./vendor-query-BBT5_sHx.js";import"./playbackCompletion-IPHm9fp5.js";const ce="_settingsPanel_1dymm_1",oe="_header_1dymm_33",me="_backBtn_1dymm_56",de="_contentWrapper_1dymm_76",ue="_menuContent_1dymm_82",he="_menuItem_1dymm_89",pe="_selected_1dymm_114",be="_currentValue_1dymm_134",ye="_menuNote_1dymm_141",ge="_menuError_1dymm_150",n={settingsPanel:ce,header:oe,backBtn:me,contentWrapper:de,menuContent:ue,menuItem:he,selected:pe,currentValue:be,menuNote:ye,menuError:ge},ve=($,P)=>{const{isOpen:y,onClose:ke,videoSources:Ce,currentSource:C,currentLink:N,onSourceChange:V,subtitles:O,activeSubtitleTrack:g,onSubtitleChange:E,subtitleSettings:z,onSubtitleSettingsChange:T,useNativeControls:v,onNativeControlsToggle:U,anime4kEnabled:u,onAnime4kToggle:B,anime4kSupported:f,anime4kProfile:r,onAnime4kProfileChange:h,anime4kInitializing:L,anime4kError:S,videoDelayEnabled:_,onVideoDelayToggle:M,videoDelayMs:I,onVideoDelayChange:D,onCalibrateAvSync:x,isAutoSkipEnabled:m,onAutoSkipChange:W,isAutoplayEnabled:d,onAutoplayChange:G,fallbackChoice:p,onFallbackChoiceChange:j,isTheaterMode:q,ambientSettings:b,onAmbientChange:k}=$,{lowEndMode:F}=re(),[a,i]=ne("main");w.useEffect(()=>{if(!y){const t=setTimeout(()=>i("main"),300);return()=>clearTimeout(t)}},[y]);const Q=()=>e("div",{className:n.menuContent,children:[e("button",{className:n.menuItem,onClick:()=>i("quality"),children:[e("span",{children:"Quality"}),e("span",{className:n.currentValue,children:N?.resolutionStr||"Auto"})]}),e("button",{className:n.menuItem,onClick:()=>i("subtitles"),children:[e("span",{children:"Subtitles"}),e("span",{className:n.currentValue,children:g||"Off"})]}),e("button",{className:n.menuItem,onClick:()=>i("subtitle-style"),children:e("span",{children:"Subtitle Style"})}),F&&e("button",{className:`${n.menuItem} ${v?n.selected:""}`,onClick:()=>{const t=!v;U(t),localStorage.setItem("playerUseNativeControls",t.toString())},children:[e("span",{children:"Native Controls"}),v&&e(o,{name:"check",size:12})]}),f&&e("button",{className:`${n.menuItem} ${u?n.selected:""}`,onClick:()=>{B(!u)},children:[e("span",{children:"Anime4K Upscaler"}),u&&e(o,{name:"check",size:12})]}),f&&u&&e("button",{className:n.menuItem,onClick:()=>i("upscaler"),children:e("span",{children:"Upscaler Settings"})}),e("button",{className:n.menuItem,onClick:()=>i("av-sync"),children:[e("span",{children:"A/V Sync"}),e("span",{className:n.currentValue,children:_?`${I}ms`:"Off"})]}),e("button",{className:n.menuItem,onClick:()=>i("playback"),children:[e("span",{children:"Playback"}),e("span",{className:n.currentValue,children:[m?"Auto-skip On":null,d?"Autoplay On":null].filter(Boolean).join(" • ")||"Off"})]}),q&&b&&k&&e("button",{className:n.menuItem,onClick:()=>i("ambient"),children:[e("span",{children:"Ambient Light"}),e("span",{className:n.currentValue,children:b.enabled?"On":"Off"})]})]}),R=()=>{const t=C?.links.sort((s,c)=>(parseInt(c.resolutionStr)||0)-(parseInt(s.resolutionStr)||0))||[];return e("div",{className:n.menuContent,children:e(A,{classes:{item:n.menuItem,active:n.selected},options:t.map(s=>({key:s.resolutionStr,label:s.resolutionStr,selected:N?.resolutionStr===s.resolutionStr})),onSelect:s=>{const c=t.find(l=>l.resolutionStr===s);c&&V(C,c)}})})},H=()=>e("div",{className:n.menuContent,children:e(A,{classes:{item:n.menuItem,active:n.selected},options:[{key:"off",label:"Off",selected:g==="off"},...O.map(t=>({key:t.label||t.lang,label:t.label,selected:g===(t.label||t.lang)}))],onSelect:t=>E(t)})}),K=()=>e("div",{className:n.menuContent,children:e(se,{classes:{item:n.menuItem,active:n.selected},values:z,onChange:T})}),J=te(()=>{try{const s=navigator.userAgentData?.brands?.map(l=>l.brand.toLowerCase())??[];if(s.length>0)return s.some(l=>l.includes("chromium")||l.includes("chrome")||l.includes("edge")||l.includes("opera")||l.includes("brave")||l.includes("vivaldi"));const c=navigator.userAgent.toLowerCase();return c.includes("chrome")||c.includes("chromium")||c.includes("edg")}catch{return!0}},[]),X=()=>e("div",{className:n.menuContent,children:[L&&e("div",{className:n.menuNote,role:"status",children:"Preparing GPU, this can take a few seconds…"}),S&&e("div",{className:n.menuError,role:"alert",children:["Upscaler failed: ",S]}),!J&&e("div",{className:n.menuNote,children:"Upscaling performs best in Chrome-based browsers."}),e("button",{className:`${n.menuItem} ${r==="low"?n.selected:""}`,onClick:()=>h("low"),children:[e("div",{children:[e("div",{children:"Low"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Lightest, best for weaker GPUs"})]}),r==="low"&&e(o,{name:"check",size:12})]}),e("button",{className:`${n.menuItem} ${r==="balanced"?n.selected:""}`,onClick:()=>h("balanced"),children:[e("div",{children:[e("div",{children:"Balanced"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Source + display aware"})]}),r==="balanced"&&e(o,{name:"check",size:12})]}),e("button",{className:`${n.menuItem} ${r==="high"?n.selected:""}`,onClick:()=>h("high"),children:[e("div",{children:[e("div",{children:"High"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Aggressive, needs strong GPU"})]}),r==="high"&&e(o,{name:"check",size:12})]}),e("button",{className:`${n.menuItem} ${r==="denoise"?n.selected:""}`,onClick:()=>h("denoise"),children:[e("div",{children:[e("div",{children:"Denoise"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Denoise + upscale noisy, compressed sources"})]}),r==="denoise"&&e(o,{name:"check",size:12})]})]}),Y=()=>e("div",{className:n.menuContent,children:[e("button",{type:"button",className:`${n.menuItem} ${m?n.selected:""}`,onClick:()=>W(!m),"aria-pressed":m,children:[e("span",{children:"Auto-skip openings and endings"}),e("span",{className:n.currentValue,children:m?"On":"Off"})]}),e("div",{className:n.menuNote,children:"Automatically jump past opening, ending and recap segments when detected."}),e("button",{type:"button",className:`${n.menuItem} ${d?n.selected:""}`,onClick:()=>G(!d),"aria-pressed":d,children:[e("span",{children:"Autoplay next episode"}),e("span",{className:n.currentValue,children:d?"On":"Off"})]}),e("div",{className:n.menuNote,children:"Automatically start the next episode when this one ends."}),e("button",{type:"button",className:n.menuItem,onClick:()=>j(p==="ask"?"iframe":p==="iframe"?"retry":"ask"),children:[e("span",{children:"Failed direct stream"}),e("span",{className:n.currentValue,children:p==="iframe"?"Use iframe":p==="retry"?"Try provider":"Ask me"})]}),e("div",{className:n.menuNote,children:"When a direct stream fails: ask each time, go straight to the embedded player (may show ads), or automatically try another provider."})]}),Z=()=>e("div",{className:n.menuContent,children:e(le,{classes:{item:n.menuItem,active:n.selected,note:n.menuNote},enabled:_,delayMs:I,onToggle:M,onDelayChange:D,onCalibrate:x})}),ee=()=>b&&k?e("div",{className:n.menuContent,children:e(ie,{classes:{item:n.menuItem,active:n.selected,note:n.menuNote},values:b,onChange:k})}):null;return y?e(ae,{classes:{panel:n.settingsPanel,header:n.header,backBtn:n.backBtn,title:"",content:n.contentWrapper},title:a==="main"?"Settings":a==="ambient"?"Ambient Light":a.charAt(0).toUpperCase()+a.slice(1).replace("-"," "),titleTag:"h3",showBack:a!=="main",onBack:()=>i("main"),panelRef:P,onPanelClick:t=>t.stopPropagation(),children:[a==="main"&&Q(),a==="quality"&&R(),a==="subtitles"&&H(),a==="subtitle-style"&&K(),a==="upscaler"&&X(),a==="av-sync"&&Z(),a==="playback"&&Y(),a==="ambient"&&ee()]}):null},Pe=w.forwardRef(ve);export{Pe as default};
@@ -1 +1 @@
1
- import{b as T}from"./vendor-query-BBT5_sHx.js";import{q as z,t as A,m as J,a1 as W,a2 as X,a3 as Y}from"./index-BP1z44Uk.js";import{d as Z,T as R,q as r,u as t,$ as w,S as ee}from"./vendor-core-DfaOB3Rn.js";import{a as te,c as ne,d as se,b as ae,o as oe,f as ie,s as re}from"./vendor-ui-3qrARCPr.js";import{I as u}from"./vendor-icons-DrybRNxP.js";function Ee(n){return T({queryKey:[z.showMeta,n],queryFn:async()=>n?A.data.showMeta.query({id:n}):{},enabled:!!n,staleTime:3e4})}const ue="_trigger_1vova_6",me="_triggerBtn_1vova_11",le="_chevron_1vova_25",ce="_menu_1vova_34",pe="_menuTitle_1vova_51",de="_menuItem_1vova_60",ge="_removeItem_1vova_91",fe="_menuEmpty_1vova_99",o={trigger:ue,triggerBtn:me,chevron:le,menu:ce,menuTitle:pe,menuItem:de,removeItem:ge,menuEmpty:fe},ve=8,Pe=({showId:n,showName:v,showThumbnail:h,nativeName:y,englishName:_,showType:b,className:D="",activeClassName:F="",align:M="right",onMenuOpenChange:d})=>{const{data:q=[]}=J(),E=W(),P=X(),[m,f]=Z(!1),{refs:Q,floatingStyles:x,context:C}=te({open:m,onOpenChange:e=>{e||(f(!1),d?.(!1))},placement:M==="left"?"bottom-start":"bottom-end",middleware:[oe(ve),ie({padding:8}),re({padding:8})],whileElementsMounted:ae}),I=ne(C,{outsidePress:!0,escapeKey:!0,referencePress:!1}),{getReferenceProps:S,getFloatingProps:K}=se([I]),l=R(()=>q.filter(e=>e.showId===n),[q,n]),{data:L}=T({queryKey:[z.suggestedEpisode,n],queryFn:()=>A.watchlist.queueSuggested.query({showId:n}),enabled:!!n}),{data:$,isFetching:N}=Y(n,m),s=R(()=>$?.episodes||[],[$]),k=r(()=>{f(!0),d?.(!0)},[d]),c=r(()=>{f(!1),d?.(!1)},[d]),p=l.length>0,a=s.length>0,g=L?.episodeNumber,i=r(e=>{!n||e.length===0||(E.mutate({showId:n,episodeNumbers:e,showName:v,showThumbnail:h,nativeName:y,englishName:_,type:b}),c())},[n,v,h,y,_,b,E,c]),O=r(()=>{!n||l.length===0||(P.mutate({showId:n,episodeNumbers:l.map(e=>e.episodeNumber)}),c())},[n,l,P,c]),U=r(()=>{a?i([s[0]]):g&&i([String(g)])},[a,s,g,i]),G=r(()=>{a&&i(s.slice(0,3))},[a,s,i]),V=r(()=>{a&&i([...s])},[a,s,i]),B=s[0],j=s[Math.min(2,s.length-1)],H=t("div",{className:o.trigger,ref:Q.setReference,children:t("span",{className:`${o.triggerBtn} ${D} ${p?F:""}`,role:"button",tabIndex:0,"aria-haspopup":"menu","aria-expanded":m,"aria-label":p?"Queued":"Queue",...S(),onClick:e=>{e.preventDefault(),e.stopPropagation(),m?c():k()},onKeyDown:e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),e.stopPropagation(),m?c():k())},children:[p?t(u,{name:"check",size:14}):t(u,{name:"plus",size:14}),p?"Queued":"Queue",t(u,{name:"chevron-down",size:10,className:o.chevron})]})});return t(ee,{children:[H,m&&w(t("div",{ref:Q.setFloating,className:o.menu,style:x,role:"menu",...K(),onMouseDown:e=>e.stopPropagation(),onClick:e=>{e.preventDefault(),e.stopPropagation()},children:[t("div",{className:o.menuTitle,children:"Queue episodes"}),t("button",{className:o.menuItem,role:"menuitem",type:"button",disabled:!a&&!g,onClick:e=>{e.stopPropagation(),U()},children:[t(u,{name:"plus",size:11}),t("span",{children:a?`+1 — EP ${B}`:`+1 — EP ${g||"?"}`})]}),t("button",{className:o.menuItem,role:"menuitem",type:"button",disabled:!a,onClick:e=>{e.stopPropagation(),G()},children:[t(u,{name:"plus",size:11}),t("span",{children:a?`+3 — EP ${B}${s.length>1?`-${j}`:""}`:"+3"})]}),t("button",{className:o.menuItem,role:"menuitem",type:"button",disabled:!a,onClick:e=>{e.stopPropagation(),V()},children:[t(u,{name:"plus",size:11}),t("span",{children:["All Remaining",N?"":` (${Math.max(s.length,0)})`]})]}),!N&&s.length===0&&t("div",{className:o.menuEmpty,children:p?"All episodes are already queued":"No remaining unwatched episodes"}),p&&t("button",{className:`${o.menuItem} ${o.removeItem}`,role:"menuitem",type:"button",onClick:e=>{e.stopPropagation(),O()},children:[t(u,{name:"times",size:11}),t("span",{children:["Remove from Queue",l.length>0?` (${l.length})`:""]})]})]}),document.body)]})};export{Pe as Q,Ee as u};
1
+ import{b as T}from"./vendor-query-BBT5_sHx.js";import{q as z,t as A,m as J,a1 as W,a2 as X,a3 as Y}from"./index-vb4WPdcb.js";import{d as Z,T as R,q as r,u as t,$ as w,S as ee}from"./vendor-core-DfaOB3Rn.js";import{a as te,c as ne,d as se,b as ae,o as oe,f as ie,s as re}from"./vendor-ui-3qrARCPr.js";import{I as u}from"./vendor-icons-DrybRNxP.js";function Ee(n){return T({queryKey:[z.showMeta,n],queryFn:async()=>n?A.data.showMeta.query({id:n}):{},enabled:!!n,staleTime:3e4})}const ue="_trigger_1vova_6",me="_triggerBtn_1vova_11",le="_chevron_1vova_25",ce="_menu_1vova_34",pe="_menuTitle_1vova_51",de="_menuItem_1vova_60",ge="_removeItem_1vova_91",fe="_menuEmpty_1vova_99",o={trigger:ue,triggerBtn:me,chevron:le,menu:ce,menuTitle:pe,menuItem:de,removeItem:ge,menuEmpty:fe},ve=8,Pe=({showId:n,showName:v,showThumbnail:h,nativeName:y,englishName:_,showType:b,className:D="",activeClassName:F="",align:M="right",onMenuOpenChange:d})=>{const{data:q=[]}=J(),E=W(),P=X(),[m,f]=Z(!1),{refs:Q,floatingStyles:x,context:C}=te({open:m,onOpenChange:e=>{e||(f(!1),d?.(!1))},placement:M==="left"?"bottom-start":"bottom-end",middleware:[oe(ve),ie({padding:8}),re({padding:8})],whileElementsMounted:ae}),I=ne(C,{outsidePress:!0,escapeKey:!0,referencePress:!1}),{getReferenceProps:S,getFloatingProps:K}=se([I]),l=R(()=>q.filter(e=>e.showId===n),[q,n]),{data:L}=T({queryKey:[z.suggestedEpisode,n],queryFn:()=>A.watchlist.queueSuggested.query({showId:n}),enabled:!!n}),{data:$,isFetching:N}=Y(n,m),s=R(()=>$?.episodes||[],[$]),k=r(()=>{f(!0),d?.(!0)},[d]),c=r(()=>{f(!1),d?.(!1)},[d]),p=l.length>0,a=s.length>0,g=L?.episodeNumber,i=r(e=>{!n||e.length===0||(E.mutate({showId:n,episodeNumbers:e,showName:v,showThumbnail:h,nativeName:y,englishName:_,type:b}),c())},[n,v,h,y,_,b,E,c]),O=r(()=>{!n||l.length===0||(P.mutate({showId:n,episodeNumbers:l.map(e=>e.episodeNumber)}),c())},[n,l,P,c]),U=r(()=>{a?i([s[0]]):g&&i([String(g)])},[a,s,g,i]),G=r(()=>{a&&i(s.slice(0,3))},[a,s,i]),V=r(()=>{a&&i([...s])},[a,s,i]),B=s[0],j=s[Math.min(2,s.length-1)],H=t("div",{className:o.trigger,ref:Q.setReference,children:t("span",{className:`${o.triggerBtn} ${D} ${p?F:""}`,role:"button",tabIndex:0,"aria-haspopup":"menu","aria-expanded":m,"aria-label":p?"Queued":"Queue",...S(),onClick:e=>{e.preventDefault(),e.stopPropagation(),m?c():k()},onKeyDown:e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),e.stopPropagation(),m?c():k())},children:[p?t(u,{name:"check",size:14}):t(u,{name:"plus",size:14}),p?"Queued":"Queue",t(u,{name:"chevron-down",size:10,className:o.chevron})]})});return t(ee,{children:[H,m&&w(t("div",{ref:Q.setFloating,className:o.menu,style:x,role:"menu",...K(),onMouseDown:e=>e.stopPropagation(),onClick:e=>{e.preventDefault(),e.stopPropagation()},children:[t("div",{className:o.menuTitle,children:"Queue episodes"}),t("button",{className:o.menuItem,role:"menuitem",type:"button",disabled:!a&&!g,onClick:e=>{e.stopPropagation(),U()},children:[t(u,{name:"plus",size:11}),t("span",{children:a?`+1 — EP ${B}`:`+1 — EP ${g||"?"}`})]}),t("button",{className:o.menuItem,role:"menuitem",type:"button",disabled:!a,onClick:e=>{e.stopPropagation(),G()},children:[t(u,{name:"plus",size:11}),t("span",{children:a?`+3 — EP ${B}${s.length>1?`-${j}`:""}`:"+3"})]}),t("button",{className:o.menuItem,role:"menuitem",type:"button",disabled:!a,onClick:e=>{e.stopPropagation(),V()},children:[t(u,{name:"plus",size:11}),t("span",{children:["All Remaining",N?"":` (${Math.max(s.length,0)})`]})]}),!N&&s.length===0&&t("div",{className:o.menuEmpty,children:p?"All episodes are already queued":"No remaining unwatched episodes"}),p&&t("button",{className:`${o.menuItem} ${o.removeItem}`,role:"menuitem",type:"button",onClick:e=>{e.stopPropagation(),O()},children:[t(u,{name:"times",size:11}),t("span",{children:["Remove from Queue",l.length>0?` (${l.length})`:""]})]})]}),document.body)]})};export{Pe as Q,Ee as u};
@@ -1 +1 @@
1
- import{g as s,u as n,a as X}from"./vendor-core-DfaOB3Rn.js";import{I as y}from"./vendor-icons-DrybRNxP.js";import{d as Y,f as L}from"./index-BP1z44Uk.js";const z="_section_rx9ev_1",F="_header_rx9ev_10",O="_headerToggle_rx9ev_20",j="_headerActions_rx9ev_34",J="_title_rx9ev_40",K="_badge_rx9ev_50",V="_clearBtn_rx9ev_65",W="_nextBtn_rx9ev_83",Z="_list_rx9ev_101",ee="_item_rx9ev_114",ne="_active_rx9ev_134",te="_dragging_rx9ev_142",re="_dragHandle_rx9ev_149",ae="_thumbnail_rx9ev_167",oe="_meta_rx9ev_175",ce="_name_rx9ev_182",se="_episode_rx9ev_204",ie="_iconBtn_rx9ev_210",le="_metaGap_rx9ev_256",r={section:z,header:F,headerToggle:O,headerActions:j,title:J,badge:K,clearBtn:V,nextBtn:W,list:Z,item:ee,active:ne,dragging:te,dragHandle:re,thumbnail:ae,meta:oe,name:ce,episode:se,iconBtn:ie,metaGap:le},ue=({item:a,isActive:x,index:p,onRemove:P,onTouchPointerDown:D,onTouchPointerMove:B,onTouchPointerUp:T,onTouchPointerCancel:w,shouldIgnoreClick:_,onDragStart:R,onDragEnter:f,onDragEnd:c,isDragging:b})=>{const o=X(),{titlePreference:i}=Y(),l=a[i]||a.name||"Unknown show";return n("div",{"data-queue-index":p,className:`${r.item} ${x?r.active:""} ${b?r.dragging:""}`,draggable:!0,onDragStart:R,onDragEnter:f,onDragOver:u=>u.preventDefault(),onDragEnd:c,onPointerDown:u=>D(p,u),onPointerMove:B,onPointerUp:T,onPointerCancel:w,children:[n("button",{className:r.dragHandle,type:"button","aria-label":"Drag queue item",children:n(y,{name:"bars"})}),n("img",{className:r.thumbnail,src:L(a.thumbnail||"",72,96),alt:l,loading:"lazy",decoding:"async",onError:u=>{u.currentTarget.src="/placeholder.svg"}}),n("div",{className:r.meta,children:[n("button",{className:r.name,type:"button",onClick:()=>{_()||o(`/watch/${a.showId}/${a.episodeNumber}`)},children:l}),n("div",{className:r.episode,children:["Episode ",a.episodeNumber]})]}),n("button",{className:r.iconBtn,type:"button",onClick:()=>{_()||P(a)},"aria-label":`Remove ${l} episode ${a.episodeNumber} from queue`,children:n(y,{name:"times"})})]})},ge=({title:a="Queue",eyebrow:x,items:p,currentShowId:P,currentEpisode:D,onRemove:B,onReorder:T,onNextQueue:w,onClear:_,showClearAll:R=!1,defaultExpanded:f=!0})=>{const[c,b]=s.useState([]),[o,i]=s.useState(null),[l,u]=s.useState(f),N=s.useRef(null),v=s.useRef(null),d=s.useRef(null),h=s.useRef(!1),C=s.useRef(!1);s.useEffect(()=>{b(p)},[p]),s.useEffect(()=>{u(f)},[f]);const $=e=>{i(e)},k=e=>{if(o===null||o===e)return;const t=[...c],m=t[o];t.splice(o,1),t.splice(e,0,m),i(e),b(t)},A=()=>{o!==null&&T(c.map(e=>({id:e.id,showId:e.showId,episodeNumber:e.episodeNumber}))),i(null)},E=(e=!1)=>{d.current!==null&&(window.clearTimeout(d.current),d.current=null),e&&h.current&&(T(c.map(t=>({id:t.id,showId:t.showId,episodeNumber:t.episodeNumber}))),C.current=!0,window.setTimeout(()=>{C.current=!1},0)),N.current=null,v.current=null,h.current=!1,i(null)},Q=(e,t)=>{if(t.pointerType==="mouse")return;const m=t.currentTarget,g=t.pointerId;N.current=t.pointerId,v.current={x:t.clientX,y:t.clientY},d.current!==null&&window.clearTimeout(d.current),d.current=window.setTimeout(()=>{h.current=!0,i(e);try{m.setPointerCapture(g)}catch{}},220)},S=e=>{if(e.pointerType==="mouse"||N.current!==e.pointerId)return;if(!h.current&&v.current){const H=Math.abs(e.clientX-v.current.x),G=Math.abs(e.clientY-v.current.y);(H>8||G>8)&&E(!1);return}if(!h.current)return;e.preventDefault();const m=document.elementFromPoint(e.clientX,e.clientY)?.closest?.("[data-queue-index]"),g=m?Number(m.dataset.queueIndex):NaN;if(Number.isNaN(g)||o===null||g===o)return;const I=[...c],U=I[o];I.splice(o,1),I.splice(g,0,U),i(g),b(I)},q=e=>{e.pointerType!=="mouse"&&N.current===e.pointerId&&E(h.current)},M=e=>{e.pointerType!=="mouse"&&N.current===e.pointerId&&E(!1)};return c.length===0?null:n("section",{className:r.section,children:[n("div",{className:r.header,children:[n("button",{className:r.headerToggle,type:"button",onClick:()=>u(e=>!e),"aria-expanded":l,"aria-label":l?`Collapse ${a}`:`Expand ${a}`,children:[n("span",{className:r.title,children:[n("span",{className:"title-stack",children:[x&&n("div",{className:"section-eyebrow",children:x}),n("span",{children:a})]}),n("span",{className:r.badge,children:c.length})]}),l?n(y,{name:"chevron-up"}):n(y,{name:"chevron-down"})]}),R&&_&&n("div",{className:r.headerActions,children:[w&&c.length>1&&n("button",{className:r.nextBtn,type:"button",onClick:w,children:"Next"}),n("button",{className:r.clearBtn,type:"button",onClick:_,children:"Clear All"})]})]}),l&&n("div",{className:r.list,children:c.map((e,t)=>n(ue,{item:e,isActive:e.showId===P&&e.episodeNumber===D,index:t,onRemove:B,onTouchPointerDown:Q,onTouchPointerMove:S,onTouchPointerUp:q,onTouchPointerCancel:M,shouldIgnoreClick:()=>C.current,onDragStart:()=>$(t),onDragEnter:()=>k(t),onDragEnd:A,isDragging:o===t},e.id))})]})};export{ge as Q,r as s};
1
+ import{g as s,u as n,a as X}from"./vendor-core-DfaOB3Rn.js";import{I as y}from"./vendor-icons-DrybRNxP.js";import{d as Y,f as L}from"./index-vb4WPdcb.js";const z="_section_rx9ev_1",F="_header_rx9ev_10",O="_headerToggle_rx9ev_20",j="_headerActions_rx9ev_34",J="_title_rx9ev_40",K="_badge_rx9ev_50",V="_clearBtn_rx9ev_65",W="_nextBtn_rx9ev_83",Z="_list_rx9ev_101",ee="_item_rx9ev_114",ne="_active_rx9ev_134",te="_dragging_rx9ev_142",re="_dragHandle_rx9ev_149",ae="_thumbnail_rx9ev_167",oe="_meta_rx9ev_175",ce="_name_rx9ev_182",se="_episode_rx9ev_204",ie="_iconBtn_rx9ev_210",le="_metaGap_rx9ev_256",r={section:z,header:F,headerToggle:O,headerActions:j,title:J,badge:K,clearBtn:V,nextBtn:W,list:Z,item:ee,active:ne,dragging:te,dragHandle:re,thumbnail:ae,meta:oe,name:ce,episode:se,iconBtn:ie,metaGap:le},ue=({item:a,isActive:x,index:p,onRemove:P,onTouchPointerDown:D,onTouchPointerMove:B,onTouchPointerUp:T,onTouchPointerCancel:w,shouldIgnoreClick:_,onDragStart:R,onDragEnter:f,onDragEnd:c,isDragging:b})=>{const o=X(),{titlePreference:i}=Y(),l=a[i]||a.name||"Unknown show";return n("div",{"data-queue-index":p,className:`${r.item} ${x?r.active:""} ${b?r.dragging:""}`,draggable:!0,onDragStart:R,onDragEnter:f,onDragOver:u=>u.preventDefault(),onDragEnd:c,onPointerDown:u=>D(p,u),onPointerMove:B,onPointerUp:T,onPointerCancel:w,children:[n("button",{className:r.dragHandle,type:"button","aria-label":"Drag queue item",children:n(y,{name:"bars"})}),n("img",{className:r.thumbnail,src:L(a.thumbnail||"",72,96),alt:l,loading:"lazy",decoding:"async",onError:u=>{u.currentTarget.src="/placeholder.svg"}}),n("div",{className:r.meta,children:[n("button",{className:r.name,type:"button",onClick:()=>{_()||o(`/watch/${a.showId}/${a.episodeNumber}`)},children:l}),n("div",{className:r.episode,children:["Episode ",a.episodeNumber]})]}),n("button",{className:r.iconBtn,type:"button",onClick:()=>{_()||P(a)},"aria-label":`Remove ${l} episode ${a.episodeNumber} from queue`,children:n(y,{name:"times"})})]})},ge=({title:a="Queue",eyebrow:x,items:p,currentShowId:P,currentEpisode:D,onRemove:B,onReorder:T,onNextQueue:w,onClear:_,showClearAll:R=!1,defaultExpanded:f=!0})=>{const[c,b]=s.useState([]),[o,i]=s.useState(null),[l,u]=s.useState(f),N=s.useRef(null),v=s.useRef(null),d=s.useRef(null),h=s.useRef(!1),C=s.useRef(!1);s.useEffect(()=>{b(p)},[p]),s.useEffect(()=>{u(f)},[f]);const $=e=>{i(e)},k=e=>{if(o===null||o===e)return;const t=[...c],m=t[o];t.splice(o,1),t.splice(e,0,m),i(e),b(t)},A=()=>{o!==null&&T(c.map(e=>({id:e.id,showId:e.showId,episodeNumber:e.episodeNumber}))),i(null)},E=(e=!1)=>{d.current!==null&&(window.clearTimeout(d.current),d.current=null),e&&h.current&&(T(c.map(t=>({id:t.id,showId:t.showId,episodeNumber:t.episodeNumber}))),C.current=!0,window.setTimeout(()=>{C.current=!1},0)),N.current=null,v.current=null,h.current=!1,i(null)},Q=(e,t)=>{if(t.pointerType==="mouse")return;const m=t.currentTarget,g=t.pointerId;N.current=t.pointerId,v.current={x:t.clientX,y:t.clientY},d.current!==null&&window.clearTimeout(d.current),d.current=window.setTimeout(()=>{h.current=!0,i(e);try{m.setPointerCapture(g)}catch{}},220)},S=e=>{if(e.pointerType==="mouse"||N.current!==e.pointerId)return;if(!h.current&&v.current){const H=Math.abs(e.clientX-v.current.x),G=Math.abs(e.clientY-v.current.y);(H>8||G>8)&&E(!1);return}if(!h.current)return;e.preventDefault();const m=document.elementFromPoint(e.clientX,e.clientY)?.closest?.("[data-queue-index]"),g=m?Number(m.dataset.queueIndex):NaN;if(Number.isNaN(g)||o===null||g===o)return;const I=[...c],U=I[o];I.splice(o,1),I.splice(g,0,U),i(g),b(I)},q=e=>{e.pointerType!=="mouse"&&N.current===e.pointerId&&E(h.current)},M=e=>{e.pointerType!=="mouse"&&N.current===e.pointerId&&E(!1)};return c.length===0?null:n("section",{className:r.section,children:[n("div",{className:r.header,children:[n("button",{className:r.headerToggle,type:"button",onClick:()=>u(e=>!e),"aria-expanded":l,"aria-label":l?`Collapse ${a}`:`Expand ${a}`,children:[n("span",{className:r.title,children:[n("span",{className:"title-stack",children:[x&&n("div",{className:"section-eyebrow",children:x}),n("span",{children:a})]}),n("span",{className:r.badge,children:c.length})]}),l?n(y,{name:"chevron-up"}):n(y,{name:"chevron-down"})]}),R&&_&&n("div",{className:r.headerActions,children:[w&&c.length>1&&n("button",{className:r.nextBtn,type:"button",onClick:w,children:"Next"}),n("button",{className:r.clearBtn,type:"button",onClick:_,children:"Clear All"})]})]}),l&&n("div",{className:r.list,children:c.map((e,t)=>n(ue,{item:e,isActive:e.showId===P&&e.episodeNumber===D,index:t,onRemove:B,onTouchPointerDown:Q,onTouchPointerMove:S,onTouchPointerUp:q,onTouchPointerCancel:M,shouldIgnoreClick:()=>C.current,onDragStart:()=>$(t),onDragEnter:()=>k(t),onDragEnd:A,isDragging:o===t},e.id))})]})};export{ge as Q,r as s};
@@ -1 +1 @@
1
- import{o as U,d as v,h as b,T as w,u as i,S as E}from"./vendor-core-DfaOB3Rn.js";import{M as x}from"./MediaCard-BODgA6ir.js";import{L as F}from"./LibraryListPage-CgZiYRmp.js";import{u as _,M as z}from"./useMangaPopup-kZzwoCN6.js";import{M as D}from"./MangaResetProgressModal-Bd_lIuFo.js";import{x as G,d as O,o as Q,p as Y,u as q,y as H,z as K,A as V,M as R,m as Z,i as j,b as J,c as W}from"./useMangaLibrary-D3Foz2m_.js";import"./vendor-icons-DrybRNxP.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-RZ_j_2BD.js";import"./index-BP1z44Uk.js";import"./vendor-query-BBT5_sHx.js";import"./SkeletonGrid-w6TsxWu7.js";import"./ErrorMessage-DAxegITP.js";import"./LibraryListPage.module-r6k9nyT9.js";import"./usePopup-DS9jMzp6.js";import"./ResetProgressModal-DEnbScHS.js";import"./libraryInvalidation-CVK2SYUR.js";const X=["All","Continue Reading",...R],h=24,y=e=>({provider:e.provider,mangaId:e.mangaId,title:e.title,altTitle:e.altTitle,cover:e.cover,contentRating:e.contentRating,readTarget:e.detailTarget,progressLabel:e.progressLabel});function Ra(){const{filter:e="All"}=U(),[g,p]=v(1),[d,u]=v(null);b(()=>{document.title="Reading List - dango"},[]),b(()=>{p(1)},[e]);const r=e==="Continue Reading",n=G(r?"All":e,g,h),s=O(100),I=Q(),T=Y(),{toggle:L,bookmarkedIds:C}=q(),{popup:t,openPopup:k,scheduleClose:c,cancelClose:m,closePopup:M}=_(),f=H(),P=K(),B=V(),S=w(()=>r?(s.data?.data??[]).map(a=>{const o=a.page??0,l=a.pageCount??0;return{key:a.id,libId:a.id,provider:a.provider,mangaId:a.mangaId,title:a.title||"",altTitle:a.altTitle,cover:a.cover||"",status:a.watchlistStatus??"",contentRating:a.contentRating||void 0,chapterLabel:a.chapterNumber?`Ch. ${a.chapterNumber}`:void 0,progressPercent:l>0?o/l*100:0,progressLabel:a.chapterNumber&&l>0?`Ch. ${a.chapterNumber} · p. ${o}/${l}`:void 0,detailTarget:a.chapterId&&a.provider&&a.mangaId?`/manga/${a.provider}/${encodeURIComponent(a.mangaId)}/read?chapter=${encodeURIComponent(a.chapterId)}`:`/manga/${a.provider}/${encodeURIComponent(a.mangaId)}`}}):(n.data?.data??[]).map(a=>({key:a.id,libId:a.id,provider:a.provider,mangaId:a.mangaId,title:a.title||"",altTitle:a.altTitle,cover:a.cover||"",status:a.status,contentRating:a.contentRating||void 0,chapterLabel:a.lastChapterNumber?`Ch. ${a.lastChapterNumber}`:void 0,progressPercent:void 0,progressLabel:void 0,detailTarget:`/manga/${a.provider}/${encodeURIComponent(a.mangaId)}`})),[r,s.data,n.data]),A=r?s.data?.total??0:n.data?.total??0,$=r?s.isLoading:n.isLoading,N=r?s.error:n.error;return i(F,{headerTitle:"My Reading List",headerSubtitle:"Track and manage your manga collection",filters:X,filterBy:e,filterBasePath:"/reading-list",continueFilter:"Continue Reading",statusOptions:[...R],entries:S,total:A,isLoading:$,error:N,page:g,pageSize:h,onPageChange:p,emptyTitle:"Your reading list is looking a bit lonely",emptyFilteredText:"No titles match this filter.",emptyAllText:"Let's find something to read!",browseLabel:"Browse Manga",browseTarget:"/manga",removeListLabel:"Remove from Reading List",listNoun:"reading list",skipConfirmKey:"mangaSkipRemoveConfirmation",onBulkStatus:(a,o)=>f.mutate({ids:a,status:o}),onBulkRemove:a=>{r?B.mutate({ids:a}):P.mutate(a)},onStatusChange:(a,o)=>T.mutate({id:a,status:o}),onRemoveItem:a=>I.mutate(a),renderCard:a=>i(x,{item:{id:a.libId,title:a.title,...W({title:a.title,altTitle:a.altTitle}),thumbnail:J(a.provider,a.cover),chapterBadge:a.chapterLabel??null,isAdult:j(a)},linkTo:a.detailTarget,hoverIcon:"book",progress:a.progressPercent!==void 0&&a.progressLabel?{percent:a.progressPercent,label:a.progressLabel}:void 0,showProgress:r,display:{elements:{poster:{typeBadge:!1,chapterBadge:!0,adultBadge:!0},info:{title:!0,mobileBadges:!0,progress:!0,meta:!1}}},onRemove:r?()=>u(a):void 0,onOpenDetails:o=>k(o,y(a)),onPopupHoverIntent:o=>o?m():c(),rawThumbnail:!0}),modals:i(E,{children:[t&&t.data.provider&&i(z,{data:t.data,anchorRect:t.rect,bookmarked:C.has(Z(t.data.provider,t.data.mangaId)),onToggleBookmark:()=>L({id:t.data.mangaId,provider:t.data.provider,title:t.data.title,cover:t.data.cover,altTitle:t.data.altTitle??void 0,contentRating:t.data.contentRating}),onMouseEnter:m,onMouseLeave:c,onRequestClose:M}),i(D,{mangaId:d?d.libId:null,title:d?.title,onClose:()=>u(null)})]})})}export{Ra as default};
1
+ import{o as U,d as v,h as b,T as w,u as i,S as E}from"./vendor-core-DfaOB3Rn.js";import{M as x}from"./MediaCard-DJNRuWDJ.js";import{L as F}from"./LibraryListPage-CJxNJYC3.js";import{u as _,M as z}from"./useMangaPopup-VGTfdKEu.js";import{M as D}from"./MangaResetProgressModal-DrqN7OF0.js";import{x as G,d as O,o as Q,p as Y,u as q,y as H,z as K,A as V,M as R,m as Z,i as j,b as J,c as W}from"./useMangaLibrary-DrPp5K_1.js";import"./vendor-icons-DrybRNxP.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-DLVOORqW.js";import"./index-vb4WPdcb.js";import"./vendor-query-BBT5_sHx.js";import"./SkeletonGrid-sA6_IQY1.js";import"./ErrorMessage-DAxegITP.js";import"./LibraryListPage.module-r6k9nyT9.js";import"./usePopup-DS9jMzp6.js";import"./ResetProgressModal-Dq-B23o_.js";import"./libraryInvalidation-2sAPXNhJ.js";const X=["All","Continue Reading",...R],h=24,y=e=>({provider:e.provider,mangaId:e.mangaId,title:e.title,altTitle:e.altTitle,cover:e.cover,contentRating:e.contentRating,readTarget:e.detailTarget,progressLabel:e.progressLabel});function Ra(){const{filter:e="All"}=U(),[g,p]=v(1),[d,u]=v(null);b(()=>{document.title="Reading List - dango"},[]),b(()=>{p(1)},[e]);const r=e==="Continue Reading",n=G(r?"All":e,g,h),s=O(100),I=Q(),T=Y(),{toggle:L,bookmarkedIds:C}=q(),{popup:t,openPopup:k,scheduleClose:c,cancelClose:m,closePopup:M}=_(),f=H(),P=K(),B=V(),S=w(()=>r?(s.data?.data??[]).map(a=>{const o=a.page??0,l=a.pageCount??0;return{key:a.id,libId:a.id,provider:a.provider,mangaId:a.mangaId,title:a.title||"",altTitle:a.altTitle,cover:a.cover||"",status:a.watchlistStatus??"",contentRating:a.contentRating||void 0,chapterLabel:a.chapterNumber?`Ch. ${a.chapterNumber}`:void 0,progressPercent:l>0?o/l*100:0,progressLabel:a.chapterNumber&&l>0?`Ch. ${a.chapterNumber} · p. ${o}/${l}`:void 0,detailTarget:a.chapterId&&a.provider&&a.mangaId?`/manga/${a.provider}/${encodeURIComponent(a.mangaId)}/read?chapter=${encodeURIComponent(a.chapterId)}`:`/manga/${a.provider}/${encodeURIComponent(a.mangaId)}`}}):(n.data?.data??[]).map(a=>({key:a.id,libId:a.id,provider:a.provider,mangaId:a.mangaId,title:a.title||"",altTitle:a.altTitle,cover:a.cover||"",status:a.status,contentRating:a.contentRating||void 0,chapterLabel:a.lastChapterNumber?`Ch. ${a.lastChapterNumber}`:void 0,progressPercent:void 0,progressLabel:void 0,detailTarget:`/manga/${a.provider}/${encodeURIComponent(a.mangaId)}`})),[r,s.data,n.data]),A=r?s.data?.total??0:n.data?.total??0,$=r?s.isLoading:n.isLoading,N=r?s.error:n.error;return i(F,{headerTitle:"My Reading List",headerSubtitle:"Track and manage your manga collection",filters:X,filterBy:e,filterBasePath:"/reading-list",continueFilter:"Continue Reading",statusOptions:[...R],entries:S,total:A,isLoading:$,error:N,page:g,pageSize:h,onPageChange:p,emptyTitle:"Your reading list is looking a bit lonely",emptyFilteredText:"No titles match this filter.",emptyAllText:"Let's find something to read!",browseLabel:"Browse Manga",browseTarget:"/manga",removeListLabel:"Remove from Reading List",listNoun:"reading list",skipConfirmKey:"mangaSkipRemoveConfirmation",onBulkStatus:(a,o)=>f.mutate({ids:a,status:o}),onBulkRemove:a=>{r?B.mutate({ids:a}):P.mutate(a)},onStatusChange:(a,o)=>T.mutate({id:a,status:o}),onRemoveItem:a=>I.mutate(a),renderCard:a=>i(x,{item:{id:a.libId,title:a.title,...W({title:a.title,altTitle:a.altTitle}),thumbnail:J(a.provider,a.cover),chapterBadge:a.chapterLabel??null,isAdult:j(a)},linkTo:a.detailTarget,hoverIcon:"book",progress:a.progressPercent!==void 0&&a.progressLabel?{percent:a.progressPercent,label:a.progressLabel}:void 0,showProgress:r,display:{elements:{poster:{typeBadge:!1,chapterBadge:!0,adultBadge:!0},info:{title:!0,mobileBadges:!0,progress:!0,meta:!1}}},onRemove:r?()=>u(a):void 0,onOpenDetails:o=>k(o,y(a)),onPopupHoverIntent:o=>o?m():c(),rawThumbnail:!0}),modals:i(E,{children:[t&&t.data.provider&&i(z,{data:t.data,anchorRect:t.rect,bookmarked:C.has(Z(t.data.provider,t.data.mangaId)),onToggleBookmark:()=>L({id:t.data.mangaId,provider:t.data.provider,title:t.data.title,cover:t.data.cover,altTitle:t.data.altTitle??void 0,contentRating:t.data.contentRating}),onMouseEnter:m,onMouseLeave:c,onRequestClose:M}),i(D,{mangaId:d?d.libId:null,title:d?.title,onClose:()=>u(null)})]})})}export{Ra as default};
@@ -1 +1 @@
1
- import{d as f,h as u,u as e}from"./vendor-core-DfaOB3Rn.js";import{M as a,B as c}from"./index-BP1z44Uk.js";const g=({isOpen:o,itemName:n,progressKind:d,listLabel:i,onClose:s,onConfirm:h})=>{const[l,r]=f(!1);return u(()=>{o&&r(!1)},[o]),e(a,{isOpen:o,onClose:()=>{r(!1),s()},title:"Reset Progress",children:[e(a.Body,{children:[e("p",{children:["Are you sure you want to remove your ",d,' progress for "',n,'"?']}),e("label",{children:[e("input",{type:"checkbox",checked:l,onChange:t=>r(t.currentTarget.checked)}),"Also remove from ",i]})]}),e(a.Actions,{children:[e(c,{variant:"secondary",onClick:()=>{r(!1),s()},children:"No"}),e(c,{variant:"danger",onClick:()=>{const t=l;r(!1),h(t),s()},children:"Yes"})]})]})};export{g as R};
1
+ import{d as f,h as u,u as e}from"./vendor-core-DfaOB3Rn.js";import{M as a,B as c}from"./index-vb4WPdcb.js";const g=({isOpen:o,itemName:n,progressKind:d,listLabel:i,onClose:s,onConfirm:h})=>{const[l,r]=f(!1);return u(()=>{o&&r(!1)},[o]),e(a,{isOpen:o,onClose:()=>{r(!1),s()},title:"Reset Progress",children:[e(a.Body,{children:[e("p",{children:["Are you sure you want to remove your ",d,' progress for "',n,'"?']}),e("label",{children:[e("input",{type:"checkbox",checked:l,onChange:t=>r(t.currentTarget.checked)}),"Also remove from ",i]})]}),e(a.Actions,{children:[e(c,{variant:"secondary",onClick:()=>{r(!1),s()},children:"No"}),e(c,{variant:"danger",onClick:()=>{const t=l;r(!1),h(t),s()},children:"Yes"})]})]})};export{g as R};
@@ -1 +1 @@
1
- import{h as x,p as pe,a as fe,d as o,A as ge,g as Le,u as a}from"./vendor-core-DfaOB3Rn.js";import{I as f}from"./vendor-icons-DrybRNxP.js";import{P as ae}from"./MediaCard-BODgA6ir.js";import{A as Ae}from"./AnimeCard-a7KkMGQv.js";import{S as Se}from"./SkeletonGrid-w6TsxWu7.js";import{t as ye,u as be,x as Ne,R as te,B as _,U as Te}from"./index-BP1z44Uk.js";import{E as Ce}from"./ErrorMessage-DAxegITP.js";import{A as Ee}from"./ActiveFilterChips-olGfwxle.js";import{s as t}from"./Search.module-C_qwCdHS.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-RZ_j_2BD.js";import"./useAnimeInfoData-8RI9qMzw.js";import"./vendor-query-BBT5_sHx.js";import"./QueueOptionsButton-C-y5QFrT.js";import"./playbackCompletion-IPHm9fp5.js";const Re=[{value:"ALL",label:"All Types"},{value:"TV",label:"TV Series"},{value:"Movie",label:"Movie"},{value:"OVA",label:"OVA"},{value:"ONA",label:"ONA"},{value:"TV_SHORT",label:"TV Short"},{value:"SPECIAL",label:"Special"},{value:"ADULT",label:"Mature"}],Ie=[{value:"ALL",label:"All Seasons"},{value:"Winter",label:"Winter"},{value:"Spring",label:"Spring"},{value:"Summer",label:"Summer"},{value:"Fall",label:"Fall"}],De=[{value:"ALL",label:"All Countries"},{value:"JP",label:"Japan"},{value:"CN",label:"China"}],Pe=[{value:"POPULARITY_DESC",label:"Popularity"},{value:"TRENDING_DESC",label:"Trending"},{value:"SCORE_DESC",label:"Score"},{value:"START_DATE_DESC",label:"Newest"},{value:"START_DATE_ASC",label:"Oldest"},{value:"EPISODES_DESC",label:"Most Episodes"},{value:"FAVOURITES_DESC",label:"Favourites"}],Oe=[{value:"RELEASING",label:"Currently Airing"},{value:"FINISHED",label:"Finished"},{value:"NOT_YET_RELEASED",label:"Not Yet Released"},{value:"CANCELLED",label:"Cancelled"},{value:"HIATUS",label:"Hiatus"}];function We(){x(()=>{document.title="Search - dango"},[]);const[r,le]=pe(),se=fe(),[m,B]=o(r.get("query")||""),[v,G]=o(parseInt(r.get("page")||"1")),[d,g]=o(r.get("type")||"ALL"),[L,A]=o(r.get("season")||"ALL"),[S,y]=o(r.get("year")||"ALL"),[Y,R]=o(r.get("country")||"ALL"),[k,re]=o(r.get("provider")||"anilist"),[U,I]=o(r.get("sortBy")||"POPULARITY_DESC"),[$,D]=o(r.get("status")||""),[b,ne]=o(!1),[ie,F]=o(null);x(()=>{let e=!1;return ye.data.anilistStatus.query().then(s=>{e||F(s.available)}).catch(()=>{e||F(!0)}),()=>{e=!0}},[]);const{lowEndMode:oe}=be(),P=ge(null),{data:ce}=Ne(),M=ce?.genres||[],[N,T]=o(()=>{const e={},s=r.get("genres")?.split(",").map(l=>l.trim()).filter(Boolean)||[],n=r.get("excludeGenres")?.split(",").map(l=>l.trim()).filter(Boolean)||[];return s.forEach(l=>l&&(e[l]="include")),n.forEach(l=>l&&(e[l]="exclude")),e}),V=new URLSearchParams(r);V.delete("page");const j=V.toString(),{data:p=[],isLoading:C,isError:ue,error:de}=te(j,v,14),{data:q}=te(j,v+1,14),[O,he]=o(!1),E=Le.useMemo(()=>k==="anilist"&&d==="ADULT"||O?p:p.filter(e=>!(e.isAdult||e.rating==="R+"||e.rating==="Rx"||e.rating?.includes("17+"))),[p,O,k,d]);x(()=>{B(r.get("query")||""),g(r.get("type")||"ALL"),A(r.get("season")||"ALL"),y(r.get("year")||"ALL"),R(r.get("country")||"ALL"),re(r.get("provider")||"anilist"),I(r.get("sortBy")||"POPULARITY_DESC"),D(r.get("status")||""),G(parseInt(r.get("page")||"1"));const e={},s=r.get("genres")?.split(",").map(l=>l.trim()).filter(Boolean)||[],n=r.get("excludeGenres")?.split(",").map(l=>l.trim()).filter(Boolean)||[];s.forEach(l=>l&&(e[l]="include")),n.forEach(l=>l&&(e[l]="exclude")),T(e)},[r]);const c=(e=1,s={})=>{Te();const n=s.type??d,l=s.status??$,W=s.season??L,J=s.year??S,K=s.country??Y,Q=s.sort??U,X=s.genreState??N,ve=s.showMature??O,i=new URLSearchParams;m.trim()&&i.set("query",m.trim()),n!=="ALL"&&i.set("type",n),l&&i.set("status",l),W!=="ALL"&&i.set("season",W),J!=="ALL"&&i.set("year",J),K!=="ALL"&&i.set("country",K),Q!=="POPULARITY_DESC"&&i.set("sortBy",Q);const Z=Object.entries(X).filter(([,u])=>u==="include").map(([u])=>u),ee=Object.entries(X).filter(([,u])=>u==="exclude").map(([u])=>u);Z.length>0&&i.set("genres",Z.join(",")),ee.length>0&&i.set("excludeGenres",ee.join(",")),n!=="ADULT"&&!ve&&i.set("adult","false"),i.set("provider","anilist"),e>1&&i.set("page",e.toString()),le(i),e!==v&&G(e)},z=e=>{if(c(e),P.current){const s=P.current.getBoundingClientRect().top+window.scrollY-100;window.scrollTo({top:s,behavior:"smooth"})}},w=new Date().getFullYear(),me=[{value:"ALL",label:"All Years"},...Array.from({length:w-1980+1},(e,s)=>({value:String(w-s),label:String(w-s)}))],H=p.length>=14&&q&&q.length>0,h=[];d!=="ALL"&&h.push({key:"type",label:`Type: ${d}`,onRemove:()=>{g("ALL"),c(1,{type:"ALL"})}}),L!=="ALL"&&h.push({key:"season",label:`Season: ${L}`,onRemove:()=>{A("ALL"),c(1,{season:"ALL"})}}),S!=="ALL"&&h.push({key:"year",label:`Year: ${S}`,onRemove:()=>{y("ALL"),c(1,{year:"ALL"})}});for(const[e,s]of Object.entries(N))h.push({key:e,label:s==="include"?`+ ${e}`:`-${e}`,tone:s==="include"?"primary":"danger",onRemove:()=>{const n={...N};delete n[e],T(n),c(1,{genreState:n})}});return a("div",{className:"page-container",children:[a("div",{className:t.header,children:[a("h1",{className:t.pageTitle,children:"Search Anime"}),a("p",{className:t.pageSubtitle,children:"Search through thousands of titles and discover your next favorite"})]}),a("div",{className:t.filterContainer,children:[a("div",{className:t.searchBarWrapper,children:[a("div",{className:t.inputIconWrapper,children:[a(f,{name:"search",className:t.searchIcon}),a("input",{type:"text","data-virtual-keyboard":"true",className:t.searchInput,placeholder:"Search by title, character, or studio...",value:m,onInput:e=>B(e.currentTarget.value),onKeyDown:e=>e.key==="Enter"&&c()})]}),a("div",{className:t.searchActions,children:[a(_,{onClick:()=>c(),className:t.searchBtn,children:"Search"}),a("button",{className:`${t.filterToggleBtn} ${b?t.active:""}`,onClick:()=>ne(!b),children:[a(f,{name:"filter",size:14}),a("span",{children:"Filters"}),b?a(f,{name:"chevron-up",size:12}):a(f,{name:"chevron-down",size:12})]})]})]}),a("div",{className:`${t.advancedFilters} ${b?t.show:""}`,children:[a("div",{className:t.filterDivider}),a("div",{className:t.filterGrid,children:[a("div",{className:t.filterItem,children:[a("label",{children:"Type"}),a("select",{value:d,onChange:e=>{if(e.currentTarget.value==="ADULT"){se("/mature?provider=mal");return}g(e.currentTarget.value)},children:Re.map(e=>a("option",{value:e.value,children:e.label},e.value))})]}),a("div",{className:t.filterItem,children:[a("label",{children:"Status"}),a("select",{value:$,onChange:e=>D(e.currentTarget.value),children:[a("option",{value:"",children:"All Status"}),Oe.map(e=>a("option",{value:e.value,children:e.label},e.value))]})]}),a("div",{className:t.filterItem,children:[a("label",{children:"Season"}),a("select",{value:L,onChange:e=>A(e.currentTarget.value),children:Ie.map(e=>a("option",{value:e.value,children:e.label},e.value))})]}),a("div",{className:t.filterItem,children:[a("label",{children:"Year"}),a("select",{value:S,onChange:e=>y(e.currentTarget.value),children:me.map(e=>a("option",{value:e.value,children:e.label},e.value))})]}),a("div",{className:t.filterItem,children:[a("label",{children:["Country",ie===!1&&a("span",{style:{display:"block",fontSize:"0.75rem",color:"var(--text-muted)",fontWeight:400},children:"AniList only - ignored by fallback providers"})]}),a("select",{value:Y,onChange:e=>R(e.currentTarget.value),children:De.map(e=>a("option",{value:e.value,children:e.label},e.value))})]}),a("div",{className:t.filterItem,children:[a("label",{children:"Sort By"}),a("select",{value:U,onChange:e=>I(e.currentTarget.value),children:Pe.map(e=>a("option",{value:e.value,children:e.label},e.value))})]})]}),M.length>0&&a("div",{className:t.genreSection,children:[a("label",{className:t.genreLabel,children:"Genres"}),a("div",{className:t.genreContainer,children:M.map(e=>a("button",{className:`${t.genreButton} ${t[N[e]||""]}`,onClick:()=>{T(s=>{const n=s[e],l={...s};return n==="include"?l[e]="exclude":n==="exclude"?delete l[e]:l[e]="include",l})},children:e},e))})]}),a("div",{className:t.filterActions,children:[a(_,{variant:"secondary",onClick:()=>{T({}),g("ALL"),A("ALL"),y("ALL"),R("ALL"),I("POPULARITY_DESC"),D(""),he(!1),c(1,{type:"ALL",status:"",season:"ALL",year:"ALL",country:"ALL",sort:"POPULARITY_DESC",genreState:{},showMature:!1})},children:"Reset All"}),a(_,{onClick:()=>c(),className:t.applyBtn,children:"Apply Filters"})]})]})]}),ue&&a(Ce,{message:de?.message||"Error"}),h.length>0&&a(Ee,{chips:h}),a("div",{className:t.resultsHeader,ref:P,children:[a("h2",{className:t.resultsTitle,children:m?`Search Results for "${m}"`:"Discover Anime"}),E.length>0&&a(ae,{page:v,canGoNext:H,onChange:z,isLoading:C})]}),a("div",{className:`${t.resultsGrid} ${oe?t.lowEnd:""}`,children:C?a(Se,{}):E.map(e=>a(Ae,{anime:e},e._id))}),!C&&E.length===0&&a("div",{className:t.noResults,children:[a(f,{name:"search",size:48,className:t.noResultsIcon}),a("h3",{children:"No results found"}),a("p",{children:"Try adjusting your search or filters to find what you're looking for."})]}),E.length>0&&a("div",{className:t.bottomPagination,children:a(ae,{page:v,canGoNext:H,onChange:z,isLoading:C,variant:"labeled"})})]})}export{We as default};
1
+ import{h as x,p as pe,a as fe,d as o,A as ge,g as Le,u as a}from"./vendor-core-DfaOB3Rn.js";import{I as f}from"./vendor-icons-DrybRNxP.js";import{P as ae}from"./MediaCard-DJNRuWDJ.js";import{A as Ae}from"./AnimeCard-aZA4-g8o.js";import{S as Se}from"./SkeletonGrid-sA6_IQY1.js";import{t as ye,u as be,x as Ne,R as te,B as _,U as Te}from"./index-vb4WPdcb.js";import{E as Ce}from"./ErrorMessage-DAxegITP.js";import{A as Ee}from"./ActiveFilterChips-olGfwxle.js";import{s as t}from"./Search.module-C_qwCdHS.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-DLVOORqW.js";import"./useAnimeInfoData-Ai39I_f0.js";import"./vendor-query-BBT5_sHx.js";import"./QueueOptionsButton-ByAwxtJ-.js";import"./playbackCompletion-IPHm9fp5.js";const Re=[{value:"ALL",label:"All Types"},{value:"TV",label:"TV Series"},{value:"Movie",label:"Movie"},{value:"OVA",label:"OVA"},{value:"ONA",label:"ONA"},{value:"TV_SHORT",label:"TV Short"},{value:"SPECIAL",label:"Special"},{value:"ADULT",label:"Mature"}],Ie=[{value:"ALL",label:"All Seasons"},{value:"Winter",label:"Winter"},{value:"Spring",label:"Spring"},{value:"Summer",label:"Summer"},{value:"Fall",label:"Fall"}],De=[{value:"ALL",label:"All Countries"},{value:"JP",label:"Japan"},{value:"CN",label:"China"}],Pe=[{value:"POPULARITY_DESC",label:"Popularity"},{value:"TRENDING_DESC",label:"Trending"},{value:"SCORE_DESC",label:"Score"},{value:"START_DATE_DESC",label:"Newest"},{value:"START_DATE_ASC",label:"Oldest"},{value:"EPISODES_DESC",label:"Most Episodes"},{value:"FAVOURITES_DESC",label:"Favourites"}],Oe=[{value:"RELEASING",label:"Currently Airing"},{value:"FINISHED",label:"Finished"},{value:"NOT_YET_RELEASED",label:"Not Yet Released"},{value:"CANCELLED",label:"Cancelled"},{value:"HIATUS",label:"Hiatus"}];function We(){x(()=>{document.title="Search - dango"},[]);const[r,le]=pe(),se=fe(),[m,B]=o(r.get("query")||""),[v,G]=o(parseInt(r.get("page")||"1")),[d,g]=o(r.get("type")||"ALL"),[L,A]=o(r.get("season")||"ALL"),[S,y]=o(r.get("year")||"ALL"),[Y,R]=o(r.get("country")||"ALL"),[k,re]=o(r.get("provider")||"anilist"),[U,I]=o(r.get("sortBy")||"POPULARITY_DESC"),[$,D]=o(r.get("status")||""),[b,ne]=o(!1),[ie,F]=o(null);x(()=>{let e=!1;return ye.data.anilistStatus.query().then(s=>{e||F(s.available)}).catch(()=>{e||F(!0)}),()=>{e=!0}},[]);const{lowEndMode:oe}=be(),P=ge(null),{data:ce}=Ne(),M=ce?.genres||[],[N,T]=o(()=>{const e={},s=r.get("genres")?.split(",").map(l=>l.trim()).filter(Boolean)||[],n=r.get("excludeGenres")?.split(",").map(l=>l.trim()).filter(Boolean)||[];return s.forEach(l=>l&&(e[l]="include")),n.forEach(l=>l&&(e[l]="exclude")),e}),V=new URLSearchParams(r);V.delete("page");const j=V.toString(),{data:p=[],isLoading:C,isError:ue,error:de}=te(j,v,14),{data:q}=te(j,v+1,14),[O,he]=o(!1),E=Le.useMemo(()=>k==="anilist"&&d==="ADULT"||O?p:p.filter(e=>!(e.isAdult||e.rating==="R+"||e.rating==="Rx"||e.rating?.includes("17+"))),[p,O,k,d]);x(()=>{B(r.get("query")||""),g(r.get("type")||"ALL"),A(r.get("season")||"ALL"),y(r.get("year")||"ALL"),R(r.get("country")||"ALL"),re(r.get("provider")||"anilist"),I(r.get("sortBy")||"POPULARITY_DESC"),D(r.get("status")||""),G(parseInt(r.get("page")||"1"));const e={},s=r.get("genres")?.split(",").map(l=>l.trim()).filter(Boolean)||[],n=r.get("excludeGenres")?.split(",").map(l=>l.trim()).filter(Boolean)||[];s.forEach(l=>l&&(e[l]="include")),n.forEach(l=>l&&(e[l]="exclude")),T(e)},[r]);const c=(e=1,s={})=>{Te();const n=s.type??d,l=s.status??$,W=s.season??L,J=s.year??S,K=s.country??Y,Q=s.sort??U,X=s.genreState??N,ve=s.showMature??O,i=new URLSearchParams;m.trim()&&i.set("query",m.trim()),n!=="ALL"&&i.set("type",n),l&&i.set("status",l),W!=="ALL"&&i.set("season",W),J!=="ALL"&&i.set("year",J),K!=="ALL"&&i.set("country",K),Q!=="POPULARITY_DESC"&&i.set("sortBy",Q);const Z=Object.entries(X).filter(([,u])=>u==="include").map(([u])=>u),ee=Object.entries(X).filter(([,u])=>u==="exclude").map(([u])=>u);Z.length>0&&i.set("genres",Z.join(",")),ee.length>0&&i.set("excludeGenres",ee.join(",")),n!=="ADULT"&&!ve&&i.set("adult","false"),i.set("provider","anilist"),e>1&&i.set("page",e.toString()),le(i),e!==v&&G(e)},z=e=>{if(c(e),P.current){const s=P.current.getBoundingClientRect().top+window.scrollY-100;window.scrollTo({top:s,behavior:"smooth"})}},w=new Date().getFullYear(),me=[{value:"ALL",label:"All Years"},...Array.from({length:w-1980+1},(e,s)=>({value:String(w-s),label:String(w-s)}))],H=p.length>=14&&q&&q.length>0,h=[];d!=="ALL"&&h.push({key:"type",label:`Type: ${d}`,onRemove:()=>{g("ALL"),c(1,{type:"ALL"})}}),L!=="ALL"&&h.push({key:"season",label:`Season: ${L}`,onRemove:()=>{A("ALL"),c(1,{season:"ALL"})}}),S!=="ALL"&&h.push({key:"year",label:`Year: ${S}`,onRemove:()=>{y("ALL"),c(1,{year:"ALL"})}});for(const[e,s]of Object.entries(N))h.push({key:e,label:s==="include"?`+ ${e}`:`-${e}`,tone:s==="include"?"primary":"danger",onRemove:()=>{const n={...N};delete n[e],T(n),c(1,{genreState:n})}});return a("div",{className:"page-container",children:[a("div",{className:t.header,children:[a("h1",{className:t.pageTitle,children:"Search Anime"}),a("p",{className:t.pageSubtitle,children:"Search through thousands of titles and discover your next favorite"})]}),a("div",{className:t.filterContainer,children:[a("div",{className:t.searchBarWrapper,children:[a("div",{className:t.inputIconWrapper,children:[a(f,{name:"search",className:t.searchIcon}),a("input",{type:"text","data-virtual-keyboard":"true",className:t.searchInput,placeholder:"Search by title, character, or studio...",value:m,onInput:e=>B(e.currentTarget.value),onKeyDown:e=>e.key==="Enter"&&c()})]}),a("div",{className:t.searchActions,children:[a(_,{onClick:()=>c(),className:t.searchBtn,children:"Search"}),a("button",{className:`${t.filterToggleBtn} ${b?t.active:""}`,onClick:()=>ne(!b),children:[a(f,{name:"filter",size:14}),a("span",{children:"Filters"}),b?a(f,{name:"chevron-up",size:12}):a(f,{name:"chevron-down",size:12})]})]})]}),a("div",{className:`${t.advancedFilters} ${b?t.show:""}`,children:[a("div",{className:t.filterDivider}),a("div",{className:t.filterGrid,children:[a("div",{className:t.filterItem,children:[a("label",{children:"Type"}),a("select",{value:d,onChange:e=>{if(e.currentTarget.value==="ADULT"){se("/mature?provider=mal");return}g(e.currentTarget.value)},children:Re.map(e=>a("option",{value:e.value,children:e.label},e.value))})]}),a("div",{className:t.filterItem,children:[a("label",{children:"Status"}),a("select",{value:$,onChange:e=>D(e.currentTarget.value),children:[a("option",{value:"",children:"All Status"}),Oe.map(e=>a("option",{value:e.value,children:e.label},e.value))]})]}),a("div",{className:t.filterItem,children:[a("label",{children:"Season"}),a("select",{value:L,onChange:e=>A(e.currentTarget.value),children:Ie.map(e=>a("option",{value:e.value,children:e.label},e.value))})]}),a("div",{className:t.filterItem,children:[a("label",{children:"Year"}),a("select",{value:S,onChange:e=>y(e.currentTarget.value),children:me.map(e=>a("option",{value:e.value,children:e.label},e.value))})]}),a("div",{className:t.filterItem,children:[a("label",{children:["Country",ie===!1&&a("span",{style:{display:"block",fontSize:"0.75rem",color:"var(--text-muted)",fontWeight:400},children:"AniList only - ignored by fallback providers"})]}),a("select",{value:Y,onChange:e=>R(e.currentTarget.value),children:De.map(e=>a("option",{value:e.value,children:e.label},e.value))})]}),a("div",{className:t.filterItem,children:[a("label",{children:"Sort By"}),a("select",{value:U,onChange:e=>I(e.currentTarget.value),children:Pe.map(e=>a("option",{value:e.value,children:e.label},e.value))})]})]}),M.length>0&&a("div",{className:t.genreSection,children:[a("label",{className:t.genreLabel,children:"Genres"}),a("div",{className:t.genreContainer,children:M.map(e=>a("button",{className:`${t.genreButton} ${t[N[e]||""]}`,onClick:()=>{T(s=>{const n=s[e],l={...s};return n==="include"?l[e]="exclude":n==="exclude"?delete l[e]:l[e]="include",l})},children:e},e))})]}),a("div",{className:t.filterActions,children:[a(_,{variant:"secondary",onClick:()=>{T({}),g("ALL"),A("ALL"),y("ALL"),R("ALL"),I("POPULARITY_DESC"),D(""),he(!1),c(1,{type:"ALL",status:"",season:"ALL",year:"ALL",country:"ALL",sort:"POPULARITY_DESC",genreState:{},showMature:!1})},children:"Reset All"}),a(_,{onClick:()=>c(),className:t.applyBtn,children:"Apply Filters"})]})]})]}),ue&&a(Ce,{message:de?.message||"Error"}),h.length>0&&a(Ee,{chips:h}),a("div",{className:t.resultsHeader,ref:P,children:[a("h2",{className:t.resultsTitle,children:m?`Search Results for "${m}"`:"Discover Anime"}),E.length>0&&a(ae,{page:v,canGoNext:H,onChange:z,isLoading:C})]}),a("div",{className:`${t.resultsGrid} ${oe?t.lowEnd:""}`,children:C?a(Se,{}):E.map(e=>a(Ae,{anime:e},e._id))}),!C&&E.length===0&&a("div",{className:t.noResults,children:[a(f,{name:"search",size:48,className:t.noResultsIcon}),a("h3",{children:"No results found"}),a("p",{children:"Try adjusting your search or filters to find what you're looking for."})]}),E.length>0&&a("div",{className:t.bottomPagination,children:a(ae,{page:v,canGoNext:H,onChange:z,isLoading:C,variant:"labeled"})})]})}export{We as default};