@serifpersia/dango 4.0.4 → 4.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/client/dist/assets/AnimeCard-ZMgtR741.js +1 -0
- package/client/dist/assets/AnimeInfo-CmDzxK-x.js +1 -0
- package/client/dist/assets/AnimeInfoPage-BtMHG64S.js +2 -0
- package/client/dist/assets/Asmr-Ct7Pp0i7.js +2 -0
- package/client/dist/assets/AsmrPopup-ER6dDxFM.js +1 -0
- package/client/dist/assets/{AsmrResetProgressModal-BFgtJIjq.js → AsmrResetProgressModal-CmDqGKma.js} +1 -1
- package/client/dist/assets/Home-CWsXJfHc.js +1 -0
- package/client/dist/assets/{Insights-xaMU0gDH.js → Insights-Dlu3LypY.js} +1 -1
- package/client/dist/assets/{LibraryListPage-y1J_sbu3.js → LibraryListPage-L4Lyt1BV.js} +1 -1
- package/client/dist/assets/ListeningList-CEiZWAUS.js +1 -0
- package/client/dist/assets/Manga-CazCyWIh.js +1 -0
- package/client/dist/assets/{MangaInfoPage-BHnn83Zv.js → MangaInfoPage-8ZsayGOJ.js} +1 -1
- package/client/dist/assets/{MangaReadPage-CDQJ6lwj.js → MangaReadPage-CG59Zuhi.js} +1 -1
- package/client/dist/assets/{MangaResetProgressModal-Cw4txoU9.js → MangaResetProgressModal-CmIGgwJc.js} +1 -1
- package/client/dist/assets/Mature-B_0sseRY.css +1 -0
- package/client/dist/assets/Mature-Dw4DVRVT.js +1 -0
- package/client/dist/assets/{MatureConsentModal-BuJjdQ5N.js → MatureConsentModal-CBGHgiBA.js} +1 -1
- package/client/dist/assets/MediaCard-Bd24Icus.js +1 -0
- package/client/dist/assets/MediaCard-DsoEaANc.css +1 -0
- package/client/dist/assets/OptionListMenu-BdiwBX1S.js +1 -0
- package/client/dist/assets/Player-DJSkQVjM.js +56 -0
- package/client/dist/assets/PlayerControls.module-D5c6Q5Ln.js +1 -0
- package/client/dist/assets/PlayerProvider-C6humJW5.js +1 -0
- package/client/dist/assets/PlayerSettings-C3MmSKgQ.js +1 -0
- package/client/dist/assets/PlayerSurface-C0SuP9xJ.js +1 -0
- package/client/dist/assets/PlayerSurface-LthWKdFi.css +1 -0
- package/client/dist/assets/{QueueOptionsButton-Tsij7x21.js → QueueOptionsButton-C1o8UacJ.js} +1 -1
- package/client/dist/assets/{QueueRail-DHSBCDXc.js → QueueRail-Dj_zPCND.js} +1 -1
- package/client/dist/assets/{ReadingList-Bl-49YU7.js → ReadingList-CMo85dG4.js} +1 -1
- package/client/dist/assets/{ResetProgressModal-DIn1j8Qp.js → ResetProgressModal-udBYaYWc.js} +1 -1
- package/client/dist/assets/Search-DM1vfczV.css +1 -0
- package/client/dist/assets/{Search-uY6VQ4os.js → Search-vE5ITchW.js} +1 -1
- package/client/dist/assets/Search.module-DjQZ0jox.js +1 -0
- package/client/dist/assets/Settings-DTdakL-f.js +21 -0
- package/client/dist/assets/SettingsShell-ByVlsU3X.js +1 -0
- package/client/dist/assets/{SkeletonGrid-xUVpcN5T.js → SkeletonGrid-CKVHMLEB.js} +1 -1
- package/client/dist/assets/{Trackers-DXrxbGg1.js → Trackers-Cbuzzhap.js} +2 -2
- package/client/dist/assets/{Tv-DFrBiMVQ.js → Tv-z-RzIer_.js} +4 -4
- package/client/dist/assets/{TvInfo-eLmiGzwb.js → TvInfo-DBdRrmSJ.js} +1 -1
- package/client/dist/assets/TvPopup-C_TEPZqV.js +1 -0
- package/client/dist/assets/{TvSearch-D_IGBBD8.js → TvSearch-DhZt3CXR.js} +1 -1
- package/client/dist/assets/{TvWatchlist-Ol8QK-C9.js → TvWatchlist-Dg7X14X1.js} +1 -1
- package/client/dist/assets/{VirtualKeyboard-Bp-M8SVt.js → VirtualKeyboard-BkfL6fYx.js} +1 -1
- package/client/dist/assets/{WatchAlong-qJzs9_fD.js → WatchAlong-D-Wdl6L6.js} +1 -1
- package/client/dist/assets/{WatchAlongPanel-DLuYT4hH.js → WatchAlongPanel-BtiB_ErQ.js} +1 -1
- package/client/dist/assets/{Watchlist-DcAUYWtZ.js → Watchlist-DFXVM31Q.js} +1 -1
- package/client/dist/assets/{index-BBbcJwUD.css → index-BpCEsLT2.css} +1 -1
- package/client/dist/assets/index-hrS3r0UE.js +179 -0
- package/client/dist/assets/{libraryInvalidation-Cv-7EfU1.js → libraryInvalidation-DWCCaTbI.js} +1 -1
- package/client/dist/assets/{playbackCompletion-BTwrTq5S.js → playbackCompletion-DzRc-CrM.js} +1 -1
- package/client/dist/assets/{useAnimeInfoData-tmC_S41n.js → useAnimeInfoData-Di0AjMa7.js} +1 -1
- package/client/dist/assets/{useMangaLibrary-CPluPl_T.js → useMangaLibrary-DQvZO29f.js} +1 -1
- package/client/dist/assets/{useMangaPopup-DRDWlEcN.js → useMangaPopup-BiaJvL8C.js} +1 -1
- package/client/dist/assets/{useTv-Dl0TYap6.js → useTv-Daayom0r.js} +1 -1
- package/client/dist/assets/{useTvLibrary-BCgO-d_K.js → useTvLibrary-7zDxMjFz.js} +1 -1
- package/client/dist/assets/useWatchAlongPlayer-BNJCb3D5.js +10 -0
- package/client/dist/assets/{useWatchAlongPlayer-Dk7zB7P4.css → useWatchAlongPlayer-BsaopdPw.css} +1 -1
- package/client/dist/index.html +2 -2
- package/orchestrator.js +1 -1
- package/package.json +2 -2
- package/server/dist/server.js +169 -169
- package/server/package.json +1 -1
- package/client/dist/assets/AnimeCard-Dj2gXZQ_.js +0 -1
- package/client/dist/assets/AnimeInfo-FTnsxEMu.js +0 -1
- package/client/dist/assets/AnimeInfoPage-DaoQEHyi.js +0 -2
- package/client/dist/assets/Asmr-Dj290riM.js +0 -2
- package/client/dist/assets/AsmrPopup-DCxF-0FD.js +0 -1
- package/client/dist/assets/Home-BvAHDt_3.js +0 -1
- package/client/dist/assets/ListeningList-DxPvvTGs.js +0 -1
- package/client/dist/assets/Manga-Dc9QLjTm.js +0 -1
- package/client/dist/assets/Mature-DJmUUtlF.css +0 -1
- package/client/dist/assets/Mature-DdHf-knG.js +0 -1
- package/client/dist/assets/MediaCard-Co-j57uA.css +0 -1
- package/client/dist/assets/MediaCard-FQr72c16.js +0 -1
- package/client/dist/assets/OptionListMenu-CAjFAq0c.js +0 -1
- package/client/dist/assets/Player-DO3lmGMJ.js +0 -56
- package/client/dist/assets/PlayerProvider-1nQxpPbi.js +0 -1
- package/client/dist/assets/PlayerSettings-BxmbpvrQ.js +0 -1
- package/client/dist/assets/Search-DCKK3seW.css +0 -1
- package/client/dist/assets/Search.module-C_qwCdHS.js +0 -1
- package/client/dist/assets/Settings-CHkvGAxk.js +0 -21
- package/client/dist/assets/TvPopup-CaXs4L6B.js +0 -1
- package/client/dist/assets/index-CkZCduQZ.js +0 -178
- package/client/dist/assets/useProviders-aA8vRBov.js +0 -1
- package/client/dist/assets/useWatchAlongPlayer-DfbkmL7h.js +0 -10
- /package/client/dist/assets/{Player-1LfYnRyR.css → PlayerControls-1LfYnRyR.css} +0 -0
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ _A local-first anime web app focused on performance, privacy, and personal libra
|
|
|
6
6
|
|
|
7
7
|
[](https://opensource.org/licenses/MIT)
|
|
8
8
|

|
|
9
|
-
[](https://github.com/serifpersia/dango)
|
|
10
10
|
|
|
11
11
|
[](https://dango-users-badge.ramiserifpersia.workers.dev/?view=status)
|
|
12
12
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{T as $,u as o,N as B,S as C}from"./vendor-core-DfaOB3Rn.js";import{I as b}from"./vendor-icons-C1Pj_eSX.js";import{u as P}from"./useAnimeInfoData-Di0AjMa7.js";import{d as D,s as I,i as g}from"./index-hrS3r0UE.js";import{Q as _}from"./QueueOptionsButton-C1o8UacJ.js";import{a as k,m as y,M as x}from"./MediaCard-Bd24Icus.js";import{p as N}from"./MediaPopupShell-BewMMT93.js";import{C as w}from"./playbackCompletion-DzRc-CrM.js";const R=({showId:e,anchorRect:n,onMouseEnter:m,onMouseLeave:c,onRequestClose:u})=>{const{showMeta:t,loadingMeta:p,inWatchlist:r,toggleWatchlist:i}=P(e),{titlePreference:l}=D(),f=$(()=>t?.name?l==="name"?t.name:l==="nativeName"?t.names?.native||t.name:l==="englishName"&&t.names?.english||t.name:"",[t,l]),s=[];t?.score&&s.push({icon:"star",label:String(t.score),accent:!0}),t?.status&&s.push({icon:"tv",label:t.status});const d=Array.isArray(t?.genres)&&t.genres.length>0?t.genres.filter(Boolean).slice(0,4).map(a=>typeof a=="string"?a:a?.name).filter(a=>!!a):[];return o(k,{anchorRect:n,title:f,loading:p,error:t?void 0:"Failed to load info.",meta:s,genres:d,synopsis:t?.description?I(t.description):"No synopsis available.",primaryAction:{to:`/watch/${t?.id||e}`,label:"Watch now",icon:"play"},secondaryAction:{to:`/anime/${t?.id||e}`,label:"Read more"},bookmarked:r,onToggleBookmark:i,extraActions:a=>t?o(_,{showId:e,showName:t.name||t.names?.romaji,showThumbnail:t.thumbnail,nativeName:t.names?.native,englishName:t.names?.english,showType:t.type,className:N.watchlistBtn,activeClassName:N.active,align:"left",onMenuOpenChange:a}):null,onMouseEnter:m,onMouseLeave:c,onRequestClose:u})},Q=B(({anime:e,continueWatching:n=!1,episodeBadge:m=!1,onRemove:c,config:u,layout:t="vertical",wide:p=!1})=>{const r=e.currentTime||0,i=e.duration||0,l=r>5&&i>5&&r<i*w,f=r>0&&(i<=5||r>=i*w),s=e.episodeNumber,d=n?{pathname:s?`/watch/${e._id}/${s}`:`/watch/${e._id}`,state:{name:e.name,thumbnail:e.thumbnail||"",nativeName:e.nativeName,englishName:e.englishName,type:e.type}}:s?`/watch/${e._id}/${s}`:`/anime/${e._id}`,a=(()=>{if(typeof d=="string")return d.startsWith("/watch/");const h=d.pathname;return typeof h=="string"&&h.startsWith("/watch/")})(),E=(n||m)&&s?`EP ${s}`:e.watchedCount!==void 0&&e.watchedCount>0?`EP ${e.watchedCount}`:null,T=[e.aired===!0?"":e.airTime,e.aired===!1&&e.nextEpisodeAirDate?`· ${e.nextEpisodeAirDate.split(",")[0]}`:""].filter(Boolean).join(" "),A=e.isAdult||e.rating==="R+"||e.rating==="Rx"||e.rating?.includes("17+"),M=o(C,{children:[(e.availableEpisodesDetail?.sub||e.availableEpisodes?.sub)&&o("div",{className:y.metaItem,children:[o(b,{name:"closed-captioning",size:10}),e.availableEpisodesDetail?.sub?.length??e.availableEpisodes?.sub]}),(e.availableEpisodesDetail?.dub||e.availableEpisodes?.dub)&&o("div",{className:y.metaItem,children:[o(b,{name:"microphone",size:10}),e.availableEpisodesDetail?.dub?.length??e.availableEpisodes?.dub]})]});return o(x,{item:{id:e.id||e.showId||e._id,title:e.name,nativeName:e.nativeName,englishName:e.englishName,thumbnail:e.thumbnail,preview:e.preview,wide:p,typeBadge:p?void 0:e.type||"TV",chapterBadge:E,airMeta:T||void 0,isAdult:A,notAired:e.aired===!1},linkTo:d,hoverIcon:a?"play":"info",progress:l?{percent:r/i*100,label:`${g(r)} / ${g(i)}`}:f?{percent:100,label:"Watched"}:void 0,showProgress:n,metaRow:M,display:u,layout:t,onRemove:c,showRemoveButton:u?.elements?.poster?.removeButton??(n&&!!c),showInfoButton:!n&&!p,enrichedId:e._id,renderPopup:(h,v)=>o(R,{showId:e._id,anchorRect:h,onMouseEnter:v.onMouseEnter,onMouseLeave:v.onMouseLeave,onRequestClose:v.close})})});export{Q as A};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as I,a as T,c as S,d as w,h as b,T as B,u as e}from"./vendor-core-DfaOB3Rn.js";import{I as s}from"./vendor-icons-C1Pj_eSX.js";import{d as M,g as x,f as m,F as A,s as D,S as P,B as p}from"./index-hrS3r0UE.js";import{u as G}from"./useAnimeInfoData-Di0AjMa7.js";import{A as $}from"./AnimeMetaDetails-B3-A7O5H.js";import{S as W}from"./SynopsisText-B3Sa5pRv.js";import{Q as q}from"./QueueOptionsButton-C1o8UacJ.js";import"./vendor-query-BBT5_sHx.js";import"./useIsMobile-Dvx1uJ82.js";import"./vendor-ui-3qrARCPr.js";const O="_container_1obln_1",U="_heroSection_1obln_11",j="_bannerContainer_1obln_17",z="_banner_1obln_17",V="_bannerOverlay_1obln_37",F="_heroContent_1obln_49",Q="_posterContainer_1obln_62",E="_floatIn_1obln_1",H="_poster_1obln_62",L="_infoGlass_1obln_86",R="_slideUpIn_1obln_1",J="_title_1obln_100",K="_quickMeta_1obln_109",X="_metaItem_1obln_117",Y="_iconStar_1obln_126",Z="_iconTv_1obln_129",ee="_iconType_1obln_132",ne="_iconClock_1obln_135",te="_genres_1obln_139",oe="_genre_1obln_139",se="_infoColumns_1obln_165",ae="_synopsisSection_1obln_180",ie="_sectionTitleSmall_1obln_188",le="_actions_1obln_210",ce="_watchBtn_1obln_216",re="_watchlistBtn_1obln_238",de="_active_1obln_258",me="_detailsToggleBtn_1obln_265",_e="_expandedContent_1obln_288",he="_fadeIn_1obln_1",ue="_detailsGridContainer_1obln_293",be="_detailItem_1obln_301",pe="_airingValue_1obln_320",ve="_loadingDetails_1obln_325",ge="_spinner_1obln_334",ke="_spin_1obln_334",fe="_heroSkeleton_1obln_349",Ne="_skeletonBanner_1obln_353",Ce="_skeletonPoster_1obln_354",ye="_skeletonTitle_1obln_355",Ie="_skeletonMeta_1obln_356",Te="_skeletonDesc_1obln_357",Se="_skeletonActions_1obln_358",we="_skeletonContent_1obln_391",Be="_skeletonInfo_1obln_405",t={container:O,heroSection:U,bannerContainer:j,banner:z,bannerOverlay:V,heroContent:F,posterContainer:Q,floatIn:E,poster:H,infoGlass:L,slideUpIn:R,title:J,quickMeta:K,metaItem:X,iconStar:Y,iconTv:Z,iconType:ee,iconClock:ne,genres:te,genre:oe,infoColumns:se,synopsisSection:ae,sectionTitleSmall:ie,actions:le,watchBtn:ce,watchlistBtn:re,active:de,detailsToggleBtn:me,expandedContent:_e,fadeIn:he,detailsGridContainer:ue,detailItem:be,airingValue:pe,loadingDetails:ve,spinner:ge,spin:ke,heroSkeleton:fe,skeletonBanner:Ne,skeletonPoster:Ce,skeletonTitle:ye,skeletonMeta:Ie,skeletonDesc:Te,skeletonActions:Se,"skeleton-wave":"_skeleton-wave_1obln_1",skeletonContent:we,skeletonInfo:Be};function Ue(){const{id:o}=I(),i=T(),l=S(),{titlePreference:r}=M(),[c,v]=w(!1),{showMeta:n,loadingMeta:g,toggleWatchlist:k,inWatchlist:d}=G(o),{hasConsent:f,grant:N}=x();b(()=>{o&&n?.id&&n.id!==o&&i(`/anime/${n.id}`,{replace:!0,state:l.state})},[o,n,i,l.state]),b(()=>{document.title=n?.name?`${n.name} - dango`:"Anime - dango"},[n?.name]);const C=()=>n?.name?r==="name"?n.name:r==="nativeName"?n.names?.native||n.name:r==="englishName"&&n.names?.english||n.name:"",y=()=>{if(!o)return;const a=l.state?.requestedProvider;i(a?`/watch/${o}?requestedProvider=${encodeURIComponent(a)}`:`/watch/${o}`,{state:l.state})},_=B(()=>n?.bannerImage?m(n.bannerImage):n?.thumbnail?m(n.thumbnail,1200,450):"",[n?.bannerImage,n?.thumbnail]);if(g||!n?.name)return e("div",{className:t.container,children:e("div",{className:t.heroSkeleton,children:[e("div",{className:t.skeletonBanner}),e("div",{className:t.skeletonContent,children:[e("div",{className:t.skeletonPoster}),e("div",{className:t.skeletonInfo,children:[e("div",{className:t.skeletonTitle}),e("div",{className:t.skeletonMeta}),e("div",{className:t.skeletonDesc}),e("div",{className:t.skeletonActions})]})]})]})});const h=n.isAdult===!0&&!f;return e("div",{className:t.container,style:h?{filter:"blur(14px)",pointerEvents:"none",userSelect:"none"}:void 0,children:[e("div",{className:t.heroSection,children:[e("div",{className:t.bannerContainer,children:[e("div",{className:t.banner,style:_?{backgroundImage:`url(${_})`}:void 0}),e("div",{className:t.bannerOverlay})]}),e("div",{className:t.heroContent,children:[e("div",{className:t.posterContainer,children:e(A,{src:m(n.thumbnail||"",320,480),alt:n.name,className:t.poster,decoding:"async"})}),e("div",{className:t.infoGlass,children:[e("div",{children:[e("h1",{className:t.title,children:C()}),e("div",{className:t.quickMeta,children:[n.score&&e("div",{className:t.metaItem,children:[e(s,{name:"star",className:t.iconStar}),e("span",{children:n.score})]}),n.status&&e("div",{className:t.metaItem,children:[e(s,{name:"tv",className:t.iconTv}),e("span",{children:n.status})]}),n.type&&e("div",{className:t.metaItem,children:[e(s,{name:"layer-group",className:t.iconType}),e("span",{children:n.type})]})]}),Array.isArray(n.genres)&&n.genres.length>0&&e("div",{className:t.genres,children:n.genres.filter(Boolean).slice(0,5).map(a=>{const u=typeof a=="string"?a:a?.name;return e("span",{className:t.genre,children:u},u)})})]}),e("div",{className:t.infoColumns,children:[e("div",{className:t.synopsisSection,children:[e("h2",{className:t.sectionTitleSmall,children:"Synopsis"}),e(W,{text:D(n.description),emptyText:"No description available."}),e("button",{className:t.detailsToggleBtn,onClick:()=>{v(!c)},children:[c?e(s,{name:"chevron-up"}):e(s,{name:"chevron-down"}),c?"Hide Details":"Show Details"]})]}),c&&e("div",{className:t.expandedContent,children:e($,{showMeta:n,styles:t})})]}),e("div",{className:t.actions,children:[e("button",{className:t.watchBtn,onClick:y,children:[e(s,{name:"play",size:14}),"Start Watching"]}),e("button",{className:`${t.watchlistBtn} ${d?t.active:""}`,onClick:k,children:[d?e(s,{name:"check",size:14}):e(s,{name:"plus",size:14}),d?"In Watchlist":"Add to Watchlist"]}),e(q,{showId:o,showName:n.name||n.names?.romaji,showThumbnail:n.thumbnail,nativeName:n.names?.native,englishName:n.names?.english,showType:n.type,className:t.watchlistBtn,activeClassName:t.active})]})]})]})]}),h&&e(P,{isOpen:!0,title:"Content Warning",onClose:()=>i("/"),children:e("div",{style:{padding:"1rem",textAlign:"center"},children:[e("p",{children:"This title contains mature content intended for adult audiences."}),e("p",{children:["By proceeding, you confirm that you are ",e("strong",{children:"18 years of age or older"})," (or the age of majority in your jurisdiction) and wish to view this content."]}),e("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center"},children:[e(p,{variant:"secondary",onClick:()=>i("/"),children:"Go Back"}),e(p,{onClick:N,children:"I'm 18+, Continue"})]})]})})]})}export{Ue as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AnimeInfo-CmDzxK-x.js","assets/vendor-core-DfaOB3Rn.js","assets/vendor-icons-C1Pj_eSX.js","assets/index-hrS3r0UE.js","assets/vendor-query-BBT5_sHx.js","assets/index-BpCEsLT2.css","assets/useAnimeInfoData-Di0AjMa7.js","assets/QueueOptionsButton-C1o8UacJ.js","assets/vendor-ui-3qrARCPr.js","assets/QueueOptionsButton-CM15uQn8.css","assets/AnimeMetaDetails-B3-A7O5H.js","assets/AnimeMetaDetails-BwNQnRCd.css","assets/SynopsisText-B3Sa5pRv.js","assets/useIsMobile-Dvx1uJ82.js","assets/SynopsisText-CYv2W3yR.css","assets/AnimeInfo-BivVqWcB.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{ap as r,a4 as t}from"./index-hrS3r0UE.js";import{u as o,P as a,z as e}from"./vendor-core-DfaOB3Rn.js";import"./vendor-query-BBT5_sHx.js";import"./vendor-icons-C1Pj_eSX.js";const i=e(()=>t(()=>import("./AnimeInfo-CmDzxK-x.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])));function _(){return o(a,{fallback:o(r,{}),children:o(i,{})})}export{_ as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{T as Pe,u as e,d as N,A as W,a as We,g as Ne,q as V,h as T,S as U,$ as Me,o as ea,p as aa}from"./vendor-core-DfaOB3Rn.js";import{o as je,F as ta,i as Te,aa as na,t as Be,ab as ra,B as Ie,S as sa,p as be,g as la,ac as Ce}from"./index-hrS3r0UE.js";import{I as b}from"./vendor-icons-C1Pj_eSX.js";import{T as $e}from"./ToggleSwitch-CN_ppEc9.js";import{M as oa}from"./MatureConsentModal-CBGHgiBA.js";import{M as ia,P as ca}from"./MediaCard-Bd24Icus.js";import{d as Fe,e as da,a as Ue,f as qe,g as ma,h as ua,i as pa,b as Ee,A as ha}from"./AsmrPopup-ER6dDxFM.js";import{u as ga}from"./useAsmrPopup-BBmHrx9v.js";import{u as fa,e as ya,f as _a,d as ba,g as ka,h as va,S as Oe,a as wa,i as He,j as Ca,k as Na,V as Ta,l as Ba}from"./PlayerProvider-C6humJW5.js";import{p as Y}from"./page.module-C1MlZzf3.js";import"./vendor-query-BBT5_sHx.js";import"./MediaPopupShell-BewMMT93.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./libraryInvalidation-DWCCaTbI.js";import"./usePopup-DS9jMzp6.js";const Aa="_sortSelect_1f2gy_1",Sa="_grid_1f2gy_11",La="_fetching_1f2gy_25",Ra="_thumbPlaceholder_1f2gy_64",Pa="_asmrCardWrap_1f2gy_100",Ma="_bookmarkBtn_1f2gy_105",Ia="_bookmarked_1f2gy_129",$a="_statusMsg_1f2gy_152",Ea="_skeletonCard_1f2gy_160",Oa="_skeletonThumb_1f2gy_165",Ha="_skeletonLine_1f2gy_171",Da="_shimmer_1f2gy_178",Wa="_pagination_1f2gy_192",ja="_matureToggleWrap_1f2gy_219",Fa="_matureLabel_1f2gy_226",Ua="_translateToggleWrap_1f2gy_232",qa="_filterTogglesGroup_1f2gy_239",Va="_filterBar_1f2gy_251",xa="_filterLabel_1f2gy_258",Ga="_detailOverlay_1f2gy_263",Ka="_detailModal_1f2gy_275",za="_detailClose_1f2gy_287",Ya="_detailHeader_1f2gy_303",Ja="_detailCover_1f2gy_309",Qa="_detailInfo_1f2gy_318",Za="_detailTitle_1f2gy_322",Xa="_detailRj_1f2gy_329",et="_metaRow_1f2gy_335",at="_metaLabel_1f2gy_341",tt="_tagChips_1f2gy_347",nt="_tagChip_1f2gy_347",rt="_npOverlay_1f2gy_363",st="_playerBarDocked_1f2gy_378",lt="_playerBarDockedHidden_1f2gy_392",ot="_npOverlayControlsHidden_1f2gy_403",it="_npArrow_1f2gy_403",ct="_npImageCount_1f2gy_404",dt="_npStage_1f2gy_413",mt="_sliderViewport_1f2gy_429",ut="_slide_1f2gy_429",pt="_slideImg_1f2gy_431",ht="_npStageBlank_1f2gy_450",gt="_sliderTrack_1f2gy_469",ft="_slideImgLoaded_1f2gy_502",yt="_slideSpinner_1f2gy_507",_t="_npArrowLeft_1f2gy_557",bt="_npArrowRight_1f2gy_561",kt="_chapterPanel_1f2gy_578",vt="_chapterRow_1f2gy_593",wt="_chapterRowActive_1f2gy_612",Ct="_chapterRowTime_1f2gy_616",Nt="_chapterRowLabel_1f2gy_627",Tt="_npBackdrop_1f2gy_633",Bt="_playerBtn_1f2gy_639",At="_playerBtnActive_1f2gy_639",St="_tracksSection_1f2gy_645",Lt="_tracksHeading_1f2gy_649",Rt="_trackList_1f2gy_655",Pt="_trackRow_1f2gy_664",Mt="_trackIcon_1f2gy_682",It="_trackLabel_1f2gy_687",$t="_trackType_1f2gy_692",Et="_noTracks_1f2gy_697",Ot="_playAllBtn_1f2gy_702",Ht="_detailActions_1f2gy_715",Dt="_playerBar_1f2gy_378",Wt="_playerActions_1f2gy_738",jt="_playerInfo_1f2gy_744",Ft="_playerTitle_1f2gy_749",Ut="_playerTrack_1f2gy_758",qt="_playerControls_1f2gy_764",Vt="_seekRow_1f2gy_771",xt="_playerButtons_1f2gy_779",Gt="_seekBtn_1f2gy_814",Kt="_playBtn_1f2gy_824",zt="_seekBar_1f2gy_871",Yt="_volumeBar_1f2gy_872",Jt="_timeLabel_1f2gy_964",Qt="_playerRight_1f2gy_970",Zt="_volumeIcon_1f2gy_976",Xt="_playerToggle_1f2gy_1020",a={sortSelect:Aa,grid:Sa,fetching:La,thumbPlaceholder:Ra,asmrCardWrap:Pa,bookmarkBtn:Ma,bookmarked:Ia,statusMsg:$a,skeletonCard:Ea,skeletonThumb:Oa,skeletonLine:Ha,shimmer:Da,pagination:Wa,matureToggleWrap:ja,matureLabel:Fa,translateToggleWrap:Ua,filterTogglesGroup:qa,filterBar:Va,filterLabel:xa,detailOverlay:Ga,detailModal:Ka,detailClose:za,detailHeader:Ya,detailCover:Ja,detailInfo:Qa,detailTitle:Za,detailRj:Xa,metaRow:et,metaLabel:at,tagChips:tt,tagChip:nt,npOverlay:rt,playerBarDocked:st,playerBarDockedHidden:lt,npOverlayControlsHidden:ot,npArrow:it,npImageCount:ct,npStage:dt,sliderViewport:mt,slide:ut,slideImg:pt,npStageBlank:ht,sliderTrack:gt,slideImgLoaded:ft,slideSpinner:yt,npArrowLeft:_t,npArrowRight:bt,chapterPanel:kt,chapterRow:vt,chapterRowActive:wt,chapterRowTime:Ct,chapterRowLabel:Nt,npBackdrop:Tt,playerBtn:Bt,playerBtnActive:At,tracksSection:St,tracksHeading:Lt,trackList:Rt,trackRow:Pt,trackIcon:Mt,trackLabel:It,trackType:$t,noTracks:Et,playAllBtn:Ot,detailActions:Ht,playerBar:Dt,playerActions:Wt,playerInfo:jt,playerTitle:Ft,playerTrack:Ut,playerControls:qt,seekRow:Vt,playerButtons:xt,seekBtn:Gt,playBtn:Kt,seekBar:zt,volumeBar:Yt,timeLabel:Jt,playerRight:Qt,volumeIcon:Zt,playerToggle:Xt},en=({work:r,onClose:l,onPlay:k,t:p})=>{const{data:i,isLoading:m}=Fe(r.id||null),f=je(r),{data:S}=da(f||void 0),{toggle:v,bookmarkedIds:w}=Ue(),{data:E}=qe(f||void 0),P=f?w.has(f):!!S?.inLibrary,g=Pe(()=>(i?.description||r.description||"").split(`
|
|
2
|
+
`).map(c=>{const o=c.indexOf(":");return o===-1?null:{label:c.slice(0,o),value:c.slice(o+1).trim()}}).filter(c=>!!c&&!!c.value),[i?.description,r.description]),y=i?.tracks||[],M=r.thumbnail||i?.images?.[0],L=Pe(()=>{const c=E?.progress??[];return c.length>0?c.reduce((o,B)=>o.updatedAt>=B.updatedAt?o:B):null},[E]),h=L&&L.trackIndex<y.length?L.trackIndex:null;return e("div",{className:a.detailOverlay,onClick:l,children:e("div",{className:a.detailModal,onClick:c=>c.stopPropagation(),children:[e("button",{className:a.detailClose,onClick:l,"aria-label":"Close",children:e(b,{name:"times"})}),e("div",{className:a.detailHeader,children:[M?e(ta,{className:a.detailCover,src:M,alt:r.name,decoding:"async"}):e("div",{className:`${a.detailCover} ${a.thumbPlaceholder}`}),e("div",{className:a.detailInfo,children:[e("h2",{className:a.detailTitle,children:p?p(r.name):r.name}),e("p",{className:a.detailRj,children:r.id}),g.map(c=>c.label==="Tags"?e("p",{className:a.metaRow,children:[e("span",{className:a.metaLabel,children:"Tags"}),e("span",{className:a.tagChips,children:c.value.split(", ").map(o=>e("span",{className:a.tagChip,children:o},o))})]},c.label):e("p",{className:a.metaRow,children:[e("span",{className:a.metaLabel,children:c.label}),c.value]},c.label))]})]}),e("div",{className:a.tracksSection,children:[e("h3",{className:a.tracksHeading,children:m?"Loading tracks…":`Tracks (${y.length})`}),!m&&(y.length>0?e("ul",{className:a.trackList,children:y.map((c,o)=>e("li",{children:e("button",{className:a.trackRow,onClick:()=>k(r,y,o),children:[e(b,{name:"play",className:a.trackIcon}),e("span",{className:a.trackLabel,children:c.resolutionStr}),e("span",{className:a.trackType,children:c.hls?"HLS":"MP3"})]})},c.link))}):e("p",{className:a.noTracks,children:"No audio streams available for this work."}))]}),e("div",{className:a.detailActions,children:[!m&&y.length>0&&e("button",{className:a.playAllBtn,onClick:()=>k(r,y,0),children:[e(b,{name:"play"})," Play from start"]}),!m&&h!==null&&L&&e("button",{className:a.playAllBtn,onClick:()=>k(r,y,h),children:[e(b,{name:"history"})," Resume track ",h+1," ·"," ",Te(L.currentTime),L.duration>0?` / ${Te(L.duration)}`:""]}),f&&e("button",{className:a.playAllBtn,onClick:()=>v({rjCode:f,title:r.name,thumbnail:r.thumbnail||"",isAdult:!!r.isAdult}),"aria-pressed":P,children:[e(b,{name:P?"check":"plus"})," ",P?"In listening list":"Add to listening list"]})]})]})})},an=r=>{const{engine:l}=fa({volumeKey:"asmrVolume",mutedKey:"asmrMuted"});return e(ya,{engine:l,children:e(tn,{...r})})},tn=({title:r,images:l,chapters:k,tracks:p,trackIndex:i,expanded:m,isAdult:f,rjCode:S,t:v,onTrackChange:w,onExpandedChange:E,onClose:P})=>{const g=_a(),y=g.mediaRef,{duration:M,volume:L,isPlaying:h}=ba(g),{currentTime:c}=ka(g),[o,B]=N(!0),[u,I]=N(0),[re,se]=N(new Set),[A,J]=N(!1),[le,j]=N(!0),R=W("");R.current||(R.current=typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():`asmr-${Date.now()}-${Math.random().toString(36).slice(2)}`);const pe=We(),O=Ne.useMemo(()=>S?na(S):"",[S]),oe=ma(),he=ua(),{data:x}=qe(O||void 0),[ke,Q]=N(!1),Z=W(""),H=W(null),ie=W(0),G=W(0),D=W(0),X=p[i],ce=X?.link,ee=X?.hls,de=X?.resolutionStr||"",ae=l.length>0,F=`${O}:${i}`,te=Ne.useMemo(()=>(x?.progress??[]).find(s=>s.trackIndex===i)??null,[x,i]),ge=W({workId:"",trackIndex:0,trackLabel:""}),fe=W(x);fe.current=x,ge.current={workId:O,trackIndex:i,trackLabel:de};const ne=V((t,s,_,$=!1)=>{!t.workId||!_||_<10||!$&&Math.abs(s-ie.current)<5||(ie.current=s,oe.mutate({workId:t.workId,trackIndex:t.trackIndex,trackLabel:t.trackLabel,currentTime:Math.floor(s),duration:Math.floor(_),title:r,thumbnail:l[0]||"",rjCode:t.workId,isAdult:f?1:0}))},[oe,r,l,f]),me=V((t=!1)=>{H.current&&(clearTimeout(H.current),H.current=null),ne(ge.current,G.current,D.current,t)},[ne]),n=W(me);n.current=me;const d=W(ne);d.current=ne,T(()=>{if(!y.current||!ce)return;const s={workId:O,trackIndex:i,trackLabel:de},_=()=>{H.current&&(clearTimeout(H.current),H.current=null),d.current(s,g.getTimeline().currentTime,g.getState().duration||D.current,!0)};G.current=0,D.current=0,ie.current=0;const $=fe.current?.progress?.find(Xe=>Xe.trackIndex===i),_e=$?.currentTime||0,ve=$?.duration||0,we=_e>=10&&ve-_e>=15,Ze=g.loadSource({url:ce,hls:ee},{autoPlay:!we});return()=>{_(),Ze()}},[g,ce,ee,O,i,de,y]),T(()=>{const t=()=>{document.visibilityState==="hidden"&&n.current()},s=()=>n.current();return document.addEventListener("visibilitychange",t),window.addEventListener("pagehide",s),()=>{document.removeEventListener("visibilitychange",t),window.removeEventListener("pagehide",s)}},[]),T(()=>{if(!te||Z.current===F||!(M>0))return;const t=te.currentTime||0,s=te.duration||M;Z.current=F,!(!(t>=10&&s-t>=15&&G.current<t)||!y.current)&&(g.seek(t),G.current=t,g.play())},[g,y,te,M,F]),T(()=>{if(m)return document.body.classList.add("asmr-player-open"),()=>document.body.classList.remove("asmr-player-open")},[m]),T(()=>{I(0)},[l]),T(()=>{m&&j(!0)},[m]),T(()=>{A&&j(!0)},[A]);const C=V(t=>{if(!r||p.length===0)return;const s=p[i],_=s?`${s.resolutionStr} (${i+1}/${p.length})`:"",$=y.current,_e=$?$.currentTime:0,ve=$&&$.duration||0,we=l[0]||"";Be.discord.asmrPresence.mutate({title:r,trackLabel:_,isPlaying:t,thumbnail:we,thumbnails:l,currentTime:_e,duration:ve,isAdult:!!f,rjCode:S||"",sessionId:R.current}).catch(()=>{}),Be.discord.heartbeat.mutate({sessionId:R.current}).catch(()=>{})},[y,r,p,i,l,f,S]);T(()=>{C(h)},[C,h,i,r,m]),T(()=>{if(!h)return;const t=window.setInterval(()=>C(!0),15e3);return()=>window.clearInterval(t)},[h,C]),T(()=>{const t=R.current,s=()=>ra(t),_=()=>s(),$=()=>{document.visibilityState==="hidden"&&s()};return window.addEventListener("pagehide",_),window.addEventListener("beforeunload",_),document.addEventListener("visibilitychange",$),()=>{window.removeEventListener("pagehide",_),window.removeEventListener("beforeunload",_),document.removeEventListener("visibilitychange",$),s()}},[]);const K=V(t=>{se(s=>{if(s.has(t))return s;const _=new Set(s);return _.add(t),_})},[]),z=V((t,s)=>{t&&t.complete&&t.naturalWidth>0&&K(s)},[K]);T(()=>{if(!m)return;const t=s=>{if(!(s.defaultPrevented||s.ctrlKey||s.metaKey||s.altKey||s.target instanceof Element&&s.target.closest('input, textarea, select, button, [role="slider"], [contenteditable="true"]'))){if(s.key==="Escape"){A?J(!1):E(!1);return}!o||l.length<2||(s.key==="ArrowLeft"&&I(_=>Math.max(0,_-1)),s.key==="ArrowRight"&&I(_=>Math.min(l.length-1,_+1)))}};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[m,o,l.length,A,E]);const ye=()=>{me(!0),i<p.length-1?w(i+1):Q(!0)},q=t=>{const s=t.currentTarget.currentTime;G.current=s,H.current&&clearTimeout(H.current),H.current=setTimeout(()=>n.current(),5e3)},xe=()=>{n.current()},Ge=t=>{const s=t.currentTarget.duration;D.current=Number.isFinite(s)?s:0},Ke=V(()=>{O&&he.mutate({rjCode:O,title:r,thumbnail:l[0]||"",status:"Completed",isAdult:!!f,silent:!0}),Q(!1),P(),pe("/")},[O,he,r,l,f,P,pe]),ze=k.reduce((t,s,_)=>c>=s.time?_:t,-1),Ye=t=>g.seek(t);va(g,()=>j(!0),!m||!o&&!A);const Je=e(U,{children:[e("div",{className:a.playerButtons,children:[e("button",{className:a.playerBtn,onClick:()=>w(Math.max(0,i-1)),disabled:i===0,"aria-label":"Previous track",children:e(b,{name:"step-backward"})}),e(Oe,{seconds:-10,className:`${a.playerBtn} ${a.seekBtn}`}),e(wa,{className:`${a.playerBtn} ${a.playBtn}`}),e(Oe,{seconds:10,className:`${a.playerBtn} ${a.seekBtn}`}),e("button",{className:a.playerBtn,onClick:()=>w(Math.min(p.length-1,i+1)),disabled:i>=p.length-1,"aria-label":"Next track",children:e(b,{name:"step-forward"})})]}),e("div",{className:a.seekRow,children:[e(He,{className:a.timeLabel}),e(Ca,{className:a.seekBar}),e(He,{className:a.timeLabel,durationOnly:!0})]})]}),Ae=e(U,{children:[e("button",{className:`${a.playerBtn} ${a.playerToggle}`,onClick:()=>E(!m),"aria-label":m?"Minimize player":"Expand player",title:m?"Minimize to browse":"Expand",children:m?e(b,{name:"chevron-down"}):e(b,{name:"chevron-up"})}),e("div",{className:a.playerInfo,children:[e(Na,{}),e("p",{className:a.playerTitle,title:r,children:v?v(r):r}),e("p",{className:a.playerTrack,children:[X?.resolutionStr||"",p.length>1?` (${i+1}/${p.length})`:""]})]}),e("div",{className:a.playerControls,children:Je}),e("div",{className:a.playerRight,children:[L===0?e(b,{name:"volume-mute",className:a.volumeIcon}):L<.5?e(b,{name:"volume-down",className:a.volumeIcon}):e(b,{name:"volume-up",className:a.volumeIcon}),e(Ta,{className:a.volumeBar})]}),e("div",{className:a.playerActions,children:[m&&ae&&e("button",{className:a.playerBtn,onClick:()=>B(t=>!t),"aria-label":o?"Hide images":"Show images",title:o?"Hide images":"Show images",children:o?e(b,{name:"eye-slash"}):e(b,{name:"image"})}),m&&k.length>0&&e("button",{className:`${a.playerBtn} ${A?a.playerBtnActive:""}`,onClick:()=>J(t=>!t),"aria-label":A?"Hide bookmarks":"Show bookmarks",title:"Timestamps",children:e(b,{name:"list-ol"})}),e("button",{className:a.playerBtn,onClick:P,"aria-label":"Close player",children:e(b,{name:"times"})})]})]}),Se=e(Ba,{preload:"metadata",onPause:xe,onTimeUpdate:q,onLoadedMetadata:Ge,onEnded:ye}),Le=e(sa,{isOpen:ke,onClose:()=>Q(!1),title:"Finished!",children:e("div",{style:{padding:"1rem",textAlign:"center"},children:[e(b,{name:"check-circle",size:48,style:{color:"var(--accent-lighter)",marginBottom:"0.5rem"}}),e("p",{style:{fontSize:"1.1rem",fontWeight:600},children:v?v(r):r}),e("p",{style:{color:"var(--text-secondary)"},children:"You finished this work!"}),e("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center"},children:[e(Ie,{variant:"secondary",onClick:()=>Q(!1),children:"Close"}),e(Ie,{onClick:Ke,children:"Mark Completed & Back to Home"})]})]})});if(!m)return Me(e(U,{children:[Se,e("div",{ref:g.containerRef,"data-player-root":"true",className:a.playerBar,children:Ae}),Le]}),document.body);const ue=Math.min(u,Math.max(0,l.length-1)),Re=l[ue],Qe=o&&ae&&!!Re&&!re.has(Re);return Me(e(U,{children:[Se,Le,e("div",{ref:g.containerRef,"data-player-root":"true",className:`${a.npOverlay} ${le?"":a.npOverlayControlsHidden}`,children:[e("div",{className:`${a.npStage} ${!o||!ae?a.npStageBlank:""}`,onClick:()=>j(t=>!t),children:o&&ae&&e(U,{children:[e("div",{className:a.sliderViewport,children:[e("div",{className:a.sliderTrack,style:{transform:`translateX(-${ue*100}%)`},children:l.map(t=>e("div",{className:a.slide,children:e("img",{ref:s=>z(s,t),src:t,alt:`${v?v(r):r} - work image`,loading:"lazy",decoding:"async",draggable:!1,onLoad:()=>K(t),onError:()=>K(t),className:`${a.slideImg} ${re.has(t)?a.slideImgLoaded:""}`})},t))}),Qe&&e("span",{className:a.slideSpinner,"aria-label":"Loading image"})]}),l.length>1&&e(U,{children:[e("button",{className:`${a.npArrow} ${a.npArrowLeft}`,onClick:t=>{t.stopPropagation(),I(s=>Math.max(0,s-1)),j(!0)},disabled:ue===0,"aria-label":"Previous image",children:e(b,{name:"chevron-left"})}),e("button",{className:`${a.npArrow} ${a.npArrowRight}`,onClick:t=>{t.stopPropagation(),I(s=>Math.min(l.length-1,s+1)),j(!0)},disabled:ue===l.length-1,"aria-label":"Next image",children:e(b,{name:"chevron-right"})}),e("span",{className:a.npImageCount,onClick:t=>t.stopPropagation(),children:[ue+1," / ",l.length]})]})]})}),e("div",{className:`${a.playerBar} ${a.playerBarDocked} ${le?"":a.playerBarDockedHidden}`,onClick:t=>t.stopPropagation(),children:[Ae,A&&e(U,{children:[e("div",{className:a.npBackdrop,onClick:()=>J(!1)}),e("div",{className:a.chapterPanel,children:k.map((t,s)=>e("button",{className:`${a.chapterRow} ${s===ze?a.chapterRowActive:""}`,title:v?v(t.label):t.label,onClick:()=>{Ye(t.time),J(!1)},children:[e("span",{className:a.chapterRowTime,children:Te(t.time)}),e("span",{className:a.chapterRowLabel,title:v?v(t.label):t.label,children:v?v(t.label):t.label})]},`${t.time}-${s}`))})]})]})]})]}),document.body)},Ve="asmrTranslateCache",nn=10080*60*1e3;function rn(){try{const r=be.getItem(Ve);if(!r)return new Map;const l=JSON.parse(r);return new Map(Object.entries(l))}catch{return new Map}}function sn(r){try{const l={};for(const[k,p]of r)l[k]=p;be.setItem(Ve,JSON.stringify(l))}catch{}}function De(r){return/[\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FAF]/.test(r)}async function ln(r){const l=r.map(i=>i.trim()).filter(Boolean);if(l.length===0)return new Map;const k=await Be.settings.translate.mutate({texts:l,source:"ja",target:"en"}),p=new Map;for(const[i,m]of Object.entries(k.translations||{}))p.set(i,m);for(const i of l)p.has(i)||p.set(i,i);return p}function on(r,l){const[k,p]=N(new Map),[i,m]=N(!1),f=W(null),S=r.join("");return T(()=>{const w=S?S.split(""):[];if(!l||w.length===0){p(new Map),m(!1);return}const E=Array.from(new Set(w.map(h=>h.trim()).filter(Boolean).filter(De)));if(E.length===0){p(new Map);return}f.current||(f.current=rn());const P=Date.now(),g=new Map,y=[];for(const h of E){const c=f.current.get(h);c&&P-c.ts<nn?g.set(h,c.t):y.push(h)}if(y.length===0){p(g);return}let M=!1;m(!0);const L=[];for(let h=0;h<y.length;h+=15)L.push(y.slice(h,h+15));return(async()=>{const h=new Map;for(const o of L){try{const B=await ln(o);for(const[u,I]of B)h.set(u,I)}catch{}await new Promise(B=>setTimeout(B,120))}if(M)return;if(f.current){for(const[o,B]of h)f.current.set(o,{t:B,ts:Date.now()});sn(f.current)}const c=new Map([...g,...h]);p(c),m(!1)})(),()=>{M=!0}},[l,S]),{t:w=>!l||!w||!De(w)?w:k.get(w.trim())||w,map:k,isTranslating:i}}const cn=[{label:"Date",options:[{value:"latest",label:"Latest"},{value:"oldest",label:"Oldest"}]},{label:"Title",options:[{value:"title_asc",label:"A → Z"},{value:"title_desc",label:"Z → A"}]},{label:"Popular (Views)",options:[{value:"popular_recent",label:"Recent"},{value:"popular_week",label:"Week"},{value:"popular_month",label:"Month"},{value:"popular_6_months",label:"6 Months"},{value:"popular_year",label:"Year"},{value:"popular",label:"All Time"}]},{label:"Most Commented",options:[{value:"comments_week",label:"Week"},{value:"comments_month",label:"Month"},{value:"comments_year",label:"Year"},{value:"comments",label:"All Time"}]},{label:"Other",options:[{value:"random",label:"Random"}]}],dn=[{value:"",label:"All"},{value:"sfw",label:"SFW / 全年齢"},{value:"r-15",label:"R-15"},{value:"r-18",label:"NSFW / R18"},{value:"yuri",label:"Yuri / Girls love / 百合"},{value:"otokonoko",label:"Otoko no ko / 男の娘"},{value:"futanari",label:"Futanari / フタナリ"},{value:"r-18g",label:"R-18G / グロ"}],mn=[{value:"sfw",label:"SFW / 全年齢"}],Sn=()=>{const{rj:r}=ea(),l=We(),[k,p]=aa(),{hasConsent:i,grant:m}=la(),[f,S]=N(!1),[v,w]=N(()=>k.get("q")||""),[E,P]=N(()=>k.get("q")||""),[g,y]=N("latest"),[M,L]=N("sfw"),[h,c]=N(1),[o,B]=N(null),[u,I]=N(null),[re,se]=N(!0),[A,J]=N(()=>be.getItem("asmrTranslateEN")==="true"),{toggle:le,bookmarkedIds:j}=Ue(),{popup:R,openPopup:pe,scheduleClose:O,cancelClose:oe,closePopup:he}=ga();T(()=>{be.setItem("asmrTranslateEN",String(A))},[A]);const x=i,ke=x?M:"sfw",Q=x?dn:mn,{data:Z,isLoading:H,isError:ie,isFetching:G}=pa(E,h,g,ke),D=Ne.useMemo(()=>Z?.shows??[],[Z?.shows]),X=Z?.hasNext??!1;T(()=>{if(!r){o&&!u&&B(null);return}const n=r.toUpperCase();if(u&&(u.work.id?.toUpperCase()===n||u.work._id?.toUpperCase()===n)){o&&B(null);return}const d=D.find(C=>(C.id||C._id)?.toUpperCase()===n);d?(!o||(o.id||o._id)!==(d.id||d._id))&&B(d):(!o||(o.id||o._id)?.toUpperCase()!==n)&&B({_id:n,id:n,name:n})},[r,D,u,o]);const ce=V(()=>{l("/asmr")},[l]);T(()=>{!r&&u&&I(null)},[r,u]);const{data:ee}=Fe(u&&u.work.id||null),de=u?[u.work.thumbnail,...ee?.images||[]].filter(Boolean):[],ae=[...D.map(n=>n.name),o?.name||"",u?.work.name||"",...ee?.chapters?.map(n=>n.label)||[]].filter(Boolean),{t:F}=on(ae,A);T(()=>{const n=u?u.work.name:o?o.name:r?r.toUpperCase():"",d=n?A?F(n):n:"",C=d?`${d} - dango`:"dango";document.title=C;try{window.history.replaceState(window.history.state,C,window.location.href)}catch{}},[o,u,r,A,F]);const te=n=>{n.preventDefault(),P(v),c(1);const d=new URLSearchParams(k);v.trim()?d.set("q",v.trim()):d.delete("q"),d.delete("page"),p(d,{replace:!0})};T(()=>{const n=k.get("q")||"";w(d=>d===n?d:n),P(d=>d===n?d:n),c(1)},[k]);const ge=n=>{n.currentTarget.checked&&!i&&S(!0)},fe=()=>{m(),S(!1),c(1)},ne=()=>{S(!1)},me=V((n,d,C)=>{B(null),se(!0),I({work:n,tracks:d,index:C})},[]);return e("div",{className:`${Y.page} ${u?Y.pageWithPlayer:""}`,children:[!(u&&re)&&e(U,{children:[e("header",{className:Y.header,children:[e("h1",{className:Y.pageTitle,children:[e(b,{name:"headphones"})," ASMR"]}),e("form",{className:Y.searchForm,onSubmit:te,children:[e("input",{className:Y.searchInput,type:"text",value:v,onChange:n=>w(n.currentTarget.value),placeholder:"Search works, circles, CV… (-word excludes)","aria-label":"Search ASMR works"}),e("button",{className:Y.searchBtn,type:"submit","aria-label":"Search",children:e(b,{name:"search"})})]})]}),e("div",{className:a.filterBar,children:[e("label",{className:a.filterLabel,htmlFor:"asmr-sort",children:"Sort"}),e("select",{id:"asmr-sort",className:a.sortSelect,value:g,onChange:n=>{y(n.currentTarget.value),c(1)},children:cn.map(n=>e("optgroup",{label:n.label,children:n.options.map(d=>e("option",{value:d.value,children:d.label},d.value))},n.label))}),e("label",{className:a.filterLabel,htmlFor:"asmr-rating",children:"Type"}),e("select",{id:"asmr-rating",className:a.sortSelect,value:M,onChange:n=>{L(n.currentTarget.value),c(1)},children:Q.map(n=>e("option",{value:n.value,children:n.label},n.value))}),e("div",{className:a.filterTogglesGroup,children:[e("div",{className:a.translateToggleWrap,children:[e("span",{className:a.filterLabel,children:"JP"}),e($e,{id:"asmr-translate-toggle",isChecked:A,onChange:n=>J(n.currentTarget.checked)}),e("span",{className:a.filterLabel,children:"EN"})]}),!i&&e("div",{className:a.matureToggleWrap,children:[e("label",{className:a.matureLabel,htmlFor:"asmr-mature-toggle",children:"Mature"}),e($e,{id:"asmr-mature-toggle",isChecked:!1,onChange:ge})]})]})]}),ie?e("p",{className:a.statusMsg,children:"Failed to load works. Please try again."}):H&&D.length===0?e("div",{className:a.grid,"aria-hidden":!0,children:Array.from({length:12}).map((n,d)=>e("div",{className:a.skeletonCard,children:[e("div",{className:`${a.skeletonThumb} ${a.shimmer}`}),e("div",{className:`${a.skeletonLine} ${a.shimmer}`,style:{width:"88%"}}),e("div",{className:`${a.skeletonLine} ${a.shimmer}`,style:{width:"55%"}})]},d))}):D.length===0?e("p",{className:a.statusMsg,children:"No works found."}):e(U,{children:[e("div",{className:`${a.grid} ${G?a.fetching:""}`,children:D.map(n=>{const d=A?{...n,name:F(n.name)}:n,C=je(n),K=Ee(C),z=j.has(K),ye=`/asmr/${encodeURIComponent(C)}`;return e("div",{className:a.asmrCardWrap,children:[e(ia,{item:{id:K,title:d.name,thumbnail:n.thumbnail||"",typeBadge:C||void 0,isAdult:Ce(n)},linkTo:ye,hoverIcon:"info",layout:"horizontal",showInfoButton:!0,display:{elements:{poster:{typeBadge:!0,chapterBadge:!1,adultBadge:!0},info:{title:!0,mobileBadges:!0,progress:!1,meta:!1}}},onOpenDetails:q=>pe(q,{rjCode:C,title:d.name,thumbnail:n.thumbnail||"",isAdult:Ce(n),rating:n.rating,listenTarget:ye}),onPopupHoverIntent:q=>q?oe():O(),rawThumbnail:!0}),e("button",{className:`${a.bookmarkBtn} ${z?a.bookmarked:""}`,onClick:q=>{q.preventDefault(),q.stopPropagation(),le({rjCode:C,title:n.name,thumbnail:n.thumbnail||"",isAdult:Ce(n)})},title:z?"Remove from listening list":"Add to listening list","aria-label":z?"Remove from listening list":"Add to listening list","aria-pressed":z,children:e(b,{name:z?"check":"plus",size:12})})]},n._id||n.id)})}),e("div",{className:a.pagination,children:e(ca,{page:h,canGoNext:X,onChange:n=>c(n),variant:"labeled"})})]})]}),o&&e(en,{work:o,onClose:ce,onPlay:me,t:F}),R&&e(ha,{data:R.data,anchorRect:R.rect,bookmarked:j.has(Ee(R.data.rjCode)),onToggleBookmark:()=>le({rjCode:R.data.rjCode,title:R.data.title,thumbnail:R.data.thumbnail||"",isAdult:R.data.isAdult}),onMouseEnter:oe,onMouseLeave:O,onRequestClose:he}),f&&e(oa,{isOpen:!0,scope:"section",showResetHint:!0,onClose:ne,onGrant:fe}),u&&e(an,{title:u.work.name,images:de,chapters:ee?.chapters||[],tracks:u.tracks,trackIndex:u.index,expanded:re,isAdult:!!u.work.isAdult,rjCode:u.work.id||u.work._id,t:F,onTrackChange:n=>I(d=>d&&{...d,index:n}),onExpandedChange:se,onClose:()=>{I(null),se(!0),r&&l("/asmr")}})]})};export{Sn as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{T as Q,u as E}from"./vendor-core-DfaOB3Rn.js";import{b,u as d,a as p,e as w}from"./vendor-query-BBT5_sHx.js";import{r as c,L as i,aa as O,q as A,t as k}from"./index-hrS3r0UE.js";import{i as L}from"./libraryInvalidation-DWCCaTbI.js";import{a as _}from"./MediaCard-Bd24Icus.js";const x=["Listening","Completed","On-Hold","Dropped","Planned"],B=s=>O(s),W=(s="All",r=1,e=24)=>{const t=c();return b(t.asmrLibrary.list.queryOptions({status:s,page:r,limit:e}))},$=()=>{const s=c();return b({...s.asmrLibrary.ids.queryOptions(),staleTime:1e3*60})},z=s=>{const r=c();return b({...r.asmrLibrary.check.queryOptions({id:s||""}),enabled:!!s,staleTime:1e3*60})},Y=(s=24)=>{const r=c();return b(r.asmrProgress.continueListening.queryOptions({limit:s}))},J=s=>{const r=c();return b({...r.asmrProgress.getByWork.queryOptions({workId:s||""}),enabled:!!s})},R=()=>{const s=c(),r=d();return p({mutationFn:async e=>{const{silent:t,...u}=e;return k.asmrLibrary.add.mutate(u)},onSuccess:(e,t)=>{t.silent||i.success("Added to listening list"),r.invalidateQueries({queryKey:[A.asmrLibrary]}),r.invalidateQueries(s.asmrLibrary.pathFilter())},onError:e=>{i.error(`Failed to add: ${e.message}`)}})},I=()=>{const s=c(),r=d();return p(s.asmrLibrary.remove.mutationOptions({onSuccess:()=>{i.success("Removed from listening list"),L(r,"asmr"),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{i.error(`Failed to remove: ${e.message}`)}}))},V=()=>{const s=c(),r=d();return p(s.asmrLibrary.setStatus.mutationOptions({onSuccess:()=>{i.success("Status updated"),L(r,"asmr"),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{i.error(`Failed to update status: ${e.message}`)}}))},X=()=>{const s=c(),r=d();return p(s.asmrProgress.save.mutationOptions({onSuccess:()=>{L(r,"asmr",!0),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())}}))},Z=()=>{const s=c(),r=d();return p(s.asmrProgress.remove.mutationOptions({onSuccess:()=>{i.success("Progress reset"),L(r,"asmr",!0),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{i.error(`Failed to reset progress: ${e.message}`)}}))},ss=()=>{const s=c(),r=d();return p(s.asmrLibrary.batchStatus.mutationOptions({onSuccess:e=>{i.success(`Status updated for ${e.updated??0} items`),L(r,"asmr"),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{i.error(`Failed to update statuses: ${e.message}`)}}))},rs=()=>{const s=c(),r=d();return p(s.asmrLibrary.removeMany.mutationOptions({onSuccess:e=>{const t=e.removed??0;i.success(`Removed ${t} ${t===1?"item":"items"} from listening list`),L(r,"asmr"),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{i.error(`Failed to remove: ${e.message}`)}}))},es=()=>{const s=c(),r=d();return p(s.asmrProgress.removeMany.mutationOptions({onSuccess:e=>{const t=e.removed??0;i.success(`Reset progress for ${t} ${t===1?"item":"items"}`),L(r,"asmr",!0),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{i.error(`Failed to reset progress: ${e.message}`)}}))},ts=()=>{const s=R(),r=I(),{data:e}=$(),t=Q(()=>new Set(e?.ids||[]),[e]);return{toggle:o=>{const a=B(o.rjCode);t.has(a)?r.mutate({id:a}):s.mutate({...o,thumbnail:o.thumbnail||""})},bookmarkedIds:t,pending:s.isPending||r.isPending}},S=300*1e3,q=15,os=(s,r,e,t)=>{const u=r+1,o=w({queries:Array.from({length:u},(m,C)=>{const F=C+1;return{queryKey:[A.asmrBrowse,s,F,e,t],queryFn:()=>{const T=s.trim();return k.asmr.browse.query({q:T||void 0,page:F,sort:e&&e!=="latest"?e:void 0,rating:t||void 0})},staleTime:S}})}),a=o.flatMap(m=>m.data?.shows??[]),g=a.slice((r-1)*q,r*q),y=o[o.length-1]?.data,h=!!(y&&(y.hasNext||a.length>r*q)),v=o.some(m=>m.isLoading),n=o.some(m=>m.isFetching),l=o.some(m=>m.isError);return{data:{shows:g,hasNext:h},isLoading:v,isError:l,isFetching:n}},M=s=>{const r=c(),e=b({...r.asmr.work.queryOptions({rj:s}),enabled:!!s,staleTime:S,refetchOnMount:"always"});return{...e,data:e.data}},N=15,f=6;function D(s){if(s.isAdult||!s.thumbnail)return!1;const r=(s.rating||"").toLowerCase();return r===""||r==="sfw"}function P(s,r){const e=new Set,t=[];for(const u of s)for(const o of u){if(t.length>=r)return t;const a=o.id||o._id;!a||e.has(a)||(e.add(a),D(o)&&t.push(o))}return t}const as=(s=!0)=>{const r=w({queries:Array.from({length:N},(n,l)=>{const m=l+1;return{queryKey:[A.asmrBrowse,"",m,"popular_month",""],queryFn:()=>k.asmr.browse.query({page:m,sort:"popular_month"}),staleTime:S,enabled:s,retry:1}})}),e=r.map(n=>n.data?.shows??[]),t=P(e,f),u=r.every(n=>n.isFetched),o=s&&u&&t.length<f,a=b({queryKey:[A.asmrBrowse,"",1,"popular","sfw"],queryFn:()=>k.asmr.browse.query({page:1,sort:"popular",rating:"sfw"}),staleTime:S,enabled:o,retry:1}),g=a.data?.shows??[],y=t.length>=f?t.slice(0,f):P([t,g],f),h=s&&(r.some(n=>n.isLoading)||o&&a.isLoading),v=s&&u&&y.length===0&&r.some(n=>n.isError);return{data:y,isLoading:h,isError:v}},ns=({data:s,anchorRect:r,bookmarked:e,onToggleBookmark:t,onMouseEnter:u,onMouseLeave:o,onRequestClose:a})=>{const{data:g,isLoading:y}=M(s.rjCode||null),h=g?.tracks.length??0,v=h>0,n=!y,l=[{icon:"headphones",label:n?v?`${h} track${h===1?"":"s"}`:"No tracks":"Loading tracks…"}];return s.rating&&l.push({label:s.rating.toUpperCase()}),s.isAdult&&l.push({label:"18+"}),s.progressLabel&&l.push({icon:"bookmark",label:s.progressLabel}),E(_,{anchorRect:r,title:s.title,subtitle:s.rjCode,cover:s.thumbnail,meta:l,synopsis:!n&&!g?.description?"Loading description…":g?.description??"No description available.",primaryAction:{to:s.listenTarget,label:v?"Listen now":n?"No tracks":"Loading…",icon:"play",disabled:!v},secondaryAction:{to:s.listenTarget,label:"Details"},bookmarked:e,bookmarkLabel:"Bookmark",onToggleBookmark:t,onMouseEnter:u,onMouseLeave:o,onRequestClose:a})};export{ns as A,ts as a,B as b,as as c,M as d,z as e,J as f,X as g,R as h,os as i,W as j,I as k,V as l,ss as m,rs as n,es as o,x as p,Z as q,Y as u};
|
package/client/dist/assets/{AsmrResetProgressModal-BFgtJIjq.js → AsmrResetProgressModal-CmDqGKma.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as i}from"./vendor-core-DfaOB3Rn.js";import{R as n}from"./ResetProgressModal-
|
|
1
|
+
import{u as i}from"./vendor-core-DfaOB3Rn.js";import{R as n}from"./ResetProgressModal-udBYaYWc.js";import{q as a,k as g}from"./AsmrPopup-ER6dDxFM.js";const p=({workId:e,title:s,onClose:r})=>{const o=a(),m=g();return i(n,{isOpen:!!e,itemName:s,progressKind:"listening",listLabel:"my listening list",onClose:r,onConfirm:t=>{e&&(o.mutate({workId:e}),t&&m.mutate({id:e}))}})};export{p as A};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as B,A as F,h as x,q as P,g as q,u as e,L as Oe,T as H,S as se,a as ee,_ as et}from"./vendor-core-DfaOB3Rn.js";import{u as ke,a as ie,b as tt,c as at,q as ze,t as nt,F as rt,d as Ve,s as ot,f as Ne,B as Fe,e as st,g as lt,h as it,m as Ce,p as re,i as oe,j as ct,k as dt,l as ut,n as Ie,M as ht,T as mt,o as gt,r as pt,v as Me,w as vt,x as _t,y as yt,z as bt,A as ft,C as Tt,D as Nt,E as wt,G as St,H as kt}from"./index-hrS3r0UE.js";import{b as Ct,u as It,a as Rt}from"./vendor-query-BBT5_sHx.js";import{M as pe,P as At}from"./MediaCard-Bd24Icus.js";import{A as ce}from"./AnimeCard-ZMgtR741.js";import{S as je,A as Ge}from"./SkeletonGrid-CKVHMLEB.js";import{I as E}from"./vendor-icons-C1Pj_eSX.js";import{u as Lt}from"./vendor-ui-3qrARCPr.js";import{E as Re}from"./ErrorMessage-hMt90aG4.js";import{R as Ue}from"./ResetProgressModal-udBYaYWc.js";import{Q as $t}from"./QueueRail-Dj_zPCND.js";import{u as qe,M as He}from"./useMangaPopup-BiaJvL8C.js";import{M as Mt}from"./MangaResetProgressModal-CmIGgwJc.js";import{u as Qe,m as Se,i as Ye,a as Xe,b as Bt}from"./useMangaLibrary-DQvZO29f.js";import{u as Ke,a as Be,T as xt}from"./useTv-Daayom0r.js";import{T as Pt}from"./TvPopup-C_TEPZqV.js";import{u as Et,a as Dt,b as Wt}from"./useTvLibrary-7zDxMjFz.js";import{A as Ot}from"./AsmrResetProgressModal-CmDqGKma.js";import{u as zt,a as Vt,A as Ft,b as jt,c as Gt}from"./AsmrPopup-ER6dDxFM.js";import"./MediaPopupShell-BewMMT93.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-CBGHgiBA.js";import"./useAnimeInfoData-Di0AjMa7.js";import"./QueueOptionsButton-C1o8UacJ.js";import"./playbackCompletion-DzRc-CrM.js";import"./usePopup-DS9jMzp6.js";import"./libraryInvalidation-DWCCaTbI.js";const Ut="_sectionWrapper_x6wvn_9",qt="_sectionTitleNoMargin_x6wvn_19",Ht="_carousel_x6wvn_195",M={"section-header":"_section-header_x6wvn_1",sectionWrapper:Ut,sectionTitleNoMargin:qt,"title-wrapper":"_title-wrapper_x6wvn_23","header-controls":"_header-controls_x6wvn_30","header-select":"_header-select_x6wvn_37","collapse-button":"_collapse-button_x6wvn_86","title-link":"_title-link_x6wvn_106","continue-watching":"_continue-watching_x6wvn_125","nav-arrows":"_nav-arrows_x6wvn_147","nav-button":"_nav-button_x6wvn_153","carousel-container":"_carousel-container_x6wvn_195",carousel:Ht,"carousel-inner":"_carousel-inner_x6wvn_204","carousel-card":"_carousel-card_x6wvn_210"};function ve({align:n="start",containScroll:l="trimSnaps",scrollFraction:h=.8,threshold:t=.6,onReachThreshold:o,slideCount:i=0}={}){const[p,s]=Lt({align:n,containScroll:l,dragFree:!0}),[S,y]=B(!1),[N,m]=B(!1),c=F({scrollFraction:h,threshold:t,onReachThreshold:o}),r=F(!1);x(()=>{c.current={scrollFraction:h,threshold:t,onReachThreshold:o}});const w=P(g=>{y(g.canScrollPrev()),m(g.canScrollNext())},[]);x(()=>{if(!s)return;const g=()=>{const u=s.scrollProgress();u>=c.current.threshold&&!r.current?(r.current=!0,c.current.onReachThreshold?.()):u<c.current.threshold&&(r.current=!1),w(s)};return s.on("init",g),s.on("reInit",g),s.on("scroll",g),s.on("resize",g),()=>{s.off("init",g),s.off("reInit",g),s.off("scroll",g),s.off("resize",g)}},[s,w]),x(()=>{s?.reInit()},[s,i]);const C=P(g=>{const u=g.containerNode().firstElementChild;if(!u)return 1;const f=g.rootNode().getBoundingClientRect().width,R=u.getBoundingClientRect().width;return R?Math.max(1,Math.round(f/R)):1},[]),k=P((g,u=!1)=>{if(!s)return;const f=Math.max(1,Math.round(C(s)*c.current.scrollFraction)),R=s.selectedScrollSnap()+(g==="left"?-f:f);s.scrollTo(R,u)},[s,C]),d=P((g=!1)=>{s?.scrollTo(0,g)},[s]);return{emblaRef:p,api:s,canScrollPrev:S,canScrollNext:N,stepBy:k,scrollToStart:d}}const Z=({title:n,eyebrow:l,titleLink:h,loading:t,emptyState:o,carousel:i,layout:p,collapsible:s,defaultExpanded:S=!0,onReachThreshold:y,scrollThreshold:N,isFetchingNextPage:m,resetScrollOnShrink:c,itemCount:r=0,highlight:w,headerActions:C,loadingSkeleton:k,skeletonCount:d=7,children:g})=>{const{lowEndMode:u}=ke(),{emblaRef:f,stepBy:R,scrollToStart:z,canScrollPrev:A,canScrollNext:D}=ve({onReachThreshold:y,threshold:N,slideCount:r}),[L,V]=q.useState(S);q.useEffect(()=>{V(S)},[S]);const j=q.useRef(0);return q.useEffect(()=>{c&&r>0&&L&&(r<=j.current||j.current===0)&&z(),r>0&&(j.current=r)},[r,c,L,z]),!t&&r===0&&!o&&!s?null:e("section",{className:`${M.sectionWrapper} ${w?M["continue-watching"]:""}`,children:[e("div",{className:M["section-header"],children:[e("div",{className:M["title-wrapper"],children:e("div",{className:"title-stack",children:[l&&e("div",{className:"section-eyebrow",children:l}),h?e(Oe,{to:h,className:M["title-link"],children:e("div",{className:`section-title ${M.sectionTitleNoMargin}`,children:n})}):e("div",{className:`section-title ${M.sectionTitleNoMargin}`,children:n})]})}),e("div",{className:M["header-controls"],children:[C,i&&r>0&&L&&(A||D)&&e("div",{className:M["nav-arrows"],children:[A&&e("button",{className:M["nav-button"],type:"button","aria-label":"Scroll left",onClick:I=>{I.preventDefault(),R("left",u)},children:e(E,{name:"chevron-left"})}),D&&e("button",{className:M["nav-button"],type:"button","aria-label":"Scroll right",onClick:I=>{I.preventDefault(),R("right",u)},children:e(E,{name:"chevron-right"})})]}),s&&e("button",{className:M["collapse-button"],type:"button",onClick:()=>V(I=>!I),"aria-expanded":L,"aria-label":L?`Collapse ${n}`:`Expand ${n}`,children:L?e(E,{name:"chevron-up"}):e(E,{name:"chevron-down"})})]})]}),L&&(i?!t&&r===0&&o?e("div",{children:o}):e("div",{className:M["carousel-container"],children:e("div",{className:M.carousel,ref:f,children:e("div",{className:M["carousel-inner"],children:[t&&r===0?Array.from({length:d}).map((I,U)=>e("div",{className:M["carousel-card"],children:k},U)):q.Children.map(g,(I,U)=>e("div",{className:M["carousel-card"],children:I},q.isValidElement(I)&&I.key!=null?I.key:`slide-${U}`)),m&&k&&e("div",{className:M["carousel-card"],children:k})]})})}):e("div",{className:"grid-container",children:t&&r===0?e(je,{count:6,layout:p}):r>0?g:t?null:e("div",{style:{gridColumn:"1 / -1"},children:o})}))]})},Qt=({title:n,eyebrow:l,animeList:h,continueWatching:t,episodeBadge:o,titleLink:i,onRemove:p,loading:s,emptyState:S,carousel:y,cardConfig:N,layout:m,onReachThreshold:c,scrollThreshold:r,isFetchingNextPage:w,collapsible:C,defaultExpanded:k=!0})=>{const d=m||"vertical";return e(Z,{title:n,eyebrow:l,titleLink:i,loading:s,emptyState:S,carousel:y,layout:d,collapsible:C,defaultExpanded:k,onReachThreshold:c,scrollThreshold:r,isFetchingNextPage:w,resetScrollOnShrink:t,highlight:t,itemCount:h.length,loadingSkeleton:e(Ge,{layout:d}),skeletonCount:7,children:h.map(g=>e(ce,{anime:g,continueWatching:t,episodeBadge:o,onRemove:p,config:N,layout:d},g._id))})},xe=q.memo(Qt),Yt="_wrapper_j52nn_1",Xt="_arrow_j52nn_6",Kt="_select_j52nn_15",we={wrapper:Yt,arrow:Xt,select:Kt},J=({value:n,options:l,onChange:h,ariaLabel:t,width:o})=>e("span",{className:we.wrapper,children:[e("select",{className:we.select,style:o!==void 0?{width:o}:void 0,value:n,"aria-label":t,onChange:i=>h(i.currentTarget.value),children:l.map(i=>e("option",{value:i.value,children:i.label},i.value))}),e(E,{name:"chevron-down",size:12,className:we.arrow})]}),Zt="_sectionWrapper_b6zf8_2",Jt="_sectionTitleNoMargin_b6zf8_12",ea="_carouselContainer_b6zf8_100",ta="_carousel_b6zf8_100",aa="_carouselInner_b6zf8_111",na="_carouselItem_b6zf8_117",ra="_rankCard_b6zf8_154",oa="_rankPill_b6zf8_158",sa="_rankGold_b6zf8_169",la="_rankSilver_b6zf8_173",ia="_rankBronze_b6zf8_177",ca="_skeletonPoster_b6zf8_188",da="_skeletonText_b6zf8_189",_={sectionWrapper:Zt,sectionTitleNoMargin:Jt,"section-header":"_section-header_b6zf8_17","title-wrapper":"_title-wrapper_b6zf8_25","header-actions":"_header-actions_b6zf8_45","nav-arrows":"_nav-arrows_b6zf8_51","nav-button":"_nav-button_b6zf8_57",carouselContainer:ea,carousel:ta,carouselInner:aa,carouselItem:na,rankCard:ra,rankPill:oa,rankGold:sa,rankSilver:la,rankBronze:ia,skeletonPoster:ca,skeletonText:da},Pe="TRENDING_DESC",ua="POPULARITY_DESC",ha=10;function ma({title:n,eyebrow:l}){const{lowEndMode:h}=ke(),[t,o]=ie("trending_sort",Pe),i=[{value:Pe,label:"Trending"},{value:ua,label:"All Time"}],{data:p,fetchNextPage:s,hasNextPage:S,isFetchingNextPage:y,isLoading:N,isError:m,error:c}=tt(t,ha),r=H(()=>p?.pages.flatMap(u=>u)||[],[p]),w=P(()=>{S&&!y&&!N&&s()},[S,y,N,s]),{emblaRef:C,stepBy:k,canScrollPrev:d,canScrollNext:g}=ve({onReachThreshold:w,slideCount:r.length});return e("section",{className:_.sectionWrapper,children:[e("div",{className:_["section-header"],children:[e("div",{className:_["title-wrapper"],children:e("div",{className:"title-stack",children:[l&&e("div",{className:"section-eyebrow",children:l}),e("div",{className:`section-title ${_.sectionTitleNoMargin}`,children:n})]})}),e("div",{className:_["header-actions"],children:[e(J,{ariaLabel:"Trending sort",width:120,value:t,options:i,onChange:o}),(d||g)&&e("div",{className:_["nav-arrows"],children:[d&&e("button",{className:_["nav-button"],type:"button",onClick:u=>{u.preventDefault(),k("left",h)},"aria-label":"Scroll left",children:e(E,{name:"chevron-left"})}),g&&e("button",{className:_["nav-button"],type:"button",onClick:u=>{u.preventDefault(),k("right",h)},"aria-label":"Scroll right",children:e(E,{name:"chevron-right"})})]})]})]}),N?e("div",{className:_.carouselContainer,children:e("div",{className:_.carousel,children:e("div",{className:_.carouselInner,children:Array.from({length:7}).map((u,f)=>e("div",{className:_.carouselItem,children:[e("div",{className:_.skeletonPoster}),e("div",{className:_.skeletonText})]},f))})})}):m?e(Re,{message:c instanceof Error?c.message:"An unknown error occurred"}):e("div",{className:_.carouselContainer,children:e("div",{className:_.carousel,ref:C,children:e("div",{className:_.carouselInner,children:[r.map((u,f)=>e("div",{className:_.carouselItem,children:[e("div",{className:_.rankCard,children:e(ce,{anime:u})}),e("div",{className:`${_.rankPill} ${f===0?_.rankGold:f===1?_.rankSilver:f===2?_.rankBronze:""}`,children:f+1})]},u._id)),y&&e("div",{className:_.carouselItem,style:{minWidth:"150px",display:"flex",alignItems:"center",justifyContent:"center"},children:e("div",{className:_.skeletonPoster})})]})})})]})}const ga=[{value:"TV",label:"TV"},{value:"ONA",label:"ONA"},{value:"OVA",label:"OVA"},{value:"MOVIE",label:"Movie"},{value:"ALL",label:"All"},{value:"ADULT",label:"Mature"}],pa=10;function va({eyebrow:n}){const{lowEndMode:l}=ke(),[h,t]=ie("latest_releases_format","TV"),{data:o,fetchNextPage:i,hasNextPage:p,isFetchingNextPage:s,isLoading:S,isError:y,error:N}=at(h,pa),m=H(()=>o?.pages.flatMap(d=>d)||[],[o]),c=P(()=>{p&&!s&&!S&&i()},[p,s,S,i]),{emblaRef:r,stepBy:w,canScrollPrev:C,canScrollNext:k}=ve({onReachThreshold:c,slideCount:m.length});return e("section",{className:_.sectionWrapper,children:[e("div",{className:_["section-header"],children:[e("div",{className:_["title-wrapper"],children:e("div",{className:"title-stack",children:[n&&e("div",{className:"section-eyebrow",children:n}),e("div",{className:`section-title ${_.sectionTitleNoMargin}`,children:"Latest Releases"})]})}),e("div",{className:_["header-actions"],children:[e(J,{ariaLabel:"Latest releases format",width:120,value:h,options:ga,onChange:t}),(C||k)&&e("div",{className:_["nav-arrows"],children:[C&&e("button",{className:_["nav-button"],type:"button",onClick:d=>{d.preventDefault(),w("left",l)},"aria-label":"Scroll left",children:e(E,{name:"chevron-left"})}),k&&e("button",{className:_["nav-button"],type:"button",onClick:d=>{d.preventDefault(),w("right",l)},"aria-label":"Scroll right",children:e(E,{name:"chevron-right"})})]})]})]}),S?e("div",{className:_.carouselContainer,children:e("div",{className:_.carousel,children:e("div",{className:_.carouselInner,children:Array.from({length:7}).map((d,g)=>e("div",{className:_.carouselItem,children:[e("div",{className:_.skeletonPoster}),e("div",{className:_.skeletonText})]},g))})})}):y?e(Re,{message:N instanceof Error?N.message:"An unknown error occurred"}):e("div",{className:_.carouselContainer,children:e("div",{className:_.carousel,ref:r,children:e("div",{className:_.carouselInner,children:[m.map(d=>e("div",{className:_.carouselItem,children:e(ce,{anime:d})},d._id)),s&&e("div",{className:_.carouselItem,style:{minWidth:"150px",display:"flex",alignItems:"center",justifyContent:"center"},children:e("div",{className:_.skeletonPoster})})]})})})]})}const _a="_scheduleSection_ngtwy_1",ya="_sectionTitleRow_ngtwy_5",ba="_sectionTitleNoMargin_ngtwy_11",fa="_sectionHeader_ngtwy_15",Ta="_headerActions_ngtwy_25",Na="_daySelectorContainer_ngtwy_33",wa="_daySelector_ngtwy_33",Sa="_daySelectorInner_ngtwy_50",ka="_dayBtn_ngtwy_61",Ca="_active_ngtwy_84",Ia="_dayMonth_ngtwy_92",Ra="_dayNum_ngtwy_100",Aa="_dayName_ngtwy_106",La="_navArrows_ngtwy_119",$a="_navButton_ngtwy_125",Ma="_carouselContainer_ngtwy_168",Ba="_carousel_ngtwy_168",xa="_carouselInner_ngtwy_180",Pa="_carouselCard_ngtwy_186",$={scheduleSection:_a,sectionTitleRow:ya,sectionTitleNoMargin:ba,sectionHeader:fa,headerActions:Ta,daySelectorContainer:Na,daySelector:wa,daySelectorInner:Sa,dayBtn:ka,active:Ca,dayMonth:Ia,dayNum:Ra,dayName:Aa,navArrows:La,navButton:$a,carouselContainer:Ma,carousel:Ba,carouselInner:xa,carouselCard:Pa},de=n=>{const l=n.getFullYear(),h=String(n.getMonth()+1).padStart(2,"0"),t=String(n.getDate()).padStart(2,"0");return`${l}-${h}-${t}`},Ea=async(n,l)=>await nt.data.schedule.query({date:n,format:l}),Da=({eyebrow:n})=>{const[l,h]=B(()=>de(new Date)),[t,o]=ie("schedule_format","TV"),i=F(null),p=F(!0),{data:s=[],isLoading:S,error:y}=Ct({queryKey:[ze.schedule,l,t],queryFn:()=>Ea(l,t),staleTime:1e3*60*5}),{emblaRef:N,canScrollPrev:m,canScrollNext:c,stepBy:r,scrollToStart:w}=ve({slideCount:s.length}),C=H(()=>{const d=[],g=new Date,u=de(g),f=new Date(g);f.setDate(g.getDate()-1);const R=de(f),z=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];for(let A=-6;A<=6;A++){const D=new Date(g);D.setDate(g.getDate()+A),d.push(D)}return d.map(A=>{const D=de(A),j=D===u?"Today":D===R?"Yest":z[A.getDay()],I=A.getDate(),U=new Intl.DateTimeFormat("en-US",{month:"short"}).format(A);return{dateString:D,dayLabel:j,dayNum:I,monthName:U}})},[]);x(()=>{const d=i.current,g=d?.querySelector(`[data-date="${l}"]`);if(!d||!g)return;const u=d.getBoundingClientRect(),f=g.getBoundingClientRect(),R=d.scrollLeft+(f.left-u.left)-(u.width-f.width)/2;d.scrollTo({left:Math.max(0,R),behavior:p.current?"auto":"smooth"}),p.current=!1},[l]),x(()=>{w(!0)},[l,w]);const k=[{value:"TV",label:"TV"},{value:"ONA",label:"ONA"},{value:"OVA",label:"OVA"},{value:"MOVIE",label:"Movie"},{value:"ALL",label:"All"},{value:"ADULT",label:"Mature"}];return e("div",{className:$.scheduleSection,children:[e("div",{className:$.sectionHeader,children:[e("div",{className:$.sectionTitleRow,children:e("div",{className:"title-stack",children:[n&&e("div",{className:"section-eyebrow",children:n}),e("h2",{className:`section-title ${$.sectionTitleNoMargin}`,children:"Episode Schedule"})]})}),e("div",{className:$.headerActions,children:[e(J,{ariaLabel:"Schedule format",width:120,value:t,options:k,onChange:o}),s.length>0&&(m||c)&&e("div",{className:$.navArrows,children:[m&&e("button",{className:$.navButton,onClick:()=>r("left"),"aria-label":"Scroll left",children:e(E,{name:"chevron-left"})}),c&&e("button",{className:$.navButton,onClick:()=>r("right"),"aria-label":"Scroll right",children:e(E,{name:"chevron-right"})})]})]})]}),e("div",{className:$.daySelectorContainer,children:e("div",{className:$.daySelector,ref:i,children:e("div",{className:$.daySelectorInner,children:C.map(d=>e("button",{type:"button","data-date":d.dateString,"aria-pressed":l===d.dateString,className:`${$.dayBtn} ${l===d.dateString?$.active:""}`,onClick:()=>h(d.dateString),children:[e("span",{className:$.dayMonth,children:d.monthName}),e("span",{className:$.dayNum,children:d.dayNum}),e("span",{className:$.dayName,children:d.dayLabel})]},d.dateString))})})}),e("div",{className:$.carouselContainer,children:e("div",{className:$.carousel,ref:N,children:e("div",{className:$.carouselInner,children:S?Array.from({length:7}).map((d,g)=>e("div",{className:$.carouselCard,children:e(Ge,{layout:"vertical"})},g)):y?e("div",{style:{width:"100%"},children:e(Re,{message:y instanceof Error?y.message:"An unknown error occurred"})}):s.length===0?e("p",{style:{textAlign:"center",marginTop:"1rem",width:"100%"},children:"No episodes scheduled for this day."}):s.map(d=>e("div",{className:$.carouselCard,children:e(ce,{anime:d,continueWatching:!1,episodeBadge:!0,layout:"vertical"},d._id)},d._id))})})})]})},Wa="_bannerContainer_lye2m_1",Oa="_hero_lye2m_28",za="_ambient_lye2m_37",Va="_ambientShow_lye2m_49",Fa="_scrim_lye2m_53",ja="_progressLine_lye2m_64",Ga="_paused_lye2m_84",Ua="_dots_lye2m_98",qa="_dot_lye2m_98",Ha="_dotActive_lye2m_121",Qa="_viewport_lye2m_132",Ya="_track_lye2m_139",Xa="_slide_lye2m_145",Ka="_slideInner_lye2m_153",Za="_poster_lye2m_163",Ja="_posterLandscape_lye2m_174",en="_info_lye2m_198",tn="_kicker_lye2m_207",an="_featureLabel_lye2m_214",nn="_scoreChip_lye2m_226",rn="_rise_lye2m_244",on="_active_lye2m_248",sn="_metaRow_lye2m_304",ln="_metaItem_lye2m_315",cn="_metaDivider_lye2m_321",dn="_title_lye2m_328",un="_genres_lye2m_347",hn="_genreTag_lye2m_355",mn="_summary_lye2m_366",gn="_actions_lye2m_378",pn="_watchBtn_lye2m_386",vn="_detailsBtn_lye2m_418",_n="_secondaryRow_lye2m_449",yn="_secondaryBtn_lye2m_456",bn="_navArrow_lye2m_479",fn="_prevArrow_lye2m_512",Tn="_nextArrow_lye2m_516",v={bannerContainer:Wa,hero:Oa,ambient:za,ambientShow:Va,scrim:Fa,progressLine:ja,paused:Ga,dots:Ua,dot:qa,dotActive:Ha,viewport:Qa,track:Ya,slide:Xa,slideInner:Ka,poster:Za,posterLandscape:Ja,info:en,kicker:tn,featureLabel:an,scoreChip:nn,rise:rn,active:on,metaRow:sn,metaItem:ln,metaDivider:cn,title:dn,genres:un,genreTag:hn,summary:mn,actions:gn,watchBtn:pn,detailsBtn:vn,secondaryRow:_n,secondaryBtn:yn,navArrow:bn,prevArrow:fn,nextArrow:Tn},Nn=8e3,ue=()=>e("div",{className:"skeleton",style:{width:"100vw",maxWidth:"100vw",position:"relative",left:"50%",right:"50%",marginLeft:"-50vw",marginRight:"-50vw",height:"clamp(480px, 72vh, 660px)",marginTop:"calc(-1 * var(--header-height))",marginBottom:"2.5rem"}}),_e=({slides:n,posterAspect:l="portrait",eyebrow:h="Spotlight"})=>{const[t,o]=B(0),[i,p]=B(0),[s,S]=B(!1),[y,N]=B(null),[m,c]=B(0),[r,w]=B({front:"",back:"",flip:!1}),C=F(0),k=F(0),d=F(new Set),g=F(null),u=F(0),f=P(a=>a.bannerSrc,[]),R=P(()=>{p(a=>a+1)},[]),z=P(a=>{g.current!==null&&(window.clearTimeout(g.current),g.current=null),N(null),R();const b=f(n[a]);w(T=>T.flip?{front:b,back:T.back,flip:!1}:{front:T.front,back:b,flip:!0}),o(a)},[R,n,f]),A=P(a=>{if(n.length===0)return;const b=(a%n.length+n.length)%n.length;d.current.has(f(n[b]))?z(b):N(b)},[n,f,z]);x(()=>{let a=!1;return n.forEach(b=>{const T=f(b);if(!T||d.current.has(T))return;const W=new Image;W.src=T;const X=()=>{a||d.current.has(T)||(d.current.add(T),c(G=>G+1))};W.onload=X,W.onerror=X}),()=>{a=!0}},[n,f]),x(()=>{if(n.length!==0&&!r.front){const a=f(n[0]);w({front:a,back:"",flip:!1})}},[n,r.front,f]),x(()=>{if(y!==null){if(y<0||y>=n.length){N(null);return}d.current.has(f(n[y]))&&z(y)}},[y,m,n,f,z]),x(()=>{if(y===null)return;g.current!==null&&window.clearTimeout(g.current);const a=y;return g.current=window.setTimeout(()=>{g.current=null,z(a)},2500),()=>{g.current!==null&&(window.clearTimeout(g.current),g.current=null)}},[y,z]);const D=P(a=>{A(a)},[A]),L=P(()=>{A(u.current+1)},[A]),V=P(()=>{A(u.current-1)},[A]),j=F(null);if(x(()=>{const a=j.current;if(!a)return;const b=T=>{if(Math.abs(T.deltaY)>Math.abs(T.deltaX)&&Math.abs(T.deltaY)>5){T.preventDefault(),T.stopPropagation();const W=Date.now();if(W-C.current<300)return;C.current=W,R(),T.deltaY>0?L():V()}};return a.addEventListener("wheel",b,{passive:!1}),()=>a.removeEventListener("wheel",b)},[n.length,L,V,R]),x(()=>{if(n.length===0||s)return;const a=setTimeout(L,Nn);return()=>clearTimeout(a)},[t,L,n.length,i,s]),x(()=>{const a=b=>{const T=b.target;T&&(T.tagName==="INPUT"||T.tagName==="TEXTAREA"||T.tagName==="SELECT"||T.isContentEditable)||(b.key==="ArrowRight"?(b.preventDefault(),L()):b.key==="ArrowLeft"&&(b.preventDefault(),V()))};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[L,V]),x(()=>{t>=n.length&&o(0)},[n.length,t]),n.length===0)return null;const I=t>=n.length?0:t;u.current=I;const U=a=>{k.current=a.touches[0].clientX},Y=a=>{const T=a.changedTouches[0].clientX-k.current;Math.abs(T)>50&&(R(),T>0?V():L())};return e("div",{className:v.bannerContainer,onMouseEnter:()=>S(!0),onMouseLeave:()=>S(!1),children:e("div",{className:`${v.hero} ${s?v.paused:""}`,onTouchStart:U,onTouchEnd:Y,children:[r.front&&e("img",{src:r.front,alt:"","aria-hidden":"true",className:`${v.ambient} ${r.flip?"":v.ambientShow}`}),r.back&&e("img",{src:r.back,alt:"","aria-hidden":"true",className:`${v.ambient} ${r.flip?v.ambientShow:""}`}),e("div",{className:v.scrim,"aria-hidden":"true"}),n.length>1&&e("div",{className:v.progressLine,"aria-hidden":"true"},`progress-${i}-${I}`),n.length>1&&e("div",{className:v.dots,ref:j,role:"tablist","aria-label":"Spotlight slides",children:n.map((a,b)=>e("button",{role:"tab","aria-selected":b===I,"aria-label":`Go to slide ${b+1}: ${a.title}`,className:`${v.dot} ${b===I?v.dotActive:""}`,onClick:()=>D(b),tabIndex:b===I?0:-1},a.key))}),e("div",{className:v.viewport,children:e("div",{className:v.track,style:{transform:`translateX(-${I*100}%)`},children:n.map((a,b)=>e("div",{className:`${v.slide} ${b===I?v.active:""}`,"aria-hidden":b!==I,children:e("div",{className:v.slideInner,children:[e(rt,{src:a.posterSrc,alt:a.posterAlt,className:l==="landscape"?v.posterLandscape:v.poster,decoding:"async"}),e("div",{className:v.info,children:[e("div",{className:`${v.kicker} ${v.rise}`,children:[e("span",{className:v.featureLabel,children:h}),a.score!==void 0&&a.score!==null&&a.score!==""&&e("span",{className:v.scoreChip,children:[e(E,{name:"star",size:12}),e("span",{children:a.score})]})]}),e(Oe,{to:a.detailTo,className:`${v.title} ${v.rise}`,"aria-label":`View details for ${a.title}`,tabIndex:b===I?0:-1,children:a.title}),a.metaItems.length>0&&e("div",{className:`${v.metaRow} ${v.rise}`,children:a.metaItems.map((T,W)=>e(q.Fragment,{children:[e("span",{className:v.metaItem,children:T}),W<a.metaItems.length-1&&e("div",{className:v.metaDivider})]},W))}),a.tags.length>0&&e("div",{className:`${v.genres} ${v.rise}`,children:a.tags.slice(0,3).map(T=>e("span",{className:v.genreTag,children:T},T))}),a.synopsis&&e("p",{className:`${v.summary} ${v.rise}`,children:a.synopsis}),e("div",{className:`${v.actions} ${v.rise}`,children:[e("button",{className:v.watchBtn,onClick:a.onPrimary,tabIndex:b===I?0:-1,children:[e(E,{name:a.primaryIcon,size:14}),e("span",{children:a.primaryLabel})]}),e("div",{className:v.secondaryRow,children:[e("button",{className:v.detailsBtn,onClick:a.onDetails,tabIndex:b===I?0:-1,children:[e(E,{name:"info-circle",size:15}),e("span",{children:"Details"})]}),a.onWatchlist&&e("button",{className:v.secondaryBtn,onClick:a.onWatchlist,tabIndex:b===I?0:-1,children:[e(E,{name:"plus",size:14}),e("span",{children:"Watchlist"})]})]})]})]})]})},a.key))})}),n.length>1&&e(se,{children:[e("button",{className:`${v.navArrow} ${v.prevArrow}`,onClick:()=>{R(),V()},"aria-label":"Previous slide",children:e(E,{name:"chevron-left",size:20})}),e("button",{className:`${v.navArrow} ${v.nextArrow}`,onClick:()=>{R(),L()},"aria-label":"Next slide",children:e(E,{name:"chevron-right",size:20})})]})]})})},wn=({animeList:n})=>{const{titlePreference:l}=Ve(),h=ee(),t=H(()=>n.slice(0,6).map(o=>{const i=l==="nativeName"?o.nativeName||o.name:l==="englishName"&&o.englishName||o.name;return{key:o._id,bannerSrc:o.bannerImage?Ne(o.bannerImage,1280,560):Ne(o.thumbnail,1280,450),posterSrc:Ne(o.thumbnail,460,650),posterAlt:i,title:i,detailTo:`/anime/${o._id}`,score:o.score,metaItems:[o.type||"Anime",o.status,o.episodeCount?`${o.episodeCount} Episodes`:void 0,o.rating].filter(p=>!!p),tags:(o.genres??[]).slice(0,3).map(p=>typeof p=="string"?p:p?.name).filter(p=>!!p),synopsis:ot(o.description??""),primaryLabel:"Watch Now",primaryIcon:"play",onPrimary:()=>h(`/watch/${o._id}`),onDetails:()=>h(`/anime/${o._id}`)}}),[n,l,h]);return e(_e,{slides:t})},Sn="_emptyState_19tmt_1",kn="_emptyStateIcon_19tmt_16",Cn="_emptyStateTitle_19tmt_23",In="_emptyStateText_19tmt_30",he={emptyState:Sn,emptyStateIcon:kn,emptyStateTitle:Cn,emptyStateText:In},ye=({icon:n,text:l,actionLabel:h,onAction:t,title:o="Nothing is here..."})=>e("div",{className:he.emptyState,children:[e(E,{name:n,size:48,className:he.emptyStateIcon}),e("div",{children:[e("h3",{className:he.emptyStateTitle,children:o}),e("p",{className:he.emptyStateText,children:l})]}),e(Fe,{variant:"primary",size:"sm",onClick:t,style:{marginTop:"1rem"},children:h})]}),Rn="_tabBar_1mv4x_1",An="_tabIndicator_1mv4x_24",Ln="_tabButton_1mv4x_38",$n="_tabActive_1mv4x_53",me={tabBar:Rn,tabIndicator:An,tabButton:Ln,tabActive:$n};function Mn({options:n,value:l,onChange:h,ariaLabel:t},o){const i=F(null),p=F(new Map),s=F(null),[S,y]=B({left:0,width:0}),N=P((m,c)=>{const r=p.current.get(m),w=i.current;if(r&&w){const C=w.getBoundingClientRect(),k=r.getBoundingClientRect();y({left:k.left-C.left+w.scrollLeft,width:k.width}),c&&r.scrollIntoView({block:"nearest",inline:"nearest"})}},[]);return et(()=>{const m=s.current!==null&&s.current!==l;s.current=l,N(l,m)},[l,n.length,N]),x(()=>{if(N(l,!1),typeof ResizeObserver>"u")return;let m=0;const c=i.current;if(!c)return;const r=new ResizeObserver(()=>{cancelAnimationFrame(m),m=requestAnimationFrame(()=>N(l,!1))});r.observe(c);let w=!1;return document.fonts?.ready&&document.fonts.ready.then(()=>{w||N(l,!1)}),()=>{w=!0,cancelAnimationFrame(m),r.disconnect()}},[l,n.length,N]),e("div",{className:me.tabBar,ref:m=>{i.current=m,typeof o=="function"?o(m):o&&(o.current=m)},"aria-label":t,children:[e("div",{className:me.tabIndicator,style:{left:S.left,width:S.width}}),n.map(m=>e(Fe,{ref:c=>{c&&p.current.set(m.value,c)},variant:"secondary",size:"sm",className:`${me.tabButton} ${l===m.value?me.tabActive:""}`,onClick:()=>h(m.value),children:m.label},m.value))]})}const ge=q.forwardRef(Mn),Bn=[{value:"popular",label:"Popular"},{value:"followed",label:"Most Followed"},{value:"rating",label:"Top Rated"}],Ee=({title:n,eyebrow:l,sort:h,mature:t,headerActions:o})=>{const{toggle:i,bookmarkedIds:p}=Qe(),{popup:s,openPopup:S,scheduleClose:y,cancelClose:N,closePopup:m}=qe(),{data:c,isLoading:r,fetchNextPage:w,hasNextPage:C,isFetchingNextPage:k}=it({provider:"",query:"",sort:h,status:"",type:"",rating:t?"safe,suggestive,erotica,pornographic":"safe",mature:t}),d=H(()=>c?.pages.flatMap(u=>u.items)??[],[c]),g=P(()=>{C&&!k&&!r&&w()},[C,k,r,w]);return e(se,{children:[e(Z,{title:n,eyebrow:l,loading:r,carousel:!0,itemCount:d.length,headerActions:o,onReachThreshold:g,isFetchingNextPage:k,loadingSkeleton:e("div",{className:"skeleton",style:{aspectRatio:"3 / 4"}}),skeletonCount:7,children:d.map(u=>{const f=Se(u.provider,u.id);return e(pe,{item:{id:f,title:u.title,...Xe(u),thumbnail:Ce(u.provider,u.cover),typeBadge:u.type||void 0,chapterBadge:u.latestChapter?`Ch. ${u.latestChapter}`:null,isAdult:Ye(u)},linkTo:`/manga/${u.provider}/${encodeURIComponent(u.id)}`,hoverIcon:"info",showInfoButton:!0,display:{elements:{poster:{typeBadge:!0,chapterBadge:!0,adultBadge:!0},info:{title:!0,mobileBadges:!0,progress:!1,meta:!1}}},onOpenDetails:R=>S(R,{provider:u.provider,mangaId:u.id,title:u.title,altTitle:u.altTitle,cover:u.cover,contentRating:u.contentRating,readTarget:`/manga/${u.provider}/${encodeURIComponent(u.id)}`,mature:t}),onPopupHoverIntent:R=>R?N():y(),rawThumbnail:!0},`${u.provider}-${u.id}`)})}),s&&e(He,{data:s.data,anchorRect:s.rect,bookmarked:p.has(Se(s.data.provider,s.data.mangaId)),onToggleBookmark:()=>i({id:s.data.mangaId,provider:s.data.provider,title:s.data.title,cover:s.data.cover,altTitle:s.data.altTitle??void 0,contentRating:s.data.contentRating}),onMouseEnter:N,onMouseLeave:y,onRequestClose:m})]})},xn=()=>{const{options:n}=st(),l=H(()=>n.some(s=>s.kind==="manga"),[n]),{hasConsent:h}=lt(),[t,o]=ie("manga_discover_tab","latest"),[i,p]=ie("manga_trending_sort","popular");return l?e(se,{children:[e(ge,{ariaLabel:"Discover manga",options:[{value:"latest",label:"Latest Releases"},{value:"trending",label:"Trending"}],value:t,onChange:o}),t==="latest"?e(Ee,{title:"Latest Releases",eyebrow:"Fresh chapters",sort:"latest",mature:h}):e(Ee,{title:"Trending",eyebrow:"Discover",sort:i,mature:h,headerActions:e("select",{className:M["header-select"],value:i,onChange:s=>p(s.currentTarget.value),"aria-label":"Trending sort",children:Bn.map(s=>e("option",{value:s.value,children:s.label},s.value))})})]}):null},Pn=()=>{const n=ee(),{data:l,isLoading:h}=Bt(24),[t,o]=B(null),{popup:i,openPopup:p,scheduleClose:s,cancelClose:S,closePopup:y}=qe(),{toggle:N,bookmarkedIds:m}=Qe(),c=l?.data??[];return e("div",{style:{paddingBottom:"2rem"},children:[e(Z,{title:"Continue Reading",eyebrow:"Pick up where you left off",titleLink:"/reading-list/Continue Reading",loading:h,carousel:!0,collapsible:!0,defaultExpanded:c.length>0,highlight:!0,itemCount:c.length,loadingSkeleton:e("div",{className:"skeleton",style:{aspectRatio:"3 / 4"}}),skeletonCount:7,emptyState:e(ye,{icon:"book",text:"You haven't read anything yet. Browse manga and open a chapter to start tracking.",actionLabel:"Browse Manga",onAction:()=>n("/manga")}),children:c.map(r=>{const w=r.page??0,C=r.pageCount??0,k=r.chapterId&&r.provider?`/manga/${r.provider}/${encodeURIComponent(r.mangaId)}/read?chapter=${encodeURIComponent(r.chapterId)}`:r.provider?`/manga/${r.provider}/${encodeURIComponent(r.mangaId)}`:"#";return e(pe,{item:{id:r.id,title:r.title||"",...Xe({title:r.title||"",altTitle:r.altTitle}),thumbnail:r.provider?Ce(r.provider,r.cover||""):r.cover||"",chapterBadge:r.chapterNumber?`Ch. ${r.chapterNumber}`:null,isAdult:Ye(r)},linkTo:k,hoverIcon:"book",progress:C>0?{percent:w/C*100,label:`Ch. ${r.chapterNumber} · p. ${w}/${C}`}:void 0,showProgress:!0,display:{elements:{poster:{typeBadge:!1,chapterBadge:!0,adultBadge:!0,removeButton:!0},info:{title:!0,mobileBadges:!0,progress:!0,meta:!1}}},onRemove:()=>o({libId:r.id,title:r.title||""}),onOpenDetails:d=>p(d,{provider:r.provider||"",mangaId:r.mangaId||"",title:r.title||"",altTitle:r.altTitle,cover:r.cover||"",contentRating:r.contentRating||void 0,readTarget:k}),onPopupHoverIntent:d=>d?S():s(),rawThumbnail:!0},r.id)})}),e(Mt,{mangaId:t?t.libId:null,title:t?.title,onClose:()=>o(null)}),i&&i.data.provider&&e(He,{data:i.data,anchorRect:i.rect,bookmarked:m.has(Se(i.data.provider,i.data.mangaId)),onToggleBookmark:()=>N({id:i.data.mangaId,provider:i.data.provider,title:i.data.title,cover:i.data.cover,altTitle:i.data.altTitle??void 0,contentRating:i.data.contentRating}),onMouseEnter:S,onMouseLeave:s,onRequestClose:y}),e(xn,{})]})},En="_emptyState_bpz5x_1",De={emptyState:En},Dn=[{value:"latest",label:"Latest Releases"},{value:"trending",label:"Trending"}],Wn=[{value:"trending_week",label:"Trending Now"},{value:"trending_day",label:"Trending Today"},{value:"popular",label:"Popular All Time"},{value:"top_rated",label:"Top Rated"}],On=()=>{const n=ee(),{data:l,isLoading:h}=Et(24),t=Dt(),o=Wt(),[i,p]=B(null),[s,S]=B(()=>re.getItem("tv_home_activeTab")||"latest"),[y,N]=B("tv"),[m,c]=B("trending_week"),[r,w]=B("multi"),C=l?.data??[];q.useEffect(()=>{re.setItem("tv_home_activeTab",s)},[s]);const k=m.startsWith("trending_"),d=m==="trending_day"?"day":"week",g={popular:"popularity.desc",top_rated:"vote_average.desc"},{data:u,isLoading:f}=Ke(r==="multi"?"all":r,d,1,k&&s==="trending"),{data:R,isLoading:z}=Be({type:r,sort_by:g[m]||"popularity.desc",page:1}),A=k?u?.results||[]:R?.results||[],D=k?f:z,{data:L,isLoading:V}=Be({type:y,sort_by:"primary_release_date.desc",page:1}),j=L?.results||[],I=a=>{i&&(o.mutate({mediaId:i.libId}),a&&t.mutate(i.libId))},U=P(a=>e(xt,{item:{id:a.id,title:a.title,year:a.year,type:a.type,image:a.image,vote_average:a.vote_average,adult:a.adult}},`${a.type}-${a.id}`),[]),Y=()=>{switch(s){case"latest":return e(Z,{title:"Latest Releases",eyebrow:"Fresh picks",loading:V,carousel:!0,itemCount:j.length,headerActions:e(J,{ariaLabel:"Latest type",value:y,onChange:a=>N(a),options:[{value:"tv",label:"TV Shows"},{value:"movie",label:"Movies"}]}),loadingSkeleton:e("div",{className:"skeleton",style:{aspectRatio:"3 / 4",borderRadius:"var(--radius-lg)"}}),emptyState:e("div",{className:De.emptyState,children:e("p",{children:"No latest releases available right now."})}),children:j.map(U)});case"trending":return e(Z,{title:"Trending",eyebrow:"Discover",loading:D,carousel:!0,itemCount:A.length,headerActions:e(se,{children:[e(J,{ariaLabel:"Trending sort",value:m,onChange:c,options:Wn.map(a=>({value:a.value,label:a.label}))}),e(J,{ariaLabel:"Trending type",value:r,onChange:a=>w(a),options:[{value:"multi",label:"All"},{value:"tv",label:"TV Shows"},{value:"movie",label:"Movies"}]})]}),loadingSkeleton:e("div",{className:"skeleton",style:{aspectRatio:"3 / 4",borderRadius:"var(--radius-lg)"}}),emptyState:e("div",{className:De.emptyState,children:e("p",{children:"No trending content available right now."})}),children:A.map(U)})}};return e("div",{style:{paddingBottom:"2rem"},children:[e(Z,{title:"Continue Watching",eyebrow:"Pick up where you left off",titleLink:"/tv-watchlist/Continue Watching",loading:h,carousel:!0,collapsible:!0,defaultExpanded:C.length>0,highlight:!0,itemCount:C.length,loadingSkeleton:e("div",{className:"skeleton",style:{aspectRatio:"3 / 4"}}),skeletonCount:7,emptyState:e(ye,{icon:"tv",text:"You haven't watched anything yet. Search TV & Movies and start watching to track progress.",actionLabel:"Browse TV & Movies",onAction:()=>n("/tv-search")}),children:C.map(a=>{const b=a.currentTime??0,T=a.duration??0,W=a.season??1,X=a.episode??1,G=a.mediaType==="movie",K=G?"Movie":`S${W} E${X}`,te=a.completed===1||T>0&&b>=T*.8,ae=te?100:T>0&&b>0?b/T*100:0,be=te?"Watched":T>0?G?`${oe(b)} / ${oe(T)}`:`${K} · ${oe(b)} / ${oe(T)}`:K;return e(pe,{item:{id:a.id,title:a.title||"",thumbnail:a.poster||"",typeBadge:G?"Movie":"TV",chapterBadge:K,isAdult:dt({adult:a.adult===1})},linkTo:ct(a.mediaType,a.tmdbId??0,G?void 0:W,G?void 0:X),hoverIcon:"play",progress:(T>0||te)&&ae>0?{percent:ae,label:be}:void 0,showProgress:!0,metaRow:a.year?e("span",{style:{opacity:.75},children:a.year}):void 0,onRemove:()=>p({libId:a.id,title:a.title||""}),renderPopup:(fe,le)=>e(Pt,{item:{id:a.tmdbId??0,title:a.title||"",year:a.year||"",type:a.mediaType||"tv",image:a.poster||""},anchorRect:fe,onMouseEnter:le.onMouseEnter,onMouseLeave:le.onMouseLeave,onRequestClose:le.close})},a.id)})}),e(ge,{ariaLabel:"Browse TV",options:Dn,value:s,onChange:S}),e("div",{children:Y()}),e(Ue,{isOpen:!!i,itemName:i?.title,progressKind:"watch",listLabel:"my TV watchlist",onClose:()=>{p(null)},onConfirm:I})]})};function We(n){const l=n.currentTime??0,h=n.duration??0,t=(n.trackIndex??0)+1;return h>0?`Track ${t} · ${oe(l)} / ${oe(h)}`:n.trackLabel?`Track ${t} · ${n.trackLabel}`:`Track ${t}`}const zn=({title:n="Continue Listening",limit:l=24,titleLink:h,showEmptyState:t=!0})=>{const o=ee(),{data:i,isLoading:p}=zt(l),{toggle:s,bookmarkedIds:S}=Vt(),[y,N]=B(null),m=i?.data??[];return e(se,{children:[e(Z,{title:n,eyebrow:"Pick up where you left off",titleLink:h??"/listening-list/Continue Listening",loading:p,carousel:!0,collapsible:!0,defaultExpanded:m.length>0,highlight:!0,itemCount:m.length,loadingSkeleton:e("div",{className:"skeleton",style:{aspectRatio:"16 / 9"}}),skeletonCount:7,emptyState:t?e(ye,{icon:"headphones",text:"You haven't listened to anything yet. Browse ASMR and play a track to start tracking.",actionLabel:"Browse ASMR",onAction:()=>o("/asmr")}):void 0,children:m.map(c=>{const r=c.currentTime??0,w=c.duration??0,C=c.rjCode||c.id;return e(pe,{item:{id:c.id,title:c.title||"",thumbnail:c.thumbnail||"",chapterBadge:`Track ${(c.trackIndex??0)+1}`,isAdult:!!c.isAdult},linkTo:`/asmr/${encodeURIComponent(C)}`,hoverIcon:"play",layout:"horizontal",progress:w>0?{percent:Math.min(100,r/w*100),label:We(c)??""}:void 0,showProgress:!0,display:{elements:{poster:{typeBadge:!1,chapterBadge:!0,adultBadge:!0,removeButton:!0},info:{title:!0,mobileBadges:!0,progress:!0,meta:!1}}},onRemove:()=>N({workId:c.id,title:c.title||""}),renderPopup:(k,d)=>e(Ft,{data:{rjCode:c.rjCode||c.id,title:c.title||"",thumbnail:c.thumbnail||"",isAdult:!!c.isAdult,listenTarget:`/asmr/${encodeURIComponent(c.rjCode||c.id)}`,progressLabel:We(c)},anchorRect:k,bookmarked:S.has(jt(c.rjCode||c.id)),onToggleBookmark:()=>s({rjCode:c.rjCode||c.id,title:c.title||"",thumbnail:c.thumbnail||"",isAdult:!!c.isAdult}),onMouseEnter:d.onMouseEnter,onMouseLeave:d.onMouseLeave,onRequestClose:d.close}),rawThumbnail:!0},c.id)})}),e(Ot,{workId:y?y.workId:null,title:y?.title,onClose:()=>N(null)})]})},Vn=()=>e("div",{style:{paddingBottom:"2rem"},children:e(zn,{})}),Fn=({items:n})=>{const l=ee(),h=H(()=>n.slice(0,6).map(t=>{const o=ut(t.type,t.id);return{key:String(t.id),bannerSrc:t.backdrop?t.backdrop:t.image,posterSrc:t.image,posterAlt:t.title,title:t.title,detailTo:o,score:t.vote_average>0?Number(t.vote_average).toFixed(1):null,metaItems:[t.type==="tv"?"TV Show":"Movie",t.year].filter(Boolean),tags:t.genre_ids.slice(0,3).map(i=>ht[i]??mt[i]).filter(Boolean),synopsis:Ie(t.overview,200),primaryLabel:"Watch Now",primaryIcon:"play",onPrimary:()=>l(o),onDetails:()=>l(o)}}),[n,l]);return e(_e,{slides:h,eyebrow:"TV Spotlight"})},jn=({mangaList:n})=>{const l=ee(),h=H(()=>n.slice(0,6).map(t=>{const o=`/manga/${t.provider||"mangadex"}/${t.id}`,i=Ce(t.provider||"mangadex",t.cover||"");return{key:`${t.provider}-${t.id}`,bannerSrc:i,posterSrc:i,posterAlt:t.title,title:t.title,detailTo:o,metaItems:[t.year?String(t.year):void 0,t.status??void 0].filter(p=>!!p),tags:t.tags.slice(0,3),synopsis:Ie(t.description,200,""),primaryLabel:"Read Now",primaryIcon:"book",onPrimary:()=>l(o),onDetails:()=>l(o)}}),[n,l]);return e(_e,{slides:h,eyebrow:"Manga Spotlight"})};function Gn(n){const l=n.availableEpisodes?.sub;if(typeof l=="number"&&l>0)return l;const h=n.availableEpisodesDetail?.sub,t=n.availableEpisodesDetail?.dub,o=(Array.isArray(h)?h.length:0)+(Array.isArray(t)?t.length:0);return o>0?o:null}const Un=({works:n})=>{const l=ee(),h=H(()=>n.slice(0,6).map((t,o)=>{const i=gt(t),p=`/asmr/${encodeURIComponent(i)}`,s=Gn(t);return{key:i||t._id||String(o),bannerSrc:t.thumbnail||"",posterSrc:t.thumbnail||"",posterAlt:t.name,title:t.name,detailTo:p,metaItems:[t.rating?t.rating.toUpperCase():void 0,s?`${s} track${s===1?"":"s"}`:void 0].filter(S=>!!S),tags:[],synopsis:Ie(t.description,160,""),primaryLabel:"Listen Now",primaryIcon:"play",onPrimary:()=>l(p),onDetails:()=>l(p)}}),[n,l]);return e(_e,{slides:h,eyebrow:"ASMR Spotlight",posterAspect:"landscape"})},qn="_seasonSection_6ckjf_34",Hn="_seasonGrid_6ckjf_38",ne={"section-header":"_section-header_6ckjf_1","content-type-nav":"_content-type-nav_6ckjf_8","title-wrapper":"_title-wrapper_6ckjf_18","pagination-controls":"_pagination-controls_6ckjf_24",seasonSection:qn,seasonGrid:Hn},Qn=[{value:"anime",label:"Anime"},{value:"manga",label:"Manga"},{value:"tv",label:"TV & Movies"},{value:"asmr",label:"ASMR"}],Nr=()=>{const n=It(),l=pt(),[h,t]=q.useState(1),[o,i]=B(()=>re.getItem("home_activeTab")||"latest"),[p,s]=B(()=>re.getItem("season_format")||"TV"),S=F(null),{data:y}=Me(h+1,p,o==="season"),{titlePreference:N}=Ve(),{contentType:m,setContentType:c}=vt(),[r,w]=q.useState(null),C=_t(),{data:k=[]}=yt(),d=bt(),g=ft(),u=Tt();x(()=>{document.title="Home - dango"},[]);const{data:f,isLoading:R}=Nt();x(()=>{re.setItem("home_activeTab",o)},[o]),x(()=>{re.setItem("season_format",p),t(1)},[p]),x(()=>{f!==void 0&&f.length===0&&o==="week"&&i("latest")},[f,o]);const{data:z,isLoading:A,fetchNextPage:D,hasNextPage:L,isFetchingNextPage:V}=wt(),j=P(()=>{L&&!V&&!A&&D()},[L,V,A,D]),{data:I,isLoading:U}=St(),{data:Y,isLoading:a}=Ke("all","week",1,m==="tv"),{data:b,isLoading:T}=Gt(m==="asmr"),{data:W,isLoading:X}=kt(),G=H(()=>z?.pages||[],[z]),{data:K,isLoading:te}=Me(h,p,o==="season"),ae=14,be=K&&K.length>=ae&&y&&y.length>0,fe=Rt(l.continueWatching.remove.mutationOptions({onSuccess:async()=>{n.invalidateQueries(l.continueWatching.pathFilter()),await n.invalidateQueries({queryKey:[ze.continueWatching]}),L&&G.length-1<14&&D()}})),le=P(O=>{const Q=G?.find(Te=>String(Te.id)===String(O));if(Q){const Te=Q[N]||Q.name;w({id:O,name:Te})}},[G,N]),Ae=[{key:"latest",label:"Latest Releases"},{key:"season",label:"Current Season"},{key:"popular",label:"Trending"}],Le=f!==void 0&&f.length>0,Ze=Le?[{key:"week",label:"This Week"},...Ae]:Ae,$e=o==="week"&&!Le?"latest":o,Je=()=>{switch($e){case"latest":return e(va,{eyebrow:"Fresh episodes"});case"season":return e("section",{className:ne.seasonSection,children:[e("div",{className:ne["section-header"],ref:S,children:[e("div",{className:ne["title-wrapper"],children:e("div",{className:"title-stack",children:[e("div",{className:"section-eyebrow",children:"This season"}),e("div",{className:"section-title",style:{marginBottom:0},children:"Current Season"})]})}),e("div",{style:{display:"flex",gap:"8px",alignItems:"center"},children:[e(J,{ariaLabel:"Season format",width:90,value:p,onChange:s,options:[{value:"TV",label:"TV"},{value:"ONA",label:"ONA"},{value:"OVA",label:"OVA"},{value:"MOVIE",label:"Movie"},{value:"ALL",label:"All"},{value:"ADULT",label:"Mature"}]}),e("div",{className:ne["pagination-controls"],children:e(At,{page:h,canGoNext:be,onChange:O=>{if(t(O),S.current){const Q=S.current.getBoundingClientRect().top+window.scrollY-120;window.scrollTo({top:Q,behavior:"smooth"})}},isLoading:te})})]})]}),e("div",{className:`grid-container ${ne.seasonGrid}`,style:{minHeight:"300px",alignContent:"start"},children:te?e(je,{count:ae}):K?.slice(0,ae).map(O=>e(ce,{anime:O},O._id))})]});case"popular":return e(ma,{title:"Trending",eyebrow:"Discover"});case"week":return e(xe,{title:"This Week",eyebrow:"Aired this week",animeList:f||[],continueWatching:!1,episodeBadge:!0,carousel:!0,loading:R});default:return null}};return e("div",{style:{paddingBottom:"2rem"},children:[m==="anime"&&(U&&!I?.length?e(ue,{}):I&&I.length>0&&e(wn,{animeList:I})),m==="tv"&&(a&&!Y?.results?.length?e(ue,{}):Y?.results&&Y.results.length>0&&e(Fn,{items:Y.results})),m==="manga"&&(X&&!W?.length?e(ue,{}):W&&W.length>0&&e(jn,{mangaList:W})),m==="asmr"&&(T&&!b?.length?e(ue,{}):b&&b.length>0&&e(Un,{works:b})),e("div",{className:ne["content-type-nav"],children:e(ge,{ariaLabel:"Content type",options:Qn,value:m,onChange:c})}),m==="manga"?e(Pn,{}):m==="tv"?e(On,{}):m==="asmr"?e(Vn,{}):e(se,{children:[e(xe,{title:"Continue Watching",eyebrow:"Pick up where you left off",titleLink:"/watchlist/Continue Watching",animeList:G,continueWatching:!0,carousel:!0,collapsible:!0,defaultExpanded:G.length>0,onRemove:le,loading:A,onReachThreshold:j,scrollThreshold:.7,isFetchingNextPage:V,emptyState:e(ye,{icon:"history",text:"You haven't watched anything yet. Start exploring and watch something first!",actionLabel:"Explore Trending",onAction:()=>i("popular")})}),e($t,{title:"Queue",eyebrow:"Up next",items:k,onRemove:O=>d.mutate({showId:O.showId,episodeNumber:O.episodeNumber}),showClearAll:!0,onClear:()=>g.mutate(),onReorder:O=>u.mutate(O.map(Q=>({id:Q.id,showId:Q.showId,episodeNumber:Q.episodeNumber})))}),e(ge,{ariaLabel:"Browse anime",options:Ze.map(O=>({value:O.key,label:O.label})),value:$e,onChange:i}),e("div",{children:Je()}),e(Da,{eyebrow:"Never miss an episode"}),e(Ue,{isOpen:!!r,itemName:r?.name,progressKind:"watch",listLabel:"my watchlist",onClose:()=>{w(null)},onConfirm:O=>{r&&(fe.mutate({showId:r.id}),O&&C.mutate({id:r.id}))}})]})]})};export{Nr as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as f,h as Q,T as p,A as ce,u as e,L as M}from"./vendor-core-DfaOB3Rn.js";import{b as D,u as le,a as z}from"./vendor-query-BBT5_sHx.js";import{q as h,t as g,aq as de,e as ie,d as me,K as I,F as R,f as T}from"./index-CkZCduQZ.js";import{I as c}from"./vendor-icons-C1Pj_eSX.js";import{M as pe}from"./MediaPopupShell-BewMMT93.js";import{M as he}from"./MatureConsentModal-BuJjdQ5N.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";const ue="_header_dmmg1_1",ge="_fadeIn_dmmg1_1",_e="_personaBadge_dmmg1_9",ye="_personaInfo_dmmg1_32",Ne="_personaLabel_dmmg1_37",ve="_personaValue_dmmg1_46",fe="_statsGrid_dmmg1_52",Ce="_slideUpIn_dmmg1_1",be="_statCard_dmmg1_62",Pe="_statIcon_dmmg1_71",Se="_statInfo_dmmg1_82",ke="_statValue_dmmg1_87",we="_statLabel_dmmg1_96",Le="_wideSection_dmmg1_104",Be="_sectionHeader_dmmg1_111",Me="_yearSelect_dmmg1_126",De="_heatmapLayout_dmmg1_155",Ie="_dayLabels_dmmg1_162",Re="_heatmapWrapper_dmmg1_174",Te="_heatmapScroll_dmmg1_180",xe="_heatmapMonthLabels_dmmg1_185",$e="_heatmapGrid_dmmg1_196",Ge="_heatBox_dmmg1_204",We="_hiddenBox_dmmg1_213",Ee="_level0_dmmg1_222",Oe="_level1_dmmg1_226",qe="_level2_dmmg1_229",Fe="_level3_dmmg1_232",He="_level4_dmmg1_235",Ae="_heatmapFooter_dmmg1_239",Ve="_heatLegend_dmmg1_246",Ye="_chartsContainer_dmmg1_256",Ke="_chartWrapper_dmmg1_266",Qe="_hourlyChart_dmmg1_283",ze="_hourlyBarContainer_dmmg1_291",Ue="_hourlyBar_dmmg1_291",je="_hourlyLabel_dmmg1_317",Je="_chartSubtext_dmmg1_324",Xe="_popScale_dmmg1_337",Ze="_popTrack_dmmg1_341",ea="_popThumb_dmmg1_349",aa="_popLabels_dmmg1_361",ta="_popDescription_dmmg1_371",na="_seasonalChart_dmmg1_384",sa="_seasonalBarContainer_dmmg1_392",ra="_seasonalBar_dmmg1_392",oa="_seasonalLabel_dmmg1_414",ca="_genreList_dmmg1_422",la="_genreRow_dmmg1_429",da="_genreInfo_dmmg1_435",ia="_genreName_dmmg1_442",ma="_genreCount_dmmg1_449",pa="_genreBarBg_dmmg1_456",ha="_genreBar_dmmg1_456",ua="_warningSection_dmmg1_469",ga="_warningHeader_dmmg1_475",_a="_droppedGrid_dmmg1_491",ya="_droppedCard_dmmg1_496",Na="_droppedName_dmmg1_505",va="_droppedDate_dmmg1_512",fa="_genreGrid_dmmg1_567",Ca="_genreCard_dmmg1_585",ba="_rankBadge_dmmg1_591",Pa="_rankNumber_dmmg1_604",Sa="_genreTitle_dmmg1_610",ka="_genreStats_dmmg1_618",wa="_posterRow_dmmg1_626",La="_miniPoster_dmmg1_633",Ba="_genreCardSkeleton_dmmg1_647",Ma="_pulse_dmmg1_1",Da="_skeletonRank_dmmg1_653",Ia="_skeletonTitle_dmmg1_667",Ra="_skeletonStats_dmmg1_680",Ta="_skeletonPosters_dmmg1_692",xa="_recSection_dmmg1_723",$a="_recHeader_dmmg1_727",Ga="_recSubtext_dmmg1_742",Wa="_recControls_dmmg1_748",Ea="_recControlBtn_dmmg1_754",Oa="_recPosterButton_dmmg1_782",qa="_recAddBtn_dmmg1_783",Fa="_recGrid_dmmg1_793",Ha="_recEmpty_dmmg1_799",Aa="_recCard_dmmg1_807",Va="_recCover_dmmg1_825",Ya="_recInfo_dmmg1_833",Ka="_recTitle_dmmg1_840",Qa="_recMatch_dmmg1_851",za="_recMeta_dmmg1_857",Ua="_recWhy_dmmg1_862",ja="_recNote_dmmg1_871",Ja="_loading_dmmg1_906",Xa="_error_dmmg1_912",Za="_dayPopup_dmmg1_918",et="_dayPopupHeader_dmmg1_922",at="_dayPopupCount_dmmg1_933",tt="_dayPopupMatureBtn_dmmg1_938",nt="_dayPopupList_dmmg1_958",st="_dayPopupRow_dmmg1_963",rt="_dayPopupPoster_dmmg1_975",ot="_dayPopupSkeleton_dmmg1_984",ct="_dayPopupLine_dmmg1_988",lt="_dayPopupMeta_dmmg1_996",dt="_dayPopupTitle_dmmg1_1003",it="_dayPopupEps_dmmg1_1011",mt="_dayPopupEmpty_dmmg1_1016",a={header:ue,fadeIn:ge,personaBadge:_e,personaInfo:ye,personaLabel:Ne,personaValue:ve,statsGrid:fe,slideUpIn:Ce,statCard:be,statIcon:Pe,statInfo:Se,statValue:ke,statLabel:we,wideSection:Le,sectionHeader:Be,yearSelect:Me,heatmapLayout:De,dayLabels:Ie,heatmapWrapper:Re,heatmapScroll:Te,heatmapMonthLabels:xe,heatmapGrid:$e,heatBox:Ge,hiddenBox:We,level0:Ee,level1:Oe,level2:qe,level3:Fe,level4:He,heatmapFooter:Ae,heatLegend:Ve,chartsContainer:Ye,chartWrapper:Ke,hourlyChart:Qe,hourlyBarContainer:ze,hourlyBar:Ue,hourlyLabel:je,chartSubtext:Je,popScale:Xe,popTrack:Ze,popThumb:ea,popLabels:aa,popDescription:ta,seasonalChart:na,seasonalBarContainer:sa,seasonalBar:ra,seasonalLabel:oa,genreList:ca,genreRow:la,genreInfo:da,genreName:ia,genreCount:ma,genreBarBg:pa,genreBar:ha,warningSection:ua,warningHeader:ga,droppedGrid:_a,droppedCard:ya,droppedName:Na,droppedDate:va,genreGrid:fa,genreCard:Ca,rankBadge:ba,rankNumber:Pa,genreTitle:Sa,genreStats:ka,posterRow:wa,miniPoster:La,genreCardSkeleton:Ba,pulse:Ma,skeletonRank:Da,skeletonTitle:Ia,skeletonStats:Ra,skeletonPosters:Ta,recSection:xa,recHeader:$a,recSubtext:Ga,recControls:Wa,recControlBtn:Ea,recPosterButton:Oa,recAddBtn:qa,recGrid:Fa,recEmpty:Ha,recCard:Aa,recCover:Va,recInfo:Ya,recTitle:Ka,recMatch:Qa,recMeta:za,recWhy:Ua,recNote:ja,loading:Ja,error:Xa,dayPopup:Za,dayPopupHeader:et,dayPopupCount:at,dayPopupMatureBtn:tt,dayPopupList:nt,dayPopupRow:st,dayPopupPoster:rt,dayPopupSkeleton:ot,dayPopupLine:ct,dayPopupMeta:lt,dayPopupTitle:dt,dayPopupEps:it,dayPopupEmpty:mt},ft=()=>{const[x,$]=f(0);Q(()=>{document.title="Insights - dango"},[]);const{data:s,isLoading:U,isError:j}=D({queryKey:[h.insights],queryFn:async()=>await g.insights.summary.query()}),{data:J,isLoading:G}=de(),{hasConsent:C,grant:X}=ie(),[W,b]=f(!1),{titlePreference:Z}=me(),P=le(),{data:S,isLoading:E,isFetching:O,isError:k}=D({queryKey:[h.insightsRecommendations],queryFn:async()=>await g.insights.recommendations.query(),staleTime:300*1e3,retry:1}),w=z({mutationFn:()=>g.insights.recommendations.query({refresh:!0}),onSuccess:t=>{P.setQueryData([h.insightsRecommendations],t),$(0)},onError:()=>I.error("Could not refresh recommendations")}),q=z({mutationFn:async t=>{await g.watchlist.add.mutate({id:String(t.id),name:t.title,thumbnail:t.cover||"",status:"Plan to Watch",type:t.format})},onSuccess:()=>{P.invalidateQueries({queryKey:[h.watchlist]}),P.invalidateQueries({queryKey:[h.insightsRecommendations]}),I.success("Added to Plan to Watch")},onError:()=>I.error("Could not add to watchlist")}),i=p(()=>[...S?.candidates||[]].sort((t,n)=>n.matchPct-t.matchPct),[S]),L=p(()=>{if(!i.length)return[];const t=x%i.length;return[...i,...i].slice(t,t+Math.min(6,i.length))},[i,x]),F=t=>{const n=t.name||t.englishName||t.nativeName||"";switch(Z){case"nativeName":return t.nativeName||n;case"englishName":return t.englishName||n;default:return n}},[_,ee]=f(new Date().getFullYear()),[m,u]=f(null),l=ce(null),y=D({queryKey:[h.insightsDay,m?.date],queryFn:async()=>await g.insights.dayEpisodes.query({day:m?.date??""}),enabled:!!m?.date,staleTime:60*1e3}),H=(t,n)=>{l.current!==null&&(window.clearTimeout(l.current),l.current=null),u({date:t,rect:n})},A=()=>{l.current=window.setTimeout(()=>{l.current=null,u(null)},120)},ae=()=>{l.current!==null&&(window.clearTimeout(l.current),l.current=null)};Q(()=>()=>{l.current!==null&&window.clearTimeout(l.current)},[]);const B=(y.data?.shows??[]).filter(t=>C||!t.isAdult),te=p(()=>{if(!s?.activityGrid)return[new Date().getFullYear()];const t=new Set(s.activityGrid.map(n=>parseInt(n.day.split("-")[0])));return t.add(new Date().getFullYear()),Array.from(t).sort((n,r)=>r-n)},[s]),V=p(()=>{if(!s?.activityGrid)return[];const t=new Map(s.activityGrid.map(v=>[v.day,v.count])),n=[],r=new Date(_,0,1),d=new Date(_,11,31),N=r.getDay(),o=new Date(r);for(o.setDate(o.getDate()-N);(o<=d||o.getDay()!==0)&&!(o>d&&o.getDay()===0);){const v=o.getFullYear(),re=String(o.getMonth()+1).padStart(2,"0"),oe=String(o.getDate()).padStart(2,"0"),Y=`${v}-${re}-${oe}`,K=o<r||o>d;n.push({date:Y,count:K?0:t.get(Y)||0,month:o.getMonth(),isOutOfRange:K}),o.setDate(o.getDate()+1)}return n},[s,_]),ne=p(()=>s?.seasonality?.length?Math.max(...s.seasonality.map(t=>t.seconds),1):0,[s]),se=p(()=>s?.hourlyDist?.length?Math.max(...s.hourlyDist.map(t=>t.count),1):0,[s]);return U||G?e("div",{className:a.loading,children:"Analyzing your anime lifestyle..."}):j?e("div",{className:a.error,children:"Could not load insights. Data might be syncing."}):s?e("div",{className:"page-container",children:[e("div",{className:a.header,children:[e("div",{className:"title-stack",children:[e("div",{className:"section-eyebrow",children:"Your viewing habits"}),e("h2",{className:"section-title",children:"Watch Insights"})]}),e("div",{className:a.personaBadge,children:[e(c,{name:"user-astronaut"}),e("div",{className:a.personaInfo,children:[e("span",{className:a.personaLabel,children:"Your Persona"}),e("span",{className:a.personaValue,children:s.persona})]})]})]}),e("div",{className:a.statsGrid,children:[e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(138, 79, 255, 0.2)",color:"var(--accent)"},children:e(c,{name:"clock"})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:[s.totalHours,"h"]}),e("span",{className:a.statLabel,children:"Watch Time"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(167, 139, 250, 0.2)",color:"#a78bfa"},children:e(c,{name:"bookmark"})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:s.totalAnime}),e("span",{className:a.statLabel,children:"Total Anime"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(34, 197, 94, 0.2)",color:"#22c55e"},children:e(c,{name:"check-circle"})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:s.totalEpisodes}),e("span",{className:a.statLabel,children:"Episodes Watched"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(34, 197, 94, 0.2)",color:"#22c55e"},children:e(c,{name:"check-circle"})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:[s.completionRate,"%"]}),e("span",{className:a.statLabel,children:"Completion Rate"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(45, 212, 191, 0.2)",color:"#2dd4bf"},children:e(c,{name:"tv"})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:s.completedAnime}),e("span",{className:a.statLabel,children:"Completed Shows"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(239, 68, 68, 0.2)",color:"#ef4444"},children:e(c,{name:"fire"})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:s.bingeFactor}),e("span",{className:a.statLabel,children:"Max Daily Binge"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(59, 130, 246, 0.2)",color:"#3b82f6"},children:e(c,{name:"history"})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:[s.avgSessionMinutes,"m"]}),e("span",{className:a.statLabel,children:"Avg. Session"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(251, 191, 36, 0.2)",color:"#fbbf24"},children:e(c,{name:"layer-group"})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:[s.avgCompletionDays,"d"]}),e("span",{className:a.statLabel,children:"Avg. Speed"})]})]})]}),e("div",{className:a.wideSection,children:[e("div",{className:a.sectionHeader,children:[e("h3",{children:"Activity"}),e("select",{className:a.yearSelect,value:_,onChange:t=>ee(Number(t.currentTarget.value)),children:te.map(t=>e("option",{value:t,children:t},t))})]}),e("div",{className:a.heatmapLayout,children:[e("div",{className:a.dayLabels,children:[e("span",{style:{gridRow:2},children:"Mon"}),e("span",{style:{gridRow:4},children:"Wed"}),e("span",{style:{gridRow:6},children:"Fri"})]}),e("div",{className:a.heatmapWrapper,children:[e("div",{className:a.heatmapScroll,children:[e("div",{className:a.heatmapMonthLabels,children:(()=>{const t=[];let n=-1;return V.forEach((r,d)=>{if(r.month!==n&&!r.isOutOfRange){const N=Math.floor(d/7)+1;N>(t.length>0?t[t.length-1].props.style?.gridColumn+2:-1)&&(t.push(e("span",{style:{gridColumn:N,whiteSpace:"nowrap"},children:new Date(0,r.month).toLocaleString("default",{month:"short"})},d)),n=r.month)}}),t})()}),e("div",{className:a.heatmapGrid,children:V.map((t,n)=>{let r=0;return t.count>0&&!t.isOutOfRange&&(r=1),t.count>2&&!t.isOutOfRange&&(r=2),t.count>5&&!t.isOutOfRange&&(r=3),t.count>10&&!t.isOutOfRange&&(r=4),e("div",{className:`${a.heatBox} ${a[`level${r}`]} ${t.isOutOfRange?a.hiddenBox:""}`,onMouseEnter:t.isOutOfRange||t.count===0?void 0:d=>H(t.date,d.currentTarget.getBoundingClientRect()),onMouseLeave:t.isOutOfRange||t.count===0?void 0:A,onClick:t.isOutOfRange||t.count===0?void 0:d=>{m?.date===t.date?u(null):H(t.date,d.currentTarget.getBoundingClientRect())}},n)})})]}),e("div",{className:a.heatmapFooter,children:e("div",{className:a.heatLegend,children:[e("span",{children:"Less"}),e("div",{className:`${a.heatBox} ${a.level0}`}),e("div",{className:`${a.heatBox} ${a.level1}`}),e("div",{className:`${a.heatBox} ${a.level2}`}),e("div",{className:`${a.heatBox} ${a.level3}`}),e("div",{className:`${a.heatBox} ${a.level4}`}),e("span",{children:"More"})]})})]})]})]}),e("div",{className:a.chartsContainer,children:[e("div",{className:a.chartWrapper,children:[e("h3",{children:"Time Distribution (24h)"}),e("div",{className:a.hourlyChart,children:s.hourlyDist?.map((t,n)=>e("div",{className:a.hourlyBarContainer,children:[e("div",{className:a.hourlyBar,style:{height:`${t.count/se*100||2}%`,width:"100%",maxWidth:"12px"},title:`${t.count} watches at ${t.hour}:00`}),e("span",{className:a.hourlyLabel,style:{visibility:n%4===0?"visible":"hidden"},children:t.hour})]},n))}),e("div",{className:a.chartSubtext,children:(()=>{if(!s.hourlyDist?.length)return"Watch more to see your peak hours!";const t=parseInt([...s.hourlyDist].sort((n,r)=>r.count-n.count)[0].hour);return t>=6&&t<19?"You prefer daytime watching ☀️":"You're a confirmed Night Owl 🦉"})()})]}),e("div",{className:a.chartWrapper,children:[e("h3",{children:"Popularity Bias"}),e("div",{className:a.popScale,children:[e("div",{className:a.popTrack,children:e("div",{className:a.popThumb,style:{left:`${Math.max(0,Math.min(100,100-s.popularityScore*10))}%`}})}),e("div",{className:a.popLabels,children:[e("span",{children:"Mainstream"}),e("span",{children:"Underground"})]})]}),e("p",{className:a.popDescription,children:["Your taste score is ",e("strong",{children:[s.popularityScore,"/10"]}),".",s.popularityScore>=5?" You follow the big hits!":" You're a connoisseur of the obscure!"]})]}),e("div",{className:a.chartWrapper,children:[e("h3",{children:"Monthly Activity"}),e("div",{className:a.seasonalChart,children:s.seasonality?.map((t,n)=>e("div",{className:a.seasonalBarContainer,children:[e("div",{className:a.seasonalBar,style:{height:`${t.seconds/ne*100||5}%`,width:"100%",maxWidth:"24px"},title:`${Math.round(t.seconds/3600)}h in ${new Date(0,n).toLocaleString("default",{month:"long"})}`}),e("span",{className:a.seasonalLabel,children:new Date(0,n).toLocaleString("default",{month:"short"})})]},n))})]})]}),e("div",{className:a.genreGrid,children:G?Array.from({length:4}).map((t,n)=>e("div",{className:a.genreCardSkeleton,children:[e("div",{className:a.skeletonRank}),e("div",{className:a.skeletonTitle}),e("div",{className:a.skeletonStats}),e("div",{className:a.skeletonPosters})]},n)):J?.filter(t=>C||t.name.toLowerCase()!=="hentai").map(t=>e("div",{className:a.genreCard,children:[e("div",{className:a.rankBadge,children:e("span",{className:a.rankNumber,children:t.rank})}),e("h3",{className:a.genreTitle,children:t.name}),e("div",{className:a.genreStats,children:[e("span",{children:[t.count," episodes"]}),e("span",{children:t.meanScore>0?`${t.meanScore.toFixed(1)} avg score`:"-"}),e("span",{children:t.timeWatched})]}),e("div",{className:a.posterRow,children:t.topShows.map(n=>e(R,{src:T(n.thumbnail),alt:F(n),className:a.miniPoster,title:F(n),loading:"lazy",decoding:"async"},n.id))})]},t.name))}),(L.length>0||E||k||S)&&e("div",{className:a.recSection,children:[e("div",{className:a.recHeader,children:[e("div",{children:[e("h3",{children:"Recommended For You"}),e("p",{className:a.recSubtext,children:"Based on your completed shows and genre taste"})]}),e("div",{className:a.recControls,children:[i.length>6&&e("button",{className:a.recControlBtn,onClick:()=>$(t=>(t+6)%i.length),children:"Different picks"}),e("button",{className:a.recControlBtn,onClick:()=>w.mutate(),disabled:O||w.isPending,children:[e(c,{name:"sync-alt"}),O||w.isPending?"Refreshing…":"Refresh"]})]})]}),k||!E&&L.length===0?e("p",{className:a.recEmpty,children:k?"Recommendations could not load. Try refreshing.":"No new recommendations yet. Keep watching or try again later."}):e("div",{className:a.recGrid,children:L.map(t=>e("div",{className:a.recCard,children:[t.cover&&e(M,{to:`/anime/${t.id}`,className:a.recPosterButton,"aria-label":`View ${t.title}`,children:e(R,{src:T(t.cover),alt:"",className:a.recCover,loading:"lazy",decoding:"async"})}),e("div",{className:a.recInfo,children:[e(M,{to:`/anime/${t.id}`,className:a.recTitle,children:t.title}),e("span",{className:a.recMatch,children:[t.matchPct,"% taste match"]}),e("span",{className:a.recMeta,children:[t.year,t.format,t.episodes?`${t.episodes}ep`:null].filter(Boolean).join(" · ")}),e("span",{className:a.recWhy,children:["Shares ",t.sharedGenres.join(", "),t.exemplars.length>0&&` - like ${t.exemplars.join(", ")}`]}),t.kind==="continue"&&e("span",{className:a.recNote,children:"Continue - you watched the earlier part."}),t.kind==="sequel"&&t.prequelTitle&&e("span",{className:a.recNote,children:['Sequel - start with "',t.prequelTitle,'" first.']}),e("button",{className:a.recAddBtn,onClick:()=>q.mutate(t),disabled:q.isPending,children:[e(c,{name:"plus"})," Plan to Watch"]})]})]},t.id))})]}),s.droppedShows?.length>0&&e("div",{className:a.warningSection,children:[e("div",{className:a.warningHeader,children:[e(c,{name:"exclamation-triangle"}),e("h3",{children:"Dusty Watchlist (Inactive 90+ days)"})]}),e("div",{className:a.droppedGrid,children:s.droppedShows.map(t=>e("div",{className:a.droppedCard,children:[e("span",{className:a.droppedName,children:t.name}),e("span",{className:a.droppedDate,children:["Last watched: ",new Date(t.lastActivity).toLocaleDateString()]})]},t.id))})]}),m&&!W&&e(pe,{anchorRect:m.rect,onMouseEnter:ae,onMouseLeave:A,onRequestClose:()=>u(null),children:e("div",{className:a.dayPopup,children:[e("div",{className:a.dayPopupHeader,children:[e("span",{children:new Date(`${m.date}T00:00:00`).toLocaleDateString(void 0,{weekday:"short",month:"short",day:"numeric",year:"numeric"})}),!C&&(y.data?.shows??[]).some(t=>t.isAdult)&&e("button",{className:a.dayPopupMatureBtn,onClick:()=>b(!0),children:"18+"}),e("span",{className:a.dayPopupCount,children:y.data?B.reduce((t,n)=>t+n.episodes.length,0):""})]}),y.isLoading?e("div",{className:a.dayPopupRow,children:[e("div",{className:`${a.dayPopupPoster} ${a.dayPopupSkeleton}`}),e("div",{className:a.dayPopupLine})]}):B.length===0?e("div",{className:a.dayPopupEmpty,children:"Nothing recorded."}):e("div",{className:a.dayPopupList,children:B.map(t=>e(M,{to:`/anime/${t.id}`,className:a.dayPopupRow,onClick:()=>u(null),children:[e(R,{src:T(t.thumbnail),alt:t.name,className:a.dayPopupPoster,loading:"lazy",decoding:"async"}),e("div",{className:a.dayPopupMeta,children:[e("span",{className:a.dayPopupTitle,children:t.name}),e("span",{className:a.dayPopupEps,children:[t.episodes.slice(0,12).map(n=>`Ep ${n}`).join(" · "),t.episodes.length>12&&` · +${t.episodes.length-12} more`]})]})]},t.id))})]})}),W&&e(he,{isOpen:!0,showResetHint:!0,onClose:()=>b(!1),onGrant:()=>{X(),b(!1)}})]}):null};export{ft as default};
|
|
1
|
+
import{d as f,h as Q,T as p,A as ce,u as e,L as M}from"./vendor-core-DfaOB3Rn.js";import{b as D,u as le,a as z}from"./vendor-query-BBT5_sHx.js";import{q as h,t as g,ao as de,g as ie,d as me,L as I,F as R,f as T}from"./index-hrS3r0UE.js";import{I as c}from"./vendor-icons-C1Pj_eSX.js";import{M as pe}from"./MediaPopupShell-BewMMT93.js";import{M as he}from"./MatureConsentModal-CBGHgiBA.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";const ue="_header_dmmg1_1",ge="_fadeIn_dmmg1_1",_e="_personaBadge_dmmg1_9",ye="_personaInfo_dmmg1_32",Ne="_personaLabel_dmmg1_37",ve="_personaValue_dmmg1_46",fe="_statsGrid_dmmg1_52",Ce="_slideUpIn_dmmg1_1",be="_statCard_dmmg1_62",Pe="_statIcon_dmmg1_71",Se="_statInfo_dmmg1_82",ke="_statValue_dmmg1_87",we="_statLabel_dmmg1_96",Le="_wideSection_dmmg1_104",Be="_sectionHeader_dmmg1_111",Me="_yearSelect_dmmg1_126",De="_heatmapLayout_dmmg1_155",Ie="_dayLabels_dmmg1_162",Re="_heatmapWrapper_dmmg1_174",Te="_heatmapScroll_dmmg1_180",xe="_heatmapMonthLabels_dmmg1_185",$e="_heatmapGrid_dmmg1_196",Ge="_heatBox_dmmg1_204",We="_hiddenBox_dmmg1_213",Ee="_level0_dmmg1_222",Oe="_level1_dmmg1_226",qe="_level2_dmmg1_229",Fe="_level3_dmmg1_232",He="_level4_dmmg1_235",Ae="_heatmapFooter_dmmg1_239",Ve="_heatLegend_dmmg1_246",Ye="_chartsContainer_dmmg1_256",Ke="_chartWrapper_dmmg1_266",Qe="_hourlyChart_dmmg1_283",ze="_hourlyBarContainer_dmmg1_291",Ue="_hourlyBar_dmmg1_291",je="_hourlyLabel_dmmg1_317",Je="_chartSubtext_dmmg1_324",Xe="_popScale_dmmg1_337",Ze="_popTrack_dmmg1_341",ea="_popThumb_dmmg1_349",aa="_popLabels_dmmg1_361",ta="_popDescription_dmmg1_371",na="_seasonalChart_dmmg1_384",sa="_seasonalBarContainer_dmmg1_392",ra="_seasonalBar_dmmg1_392",oa="_seasonalLabel_dmmg1_414",ca="_genreList_dmmg1_422",la="_genreRow_dmmg1_429",da="_genreInfo_dmmg1_435",ia="_genreName_dmmg1_442",ma="_genreCount_dmmg1_449",pa="_genreBarBg_dmmg1_456",ha="_genreBar_dmmg1_456",ua="_warningSection_dmmg1_469",ga="_warningHeader_dmmg1_475",_a="_droppedGrid_dmmg1_491",ya="_droppedCard_dmmg1_496",Na="_droppedName_dmmg1_505",va="_droppedDate_dmmg1_512",fa="_genreGrid_dmmg1_567",Ca="_genreCard_dmmg1_585",ba="_rankBadge_dmmg1_591",Pa="_rankNumber_dmmg1_604",Sa="_genreTitle_dmmg1_610",ka="_genreStats_dmmg1_618",wa="_posterRow_dmmg1_626",La="_miniPoster_dmmg1_633",Ba="_genreCardSkeleton_dmmg1_647",Ma="_pulse_dmmg1_1",Da="_skeletonRank_dmmg1_653",Ia="_skeletonTitle_dmmg1_667",Ra="_skeletonStats_dmmg1_680",Ta="_skeletonPosters_dmmg1_692",xa="_recSection_dmmg1_723",$a="_recHeader_dmmg1_727",Ga="_recSubtext_dmmg1_742",Wa="_recControls_dmmg1_748",Ea="_recControlBtn_dmmg1_754",Oa="_recPosterButton_dmmg1_782",qa="_recAddBtn_dmmg1_783",Fa="_recGrid_dmmg1_793",Ha="_recEmpty_dmmg1_799",Aa="_recCard_dmmg1_807",Va="_recCover_dmmg1_825",Ya="_recInfo_dmmg1_833",Ka="_recTitle_dmmg1_840",Qa="_recMatch_dmmg1_851",za="_recMeta_dmmg1_857",Ua="_recWhy_dmmg1_862",ja="_recNote_dmmg1_871",Ja="_loading_dmmg1_906",Xa="_error_dmmg1_912",Za="_dayPopup_dmmg1_918",et="_dayPopupHeader_dmmg1_922",at="_dayPopupCount_dmmg1_933",tt="_dayPopupMatureBtn_dmmg1_938",nt="_dayPopupList_dmmg1_958",st="_dayPopupRow_dmmg1_963",rt="_dayPopupPoster_dmmg1_975",ot="_dayPopupSkeleton_dmmg1_984",ct="_dayPopupLine_dmmg1_988",lt="_dayPopupMeta_dmmg1_996",dt="_dayPopupTitle_dmmg1_1003",it="_dayPopupEps_dmmg1_1011",mt="_dayPopupEmpty_dmmg1_1016",a={header:ue,fadeIn:ge,personaBadge:_e,personaInfo:ye,personaLabel:Ne,personaValue:ve,statsGrid:fe,slideUpIn:Ce,statCard:be,statIcon:Pe,statInfo:Se,statValue:ke,statLabel:we,wideSection:Le,sectionHeader:Be,yearSelect:Me,heatmapLayout:De,dayLabels:Ie,heatmapWrapper:Re,heatmapScroll:Te,heatmapMonthLabels:xe,heatmapGrid:$e,heatBox:Ge,hiddenBox:We,level0:Ee,level1:Oe,level2:qe,level3:Fe,level4:He,heatmapFooter:Ae,heatLegend:Ve,chartsContainer:Ye,chartWrapper:Ke,hourlyChart:Qe,hourlyBarContainer:ze,hourlyBar:Ue,hourlyLabel:je,chartSubtext:Je,popScale:Xe,popTrack:Ze,popThumb:ea,popLabels:aa,popDescription:ta,seasonalChart:na,seasonalBarContainer:sa,seasonalBar:ra,seasonalLabel:oa,genreList:ca,genreRow:la,genreInfo:da,genreName:ia,genreCount:ma,genreBarBg:pa,genreBar:ha,warningSection:ua,warningHeader:ga,droppedGrid:_a,droppedCard:ya,droppedName:Na,droppedDate:va,genreGrid:fa,genreCard:Ca,rankBadge:ba,rankNumber:Pa,genreTitle:Sa,genreStats:ka,posterRow:wa,miniPoster:La,genreCardSkeleton:Ba,pulse:Ma,skeletonRank:Da,skeletonTitle:Ia,skeletonStats:Ra,skeletonPosters:Ta,recSection:xa,recHeader:$a,recSubtext:Ga,recControls:Wa,recControlBtn:Ea,recPosterButton:Oa,recAddBtn:qa,recGrid:Fa,recEmpty:Ha,recCard:Aa,recCover:Va,recInfo:Ya,recTitle:Ka,recMatch:Qa,recMeta:za,recWhy:Ua,recNote:ja,loading:Ja,error:Xa,dayPopup:Za,dayPopupHeader:et,dayPopupCount:at,dayPopupMatureBtn:tt,dayPopupList:nt,dayPopupRow:st,dayPopupPoster:rt,dayPopupSkeleton:ot,dayPopupLine:ct,dayPopupMeta:lt,dayPopupTitle:dt,dayPopupEps:it,dayPopupEmpty:mt},ft=()=>{const[x,$]=f(0);Q(()=>{document.title="Insights - dango"},[]);const{data:s,isLoading:U,isError:j}=D({queryKey:[h.insights],queryFn:async()=>await g.insights.summary.query()}),{data:J,isLoading:G}=de(),{hasConsent:C,grant:X}=ie(),[W,b]=f(!1),{titlePreference:Z}=me(),P=le(),{data:S,isLoading:E,isFetching:O,isError:k}=D({queryKey:[h.insightsRecommendations],queryFn:async()=>await g.insights.recommendations.query(),staleTime:300*1e3,retry:1}),w=z({mutationFn:()=>g.insights.recommendations.query({refresh:!0}),onSuccess:t=>{P.setQueryData([h.insightsRecommendations],t),$(0)},onError:()=>I.error("Could not refresh recommendations")}),q=z({mutationFn:async t=>{await g.watchlist.add.mutate({id:String(t.id),name:t.title,thumbnail:t.cover||"",status:"Plan to Watch",type:t.format})},onSuccess:()=>{P.invalidateQueries({queryKey:[h.watchlist]}),P.invalidateQueries({queryKey:[h.insightsRecommendations]}),I.success("Added to Plan to Watch")},onError:()=>I.error("Could not add to watchlist")}),i=p(()=>[...S?.candidates||[]].sort((t,n)=>n.matchPct-t.matchPct),[S]),L=p(()=>{if(!i.length)return[];const t=x%i.length;return[...i,...i].slice(t,t+Math.min(6,i.length))},[i,x]),F=t=>{const n=t.name||t.englishName||t.nativeName||"";switch(Z){case"nativeName":return t.nativeName||n;case"englishName":return t.englishName||n;default:return n}},[_,ee]=f(new Date().getFullYear()),[m,u]=f(null),l=ce(null),y=D({queryKey:[h.insightsDay,m?.date],queryFn:async()=>await g.insights.dayEpisodes.query({day:m?.date??""}),enabled:!!m?.date,staleTime:60*1e3}),H=(t,n)=>{l.current!==null&&(window.clearTimeout(l.current),l.current=null),u({date:t,rect:n})},A=()=>{l.current=window.setTimeout(()=>{l.current=null,u(null)},120)},ae=()=>{l.current!==null&&(window.clearTimeout(l.current),l.current=null)};Q(()=>()=>{l.current!==null&&window.clearTimeout(l.current)},[]);const B=(y.data?.shows??[]).filter(t=>C||!t.isAdult),te=p(()=>{if(!s?.activityGrid)return[new Date().getFullYear()];const t=new Set(s.activityGrid.map(n=>parseInt(n.day.split("-")[0])));return t.add(new Date().getFullYear()),Array.from(t).sort((n,r)=>r-n)},[s]),V=p(()=>{if(!s?.activityGrid)return[];const t=new Map(s.activityGrid.map(v=>[v.day,v.count])),n=[],r=new Date(_,0,1),d=new Date(_,11,31),N=r.getDay(),o=new Date(r);for(o.setDate(o.getDate()-N);(o<=d||o.getDay()!==0)&&!(o>d&&o.getDay()===0);){const v=o.getFullYear(),re=String(o.getMonth()+1).padStart(2,"0"),oe=String(o.getDate()).padStart(2,"0"),Y=`${v}-${re}-${oe}`,K=o<r||o>d;n.push({date:Y,count:K?0:t.get(Y)||0,month:o.getMonth(),isOutOfRange:K}),o.setDate(o.getDate()+1)}return n},[s,_]),ne=p(()=>s?.seasonality?.length?Math.max(...s.seasonality.map(t=>t.seconds),1):0,[s]),se=p(()=>s?.hourlyDist?.length?Math.max(...s.hourlyDist.map(t=>t.count),1):0,[s]);return U||G?e("div",{className:a.loading,children:"Analyzing your anime lifestyle..."}):j?e("div",{className:a.error,children:"Could not load insights. Data might be syncing."}):s?e("div",{className:"page-container",children:[e("div",{className:a.header,children:[e("div",{className:"title-stack",children:[e("div",{className:"section-eyebrow",children:"Your viewing habits"}),e("h2",{className:"section-title",children:"Watch Insights"})]}),e("div",{className:a.personaBadge,children:[e(c,{name:"user-astronaut"}),e("div",{className:a.personaInfo,children:[e("span",{className:a.personaLabel,children:"Your Persona"}),e("span",{className:a.personaValue,children:s.persona})]})]})]}),e("div",{className:a.statsGrid,children:[e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(138, 79, 255, 0.2)",color:"var(--accent)"},children:e(c,{name:"clock"})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:[s.totalHours,"h"]}),e("span",{className:a.statLabel,children:"Watch Time"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(167, 139, 250, 0.2)",color:"#a78bfa"},children:e(c,{name:"bookmark"})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:s.totalAnime}),e("span",{className:a.statLabel,children:"Total Anime"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(34, 197, 94, 0.2)",color:"#22c55e"},children:e(c,{name:"check-circle"})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:s.totalEpisodes}),e("span",{className:a.statLabel,children:"Episodes Watched"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(34, 197, 94, 0.2)",color:"#22c55e"},children:e(c,{name:"check-circle"})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:[s.completionRate,"%"]}),e("span",{className:a.statLabel,children:"Completion Rate"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(45, 212, 191, 0.2)",color:"#2dd4bf"},children:e(c,{name:"tv"})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:s.completedAnime}),e("span",{className:a.statLabel,children:"Completed Shows"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(239, 68, 68, 0.2)",color:"#ef4444"},children:e(c,{name:"fire"})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:s.bingeFactor}),e("span",{className:a.statLabel,children:"Max Daily Binge"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(59, 130, 246, 0.2)",color:"#3b82f6"},children:e(c,{name:"history"})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:[s.avgSessionMinutes,"m"]}),e("span",{className:a.statLabel,children:"Avg. Session"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(251, 191, 36, 0.2)",color:"#fbbf24"},children:e(c,{name:"layer-group"})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:[s.avgCompletionDays,"d"]}),e("span",{className:a.statLabel,children:"Avg. Speed"})]})]})]}),e("div",{className:a.wideSection,children:[e("div",{className:a.sectionHeader,children:[e("h3",{children:"Activity"}),e("select",{className:a.yearSelect,value:_,onChange:t=>ee(Number(t.currentTarget.value)),children:te.map(t=>e("option",{value:t,children:t},t))})]}),e("div",{className:a.heatmapLayout,children:[e("div",{className:a.dayLabels,children:[e("span",{style:{gridRow:2},children:"Mon"}),e("span",{style:{gridRow:4},children:"Wed"}),e("span",{style:{gridRow:6},children:"Fri"})]}),e("div",{className:a.heatmapWrapper,children:[e("div",{className:a.heatmapScroll,children:[e("div",{className:a.heatmapMonthLabels,children:(()=>{const t=[];let n=-1;return V.forEach((r,d)=>{if(r.month!==n&&!r.isOutOfRange){const N=Math.floor(d/7)+1;N>(t.length>0?t[t.length-1].props.style?.gridColumn+2:-1)&&(t.push(e("span",{style:{gridColumn:N,whiteSpace:"nowrap"},children:new Date(0,r.month).toLocaleString("default",{month:"short"})},d)),n=r.month)}}),t})()}),e("div",{className:a.heatmapGrid,children:V.map((t,n)=>{let r=0;return t.count>0&&!t.isOutOfRange&&(r=1),t.count>2&&!t.isOutOfRange&&(r=2),t.count>5&&!t.isOutOfRange&&(r=3),t.count>10&&!t.isOutOfRange&&(r=4),e("div",{className:`${a.heatBox} ${a[`level${r}`]} ${t.isOutOfRange?a.hiddenBox:""}`,onMouseEnter:t.isOutOfRange||t.count===0?void 0:d=>H(t.date,d.currentTarget.getBoundingClientRect()),onMouseLeave:t.isOutOfRange||t.count===0?void 0:A,onClick:t.isOutOfRange||t.count===0?void 0:d=>{m?.date===t.date?u(null):H(t.date,d.currentTarget.getBoundingClientRect())}},n)})})]}),e("div",{className:a.heatmapFooter,children:e("div",{className:a.heatLegend,children:[e("span",{children:"Less"}),e("div",{className:`${a.heatBox} ${a.level0}`}),e("div",{className:`${a.heatBox} ${a.level1}`}),e("div",{className:`${a.heatBox} ${a.level2}`}),e("div",{className:`${a.heatBox} ${a.level3}`}),e("div",{className:`${a.heatBox} ${a.level4}`}),e("span",{children:"More"})]})})]})]})]}),e("div",{className:a.chartsContainer,children:[e("div",{className:a.chartWrapper,children:[e("h3",{children:"Time Distribution (24h)"}),e("div",{className:a.hourlyChart,children:s.hourlyDist?.map((t,n)=>e("div",{className:a.hourlyBarContainer,children:[e("div",{className:a.hourlyBar,style:{height:`${t.count/se*100||2}%`,width:"100%",maxWidth:"12px"},title:`${t.count} watches at ${t.hour}:00`}),e("span",{className:a.hourlyLabel,style:{visibility:n%4===0?"visible":"hidden"},children:t.hour})]},n))}),e("div",{className:a.chartSubtext,children:(()=>{if(!s.hourlyDist?.length)return"Watch more to see your peak hours!";const t=parseInt([...s.hourlyDist].sort((n,r)=>r.count-n.count)[0].hour);return t>=6&&t<19?"You prefer daytime watching ☀️":"You're a confirmed Night Owl 🦉"})()})]}),e("div",{className:a.chartWrapper,children:[e("h3",{children:"Popularity Bias"}),e("div",{className:a.popScale,children:[e("div",{className:a.popTrack,children:e("div",{className:a.popThumb,style:{left:`${Math.max(0,Math.min(100,100-s.popularityScore*10))}%`}})}),e("div",{className:a.popLabels,children:[e("span",{children:"Mainstream"}),e("span",{children:"Underground"})]})]}),e("p",{className:a.popDescription,children:["Your taste score is ",e("strong",{children:[s.popularityScore,"/10"]}),".",s.popularityScore>=5?" You follow the big hits!":" You're a connoisseur of the obscure!"]})]}),e("div",{className:a.chartWrapper,children:[e("h3",{children:"Monthly Activity"}),e("div",{className:a.seasonalChart,children:s.seasonality?.map((t,n)=>e("div",{className:a.seasonalBarContainer,children:[e("div",{className:a.seasonalBar,style:{height:`${t.seconds/ne*100||5}%`,width:"100%",maxWidth:"24px"},title:`${Math.round(t.seconds/3600)}h in ${new Date(0,n).toLocaleString("default",{month:"long"})}`}),e("span",{className:a.seasonalLabel,children:new Date(0,n).toLocaleString("default",{month:"short"})})]},n))})]})]}),e("div",{className:a.genreGrid,children:G?Array.from({length:4}).map((t,n)=>e("div",{className:a.genreCardSkeleton,children:[e("div",{className:a.skeletonRank}),e("div",{className:a.skeletonTitle}),e("div",{className:a.skeletonStats}),e("div",{className:a.skeletonPosters})]},n)):J?.filter(t=>C||t.name.toLowerCase()!=="hentai").map(t=>e("div",{className:a.genreCard,children:[e("div",{className:a.rankBadge,children:e("span",{className:a.rankNumber,children:t.rank})}),e("h3",{className:a.genreTitle,children:t.name}),e("div",{className:a.genreStats,children:[e("span",{children:[t.count," episodes"]}),e("span",{children:t.meanScore>0?`${t.meanScore.toFixed(1)} avg score`:"-"}),e("span",{children:t.timeWatched})]}),e("div",{className:a.posterRow,children:t.topShows.map(n=>e(R,{src:T(n.thumbnail),alt:F(n),className:a.miniPoster,title:F(n),loading:"lazy",decoding:"async"},n.id))})]},t.name))}),(L.length>0||E||k||S)&&e("div",{className:a.recSection,children:[e("div",{className:a.recHeader,children:[e("div",{children:[e("h3",{children:"Recommended For You"}),e("p",{className:a.recSubtext,children:"Based on your completed shows and genre taste"})]}),e("div",{className:a.recControls,children:[i.length>6&&e("button",{className:a.recControlBtn,onClick:()=>$(t=>(t+6)%i.length),children:"Different picks"}),e("button",{className:a.recControlBtn,onClick:()=>w.mutate(),disabled:O||w.isPending,children:[e(c,{name:"sync-alt"}),O||w.isPending?"Refreshing…":"Refresh"]})]})]}),k||!E&&L.length===0?e("p",{className:a.recEmpty,children:k?"Recommendations could not load. Try refreshing.":"No new recommendations yet. Keep watching or try again later."}):e("div",{className:a.recGrid,children:L.map(t=>e("div",{className:a.recCard,children:[t.cover&&e(M,{to:`/anime/${t.id}`,className:a.recPosterButton,"aria-label":`View ${t.title}`,children:e(R,{src:T(t.cover),alt:"",className:a.recCover,loading:"lazy",decoding:"async"})}),e("div",{className:a.recInfo,children:[e(M,{to:`/anime/${t.id}`,className:a.recTitle,children:t.title}),e("span",{className:a.recMatch,children:[t.matchPct,"% taste match"]}),e("span",{className:a.recMeta,children:[t.year,t.format,t.episodes?`${t.episodes}ep`:null].filter(Boolean).join(" · ")}),e("span",{className:a.recWhy,children:["Shares ",t.sharedGenres.join(", "),t.exemplars.length>0&&` - like ${t.exemplars.join(", ")}`]}),t.kind==="continue"&&e("span",{className:a.recNote,children:"Continue - you watched the earlier part."}),t.kind==="sequel"&&t.prequelTitle&&e("span",{className:a.recNote,children:['Sequel - start with "',t.prequelTitle,'" first.']}),e("button",{className:a.recAddBtn,onClick:()=>q.mutate(t),disabled:q.isPending,children:[e(c,{name:"plus"})," Plan to Watch"]})]})]},t.id))})]}),s.droppedShows?.length>0&&e("div",{className:a.warningSection,children:[e("div",{className:a.warningHeader,children:[e(c,{name:"exclamation-triangle"}),e("h3",{children:"Dusty Watchlist (Inactive 90+ days)"})]}),e("div",{className:a.droppedGrid,children:s.droppedShows.map(t=>e("div",{className:a.droppedCard,children:[e("span",{className:a.droppedName,children:t.name}),e("span",{className:a.droppedDate,children:["Last watched: ",new Date(t.lastActivity).toLocaleDateString()]})]},t.id))})]}),m&&!W&&e(pe,{anchorRect:m.rect,onMouseEnter:ae,onMouseLeave:A,onRequestClose:()=>u(null),children:e("div",{className:a.dayPopup,children:[e("div",{className:a.dayPopupHeader,children:[e("span",{children:new Date(`${m.date}T00:00:00`).toLocaleDateString(void 0,{weekday:"short",month:"short",day:"numeric",year:"numeric"})}),!C&&(y.data?.shows??[]).some(t=>t.isAdult)&&e("button",{className:a.dayPopupMatureBtn,onClick:()=>b(!0),children:"18+"}),e("span",{className:a.dayPopupCount,children:y.data?B.reduce((t,n)=>t+n.episodes.length,0):""})]}),y.isLoading?e("div",{className:a.dayPopupRow,children:[e("div",{className:`${a.dayPopupPoster} ${a.dayPopupSkeleton}`}),e("div",{className:a.dayPopupLine})]}):B.length===0?e("div",{className:a.dayPopupEmpty,children:"Nothing recorded."}):e("div",{className:a.dayPopupList,children:B.map(t=>e(M,{to:`/anime/${t.id}`,className:a.dayPopupRow,onClick:()=>u(null),children:[e(R,{src:T(t.thumbnail),alt:t.name,className:a.dayPopupPoster,loading:"lazy",decoding:"async"}),e("div",{className:a.dayPopupMeta,children:[e("span",{className:a.dayPopupTitle,children:t.name}),e("span",{className:a.dayPopupEps,children:[t.episodes.slice(0,12).map(n=>`Ep ${n}`).join(" · "),t.episodes.length>12&&` · +${t.episodes.length-12} more`]})]})]},t.id))})]})}),W&&e(he,{isOpen:!0,showResetHint:!0,onClose:()=>b(!1),onGrant:()=>{X(),b(!1)}})]}):null};export{ft as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as ie,d as N,h as re,u as e}from"./vendor-core-DfaOB3Rn.js";import{I as h}from"./vendor-icons-C1Pj_eSX.js";import{P as E}from"./MediaCard-
|
|
1
|
+
import{a as ie,d as N,h as re,u as e}from"./vendor-core-DfaOB3Rn.js";import{I as h}from"./vendor-icons-C1Pj_eSX.js";import{P as E}from"./MediaCard-Bd24Icus.js";import{S as de}from"./SkeletonGrid-CKVHMLEB.js";import{E as oe}from"./ErrorMessage-hMt90aG4.js";import{N as me,O as he,S as C,B as O}from"./index-hrS3r0UE.js";import{s as l}from"./LibraryListPage.module-r6k9nyT9.js";function be({headerTitle:q,headerSubtitle:H,filters:U,filterBy:r,filterBasePath:V,continueFilter:W,statusOptions:$,entries:d,total:o,isLoading:S,error:A,page:I,pageSize:u,onPageChange:M,emptyTitle:Y,emptyFilteredText:j,emptyAllText:F,browseLabel:J,browseTarget:Q,removeListLabel:w,listNoun:f,skipConfirmKey:x,onBulkStatus:X,onBulkRemove:B,onStatusChange:Z,onRemoveItem:R,renderCard:_,modals:K}){const z=ie(),[g,T]=N(!1),[t,i]=N(new Set),[n,p]=N(null),[P,b]=N(!1),{data:y}=me(x),L=he();re(()=>{i(new Set),T(!1)},[r]);const m=r===W,G=String(y)==="true"||String(y)==="1",ee=()=>{T(a=>(a&&i(new Set),!a))},ae=a=>{i(s=>{const c=new Set(s);return c.has(a)?c.delete(a):c.add(a),c})},v=d.map(a=>a.libId),k=v.length>0&&v.every(a=>t.has(a)),le=()=>{i(a=>{const s=new Set(a);if(k)for(const c of v)s.delete(c);else for(const c of v)s.add(c);return s})},te=a=>{t.size!==0&&(X([...t],a),i(new Set))},se=()=>{t.size!==0&&(m||G?(B([...t]),i(new Set)):p({ids:[...t]}))},ne=a=>{m||G?R(a.libId):p({ids:[a.libId],title:a.title})},ce=()=>{n&&(P&&L.mutate({key:x,value:!0}),n.ids.length===1?R(n.ids[0]):B(n.ids),i(new Set),p(null),b(!1))},D=()=>{p(null),b(!1)};return e("div",{className:"page-container",children:[e("header",{className:l.header,children:[e("h2",{className:l.title,children:q}),e("p",{className:l.subtitle,children:H})]}),e("div",{className:l.controls,children:e("div",{className:l.filters,children:U.map(a=>e("button",{className:`${l.filterBtn} ${r===a?l.active:""}`,onClick:()=>z(`${V}/${a==="All"?"":a}`),children:a},a))})}),e("div",{className:l.resultsHeader,children:[e("h3",{className:l.resultsTitle,children:[r,e("span",{className:l.itemCount,children:["(",o," items)"]})]}),e("div",{className:l.headerActions,children:[e("button",{className:`${l.manageBtn} ${g?l.active:""}`,onClick:ee,children:[e(h,{name:"pencil-alt",size:13}),e("span",{children:"Bulk Manage"})]}),o>0&&e(E,{page:I,totalPages:Math.max(1,Math.ceil(o/u)),canGoNext:d.length>=u,onChange:M,isLoading:S})]})]}),g&&e("div",{className:l.manageBar,children:[e("button",{className:l.selectAllBtn,onClick:le,children:[e("span",{className:`${l.selectAllBox} ${k?l.selectAllBoxChecked:""}`,"aria-hidden":"true"}),e("span",{children:k?"Clear Page":"Select All"})]}),e("span",{className:l.manageCount,children:[t.size," selected"]}),e("div",{className:l.manageSpacer}),!m&&e("select",{className:l.manageStatusSelect,value:"",onChange:a=>{a.currentTarget.value&&te(a.currentTarget.value)},disabled:t.size===0,title:"Set status for selected items",children:[e("option",{value:"",children:"Set status…"}),$.map(a=>e("option",{value:a,children:a},a))]}),e("button",{className:l.manageRemoveBtn,onClick:se,disabled:t.size===0,children:[e(h,{name:"trash",size:13}),e("span",{children:m?"Reset Selected":"Remove Selected"})]})]}),S?e(de,{}):A?e(oe,{message:A.message}):d.length===0?e("div",{className:l.emptyState,children:[e("h3",{className:l.emptyTitle,children:Y}),e("p",{className:l.emptyText,children:r!=="All"?j:F}),e("button",{className:l.emptyBtn,onClick:()=>z(Q),children:[e(h,{name:"search",size:14}),e("span",{children:J})]})]}):e("div",{className:l.grid,children:d.map(a=>e("div",{className:`${l.itemWrapper} ${t.has(a.libId)?l.selected:""}`,children:[g&&e("div",{className:l.selectOverlay,onClick:()=>ae(a.libId),title:t.has(a.libId)?"Deselect":"Select",children:e("span",{className:l.selectBadge,children:t.has(a.libId)?e(h,{name:"check",size:12}):null})}),_(a),!m&&!g&&e("div",{className:l.cardActions,children:[e("select",{className:l.statusSelect,value:a.status,onChange:s=>Z(a.libId,s.currentTarget.value),children:$.map(s=>e("option",{value:s,children:s},s))}),e("button",{className:l.removeBtn,onClick:()=>ne(a),title:w,"aria-label":w,children:e(h,{name:"trash",size:12})})]})]},a.key))}),o>0&&e("div",{className:l.bottomPagination,children:e(E,{page:I,totalPages:Math.max(1,Math.ceil(o/u)),canGoNext:d.length>=u,onChange:M,isLoading:S,variant:"labeled"})}),K,e(C,{isOpen:!!n,onClose:D,title:`Remove from ${f}`,children:[e(C.Body,{children:[e("p",{children:n&&n.ids.length===1?`Are you sure you want to remove "${n.title}" from your ${f}?`:`Are you sure you want to remove ${n?.ids.length??0} selected items from your ${f}?`}),e("label",{children:[e("input",{type:"checkbox",checked:P,onChange:a=>b(a.currentTarget.checked)}),"Don't ask again"]})]}),e(C.Actions,{children:[e(O,{variant:"secondary",onClick:D,children:"No"}),e(O,{variant:"danger",onClick:ce,children:"Yes"})]})]})]})}export{be as L};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as U,d as k,h as L,T as E,u,S as y}from"./vendor-core-DfaOB3Rn.js";import{M as F}from"./MediaCard-Bd24Icus.js";import{L as N}from"./LibraryListPage-L4Lyt1BV.js";import{j as _,u as z,k as O,l as Q,a as Y,m as q,n as D,o as G,p as T,A as H,b as K}from"./AsmrPopup-ER6dDxFM.js";import{u as Z}from"./useAsmrPopup-BBmHrx9v.js";import{A as J}from"./AsmrResetProgressModal-CmDqGKma.js";import{i as h}from"./index-hrS3r0UE.js";import"./vendor-icons-C1Pj_eSX.js";import"./MediaPopupShell-BewMMT93.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-CBGHgiBA.js";import"./SkeletonGrid-CKVHMLEB.js";import"./ErrorMessage-hMt90aG4.js";import"./LibraryListPage.module-r6k9nyT9.js";import"./vendor-query-BBT5_sHx.js";import"./libraryInvalidation-DWCCaTbI.js";import"./usePopup-DS9jMzp6.js";import"./ResetProgressModal-udBYaYWc.js";const V=["All","Continue Listening",...T],A=24;function W(a){const d=a.currentTime??0,i=a.duration??0,r=(a.trackIndex??0)+1;return i>0?`Track ${r} · ${h(d)} / ${h(i)}`:`Track ${r}`}function ht(){const{filter:a="All"}=U(),[d,i]=k(1),[r,m]=k(null);L(()=>{document.title="Listening List - dango"},[]),L(()=>{i(1)},[a]);const o=a==="Continue Listening",n=_(o?"All":a,d,A),l=z(100),f=O(),C=Q(),{toggle:v,bookmarkedIds:R}=Y(),{popup:s,openPopup:I,scheduleClose:c,cancelClose:p,closePopup:B}=Z(),P=q(),S=D(),j=G(),M=E(()=>o?(l.data?.data??[]).map(t=>{const e=t.currentTime??0,g=t.duration??0,b=t.rjCode||t.id;return{key:t.id,libId:t.id,rjCode:b,title:t.title||"",thumbnail:t.thumbnail||"",status:t.watchlistStatus??"",isAdult:!!t.isAdult,trackLabel:`Track ${(t.trackIndex??0)+1}`,progressPercent:g>0?Math.min(100,e/g*100):0,progressLabel:W(t),detailTarget:`/asmr/${encodeURIComponent(b)}`}}):(n.data?.data??[]).map(t=>{const e=t.rjCode||t.id;return{key:t.id,libId:t.id,rjCode:e,title:t.title,thumbnail:t.thumbnail||"",status:t.status,isAdult:!!t.isAdult,trackLabel:t.lastTrackIndex!==null&&t.lastTrackIndex!==void 0?`Track ${t.lastTrackIndex+1}`:void 0,progressPercent:void 0,progressLabel:void 0,detailTarget:`/asmr/${encodeURIComponent(e)}`}}),[o,l.data,n.data]),w=o?l.data?.total??0:n.data?.total??0,x=o?l.isLoading:n.isLoading,$=o?l.error:n.error;return u(N,{headerTitle:"My Listening List",headerSubtitle:"Track and manage your ASMR collection",filters:V,filterBy:a,filterBasePath:"/listening-list",continueFilter:"Continue Listening",statusOptions:[...T],entries:M,total:w,isLoading:x,error:$,page:d,pageSize:A,onPageChange:i,emptyTitle:"Your listening list is looking a bit lonely",emptyFilteredText:"No works match this filter.",emptyAllText:"Let's find something to listen to!",browseLabel:"Browse ASMR",browseTarget:"/asmr",removeListLabel:"Remove from Listening List",listNoun:"listening list",skipConfirmKey:"asmrSkipRemoveConfirmation",onBulkStatus:(t,e)=>P.mutate({ids:t,status:e}),onBulkRemove:t=>{o?j.mutate({ids:t}):S.mutate({ids:t})},onStatusChange:(t,e)=>C.mutate({id:t,status:e}),onRemoveItem:t=>f.mutate({id:t}),renderCard:t=>u(F,{item:{id:t.libId,title:t.title,thumbnail:t.thumbnail,typeBadge:t.rjCode||void 0,chapterBadge:t.trackLabel??null,isAdult:t.isAdult},linkTo:t.detailTarget,hoverIcon:"info",layout:"horizontal",showInfoButton:!o,progress:t.progressPercent!==void 0&&t.progressLabel?{percent:t.progressPercent,label:t.progressLabel}:void 0,showProgress:o,display:{elements:{poster:{typeBadge:!0,chapterBadge:!0,adultBadge:!0},info:{title:!0,mobileBadges:!0,progress:!0,meta:!1}}},onRemove:o?()=>m(t):void 0,onOpenDetails:o?void 0:e=>I(e,{rjCode:t.rjCode,title:t.title,thumbnail:t.thumbnail,isAdult:t.isAdult,listenTarget:t.detailTarget,progressLabel:t.progressLabel}),onPopupHoverIntent:e=>e?p():c(),rawThumbnail:!0}),modals:u(y,{children:[u(J,{workId:r?r.libId:null,title:r?.title,onClose:()=>m(null)}),s&&u(H,{data:s.data,anchorRect:s.rect,bookmarked:R.has(K(s.data.rjCode)),onToggleBookmark:()=>v({rjCode:s.data.rjCode,title:s.data.title,thumbnail:s.data.thumbnail||"",isAdult:s.data.isAdult}),onMouseEnter:p,onMouseLeave:c,onRequestClose:B})]})})}export{ht as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{p as le,d as O,T as re,h as U,u as a,m as ne,S as q}from"./vendor-core-DfaOB3Rn.js";import{I as M}from"./vendor-icons-C1Pj_eSX.js";import{T as se}from"./ToggleSwitch-CN_ppEc9.js";import{M as oe}from"./MatureConsentModal-CBGHgiBA.js";import{E as ie}from"./ErrorMessage-hMt90aG4.js";import{M as ce,P as de}from"./MediaCard-Bd24Icus.js";import{u as ue,M as ge}from"./useMangaPopup-BiaJvL8C.js";import{g as pe,e as he,ad as me,m as ve,a9 as be}from"./index-hrS3r0UE.js";import{u as fe,m as D,i as Se,a as Te}from"./useMangaLibrary-DQvZO29f.js";import{s as l}from"./Manga.module-depGEacJ.js";import{p as c}from"./page.module-C1MlZzf3.js";import"./MediaPopupShell-BewMMT93.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./usePopup-DS9jMzp6.js";import"./vendor-query-BBT5_sHx.js";import"./libraryInvalidation-DWCCaTbI.js";const ye=[{value:"popular",label:"Popular"},{value:"latest",label:"Latest"},{value:"rating",label:"Top Rated"},{value:"followed",label:"Most Followed"}],Me=[{value:"",label:"Any Status"},{value:"ongoing",label:"Ongoing"},{value:"completed",label:"Completed"},{value:"hiatus",label:"Hiatus"},{value:"cancelled",label:"Cancelled"}],Ne=[{value:"",label:"Any Status"},{value:"publishing",label:"Publishing"},{value:"finished",label:"Finished"},{value:"on hiatus",label:"On Hiatus"},{value:"discontinued",label:"Discontinued"}],Ce=[{value:"",label:"All Types"},{value:"manga",label:"Manga"},{value:"novel",label:"Novel"},{value:"one-shot",label:"One-Shot"},{value:"doujinshi",label:"Doujinshi"}],Pe=[{value:"safe",label:"Safe"}],Ie=[{value:"safe",label:"Safe"},{value:"suggestive",label:"Suggestive"},{value:"erotica",label:"Erotica"},{value:"pornographic",label:"Pornographic"}];function He(){const[n,N]=le(),{hasConsent:v,grant:_}=pe(),[j,b]=O(!1),[C,P]=O(n.get("q")||""),{options:I,isLoading:R,refetch:G}=he(),d=re(()=>I.filter(e=>e.kind==="manga").map(e=>({value:e.id,label:e.label})),[I]),f=n.get("provider")||"",S=f&&d.some(e=>e.value===f)?f:"",T=n.get("q")||"",L=parseInt(n.get("page")||"1"),$=n.get("sort")||"popular",k=n.get("status")||"",w=n.get("type")||"",u=n.get("rating")||"safe",A=n.get("id")||"";U(()=>{document.title="Manga - dango"},[]);const o=v,y=o?u:"safe",H=o?Ie:Pe,i=(e,t=!1)=>{const r=new URLSearchParams(n);for(const[m,E]of Object.entries(e))E?r.set(m,E):r.delete(m);t&&r.delete("page"),N(r)},g=me({provider:S,query:T,page:L,sort:$,status:k,type:w,rating:y,mature:o}),h=g.data?.items??[],z=g.data?.hasNext??!1,p=S||h[0]?.provider||"",{toggle:V,bookmarkedIds:X}=fe(),{popup:s,openPopup:K,scheduleClose:x,cancelClose:B,closePopup:Q}=ue();if(U(()=>{P(T)},[T]),A){const e=new URLSearchParams;o&&u!=="safe"&&e.set("rating",u);const t=n.get("chapter")||"";t&&e.set("chapter",t);const r=e.toString()?`?${e.toString()}`:"",m=`/manga/${p||"mangadex"}/${encodeURIComponent(A)}${t?`/read${r}`:r}`;return a(ne,{to:m,replace:!0})}const W=e=>{e.preventDefault(),be(),i({q:C},!0)},Y=e=>{e.currentTarget.checked&&!v&&b(!0)},J=()=>{_(),b(!1),i({},!0)},Z=()=>{b(!1)},F=e=>{const t=new URLSearchParams;o&&u!=="safe"&&t.set("rating",u);const r=t.toString()?`?${t.toString()}`:"";return`/manga/${e.provider}/${encodeURIComponent(e.id)}${r}`},ee=p==="mangapill"?Ne:Me,ae=p==="mangapill",te=p==="mangadex";return a("div",{className:c.page,children:[a("div",{className:c.header,children:[a("h1",{className:c.pageTitle,children:[a(M,{name:"book"})," Manga"]}),a("form",{className:c.searchForm,onSubmit:W,children:[a("input",{className:c.searchInput,value:C,onChange:e=>P(e.currentTarget.value),placeholder:"Search manga titles...","aria-label":"Search manga"}),a("button",{className:c.searchBtn,type:"submit","aria-label":"Search",children:a(M,{name:"search",size:14})})]}),a("select",{className:l.select,value:S,disabled:d.length===0,onChange:e=>{const t=new URLSearchParams(n);t.set("provider",e.currentTarget.value),t.delete("page"),t.delete("id"),t.delete("chapter"),t.delete("status"),t.delete("type"),N(t)},"aria-label":"Manga provider",children:d.length===0?a("option",{value:"",children:R?"Loading providers…":"No providers available"}):a(q,{children:[a("option",{value:"",children:"Auto"}),d.map(e=>a("option",{value:e.value,children:e.label},e.value))]})}),d.length===0&&!R&&a("button",{className:c.searchBtn,type:"button",onClick:()=>G(),"aria-label":"Retry loading providers",children:a(M,{name:"redo",size:14})})]}),a("div",{className:l.filterRow,children:[p==="mangadex"&&a("select",{className:l.select,value:$,onChange:e=>i({sort:e.currentTarget.value},!0),"aria-label":"Sort manga",children:ye.map(e=>a("option",{value:e.value,children:e.label},e.value))}),a("select",{className:l.select,value:k,onChange:e=>i({status:e.currentTarget.value},!0),"aria-label":"Filter by status",children:ee.map(e=>a("option",{value:e.value,children:e.label},e.label))}),ae&&a("select",{className:l.select,value:w,onChange:e=>i({type:e.currentTarget.value},!0),"aria-label":"Filter by type",children:Ce.filter(e=>e.value!=="doujinshi"||o).map(e=>a("option",{value:e.value,children:e.label},e.value))}),te&&a("select",{className:l.select,value:y,onChange:e=>i({rating:e.currentTarget.value},!0),"aria-label":"Content rating",children:H.map(e=>a("option",{value:e.value,children:e.label},e.value))}),!v&&a("div",{className:l.matureToggleWrap,children:[a("label",{className:l.matureLabel,htmlFor:"manga-mature-toggle",children:"Mature"}),a(se,{id:"manga-mature-toggle",isChecked:!1,onChange:Y})]})]}),g.isError?a(ie,{message:"Failed to load manga. Please try again."}):g.isLoading&&h.length===0?a("div",{className:l.grid,"aria-hidden":!0,children:Array.from({length:12}).map((e,t)=>a("div",{className:l.skeletonCard,children:[a("div",{className:`${l.skeletonThumb} ${l.shimmer}`}),a("div",{className:`${l.skeletonLine} ${l.shimmer}`,style:{width:"88%"}}),a("div",{className:`${l.skeletonLine} ${l.shimmer}`,style:{width:"55%"}})]},t))}):h.length===0?a("p",{className:l.statusMsg,children:"No titles found. Try another search or provider."}):a(q,{children:[a("div",{className:`${l.grid} ${g.isFetching?l.fetching:""}`,children:h.map(e=>{const t=D(e.provider,e.id);return a(ce,{item:{id:t,title:e.title,...Te(e),thumbnail:ve(e.provider,e.cover),typeBadge:e.type||void 0,chapterBadge:e.latestChapter?`Ch. ${e.latestChapter}`:null,isAdult:Se(e)},linkTo:F(e),hoverIcon:"info",display:{elements:{poster:{typeBadge:!0,chapterBadge:!0,adultBadge:!0},info:{title:!0,mobileBadges:!0,progress:!1,meta:!1}}},onOpenDetails:r=>K(r,{provider:e.provider,mangaId:e.id,title:e.title,altTitle:e.altTitle,cover:e.cover,contentRating:e.contentRating,readTarget:F(e),rating:y,mature:o}),onPopupHoverIntent:r=>r?B():x(),rawThumbnail:!0},`${e.provider}-${e.id}`)})}),a(de,{page:L,canGoNext:z,onChange:e=>i({page:String(e)}),variant:"labeled"})]}),s&&a(ge,{data:s.data,anchorRect:s.rect,bookmarked:X.has(D(s.data.provider,s.data.mangaId)),onToggleBookmark:()=>V({id:s.data.mangaId,provider:s.data.provider,title:s.data.title,cover:s.data.cover,altTitle:s.data.altTitle??void 0,contentRating:s.data.contentRating}),onMouseEnter:B,onMouseLeave:x,onRequestClose:Q}),j&&a(oe,{isOpen:!0,scope:"section",showResetHint:!0,onClose:Z,onGrant:J})]})}export{He as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as e,a as Q,d as z,S as E,o as O,p as G,T as $,h as Y}from"./vendor-core-DfaOB3Rn.js";import{I as x}from"./vendor-icons-C1Pj_eSX.js";import{F as H,m as D,
|
|
1
|
+
import{u as e,a as Q,d as z,S as E,o as O,p as G,T as $,h as Y}from"./vendor-core-DfaOB3Rn.js";import{I as x}from"./vendor-icons-C1Pj_eSX.js";import{F as H,m as D,ad as U,B as M,g as J,ae as K,d as V}from"./index-hrS3r0UE.js";import{E as X}from"./ErrorMessage-hMt90aG4.js";import{s as r}from"./Manga.module-depGEacJ.js";import{c as Z,d as F,e as ee,m as A,f as te,g as ae,r as re,h as ne,j as se,p as ie,k as oe,M as le}from"./useMangaLibrary-DQvZO29f.js";import{p as ce}from"./page.module-C1MlZzf3.js";import"./vendor-query-BBT5_sHx.js";import"./libraryInvalidation-DWCCaTbI.js";const de=({detail:a,altTitle:c,onBack:k,onOpenChapter:v,bookmarkButton:n,statusSelect:g,primaryAction:b,progressByChapter:d})=>{const h=[a.type,a.status,a.year?String(a.year):"",a.author?`by ${a.author}`:""].filter(Boolean);return e("div",{children:[e("button",{className:r.backBtn,onClick:k,children:[e(x,{name:"chevron-left",size:12})," Back to browse"]}),e("div",{className:r.detail,children:[a.cover&&e(H,{className:r.detailCover,src:D(a.provider,a.cover),alt:a.title,decoding:"async",draggable:!1}),e("div",{className:r.detailInfo,children:[e("h2",{className:r.detailTitle,children:a.title}),c&&e("p",{className:r.detailAltTitle,children:["Also known as: ",c]}),h.length>0&&e("div",{className:r.detailMeta,children:h.map(t=>e("span",{className:r.badge,children:t},t))}),a.genres&&a.genres.length>0&&e("div",{className:r.detailMeta,children:a.genres.map(t=>e("span",{className:r.badge,children:t},t))}),a.description&&e("p",{className:r.detailDesc,children:a.description}),(n||g||b)&&e("div",{className:r.detailActions,children:[b,n,g]})]})]}),e("h3",{className:r.detailTitle,style:{fontSize:"1rem"},children:["Chapters (",a.chapters.length,")"]}),a.chapters.length===0?e("p",{className:r.statusMsg,children:"No chapters found for this title on this provider."}):e("div",{className:r.chapterList,children:a.chapters.map(t=>{const o=d?.get(t.id),p=!!o&&o.pageCount>0&&o.page>=o.pageCount;return e("button",{className:`${r.chapterRow} ${p?r.chapterDone:""}`,onClick:()=>v(t),title:t.externalUrl?"External only - opens on source site":void 0,children:[e("span",{children:["Ch. ",t.number,t.title?` - ${t.title}`:""]}),e("span",{className:r.chapterMeta,children:[o&&o.pageCount>0?p?"read":`p. ${o.page}/${o.pageCount}`:"",t.group,t.externalUrl?"external":""].filter(Boolean).join(" · ")})]},t.id)})})]})},pe=({libId:a,anilistId:c})=>{const k=Q(),v=Z(a),n=v.data?.item,[g,b]=z(null),[d,h]=z(null),t=g??n?.title??"",o=U({provider:"mangadex",query:t,page:1,sort:"",status:"",type:"",rating:"safe",mature:!1},!!t),p=U({provider:"mangapill",query:t,page:1,sort:"",status:"",type:"",rating:"safe",mature:!1},!!t),S=F(),y=ee(),I=async s=>{const u=A(s.provider,s.id);h(u);try{await S.mutateAsync({provider:s.provider,mangaId:s.id,title:s.title,cover:s.cover,altTitle:s.altTitle,contentRating:s.contentRating,silent:!0}),await y.mutateAsync({id:u,anilistId:c}),k(`/manga/${s.provider}/${encodeURIComponent(s.id)}`)}catch{return}finally{h(null)}},C=(s,u,T)=>e("div",{style:{marginTop:"12px"},children:[e("div",{style:{fontWeight:600,textTransform:"capitalize",marginBottom:"6px"},children:s}),T?e("div",{style:{color:"var(--text-tertiary)",fontSize:"0.85rem"},children:"Searching…"}):!u||u.length===0?e("div",{style:{color:"var(--text-tertiary)",fontSize:"0.85rem"},children:"No matches."}):u.slice(0,6).map(l=>{const B=A(l.provider,l.id),N=d===B;return e("div",{style:{display:"flex",alignItems:"center",gap:"10px",padding:"6px 0",borderTop:"1px solid var(--border, #223)"},children:[l.cover&&e("img",{src:D(l.provider,l.cover),alt:"",loading:"lazy",style:{width:"34px",height:"48px",objectFit:"cover",borderRadius:"4px"}}),e("div",{style:{flex:1,minWidth:0},children:[e("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:l.title}),l.latestChapter&&e("div",{style:{color:"var(--text-tertiary)",fontSize:"0.75rem"},children:l.latestChapter})]}),e(M,{onClick:()=>I(l),disabled:N,children:[e(x,{name:"external-link-alt",size:12})," ",N?"Linking…":"Link"]})]},B)})]});return e("div",{children:[e("button",{onClick:()=>k("/manga"),style:{background:"none",border:"none",color:"var(--accent)",cursor:"pointer",marginBottom:"12px"},children:[e(x,{name:"chevron-left",size:12})," Back to browse"]}),v.isLoading?e("div",{style:{color:"var(--text-tertiary)"},children:"Loading library entry…"}):n?e(E,{children:[e("div",{style:{display:"flex",gap:"12px",alignItems:"center"},children:[n.cover&&e("img",{src:n.cover,alt:"",style:{width:"64px",height:"90px",objectFit:"cover",borderRadius:"6px"}}),e("div",{children:[e("h2",{style:{margin:"0 0 4px"},children:n.title}),e("div",{style:{color:"var(--text-tertiary)",fontSize:"0.85rem"},children:["Tracked on AniList",n.lastChapterNumber?` · Ch. ${n.lastChapterNumber}`:"",n.status?` · ${n.status}`:""]})]})]}),e("p",{style:{color:"var(--text-tertiary)",fontSize:"0.85rem",marginTop:"12px"},children:"AniList doesn't host chapters. Search your providers below and link the matching manga - your AniList status and chapter progress will sync to it from now on."}),e("div",{style:{display:"flex",gap:"8px",marginTop:"8px"},children:e("input",{type:"text",value:g??n.title,onChange:s=>b(s.currentTarget.value),placeholder:"Search providers…",style:{flex:1,padding:"8px 10px",borderRadius:"6px",border:"1px solid var(--border, #223)",background:"var(--bg-secondary, transparent)",color:"inherit"}})}),C("mangadex",o.data?.items,o.isLoading),C("mangapill",p.data?.items,p.isLoading)]}):e("div",{style:{color:"var(--text-tertiary)"},children:"This AniList entry is no longer in your library."})]})};function xe(){const{provider:a="",id:c=""}=O(),[k]=G(),v=Q(),{hasConsent:n}=J(),g=k.get("rating")||"safe",b=n?g:"safe",d=a&&c?A(a,c):void 0,h=K(a||null,c||null,b,n),t=h.data,o=te(d),p=ae(d),{titlePreference:S}=V(),y=$(()=>t&&{...t,title:re(t,S)},[t,S]),I=F(),C=ne(),s=se();Y(()=>{y&&(document.title=`${y.title} - dango`)},[y]);const u=$(()=>{const i=new Map;for(const m of p.data?.progress??[])i.set(m.chapterId,m);return i},[p.data]),T=a.toLowerCase()==="anilist"&&/^\d+$/.test(c)?parseInt(c,10):null,l=o.data?.inLibrary??!1,B=o.data?.status??"Reading",N=$(()=>(t?.chapters??[]).filter(i=>!i.externalUrl),[t]),f=$(()=>{if(!t)return null;const i=[...p.data?.progress??[]].sort((m,L)=>L.updatedAt-m.updatedAt);for(const m of i){const L=t.chapters.find(w=>w.id===m.chapterId);if(L&&!L.externalUrl)return L;const P=ie(m.chapterId);if(P!=null){const w=oe(t.chapters,P);if(w&&!w.externalUrl)return w}}return N[0]??null},[t,p.data,N]),j=f?u.get(f.id):void 0,W=(p.data?.progress?.length??0)>0,_=f&&(j||W)?`Continue Ch. ${f?.number}`:"Start Reading",R=i=>{if(i.externalUrl){window.open(i.externalUrl,"_blank","noopener,noreferrer");return}const m=new URLSearchParams;m.set("chapter",i.id),n&&g!=="safe"&&m.set("rating",g),v(`/manga/${a}/${encodeURIComponent(c)}/read?${m.toString()}`)},q=()=>{!t||!d||(l?C.mutate(d):I.mutate({provider:a,mangaId:c,title:t.title,cover:t.cover,author:t.author,altTitle:t.altTitle,contentRating:t.contentRating}))};return e("div",{className:ce.page,children:h.isLoading?e("div",{"aria-hidden":!0,children:[e("div",{className:`${r.skeletonThumb} ${r.shimmer}`,style:{maxWidth:"12rem"}}),e("div",{className:`${r.skeletonLine} ${r.shimmer}`,style:{width:"40%"}}),e("div",{className:`${r.skeletonLine} ${r.shimmer}`,style:{width:"70%"}})]}):h.isError||!t||!y?T!=null&&d?e(pe,{libId:d,anilistId:T}):e(E,{children:[e("button",{className:r.backBtn,onClick:()=>v("/manga"),children:[e(x,{name:"chevron-left",size:12})," Back to browse"]}),e(X,{message:"Failed to load this title. Please try again."})]}):e(de,{detail:y,altTitle:t.altTitle!==y.title?t.altTitle:void 0,onBack:()=>v("/manga"),onOpenChapter:R,progressByChapter:u,primaryAction:f?e(M,{onClick:()=>f&&R(f),children:[e(x,{name:"book",size:13})," ",_]}):void 0,bookmarkButton:e(M,{variant:l?"secondary":"primary",onClick:q,disabled:I.isPending||C.isPending,children:[e(x,{name:"bookmark",size:13})," ",l?"Bookmarked":"Bookmark"]}),statusSelect:l?e("select",{className:r.detailSelect,value:B,onChange:i=>d&&s.mutate({id:d,status:i.currentTarget.value}),"aria-label":"Reading status",children:le.map(i=>e("option",{value:i,children:i},i))}):void 0})})}export{xe as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as D,A as w,q as Z,h as g,u as e,S as le,o as be,p as we,a as Ne,T as ye}from"./vendor-core-DfaOB3Rn.js";import{E as Ce}from"./ErrorMessage-hMt90aG4.js";import{ah as ke,ai as Ie,p as X,q as $e,e as Se,ag as Pe,d as Re,t as ce}from"./index-CkZCduQZ.js";import{I as S}from"./vendor-icons-C1Pj_eSX.js";import{u as Me}from"./vendor-query-BBT5_sHx.js";import{s as t}from"./Manga.module-depGEacJ.js";import{m as xe,r as Ee,g as Te,l as Le,p as Be,k as ze}from"./useMangaLibrary-CPluPl_T.js";import{p as Ae}from"./page.module-C1MlZzf3.js";import"./libraryInvalidation-Cv-7EfU1.js";const de="mangaReadMode",ue="mangaFitMode";function Fe(){try{return X.getItem(de)==="page"?"page":"strip"}catch{return"strip"}}function Ue(){try{return X.getItem(ue)==="height"?"height":"width"}catch{return"width"}}const De=({provider:h,mangaTitle:p,chapter:f,chapters:y,onBack:C,onOpenChapter:v,initialPage:u=0,onProgress:V})=>{const[c,P]=D(Fe),[B,i]=D(Ue),[d,z]=D(0),[A,M]=D(new Set),[b,k]=D(0),N=w(null),x=w([]),Y=Me(),{data:_,isLoading:j,isError:R}=ke(h,f.id),s=_?.pages??[],m=s.map(n=>Ie(h,n)),$=w(0),F=w(0),E=w(!1);F.current=s.length;const T=y.findIndex(n=>n.id===f.id),a=T>0?[...y.slice(0,T)].reverse().find(n=>!n.externalUrl)??null:null,o=T>=0?y.slice(T+1).find(n=>!n.externalUrl)??null:null,I=Z(n=>{E.current=!0,z(r=>{const l=r+n;return l<0?(a&&v(a),0):l>=s.length?(o&&v(o),r):l})},[s.length,a,o,v]);g(()=>{E.current=!1,$.current=Math.max(0,u),z(Math.max(0,u)),M(new Set),x.current=[],u<=0&&window.scrollTo(0,0)},[f.id,u]);const J=w(V);J.current=V;const ee=w(""),O=w(null),te=w(null),[W,ge]=D(0),L=Z(()=>{const n=c==="strip"?x.current[$.current]:te.current,r=n?.querySelector("img");if(!n||!r)return;const l=Math.max(0,(n.clientWidth-r.clientWidth)/2)+8;ge(H=>Math.abs(H-l)<1?H:l)},[c]);g(()=>{$.current=d,s.length!==0&&J.current?.(Math.min(d+1,s.length),s.length)},[d,s.length]),g(()=>{u<=0||E.current||$.current===0&&(E.current=!1,$.current=u,z(u))},[u]),g(()=>{if(c!=="strip"||s.length===0||u<=0)return;const n=`${f.id}:${u}`;if(ee.current===n)return;ee.current=n;const r=window.setTimeout(()=>{x.current[Math.min(u,s.length-1)]?.scrollIntoView({block:"start"})},150);return()=>window.clearTimeout(r)},[c,s.length,u,f.id]),g(()=>{document.title=`${p} Ch. ${f.number} - dango`},[p,f.number]),g(()=>{try{X.setItem(de,c)}catch{}},[c]),g(()=>{try{X.setItem(ue,B)}catch{}},[B]),g(()=>{c==="page"&&window.scrollTo(0,0)},[c]),g(()=>{if(c!=="page"||s.length===0)return;const n=r=>{r.key==="ArrowRight"||r.key===" "?(r.preventDefault(),I(1)):r.key==="ArrowLeft"&&(r.preventDefault(),I(-1))};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[c,s.length,I]),g(()=>{if(c!=="strip"||s.length===0)return;let n=0;const r=()=>{n=0;const H=window.innerHeight*.3,G=x.current;let q=-1,se=0;for(let Q=0;Q<G.length;Q++){const ie=G[Q];if(!ie)continue;const oe=ie.getBoundingClientRect();if(oe.height>4&&se++,oe.top<=H)q=Q;else break}q<0||se<Math.min(3,G.length)||(q!==$.current&&(E.current=!0,$.current=q,z(q)),L())},l=()=>{n||(n=requestAnimationFrame(r))};return O.current=l,l(),window.addEventListener("scroll",l,{passive:!0}),window.addEventListener("resize",l),()=>{window.removeEventListener("scroll",l),window.removeEventListener("resize",l),n&&cancelAnimationFrame(n),O.current=null}},[c,s.length,_,L]),g(()=>{if(!(c!=="page"||s.length===0))return L(),window.addEventListener("resize",L),()=>window.removeEventListener("resize",L)},[c,d,s.length,L]);const he=n=>{N.current=n.touches[0].clientX},me=n=>{if(N.current===null)return;const r=n.changedTouches[0].clientX-N.current;N.current=null,!(Math.abs(r)<50)&&I(r<0?1:-1)},K=n=>{n&&v(n)},ne=n=>M(r=>{if(r.has(n))return r;const l=new Set(r);return l.add(n),l}),pe=n=>{M(r=>{const l=new Set(r);return l.delete(n),l}),k(r=>r+1)},fe=()=>{M(new Set),k(n=>n+1),Y.invalidateQueries({queryKey:[$e.mangaPages,h,f.id]})},ve=s.length>0&&A.size>=s.length,ae=n=>b>0?`${n}&n=${b}`:n,re=n=>e("div",{className:t.deadPage,role:"alert",children:[e("span",{children:["Page ",n+1," failed to load"]}),e("button",{className:t.pageBtn,onClick:()=>pe(n),children:[e(S,{name:"sync-alt",size:12})," Retry"]})]}),U=B==="height";return e("div",{className:t.readerShell,children:[e("div",{className:t.readerBar,children:[e("button",{className:t.readerIconBtn,onClick:C,"aria-label":"Back to chapters",children:e(S,{name:"chevron-left",size:14})}),e("span",{className:t.readerTitle,children:[p," - Ch. ",f.number,f.title?` ${f.title}`:""]}),s.length>0&&e("span",{className:t.readerCounter,children:[Math.min(d+1,s.length)," / ",s.length]}),e("div",{className:t.readerSegment,role:"group","aria-label":"Reading mode",children:[e("button",{type:"button","aria-pressed":c==="strip",className:c==="strip"?t.readerSegmentActive:"",onClick:()=>P("strip"),children:"Strip"}),e("button",{type:"button","aria-pressed":c==="page",className:c==="page"?t.readerSegmentActive:"",onClick:()=>P("page"),children:"Page"})]}),e("div",{className:t.readerSegment,role:"group","aria-label":"Fit mode",children:[e("button",{type:"button","aria-pressed":!U,className:U?"":t.readerSegmentActive,onClick:()=>i("width"),title:"Fit width - best for portrait / phones",children:"Wide"}),e("button",{type:"button","aria-pressed":U,className:U?t.readerSegmentActive:"",onClick:()=>i("height"),title:"Fit height - best for landscape / desktop",children:"Tall"})]}),e("button",{className:t.readerIconBtn,disabled:!a,onClick:()=>K(a),"aria-label":"Previous chapter",children:e(S,{name:"chevron-left",size:14})}),e("button",{className:t.readerIconBtn,disabled:!o,onClick:()=>K(o),"aria-label":"Next chapter",children:e(S,{name:"chevron-right",size:14})})]}),R?e("p",{className:t.statusMsg,children:"Failed to load pages. Please try again."}):j?e("div",{className:t.readerPages,"aria-hidden":!0,children:Array.from({length:3}).map((n,r)=>e("div",{className:`${t.skeletonThumb} ${t.shimmer}`,style:{width:"100%",maxWidth:"56rem",aspectRatio:"3 / 4"}},r))}):s.length===0?e("p",{className:t.statusMsg,children:"No pages found for this chapter."}):ve?e("div",{className:t.failedBox,children:[e("p",{className:t.statusMsg,children:"Page images failed to load (expired or blocked links)."}),e("button",{className:t.pageBtn,onClick:fe,children:[e(S,{name:"sync-alt",size:12})," Reload pages"]})]}):c==="strip"?e("div",{className:`${t.readerPages} ${U?t.readerPagesTall:""}`,children:m.map((n,r)=>e("div",{ref:l=>{x.current[r]=l},className:t.readerPageWrap,children:[r===d&&e("div",{className:t.ribbon,style:W>0?{right:W}:void 0,"aria-hidden":"true",children:e(S,{name:"bookmark",size:12})},d),A.has(r)?re(r):e("img",{className:t.readerPage,src:ae(n),alt:`Page ${r+1}`,loading:r<3?"eager":"lazy",decoding:"async",draggable:!1,onLoad:()=>O.current?.(),onError:()=>ne(r)})]},`${r}-${s[r].slice(-32)}`))}):e(le,{children:[e("div",{ref:te,className:`${t.pageView} ${U?t.pageViewTall:""}`,onTouchStart:he,onTouchEnd:me,children:[e("div",{className:t.ribbon,style:W>0?{right:W}:void 0,"aria-hidden":"true",children:e(S,{name:"bookmark",size:12})},d),e("button",{className:`${t.tapZone} ${t.tapZoneLeft}`,onClick:()=>I(-1),"aria-label":"Previous page",children:e("span",{className:t.tapChevron,children:e(S,{name:"chevron-left",size:16})})}),A.has(d)?re(d):e("img",{className:t.pageImage,src:ae(m[d]),alt:`Page ${d+1} of ${s.length}`,decoding:"async",draggable:!1,onLoad:()=>L(),onError:()=>ne(d)},`${d}-${s[d].slice(-32)}`),e("button",{className:`${t.tapZone} ${t.tapZoneRight}`,onClick:()=>I(1),"aria-label":"Next page",children:e("span",{className:t.tapChevron,children:e(S,{name:"chevron-right",size:16})})})]}),e("nav",{className:t.pagination,"aria-label":"Page navigation",children:[e("button",{className:t.pageBtn,disabled:d<=0,onClick:()=>I(-1),children:"Previous page"}),e("span",{className:t.pageIndicator,children:[d+1," / ",s.length]}),e("button",{className:t.pageBtn,disabled:d>=s.length-1,onClick:()=>I(1),children:"Next page"})]})]}),(a||o)&&e("nav",{className:t.pagination,children:[e("button",{className:t.pageBtn,disabled:!a,onClick:()=>K(a),children:"Previous chapter"}),e("button",{className:t.pageBtn,disabled:!o,onClick:()=>K(o),children:"Next chapter"})]})]})},_e=800,qe=5e3;function Oe(){const{provider:h="",id:p=""}=be(),[f]=we(),y=Ne(),C=f.get("chapter")||"",v=f.get("rating")||"safe",{hasConsent:u}=Se(),V=u?v:"safe",c=h&&p?xe(h,p):"",P=h.toLowerCase()==="anilist";g(()=>{P&&p&&y(`/manga/anilist/${encodeURIComponent(p)}`,{replace:!0})},[P,p,y]);const B=Pe(!P&&h?h:null,!P&&p?p:null,V,u),i=B.data,{titlePreference:d}=Re(),z=i?Ee(i,d):"Manga",A=Te(c||void 0),M=Le(),b=i&&C?i.chapters.find(a=>a.id===C)??null:null,k=Be(C),N=k!=null&&i?ze(i.chapters,k):null;g(()=>{if(k!=null&&N&&N.id!==C){const a=new URLSearchParams;a.set("chapter",N.id),u&&v!=="safe"&&a.set("rating",v),y(`/manga/${h}/${encodeURIComponent(p)}/read?${a.toString()}`,{replace:!0})}},[k,N,C,u,v,h,p,y]);const x=k!=null&&!!i&&!!N,Y=k!=null&&!!i&&!N,_=ye(()=>{const a=(A.data?.progress??[]).find(o=>o.chapterId===C);return a&&a.page>0?a.page:0},[A.data,C]),j=_>1?_-1:0,R=w(null),s=w(null),m=Z(()=>{R.current&&(clearTimeout(R.current),R.current=null);const a=s.current;s.current=null,a&&c&&M.mutate({mangaId:c,chapterId:a.chapterId,chapterNumber:a.chapterNumber,page:a.page,pageCount:a.pageCount,title:i?.title??null,cover:i?.cover??null,provider:h||null,altTitle:i?.altTitle??null,contentRating:i?.contentRating??null})},[c,M,i?.title,i?.cover,i?.altTitle,i?.contentRating,h]),$=Z((a,o)=>{b&&(s.current={chapterId:b.id,chapterNumber:b.number,page:a,pageCount:o},R.current&&clearTimeout(R.current),R.current=setTimeout(m,_e))},[b,m]);g(()=>{m()},[C,m]),g(()=>()=>m(),[m]),g(()=>{const a=window.setInterval(()=>{s.current&&m()},qe);return()=>window.clearInterval(a)},[m]),g(()=>{const a=()=>{document.visibilityState==="hidden"&&m()},o=()=>m();return document.addEventListener("visibilitychange",a),window.addEventListener("pagehide",o),()=>{document.removeEventListener("visibilitychange",a),window.removeEventListener("pagehide",o)}},[m]);const F=w("");F.current||(F.current=`manga-${Date.now()}-${Math.random().toString(36).slice(2)}`),g(()=>{if(!i||!b)return;const a=i.contentRating==="erotica"||i.contentRating==="pornographic"||i.type==="doujinshi",o=()=>{ce.discord.mangaPresence.mutate({title:i.title,chapterLabel:`Chapter ${b.number}`,isPlaying:!0,thumbnail:i.cover||"",thumbnails:[i.cover].filter(Boolean),isAdult:a,sessionId:F.current}).catch(()=>{}),ce.discord.heartbeat.mutate({sessionId:F.current}).catch(()=>{})};o();const I=window.setInterval(o,6e4);return()=>window.clearInterval(I)},[i,b]);const E=a=>{if(m(),a.externalUrl){window.open(a.externalUrl,"_blank","noopener,noreferrer");return}const o=new URLSearchParams;o.set("chapter",a.id),u&&v!=="safe"&&o.set("rating",v),y(`/manga/${h}/${encodeURIComponent(p)}/read?${o.toString()}`)},T=()=>{m();const a=new URLSearchParams;u&&v!=="safe"&&a.set("rating",v);const o=a.toString()?`?${a.toString()}`:"";y(`/manga/${h}/${encodeURIComponent(p)}${o}`)};return P?null:e("div",{className:Ae.page,children:B.isLoading||x?e("div",{className:t.readerPages,"aria-hidden":!0,children:Array.from({length:3}).map((a,o)=>e("div",{className:`${t.skeletonThumb} ${t.shimmer}`,style:{width:"100%",maxWidth:"56rem",aspectRatio:"3 / 4"}},o))}):!i||!b?e(le,{children:[e("button",{className:t.backBtn,onClick:T,children:"Back to title"}),e(Ce,{message:Y?`Chapter ${k} isn't available from ${h} for this title.`:"Failed to load this chapter. Please try again."})]}):e(De,{provider:h,mangaTitle:z,chapter:b,chapters:i.chapters,onBack:T,onOpenChapter:E,initialPage:j,onProgress:$},b.id)})}export{Oe as default};
|
|
1
|
+
import{d as D,A as w,q as Z,h as g,u as e,S as le,o as be,p as we,a as Ne,T as ye}from"./vendor-core-DfaOB3Rn.js";import{E as Ce}from"./ErrorMessage-hMt90aG4.js";import{af as ke,ag as Ie,p as X,q as $e,g as Se,ae as Pe,d as Re,t as ce}from"./index-hrS3r0UE.js";import{I as S}from"./vendor-icons-C1Pj_eSX.js";import{u as Me}from"./vendor-query-BBT5_sHx.js";import{s as t}from"./Manga.module-depGEacJ.js";import{m as xe,r as Ee,g as Te,l as Le,p as Be,k as ze}from"./useMangaLibrary-DQvZO29f.js";import{p as Ae}from"./page.module-C1MlZzf3.js";import"./libraryInvalidation-DWCCaTbI.js";const de="mangaReadMode",ue="mangaFitMode";function Fe(){try{return X.getItem(de)==="page"?"page":"strip"}catch{return"strip"}}function Ue(){try{return X.getItem(ue)==="height"?"height":"width"}catch{return"width"}}const De=({provider:h,mangaTitle:p,chapter:f,chapters:y,onBack:C,onOpenChapter:v,initialPage:u=0,onProgress:V})=>{const[c,P]=D(Fe),[B,i]=D(Ue),[d,z]=D(0),[A,M]=D(new Set),[b,k]=D(0),N=w(null),x=w([]),Y=Me(),{data:_,isLoading:j,isError:R}=ke(h,f.id),s=_?.pages??[],m=s.map(n=>Ie(h,n)),$=w(0),F=w(0),E=w(!1);F.current=s.length;const T=y.findIndex(n=>n.id===f.id),a=T>0?[...y.slice(0,T)].reverse().find(n=>!n.externalUrl)??null:null,o=T>=0?y.slice(T+1).find(n=>!n.externalUrl)??null:null,I=Z(n=>{E.current=!0,z(r=>{const l=r+n;return l<0?(a&&v(a),0):l>=s.length?(o&&v(o),r):l})},[s.length,a,o,v]);g(()=>{E.current=!1,$.current=Math.max(0,u),z(Math.max(0,u)),M(new Set),x.current=[],u<=0&&window.scrollTo(0,0)},[f.id,u]);const J=w(V);J.current=V;const ee=w(""),O=w(null),te=w(null),[W,ge]=D(0),L=Z(()=>{const n=c==="strip"?x.current[$.current]:te.current,r=n?.querySelector("img");if(!n||!r)return;const l=Math.max(0,(n.clientWidth-r.clientWidth)/2)+8;ge(H=>Math.abs(H-l)<1?H:l)},[c]);g(()=>{$.current=d,s.length!==0&&J.current?.(Math.min(d+1,s.length),s.length)},[d,s.length]),g(()=>{u<=0||E.current||$.current===0&&(E.current=!1,$.current=u,z(u))},[u]),g(()=>{if(c!=="strip"||s.length===0||u<=0)return;const n=`${f.id}:${u}`;if(ee.current===n)return;ee.current=n;const r=window.setTimeout(()=>{x.current[Math.min(u,s.length-1)]?.scrollIntoView({block:"start"})},150);return()=>window.clearTimeout(r)},[c,s.length,u,f.id]),g(()=>{document.title=`${p} Ch. ${f.number} - dango`},[p,f.number]),g(()=>{try{X.setItem(de,c)}catch{}},[c]),g(()=>{try{X.setItem(ue,B)}catch{}},[B]),g(()=>{c==="page"&&window.scrollTo(0,0)},[c]),g(()=>{if(c!=="page"||s.length===0)return;const n=r=>{r.key==="ArrowRight"||r.key===" "?(r.preventDefault(),I(1)):r.key==="ArrowLeft"&&(r.preventDefault(),I(-1))};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[c,s.length,I]),g(()=>{if(c!=="strip"||s.length===0)return;let n=0;const r=()=>{n=0;const H=window.innerHeight*.3,G=x.current;let q=-1,se=0;for(let Q=0;Q<G.length;Q++){const ie=G[Q];if(!ie)continue;const oe=ie.getBoundingClientRect();if(oe.height>4&&se++,oe.top<=H)q=Q;else break}q<0||se<Math.min(3,G.length)||(q!==$.current&&(E.current=!0,$.current=q,z(q)),L())},l=()=>{n||(n=requestAnimationFrame(r))};return O.current=l,l(),window.addEventListener("scroll",l,{passive:!0}),window.addEventListener("resize",l),()=>{window.removeEventListener("scroll",l),window.removeEventListener("resize",l),n&&cancelAnimationFrame(n),O.current=null}},[c,s.length,_,L]),g(()=>{if(!(c!=="page"||s.length===0))return L(),window.addEventListener("resize",L),()=>window.removeEventListener("resize",L)},[c,d,s.length,L]);const he=n=>{N.current=n.touches[0].clientX},me=n=>{if(N.current===null)return;const r=n.changedTouches[0].clientX-N.current;N.current=null,!(Math.abs(r)<50)&&I(r<0?1:-1)},K=n=>{n&&v(n)},ne=n=>M(r=>{if(r.has(n))return r;const l=new Set(r);return l.add(n),l}),pe=n=>{M(r=>{const l=new Set(r);return l.delete(n),l}),k(r=>r+1)},fe=()=>{M(new Set),k(n=>n+1),Y.invalidateQueries({queryKey:[$e.mangaPages,h,f.id]})},ve=s.length>0&&A.size>=s.length,ae=n=>b>0?`${n}&n=${b}`:n,re=n=>e("div",{className:t.deadPage,role:"alert",children:[e("span",{children:["Page ",n+1," failed to load"]}),e("button",{className:t.pageBtn,onClick:()=>pe(n),children:[e(S,{name:"sync-alt",size:12})," Retry"]})]}),U=B==="height";return e("div",{className:t.readerShell,children:[e("div",{className:t.readerBar,children:[e("button",{className:t.readerIconBtn,onClick:C,"aria-label":"Back to chapters",children:e(S,{name:"chevron-left",size:14})}),e("span",{className:t.readerTitle,children:[p," - Ch. ",f.number,f.title?` ${f.title}`:""]}),s.length>0&&e("span",{className:t.readerCounter,children:[Math.min(d+1,s.length)," / ",s.length]}),e("div",{className:t.readerSegment,role:"group","aria-label":"Reading mode",children:[e("button",{type:"button","aria-pressed":c==="strip",className:c==="strip"?t.readerSegmentActive:"",onClick:()=>P("strip"),children:"Strip"}),e("button",{type:"button","aria-pressed":c==="page",className:c==="page"?t.readerSegmentActive:"",onClick:()=>P("page"),children:"Page"})]}),e("div",{className:t.readerSegment,role:"group","aria-label":"Fit mode",children:[e("button",{type:"button","aria-pressed":!U,className:U?"":t.readerSegmentActive,onClick:()=>i("width"),title:"Fit width - best for portrait / phones",children:"Wide"}),e("button",{type:"button","aria-pressed":U,className:U?t.readerSegmentActive:"",onClick:()=>i("height"),title:"Fit height - best for landscape / desktop",children:"Tall"})]}),e("button",{className:t.readerIconBtn,disabled:!a,onClick:()=>K(a),"aria-label":"Previous chapter",children:e(S,{name:"chevron-left",size:14})}),e("button",{className:t.readerIconBtn,disabled:!o,onClick:()=>K(o),"aria-label":"Next chapter",children:e(S,{name:"chevron-right",size:14})})]}),R?e("p",{className:t.statusMsg,children:"Failed to load pages. Please try again."}):j?e("div",{className:t.readerPages,"aria-hidden":!0,children:Array.from({length:3}).map((n,r)=>e("div",{className:`${t.skeletonThumb} ${t.shimmer}`,style:{width:"100%",maxWidth:"56rem",aspectRatio:"3 / 4"}},r))}):s.length===0?e("p",{className:t.statusMsg,children:"No pages found for this chapter."}):ve?e("div",{className:t.failedBox,children:[e("p",{className:t.statusMsg,children:"Page images failed to load (expired or blocked links)."}),e("button",{className:t.pageBtn,onClick:fe,children:[e(S,{name:"sync-alt",size:12})," Reload pages"]})]}):c==="strip"?e("div",{className:`${t.readerPages} ${U?t.readerPagesTall:""}`,children:m.map((n,r)=>e("div",{ref:l=>{x.current[r]=l},className:t.readerPageWrap,children:[r===d&&e("div",{className:t.ribbon,style:W>0?{right:W}:void 0,"aria-hidden":"true",children:e(S,{name:"bookmark",size:12})},d),A.has(r)?re(r):e("img",{className:t.readerPage,src:ae(n),alt:`Page ${r+1}`,loading:r<3?"eager":"lazy",decoding:"async",draggable:!1,onLoad:()=>O.current?.(),onError:()=>ne(r)})]},`${r}-${s[r].slice(-32)}`))}):e(le,{children:[e("div",{ref:te,className:`${t.pageView} ${U?t.pageViewTall:""}`,onTouchStart:he,onTouchEnd:me,children:[e("div",{className:t.ribbon,style:W>0?{right:W}:void 0,"aria-hidden":"true",children:e(S,{name:"bookmark",size:12})},d),e("button",{className:`${t.tapZone} ${t.tapZoneLeft}`,onClick:()=>I(-1),"aria-label":"Previous page",children:e("span",{className:t.tapChevron,children:e(S,{name:"chevron-left",size:16})})}),A.has(d)?re(d):e("img",{className:t.pageImage,src:ae(m[d]),alt:`Page ${d+1} of ${s.length}`,decoding:"async",draggable:!1,onLoad:()=>L(),onError:()=>ne(d)},`${d}-${s[d].slice(-32)}`),e("button",{className:`${t.tapZone} ${t.tapZoneRight}`,onClick:()=>I(1),"aria-label":"Next page",children:e("span",{className:t.tapChevron,children:e(S,{name:"chevron-right",size:16})})})]}),e("nav",{className:t.pagination,"aria-label":"Page navigation",children:[e("button",{className:t.pageBtn,disabled:d<=0,onClick:()=>I(-1),children:"Previous page"}),e("span",{className:t.pageIndicator,children:[d+1," / ",s.length]}),e("button",{className:t.pageBtn,disabled:d>=s.length-1,onClick:()=>I(1),children:"Next page"})]})]}),(a||o)&&e("nav",{className:t.pagination,children:[e("button",{className:t.pageBtn,disabled:!a,onClick:()=>K(a),children:"Previous chapter"}),e("button",{className:t.pageBtn,disabled:!o,onClick:()=>K(o),children:"Next chapter"})]})]})},_e=800,qe=5e3;function Oe(){const{provider:h="",id:p=""}=be(),[f]=we(),y=Ne(),C=f.get("chapter")||"",v=f.get("rating")||"safe",{hasConsent:u}=Se(),V=u?v:"safe",c=h&&p?xe(h,p):"",P=h.toLowerCase()==="anilist";g(()=>{P&&p&&y(`/manga/anilist/${encodeURIComponent(p)}`,{replace:!0})},[P,p,y]);const B=Pe(!P&&h?h:null,!P&&p?p:null,V,u),i=B.data,{titlePreference:d}=Re(),z=i?Ee(i,d):"Manga",A=Te(c||void 0),M=Le(),b=i&&C?i.chapters.find(a=>a.id===C)??null:null,k=Be(C),N=k!=null&&i?ze(i.chapters,k):null;g(()=>{if(k!=null&&N&&N.id!==C){const a=new URLSearchParams;a.set("chapter",N.id),u&&v!=="safe"&&a.set("rating",v),y(`/manga/${h}/${encodeURIComponent(p)}/read?${a.toString()}`,{replace:!0})}},[k,N,C,u,v,h,p,y]);const x=k!=null&&!!i&&!!N,Y=k!=null&&!!i&&!N,_=ye(()=>{const a=(A.data?.progress??[]).find(o=>o.chapterId===C);return a&&a.page>0?a.page:0},[A.data,C]),j=_>1?_-1:0,R=w(null),s=w(null),m=Z(()=>{R.current&&(clearTimeout(R.current),R.current=null);const a=s.current;s.current=null,a&&c&&M.mutate({mangaId:c,chapterId:a.chapterId,chapterNumber:a.chapterNumber,page:a.page,pageCount:a.pageCount,title:i?.title??null,cover:i?.cover??null,provider:h||null,altTitle:i?.altTitle??null,contentRating:i?.contentRating??null})},[c,M,i?.title,i?.cover,i?.altTitle,i?.contentRating,h]),$=Z((a,o)=>{b&&(s.current={chapterId:b.id,chapterNumber:b.number,page:a,pageCount:o},R.current&&clearTimeout(R.current),R.current=setTimeout(m,_e))},[b,m]);g(()=>{m()},[C,m]),g(()=>()=>m(),[m]),g(()=>{const a=window.setInterval(()=>{s.current&&m()},qe);return()=>window.clearInterval(a)},[m]),g(()=>{const a=()=>{document.visibilityState==="hidden"&&m()},o=()=>m();return document.addEventListener("visibilitychange",a),window.addEventListener("pagehide",o),()=>{document.removeEventListener("visibilitychange",a),window.removeEventListener("pagehide",o)}},[m]);const F=w("");F.current||(F.current=`manga-${Date.now()}-${Math.random().toString(36).slice(2)}`),g(()=>{if(!i||!b)return;const a=i.contentRating==="erotica"||i.contentRating==="pornographic"||i.type==="doujinshi",o=()=>{ce.discord.mangaPresence.mutate({title:i.title,chapterLabel:`Chapter ${b.number}`,isPlaying:!0,thumbnail:i.cover||"",thumbnails:[i.cover].filter(Boolean),isAdult:a,sessionId:F.current}).catch(()=>{}),ce.discord.heartbeat.mutate({sessionId:F.current}).catch(()=>{})};o();const I=window.setInterval(o,6e4);return()=>window.clearInterval(I)},[i,b]);const E=a=>{if(m(),a.externalUrl){window.open(a.externalUrl,"_blank","noopener,noreferrer");return}const o=new URLSearchParams;o.set("chapter",a.id),u&&v!=="safe"&&o.set("rating",v),y(`/manga/${h}/${encodeURIComponent(p)}/read?${o.toString()}`)},T=()=>{m();const a=new URLSearchParams;u&&v!=="safe"&&a.set("rating",v);const o=a.toString()?`?${a.toString()}`:"";y(`/manga/${h}/${encodeURIComponent(p)}${o}`)};return P?null:e("div",{className:Ae.page,children:B.isLoading||x?e("div",{className:t.readerPages,"aria-hidden":!0,children:Array.from({length:3}).map((a,o)=>e("div",{className:`${t.skeletonThumb} ${t.shimmer}`,style:{width:"100%",maxWidth:"56rem",aspectRatio:"3 / 4"}},o))}):!i||!b?e(le,{children:[e("button",{className:t.backBtn,onClick:T,children:"Back to title"}),e(Ce,{message:Y?`Chapter ${k} isn't available from ${h} for this title.`:"Failed to load this chapter. Please try again."})]}):e(De,{provider:h,mangaTitle:z,chapter:b,chapters:i.chapters,onBack:T,onOpenChapter:E,initialPage:j,onProgress:$},b.id)})}export{Oe as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as a}from"./vendor-core-DfaOB3Rn.js";import{R as i}from"./ResetProgressModal-
|
|
1
|
+
import{u as a}from"./vendor-core-DfaOB3Rn.js";import{R as i}from"./ResetProgressModal-udBYaYWc.js";import{t as n,h as g}from"./useMangaLibrary-DQvZO29f.js";const M=({mangaId:e,title:r,onClose:o})=>{const s=n(),t=g();return a(i,{isOpen:!!e,itemName:r,progressKind:"reading",listLabel:"my reading list",onClose:o,onConfirm:m=>{e&&(s.mutate({mangaId:e}),m&&t.mutate(e))}})};export{M};
|