@serifpersia/dango 3.7.1 → 3.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/client/dist/assets/ActiveFilterChips-QjkplDN2.css +1 -0
- package/client/dist/assets/ActiveFilterChips-olGfwxle.js +1 -0
- package/client/dist/assets/AnimeCard-CoPx634q.js +1 -0
- package/client/dist/assets/AnimeInfo-COVCRujg.js +1 -0
- package/client/dist/assets/AnimeInfoPage-BwlKpRXY.js +2 -0
- package/client/dist/assets/{AnimeMetaDetails-BogOi_bM.js → AnimeMetaDetails-D8WIiO4b.js} +1 -1
- package/client/dist/assets/Asmr-Dl1EZqaI.css +1 -0
- package/client/dist/assets/Asmr-nOUcDsWe.js +2 -0
- package/client/dist/assets/AsmrResetProgressModal-Mj1PYE2c.js +1 -0
- package/client/dist/assets/AvSyncCalibrator-BtUHM1mW.css +1 -0
- package/client/dist/assets/AvSyncCalibrator-C5GxpyPE.js +10 -0
- package/client/dist/assets/Home-C5eTe3jP.css +1 -0
- package/client/dist/assets/Home-wi0a_BDQ.js +1 -0
- package/client/dist/assets/Insights-D0qrep0K.css +1 -0
- package/client/dist/assets/Insights-MLCDyTnY.js +1 -0
- package/client/dist/assets/LibraryListPage-CRqv737t.js +1 -0
- package/client/dist/assets/LibraryListPage-DmdjNa2U.css +1 -0
- package/client/dist/assets/LibraryListPage.module-r6k9nyT9.js +1 -0
- package/client/dist/assets/ListeningList-8dzhiDeb.js +1 -0
- package/client/dist/assets/Manga-dkD-uWJk.js +1 -0
- package/client/dist/assets/MangaInfoPage-nCeWZNcO.js +1 -0
- package/client/dist/assets/MangaReadPage-NdDNCyLg.js +1 -0
- package/client/dist/assets/MangaResetProgressModal-C28AiLJl.js +1 -0
- package/client/dist/assets/Mature-D5WSkhIJ.js +1 -0
- package/client/dist/assets/MatureConsentModal-BsdpNeXA.js +1 -0
- package/client/dist/assets/MatureConsentModal-CqewXc0q.css +1 -0
- package/client/dist/assets/MediaCard-B0PJStxp.css +1 -0
- package/client/dist/assets/MediaCard-C1jNesfK.js +1 -0
- package/client/dist/assets/OptionListMenu-CIvW5WmO.js +1 -0
- package/client/dist/assets/Player-D-sQfjcx.css +1 -0
- package/client/dist/assets/Player-PGj8YYO8.js +56 -0
- package/client/dist/assets/{PlayerSettings-CqgKYfAN.js → PlayerSettings-CAYfF0sA.js} +1 -1
- package/client/dist/assets/QueueOptionsButton-DNzKPzPw.js +1 -0
- package/client/dist/assets/QueueRail-BWcDVSHd.js +1 -0
- package/client/dist/assets/{QueueRail-BUYEjdaq.css → QueueRail-Bkh4VZls.css} +1 -1
- package/client/dist/assets/ReadingList-zkFp3wpF.js +1 -0
- package/client/dist/assets/ResetProgressModal-BYNYqwwl.js +1 -0
- package/client/dist/assets/Search-DCKK3seW.css +1 -0
- package/client/dist/assets/Search-yDP_wGJ1.js +1 -0
- package/client/dist/assets/Search.module-C_qwCdHS.js +1 -0
- package/client/dist/assets/Settings-BEHII_8K.css +1 -0
- package/client/dist/assets/Settings-BpKwWesn.js +21 -0
- package/client/dist/assets/SkeletonGrid-BisPI38I.css +1 -0
- package/client/dist/assets/SkeletonGrid-CYJeh04P.js +1 -0
- package/client/dist/assets/Trackers-D2KUt71k.js +2 -0
- package/client/dist/assets/Tv-D3vXCsSC.css +1 -0
- package/client/dist/assets/Tv-Ul3jFq-x.js +4 -0
- package/client/dist/assets/TvInfo-D_4QdgV4.js +1 -0
- package/client/dist/assets/TvPopup-DHXB5ZSF.js +1 -0
- package/client/dist/assets/TvSearch-COwVoGru.js +1 -0
- package/client/dist/assets/TvWatchlist-CU3r-NO5.js +1 -0
- package/client/dist/assets/VirtualKeyboard-BaUll8Yv.css +1 -0
- package/client/dist/assets/VirtualKeyboard-DeP7fb3P.js +1 -0
- package/client/dist/assets/Watchlist-DHyuTLJG.js +1 -0
- package/client/dist/assets/Watchlist-DW7kUORr.css +1 -0
- package/client/dist/assets/{hls-CdJTQ6Lc.js → hls-DOAVt6Ry.js} +1 -1
- package/client/dist/assets/index-B7katXv0.css +1 -0
- package/client/dist/assets/index-BLh_CXtu.js +178 -0
- package/client/dist/assets/libraryInvalidation-AzFLnbjH.js +1 -0
- package/client/dist/assets/playbackCompletion-DuUs8u-8.js +1 -0
- package/client/dist/assets/useAnimeInfoData-MPNJXLaM.js +1 -0
- package/client/dist/assets/useAsmr-2dFEmQD_.js +1 -0
- package/client/dist/assets/useAsmrPopup-N2vUf3Pw.js +1 -0
- package/client/dist/assets/useMangaLibrary-B3Ni34a7.js +1 -0
- package/client/dist/assets/useMangaPopup-h8NHEPUk.js +1 -0
- package/client/dist/assets/useProviders-z8L8GKy0.js +1 -0
- package/client/dist/assets/useTv-D4zQ1BsQ.js +1 -0
- package/client/dist/assets/useTvLibrary-B4vcRzQc.js +1 -0
- package/client/dist/index.html +2 -2
- package/orchestrator.js +1 -1
- package/package.json +6 -4
- package/server/dist/server.js +344 -372
- package/server/package.json +2 -1
- package/client/dist/assets/AnimeCard-DSC8cos-.js +0 -1
- package/client/dist/assets/AnimeInfo-BHj_zyLA.js +0 -1
- package/client/dist/assets/AnimeInfoPage-QCfx0BSB.js +0 -2
- package/client/dist/assets/Asmr-DzdvD9rp.js +0 -2
- package/client/dist/assets/AsmrResetProgressModal-BMi8sNRK.js +0 -1
- package/client/dist/assets/AvSyncCalibrator-BI6-WMwv.js +0 -10
- package/client/dist/assets/AvSyncCalibrator-ZSpMgUid.css +0 -1
- package/client/dist/assets/Home-BTuHZIu5.js +0 -1
- package/client/dist/assets/Home-DeY8zvfI.css +0 -1
- package/client/dist/assets/Insights-Dc8xLmsr.css +0 -1
- package/client/dist/assets/Insights-DcENcCT3.js +0 -1
- package/client/dist/assets/LibraryListPage-CHJTM02k.js +0 -1
- package/client/dist/assets/ListeningList-BMCy3Xma.js +0 -1
- package/client/dist/assets/Manga-Bh8UBkW8.js +0 -1
- package/client/dist/assets/MangaInfoPage-Xf1v-kOS.js +0 -1
- package/client/dist/assets/MangaReadPage-BktwU4Z6.js +0 -1
- package/client/dist/assets/MangaResetProgressModal-D4AFduYZ.js +0 -1
- package/client/dist/assets/Mature-0t7mUuKs.js +0 -1
- package/client/dist/assets/MediaCard-Ck-VFldj.js +0 -1
- package/client/dist/assets/MediaCard-DB6Yjgky.css +0 -1
- package/client/dist/assets/OptionListMenu-6grp_X7Q.js +0 -1
- package/client/dist/assets/Player-BMsolf38.js +0 -56
- package/client/dist/assets/Player-DCB994_8.css +0 -1
- package/client/dist/assets/QueueOptionsButton-1BIDVRnc.js +0 -1
- package/client/dist/assets/QueueRail-Dtqs6-Cj.js +0 -1
- package/client/dist/assets/ReadingList-CFu3SJg6.js +0 -1
- package/client/dist/assets/ResetProgressModal-DDLhwvu_.js +0 -1
- package/client/dist/assets/Search-Cs45oAwI.css +0 -1
- package/client/dist/assets/Search-DH17j8Mu.js +0 -1
- package/client/dist/assets/Search.module-CMEai-B-.js +0 -1
- package/client/dist/assets/Settings-CS2RnS22.js +0 -21
- package/client/dist/assets/Settings-CwIWLSfY.css +0 -1
- package/client/dist/assets/SkeletonGrid-Bge3aRl2.css +0 -1
- package/client/dist/assets/SkeletonGrid-j41CQ_eq.js +0 -1
- package/client/dist/assets/Trackers-DiwSfbK5.js +0 -2
- package/client/dist/assets/Tv-Bdruknna.css +0 -1
- package/client/dist/assets/Tv-Ko75Tjxy.js +0 -4
- package/client/dist/assets/TvInfo-B5OSSyav.js +0 -1
- package/client/dist/assets/TvPopup-Lnu1Dmx3.js +0 -1
- package/client/dist/assets/TvSearch-BYknb0BD.js +0 -1
- package/client/dist/assets/TvWatchlist-Bb9EnbIC.js +0 -1
- package/client/dist/assets/VirtualKeyboard-BmqZPZXR.js +0 -1
- package/client/dist/assets/VirtualKeyboard-KIPc5ZGH.css +0 -1
- package/client/dist/assets/Watchlist-BiDEU0iV.css +0 -1
- package/client/dist/assets/Watchlist-BuRda78R.js +0 -1
- package/client/dist/assets/Watchlist.module-XGtVQr1d.js +0 -1
- package/client/dist/assets/index-C9FfV5Fg.js +0 -178
- package/client/dist/assets/index-D0Haw_Zl.css +0 -1
- package/client/dist/assets/useAnimeInfoData-8nSxobwT.js +0 -1
- package/client/dist/assets/useAsmr-Cwcgsq-Y.js +0 -1
- package/client/dist/assets/useAsmrPopup-D1KuQwQy.css +0 -1
- package/client/dist/assets/useAsmrPopup-pj0IVP6Q.js +0 -1
- package/client/dist/assets/useMangaLibrary-C8eMKmfr.js +0 -1
- package/client/dist/assets/useMangaPopup-BIQGwv4w.js +0 -1
- package/client/dist/assets/useProviders-DvEWO7KK.js +0 -1
- package/client/dist/assets/useTv-DZzw1cpP.js +0 -1
- package/client/dist/assets/useTvLibrary-DnAI4fMY.js +0 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PlayerSettings-CAYfF0sA.js","assets/vendor-core-DfaOB3Rn.js","assets/vendor-icons-DrybRNxP.js","assets/OptionListMenu-CIvW5WmO.js","assets/AvSyncCalibrator-C5GxpyPE.js","assets/index-BLh_CXtu.js","assets/vendor-query-BBT5_sHx.js","assets/index-B7katXv0.css","assets/AvSyncCalibrator-BtUHM1mW.css","assets/PlayerSettings-BXGe3F5k.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{u as t,g as ut,h as W,P as Jt,z as Zt,d as le,A,q as U,y as er,T as Me,o as tr,a as rr,c as nr,_ as or,S as ct}from"./vendor-core-DfaOB3Rn.js";import{u as xt,b as Mt,a as St}from"./vendor-query-BBT5_sHx.js";import{S as sr,U as ar,p as wt,s as ir,C as lr,a as cr,b as ur,c as Oe,d as Nt,f as _t,e as dr,g as mr,h as fr,r as pr,u as hr,i as vr,j as gr,k as yr,l as br,m as Sr,n as Se,A as Er,R as wr,E as kr,o as Tr,q as R,t as Cr,v as Rr,P as Mr,w as Nr}from"./AvSyncCalibrator-C5GxpyPE.js";import{I as Z}from"./vendor-icons-DrybRNxP.js";import{_ as Lt,S as Xe,i as Pr,q as ie,t as he,A as ke,O as Ar,P as Qe,M as we,e as xr,m as _r,n as Lr,o as Br,p as Dr,d as $r,u as Ir,B as Je,Q as Fr,f as Or}from"./index-BLh_CXtu.js";import{l as Wr,i as Pt,a as Bt,s as Ur}from"./playbackCompletion-DuUs8u-8.js";import{M as Vr}from"./MatureConsentModal-BsdpNeXA.js";import{u as Qr}from"./useIsMobile-Dvx1uJ82.js";import{s as Ee,Q as Gr}from"./QueueRail-BWcDVSHd.js";import{u as Kr,Q as zr}from"./QueueOptionsButton-DNzKPzPw.js";import{u as Dt}from"./useProviders-z8L8GKy0.js";import{l as qr}from"./hls-DOAVt6Ry.js";import{A as Hr}from"./AnimeMetaDetails-D8WIiO4b.js";import{S as jr}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",on="_progressBarContainer_cejny_110",sn="_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",pn="_leftControls_cejny_239",hn="_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:on,progressBar:sn,thumb:an,scrubbing:ln,watchedBar:cn,bufferedBar:un,timeBubble:dn,skipSegment:mn,bottomControlsRow:fn,leftControls:pn,rightControls:hn,controlBtn:vn,theaterBtn:gn,nextEpisodeBtn:yn,active:bn,timeDisplay:Sn,skipControls:En},wn=({player:r,handlers:n,visible:a,skipIntervals:b,showNextEpisodeButton:i,onNextEpisode:l,isTheaterMode:s,onTheaterModeToggle:m,settingsBtnRef:c,timeDisplayRef:g})=>{const{state:f,refs:e,actions:o}=r,{showSettings:N}=f,u=()=>f.isMuted||f.volume===0?t(Z,{name:"volume-mute"}):f.volume<.5?t(Z,{name:"volume-down"}):t(Z,{name:"volume-up"});return t("div",{className:`${$.controlsOverlay} ${a?"":$.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:E=>E.stopPropagation(),children:[t(sr,{classes:{container:$.progressBarContainer,scrubbing:$.scrubbing,timeBubble:$.timeBubble,bar:$.progressBar,buffered:$.bufferedBar,watched:$.watchedBar,thumb:$.thumb},videoRef:e.videoRef,duration:f.duration,formatTime:o.formatTime,isScrubbing:f.isScrubbing,onSeek:n.handleSeek,onScrubStart:n.handleScrubStart,onScrubMove:n.handleScrubMove,onScrubEnd:n.handleScrubEnd,timeLabelRef:g,children:[f.duration>0&&r.state.currentSkipInterval&&t("div",{className:`${$.skipSegment} ${$[r.state.currentSkipInterval.skip_type]} `,style:{left:`${r.state.currentSkipInterval.start_time/f.duration*100}% `,width:`${(r.state.currentSkipInterval.end_time-r.state.currentSkipInterval.start_time)/f.duration*100}% `}}),b.map(E=>{const P=E.start_time/f.duration*100,y=(E.end_time-E.start_time)/f.duration*100;return t("div",{className:`${$.skipSegment} ${$[E.skip_type]} `,style:{left:`${P}% `,width:`${y}% `},title:E.skip_type.toUpperCase()},E.skip_id)})]}),t("div",{className:$.bottomControlsRow,children:[t("div",{className:$.leftControls,children:[t("button",{className:$.controlBtn,onClick:o.togglePlay,"aria-label":f.isPlaying?"Pause":"Play",children:f.isPlaying?t(Z,{name:"pause"}):t(Z,{name:"play"})}),t(ar,{muted:f.isMuted,volume:f.volume,volumeIcon:u(),buttonClassName:$.controlBtn,onToggleMute:o.toggleMute,onVolumeChange:n.handleVolumeChange,onExpandedChange:E=>o.setShowVolumeSlider(E)}),t("span",{className:$.timeDisplay,ref:g,children:[o.formatTime(0)," / ",o.formatTime(f.duration)]}),f.currentSkipInterval&&!f.isAutoSkipEnabled&&t("button",{className:$.controlBtn,onClick:()=>{e.videoRef.current&&f.currentSkipInterval&&(e.videoRef.current.currentTime=f.currentSkipInterval.end_time,o.setCurrentSkipInterval(null))},children:["Skip ",f.currentSkipInterval.skip_type==="op"?"Opening":"Ending"]})]}),t("div",{className:$.rightControls,children:[t("div",{className:$.skipControls,children:i&&t("button",{className:$.nextEpisodeBtn,onClick:l,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(Z,{name:"closed-captioning",size:22})}),t("button",{ref:c,className:`${$.controlBtn} ${N?$.active:""} `,onClick:()=>o.setShowSettings(!N),"aria-label":"Settings",children:t(Z,{name:"cog"})}),t("button",{className:`${$.controlBtn} ${$.theaterBtn} ${s?$.active:""} `,onClick:E=>{E.stopPropagation(),m()},title:s?"Exit Theater Mode":"Theater Mode","aria-label":s?"Exit Theater Mode":"Theater Mode",children:t(Z,{name:"tv"})}),t("button",{className:$.controlBtn,onClick:o.toggleFullscreen,"aria-label":f.isFullscreen?"Exit Fullscreen":"Fullscreen",children:f.isFullscreen?t(Z,{name:"compress"}):t(Z,{name:"expand"})})]})]})]})})};function kn(r){const{state:n,refs:a,actions:b}=r,i=o=>{a.videoRef.current&&(a.videoRef.current.volume=o,a.videoRef.current.muted=o===0)},l=o=>{!a.videoRef.current||isNaN(n.duration)||n.duration===0||(a.videoRef.current.currentTime=o*n.duration,b.sendProgressUpdate(!1,!0))},s=()=>{a.videoRef.current&&(b.setIsScrubbing(!0),b.wasPlayingBeforeScrub.current=!a.videoRef.current.paused,a.videoRef.current.pause())},m=o=>{!a.videoRef.current||!n.duration||(a.videoRef.current.currentTime=o*n.duration)},c=()=>{b.setIsScrubbing(!1),b.wasPlayingBeforeScrub.current&&a.videoRef.current?.play()},g=o=>{if(!a.videoRef.current)return;b.setActiveSubtitleTrack(o);try{if(o===null||o==="off")localStorage.setItem("playerSubtitlesEnabled","false");else{localStorage.setItem("playerSubtitlesEnabled","true");const u=n.availableSubtitles.find(E=>E.label===o||E.lang===o);u?localStorage.setItem("playerLastSubtitle",ir(u)):localStorage.setItem("playerLastSubtitle",o)}}catch{}let N=!1;Array.from(a.videoRef.current.textTracks).forEach(u=>{const P=o!==null&&o!=="off"&&(u.language===o||u.label===o)&&!N;u.mode=P?"showing":"hidden",P&&(N=!0)})},f=n.activeSubtitleTrack!==null&&n.activeSubtitleTrack!=="off";return{handleVolumeChange:i,handleSeek:l,handleScrubStart:s,handleScrubMove:m,handleScrubEnd:c,handleSubtitleSelection:g,isSubtitleActive:f,handleCCToggle:()=>{if(!a.videoRef.current)return;if(f){g("off");return}if(n.availableSubtitles.length===0)return;let o=null;try{o=localStorage.getItem("playerLastSubtitle")}catch{}const N=wt(n.availableSubtitles,{lastKey:o,enabled:!0});if(N<0)return;const u=n.availableSubtitles[N];g(u.label||u.lang)}}}const Tn=Zt(()=>Lt(()=>import("./PlayerSettings-CAYfF0sA.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]))),Cn=({player:r,isAutoplayEnabled:n,onAutoplayChange:a,showNextEpisodeButton:b,onNextEpisode:i,videoSources:l,selectedSource:s,selectedLink:m,onSourceChange:c,loadingVideo:g,skipIntervals:f,animeTitle:e,episodeNumber:o,isTheaterMode:N,onTheaterModeToggle:u,anime4kEnabled:E,onAnime4kToggle:P,anime4kSupported:y,anime4kProfile:w,onAnime4kProfileChange:k,anime4kInitializing:T,anime4kError:_,videoDelayEnabled:d,onVideoDelayToggle:h,videoDelayMs:x,onVideoDelayChange:J,onCalibrateAvSync:I,fallbackChoice:z,onFallbackChoiceChange:F,ambientSettings:V,onAmbientChange:G,children:K,overlays:q,isInteractingExtra:v=!1,className:S,hideChrome:M=!1})=>{const{state:C,actions:H}=r,{showSettings:D}=C,{setShowSettings:B}=H,L=kn(r),Q=ut.useRef(null),pe=ut.useRef(null),Le=ut.useRef(null);W(()=>{const X=ge=>{Q.current&&!Q.current.contains(ge.target)&&pe.current&&!pe.current.contains(ge.target)&&D&&B(!1)};return D&&document.addEventListener("mousedown",X),()=>{document.removeEventListener("mousedown",X)}},[D,B]);const Ne=C.showControls||D||C.isScrubbing,re=t(ur,{visible:Ne,title:e,episode:o?`Episode ${o}`:void 0,onBack:()=>window.history.back(),classes:{overlay:$.controlsOverlay,hidden:$.hidden,top:$.topControls,backBtn:$.backBtn,titleInfo:$.videoTitleInfo,title:$.animeTitle,episode:$.episodeNumber}}),Y=!g&&!C.isBuffering&&C.duration>0?t(lr,{isPlaying:C.isPlaying,onTogglePlay:H.togglePlay,onSkipBack:()=>H.seek(-10),onSkipForward:()=>H.seek(10)}):null,Te=t(wn,{player:r,handlers:L,visible:Ne,skipIntervals:f,showNextEpisodeButton:b,onNextEpisode:i,isTheaterMode:N,onTheaterModeToggle:u,settingsBtnRef:pe,timeDisplayRef:Le}),Be=t(Jt,{fallback:null,children:t(Tn,{ref:Q,isOpen:D,onClose:()=>B(!1),videoSources:l,currentSource:s,currentLink:m,onSourceChange:c,subtitles:C.availableSubtitles,activeSubtitleTrack:C.activeSubtitleTrack,onSubtitleChange:L.handleSubtitleSelection,subtitleSettings:{fontSize:C.subtitleFontSize,position:C.subtitlePosition,bgOpacity:C.subtitleBgOpacity,bgColor:C.subtitleBgColor,textColor:C.subtitleTextColor,edge:C.subtitleEdge,bold:C.subtitleBold},onSubtitleSettingsChange:H.setSubtitleStyle,useNativeControls:C.useNativeControls,onNativeControlsToggle:H.setUseNativeControls,anime4kEnabled:E,onAnime4kToggle:P,anime4kSupported:y,anime4kProfile:w,onAnime4kProfileChange:k,anime4kInitializing:T,anime4kError:_,videoDelayEnabled:d,onVideoDelayToggle:h,videoDelayMs:x,onVideoDelayChange:J,onCalibrateAvSync:I,isAutoSkipEnabled:C.isAutoSkipEnabled,onAutoSkipChange:X=>{H.setIsAutoSkipEnabled(X);try{localStorage.setItem("autoSkipEnabled",X.toString())}catch{}},isAutoplayEnabled:n,onAutoplayChange:a,fallbackChoice:z,onFallbackChoiceChange:F,isTheaterMode:N,ambientSettings:V,onAmbientChange:G})}),ne=D?t("div",{"data-speed-boost-ignore":"true",onClick:X=>X.stopPropagation(),children:Be}):null;return t(cr,{player:r,topBar:re,centerControls:Y,bottomBar:!g&&C.duration>0?Te:null,settingsPanel:ne,overlays:q,isInteracting:v,className:S,chromeDisabled:M,children:K})},Rn=({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(Xe,{width:"60px",height:"1.2rem",variant:"text"})}),t(Z,{name:"chevron-down",style:{opacity:.3}})]})}),t("div",{className:Ee.list,children:Array.from({length:r}).map((n,a)=>t("div",{className:Ee.item,style:{pointerEvents:"none"},children:[t("div",{className:Ee.dragHandle,style:{opacity:.2},children:t(Xe,{width:"16px",height:"16px",variant:"rectangular"})}),t("div",{className:Ee.thumbnail,style:{overflow:"hidden",background:"transparent"},children:t(Xe,{width:"100%",height:"100%",variant:"rectangular"})}),t("div",{className:Ee.meta,children:[t(Xe,{width:"80%",height:"1.2rem",variant:"text",className:Ee.metaGap}),t(Xe,{width:"40%",height:"0.8rem",variant:"rectangular",style:{borderRadius:"var(--radius-sm)"}})]})]},a))})]}),Mn={soft:"Softsub",hard:"Hardsub",mixed:"Mixed"},Nn={direct:"Direct",embed:"Embed",cookie:"Needs cookie"},Pn=["direct","cookie","embed"],An=({selectedProvider:r,onProviderChange:n,isAdult:a,options:b})=>{const l=(b&&b.length>0?b:[]).filter(s=>s.mature===(a===!0));return t("div",{className:Oe.providerSelectContainer,children:[t("h4",{children:"Provider"}),t("select",{className:Oe.providerSelect,value:r,onChange:s=>n(s.currentTarget.value),children:Pn.map(s=>{const m=l.filter(c=>(c.tier??"direct")===s);return m.length===0?null:t("optgroup",{label:Nn[s],children:m.map(c=>t("option",{value:c.id,children:c.sub?`${c.label} (${Mn[c.sub]})`:c.label},c.id))},s)})})]})},xn=({videoSources:r,selectedSource:n,selectedLink:a,onSourceChange:b,onLinkChange:i})=>{const l=Array.isArray(r)?r:[];if(l.length===0)return null;const s=n?.type==="iframe"&&(n.links?.length??0)>1;return t("div",{className:Oe.sourceSelectionContainer,children:[t("h4",{children:"Source"}),t("div",{className:Oe.sourceButtons,children:l.map((m,c)=>t("button",{className:`${Oe.sourceButton} ${n?.sourceName===m.sourceName?Oe.active:""} `,onClick:()=>b(m),children:m.sourceName},`${m.sourceName}-${c}`))}),s&&t("select",{className:Oe.sourceSelect,"aria-label":"Fallback embed quality",value:a?.link??n.links[0]?.link??"",onChange:m=>{const c=n.links.find(g=>g.link===m.currentTarget.value);c&&i(c)},children:n.links.map(m=>t("option",{value:m.link,children:m.resolutionStr},m.link))})]})},_n=ut.memo(xn,(r,n)=>r.selectedSource?.sourceName===n.selectedSource?.sourceName&&r.selectedLink?.link===n.selectedLink?.link&&r.videoSources===n.videoSources),Ln={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}},Bn={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:a="balanced",delayMs:b=0}){const[i,l]=le(!1),[s,m]=le(()=>{try{return localStorage.getItem("anime4kEnabled")==="true"}catch{return!1}}),[c,g]=le(!1),[f,e]=le(null),[o,N]=le(0),u=A(0),E=A(null),P=A(null),y=A(null),w=A(null),k=A(null),T=A(null),_=A(null),d=A(null),h=A(null),x=A(!1),J=A(-1),I=A(0),z=A(b);z.current=b;const F=A([]),V=A(!1),G=A(!1),K=A(!1),q=A(null),v=A(-1),S=A(-1),M=A(!1),C=A(0);W(()=>{async function B(){if(typeof navigator>"u"||!navigator.gpu){l(!1);return}try{const L=await navigator.gpu.requestAdapter();l(!!L)}catch{l(!1)}}B()},[]),W(()=>{if(!s||!i)return;let B=!1;const L=++u.current,Q=Y=>{if(Y)try{Y.close()}catch{}},pe=()=>{for(const Y of F.current)Q(Y.bitmap);F.current=[]},Le=Y=>Math.max(8,Math.min(40,Math.ceil(Y/16.7)+4));function Ne(){h.current!==null&&(cancelAnimationFrame(h.current),h.current=null)}async function re(){let Y=r.current;const Te=n.current;if(!Y||!Te||u.current!==L)return;const Be=performance.now()+$n;for(;(!Y||Y.videoWidth===0)&&performance.now()<Be;){if(await new Promise(ue=>requestAnimationFrame(ue)),B||u.current!==L)return;Y=r.current}if(!Y||Y.videoWidth===0){!B&&u.current===L&&(e("Timed out waiting for video metadata"),g(!1),m(!1));return}const ne=Y.videoWidth,X=Y.videoHeight,ge=Math.max(ne,X),dt=window.innerWidth,Pe=window.innerHeight,et=Math.max(dt,Pe),tt=ge<et?et/ge:1,Ge=Ln[a],mt=ge<=480?Ge.sd:ge<=720?Ge.hd:ge<=1080?Ge.fhd:1,ce=Math.min(mt,tt);Te.width=Math.round(ne*ce),Te.height=Math.round(X*ce),g(!0),e(null),I.current=0,J.current=-1,v.current=-1,S.current=-1,M.current=!1,C.current=0,pe(),x.current=!1;try{let ue=function(){B||u.current!==L||(Ne(),h.current=requestAnimationFrame(()=>{He()}))};const{ModeA:ft,ModeB:Ce,ModeC:rt,ModeAA:Ae}=await Lt(async()=>{const{ModeA:j,ModeB:ee,ModeC:se,ModeAA:de}=await import("./index-BOKlZEHq.js").then(me=>me.i);return{ModeA:j,ModeB:ee,ModeC:se,ModeAA:de}},[]);if(!navigator.gpu)throw new Error("WebGPU not available");const nt=await navigator.gpu.requestAdapter();if(!nt)throw new Error("No GPU adapter found");const O=await nt.requestDevice();if(!O)throw new Error("Failed to get GPU device");const De=Te.getContext("webgpu");if(!De)throw new Error("Failed to get WebGPU context");const Ke=navigator.gpu.getPreferredCanvasFormat();De.configure({device:O,format:Ke,alphaMode:"premultiplied"});const oe=O.createTexture({size:[ne,X],format:"rgba16float",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),ot=Bn[a],xe=Math.round(ne*ce),We=Math.round(X*ce),$e=(()=>{switch(ot){case"ModeB":return new Ce({device:O,inputTexture:oe,nativeDimensions:{width:ne,height:X},targetDimensions:{width:xe,height:We}});case"ModeC":return new rt({device:O,inputTexture:oe,nativeDimensions:{width:ne,height:X},targetDimensions:{width:xe,height:We}});case"ModeAA":return new Ae({device:O,inputTexture:oe,nativeDimensions:{width:ne,height:X},targetDimensions:{width:xe,height:We}});default:return new ft({device:O,inputTexture:oe,nativeDimensions:{width:ne,height:X},targetDimensions:{width:xe,height:We}})}})(),st=$e.getOutputTexture(),ze=O.createSampler({magFilter:"linear",minFilter:"linear"}),qe=O.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
|
+
`}),_e=O.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),at=O.createRenderPipeline({layout:O.createPipelineLayout({bindGroupLayouts:[_e]}),vertex:{module:qe,entryPoint:"vs"},fragment:{module:qe,entryPoint:"fs",targets:[{format:Ke}]},primitive:{topology:"triangle-list"}}),pt=O.createBindGroup({layout:_e,entries:[{binding:0,resource:st.createView()},{binding:1,resource:ze}]});try{const j=O.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,externalTexture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),ee=O.createShaderModule({code:In}),se=O.createRenderPipeline({layout:O.createPipelineLayout({bindGroupLayouts:[j]}),vertex:{module:ee,entryPoint:"vs"},fragment:{module:ee,entryPoint:"fs",targets:[{format:"rgba16float"}]},primitive:{topology:"triangle-list"}});q.current={pipeline:se,layout:j,inputView:oe.createView()}}catch{q.current=null}if(u.current!==L){oe.destroy(),O.destroy();return}E.current=O,P.current=De,y.current=$e,w.current=oe,k.current=st,T.current=at,_.current=ze,d.current=_e,G.current=!1,K.current=!1;async function ht(){const j=q.current;if(!j||G.current)return!1;const ee=r.current;if(!ee)return!1;const se=!K.current;se&&O.pushErrorScope("validation");try{const de=O.importExternalTexture({source:ee}),me=O.createBindGroup({layout:j.layout,entries:[{binding:0,resource:de},{binding:1,resource:ze}]}),ve=O.createCommandEncoder(),ye=ve.beginRenderPass({colorAttachments:[{view:j.inputView,loadOp:"load",storeOp:"store"}]});ye.setPipeline(j.pipeline),ye.setBindGroup(0,me),ye.draw(6),ye.end(),O.queue.submit([ve.finish()])}catch{return G.current=!0,q.current=null,!1}if(se){const de=await O.popErrorScope().catch(()=>null);if(de)return console.warn("[anime4k] blit probe failed:",de.message),G.current=!0,q.current=null,!1;K.current=!0}return!0}g(!1);async function He(){if(B||u.current!==L||!De)return;const j=r.current;if(!j||j.videoWidth===0){ue();return}if(j!==Y||j.videoWidth!==ne||j.videoHeight!==X){N(me=>me+1);return}if(j.paused||j.ended||document.hidden||j.readyState<HTMLMediaElement.HAVE_CURRENT_DATA){ue();return}const ee=j.getVideoPlaybackQuality().totalVideoFrames;if(ee===S.current){ue();return}if(x.current){ue();return}const se=j.currentTime;(j.seeking||v.current>=0&&Math.abs(se-v.current)>.5)&&(pe(),M.current=!1,C.current=0,S.current=-1),v.current=se;const de=Math.max(0,z.current||0);de>C.current&&(M.current=!1),x.current=!0;try{const me=performance.now();let ve=null,ye=!1;if(de<=0){F.current.length>0&&pe(),M.current=!1,C.current=0;let be=!1;if(!V.current)try{O.queue.copyExternalImageToTexture({source:j},{texture:oe},[ne,X]),S.current=ee,be=!0}catch(ae){if(ae instanceof TypeError)V.current=!0;else throw ae}if(!be&&!G.current&&q.current&&await ht()&&(S.current=ee,be=!0),!be){const ae=await createImageBitmap(j);S.current=ee,O.queue.copyExternalImageToTexture({source:ae},{texture:oe},[ne,X]),Q(ae)}}else{const be=await createImageBitmap(j);S.current=ee;const ae=F.current;ae.push({bitmap:be,capture:me});const vt=Le(de);for(;ae.length>vt;)Q(ae.shift()?.bitmap);let Ve=-1;for(let fe=ae.length-1;fe>=0;fe--)if(me-ae[fe].capture>=de){Ve=fe;break}if(Ve!==-1){for(let Ye=0;Ye<Ve;Ye++)Q(ae.shift()?.bitmap);const fe=ae.shift();fe?(ve=fe.bitmap,M.current=!0,C.current=de):(ve=be,ye=!0)}else if(!M.current)ve=be,ye=!0;else{const fe=ae.shift();ve=fe?fe.bitmap:be,fe||(ye=!0)}if(!ve){x.current=!1,ue();return}O.queue.copyExternalImageToTexture({source:ve},{texture:oe},[ne,X]),ye||Q(ve)}const je=O.createCommandEncoder();await $e.pass(je);const Ue=je.beginRenderPass({colorAttachments:[{view:De.getCurrentTexture().createView(),clearValue:{r:0,g:0,b:0,a:1},loadOp:"clear",storeOp:"store"}]});Ue.setPipeline(at),Ue.setBindGroup(0,pt),Ue.draw(6),Ue.end(),O.queue.submit([je.finish()]),J.current=ee,I.current=0,O.queue.onSubmittedWorkDone().then(()=>{u.current===L&&(x.current=!1)})}catch(me){if(x.current=!1,I.current+=1,I.current>=Dn&&!B&&u.current===L){console.error(me),e(me instanceof Error?me.message:"Render error"),m(!1);return}}ue()}ue()}catch(ue){!B&&u.current===L&&(e(ue instanceof Error?ue.message:"Failed to initialize upscaler"),g(!1),m(!1))}}return re(),()=>{B=!0,u.current+=1,Ne(),pe(),w.current&&(w.current.destroy(),w.current=null),k.current&&(k.current.destroy(),k.current=null),E.current&&(E.current.destroy(),E.current=null),y.current=null,T.current=null,_.current=null,d.current=null,q.current=null,P.current=null,x.current=!1}},[s,i,r,n,a,o]);const H=U(B=>{m(B);try{localStorage.setItem("anime4kEnabled",String(B))}catch{}},[]),D=U(()=>{m(B=>{const L=!B;try{localStorage.setItem("anime4kEnabled",String(L))}catch{}return L})},[]);return{isWebGPUSupported:i,isEnabled:s,isInitializing:c,error:f,toggle:D,setEnabled:H}}function On({videoRef:r,episodeKey:n,isEnabled:a,isSupported:b,mediaReady:i,isIframeSource:l,setEnabled:s}){const m=A(null),c=A(!1),g=A(!1),f=A(s);f.current=s,W(()=>{const e=m.current;m.current=n,!(e===null||e===n)&&(!a||!b||(c.current=!0,g.current=!1,f.current(!1)))},[n,a,b]),W(()=>{if(!c.current)return;if(a){g.current&&(c.current=!1);return}if(g.current=!0,!i)return;if(l){c.current=!1,f.current(!0);return}const e=r.current;if(!e)return;let o,N=!1;const u=()=>{N||(N=!0,c.current=!1,f.current(!0))};if(e.readyState>=2)return o=window.setTimeout(u,500),()=>window.clearTimeout(o);const E=()=>{window.setTimeout(u,500)};return e.addEventListener("canplay",E,{once:!0}),e.addEventListener("playing",E,{once:!0}),o=window.setTimeout(u,5e3),()=>{window.clearTimeout(o),e.removeEventListener("canplay",E),e.removeEventListener("playing",E)}},[a,i,l,r])}const Wn=()=>localStorage.getItem("preferredMode")==="dub"?"dub":"sub",Un=/^[a-z0-9-]+$/i,$t=r=>r?"preferredProviderMature":"preferredProvider",It=r=>{const n=localStorage.getItem($t(r));return n&&Un.test(n)?n:null},Ft=(r,n)=>{localStorage.setItem($t(n),r)},Vn=()=>It(!1)??"megaplay",Qn=()=>({showMeta:{},episodes:[],watchedEpisodes:[],watchlistStatus:null,showCombinedDetails:!1,currentMode:Wn(),inWatchlist:!1,videoSources:[],selectedSource:null,selectedLink:null,isAutoplayEnabled:Wr(),showResumeModal:!0,resumeTime:0,resumeDuration:0,skipIntervals:[],selectedProvider:Vn(),loadingShowData:!0,loadingVideo:!1,error:null,showCookieModal:!1,cookieProvider:null});function Gn(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 At(r,n,a,b,i=!1){if(!r||!n)throw new Error("Missing params");try{const[l,s,m,c]=await Promise.all([he.data.video.query({showId:r,episodeNumber:n,mode:a.currentMode,provider:a.selectedProvider}).catch(w=>{const k=w.data?.cause;return w.message==="AUTH_REQUIRED"&&k?.provider==="mkissa"&&b({type:"SET_STATE",payload:{showCookieModal:!0,cookieProvider:"mkissa"}}),null}),he.progress.getEpisode.query({showId:r,episodeNumber:n}).catch(()=>null),he.settings.getByKey.query({key:"preferredSource"}).catch(()=>null),he.data.skipTimes.query({showId:r,episodeNumber:n}).catch(()=>[])]),g=m?.value,f=l?.filter(w=>{const k=w.sourceName.toLowerCase();return a.currentMode==="dub"?k.includes("eng")||k.includes("dub"):k.includes("jpn")||k.includes("sub")||!k.includes("eng")&&!k.includes("dub")})??[],e=f.length>0?f:l??[];let o=e.length>0?e[0]:null;if(g){const w=e.find(k=>k.sourceName===g);w&&(o=w)}const N=o&&o.links.length>0?o.links.sort((w,k)=>(parseInt(k.resolutionStr)||0)-(parseInt(w.resolutionStr)||0))[0]:null,u=s?.currentTime||0,E=s?.duration||0,y=(Array.isArray(c)?c:c?.results||[]).map(w=>({skip_id:w.skip_id||"",skip_type:w.skip_type||"",start_time:w.interval?.start_time??w.start_time??0,end_time:w.interval?.end_time??w.end_time??0})).filter(w=>w.end_time>0);return(!l||l.length===0)&&(i||ke.error(`No video sources found for ${a.selectedProvider}`)),{videoSources:l,selectedSource:o,selectedLink:N,resumeTime:u,resumeDuration:E,showResumeModal:u>5&&o?.type!=="iframe",skipIntervals:y,fetchedEpisodeNumber:n}}catch(l){const s=l;if(s.message==="AUTH_REQUIRED")return b({type:"SET_STATE",payload:{showCookieModal:!0,cookieProvider:s.provider}}),{videoSources:[],selectedSource:null,selectedLink:null,resumeTime:0,resumeDuration:0,showResumeModal:!1,skipIntervals:[],fetchedEpisodeNumber:n};throw l}}const Kn=(r,n,a,b)=>{const[i,l]=er(Gn,a,v=>({...Qn(),showMeta:v?.name?{name:v.name,thumbnail:v.thumbnail,nativeName:v.nativeName,englishName:v.englishName,names:{romaji:v.name||v.englishName,english:v.englishName||v.name,native:v.nativeName}}:{}})),s=xt(),m=Pr(),c=A(null),g=A(null),{options:f}=Dt(),e=Me(()=>f.filter(v=>(v.kind??"anime")==="anime"),[f]),o=n||i.initialEpisode,N=A(o);W(()=>{N.current!==o&&(N.current=o,l({type:"SET_STATE",payload:{selectedSource:null,selectedLink:null}}))},[o,l]),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)&&i.selectedProvider!=="animepahe"&&c.current!==r&&(c.current=r,l({type:"SET_PROVIDER",payload:"animepahe"}))},[r,i.selectedProvider]);const{data:u,isLoading:E,error:P}=Kr(r),{data:y}=Mt({queryKey:[ie.playerData,r,i.currentMode,i.selectedProvider],queryFn:async()=>{if(!r)throw new Error("No showId");const v=async()=>{try{const D=await he.data.episodes.query({showId:r,mode:i.currentMode,provider:i.selectedProvider}).catch(()=>null);if(D?.episodes?.length)return D}catch{}return null},[S,M,C]=await Promise.all([v(),he.watchlist.check.query({showId:r}).catch(()=>({inWatchlist:!1,status:null})),he.progress.getWatchedEpisodes.query({showId:r}).catch(()=>[])]),H=S?.episodes?S.episodes.sort((D,B)=>parseFloat(D)-parseFloat(B)):[];return{description:S?.description||"",episodes:H,inWatchlist:M.inWatchlist,watchlistStatus:M.status??null,watchedEpisodes:C}},enabled:!!r});W(()=>{!n&&y?.episodes&&y.episodes.length>0&&!n&&l({type:"SET_STATE",payload:{initialEpisode:y.episodes[0]}})},[y,n]),W(()=>{if(u?.isAdult===void 0||g.current===r)return;const v=u.isAdult===!0,S=e.filter(C=>C.mature===v);if(S.length===0||e.find(C=>C.id===i.selectedProvider)?.mature===v)return;const M=It(v);g.current=r??null,l({type:"SET_PROVIDER",payload:S.find(C=>C.id===M)?.id??S[0].id})},[u?.isAdult,i.selectedProvider,r,e]),W(()=>{if(!r||!/^dango-mt-\d+$/.test(r)||g.current===`temp:${r}`)return;const v=u?.provider;v&&(g.current=`temp:${r}`,v!==i.selectedProvider&&l({type:"SET_PROVIDER",payload:v}))},[r,u,i.selectedProvider]);const{data:w,isLoading:k,error:T}=Mt({queryKey:[ie.videoSources,r,o,i.selectedProvider,i.currentMode],queryFn:()=>At(r,o,i,l),enabled:!!r&&!!o&&!(i.showMeta?.isAdult===!0&&!b?.hasMatureConsent)}),{mutateAsync:_}=St({mutationFn:async({wasIn:v,showMeta:S})=>{if(!r)throw new Error("Missing showId");if(v)await he.watchlist.remove.mutate({id:r});else{const M=S.name||S.names?.romaji;if(!M)throw new Error("Missing show name");await he.watchlist.add.mutate({id:r,name:M,thumbnail:S.thumbnail,nativeName:S.names?.native,englishName:S.names?.english,type:S.type,isAdult:S.isAdult})}return!v},onSuccess:v=>{ke.success(v?"Added to watchlist":"Removed from watchlist"),s.invalidateQueries({queryKey:[ie.playerData,r]}),s.invalidateQueries({queryKey:[ie.showData,r]}),s.invalidateQueries({queryKey:[ie.watchlist]})},onError:v=>ke.error(v instanceof Error?v.message:"Failed to update watchlist")}),d=U(async()=>{!r||!u||await _({wasIn:!!y?.inWatchlist,showMeta:u})},[r,u,y?.inWatchlist,_]),h=U(async v=>{try{await he.settings.set.mutate({key:"preferredSource",value:v})}catch(S){console.error(S)}},[]),{mutateAsync:x,isPending:J}=St({mutationFn:async({status:v})=>{if(!r)throw new Error("Missing showId");return await he.watchlist.setStatus.mutate({id:r,status:v}),v},onSuccess:v=>{l({type:"SET_STATE",payload:{inWatchlist:!0,watchlistStatus:v}}),ke.success(`Moved to ${v}`),s.invalidateQueries({queryKey:[ie.showData,r]}),s.invalidateQueries({queryKey:[ie.watchlist]}),s.invalidateQueries({queryKey:[ie.continueWatching]})},onError:()=>ke.error("Failed to update watchlist status")}),I=U(async()=>{await x({status:"Completed"})},[x]),{mutateAsync:z,isPending:F}=St({mutationFn:async({episodeNumber:v,duration:S,showMeta:M,episodes:C})=>{await he.progress.updateProgress.mutate({showId:r??"",episodeNumber:v,currentTime:S,duration:S,showName:M.name,showThumbnail:M.thumbnail,nativeName:M.names?.native,englishName:M.names?.english,genres:M.genres?.map(H=>H.name),popularityScore:Ar(M.score)??void 0,type:M.type,status:M.status,episodeCount:C.length,isAdult:M.isAdult})},onSuccess:(v,S)=>{ke.success(`Episode ${S.episodeNumber} marked as watched`),s.invalidateQueries({queryKey:[ie.playerData,r]}),s.invalidateQueries({queryKey:[ie.showMeta,r]}),s.invalidateQueries({queryKey:[ie.videoSources,r,S.episodeNumber]}),s.invalidateQueries({queryKey:[ie.continueWatching]}),s.invalidateQueries({queryKey:[ie.thisWeekSchedule]}),s.invalidateQueries(m.continueWatching.pathFilter())},onError:()=>ke.error("Failed to mark episode as watched")}),V=U(async(v,S)=>{!r||!u||await z({episodeNumber:v,duration:S,showMeta:u,episodes:y?.episodes||[]})},[r,u,y?.episodes,z]),G=U(async()=>{l({type:"SET_STATE",payload:{showCombinedDetails:!i.showCombinedDetails}})},[i.showCombinedDetails]),K=Me(()=>{const v=P||T,S=v?v.message:null,M=S==="AUTH_REQUIRED"?null:S,C=w&&w.fetchedEpisodeNumber===o?w:null,H=!!w&&!C;return{...i,currentEpisode:o,showMeta:{...i.showMeta||{},...u||{}},episodes:y?.episodes||[],watchedEpisodes:y?.watchedEpisodes||[],inWatchlist:!!y?.inWatchlist,watchlistStatus:y?.watchlistStatus??i.watchlistStatus??null,videoSources:C?.videoSources||[],selectedSource:i.selectedSource||C?.selectedSource||null,selectedLink:i.selectedLink||C?.selectedLink||null,resumeTime:C?.resumeTime||0,resumeDuration:C?.resumeDuration||0,showResumeModal:i.showResumeModal&&(C?.showResumeModal??!1),skipIntervals:C?.skipIntervals||[],loadingShowData:E,loadingVideo:k||H,error:M,fetchedEpisodeNumber:C?.fetchedEpisodeNumber}},[i,u,y,w,E,k,P,T,o]),q=U((v,S)=>{const M=S||r;if(!M||!v||M===r&&v===o)return;const H=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(M)&&i.selectedProvider!=="animepahe"?"animepahe":i.selectedProvider,D=["video-sources",M,v,H,i.currentMode];s.getQueryState(D)?.status!=="success"&&s.prefetchQuery({queryKey:D,queryFn:()=>At(M,v,{selectedProvider:H,currentMode:i.currentMode},l,!0),staleTime:300*1e3,gcTime:1800*1e3})},[r,o,s,i,l]);return{state:K,dispatch:l,toggleWatchlist:d,moveToCompleted:I,setPreferredSource:h,handleToggleDetails:G,markEpisodeWatched:V,prefetchEpisodeSources:q,isMarkingWatched:F,isUpdatingWatchlistStatus:J}};function zn({onNext:r,onToggleTheater:n,flashControls:a}){W(()=>{const b=i=>{i.target.closest('input, textarea, button, select, a, [role="button"], [contenteditable="true"]')||(["arrowup","arrowdown","arrowleft","arrowright"].includes(i.key.toLowerCase())&&a(),i.key.toLowerCase()==="n"&&r(),i.key.toLowerCase()==="t"&&n())};return document.addEventListener("keydown",b),()=>{document.removeEventListener("keydown",b)}},[a,r,n])}const Ze=(r,n,a)=>r.showId===n||!!a&&r.showId===a;function qn({videoRef:r,testClipActive:n,selectedSourceType:a,onEnded:b,queue:i,removeFromQueue:l,showId:s,showMetaId:m,showMetaStatus:c,currentEpisode:g,episodes:f,isAutoplayEnabled:e,isCompleted:o,showResumeModal:N,nextEpisode:u,previousEpisode:E,navigate:P,invalidateContinueWatching:y,dispatch:w}){const[k,T]=le(!1),_=A(!1),[d,h]=le(null),[x,J]=le(null),I=A(l);I.current=l;const z=o||k,F=z&&Pt(f,g??void 0,c);W(()=>{k||(_.current=!1)},[k]);const V=U(()=>{b();const D=i.find(L=>Ze(L,s,m)&&L.episodeNumber===g);if(i.length>0){const L=i.findIndex(pe=>Ze(pe,s,m)&&pe.episodeNumber===g),Q=L>=0?i[L+1]||null:i[0];J({nextItem:Q,playedItem:D||null}),h(2)}else D&&I.current({showId:D.showId,episodeNumber:D.episodeNumber});let B=!1;if(e&&i.length===0){const L=f.findIndex(Q=>Q===g);if(L>-1&&L<f.length-1){const Q=f[L+1];y(),P(`/watch/${s}/${Q}`),B=!0}}!B&&i.length===0&&!x&&!_.current&&Pt(f,g??void 0,c)&&w({type:"SET_STATE",payload:{showResumeModal:!0}})},[b,P,i,s,m,c,g,f,e,x,w,y]),G=U(()=>{if(i.length===0)return;b();const D=i.find(Q=>Ze(Q,s,m)&&Q.episodeNumber===g),B=i.findIndex(Q=>Ze(Q,s,m)&&Q.episodeNumber===g),L=B>=0?i[B+1]||null:i[0];D&&l({showId:D.showId,episodeNumber:D.episodeNumber}),L?P(`/watch/${L.showId}/${L.episodeNumber}`):D&&w({type:"SET_STATE",payload:{showResumeModal:!0}})},[b,P,i,l,s,m,g,w]),K=U(()=>{u&&(y(),T(!1),P(`/watch/${s}/${u}`)),w({type:"SET_STATE",payload:{showResumeModal:!1}})},[u,P,s,w,y]),q=U(()=>{i.length>0?G():u?K():ke.error("No next episode available")},[i.length,G,K,u]),v=U(()=>{_.current=!0},[]),S=U(()=>T(!1),[]),M=U(D=>T(D),[]),C=U(()=>{J(null),h(null)},[]),H=U(()=>{E&&P(`/watch/${s}/${E}`)},[E,P,s]);return W(()=>{const D=r.current;if(!D)return;const B=()=>{n||V()};return D.addEventListener("ended",B),()=>{D.removeEventListener("ended",B)}},[V,r,n]),W(()=>{const D=B=>{B.origin===window.location.origin&&a==="iframe"&&B.data?.type==="ANI_WEB_MEDIA_ENDED"&&V()};return window.addEventListener("message",D),()=>window.removeEventListener("message",D)},[V,a]),W(()=>{if(!x||d===null)return;if(d<=0){const{nextItem:B,playedItem:L}=x;J(null),h(null),L&&I.current({showId:L.showId,episodeNumber:L.episodeNumber}),B?P(`/watch/${B.showId}/${B.episodeNumber}`):L&&w({type:"SET_STATE",payload:{showResumeModal:!0}});return}const D=window.setTimeout(()=>{h(B=>B===null?null:B-1)},1e3);return()=>window.clearTimeout(D)},[x,d,P,w]),W(()=>{k&&(N||i.length>0||x||_.current||F&&w({type:"SET_STATE",payload:{showResumeModal:!0}}))},[k,F,N,i.length,x,w]),{hasReachedEpisodeEnd:k,effectiveIsCompleted:z,isShowCompleted:F,queueCountdown:d,pendingQueueTransition:x,handleQueueTransition:G,handleNextEpisode:K,handleNShortcut:q,handlePreviousEpisode:H,markShowCompletedDismissed:v,resetReachedEpisodeEnd:S,setReachedEpisodeEnd:M,cancelQueueTransition:C}}function Hn({videoRef:r,queue:n,showId:a,showMetaId:b,currentEpisode:i,selectedSourceType:l,hasNextEpisode:s,nextEpisode:m,prefetchEpisodeSources:c,setReachedEpisodeEnd:g,matchesQueueItem:f}){const[e,o]=le(!1),N=A(c);N.current=c;const u=A("");return W(()=>{const E=r.current;if(o(!1),g(!1),!E||l==="iframe")return;const P=()=>{const y=E.duration,w=E.currentTime;if(!y||Number.isNaN(y)){o(!1),g(!1);return}if(y-w<=60){const k=n.findIndex(d=>f(d,a,b)&&d.episodeNumber===i),T=n.length>0?k>=0?n[k+1]||null:n[0]:null,_=T?`${T.showId}:${T.episodeNumber}`:s?`${a}:${m}`:"";_&&u.current!==_&&(u.current=_,T?N.current(T.episodeNumber,T.showId):N.current(m??""))}o(s&&Bt(w,y)),g(w>=Math.max(y*.98,y-10))};return P(),E.addEventListener("timeupdate",P),E.addEventListener("loadedmetadata",P),()=>{E.removeEventListener("timeupdate",P),E.removeEventListener("loadedmetadata",P)}},[r,s,i,l,m,a,n,b,g,f,c]),{showNextEpisodePrompt:e}}const Et="fallbackChoice";function jn(){try{const r=localStorage.getItem(Et);return r==="iframe"||r==="retry"?r:null}catch{return null}}function Yn(r){try{r===null?localStorage.removeItem(Et):localStorage.setItem(Et,r)}catch{}}function Xn({showId:r,episodeNumber:n,currentMode:a,selectedProvider:b,selectedSourceType:i,videoSources:l,isAdult:s,providerOrder:m,matureProviders:c,setPreferredSource:g,dispatch:f,showControls:e}){const o=A(!1),N=A([]),u=A(!1),[E,P]=le(null),[y,w]=le(!1),[k,T]=le(!1),[_,d]=le(()=>jn()??"ask"),h=U(S=>{d(S),Yn(S==="ask"?null:S)},[]),x=A(_);W(()=>{x.current=_},[_]);const J=A(l);J.current=l;const I=U(()=>{o.current=!1,N.current=[],u.current=!1,P(null),w(!1)},[]);W(()=>{I()},[I,r,n]);const z=U(S=>{if(o.current)return;o.current=!0;const M=S.links[0];g(S.sourceName),f({type:"SET_STATE",payload:{selectedSource:S,selectedLink:M}}),P(null)},[f,g]),F=U(()=>{const M=J.current.find(C=>C.type==="iframe");return M?.links?.length?M:null},[]),V=U(async()=>{const S=m.filter(M=>{if(N.current.includes(M))return!1;const C=c.has(M);return s===void 0?!0:C===s});w(!0);try{for(const M of S){N.current.push(M);let C=null;try{C=await he.data.video.query({showId:r,episodeNumber:n,mode:a,provider:M})}catch{continue}const H=(C??[]).filter(L=>{const Q=L.sourceName.toLowerCase();return a==="dub"?Q.includes("eng")||Q.includes("dub"):Q.includes("jpn")||Q.includes("sub")||!Q.includes("eng")&&!Q.includes("dub")});if((H.length>0?H:C??[]).find(L=>L.type!=="iframe"&&L.links?.length)){N.current=[b],u.current=!1,f({type:"SET_STATE",payload:{selectedProvider:M,videoSources:[],selectedSource:null,selectedLink:null,loadingVideo:!0}}),Ft(M,s===!0),P(null),ke.success(`Switched to ${M} (direct stream)`);return}}P({retryFailed:!0}),ke.error("No working direct stream found on other providers")}finally{w(!1)}},[r,n,a,s,b,f,m,c]),G=U(()=>{if(o.current||u.current||i!=="player")return;const S=F();if(!S)return;N.current.includes(b)||N.current.push(b);const M=x.current;if(M==="iframe"){z(S);return}if(M==="retry"){V();return}e(!0),P({retryFailed:!1})},[i,b,F,z,V,e]),K=U(()=>{u.current=!0,P(null),T(!1)},[]),q=U(()=>{k&&h("iframe");const S=F();S?z(S):P(null)},[k,h,F,z]),v=U(()=>{k&&h("retry"),V()},[k,h,V]);return{fallbackPrompt:E,isRetryingProvider:y,rememberFallbackChoice:k,setRememberFallbackChoice:T,fallbackChoice:_,updateFallbackChoice:h,dismissFallbackPrompt:K,chooseIframeFallback:q,chooseProviderRetry:v,handleVideoSourceError:G,resetFallback:I}}function Jn({videoRef:r,selectedSource:n,selectedLink:a,loadingVideo:b,testClipActive:i,resumeTime:l,showResumeModal:s,calibReturnRef:m,setAvailableSubtitles:c,setActiveSubtitleTrack:g,showControls:f,onFatalError:e}){const o=A(null),N=A(0),u=A(l),E=A(s),P=A(e);return P.current=e,W(()=>{u.current=l,E.current=s},[l,s]),W(()=>{const y=r.current;if(!y)return;let w=!1;for(o.current&&(o.current.destroy(),o.current=null),(b||n)&&(y.pause(),y.removeAttribute("src"),y.load());y.firstChild;)y.removeChild(y.firstChild);if(i)return y.src="/av-sync-test.mp4",y.play().catch(()=>{f(!0)}),()=>{w=!0};if(!n||!a)return;if(n.type==="iframe"){N.current=0;return}m.current!=null?(N.current=m.current,m.current=null):u.current>5&&!E.current?N.current=u.current:E.current&&(N.current=0);let k=a.link;if(k.startsWith("/api/proxy")||(k=`/api/proxy?url=${encodeURIComponent(k)}`,a.headers?.Referer&&(k+=`&referer=${encodeURIComponent(a.headers.Referer)}`)),n.subtitles){const I=localStorage.getItem("playerSubtitlesEnabled")!=="false";let z=null;try{z=localStorage.getItem("playerLastSubtitle")}catch{}const F=wt(n.subtitles,{lastKey:z,enabled:I}),V=F>=0?n.subtitles[F]:null;n.subtitles.forEach(G=>{const K=document.createElement("track");K.kind="subtitles",K.label=G.label,K.srclang=G.lang;const q=G.src??G.url;if(q){let v=`/api/subtitle-proxy?url=${encodeURIComponent(q)}`;const S=a.headers?.Referer;S&&(v+=`&referer=${encodeURIComponent(S)}`),K.src=v}V&&G.label===V.label&&G.lang===V.lang&&(K.default=!0),y.appendChild(K)}),I||g("off"),c(n.subtitles)}const T=N.current;N.current=0;const _=()=>{T>0&&(y.currentTime=T)};y.addEventListener("loadedmetadata",_,{once:!0});const d=!(E.current&&u.current>5),h=()=>{d&&y.play().catch(()=>{f(!0)})};a.hls?(async()=>{const I=await qr();if(w)return;if(!I||!I.isSupported()){y.src=k,h();return}const z=document.body.classList.contains("low-end"),F=new I({maxBufferLength:z?15:30,maxMaxBufferLength:z?30:60,maxBufferSize:z?25*1e3*1e3:60*1e3*1e3,startLevel:-1,enableWorker:!0});o.current=F,F.on(I.Events.ERROR,(K,q)=>{q.fatal&&P.current()});const V=(n.subtitles?.length??0)>0,G=()=>{try{V&&typeof F.subtitleTrack=="number"&&F.subtitleTrack!==-1&&(F.subtitleTrack=-1)}catch{}};F.on(I.Events.SUBTITLE_TRACK_SWITCH,(K,q)=>{q?.id!==-1&&G()}),G(),F.loadSource(k),F.attachMedia(y),F.once(I.Events.MANIFEST_PARSED,()=>{w||h()})})():(y.src=k,h());const x=localStorage.getItem("playerVolume"),J=localStorage.getItem("playerMuted");return x!==null&&(y.volume=parseFloat(x)),J!==null&&(y.muted=J==="true"),()=>{w=!0,y.removeEventListener("loadedmetadata",_),o.current&&(o.current.destroy(),o.current=null)}},[n,a,r,m,b,i,g,c,f]),{seekToTimeRef:N}}function Zn({videoRef:r,availableSubtitles:n,activeSubtitleTrack:a,setAvailableSubtitles:b,setActiveSubtitleTrack:i}){W(()=>{const l=r.current;if(!l)return;const s=()=>{const m=Array.from(l.textTracks).map(c=>({label:c.label,lang:c.language,src:void 0,mode:c.mode}));b(m)};return l.textTracks.addEventListener("addtrack",s),l.textTracks.addEventListener("removetrack",s),s(),()=>{l.textTracks.removeEventListener("addtrack",s),l.textTracks.removeEventListener("removetrack",s)}},[r,b]),W(()=>{if(a===null&&n.length>0&&localStorage.getItem("playerSubtitlesEnabled")!=="false"){let l=null;try{l=localStorage.getItem("playerLastSubtitle")}catch{}const s=wt(n,{lastKey:l,enabled:!0});if(s<0){i("off");return}const m=n[s];i(m.lang||m.label)}},[a,n,i]),W(()=>{const l=r.current;if(!l||n.length===0)return;const s=a;if(!(localStorage.getItem("playerSubtitlesEnabled")!=="false")||s==="off"||s===null){Array.from(l.textTracks).forEach(g=>{g.mode="hidden"});return}let c=!1;if(Array.from(l.textTracks).forEach(g=>{const e=(g.language===s||g.label===s)&&!c;g.mode=e?"showing":"hidden",e&&(c=!0)}),!c&&l.textTracks.length>0){const g=Array.from(l.textTracks).find(f=>f.language==="en"||f.label==="English")||l.textTracks[0];g&&(g.mode="showing")}},[a,n,r])}function eo({videoRef:r,videoBoxH:n,style:a,sourceKey:b,activeSubtitleTrack:i,availableSubtitles:l}){W(()=>{const s="dynamic-subtitle-styles";let m=document.getElementById(s);m||(m=document.createElement("style"),m.id=s,document.head.appendChild(m)),m.textContent=Nt(a);const c=r.current;if(!c)return;const g=_t(a.fontSize,n||c.clientHeight||720);m.textContent=Nt({...a,fontSize:g});const f=()=>{const T=Number(a.position),_=isNaN(T)?0:Math.max(0,Math.min(100,T));return Math.max(0,Math.min(100,100-_))},e=(T,_)=>{try{const d=T;d.snapToLines=!1,d.line=_}catch{}},o=()=>{const T=g*16,_=c.videoHeight||c.clientHeight||720,d=c.videoWidth||c.clientWidth||1280;return{step:T*1.3/_*100,chars:Math.max(20,Math.floor(d/(T*.55)))}},N=T=>{const _=f(),d=Array.from(T.activeCues??[]);if(d.length<=1){d.forEach(I=>e(I,_));return}const{step:h,chars:x}=o();let J=_;for(let I=d.length-1;I>=0;I--){const F=String(d[I].text??"").replace(/<[^>]*>/g,"").split(`
|
|
55
|
+
`).reduce((G,K)=>G+Math.max(1,Math.ceil(K.length/x)),0),V=J-F*h;e(d[I],Math.max(0,V)),J=V-h*.4}},u=T=>{if(!T.cues)return;const _=f();Array.from(T.cues).forEach(d=>e(d,_)),T.mode==="showing"&&N(T)},E=()=>{Array.from(c.textTracks).forEach(u)};E();const P=T=>{const _=T.target;_.mode==="showing"&&N(_)};Array.from(c.textTracks).forEach(T=>{T.addEventListener("cuechange",P)});const y=()=>{Array.from(c.textTracks).forEach(T=>{T.removeEventListener("cuechange",P),T.addEventListener("cuechange",P)}),E()};c.textTracks.addEventListener("addtrack",y),c.textTracks.addEventListener("removetrack",y);const w=Array.from(c.querySelectorAll("track")),k=()=>{E()};return w.forEach(T=>{T.addEventListener("load",k)}),()=>{Array.from(c.textTracks).forEach(T=>{T.removeEventListener("cuechange",P)}),c.textTracks.removeEventListener("addtrack",y),c.textTracks.removeEventListener("removetrack",y),w.forEach(T=>{T.removeEventListener("load",k)})}},[a,n,r,b,i,l])}function to({videoRef:r,overlayRef:n,style:a,activeSubtitleTrack:b,delayMs:i,enabled:l}){W(()=>{if(!l)return;const s=r.current,m=n.current;if(!s||!m)return;const c=localStorage.getItem("playerSubtitlesEnabled")!=="false",g=()=>{if(m.innerHTML="",!c||b==="off"||b===null)return;const o=Array.from(s.textTracks).find(k=>k.language===b||k.label===b);if(!o||o.mode!=="showing")return;const N=i/1e3;let u;if(N>0&&o.cues){const k=s.currentTime-N;u=Array.from(o.cues).filter(T=>T.startTime<=k&&k<=T.endTime)}else u=Array.from(o.activeCues??[]);if(u.length===0)return;const E={...a,fontSize:_t(a.fontSize,s.clientHeight||0)},P=dr(E),y=mr(s,E.position),w=Array.from(u);w.forEach((k,T)=>{const _=String(k.text??"");if(!fr(_).trim())return;const d=document.createElement("div"),h=(w.length-1-T)*1.7;d.style.cssText=`${P}
|
|
56
|
+
bottom: calc(${y}px + ${h}em);`,d.innerHTML=pr(_),m.appendChild(d)})},f=()=>g(),e=()=>g();return Array.from(s.textTracks).forEach(o=>{o.addEventListener("cuechange",f)}),s.addEventListener("timeupdate",e),g(),()=>{Array.from(s.textTracks).forEach(o=>{o.removeEventListener("cuechange",f)}),s.removeEventListener("timeupdate",e),m.innerHTML=""}},[b,i,l,n,a,r])}const ro=({isOpen:r,onClose:n,onSuccess:a})=>{const b=()=>{a?.(),n()};return t(we,{isOpen:r,onClose:n,title:"MKissa Browser Verification",children:t("div",{className:Qe.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:Qe.actions,children:t("a",{className:Qe.link,href:"https://mkissa.to/anime",target:"_blank",rel:"noreferrer",children:"Open MKissa anime"})}),t("div",{className:Qe.actions,children:[t("button",{className:Qe.secondaryButton,onClick:n,children:"Cancel"}),t("button",{className:Qe.button,onClick:b,children:"Refresh Dango"})]})]})})},So=()=>{const{id:r,episodeNumber:n}=tr(),a=rr(),b=xt(),i=nr(),{hasConsent:l,grant:s}=xr(),{options:m}=Dt(),c=Me(()=>m.filter(p=>(p.kind??"anime")==="anime"),[m]),g=Me(()=>c.map(p=>p.id),[c]),f=Me(()=>new Set(c.filter(p=>p.mature).map(p=>p.id)),[c]),{state:e,dispatch:o,toggleWatchlist:N,moveToCompleted:u,setPreferredSource:E,handleToggleDetails:P,markEpisodeWatched:y,prefetchEpisodeSources:w,isMarkingWatched:k,isUpdatingWatchlistStatus:T}=Kn(r,n,i.state||null,{hasMatureConsent:l});W(()=>{if(r&&e.showMeta?.id&&e.showMeta.id!==r){const p=n?`/watch/${e.showMeta.id}/${n}${window.location.search}`:`/watch/${e.showMeta.id}${window.location.search}`;a(p,{replace:!0})}},[r,e.showMeta?.id,n,a]);const _=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]),d=hr({skipIntervals:e.skipIntervals,showId:r,episodeNumber:e.currentEpisode?.toString(),episodeCount:e.episodes.length||void 0,sourceType:e.selectedSource?.type,showMeta:_}),{refs:h,actions:x}=d,J=Qr(),I=A(null),z=A(null),F=A(null),[V,G]=le(()=>{try{const p=localStorage.getItem("anime4kProfile");return["low","balanced","high","denoise"].includes(p)?p:"balanced"}catch{return"balanced"}}),{videoDelayMs:K,videoDelayEnabled:q,setDelayEnabled:v,handleVideoDelayChange:S,isCalibrating:M,testClipActive:C,stopCalibration:H,openAvSyncCalibrator:D,cancelAvSyncCalibrator:B,applyAvSyncCalibrator:L,toggleTestClip:Q,calibReturnRef:pe,effectiveVideoDelayMs:Le}=vr(h.videoRef,()=>x.setShowSettings(!1)),Ne=A(null),re=Fn({videoRef:h.videoRef,canvasRef:z,profile:V,delayMs:Le}),Y=re.isEnabled&&re.isWebGPUSupported;On({videoRef:h.videoRef,episodeKey:`${r??""}:${e.currentEpisode??""}`,isEnabled:re.isEnabled,isSupported:re.isWebGPUSupported,mediaReady:!e.loadingVideo&&!!e.selectedLink,isIframeSource:e.selectedSource?.type==="iframe",setEnabled:re.setEnabled}),gr({videoRef:h.videoRef,canvasRef:Ne,delayMs:Le,enabled:q&&!Y});const Te=q&&!Y,Be=Y||Te,[ne,X]=le(!1),ge=A(n);W(()=>{ge.current!==n&&(ge.current=n,H())},[n,H]);const dt=U(()=>{b.invalidateQueries({queryKey:[ie.continueWatching]})},[b]),{data:Pe=[],isLoading:et}=_r(),tt=Lr(),Ge=Br(),mt=Dr(),{isTheaterMode:ce,toggleTheaterMode:ue,handleLayoutClick:ft}=yr();or(()=>{if(d.state.isFullscreen||ce)return;const p=h.playerContainerRef.current,te=I.current;if(!p||!te)return;const Fe=()=>{const bt=p.getBoundingClientRect().height;te.style.height=`${bt}px`};Fe();const lt=new ResizeObserver(Fe);return lt.observe(p),()=>lt.disconnect()},[d.state.isFullscreen,ce,h.playerContainerRef]);const Ce=Me(()=>e.episodes.findIndex(p=>p===e.currentEpisode),[e.episodes,e.currentEpisode]),rt=Ce>0?e.episodes[Ce-1]:null,Ae=Ce>=0&&Ce<e.episodes.length-1?e.episodes[Ce+1]:null,nt=Ce>-1&&Ce<e.episodes.length-1,O=Bt(e.resumeTime,e.resumeDuration),{hasReachedEpisodeEnd:De,effectiveIsCompleted:Ke,isShowCompleted:oe,queueCountdown:ot,pendingQueueTransition:xe,handleQueueTransition:We,handleNextEpisode:$e,handleNShortcut:st,handlePreviousEpisode:ze,markShowCompletedDismissed:qe,resetReachedEpisodeEnd:_e,setReachedEpisodeEnd:at,cancelQueueTransition:pt}=qn({videoRef:h.videoRef,testClipActive:C,selectedSourceType:e.selectedSource?.type,onEnded:x.onEnded,queue:Pe,removeFromQueue:tt.mutate,showId:r,showMetaId:e.showMeta?.id,showMetaStatus:e.showMeta.status,currentEpisode:e.currentEpisode,episodes:e.episodes,isAutoplayEnabled:e.isAutoplayEnabled,isCompleted:O,showResumeModal:e.showResumeModal,nextEpisode:Ae,previousEpisode:rt,navigate:a,invalidateContinueWatching:dt,dispatch:o}),{showNextEpisodePrompt:ht}=Hn({videoRef:h.videoRef,queue:Pe,showId:r,showMetaId:e.showMeta?.id,currentEpisode:e.currentEpisode,selectedSourceType:e.selectedSource?.type,hasNextEpisode:nt,nextEpisode:Ae,prefetchEpisodeSources:w,setReachedEpisodeEnd:at,matchesQueueItem:Ze}),He=e.showResumeModal&&(oe||!Ke),ee=Ke&&!oe&&Pe.length===0&&!xe&&(e.showResumeModal||De),se=He||ee;br(d,!!e.selectedLink&&!ce&&!se);const{fallbackPrompt:de,isRetryingProvider:me,rememberFallbackChoice:ve,setRememberFallbackChoice:ye,fallbackChoice:je,updateFallbackChoice:Ue,dismissFallbackPrompt:be,chooseIframeFallback:ae,chooseProviderRetry:vt,handleVideoSourceError:Ve,resetFallback:fe}=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:g,matureProviders:f,setPreferredSource:E,dispatch:o,showControls:x.setShowControls}),{seekToTimeRef:Ye}=Jn({videoRef:h.videoRef,selectedSource:e.selectedSource,selectedLink:e.selectedLink,loadingVideo:e.loadingVideo,testClipActive:C,resumeTime:e.resumeTime,showResumeModal:e.showResumeModal,calibReturnRef:pe,setAvailableSubtitles:x.setAvailableSubtitles,setActiveSubtitleTrack:x.setActiveSubtitleTrack,showControls:x.setShowControls,onFatalError:Ve});W(()=>{se&&d.state.isFullscreen&&d.actions.toggleFullscreen()},[se,d.state.isFullscreen,d.actions]),W(()=>{se&&h.videoRef.current&&h.videoRef.current.pause()},[se,h.videoRef]);const{titlePreference:it}=$r(),{lowEndMode:kt}=Ir(),{settings:gt,update:Ot}=Sr(),Wt=ce&>.enabled&&!kt&&e.selectedSource?.type!=="iframe"&&!!e.selectedLink,Ie=Me(()=>{if(!e.showMeta||e.loadingShowData)return"Loading...";const{name:p,names:te}=e.showMeta;return it==="name"?p||"Loading...":it==="nativeName"?te?.native||p||"Loading...":it==="englishName"?te?.english||p||"Loading...":p||"Loading..."},[e.showMeta,it,e.loadingShowData]);W(()=>{Ie&&Ie!=="Loading..."&&e.currentEpisode&&(document.title=`► ${Ie} Episode ${e.currentEpisode} - dango`)},[Ie,e.currentEpisode]),zn({onNext:st,onToggleTheater:ue,flashControls:d.actions.flashControls});const{setAvailableSubtitles:Ut,setActiveSubtitleTrack:Vt}=x,Tt=Me(()=>({fontSize:d.state.subtitleFontSize,position:d.state.subtitlePosition,bgOpacity:d.state.subtitleBgOpacity,bgColor:d.state.subtitleBgColor,textColor:d.state.subtitleTextColor,edge:d.state.subtitleEdge,bold:d.state.subtitleBold}),[d.state.subtitleFontSize,d.state.subtitlePosition,d.state.subtitleBgOpacity,d.state.subtitleBgColor,d.state.subtitleTextColor,d.state.subtitleEdge,d.state.subtitleBold]);Zn({videoRef:h.videoRef,availableSubtitles:d.state.availableSubtitles,activeSubtitleTrack:d.state.activeSubtitleTrack,setAvailableSubtitles:Ut,setActiveSubtitleTrack:Vt});const[Qt,Gt]=le(0);W(()=>{const p=h.videoRef.current;if(!p)return;const te=()=>Gt(p.clientHeight||0);te();const Fe=new ResizeObserver(te);return Fe.observe(p),()=>Fe.disconnect()},[h.videoRef,e.selectedSource,e.selectedLink]),eo({videoRef:h.videoRef,videoBoxH:Qt,style:Tt,sourceKey:`${e.selectedSource?.sourceName??""}:${e.selectedLink?.link??""}`,activeSubtitleTrack:d.state.activeSubtitleTrack,availableSubtitles:d.state.availableSubtitles}),to({videoRef:h.videoRef,overlayRef:F,style:Tt,activeSubtitleTrack:d.state.activeSubtitleTrack,delayMs:Le,enabled:Be}),W(()=>{try{localStorage.setItem("anime4kProfile",V)}catch{}},[V]);const Kt=()=>{h.videoRef.current&&(h.videoRef.current.currentTime=e.resumeTime,h.videoRef.current.play()),o({type:"SET_STATE",payload:{showResumeModal:!1}})},zt=()=>{h.videoRef.current&&(h.videoRef.current.currentTime=0,h.videoRef.current.play()),o({type:"SET_STATE",payload:{showResumeModal:!1}})},yt=U(()=>{oe&&qe(),ee&&_e(),o({type:"SET_STATE",payload:{showResumeModal:!1}})},[o,oe,ee,qe,_e]),qt=U(()=>{if(_e(),h.videoRef.current)try{h.videoRef.current.currentTime=0,h.videoRef.current.play().catch(()=>{})}catch{}o({type:"SET_STATE",payload:{showResumeModal:!1}})},[o,h,_e]),Ht=U(async()=>{try{await u(),o({type:"SET_STATE",payload:{showResumeModal:!1}}),a("/")}catch{}},[u,o,a]),Ct=(p,te)=>t("div",{className:p,children:[t("button",{className:`${R.episodeNavBtn} ${R.secondary}`,onClick:ze,disabled:!rt,type:"button",children:[t(Z,{name:"chevron-left",size:12}),"Prev EP"]}),t("button",{className:`${R.episodeNavBtn} ${R.primary}`,onClick:$e,disabled:!Ae,type:"button",children:["Next EP",t(Z,{name:"chevron-right",size:12})]}),te==="mobile"&&J&&t("button",{className:`${R.episodeNavBtn} ${R.episodePickerBtn}`,onClick:()=>X(!0),type:"button",children:[t(Z,{name:"list-ul",size:12}),"Episodes"]})]}),jt=p=>{o({type:"SET_STATE",payload:{isAutoplayEnabled:p}}),Ur(p)},Rt=!!(e.currentEpisode&&e.watchedEpisodes.includes(e.currentEpisode)),Yt=e.selectedProvider!=="megaplay"||e.selectedSource?.type==="iframe",Xt=U(async()=>{if(!r||!e.currentEpisode||!e.showMeta.name||k)return;const p=h.videoRef.current?.duration,te=Math.max(p||0,e.resumeDuration||0,Number(e.showMeta.episodeDuration||0)*60,1);await y(e.currentEpisode,te)},[r,e.currentEpisode,e.showMeta,e.resumeDuration,y,k,h.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 Re=e.loadingShowData||e.loadingVideo;return e.showMeta?.isAdult===!0&&!l?t("div",{className:Se.playerPageLayout,children:t(Vr,{isOpen:!0,onClose:()=>a("/home"),onGrant:s})}):t("div",{className:`${Se.playerPageLayout} ${ce?Se.theaterMode:""}`,onClick:ft,children:[ce&&t(Er,{videoRef:h.videoRef,active:Wt,settings:gt}),t(we,{isOpen:He&&oe,onClose:yt,title:"Show Completed!",width:"sm",children:[t(we.Body,{children:t("p",{children:"Congratulations! You've finished the final episode of this series."})}),t(we.Actions,{children:t(Je,{onClick:Ht,disabled:T,children:T?"Saving...":"Move to Completed"})})]}),t(wr,{isOpen:He&&!oe,onClose:yt,title:"Resume Playback?",message:t(ct,{children:["You were watching at ",t("strong",{children:d.actions.formatTime(e.resumeTime)}),". Would you like to continue?"]}),onResume:Kt,onRestart:zt}),t(we,{isOpen:ee,onClose:yt,title:"Episode Completed",width:"sm",children:[t(we.Body,{children:t("p",{children:["You've already watched Episode ",t("strong",{children:e.currentEpisode}),".",Ae?" Would you like to watch the next episode?":""]})}),t(we.Actions,{children:[t(Je,{variant:"secondary",onClick:qt,children:"Replay"}),Ae&&t(Je,{onClick:$e,children:`Watch EP ${Ae}`})]})]}),t(we,{isOpen:!!de,onClose:be,title:"Direct stream failed",width:"sm",children:[t(we.Body,{children:[t("p",{children:[t("strong",{children:e.selectedProvider}),"'s direct stream failed for this episode."]}),de?.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:ve,onChange:p=>ye(p.currentTarget.checked)}),"Remember my choice"]})]}),t(we.Actions,{children:[t(Je,{variant:"secondary",onClick:ae,children:"Continue with iframe"}),t(Je,{onClick:vt,disabled:me,children:me?"Searching…":"Try another provider"})]})]}),t(Fr,{isOpen:!!e.showCookieModal&&e.cookieProvider!=="mkissa",onClose:()=>o({type:"SET_STATE",payload:{showCookieModal:!1}}),onSuccess:()=>{b.invalidateQueries({queryKey:[ie.videoSources,r,e.currentEpisode,e.selectedProvider,e.currentMode]})}}),t(ro,{isOpen:!!e.showCookieModal&&e.cookieProvider==="mkissa",onClose:()=>o({type:"SET_STATE",payload:{showCookieModal:!1}}),onSuccess:()=>{b.invalidateQueries({queryKey:[ie.videoSources,r,e.currentEpisode,e.selectedProvider,e.currentMode]})}}),!ce&&t("aside",{ref:I,className:Se.episodeSidebar,children:e.loadingShowData?t(kr,{variant:"sidebar"}):t(Tr,{episodes:e.episodes,currentEpisode:e.currentEpisode??void 0,watchedEpisodes:e.watchedEpisodes,onEpisodeClick:p=>a(`/watch/${r}/${p}`)})}),t("div",{className:Se.playerMain,children:[t("div",{className:`${R.videoContainer} ${d.state.isFullscreen?"":Se.videoPlayerWrapper} ${d.state.isFullscreen?R.fullscreenActive:""}`,style:{...se?{visibility:"hidden"}:{}},onContextMenu:p=>p.preventDefault(),children:t(Cn,{player:d,isAutoplayEnabled:e.isAutoplayEnabled,onAutoplayChange:jt,fallbackChoice:je,onFallbackChoiceChange:Ue,ambientSettings:gt,onAmbientChange:Ot,showNextEpisodeButton:!se&&ht&&Pe.length===0,onNextEpisode:$e,videoSources:e.videoSources,selectedSource:e.selectedSource,selectedLink:e.selectedLink,onSourceChange:(p,te)=>{h.videoRef.current&&!isNaN(h.videoRef.current.currentTime)&&(Ye.current=h.videoRef.current.currentTime),E(p.sourceName),o({type:"SET_STATE",payload:{selectedSource:p,selectedLink:te,showResumeModal:e.showResumeModal&&p.type!=="iframe"}})},loadingVideo:Re,skipIntervals:e.skipIntervals,animeTitle:Ie,episodeNumber:e.currentEpisode??void 0,isTheaterMode:ce,onTheaterModeToggle:ue,anime4kEnabled:re.isEnabled,onAnime4kToggle:re.toggle,anime4kSupported:re.isWebGPUSupported,anime4kProfile:V,onAnime4kProfileChange:G,anime4kInitializing:re.isInitializing,anime4kError:re.error,videoDelayEnabled:q,onVideoDelayToggle:v,videoDelayMs:K,onVideoDelayChange:S,onCalibrateAvSync:D,isInteractingExtra:ne||M,className:Cr.shellFill,hideChrome:e.selectedSource?.type==="iframe",overlays:t(ct,{children:[d.state.isSpeedBoostActive&&t("div",{className:R.speedBoostBadge,"aria-hidden":"true",children:[t("span",{children:"2x"}),t(Z,{name:"forward",size:12})]}),ot!==null&&xe?.nextItem&&t("div",{className:R.queueCountdown,children:["Queue next in ",ot,"s"]})]}),children:[Re&&t("div",{className:R.loadingOverlay,children:t("div",{className:R.loadingDots,children:[t("div",{className:R.dot}),t("div",{className:R.dot}),t("div",{className:R.dot})]})}),d.state.isBuffering&&!Re&&e.selectedSource?.type!=="iframe"&&t("div",{className:R.bufferingOverlay,children:t("div",{className:R.bufferingSpinner})}),e.selectedSource?.type==="iframe"?!Re&&t("iframe",{src:e.selectedLink?.link,className:R.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:[!Re&&e.videoSources.length===0&&t("div",{className:R.errorOverlay,children:[t("p",{children:["No sources found for this episode with ",e.selectedProvider,"."]}),t("p",{className:R.errorSubtext,children:"Please try selecting a different provider below."}),t("button",{className:R.retryButton,onClick:()=>window.location.reload(),"data-speed-boost-ignore":"true",style:{marginTop:8},children:"Retry"})]}),!Re&&e.videoSources.length>0&&t("video",{ref:h.videoRef,controls:d.state.useNativeControls,playsInline:!0,"webkit-playsinline":"true",disablePictureInPicture:!0,disableRemotePlayback:!0,onPlay:x.onPlay,onPause:x.onPause,onLoadedMetadata:x.onLoadedMetadata,onTimeUpdate:()=>{C||(x.onTimeUpdate(),xe&&h.videoRef.current&&h.videoRef.current.currentTime<h.videoRef.current.duration-1&&pt())},onVolumeChange:x.onVolumeChange,onWaiting:x.onWaiting,onPlaying:x.onPlaying,onCanPlay:x.onCanPlay,onError:Ve,onContextMenu:p=>p.preventDefault(),className:Be?R.videoElementHidden:""}),re.isWebGPUSupported&&!Re&&e.videoSources.length>0&&t("canvas",{ref:z,className:`${R.upscalerCanvas} ${Y?R.upscalerActive:""}`}),!Y&&!Re&&e.videoSources.length>0&&t("canvas",{ref:Ne,className:`${R.upscalerCanvas} ${Te?R.upscalerActive:""}`}),re.isEnabled&&re.isWebGPUSupported&&re.isInitializing&&t("div",{className:R.upscalerStatusBadge,children:"Preparing upscaler…"}),Be&&t("div",{ref:F,className:R.subtitleOverlay}),t(Rr,{isOpen:M,ms:K,onChange:S,onApply:L,onClose:B,testClipActive:C,onTestClip:Q})]})]})}),!ce&&t(Mr,{}),!ce&&t(ct,{children:[et&&Pe.length===0?t(Rn,{count:3}):t(Gr,{title:"Queue",items:Pe,currentShowId:r,currentEpisode:e.currentEpisode??void 0,onNextQueue:We,onRemove:p=>tt.mutate({showId:p.showId,episodeNumber:p.episodeNumber}),onClear:()=>Ge.mutate(),showClearAll:!0,onReorder:p=>mt.mutate(p.map(te=>({id:te.id,showId:te.showId,episodeNumber:te.episodeNumber})))}),t("div",{className:R.streamPanel,children:[t(An,{selectedProvider:e.selectedProvider,isAdult:e.showMeta?.isAdult,options:c,onProviderChange:p=>{fe(),o({type:"SET_STATE",payload:{selectedProvider:p,videoSources:[],selectedSource:null,selectedLink:null,loadingVideo:!0}}),Ft(p,e.showMeta?.isAdult===!0)}}),Ct(`${R.episodeActions} ${R.desktopEpisodeActions}`,"desktop"),Re?t("div",{className:R.sourceLoader,children:t("div",{className:R.spinner})}):t(_n,{videoSources:e.videoSources,selectedSource:e.selectedSource,selectedLink:e.selectedLink,onSourceChange:p=>{h.videoRef.current&&!isNaN(h.videoRef.current.currentTime)&&(Ye.current=h.videoRef.current.currentTime);const Fe=(p.links||[]).sort((lt,bt)=>(parseInt(bt.resolutionStr)||0)-(parseInt(lt.resolutionStr)||0))[0]||null;E(p.sourceName),o({type:"SET_STATE",payload:{selectedSource:p,selectedLink:Fe,showResumeModal:e.showResumeModal&&p.type!=="iframe"}})},onLinkChange:p=>{e.selectedSource&&(E(e.selectedSource.sourceName),o({type:"SET_STATE",payload:{selectedLink:p}}))}})]}),t("div",{className:Se.playerInfoContainer,children:[t("div",{className:Se.playerInfoHeader,children:[t("div",{className:Se.playerAnimeCard,children:t("img",{src:Or(e.showMeta.thumbnail||""),alt:Ie,loading:"lazy",decoding:"async",onError:p=>{p.target.src="/placeholder.svg"}})}),t("div",{className:Se.videoTitleSection,children:[t("div",{className:R.titleContainer,children:[t("h1",{children:Ie}),t("div",{className:R.scheduleInfo,children:[e.showMeta.status&&t("span",{className:R.status,children:e.showMeta.status}),e.showMeta.nextEpisodeAirDate&&t("span",{className:R.nextEpisode,children:["Next episode: ",e.showMeta.nextEpisodeAirDate]})]})]}),t("div",{className:R.controls,children:[t("button",{className:`${R.watchlistBtn} ${e.inWatchlist?R.inList:""}`,onClick:N,children:[e.inWatchlist?t(Z,{name:"check",size:14}):t(Z,{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:`${R.watchlistBtn} ${R.queueBtn}`,activeClassName:R.queueActive}),Yt&&t("button",{className:`${R.watchlistBtn} ${R.markWatchedBtn} ${Rt?R.markWatchedDone:""}`,onClick:Xt,disabled:k||!e.currentEpisode,children:[t(Z,{name:"check",size:14}),k?"Saving...":Rt?"Watched":"Mark Watched"]}),t("button",{className:`${R.watchlistBtn} ${R.modeToggleBtn} ${e.currentMode==="dub"?R.modeToggleActive:""}`,onClick:()=>{const p=e.currentMode==="dub"?"sub":"dub";fe(),o({type:"SET_MODE",payload:p}),localStorage.setItem("preferredMode",p)},type:"button","aria-pressed":e.currentMode==="dub",children:e.currentMode==="dub"?"DUB":"SUB"}),kt&&t("button",{className:`${R.watchlistBtn} ${R.modeToggleBtn} ${d.state.useNativeControls?R.modeToggleActive:""}`,onClick:()=>{const p=!d.state.useNativeControls;d.actions.setUseNativeControls(p),localStorage.setItem("playerUseNativeControls",p.toString())},type:"button",children:d.state.useNativeControls?"NATIVE: ON":"NATIVE: OFF"})]})]})]}),Ct(`${R.episodeActions} ${R.mobileEpisodeActions}`,"mobile"),t("div",{className:Se.infoColumns,children:[t("div",{className:`${R.descriptionSection} ${R.synopsisFlat}`,children:[t("h3",{children:"Synopsis"}),t(jr,{text:e.showMeta.description?e.showMeta.description.replace(/<[^>]*>?/gm,""):"",emptyText:"No description available."}),t("button",{className:R.detailsToggleBtn,onClick:P,children:[e.showCombinedDetails?t(Z,{name:"chevron-up"}):t(Z,{name:"chevron-down"}),e.showCombinedDetails?"Hide Details":"Show Details"]})]}),e.showCombinedDetails&&t(Hr,{showMeta:e.showMeta,styles:R})]})]})]})]}),t(Nr,{isOpen:ne,onClose:()=>X(!1),episodes:e.episodes,currentEpisode:e.currentEpisode??void 0,watchedEpisodes:e.watchedEpisodes,onEpisodeClick:p=>{X(!1),a(`/watch/${r}/${p}`)}})]})};export{So as default};
|
|
@@ -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-
|
|
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-CIvW5WmO.js";import{u as re}from"./index-BLh_CXtu.js";import"./AvSyncCalibrator-C5GxpyPE.js";import"./vendor-query-BBT5_sHx.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},we=w.forwardRef(ve);export{we as default};
|
|
@@ -0,0 +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-BLh_CXtu.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};
|
|
@@ -0,0 +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-BLh_CXtu.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
|
-
.
|
|
1
|
+
._section_rx9ev_1{border:1px solid var(--border-primary);border-radius:var(--radius-lg);background:var(--bg-tertiary);overflow:hidden;box-shadow:0 4px 24px #0003;margin-bottom:3rem}._header_rx9ev_10{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-6);background:linear-gradient(to right,var(--accent-subtle),transparent 55%);border-bottom:1px solid var(--border-primary)}._headerToggle_rx9ev_20{flex:1;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);border:none;background:transparent;color:inherit;padding:0;text-align:left;cursor:pointer}._headerActions_rx9ev_34{display:flex;align-items:center;gap:var(--space-3)}._title_rx9ev_40{display:flex;align-items:center;gap:var(--space-4);font-weight:800;color:var(--text-primary);font-size:1.1rem;letter-spacing:-.01em}._badge_rx9ev_50{min-width:20px;height:20px;padding:0 6px;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;background:var(--accent-subtle);color:var(--accent-light);font-size:.7rem;font-weight:900;border:1px solid var(--border-accent)}._clearBtn_rx9ev_65{border:1px solid var(--border-primary);background:var(--bg-secondary);color:var(--text-secondary);border-radius:var(--radius-md);cursor:pointer;padding:.5rem 1rem;font-size:.8rem;font-weight:700;transition:all var(--transition-base)}._clearBtn_rx9ev_65:hover{background:var(--bg-elevated);color:var(--color-danger);border-color:color-mix(in srgb,var(--color-danger) 30%,transparent)}._nextBtn_rx9ev_83{border:1px solid var(--border-secondary);background:var(--bg-secondary);color:var(--text-primary);border-radius:var(--radius-md);cursor:pointer;padding:.5rem 1rem;font-size:.8rem;font-weight:800;transition:all var(--transition-base)}._nextBtn_rx9ev_83:hover{background:var(--bg-elevated);color:var(--text-primary);transform:translateY(-1px)}._list_rx9ev_101{display:flex;gap:var(--space-4);overflow-x:auto;padding:var(--space-6);-webkit-user-select:none;user-select:none;scrollbar-width:none}._list_rx9ev_101::-webkit-scrollbar{display:none}._item_rx9ev_114{width:240px;flex:0 0 240px;display:grid;grid-template-columns:24px 54px minmax(0,1fr) 32px;align-items:center;gap:var(--space-2);padding:var(--space-2);border:1px solid var(--border-primary);border-radius:var(--radius-md);background:var(--bg-secondary);transition:all var(--transition-base)}._item_rx9ev_114:hover{background:var(--bg-elevated);border-color:var(--border-accent);transform:translateY(-2px)}._item_rx9ev_114._active_rx9ev_134{border-color:var(--border-accent);background:var(--bg-elevated);box-shadow:inset 0 0 0 1px var(--border-accent),0 0 16px var(--accent-glow)}._item_rx9ev_114._dragging_rx9ev_142{opacity:.5;background:var(--bg-tertiary);border-style:dashed;transform:scale(.95)}._dragHandle_rx9ev_149{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-tertiary);cursor:grab;border:none;background:transparent;padding:0;transition:color var(--transition-base)}._item_rx9ev_114:hover ._dragHandle_rx9ev_149{color:var(--text-secondary)}._thumbnail_rx9ev_167{width:54px;height:72px;object-fit:cover;border-radius:var(--radius-sm);background:var(--bg-tertiary)}._meta_rx9ev_175{min-width:0;display:flex;flex-direction:column;gap:2px}._name_rx9ev_182{display:block;width:100%;border:none;background:transparent;padding:0;text-align:left;color:var(--text-primary);font-weight:700;font-size:.85rem;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;transition:color var(--transition-base)}._name_rx9ev_182:hover{color:var(--text-secondary)}._episode_rx9ev_204{color:var(--text-tertiary);font-size:.75rem;font-weight:600}._iconBtn_rx9ev_210{width:30px;height:30px;border:1px solid var(--border-primary);background:var(--bg-tertiary);color:var(--text-tertiary);border-radius:var(--radius-sm);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all var(--transition-base)}._iconBtn_rx9ev_210:hover{color:var(--color-danger);border-color:color-mix(in srgb,var(--color-danger) 40%,transparent);background:color-mix(in srgb,var(--color-danger) 10%,transparent)}@media(max-width:768px){._section_rx9ev_1{border-radius:var(--radius-md)}._header_rx9ev_10{padding:var(--space-4) var(--space-5)}._list_rx9ev_101{padding:var(--space-4) var(--space-5);gap:var(--space-3)}._item_rx9ev_114{width:220px;flex-basis:220px;grid-template-columns:24px 50px minmax(0,1fr) 30px}._thumbnail_rx9ev_167{width:50px;height:65px}}._metaGap_rx9ev_256{margin-bottom:var(--space-2)}
|
|
@@ -0,0 +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-C1jNesfK.js";import{L as F}from"./LibraryListPage-CRqv737t.js";import{u as _,M as z}from"./useMangaPopup-h8NHEPUk.js";import{M as D}from"./MangaResetProgressModal-C28AiLJl.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-B3Ni34a7.js";import"./vendor-icons-DrybRNxP.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-BsdpNeXA.js";import"./index-BLh_CXtu.js";import"./vendor-query-BBT5_sHx.js";import"./SkeletonGrid-CYJeh04P.js";import"./ErrorMessage-DAxegITP.js";import"./LibraryListPage.module-r6k9nyT9.js";import"./usePopup-DS9jMzp6.js";import"./ResetProgressModal-BYNYqwwl.js";import"./libraryInvalidation-AzFLnbjH.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};
|
|
@@ -0,0 +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-BLh_CXtu.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._header_1i2qn_1{margin-bottom:var(--space-8);animation:_fadeIn_1i2qn_1 .8s var(--ease-smooth)}._pageTitle_1i2qn_6{font-size:var(--font-size-xl);font-weight:800;color:var(--text-primary);margin:0 0 var(--space-2);letter-spacing:-.02em}._pageSubtitle_1i2qn_14{color:var(--text-tertiary);font-size:var(--font-size-sm);margin:0}._filterContainer_1i2qn_20{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:var(--space-6);border-radius:var(--radius-xl);margin-bottom:var(--space-10);box-shadow:var(--glass-shadow);animation:_slideUpIn_1i2qn_1 .8s var(--ease-smooth)}._searchBarWrapper_1i2qn_32{display:flex;gap:var(--space-4);align-items:center}._inputIconWrapper_1i2qn_38{flex:1;position:relative}._searchIcon_1i2qn_43{position:absolute;left:var(--space-4);top:50%;transform:translateY(-50%);color:var(--text-tertiary);pointer-events:none;transition:color var(--transition-fast)}._searchInput_1i2qn_53{width:100%;height:52px;padding:0 var(--space-4) 0 3.2rem;background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);color:var(--text-primary);font-size:var(--font-size-base);font-family:inherit;transition:all var(--transition-fast)}._searchInput_1i2qn_53:focus{outline:none;border-color:var(--accent);background:var(--bg-elevated);box-shadow:0 0 0 4px var(--accent-glow)}._searchInput_1i2qn_53:focus+._searchIcon_1i2qn_43{color:var(--accent)}._searchActions_1i2qn_77{display:flex;gap:var(--space-3)}._providerSelect_1i2qn_82{height:52px;padding:0 var(--space-4);background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);color:var(--text-primary);font-size:var(--font-size-sm);font-family:inherit;cursor:pointer;appearance:none;transition:all var(--transition-fast)}._providerSelect_1i2qn_82:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._providerSelect_1i2qn_82:focus{outline:none;border-color:var(--accent)}._searchBtn_1i2qn_106{height:52px;padding:0 var(--space-8)!important}._filterToggleBtn_1i2qn_111{display:flex;align-items:center;gap:var(--space-2);height:52px;padding:0 var(--space-4);background:#ffffff0d;border:1px solid var(--border-secondary);border-radius:var(--radius-lg);color:var(--text-primary);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast)}._filterToggleBtn_1i2qn_111:hover{background:#ffffff1a;border-color:var(--text-secondary)}._filterToggleBtn_1i2qn_111._active_1i2qn_132{background:var(--accent);border-color:var(--accent);color:var(--accent-text);box-shadow:0 4px 15px var(--accent-glow)}._advancedFilters_1i2qn_139{max-height:0;overflow:hidden;transition:all .4s cubic-bezier(.4,0,.2,1);opacity:0}._advancedFilters_1i2qn_139._show_1i2qn_146{max-height:1000px;opacity:1;margin-top:var(--space-6)}._filterDivider_1i2qn_152{height:1px;background:var(--border-primary);margin-bottom:var(--space-6)}._filterGrid_1i2qn_158{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-6);margin-bottom:var(--space-8)}._filterItem_1i2qn_165{display:flex;flex-direction:column;gap:var(--space-2)}._filterItem_1i2qn_165 label{font-size:.7rem;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}._filterItem_1i2qn_165 select{height:44px;padding:0 var(--space-4);background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-sm);font-family:inherit;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2371717a' stroke-width='2' viewBox='0 0 12 12'%3E%3Cpolyline points='3 5 6 8 9 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;transition:all var(--transition-fast)}._filterItem_1i2qn_165 select:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._filterItem_1i2qn_165 select:focus{outline:none;border-color:var(--accent)}._genreSection_1i2qn_206{border-top:1px solid var(--border-primary);padding-top:var(--space-6);margin-bottom:var(--space-8)}._genreLabel_1i2qn_212{display:block;font-size:.7rem;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-4)}._genreContainer_1i2qn_222{display:flex;flex-wrap:wrap;gap:var(--space-2)}._genreButton_1i2qn_228{background:#ffffff0d;border:1px solid var(--border-primary);color:var(--text-secondary);padding:.5rem 1rem;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;cursor:pointer;transition:all var(--transition-fast)}._genreButton_1i2qn_228:hover{border-color:var(--accent);color:var(--text-primary)}._genreButton_1i2qn_228._include_1i2qn_245{background:color-mix(in srgb,var(--color-success) 10%,transparent);border-color:var(--color-success);color:var(--color-success)}._genreButton_1i2qn_228._exclude_1i2qn_251{background:color-mix(in srgb,var(--color-danger) 10%,transparent);border-color:var(--color-danger);color:var(--color-danger);text-decoration:line-through}._filterActions_1i2qn_258{display:flex;justify-content:flex-end;gap:var(--space-4);border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._resultsGrid_1i2qn_266{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-6);animation:_fadeIn_1i2qn_1 .5s var(--ease-smooth)}@media(max-width:1400px){._resultsGrid_1i2qn_266{grid-template-columns:repeat(6,1fr)}}@media(max-width:1200px){._resultsGrid_1i2qn_266{grid-template-columns:repeat(5,1fr)}}@media(max-width:1024px){._resultsGrid_1i2qn_266{grid-template-columns:repeat(4,1fr)}}@media(max-width:768px){._resultsGrid_1i2qn_266{grid-template-columns:repeat(3,1fr);gap:var(--space-2);align-items:start}}@media(max-width:480px){._resultsGrid_1i2qn_266{grid-template-columns:repeat(3,1fr);gap:8px;align-items:start}._filterContainer_1i2qn_20{padding:var(--space-4)}}._resultsHeader_1i2qn_311{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6);gap:var(--space-4);flex-wrap:wrap}._resultsTitle_1i2qn_320{font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary);margin:0}._pagination_1i2qn_327{display:flex;align-items:center;gap:var(--space-3);background:var(--bg-secondary);padding:6px 12px;border-radius:var(--radius-full);border:1px solid var(--border-secondary)}._pageBtn_1i2qn_337{background:none;border:none;color:var(--text-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:6px;border-radius:var(--radius-full);transition:all var(--transition-fast);gap:var(--space-2)}._pageBtn_1i2qn_337:hover:not(:disabled){background:var(--bg-tertiary);color:var(--accent)}._pageBtn_1i2qn_337:disabled{opacity:.3;cursor:not-allowed}._pageBtn_1i2qn_337 span{font-size:var(--font-size-xs);font-weight:600}._pageInfo_1i2qn_366{font-size:var(--font-size-sm);color:var(--text-secondary);min-width:80px;text-align:center}._pageInfo_1i2qn_366 strong{color:var(--text-primary)}._bottomPagination_1i2qn_377{display:flex;justify-content:center;margin-top:var(--space-10);padding-top:var(--space-6);border-top:1px solid var(--border-primary)}._noResults_1i2qn_385{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-16);text-align:center;color:var(--text-tertiary);animation:_fadeIn_1i2qn_1 .5s var(--ease-smooth)}._noResultsIcon_1i2qn_396{color:var(--border-secondary);margin-bottom:var(--space-6)}._noResults_1i2qn_385 h3{color:var(--text-primary);margin:0 0 var(--space-2)}._noResults_1i2qn_385 p{max-width:400px;margin:0}@keyframes _fadeIn_1i2qn_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUpIn_1i2qn_1{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){._searchBarWrapper_1i2qn_32{flex-direction:column;align-items:stretch}._searchActions_1i2qn_77{display:grid;grid-template-columns:1fr 1fr}._searchBtn_1i2qn_106{padding:0!important}._filterGrid_1i2qn_158{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){._filterGrid_1i2qn_158{grid-template-columns:1fr}}._applyBtn_1i2qn_460{align-self:flex-start}._lowEnd_1i2qn_464{grid-template-columns:repeat(4,1fr);gap:var(--space-4)}@media(max-width:768px){._lowEnd_1i2qn_464{grid-template-columns:repeat(3,1fr)}}
|
|
@@ -0,0 +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-C1jNesfK.js";import{A as Ae}from"./AnimeCard-CoPx634q.js";import{S as Se}from"./SkeletonGrid-CYJeh04P.js";import{t as ye,u as be,x as Ne,R as te,B as _,U as Te}from"./index-BLh_CXtu.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-BsdpNeXA.js";import"./useAnimeInfoData-MPNJXLaM.js";import"./vendor-query-BBT5_sHx.js";import"./QueueOptionsButton-DNzKPzPw.js";import"./playbackCompletion-DuUs8u-8.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const n="_header_1i2qn_1",e="_fadeIn_1i2qn_1",t="_pageTitle_1i2qn_6",i="_pageSubtitle_1i2qn_14",_="_filterContainer_1i2qn_20",s="_slideUpIn_1i2qn_1",o="_searchBarWrapper_1i2qn_32",r="_inputIconWrapper_1i2qn_38",c="_searchIcon_1i2qn_43",a="_searchInput_1i2qn_53",l="_searchActions_1i2qn_77",p="_providerSelect_1i2qn_82",d="_searchBtn_1i2qn_106",q="_filterToggleBtn_1i2qn_111",g="_active_1i2qn_132",u="_advancedFilters_1i2qn_139",f="_show_1i2qn_146",I="_filterDivider_1i2qn_152",h="_filterGrid_1i2qn_158",B="_filterItem_1i2qn_165",v="_genreSection_1i2qn_206",b="_genreLabel_1i2qn_212",S="_genreContainer_1i2qn_222",T="_genreButton_1i2qn_228",m="_include_1i2qn_245",w="_exclude_1i2qn_251",A="_filterActions_1i2qn_258",C="_resultsGrid_1i2qn_266",G="_resultsHeader_1i2qn_311",R="_resultsTitle_1i2qn_320",W="_pagination_1i2qn_327",x="_pageBtn_1i2qn_337",y="_pageInfo_1i2qn_366",D="_bottomPagination_1i2qn_377",E="_noResults_1i2qn_385",F="_noResultsIcon_1i2qn_396",H="_applyBtn_1i2qn_460",L="_lowEnd_1i2qn_464",P={header:n,fadeIn:e,pageTitle:t,pageSubtitle:i,filterContainer:_,slideUpIn:s,searchBarWrapper:o,inputIconWrapper:r,searchIcon:c,searchInput:a,searchActions:l,providerSelect:p,searchBtn:d,filterToggleBtn:q,active:g,advancedFilters:u,show:f,filterDivider:I,filterGrid:h,filterItem:B,genreSection:v,genreLabel:b,genreContainer:S,genreButton:T,include:m,exclude:w,filterActions:A,resultsGrid:C,resultsHeader:G,resultsTitle:R,pagination:W,pageBtn:x,pageInfo:y,bottomPagination:D,noResults:E,noResultsIcon:F,applyBtn:H,lowEnd:L};export{P as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._title-preference-container_sdqgs_1{margin-bottom:var(--space-6);padding:var(--space-4);border:1px solid var(--border-primary);border-radius:var(--radius-md);background-color:var(--bg-tertiary)}._title-preference-container_sdqgs_1 h4{margin-top:0;margin-bottom:var(--space-4);color:var(--text-primary);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold)}._error_sdqgs_17{color:var(--danger)}._toggle-button_sdqgs_21{position:relative;width:200px;height:40px;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dark) 100%);border:none;border-radius:20px;cursor:pointer;overflow:hidden;display:flex;align-items:center;justify-content:center;color:var(--accent-text);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);transition:var(--transition-base);box-shadow:var(--shadow-md)}._toggle-button_sdqgs_21:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-lg);filter:brightness(1.1)}._toggle-button_sdqgs_21:disabled{opacity:.7;cursor:not-allowed}._toggle-label_sdqgs_51{position:absolute;white-space:nowrap;transition:var(--transition-base)}._settingsHeader_1p8qx_1{margin-bottom:var(--space-8);animation:_fadeIn_1p8qx_1 .8s var(--ease-smooth)}._pageTitle_1p8qx_6{font-size:var(--font-size-xl);font-weight:800;color:var(--text-primary);margin:0 0 var(--space-2);letter-spacing:-.02em}._pageSubtitle_1p8qx_14{color:var(--text-tertiary);font-size:var(--font-size-sm);margin:0}._settingsLayout_1p8qx_20{display:flex;gap:var(--space-8);align-items:flex-start;animation:_slideUpIn_1p8qx_1 .8s var(--ease-smooth)}._sidebar_1p8qx_27{width:240px;display:flex;flex-direction:column;gap:var(--space-2);position:relative}._sidebarIndicator_1p8qx_35{position:absolute;left:0;right:0;border-radius:var(--radius-lg);background:var(--accent);transition:top .22s cubic-bezier(.2,1.2,.3,1),height .22s cubic-bezier(.2,1.2,.3,1),left .22s cubic-bezier(.2,1.2,.3,1),width .22s cubic-bezier(.2,1.2,.3,1);z-index:0;pointer-events:none}._sidebarItem_1p8qx_50{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);background:transparent;border:1px solid transparent;border-radius:var(--radius-lg);color:var(--text-tertiary);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;transition:color .22s ease;text-align:left;position:relative;z-index:1}._sidebarItem_1p8qx_50:hover{color:var(--text-primary)}._sidebarItem_1p8qx_50._active_1p8qx_72{color:var(--accent-text)}._sidebarItem_1p8qx_50 svg{font-size:1.1rem}._mainContent_1p8qx_80{flex:1;min-width:0}._tabContent_1p8qx_85{display:flex;flex-direction:column;gap:var(--space-6);animation:_tabFadeIn_1p8qx_1 .3s ease}@keyframes _tabFadeIn_1p8qx_1{}._settingItem_1p8qx_95{border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._controls_1p8qx_100{display:flex;gap:var(--space-4);flex-wrap:wrap}._status_1p8qx_106{margin-top:var(--space-4);padding:var(--space-3) var(--space-4);background:color-mix(in srgb,var(--accent) 10%,transparent);border-radius:var(--radius-md);color:var(--accent-light);font-size:var(--font-size-sm);font-weight:500}@keyframes _fadeIn_1p8qx_1{}@keyframes _slideUpIn_1p8qx_1{}._sectionCard_tm30b_1{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:var(--space-8);border-radius:var(--radius-xl);box-shadow:var(--glass-shadow)}._title_tm30b_11{margin:0 0 var(--space-2);font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary)}._signIn_tm30b_18{color:var(--text-secondary);font-size:var(--font-size-sm);margin:0 0 var(--space-6);line-height:1.6}._userInfo_tm30b_25{padding:var(--space-4) var(--space-5);background:color-mix(in srgb,var(--color-success) 5%,transparent);border:1px solid color-mix(in srgb,var(--color-success) 20%,transparent);border-radius:var(--radius-lg);margin-bottom:var(--space-6);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}._userInfo_tm30b_25 p{margin:0;color:var(--text-secondary);font-size:var(--font-size-sm)}._userInfo_tm30b_25 strong{color:var(--color-success)}._warning_tm30b_47{color:var(--color-warning);font-size:var(--font-size-xs);margin:var(--space-3) 0 0;font-weight:500}._formGroup_tm30b_54{margin-bottom:var(--space-5)}._label_tm30b_58{display:block;margin-bottom:var(--space-2);color:var(--text-tertiary);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}._inputWrapper_tm30b_68{display:flex;gap:var(--space-2)}._input_tm30b_68{flex-grow:1;height:48px;padding:0 var(--space-4);background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);font-size:var(--font-size-base);transition:all var(--transition-fast)}._input_tm30b_68:focus{outline:none;border-color:var(--accent);background:var(--bg-elevated);box-shadow:0 0 0 4px var(--accent-glow)}._select_tm30b_92{flex-grow:1;height:48px;padding:0 var(--space-4);background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);font-size:var(--font-size-base);cursor:pointer;transition:all var(--transition-fast);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2371717a' stroke-width='2' viewBox='0 0 12 12'%3E%3Cpolyline points='3 5 6 8 9 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center}._actions_tm30b_109{display:flex;gap:var(--space-3);margin-top:var(--space-6);border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._hr_tm30b_117{border:none;border-top:1px solid var(--border-primary);margin:var(--space-8) 0}@media(max-width:600px){._userInfo_tm30b_25{flex-direction:column;align-items:flex-start}._actions_tm30b_109{flex-direction:column}}._sectionCard_1axuo_1{background:var(--bg-tertiary);border:1px solid var(--border-secondary);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-4)}._sectionCard_1axuo_1 h3{margin:0 0 var(--space-3);font-size:var(--font-size-base);font-weight:700;color:var(--text-primary)}._sectionCard_1axuo_1 p{margin:0 0 var(--space-3);font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.5}._dangerCard_1axuo_23{border-color:color-mix(in srgb,var(--color-danger) 40%,transparent)}._dangerCard_1axuo_23 h3{color:var(--color-danger)}._settingRow_1axuo_31{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--border-secondary)}._settingRow_1axuo_31:last-child{border-bottom:none}._settingRow_1axuo_31 label{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--font-size-sm);color:var(--text-primary)}._settingItem_3qq0n_1{border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._modalOverlay_3qq0n_6{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-4)}._modal_3qq0n_6{background:var(--bg-secondary, #1a1a2e);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:var(--space-8);max-width:420px;width:100%;box-shadow:var(--glass-shadow)}._modal_3qq0n_6 h4{margin:0 0 var(--space-2);font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary)}._modal_3qq0n_6 p{color:var(--text-secondary);font-size:var(--font-size-sm);line-height:1.6;margin:0 0 var(--space-6)}._modalActions_3qq0n_41{display:flex;justify-content:flex-end;gap:var(--space-3)}._modalSecondary_3qq0n_47{background:transparent;border:1px solid var(--border-primary);color:var(--text-primary);border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);cursor:pointer;font-size:var(--font-size-sm)}._modalPrimary_3qq0n_57{background:var(--accent, var(--color-danger));border:none;color:var(--accent-text, var(--color-danger-text));border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);cursor:pointer;font-size:var(--font-size-sm);font-weight:600}._modalSecondary_3qq0n_47:disabled,._modalPrimary_3qq0n_57:disabled{opacity:.6;cursor:default}._statsGrid_o4nf0_1{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-3);margin-bottom:var(--space-4)}._statCard_o4nf0_8{background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-md);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-1)}._statLabel_o4nf0_18{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--text-tertiary);font-weight:600}._statValue_o4nf0_26{font-size:var(--font-size-xl);font-weight:700;color:var(--text-primary)}._statMeta_o4nf0_32{font-size:var(--font-size-sm);font-weight:500;color:var(--text-primary)}._statusBanner_o4nf0_38{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);margin-bottom:var(--space-4);flex-wrap:wrap}._statusSuccess_o4nf0_49{background:color-mix(in srgb,var(--color-success, #22c55e) 10%,transparent);border:1px solid color-mix(in srgb,var(--color-success, #22c55e) 25%,transparent);color:var(--text-primary)}._statusUpdating_o4nf0_55{background:#6366f11a;border:1px solid rgba(99,102,241,.3);color:var(--text-primary)}._statusError_o4nf0_61{background:color-mix(in srgb,var(--color-danger) 10%,transparent);border:1px solid color-mix(in srgb,var(--color-danger) 20%,transparent);color:var(--text-primary)}._sha_o4nf0_67{margin-left:auto;font-family:monospace;font-size:var(--font-size-xs);color:var(--text-tertiary)}._settingItem_o4nf0_74{border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._settingTitle_o4nf0_79{font-weight:600;color:var(--text-primary);font-size:var(--font-size-sm)}._settingSubtitle_o4nf0_85{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--space-1);line-height:1.5}._actionsRow_o4nf0_92{margin-top:var(--space-6);display:flex;gap:var(--space-3)}._status_1wbo0_1{margin-top:var(--space-4);font-size:var(--font-size-sm);color:var(--text-primary)}._warningText_1wbo0_7{margin:0 0 var(--space-4)!important}._ackLabel_1wbo0_11{display:flex;align-items:flex-start;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--text-primary);cursor:pointer}._ackLabel_1wbo0_11 input{margin-top:2px}._settingItem_68mz3_1{border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._field_68mz3_6{display:flex;flex-direction:column;gap:.5rem;margin-bottom:var(--space-4)}._field_68mz3_6 label{font-size:.9rem;color:var(--text-secondary);font-weight:500}._input_68mz3_19{background:var(--bg-secondary);border:1px solid var(--border-primary);color:var(--text-primary);padding:.6rem;border-radius:4px;width:100%;max-width:400px}._input_68mz3_19:hover{border-color:var(--border-secondary)}._input_68mz3_19:focus{outline:none;border-color:var(--accent);box-shadow:var(--shadow-input-focus)}._actions_68mz3_39{display:flex;gap:var(--space-3);flex-wrap:wrap}._status_68mz3_45{margin-top:var(--space-4);padding:var(--space-3) var(--space-4);background:color-mix(in srgb,var(--accent) 10%,transparent);border-radius:var(--radius-md);color:var(--accent-light);font-size:var(--font-size-sm);font-weight:500}.alert{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);border:1px solid transparent}.alert-info{background:color-mix(in srgb,var(--accent) 10%,transparent);border-color:var(--accent);color:var(--text-primary)}.alert-success{background:color-mix(in srgb,var(--color-success) 10%,transparent);border-color:var(--color-success);color:var(--color-success)}.alert-warning{background:color-mix(in srgb,var(--color-warning) 10%,transparent);border-color:var(--color-warning);color:var(--color-warning)}.alert-error{background:color-mix(in srgb,var(--color-danger) 10%,transparent);border-color:var(--color-danger);color:var(--color-danger)}
|