@serifpersia/dango 3.9.0 → 3.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +1 -1
  2. package/client/dist/assets/{AnimeCard-NynqB4iz.js → AnimeCard-DV3CayVB.js} +1 -1
  3. package/client/dist/assets/{AnimeInfo-B_VL5_wz.js → AnimeInfo-C_yN40WV.js} +1 -1
  4. package/client/dist/assets/AnimeInfoPage-Dr9zOOq1.js +2 -0
  5. package/client/dist/assets/{Asmr-DMspoMra.js → Asmr-BzVhO0PK.js} +1 -1
  6. package/client/dist/assets/{AsmrPopup-BRzUy94h.js → AsmrPopup-CfCdTvhx.js} +1 -1
  7. package/client/dist/assets/{AsmrResetProgressModal-s1eRMiAW.js → AsmrResetProgressModal-CLjzhb4H.js} +1 -1
  8. package/client/dist/assets/{Home-ujV6ObHi.css → Home-D_Hd4SUo.css} +1 -1
  9. package/client/dist/assets/{Home-B2BED0gb.js → Home-wtyG5fKA.js} +1 -1
  10. package/client/dist/assets/{Insights-I1lFAHGg.js → Insights-DGTqzxXr.js} +1 -1
  11. package/client/dist/assets/{LibraryListPage-DVFA51uJ.js → LibraryListPage-DhsV2n64.js} +1 -1
  12. package/client/dist/assets/{ListeningList-C3_v1Hfq.js → ListeningList-BPD9igfn.js} +1 -1
  13. package/client/dist/assets/{Manga-Dwkuv9to.js → Manga-ClgoT4qk.js} +1 -1
  14. package/client/dist/assets/{MangaInfoPage-Dbe96uTp.js → MangaInfoPage-B8fttN1T.js} +1 -1
  15. package/client/dist/assets/{MangaReadPage-DMH36Bre.js → MangaReadPage-BTAVFeJH.js} +1 -1
  16. package/client/dist/assets/{MangaResetProgressModal-61xx7JY3.js → MangaResetProgressModal-CshoUUBm.js} +1 -1
  17. package/client/dist/assets/{Mature-BcCct3VM.js → Mature-DAgfZt9Q.js} +1 -1
  18. package/client/dist/assets/{MatureConsentModal-CkodsDv3.js → MatureConsentModal-BhpY2wdn.js} +1 -1
  19. package/client/dist/assets/{MediaCard-qj_IAltC.js → MediaCard-Czkyxqgb.js} +1 -1
  20. package/client/dist/assets/{OptionListMenu-BfK_U2JZ.js → OptionListMenu-HllK8Z_u.js} +1 -1
  21. package/client/dist/assets/Player-BVGxVSGv.js +56 -0
  22. package/client/dist/assets/{PlayerProvider-DMiS49-n.js → PlayerProvider-DGtOX3e2.js} +1 -1
  23. package/client/dist/assets/{PlayerSettings-DnDE4FjN.js → PlayerSettings-9iBVbWNR.js} +1 -1
  24. package/client/dist/assets/{QueueOptionsButton-ZPslb1vw.js → QueueOptionsButton-C3ptca9g.js} +1 -1
  25. package/client/dist/assets/{QueueRail-iewQtTf2.js → QueueRail-De3oifUM.js} +1 -1
  26. package/client/dist/assets/{ReadingList-DSn_7RPb.js → ReadingList-Bco6T_Jh.js} +1 -1
  27. package/client/dist/assets/{ResetProgressModal-DkUfWl68.js → ResetProgressModal-Cx1SaMad.js} +1 -1
  28. package/client/dist/assets/Search-B6dgK2Zu.js +1 -0
  29. package/client/dist/assets/Settings-DvOx960h.js +21 -0
  30. package/client/dist/assets/{SkeletonGrid-CDNxWb9m.js → SkeletonGrid-B2s8ytI8.js} +1 -1
  31. package/client/dist/assets/{Trackers-ChCE0FpJ.js → Trackers-Bp-U_jYN.js} +1 -1
  32. package/client/dist/assets/{Tv-DT3m2nZs.css → Tv-CDALArd3.css} +1 -1
  33. package/client/dist/assets/Tv-t2tt4jji.js +4 -0
  34. package/client/dist/assets/{TvInfo-CBDMmwKZ.js → TvInfo-BiUMbdN7.js} +1 -1
  35. package/client/dist/assets/{TvPopup-CbjydYVj.js → TvPopup-DnwmyRRE.js} +1 -1
  36. package/client/dist/assets/{TvSearch-B46QqKRF.js → TvSearch-C9VNflnp.js} +1 -1
  37. package/client/dist/assets/{TvWatchlist-CKClWqAa.js → TvWatchlist-Bt39ymiP.js} +1 -1
  38. package/client/dist/assets/{VirtualKeyboard-CO8IUNmo.js → VirtualKeyboard-BSILqgeU.js} +1 -1
  39. package/client/dist/assets/{WatchAlong-B3amSjXR.js → WatchAlong-GtXJ-2Qq.js} +1 -1
  40. package/client/dist/assets/{WatchAlongPanel-CNXfPJV8.js → WatchAlongPanel-CxkbtjKg.js} +1 -1
  41. package/client/dist/assets/{Watchlist-Dy02-vjm.js → Watchlist-CQ57yp82.js} +1 -1
  42. package/client/dist/assets/index-BYGDqzEf.js +178 -0
  43. package/client/dist/assets/index-TGvIXMUj.css +1 -0
  44. package/client/dist/assets/{libraryInvalidation-2b2_7vwd.js → libraryInvalidation-CHW51Kbi.js} +1 -1
  45. package/client/dist/assets/playbackCompletion-DrDOXJXe.js +1 -0
  46. package/client/dist/assets/{useAnimeInfoData-CdP9RtUB.js → useAnimeInfoData-CZY3Ui-u.js} +1 -1
  47. package/client/dist/assets/{useMangaLibrary-BANnF0ot.js → useMangaLibrary-x8zL6mOh.js} +1 -1
  48. package/client/dist/assets/{useMangaPopup-BdNC1rr_.js → useMangaPopup-DdrgbIw-.js} +1 -1
  49. package/client/dist/assets/{useProviders-B0XQ7aY4.js → useProviders-Dk2T31ho.js} +1 -1
  50. package/client/dist/assets/{useTv-DM0uMYJ8.js → useTv-CDh-n25T.js} +1 -1
  51. package/client/dist/assets/{useTvLibrary-aGEImTh1.js → useTvLibrary-Dec7yfKF.js} +1 -1
  52. package/client/dist/assets/useWatchAlongPlayer-D1o2zDEn.css +1 -0
  53. package/client/dist/assets/useWatchAlongPlayer-DpUPA4jD.js +10 -0
  54. package/client/dist/index.html +2 -2
  55. package/package.json +2 -2
  56. package/server/dist/server.js +136 -136
  57. package/server/package.json +1 -1
  58. package/client/dist/assets/AnimeInfoPage-DEHp6dbx.js +0 -2
  59. package/client/dist/assets/Player-CbaQmCP0.js +0 -56
  60. package/client/dist/assets/Search-DleGk52z.js +0 -1
  61. package/client/dist/assets/Settings-BL3wetIt.js +0 -21
  62. package/client/dist/assets/Tv-CnpSDbBA.js +0 -4
  63. package/client/dist/assets/index-D1FwY1a_.js +0 -178
  64. package/client/dist/assets/index-RwPVmyxh.css +0 -1
  65. package/client/dist/assets/playbackCompletion-OZmyMjQt.js +0 -1
  66. package/client/dist/assets/useWatchAlongPlayer-BkMVbNsw.js +0 -10
  67. package/client/dist/assets/useWatchAlongPlayer-CkSxIqXL.css +0 -1
@@ -1 +1 @@
1
- import{d as B,A as z,h as P,q as x,g as q,u as e,L as Oe,T as Q,S as oe,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 Ve,t as nt,d as Fe,s as rt,f as Ne,B as ze,e as ot,g as st,m as Ce,p as ne,h as re,i as lt,j as it,k as ct,l as Ie,M as dt,T as ut,n as ht,o as pt,r as Me,v as mt,w as gt,x as vt,y as _t,z as bt,A as yt,C as ft,D as Tt,E as Nt,F as wt}from"./index-D1FwY1a_.js";import{b as St,u as kt,a as Ct}from"./vendor-query-BBT5_sHx.js";import{M as ge,P as It}from"./MediaCard-qj_IAltC.js";import{A as ce}from"./AnimeCard-NynqB4iz.js";import{S as je,A as Ge}from"./SkeletonGrid-CDNxWb9m.js";import{I as E}from"./vendor-icons-DrybRNxP.js";import{u as Rt}from"./vendor-ui-3qrARCPr.js";import{E as Re}from"./ErrorMessage-DAxegITP.js";import{R as Ue}from"./ResetProgressModal-DkUfWl68.js";import{Q as At}from"./QueueRail-iewQtTf2.js";import{u as qe,M as Qe}from"./useMangaPopup-BdNC1rr_.js";import{M as Lt}from"./MangaResetProgressModal-61xx7JY3.js";import{u as Ye,m as Se,i as He,a as Xe,b as $t}from"./useMangaLibrary-BANnF0ot.js";import{u as Mt}from"./useProviders-B0XQ7aY4.js";import{u as Ke,a as Be,T as Bt}from"./useTv-DM0uMYJ8.js";import{T as Pt}from"./TvPopup-CbjydYVj.js";import{u as xt,a as Et,b as Dt}from"./useTvLibrary-aGEImTh1.js";import{A as Wt}from"./AsmrResetProgressModal-s1eRMiAW.js";import{u as Ot,a as Vt,A as Ft,b as zt,c as jt}from"./AsmrPopup-BRzUy94h.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-CkodsDv3.js";import"./useAnimeInfoData-CdP9RtUB.js";import"./QueueOptionsButton-ZPslb1vw.js";import"./playbackCompletion-OZmyMjQt.js";import"./usePopup-DS9jMzp6.js";import"./libraryInvalidation-2b2_7vwd.js";const Gt="_sectionWrapper_10ckl_9",Ut="_sectionTitleNoMargin_10ckl_13",qt="_carousel_10ckl_189",M={"section-header":"_section-header_10ckl_1",sectionWrapper:Gt,sectionTitleNoMargin:Ut,"title-wrapper":"_title-wrapper_10ckl_17","header-controls":"_header-controls_10ckl_24","header-select":"_header-select_10ckl_31","collapse-button":"_collapse-button_10ckl_80","title-link":"_title-link_10ckl_100","continue-watching":"_continue-watching_10ckl_119","nav-arrows":"_nav-arrows_10ckl_141","nav-button":"_nav-button_10ckl_147","carousel-container":"_carousel-container_10ckl_189",carousel:qt,"carousel-inner":"_carousel-inner_10ckl_198","carousel-card":"_carousel-card_10ckl_203"};function ve({align:n="start",containScroll:l="trimSnaps",scrollFraction:h=.8,threshold:t=.6,onReachThreshold:o,slideCount:i=0}={}){const[g,s]=Rt({align:n,containScroll:l,dragFree:!0}),[k,b]=B(!1),[N,p]=B(!1),c=z({scrollFraction:h,threshold:t,onReachThreshold:o}),r=z(!1);P(()=>{c.current={scrollFraction:h,threshold:t,onReachThreshold:o}});const w=x(m=>{b(m.canScrollPrev()),p(m.canScrollNext())},[]);P(()=>{if(!s)return;const m=()=>{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",m),s.on("reInit",m),s.on("scroll",m),s.on("resize",m),()=>{s.off("init",m),s.off("reInit",m),s.off("scroll",m),s.off("resize",m)}},[s,w]),P(()=>{s?.reInit()},[s,i]);const C=x(m=>{const u=m.containerNode().firstElementChild;if(!u)return 1;const f=m.rootNode().getBoundingClientRect().width,R=u.getBoundingClientRect().width;return R?Math.max(1,Math.round(f/R)):1},[]),S=x((m,u=!1)=>{if(!s)return;const f=Math.max(1,Math.round(C(s)*c.current.scrollFraction)),R=s.selectedScrollSnap()+(m==="left"?-f:f);s.scrollTo(R,u)},[s,C]),d=x((m=!1)=>{s?.scrollTo(0,m)},[s]);return{emblaRef:g,api:s,canScrollPrev:k,canScrollNext:N,stepBy:S,scrollToStart:d}}const Z=({title:n,eyebrow:l,titleLink:h,loading:t,emptyState:o,carousel:i,layout:g,collapsible:s,defaultExpanded:k=!0,onReachThreshold:b,scrollThreshold:N,isFetchingNextPage:p,resetScrollOnShrink:c,itemCount:r=0,highlight:w,headerActions:C,loadingSkeleton:S,skeletonCount:d=7,children:m})=>{const{lowEndMode:u}=ke(),{emblaRef:f,stepBy:R,scrollToStart:V,canScrollPrev:A,canScrollNext:D}=ve({onReachThreshold:b,threshold:N,slideCount:r}),[L,F]=q.useState(k);q.useEffect(()=>{F(k)},[k]);const j=q.useRef(0);return q.useEffect(()=>{c&&r>0&&L&&(r<=j.current||j.current===0)&&V(),r>0&&(j.current=r)},[r,c,L,V]),!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:()=>F(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:S},U)):q.Children.map(m,(I,U)=>e("div",{className:M["carousel-card"],children:I},q.isValidElement(I)&&I.key!=null?I.key:`slide-${U}`)),p&&S&&e("div",{className:M["carousel-card"],children:S})]})})}):e("div",{className:"grid-container",children:t&&r===0?e(je,{count:6,layout:g}):r>0?m:t?null:e("div",{style:{gridColumn:"1 / -1"},children:o})}))]})},Qt=({title:n,eyebrow:l,animeList:h,continueWatching:t,titleLink:o,onRemove:i,loading:g,emptyState:s,carousel:k,cardConfig:b,layout:N,onReachThreshold:p,scrollThreshold:c,isFetchingNextPage:r,collapsible:w,defaultExpanded:C=!0})=>{const S=N||"vertical";return e(Z,{title:n,eyebrow:l,titleLink:o,loading:g,emptyState:s,carousel:k,layout:S,collapsible:w,defaultExpanded:C,onReachThreshold:p,scrollThreshold:c,isFetchingNextPage:r,resetScrollOnShrink:t,highlight:t,itemCount:h.length,loadingSkeleton:e(Ge,{layout:S}),skeletonCount:7,children:h.map(d=>e(ce,{anime:d,continueWatching:t,onRemove:i,config:b,layout:S},d._id))})},Pe=q.memo(Qt),Yt="_wrapper_j52nn_1",Ht="_arrow_j52nn_6",Xt="_select_j52nn_15",we={wrapper:Yt,arrow:Ht,select:Xt},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})]}),Kt="_sectionWrapper_1dwd0_2",Zt="_sectionTitleNoMargin_1dwd0_6",Jt="_carouselContainer_1dwd0_94",ea="_carousel_1dwd0_94",ta="_carouselInner_1dwd0_105",aa="_carouselItem_1dwd0_110",na="_rankCard_1dwd0_147",ra="_rankPill_1dwd0_151",oa="_rankGold_1dwd0_162",sa="_rankSilver_1dwd0_166",la="_rankBronze_1dwd0_170",ia="_skeletonPoster_1dwd0_181",ca="_skeletonText_1dwd0_182",_={sectionWrapper:Kt,sectionTitleNoMargin:Zt,"section-header":"_section-header_1dwd0_11","title-wrapper":"_title-wrapper_1dwd0_19","header-actions":"_header-actions_1dwd0_39","nav-arrows":"_nav-arrows_1dwd0_45","nav-button":"_nav-button_1dwd0_51",carouselContainer:Jt,carousel:ea,carouselInner:ta,carouselItem:aa,rankCard:na,rankPill:ra,rankGold:oa,rankSilver:sa,rankBronze:la,skeletonPoster:ia,skeletonText:ca},xe="TRENDING_DESC",da="POPULARITY_DESC",ua=10;function ha({title:n,eyebrow:l}){const{lowEndMode:h}=ke(),[t,o]=ie("trending_sort",xe),i=[{value:xe,label:"Trending"},{value:da,label:"All Time"}],{data:g,fetchNextPage:s,hasNextPage:k,isFetchingNextPage:b,isLoading:N,isError:p,error:c}=tt(t,ua),r=Q(()=>g?.pages.flatMap(u=>u)||[],[g]),w=x(()=>{k&&!b&&!N&&s()},[k,b,N,s]),{emblaRef:C,stepBy:S,canScrollPrev:d,canScrollNext:m}=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||m)&&e("div",{className:_["nav-arrows"],children:[d&&e("button",{className:_["nav-button"],type:"button",onClick:u=>{u.preventDefault(),S("left",h)},"aria-label":"Scroll left",children:e(E,{name:"chevron-left"})}),m&&e("button",{className:_["nav-button"],type:"button",onClick:u=>{u.preventDefault(),S("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))})})}):p?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)),b&&e("div",{className:_.carouselItem,style:{minWidth:"150px",display:"flex",alignItems:"center",justifyContent:"center"},children:e("div",{className:_.skeletonPoster})})]})})})]})}const pa=[{value:"TV",label:"TV"},{value:"ONA",label:"ONA"},{value:"OVA",label:"OVA"},{value:"MOVIE",label:"Movie"},{value:"ALL",label:"All"},{value:"ADULT",label:"Mature"}],ma=10;function ga({eyebrow:n}){const{lowEndMode:l}=ke(),[h,t]=ie("latest_releases_format","TV"),{data:o,fetchNextPage:i,hasNextPage:g,isFetchingNextPage:s,isLoading:k,isError:b,error:N}=at(h,ma),p=Q(()=>o?.pages.flatMap(d=>d)||[],[o]),c=x(()=>{g&&!s&&!k&&i()},[g,s,k,i]),{emblaRef:r,stepBy:w,canScrollPrev:C,canScrollNext:S}=ve({onReachThreshold:c,slideCount:p.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:pa,onChange:t}),(C||S)&&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"})}),S&&e("button",{className:_["nav-button"],type:"button",onClick:d=>{d.preventDefault(),w("right",l)},"aria-label":"Scroll right",children:e(E,{name:"chevron-right"})})]})]})]}),k?e("div",{className:_.carouselContainer,children:e("div",{className:_.carousel,children:e("div",{className:_.carouselInner,children:Array.from({length:7}).map((d,m)=>e("div",{className:_.carouselItem,children:[e("div",{className:_.skeletonPoster}),e("div",{className:_.skeletonText})]},m))})})}):b?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:[p.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 va="_scheduleSection_1o82r_1",_a="_sectionTitleRow_1o82r_5",ba="_sectionTitleNoMargin_1o82r_11",ya="_sectionHeader_1o82r_15",fa="_headerActions_1o82r_25",Ta="_daySelectorContainer_1o82r_33",Na="_daySelector_1o82r_33",wa="_daySelectorInner_1o82r_50",Sa="_dayBtn_1o82r_61",ka="_active_1o82r_84",Ca="_dayMonth_1o82r_92",Ia="_dayNum_1o82r_100",Ra="_dayName_1o82r_106",Aa="_navArrows_1o82r_119",La="_navButton_1o82r_125",$a="_carouselContainer_1o82r_168",Ma="_carousel_1o82r_168",Ba="_carouselInner_1o82r_180",Pa="_carouselCard_1o82r_185",$={scheduleSection:va,sectionTitleRow:_a,sectionTitleNoMargin:ba,sectionHeader:ya,headerActions:fa,daySelectorContainer:Ta,daySelector:Na,daySelectorInner:wa,dayBtn:Sa,active:ka,dayMonth:Ca,dayNum:Ia,dayName:Ra,navArrows:Aa,navButton:La,carouselContainer:$a,carousel:Ma,carouselInner:Ba,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}`},xa=async(n,l)=>await nt.data.schedule.query({date:n,format:l}),Ea=({eyebrow:n})=>{const[l,h]=B(()=>de(new Date)),[t,o]=ie("schedule_format","TV"),i=z(null),g=z(!0),{data:s=[],isLoading:k,error:b}=St({queryKey:[Ve.schedule,l,t],queryFn:()=>xa(l,t),staleTime:1e3*60*5}),{emblaRef:N,canScrollPrev:p,canScrollNext:c,stepBy:r,scrollToStart:w}=ve({slideCount:s.length}),C=Q(()=>{const d=[],m=new Date,u=de(m),f=new Date(m);f.setDate(m.getDate()-1);const R=de(f),V=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];for(let A=-6;A<=6;A++){const D=new Date(m);D.setDate(m.getDate()+A),d.push(D)}return d.map(A=>{const D=de(A),j=D===u?"Today":D===R?"Yest":V[A.getDay()],I=A.getDate(),U=new Intl.DateTimeFormat("en-US",{month:"short"}).format(A);return{dateString:D,dayLabel:j,dayNum:I,monthName:U}})},[]);P(()=>{const d=i.current,m=d?.querySelector(`[data-date="${l}"]`);if(!d||!m)return;const u=d.getBoundingClientRect(),f=m.getBoundingClientRect(),R=d.scrollLeft+(f.left-u.left)-(u.width-f.width)/2;d.scrollTo({left:Math.max(0,R),behavior:g.current?"auto":"smooth"}),g.current=!1},[l]),P(()=>{w(!0)},[l,w]);const S=[{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:S,onChange:o}),s.length>0&&(p||c)&&e("div",{className:$.navArrows,children:[p&&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:k?Array.from({length:7}).map((d,m)=>e("div",{className:$.carouselCard,children:e(Ge,{layout:"vertical"})},m)):b?e("div",{style:{width:"100%"},children:e(Re,{message:b instanceof Error?b.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,layout:"vertical"},d._id)},d._id))})})})]})},Da="_bannerContainer_dc323_1",Wa="_hero_dc323_28",Oa="_ambient_dc323_37",Va="_ambientShow_dc323_49",Fa="_scrim_dc323_53",za="_progressLine_dc323_64",ja="_paused_dc323_84",Ga="_dots_dc323_98",Ua="_dot_dc323_98",qa="_dotActive_dc323_121",Qa="_viewport_dc323_132",Ya="_track_dc323_139",Ha="_slide_dc323_145",Xa="_slideInner_dc323_153",Ka="_poster_dc323_163",Za="_posterLandscape_dc323_174",Ja="_info_dc323_198",en="_kicker_dc323_207",tn="_featureLabel_dc323_214",an="_scoreChip_dc323_226",nn="_rise_dc323_244",rn="_active_dc323_248",on="_metaRow_dc323_304",sn="_metaItem_dc323_315",ln="_metaDivider_dc323_321",cn="_title_dc323_328",dn="_genres_dc323_344",un="_genreTag_dc323_352",hn="_summary_dc323_363",pn="_actions_dc323_375",mn="_watchBtn_dc323_383",gn="_detailsBtn_dc323_415",vn="_secondaryRow_dc323_446",_n="_secondaryBtn_dc323_453",bn="_navArrow_dc323_476",yn="_prevArrow_dc323_509",fn="_nextArrow_dc323_513",v={bannerContainer:Da,hero:Wa,ambient:Oa,ambientShow:Va,scrim:Fa,progressLine:za,paused:ja,dots:Ga,dot:Ua,dotActive:qa,viewport:Qa,track:Ya,slide:Ha,slideInner:Xa,poster:Ka,posterLandscape:Za,info:Ja,kicker:en,featureLabel:tn,scoreChip:an,rise:nn,active:rn,metaRow:on,metaItem:sn,metaDivider:ln,title:cn,genres:dn,genreTag:un,summary:hn,actions:pn,watchBtn:mn,detailsBtn:gn,secondaryRow:vn,secondaryBtn:_n,navArrow:bn,prevArrow:yn,nextArrow:fn},Tn=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,g]=B(0),[s,k]=B(!1),[b,N]=B(null),[p,c]=B(0),[r,w]=B({front:"",back:"",flip:!1}),C=z(0),S=z(0),d=z(new Set),m=z(null),u=z(0),f=x(a=>a.bannerSrc,[]),R=x(()=>{g(a=>a+1)},[]),V=x(a=>{m.current!==null&&(window.clearTimeout(m.current),m.current=null),N(null),R();const y=f(n[a]);w(T=>T.flip?{front:y,back:T.back,flip:!1}:{front:T.front,back:y,flip:!0}),o(a)},[R,n,f]),A=x(a=>{if(n.length===0)return;const y=(a%n.length+n.length)%n.length;d.current.has(f(n[y]))?V(y):N(y)},[n,f,V]);P(()=>{let a=!1;return n.forEach(y=>{const T=f(y);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]),P(()=>{if(n.length!==0&&!r.front){const a=f(n[0]);w({front:a,back:"",flip:!1})}},[n,r.front,f]),P(()=>{if(b!==null){if(b<0||b>=n.length){N(null);return}d.current.has(f(n[b]))&&V(b)}},[b,p,n,f,V]),P(()=>{if(b===null)return;m.current!==null&&window.clearTimeout(m.current);const a=b;return m.current=window.setTimeout(()=>{m.current=null,V(a)},2500),()=>{m.current!==null&&(window.clearTimeout(m.current),m.current=null)}},[b,V]);const D=x(a=>{A(a)},[A]),L=x(()=>{A(u.current+1)},[A]),F=x(()=>{A(u.current-1)},[A]),j=z(null);if(P(()=>{const a=j.current;if(!a)return;const y=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():F()}};return a.addEventListener("wheel",y,{passive:!1}),()=>a.removeEventListener("wheel",y)},[n.length,L,F,R]),P(()=>{if(n.length===0||s)return;const a=setTimeout(L,Tn);return()=>clearTimeout(a)},[t,L,n.length,i,s]),P(()=>{const a=y=>{const T=y.target;T&&(T.tagName==="INPUT"||T.tagName==="TEXTAREA"||T.tagName==="SELECT"||T.isContentEditable)||(y.key==="ArrowRight"?(y.preventDefault(),L()):y.key==="ArrowLeft"&&(y.preventDefault(),F()))};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[L,F]),P(()=>{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=>{S.current=a.touches[0].clientX},H=a=>{const T=a.changedTouches[0].clientX-S.current;Math.abs(T)>50&&(R(),T>0?F():L())};return e("div",{className:v.bannerContainer,onMouseEnter:()=>k(!0),onMouseLeave:()=>k(!1),children:e("div",{className:`${v.hero} ${s?v.paused:""}`,onTouchStart:U,onTouchEnd:H,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,y)=>e("button",{role:"tab","aria-selected":y===I,"aria-label":`Go to slide ${y+1}: ${a.title}`,className:`${v.dot} ${y===I?v.dotActive:""}`,onClick:()=>D(y),tabIndex:y===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,y)=>e("div",{className:`${v.slide} ${y===I?v.active:""}`,"aria-hidden":y!==I,children:e("div",{className:v.slideInner,children:[e("img",{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:y===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:y===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:y===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:y===I?0:-1,children:[e(E,{name:"plus",size:14}),e("span",{children:"Watchlist"})]})]})]})]})]})},a.key))})}),n.length>1&&e(oe,{children:[e("button",{className:`${v.navArrow} ${v.prevArrow}`,onClick:()=>{R(),F()},"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})})]})]})})},Nn=({animeList:n})=>{const{titlePreference:l}=Fe(),h=ee(),t=Q(()=>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(g=>!!g),tags:(o.genres??[]).slice(0,3).map(g=>typeof g=="string"?g:g?.name).filter(g=>!!g),synopsis:rt(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})},wn="_emptyState_19tmt_1",Sn="_emptyStateIcon_19tmt_16",kn="_emptyStateTitle_19tmt_23",Cn="_emptyStateText_19tmt_30",he={emptyState:wn,emptyStateIcon:Sn,emptyStateTitle:kn,emptyStateText:Cn},be=({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(ze,{variant:"primary",size:"sm",onClick:t,style:{marginTop:"1rem"},children:h})]}),In="_tabBar_1mv4x_1",Rn="_tabIndicator_1mv4x_24",An="_tabButton_1mv4x_38",Ln="_tabActive_1mv4x_53",pe={tabBar:In,tabIndicator:Rn,tabButton:An,tabActive:Ln};function $n({options:n,value:l,onChange:h,ariaLabel:t},o){const i=z(null),g=z(new Map),s=z(null),[k,b]=B({left:0,width:0}),N=x((p,c)=>{const r=g.current.get(p),w=i.current;if(r&&w){const C=w.getBoundingClientRect(),S=r.getBoundingClientRect();b({left:S.left-C.left+w.scrollLeft,width:S.width}),c&&r.scrollIntoView({block:"nearest",inline:"nearest"})}},[]);return et(()=>{const p=s.current!==null&&s.current!==l;s.current=l,N(l,p)},[l,n.length,N]),P(()=>{if(N(l,!1),typeof ResizeObserver>"u")return;let p=0;const c=i.current;if(!c)return;const r=new ResizeObserver(()=>{cancelAnimationFrame(p),p=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(p),r.disconnect()}},[l,n.length,N]),e("div",{className:pe.tabBar,ref:p=>{i.current=p,typeof o=="function"?o(p):o&&(o.current=p)},"aria-label":t,children:[e("div",{className:pe.tabIndicator,style:{left:k.left,width:k.width}}),n.map(p=>e(ze,{ref:c=>{c&&g.current.set(p.value,c)},variant:"secondary",size:"sm",className:`${pe.tabButton} ${l===p.value?pe.tabActive:""}`,onClick:()=>h(p.value),children:p.label},p.value))]})}const me=q.forwardRef($n),Mn=[{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:g}=Ye(),{popup:s,openPopup:k,scheduleClose:b,cancelClose:N,closePopup:p}=qe(),{data:c,isLoading:r,fetchNextPage:w,hasNextPage:C,isFetchingNextPage:S}=st({provider:"",query:"",sort:h,status:"",type:"",rating:t?"safe,suggestive,erotica,pornographic":"safe",mature:t}),d=Q(()=>c?.pages.flatMap(u=>u.items)??[],[c]),m=x(()=>{C&&!S&&!r&&w()},[C,S,r,w]);return e(oe,{children:[e(Z,{title:n,eyebrow:l,loading:r,carousel:!0,itemCount:d.length,headerActions:o,onReachThreshold:m,isFetchingNextPage:S,loadingSkeleton:e("div",{className:"skeleton",style:{aspectRatio:"3 / 4"}}),skeletonCount:7,children:d.map(u=>{const f=Se(u.provider,u.id);return e(ge,{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:He(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=>k(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():b(),rawThumbnail:!0},`${u.provider}-${u.id}`)})}),s&&e(Qe,{data:s.data,anchorRect:s.rect,bookmarked:g.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:b,onRequestClose:p})]})},Bn=()=>{const{options:n}=Mt(),l=Q(()=>n.some(s=>s.kind==="manga"),[n]),{hasConsent:h}=ot(),[t,o]=ie("manga_discover_tab","latest"),[i,g]=ie("manga_trending_sort","popular");return l?e(oe,{children:[e(me,{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=>g(s.currentTarget.value),"aria-label":"Trending sort",children:Mn.map(s=>e("option",{value:s.value,children:s.label},s.value))})})]}):null},Pn=()=>{const n=ee(),{data:l,isLoading:h}=$t(24),[t,o]=B(null),{popup:i,openPopup:g,scheduleClose:s,cancelClose:k,closePopup:b}=qe(),{toggle:N,bookmarkedIds:p}=Ye(),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(be,{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,S=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(ge,{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:He(r)},linkTo:S,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=>g(d,{provider:r.provider||"",mangaId:r.mangaId||"",title:r.title||"",altTitle:r.altTitle,cover:r.cover||"",contentRating:r.contentRating||void 0,readTarget:S}),onPopupHoverIntent:d=>d?k():s(),rawThumbnail:!0},r.id)})}),e(Lt,{mangaId:t?t.libId:null,title:t?.title,onClose:()=>o(null)}),i&&i.data.provider&&e(Qe,{data:i.data,anchorRect:i.rect,bookmarked:p.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:k,onMouseLeave:s,onRequestClose:b}),e(Bn,{})]})},xn="_emptyState_bpz5x_1",De={emptyState:xn},En=[{value:"latest",label:"Latest Releases"},{value:"trending",label:"Trending"}],Dn=[{value:"trending_week",label:"Trending Now"},{value:"trending_day",label:"Trending Today"},{value:"popular",label:"Popular All Time"},{value:"top_rated",label:"Top Rated"}],Wn=()=>{const n=ee(),{data:l,isLoading:h}=xt(24),t=Et(),o=Dt(),[i,g]=B(null),[s,k]=B(()=>ne.getItem("tv_home_activeTab")||"latest"),[b,N]=B("tv"),[p,c]=B("trending_week"),[r,w]=B("multi"),C=l?.data??[];q.useEffect(()=>{ne.setItem("tv_home_activeTab",s)},[s]);const S=p.startsWith("trending_"),d=p==="trending_day"?"day":"week",m={popular:"popularity.desc",top_rated:"vote_average.desc"},{data:u,isLoading:f}=Ke(r==="multi"?"all":r,d,1,S&&s==="trending"),{data:R,isLoading:V}=Be({type:r,sort_by:m[p]||"popularity.desc",page:1}),A=S?u?.results||[]:R?.results||[],D=S?f:V,{data:L,isLoading:F}=Be({type:b,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=x(a=>e(Bt,{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}`),[]),H=()=>{switch(s){case"latest":return e(Z,{title:"Latest Releases",eyebrow:"Fresh picks",loading:F,carousel:!0,itemCount:j.length,headerActions:e(J,{ariaLabel:"Latest type",value:b,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(oe,{children:[e(J,{ariaLabel:"Trending sort",value:p,onChange:c,options:Dn.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(be,{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 y=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&&y>=T*.8,ae=te?100:T>0&&y>0?y/T*100:0,ye=te?"Watched":T>0?G?`${re(y)} / ${re(T)}`:`${K} · ${re(y)} / ${re(T)}`:K;return e(ge,{item:{id:a.id,title:a.title||"",thumbnail:a.poster||"",typeBadge:G?"Movie":"TV",chapterBadge:K,isAdult:it({adult:a.adult===1})},linkTo:lt(a.mediaType,a.tmdbId??0,G?void 0:W,G?void 0:X),hoverIcon:"play",progress:(T>0||te)&&ae>0?{percent:ae,label:ye}:void 0,showProgress:!0,metaRow:a.year?e("span",{style:{opacity:.75},children:a.year}):void 0,onRemove:()=>g({libId:a.id,title:a.title||""}),renderPopup:(fe,se)=>e(Pt,{item:{id:a.tmdbId??0,title:a.title||"",year:a.year||"",type:a.mediaType||"tv",image:a.poster||""},anchorRect:fe,onMouseEnter:se.onMouseEnter,onMouseLeave:se.onMouseLeave,onRequestClose:se.close})},a.id)})}),e(me,{ariaLabel:"Browse TV",options:En,value:s,onChange:k}),e("div",{children:H()}),e(Ue,{isOpen:!!i,itemName:i?.title,progressKind:"watch",listLabel:"my TV watchlist",onClose:()=>{g(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} · ${re(l)} / ${re(h)}`:n.trackLabel?`Track ${t} · ${n.trackLabel}`:`Track ${t}`}const On=({title:n="Continue Listening",limit:l=24,titleLink:h,showEmptyState:t=!0})=>{const o=ee(),{data:i,isLoading:g}=Ot(l),{toggle:s,bookmarkedIds:k}=Vt(),[b,N]=B(null),p=i?.data??[];return e(oe,{children:[e(Z,{title:n,eyebrow:"Pick up where you left off",titleLink:h??"/listening-list/Continue Listening",loading:g,carousel:!0,collapsible:!0,defaultExpanded:p.length>0,highlight:!0,itemCount:p.length,loadingSkeleton:e("div",{className:"skeleton",style:{aspectRatio:"16 / 9"}}),skeletonCount:7,emptyState:t?e(be,{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:p.map(c=>{const r=c.currentTime??0,w=c.duration??0,C=c.rjCode||c.id;return e(ge,{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:(S,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:S,bookmarked:k.has(zt(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(Wt,{workId:b?b.workId:null,title:b?.title,onClose:()=>N(null)})]})},Vn=()=>e("div",{style:{paddingBottom:"2rem"},children:e(On,{})}),Fn=({items:n})=>{const l=ee(),h=Q(()=>n.slice(0,6).map(t=>{const o=ct(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=>dt[i]??ut[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"})},zn=({mangaList:n})=>{const l=ee(),h=Q(()=>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(g=>!!g),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 jn(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 Gn=({works:n})=>{const l=ee(),h=Q(()=>n.slice(0,6).map((t,o)=>{const i=ht(t),g=`/asmr/${encodeURIComponent(i)}`,s=jn(t);return{key:i||t._id||String(o),bannerSrc:t.thumbnail||"",posterSrc:t.thumbnail||"",posterAlt:t.name,title:t.name,detailTo:g,metaItems:[t.rating?t.rating.toUpperCase():void 0,s?`${s} track${s===1?"":"s"}`:void 0].filter(k=>!!k),tags:[],synopsis:Ie(t.description,160,""),primaryLabel:"Listen Now",primaryIcon:"play",onPrimary:()=>l(g),onDetails:()=>l(g)}}),[n,l]);return e(_e,{slides:h,eyebrow:"ASMR Spotlight",posterAspect:"landscape"})},Un="_seasonGrid_168jc_34",le={"section-header":"_section-header_168jc_1","content-type-nav":"_content-type-nav_168jc_8","title-wrapper":"_title-wrapper_168jc_18","pagination-controls":"_pagination-controls_168jc_24",seasonGrid:Un},qn=[{value:"anime",label:"Anime"},{value:"manga",label:"Manga"},{value:"tv",label:"TV & Movies"},{value:"asmr",label:"ASMR"}],fr=()=>{const n=kt(),l=pt(),[h,t]=q.useState(1),[o,i]=B(()=>ne.getItem("home_activeTab")||"latest"),[g,s]=B(()=>ne.getItem("season_format")||"TV"),k=z(null),{data:b}=Me(h+1,g,o==="season"),{titlePreference:N}=Fe(),{contentType:p,setContentType:c}=mt(),[r,w]=q.useState(null),C=gt(),{data:S=[]}=vt(),d=_t(),m=bt(),u=yt();P(()=>{document.title="Home - dango"},[]);const{data:f,isLoading:R}=ft();P(()=>{ne.setItem("home_activeTab",o)},[o]),P(()=>{ne.setItem("season_format",g),t(1)},[g]),P(()=>{f!==void 0&&f.length===0&&o==="week"&&i("latest")},[f,o]);const{data:V,isLoading:A,fetchNextPage:D,hasNextPage:L,isFetchingNextPage:F}=Tt(),j=x(()=>{L&&!F&&!A&&D()},[L,F,A,D]),{data:I,isLoading:U}=Nt(),{data:H,isLoading:a}=Ke("all","week",1,p==="tv"),{data:y,isLoading:T}=jt(p==="asmr"),{data:W,isLoading:X}=wt(),G=Q(()=>V?.pages||[],[V]),{data:K,isLoading:te}=Me(h,g,o==="season"),ae=14,ye=K&&K.length>=ae&&b&&b.length>0,fe=Ct(l.continueWatching.remove.mutationOptions({onSuccess:async()=>{n.invalidateQueries(l.continueWatching.pathFilter()),await n.invalidateQueries({queryKey:[Ve.continueWatching]}),L&&G.length-1<14&&D()}})),se=x(O=>{const Y=G?.find(Te=>String(Te.id)===String(O));if(Y){const Te=Y[N]||Y.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(ga,{eyebrow:"Fresh episodes"});case"season":return e("section",{style:{marginBottom:"2.5rem"},children:[e("div",{className:le["section-header"],ref:k,children:[e("div",{className:le["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:g,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:le["pagination-controls"],children:e(It,{page:h,canGoNext:ye,onChange:O=>{if(t(O),k.current){const Y=k.current.getBoundingClientRect().top+window.scrollY-120;window.scrollTo({top:Y,behavior:"smooth"})}},isLoading:te})})]})]}),e("div",{className:`grid-container ${le.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(ha,{title:"Trending",eyebrow:"Discover"});case"week":return e(Pe,{title:"This Week",eyebrow:"Aired this week",animeList:f||[],continueWatching:!1,carousel:!0,loading:R});default:return null}};return e("div",{style:{paddingBottom:"2rem"},children:[p==="anime"&&(U&&!I?.length?e(ue,{}):I&&I.length>0&&e(Nn,{animeList:I})),p==="tv"&&(a&&!H?.results?.length?e(ue,{}):H?.results&&H.results.length>0&&e(Fn,{items:H.results})),p==="manga"&&(X&&!W?.length?e(ue,{}):W&&W.length>0&&e(zn,{mangaList:W})),p==="asmr"&&(T&&!y?.length?e(ue,{}):y&&y.length>0&&e(Gn,{works:y})),e("div",{className:le["content-type-nav"],children:e(me,{ariaLabel:"Content type",options:qn,value:p,onChange:c})}),p==="manga"?e(Pn,{}):p==="tv"?e(Wn,{}):p==="asmr"?e(Vn,{}):e(oe,{children:[e(Pe,{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:se,loading:A,onReachThreshold:j,scrollThreshold:.7,isFetchingNextPage:F,emptyState:e(be,{icon:"history",text:"You haven't watched anything yet. Start exploring and watch something first!",actionLabel:"Explore Trending",onAction:()=>i("popular")})}),e(At,{title:"Queue",eyebrow:"Up next",items:S,onRemove:O=>d.mutate({showId:O.showId,episodeNumber:O.episodeNumber}),showClearAll:!0,onClear:()=>m.mutate(),onReorder:O=>u.mutate(O.map(Y=>({id:Y.id,showId:Y.showId,episodeNumber:Y.episodeNumber})))}),e(me,{ariaLabel:"Browse anime",options:Ze.map(O=>({value:O.key,label:O.label})),value:$e,onChange:i}),e("div",{children:Je()}),e(Ea,{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{fr as default};
1
+ import{d as B,A as z,h as P,q as x,g as q,u as e,L as Oe,T as Q,S as oe,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 Ve,t as nt,d as Fe,s as rt,f as Ne,B as ze,e as ot,g as st,m as Ce,p as ne,h as re,i as lt,j as it,k as ct,l as Ie,M as dt,T as ut,n as ht,o as mt,r as Me,v as pt,w as gt,x as vt,y as _t,z as yt,A as bt,C as ft,D as Tt,E as Nt,F as wt}from"./index-BYGDqzEf.js";import{b as St,u as kt,a as Ct}from"./vendor-query-BBT5_sHx.js";import{M as ge,P as It}from"./MediaCard-Czkyxqgb.js";import{A as ce}from"./AnimeCard-DV3CayVB.js";import{S as je,A as Ge}from"./SkeletonGrid-B2s8ytI8.js";import{I as E}from"./vendor-icons-DrybRNxP.js";import{u as Rt}from"./vendor-ui-3qrARCPr.js";import{E as Re}from"./ErrorMessage-DAxegITP.js";import{R as Ue}from"./ResetProgressModal-Cx1SaMad.js";import{Q as At}from"./QueueRail-De3oifUM.js";import{u as qe,M as Qe}from"./useMangaPopup-DdrgbIw-.js";import{M as Lt}from"./MangaResetProgressModal-CshoUUBm.js";import{u as Ye,m as Se,i as He,a as Xe,b as $t}from"./useMangaLibrary-x8zL6mOh.js";import{u as Mt}from"./useProviders-Dk2T31ho.js";import{u as Ke,a as Be,T as Bt}from"./useTv-CDh-n25T.js";import{T as Pt}from"./TvPopup-DnwmyRRE.js";import{u as xt,a as Et,b as Dt}from"./useTvLibrary-Dec7yfKF.js";import{A as Wt}from"./AsmrResetProgressModal-CLjzhb4H.js";import{u as Ot,a as Vt,A as Ft,b as zt,c as jt}from"./AsmrPopup-CfCdTvhx.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-BhpY2wdn.js";import"./useAnimeInfoData-CZY3Ui-u.js";import"./QueueOptionsButton-C3ptca9g.js";import"./playbackCompletion-DrDOXJXe.js";import"./usePopup-DS9jMzp6.js";import"./libraryInvalidation-CHW51Kbi.js";const Gt="_sectionWrapper_10ckl_9",Ut="_sectionTitleNoMargin_10ckl_13",qt="_carousel_10ckl_189",M={"section-header":"_section-header_10ckl_1",sectionWrapper:Gt,sectionTitleNoMargin:Ut,"title-wrapper":"_title-wrapper_10ckl_17","header-controls":"_header-controls_10ckl_24","header-select":"_header-select_10ckl_31","collapse-button":"_collapse-button_10ckl_80","title-link":"_title-link_10ckl_100","continue-watching":"_continue-watching_10ckl_119","nav-arrows":"_nav-arrows_10ckl_141","nav-button":"_nav-button_10ckl_147","carousel-container":"_carousel-container_10ckl_189",carousel:qt,"carousel-inner":"_carousel-inner_10ckl_198","carousel-card":"_carousel-card_10ckl_203"};function ve({align:n="start",containScroll:l="trimSnaps",scrollFraction:h=.8,threshold:t=.6,onReachThreshold:o,slideCount:i=0}={}){const[g,s]=Rt({align:n,containScroll:l,dragFree:!0}),[k,y]=B(!1),[N,m]=B(!1),c=z({scrollFraction:h,threshold:t,onReachThreshold:o}),r=z(!1);P(()=>{c.current={scrollFraction:h,threshold:t,onReachThreshold:o}});const w=x(p=>{y(p.canScrollPrev()),m(p.canScrollNext())},[]);P(()=>{if(!s)return;const p=()=>{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",p),s.on("reInit",p),s.on("scroll",p),s.on("resize",p),()=>{s.off("init",p),s.off("reInit",p),s.off("scroll",p),s.off("resize",p)}},[s,w]),P(()=>{s?.reInit()},[s,i]);const C=x(p=>{const u=p.containerNode().firstElementChild;if(!u)return 1;const f=p.rootNode().getBoundingClientRect().width,R=u.getBoundingClientRect().width;return R?Math.max(1,Math.round(f/R)):1},[]),S=x((p,u=!1)=>{if(!s)return;const f=Math.max(1,Math.round(C(s)*c.current.scrollFraction)),R=s.selectedScrollSnap()+(p==="left"?-f:f);s.scrollTo(R,u)},[s,C]),d=x((p=!1)=>{s?.scrollTo(0,p)},[s]);return{emblaRef:g,api:s,canScrollPrev:k,canScrollNext:N,stepBy:S,scrollToStart:d}}const Z=({title:n,eyebrow:l,titleLink:h,loading:t,emptyState:o,carousel:i,layout:g,collapsible:s,defaultExpanded:k=!0,onReachThreshold:y,scrollThreshold:N,isFetchingNextPage:m,resetScrollOnShrink:c,itemCount:r=0,highlight:w,headerActions:C,loadingSkeleton:S,skeletonCount:d=7,children:p})=>{const{lowEndMode:u}=ke(),{emblaRef:f,stepBy:R,scrollToStart:V,canScrollPrev:A,canScrollNext:D}=ve({onReachThreshold:y,threshold:N,slideCount:r}),[L,F]=q.useState(k);q.useEffect(()=>{F(k)},[k]);const j=q.useRef(0);return q.useEffect(()=>{c&&r>0&&L&&(r<=j.current||j.current===0)&&V(),r>0&&(j.current=r)},[r,c,L,V]),!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:()=>F(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:S},U)):q.Children.map(p,(I,U)=>e("div",{className:M["carousel-card"],children:I},q.isValidElement(I)&&I.key!=null?I.key:`slide-${U}`)),m&&S&&e("div",{className:M["carousel-card"],children:S})]})})}):e("div",{className:"grid-container",children:t&&r===0?e(je,{count:6,layout:g}):r>0?p:t?null:e("div",{style:{gridColumn:"1 / -1"},children:o})}))]})},Qt=({title:n,eyebrow:l,animeList:h,continueWatching:t,titleLink:o,onRemove:i,loading:g,emptyState:s,carousel:k,cardConfig:y,layout:N,onReachThreshold:m,scrollThreshold:c,isFetchingNextPage:r,collapsible:w,defaultExpanded:C=!0})=>{const S=N||"vertical";return e(Z,{title:n,eyebrow:l,titleLink:o,loading:g,emptyState:s,carousel:k,layout:S,collapsible:w,defaultExpanded:C,onReachThreshold:m,scrollThreshold:c,isFetchingNextPage:r,resetScrollOnShrink:t,highlight:t,itemCount:h.length,loadingSkeleton:e(Ge,{layout:S}),skeletonCount:7,children:h.map(d=>e(ce,{anime:d,continueWatching:t,onRemove:i,config:y,layout:S},d._id))})},Pe=q.memo(Qt),Yt="_wrapper_j52nn_1",Ht="_arrow_j52nn_6",Xt="_select_j52nn_15",we={wrapper:Yt,arrow:Ht,select:Xt},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})]}),Kt="_sectionWrapper_1dwd0_2",Zt="_sectionTitleNoMargin_1dwd0_6",Jt="_carouselContainer_1dwd0_94",ea="_carousel_1dwd0_94",ta="_carouselInner_1dwd0_105",aa="_carouselItem_1dwd0_110",na="_rankCard_1dwd0_147",ra="_rankPill_1dwd0_151",oa="_rankGold_1dwd0_162",sa="_rankSilver_1dwd0_166",la="_rankBronze_1dwd0_170",ia="_skeletonPoster_1dwd0_181",ca="_skeletonText_1dwd0_182",_={sectionWrapper:Kt,sectionTitleNoMargin:Zt,"section-header":"_section-header_1dwd0_11","title-wrapper":"_title-wrapper_1dwd0_19","header-actions":"_header-actions_1dwd0_39","nav-arrows":"_nav-arrows_1dwd0_45","nav-button":"_nav-button_1dwd0_51",carouselContainer:Jt,carousel:ea,carouselInner:ta,carouselItem:aa,rankCard:na,rankPill:ra,rankGold:oa,rankSilver:sa,rankBronze:la,skeletonPoster:ia,skeletonText:ca},xe="TRENDING_DESC",da="POPULARITY_DESC",ua=10;function ha({title:n,eyebrow:l}){const{lowEndMode:h}=ke(),[t,o]=ie("trending_sort",xe),i=[{value:xe,label:"Trending"},{value:da,label:"All Time"}],{data:g,fetchNextPage:s,hasNextPage:k,isFetchingNextPage:y,isLoading:N,isError:m,error:c}=tt(t,ua),r=Q(()=>g?.pages.flatMap(u=>u)||[],[g]),w=x(()=>{k&&!y&&!N&&s()},[k,y,N,s]),{emblaRef:C,stepBy:S,canScrollPrev:d,canScrollNext:p}=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||p)&&e("div",{className:_["nav-arrows"],children:[d&&e("button",{className:_["nav-button"],type:"button",onClick:u=>{u.preventDefault(),S("left",h)},"aria-label":"Scroll left",children:e(E,{name:"chevron-left"})}),p&&e("button",{className:_["nav-button"],type:"button",onClick:u=>{u.preventDefault(),S("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 ma=[{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 ga({eyebrow:n}){const{lowEndMode:l}=ke(),[h,t]=ie("latest_releases_format","TV"),{data:o,fetchNextPage:i,hasNextPage:g,isFetchingNextPage:s,isLoading:k,isError:y,error:N}=at(h,pa),m=Q(()=>o?.pages.flatMap(d=>d)||[],[o]),c=x(()=>{g&&!s&&!k&&i()},[g,s,k,i]),{emblaRef:r,stepBy:w,canScrollPrev:C,canScrollNext:S}=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:ma,onChange:t}),(C||S)&&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"})}),S&&e("button",{className:_["nav-button"],type:"button",onClick:d=>{d.preventDefault(),w("right",l)},"aria-label":"Scroll right",children:e(E,{name:"chevron-right"})})]})]})]}),k?e("div",{className:_.carouselContainer,children:e("div",{className:_.carousel,children:e("div",{className:_.carouselInner,children:Array.from({length:7}).map((d,p)=>e("div",{className:_.carouselItem,children:[e("div",{className:_.skeletonPoster}),e("div",{className:_.skeletonText})]},p))})})}):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 va="_scheduleSection_1o82r_1",_a="_sectionTitleRow_1o82r_5",ya="_sectionTitleNoMargin_1o82r_11",ba="_sectionHeader_1o82r_15",fa="_headerActions_1o82r_25",Ta="_daySelectorContainer_1o82r_33",Na="_daySelector_1o82r_33",wa="_daySelectorInner_1o82r_50",Sa="_dayBtn_1o82r_61",ka="_active_1o82r_84",Ca="_dayMonth_1o82r_92",Ia="_dayNum_1o82r_100",Ra="_dayName_1o82r_106",Aa="_navArrows_1o82r_119",La="_navButton_1o82r_125",$a="_carouselContainer_1o82r_168",Ma="_carousel_1o82r_168",Ba="_carouselInner_1o82r_180",Pa="_carouselCard_1o82r_185",$={scheduleSection:va,sectionTitleRow:_a,sectionTitleNoMargin:ya,sectionHeader:ba,headerActions:fa,daySelectorContainer:Ta,daySelector:Na,daySelectorInner:wa,dayBtn:Sa,active:ka,dayMonth:Ca,dayNum:Ia,dayName:Ra,navArrows:Aa,navButton:La,carouselContainer:$a,carousel:Ma,carouselInner:Ba,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}`},xa=async(n,l)=>await nt.data.schedule.query({date:n,format:l}),Ea=({eyebrow:n})=>{const[l,h]=B(()=>de(new Date)),[t,o]=ie("schedule_format","TV"),i=z(null),g=z(!0),{data:s=[],isLoading:k,error:y}=St({queryKey:[Ve.schedule,l,t],queryFn:()=>xa(l,t),staleTime:1e3*60*5}),{emblaRef:N,canScrollPrev:m,canScrollNext:c,stepBy:r,scrollToStart:w}=ve({slideCount:s.length}),C=Q(()=>{const d=[],p=new Date,u=de(p),f=new Date(p);f.setDate(p.getDate()-1);const R=de(f),V=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];for(let A=-6;A<=6;A++){const D=new Date(p);D.setDate(p.getDate()+A),d.push(D)}return d.map(A=>{const D=de(A),j=D===u?"Today":D===R?"Yest":V[A.getDay()],I=A.getDate(),U=new Intl.DateTimeFormat("en-US",{month:"short"}).format(A);return{dateString:D,dayLabel:j,dayNum:I,monthName:U}})},[]);P(()=>{const d=i.current,p=d?.querySelector(`[data-date="${l}"]`);if(!d||!p)return;const u=d.getBoundingClientRect(),f=p.getBoundingClientRect(),R=d.scrollLeft+(f.left-u.left)-(u.width-f.width)/2;d.scrollTo({left:Math.max(0,R),behavior:g.current?"auto":"smooth"}),g.current=!1},[l]),P(()=>{w(!0)},[l,w]);const S=[{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:S,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:k?Array.from({length:7}).map((d,p)=>e("div",{className:$.carouselCard,children:e(Ge,{layout:"vertical"})},p)):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,layout:"vertical"},d._id)},d._id))})})})]})},Da="_bannerContainer_lye2m_1",Wa="_hero_lye2m_28",Oa="_ambient_lye2m_37",Va="_ambientShow_lye2m_49",Fa="_scrim_lye2m_53",za="_progressLine_lye2m_64",ja="_paused_lye2m_84",Ga="_dots_lye2m_98",Ua="_dot_lye2m_98",qa="_dotActive_lye2m_121",Qa="_viewport_lye2m_132",Ya="_track_lye2m_139",Ha="_slide_lye2m_145",Xa="_slideInner_lye2m_153",Ka="_poster_lye2m_163",Za="_posterLandscape_lye2m_174",Ja="_info_lye2m_198",en="_kicker_lye2m_207",tn="_featureLabel_lye2m_214",an="_scoreChip_lye2m_226",nn="_rise_lye2m_244",rn="_active_lye2m_248",on="_metaRow_lye2m_304",sn="_metaItem_lye2m_315",ln="_metaDivider_lye2m_321",cn="_title_lye2m_328",dn="_genres_lye2m_347",un="_genreTag_lye2m_355",hn="_summary_lye2m_366",mn="_actions_lye2m_378",pn="_watchBtn_lye2m_386",gn="_detailsBtn_lye2m_418",vn="_secondaryRow_lye2m_449",_n="_secondaryBtn_lye2m_456",yn="_navArrow_lye2m_479",bn="_prevArrow_lye2m_512",fn="_nextArrow_lye2m_516",v={bannerContainer:Da,hero:Wa,ambient:Oa,ambientShow:Va,scrim:Fa,progressLine:za,paused:ja,dots:Ga,dot:Ua,dotActive:qa,viewport:Qa,track:Ya,slide:Ha,slideInner:Xa,poster:Ka,posterLandscape:Za,info:Ja,kicker:en,featureLabel:tn,scoreChip:an,rise:nn,active:rn,metaRow:on,metaItem:sn,metaDivider:ln,title:cn,genres:dn,genreTag:un,summary:hn,actions:mn,watchBtn:pn,detailsBtn:gn,secondaryRow:vn,secondaryBtn:_n,navArrow:yn,prevArrow:bn,nextArrow:fn},Tn=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,g]=B(0),[s,k]=B(!1),[y,N]=B(null),[m,c]=B(0),[r,w]=B({front:"",back:"",flip:!1}),C=z(0),S=z(0),d=z(new Set),p=z(null),u=z(0),f=x(a=>a.bannerSrc,[]),R=x(()=>{g(a=>a+1)},[]),V=x(a=>{p.current!==null&&(window.clearTimeout(p.current),p.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=x(a=>{if(n.length===0)return;const b=(a%n.length+n.length)%n.length;d.current.has(f(n[b]))?V(b):N(b)},[n,f,V]);P(()=>{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]),P(()=>{if(n.length!==0&&!r.front){const a=f(n[0]);w({front:a,back:"",flip:!1})}},[n,r.front,f]),P(()=>{if(y!==null){if(y<0||y>=n.length){N(null);return}d.current.has(f(n[y]))&&V(y)}},[y,m,n,f,V]),P(()=>{if(y===null)return;p.current!==null&&window.clearTimeout(p.current);const a=y;return p.current=window.setTimeout(()=>{p.current=null,V(a)},2500),()=>{p.current!==null&&(window.clearTimeout(p.current),p.current=null)}},[y,V]);const D=x(a=>{A(a)},[A]),L=x(()=>{A(u.current+1)},[A]),F=x(()=>{A(u.current-1)},[A]),j=z(null);if(P(()=>{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():F()}};return a.addEventListener("wheel",b,{passive:!1}),()=>a.removeEventListener("wheel",b)},[n.length,L,F,R]),P(()=>{if(n.length===0||s)return;const a=setTimeout(L,Tn);return()=>clearTimeout(a)},[t,L,n.length,i,s]),P(()=>{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(),F()))};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[L,F]),P(()=>{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=>{S.current=a.touches[0].clientX},H=a=>{const T=a.changedTouches[0].clientX-S.current;Math.abs(T)>50&&(R(),T>0?F():L())};return e("div",{className:v.bannerContainer,onMouseEnter:()=>k(!0),onMouseLeave:()=>k(!1),children:e("div",{className:`${v.hero} ${s?v.paused:""}`,onTouchStart:U,onTouchEnd:H,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("img",{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(oe,{children:[e("button",{className:`${v.navArrow} ${v.prevArrow}`,onClick:()=>{R(),F()},"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})})]})]})})},Nn=({animeList:n})=>{const{titlePreference:l}=Fe(),h=ee(),t=Q(()=>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(g=>!!g),tags:(o.genres??[]).slice(0,3).map(g=>typeof g=="string"?g:g?.name).filter(g=>!!g),synopsis:rt(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})},wn="_emptyState_19tmt_1",Sn="_emptyStateIcon_19tmt_16",kn="_emptyStateTitle_19tmt_23",Cn="_emptyStateText_19tmt_30",he={emptyState:wn,emptyStateIcon:Sn,emptyStateTitle:kn,emptyStateText:Cn},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(ze,{variant:"primary",size:"sm",onClick:t,style:{marginTop:"1rem"},children:h})]}),In="_tabBar_1mv4x_1",Rn="_tabIndicator_1mv4x_24",An="_tabButton_1mv4x_38",Ln="_tabActive_1mv4x_53",me={tabBar:In,tabIndicator:Rn,tabButton:An,tabActive:Ln};function $n({options:n,value:l,onChange:h,ariaLabel:t},o){const i=z(null),g=z(new Map),s=z(null),[k,y]=B({left:0,width:0}),N=x((m,c)=>{const r=g.current.get(m),w=i.current;if(r&&w){const C=w.getBoundingClientRect(),S=r.getBoundingClientRect();y({left:S.left-C.left+w.scrollLeft,width:S.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]),P(()=>{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:k.left,width:k.width}}),n.map(m=>e(ze,{ref:c=>{c&&g.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 pe=q.forwardRef($n),Mn=[{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:g}=Ye(),{popup:s,openPopup:k,scheduleClose:y,cancelClose:N,closePopup:m}=qe(),{data:c,isLoading:r,fetchNextPage:w,hasNextPage:C,isFetchingNextPage:S}=st({provider:"",query:"",sort:h,status:"",type:"",rating:t?"safe,suggestive,erotica,pornographic":"safe",mature:t}),d=Q(()=>c?.pages.flatMap(u=>u.items)??[],[c]),p=x(()=>{C&&!S&&!r&&w()},[C,S,r,w]);return e(oe,{children:[e(Z,{title:n,eyebrow:l,loading:r,carousel:!0,itemCount:d.length,headerActions:o,onReachThreshold:p,isFetchingNextPage:S,loadingSkeleton:e("div",{className:"skeleton",style:{aspectRatio:"3 / 4"}}),skeletonCount:7,children:d.map(u=>{const f=Se(u.provider,u.id);return e(ge,{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:He(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=>k(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(Qe,{data:s.data,anchorRect:s.rect,bookmarked:g.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})]})},Bn=()=>{const{options:n}=Mt(),l=Q(()=>n.some(s=>s.kind==="manga"),[n]),{hasConsent:h}=ot(),[t,o]=ie("manga_discover_tab","latest"),[i,g]=ie("manga_trending_sort","popular");return l?e(oe,{children:[e(pe,{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=>g(s.currentTarget.value),"aria-label":"Trending sort",children:Mn.map(s=>e("option",{value:s.value,children:s.label},s.value))})})]}):null},Pn=()=>{const n=ee(),{data:l,isLoading:h}=$t(24),[t,o]=B(null),{popup:i,openPopup:g,scheduleClose:s,cancelClose:k,closePopup:y}=qe(),{toggle:N,bookmarkedIds:m}=Ye(),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,S=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(ge,{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:He(r)},linkTo:S,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=>g(d,{provider:r.provider||"",mangaId:r.mangaId||"",title:r.title||"",altTitle:r.altTitle,cover:r.cover||"",contentRating:r.contentRating||void 0,readTarget:S}),onPopupHoverIntent:d=>d?k():s(),rawThumbnail:!0},r.id)})}),e(Lt,{mangaId:t?t.libId:null,title:t?.title,onClose:()=>o(null)}),i&&i.data.provider&&e(Qe,{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:k,onMouseLeave:s,onRequestClose:y}),e(Bn,{})]})},xn="_emptyState_bpz5x_1",De={emptyState:xn},En=[{value:"latest",label:"Latest Releases"},{value:"trending",label:"Trending"}],Dn=[{value:"trending_week",label:"Trending Now"},{value:"trending_day",label:"Trending Today"},{value:"popular",label:"Popular All Time"},{value:"top_rated",label:"Top Rated"}],Wn=()=>{const n=ee(),{data:l,isLoading:h}=xt(24),t=Et(),o=Dt(),[i,g]=B(null),[s,k]=B(()=>ne.getItem("tv_home_activeTab")||"latest"),[y,N]=B("tv"),[m,c]=B("trending_week"),[r,w]=B("multi"),C=l?.data??[];q.useEffect(()=>{ne.setItem("tv_home_activeTab",s)},[s]);const S=m.startsWith("trending_"),d=m==="trending_day"?"day":"week",p={popular:"popularity.desc",top_rated:"vote_average.desc"},{data:u,isLoading:f}=Ke(r==="multi"?"all":r,d,1,S&&s==="trending"),{data:R,isLoading:V}=Be({type:r,sort_by:p[m]||"popularity.desc",page:1}),A=S?u?.results||[]:R?.results||[],D=S?f:V,{data:L,isLoading:F}=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=x(a=>e(Bt,{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}`),[]),H=()=>{switch(s){case"latest":return e(Z,{title:"Latest Releases",eyebrow:"Fresh picks",loading:F,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(oe,{children:[e(J,{ariaLabel:"Trending sort",value:m,onChange:c,options:Dn.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?`${re(b)} / ${re(T)}`:`${K} · ${re(b)} / ${re(T)}`:K;return e(ge,{item:{id:a.id,title:a.title||"",thumbnail:a.poster||"",typeBadge:G?"Movie":"TV",chapterBadge:K,isAdult:it({adult:a.adult===1})},linkTo:lt(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:()=>g({libId:a.id,title:a.title||""}),renderPopup:(fe,se)=>e(Pt,{item:{id:a.tmdbId??0,title:a.title||"",year:a.year||"",type:a.mediaType||"tv",image:a.poster||""},anchorRect:fe,onMouseEnter:se.onMouseEnter,onMouseLeave:se.onMouseLeave,onRequestClose:se.close})},a.id)})}),e(pe,{ariaLabel:"Browse TV",options:En,value:s,onChange:k}),e("div",{children:H()}),e(Ue,{isOpen:!!i,itemName:i?.title,progressKind:"watch",listLabel:"my TV watchlist",onClose:()=>{g(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} · ${re(l)} / ${re(h)}`:n.trackLabel?`Track ${t} · ${n.trackLabel}`:`Track ${t}`}const On=({title:n="Continue Listening",limit:l=24,titleLink:h,showEmptyState:t=!0})=>{const o=ee(),{data:i,isLoading:g}=Ot(l),{toggle:s,bookmarkedIds:k}=Vt(),[y,N]=B(null),m=i?.data??[];return e(oe,{children:[e(Z,{title:n,eyebrow:"Pick up where you left off",titleLink:h??"/listening-list/Continue Listening",loading:g,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(ge,{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:(S,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:S,bookmarked:k.has(zt(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(Wt,{workId:y?y.workId:null,title:y?.title,onClose:()=>N(null)})]})},Vn=()=>e("div",{style:{paddingBottom:"2rem"},children:e(On,{})}),Fn=({items:n})=>{const l=ee(),h=Q(()=>n.slice(0,6).map(t=>{const o=ct(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=>dt[i]??ut[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"})},zn=({mangaList:n})=>{const l=ee(),h=Q(()=>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(g=>!!g),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 jn(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 Gn=({works:n})=>{const l=ee(),h=Q(()=>n.slice(0,6).map((t,o)=>{const i=ht(t),g=`/asmr/${encodeURIComponent(i)}`,s=jn(t);return{key:i||t._id||String(o),bannerSrc:t.thumbnail||"",posterSrc:t.thumbnail||"",posterAlt:t.name,title:t.name,detailTo:g,metaItems:[t.rating?t.rating.toUpperCase():void 0,s?`${s} track${s===1?"":"s"}`:void 0].filter(k=>!!k),tags:[],synopsis:Ie(t.description,160,""),primaryLabel:"Listen Now",primaryIcon:"play",onPrimary:()=>l(g),onDetails:()=>l(g)}}),[n,l]);return e(_e,{slides:h,eyebrow:"ASMR Spotlight",posterAspect:"landscape"})},Un="_seasonGrid_168jc_34",le={"section-header":"_section-header_168jc_1","content-type-nav":"_content-type-nav_168jc_8","title-wrapper":"_title-wrapper_168jc_18","pagination-controls":"_pagination-controls_168jc_24",seasonGrid:Un},qn=[{value:"anime",label:"Anime"},{value:"manga",label:"Manga"},{value:"tv",label:"TV & Movies"},{value:"asmr",label:"ASMR"}],fr=()=>{const n=kt(),l=mt(),[h,t]=q.useState(1),[o,i]=B(()=>ne.getItem("home_activeTab")||"latest"),[g,s]=B(()=>ne.getItem("season_format")||"TV"),k=z(null),{data:y}=Me(h+1,g,o==="season"),{titlePreference:N}=Fe(),{contentType:m,setContentType:c}=pt(),[r,w]=q.useState(null),C=gt(),{data:S=[]}=vt(),d=_t(),p=yt(),u=bt();P(()=>{document.title="Home - dango"},[]);const{data:f,isLoading:R}=ft();P(()=>{ne.setItem("home_activeTab",o)},[o]),P(()=>{ne.setItem("season_format",g),t(1)},[g]),P(()=>{f!==void 0&&f.length===0&&o==="week"&&i("latest")},[f,o]);const{data:V,isLoading:A,fetchNextPage:D,hasNextPage:L,isFetchingNextPage:F}=Tt(),j=x(()=>{L&&!F&&!A&&D()},[L,F,A,D]),{data:I,isLoading:U}=Nt(),{data:H,isLoading:a}=Ke("all","week",1,m==="tv"),{data:b,isLoading:T}=jt(m==="asmr"),{data:W,isLoading:X}=wt(),G=Q(()=>V?.pages||[],[V]),{data:K,isLoading:te}=Me(h,g,o==="season"),ae=14,be=K&&K.length>=ae&&y&&y.length>0,fe=Ct(l.continueWatching.remove.mutationOptions({onSuccess:async()=>{n.invalidateQueries(l.continueWatching.pathFilter()),await n.invalidateQueries({queryKey:[Ve.continueWatching]}),L&&G.length-1<14&&D()}})),se=x(O=>{const Y=G?.find(Te=>String(Te.id)===String(O));if(Y){const Te=Y[N]||Y.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(ga,{eyebrow:"Fresh episodes"});case"season":return e("section",{style:{marginBottom:"2.5rem"},children:[e("div",{className:le["section-header"],ref:k,children:[e("div",{className:le["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:g,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:le["pagination-controls"],children:e(It,{page:h,canGoNext:be,onChange:O=>{if(t(O),k.current){const Y=k.current.getBoundingClientRect().top+window.scrollY-120;window.scrollTo({top:Y,behavior:"smooth"})}},isLoading:te})})]})]}),e("div",{className:`grid-container ${le.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(ha,{title:"Trending",eyebrow:"Discover"});case"week":return e(Pe,{title:"This Week",eyebrow:"Aired this week",animeList:f||[],continueWatching:!1,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(Nn,{animeList:I})),m==="tv"&&(a&&!H?.results?.length?e(ue,{}):H?.results&&H.results.length>0&&e(Fn,{items:H.results})),m==="manga"&&(X&&!W?.length?e(ue,{}):W&&W.length>0&&e(zn,{mangaList:W})),m==="asmr"&&(T&&!b?.length?e(ue,{}):b&&b.length>0&&e(Gn,{works:b})),e("div",{className:le["content-type-nav"],children:e(pe,{ariaLabel:"Content type",options:qn,value:m,onChange:c})}),m==="manga"?e(Pn,{}):m==="tv"?e(Wn,{}):m==="asmr"?e(Vn,{}):e(oe,{children:[e(Pe,{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:se,loading:A,onReachThreshold:j,scrollThreshold:.7,isFetchingNextPage:F,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(At,{title:"Queue",eyebrow:"Up next",items:S,onRemove:O=>d.mutate({showId:O.showId,episodeNumber:O.episodeNumber}),showClearAll:!0,onClear:()=>p.mutate(),onReorder:O=>u.mutate(O.map(Y=>({id:Y.id,showId:Y.showId,episodeNumber:Y.episodeNumber})))}),e(pe,{ariaLabel:"Browse anime",options:Ze.map(O=>({value:O.key,label:O.label})),value:$e,onChange:i}),e("div",{children:Je()}),e(Ea,{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{fr as default};
@@ -1 +1 @@
1
- import{d as M,h as U,T as d,u as e,L as T}from"./vendor-core-DfaOB3Rn.js";import{b as $,u as z,a as G}from"./vendor-query-BBT5_sHx.js";import{q as m,t as u,ap as j,e as J,d as X,J as f,f as P}from"./index-D1FwY1a_.js";import{I as c}from"./vendor-icons-DrybRNxP.js";const Z="_header_45wm0_1",ee="_fadeIn_45wm0_1",ae="_personaBadge_45wm0_9",te="_personaInfo_45wm0_32",se="_personaLabel_45wm0_37",ne="_personaValue_45wm0_46",re="_statsGrid_45wm0_52",oe="_slideUpIn_45wm0_1",ce="_statCard_45wm0_62",le="_statIcon_45wm0_71",ie="_statInfo_45wm0_82",de="_statValue_45wm0_87",me="_statLabel_45wm0_96",he="_wideSection_45wm0_104",_e="_sectionHeader_45wm0_113",pe="_yearSelect_45wm0_128",ue="_heatmapLayout_45wm0_157",ge="_dayLabels_45wm0_164",we="_heatmapWrapper_45wm0_176",Ne="_heatmapMonthLabels_45wm0_182",ve="_heatmapGrid_45wm0_193",ye="_heatBox_45wm0_201",fe="_hiddenBox_45wm0_210",be="_level0_45wm0_221",Ce="_level1_45wm0_224",Se="_level2_45wm0_228",ke="_level3_45wm0_232",Be="_level4_45wm0_236",Le="_heatmapFooter_45wm0_241",Ie="_heatLegend_45wm0_248",De="_chartsContainer_45wm0_258",xe="_chartWrapper_45wm0_268",Re="_hourlyChart_45wm0_285",Me="_hourlyBarContainer_45wm0_293",Te="_hourlyBar_45wm0_293",$e="_hourlyLabel_45wm0_319",Ge="_chartSubtext_45wm0_326",Pe="_popScale_45wm0_339",We="_popTrack_45wm0_343",Oe="_popThumb_45wm0_351",Fe="_popLabels_45wm0_363",qe="_popDescription_45wm0_373",Ae="_seasonalChart_45wm0_386",Ve="_seasonalBarContainer_45wm0_394",He="_seasonalBar_45wm0_394",Ye="_seasonalLabel_45wm0_416",Ee="_genreList_45wm0_424",Ke="_genreRow_45wm0_431",Qe="_genreInfo_45wm0_437",Ue="_genreName_45wm0_444",ze="_genreCount_45wm0_451",je="_genreBarBg_45wm0_458",Je="_genreBar_45wm0_458",Xe="_warningSection_45wm0_471",Ze="_warningHeader_45wm0_477",ea="_droppedGrid_45wm0_493",aa="_droppedCard_45wm0_498",ta="_droppedName_45wm0_507",sa="_droppedDate_45wm0_514",na="_genreGrid_45wm0_561",ra="_genreCard_45wm0_579",oa="_rankBadge_45wm0_585",ca="_rankNumber_45wm0_598",la="_genreTitle_45wm0_604",ia="_genreStats_45wm0_612",da="_posterRow_45wm0_620",ma="_miniPoster_45wm0_627",ha="_genreCardSkeleton_45wm0_641",_a="_pulse_45wm0_1",pa="_skeletonRank_45wm0_647",ua="_skeletonTitle_45wm0_661",ga="_skeletonStats_45wm0_674",wa="_skeletonPosters_45wm0_686",Na="_recSection_45wm0_717",va="_recHeader_45wm0_721",ya="_recSubtext_45wm0_736",fa="_recControls_45wm0_742",ba="_recControlBtn_45wm0_748",Ca="_recPosterButton_45wm0_776",Sa="_recAddBtn_45wm0_777",ka="_recGrid_45wm0_787",Ba="_recEmpty_45wm0_793",La="_recCard_45wm0_801",Ia="_recCover_45wm0_819",Da="_recInfo_45wm0_827",xa="_recTitle_45wm0_834",Ra="_recMatch_45wm0_845",Ma="_recMeta_45wm0_851",Ta="_recWhy_45wm0_856",$a="_recNote_45wm0_865",Ga="_loading_45wm0_900",Pa="_error_45wm0_906",a={header:Z,fadeIn:ee,personaBadge:ae,personaInfo:te,personaLabel:se,personaValue:ne,statsGrid:re,slideUpIn:oe,statCard:ce,statIcon:le,statInfo:ie,statValue:de,statLabel:me,wideSection:he,sectionHeader:_e,yearSelect:pe,heatmapLayout:ue,dayLabels:ge,heatmapWrapper:we,heatmapMonthLabels:Ne,heatmapGrid:ve,heatBox:ye,hiddenBox:fe,level0:be,level1:Ce,level2:Se,level3:ke,level4:Be,heatmapFooter:Le,heatLegend:Ie,chartsContainer:De,chartWrapper:xe,hourlyChart:Re,hourlyBarContainer:Me,hourlyBar:Te,hourlyLabel:$e,chartSubtext:Ge,popScale:Pe,popTrack:We,popThumb:Oe,popLabels:Fe,popDescription:qe,seasonalChart:Ae,seasonalBarContainer:Ve,seasonalBar:He,seasonalLabel:Ye,genreList:Ee,genreRow:Ke,genreInfo:Qe,genreName:Ue,genreCount:ze,genreBarBg:je,genreBar:Je,warningSection:Xe,warningHeader:Ze,droppedGrid:ea,droppedCard:aa,droppedName:ta,droppedDate:sa,genreGrid:na,genreCard:ra,rankBadge:oa,rankNumber:ca,genreTitle:la,genreStats:ia,posterRow:da,miniPoster:ma,genreCardSkeleton:ha,pulse:_a,skeletonRank:pa,skeletonTitle:ua,skeletonStats:ga,skeletonPosters:wa,recSection:Na,recHeader:va,recSubtext:ya,recControls:fa,recControlBtn:ba,recPosterButton:Ca,recAddBtn:Sa,recGrid:ka,recEmpty:Ba,recCard:La,recCover:Ia,recInfo:Da,recTitle:xa,recMatch:Ra,recMeta:Ma,recWhy:Ta,recNote:$a,loading:Ga,error:Pa},Aa=()=>{const[b,C]=M(0);U(()=>{document.title="Insights - dango"},[]);const{data:n,isLoading:W,isError:O}=$({queryKey:[m.insights],queryFn:async()=>await u.insights.summary.query()}),{data:F,isLoading:S}=j(),{hasConsent:q}=J(),{titlePreference:A}=X(),g=z(),{data:w,isLoading:k,isFetching:B,isError:N}=$({queryKey:[m.insightsRecommendations],queryFn:async()=>await u.insights.recommendations.query(),staleTime:300*1e3,retry:1}),v=G({mutationFn:()=>u.insights.recommendations.query({refresh:!0}),onSuccess:t=>{g.setQueryData([m.insightsRecommendations],t),C(0)},onError:()=>f.error("Could not refresh recommendations")}),L=G({mutationFn:async t=>{await u.watchlist.add.mutate({id:String(t.id),name:t.title,thumbnail:t.cover||"",status:"Plan to Watch",type:t.format})},onSuccess:()=>{g.invalidateQueries({queryKey:[m.watchlist]}),g.invalidateQueries({queryKey:[m.insightsRecommendations]}),f.success("Added to Plan to Watch")},onError:()=>f.error("Could not add to watchlist")}),l=d(()=>[...w?.candidates||[]].sort((t,s)=>s.matchPct-t.matchPct),[w]),y=d(()=>{if(!l.length)return[];const t=b%l.length;return[...l,...l].slice(t,t+Math.min(6,l.length))},[l,b]),I=t=>{const s=t.name||t.englishName||t.nativeName||"";switch(A){case"nativeName":return t.nativeName||s;case"englishName":return t.englishName||s;default:return s}},[h,V]=M(new Date().getFullYear()),H=d(()=>{if(!n?.activityGrid)return[new Date().getFullYear()];const t=new Set(n.activityGrid.map(s=>parseInt(s.day.split("-")[0])));return t.add(new Date().getFullYear()),Array.from(t).sort((s,r)=>r-s)},[n]),D=d(()=>{if(!n?.activityGrid)return[];const t=new Map(n.activityGrid.map(p=>[p.day,p.count])),s=[],r=new Date(h,0,1),i=new Date(h,11,31),_=r.getDay(),o=new Date(r);for(o.setDate(o.getDate()-_);(o<=i||o.getDay()!==0)&&!(o>i&&o.getDay()===0);){const p=o.getFullYear(),K=String(o.getMonth()+1).padStart(2,"0"),Q=String(o.getDate()).padStart(2,"0"),x=`${p}-${K}-${Q}`,R=o<r||o>i;s.push({date:x,count:R?0:t.get(x)||0,month:o.getMonth(),isOutOfRange:R}),o.setDate(o.getDate()+1)}return s},[n,h]),Y=d(()=>n?.seasonality?.length?Math.max(...n.seasonality.map(t=>t.seconds),1):0,[n]),E=d(()=>n?.hourlyDist?.length?Math.max(...n.hourlyDist.map(t=>t.count),1):0,[n]);return W||S?e("div",{className:a.loading,children:"Analyzing your anime lifestyle..."}):O?e("div",{className:a.error,children:"Could not load insights. Data might be syncing."}):n?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:n.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:[n.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:n.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:n.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:[n.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:n.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:n.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:[n.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:[n.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:h,onChange:t=>V(Number(t.currentTarget.value)),children:H.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.heatmapMonthLabels,children:(()=>{const t=[];let s=-1;return D.forEach((r,i)=>{if(r.month!==s&&!r.isOutOfRange){const _=Math.floor(i/7)+1;_>(t.length>0?t[t.length-1].props.style?.gridColumn+2:-1)&&(t.push(e("span",{style:{gridColumn:_,whiteSpace:"nowrap"},children:new Date(0,r.month).toLocaleString("default",{month:"short"})},i)),s=r.month)}}),t})()}),e("div",{className:a.heatmapGrid,children:D.map((t,s)=>{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:""}`,title:t.isOutOfRange?"":`${t.count} episodes on ${t.date}`},s)})}),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:n.hourlyDist?.map((t,s)=>e("div",{className:a.hourlyBarContainer,children:[e("div",{className:a.hourlyBar,style:{height:`${t.count/E*100||2}%`,width:"100%",maxWidth:"12px"},title:`${t.count} watches at ${t.hour}:00`}),e("span",{className:a.hourlyLabel,style:{visibility:s%4===0?"visible":"hidden"},children:t.hour})]},s))}),e("div",{className:a.chartSubtext,children:(()=>{if(!n.hourlyDist?.length)return"Watch more to see your peak hours!";const t=parseInt([...n.hourlyDist].sort((s,r)=>r.count-s.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-n.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:[n.popularityScore,"/10"]}),".",n.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:n.seasonality?.map((t,s)=>e("div",{className:a.seasonalBarContainer,children:[e("div",{className:a.seasonalBar,style:{height:`${t.seconds/Y*100||5}%`,width:"100%",maxWidth:"24px"},title:`${Math.round(t.seconds/3600)}h in ${new Date(0,s).toLocaleString("default",{month:"long"})}`}),e("span",{className:a.seasonalLabel,children:new Date(0,s).toLocaleString("default",{month:"short"})})]},s))})]})]}),e("div",{className:a.genreGrid,children:S?Array.from({length:4}).map((t,s)=>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})]},s)):F?.filter(t=>q||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(s=>e("img",{src:P(s.thumbnail),alt:I(s),className:a.miniPoster,title:I(s),loading:"lazy",decoding:"async"},s.id))})]},t.name))}),(y.length>0||k||N||w)&&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:[l.length>6&&e("button",{className:a.recControlBtn,onClick:()=>C(t=>(t+6)%l.length),children:"Different picks"}),e("button",{className:a.recControlBtn,onClick:()=>v.mutate(),disabled:B||v.isPending,children:[e(c,{name:"sync-alt"}),B||v.isPending?"Refreshing…":"Refresh"]})]})]}),N||!k&&y.length===0?e("p",{className:a.recEmpty,children:N?"Recommendations could not load. Try refreshing.":"No new recommendations yet. Keep watching or try again later."}):e("div",{className:a.recGrid,children:y.map(t=>e("div",{className:a.recCard,children:[t.cover&&e(T,{to:`/anime/${t.id}`,className:a.recPosterButton,"aria-label":`View ${t.title}`,children:e("img",{src:P(t.cover),alt:"",className:a.recCover,loading:"lazy",decoding:"async"})}),e("div",{className:a.recInfo,children:[e(T,{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:()=>L.mutate(t),disabled:L.isPending,children:[e(c,{name:"plus"})," Plan to Watch"]})]})]},t.id))})]}),n.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:n.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))})]})]}):null};export{Aa as default};
1
+ import{d as M,h as U,T as d,u as e,L as T}from"./vendor-core-DfaOB3Rn.js";import{b as $,u as z,a as G}from"./vendor-query-BBT5_sHx.js";import{q as m,t as u,aq as j,e as J,d as X,J as f,f as P}from"./index-BYGDqzEf.js";import{I as c}from"./vendor-icons-DrybRNxP.js";const Z="_header_45wm0_1",ee="_fadeIn_45wm0_1",ae="_personaBadge_45wm0_9",te="_personaInfo_45wm0_32",se="_personaLabel_45wm0_37",ne="_personaValue_45wm0_46",re="_statsGrid_45wm0_52",oe="_slideUpIn_45wm0_1",ce="_statCard_45wm0_62",le="_statIcon_45wm0_71",ie="_statInfo_45wm0_82",de="_statValue_45wm0_87",me="_statLabel_45wm0_96",he="_wideSection_45wm0_104",_e="_sectionHeader_45wm0_113",pe="_yearSelect_45wm0_128",ue="_heatmapLayout_45wm0_157",ge="_dayLabels_45wm0_164",we="_heatmapWrapper_45wm0_176",Ne="_heatmapMonthLabels_45wm0_182",ve="_heatmapGrid_45wm0_193",ye="_heatBox_45wm0_201",fe="_hiddenBox_45wm0_210",be="_level0_45wm0_221",Ce="_level1_45wm0_224",Se="_level2_45wm0_228",ke="_level3_45wm0_232",Be="_level4_45wm0_236",Le="_heatmapFooter_45wm0_241",Ie="_heatLegend_45wm0_248",De="_chartsContainer_45wm0_258",xe="_chartWrapper_45wm0_268",Re="_hourlyChart_45wm0_285",Me="_hourlyBarContainer_45wm0_293",Te="_hourlyBar_45wm0_293",$e="_hourlyLabel_45wm0_319",Ge="_chartSubtext_45wm0_326",Pe="_popScale_45wm0_339",We="_popTrack_45wm0_343",Oe="_popThumb_45wm0_351",qe="_popLabels_45wm0_363",Fe="_popDescription_45wm0_373",Ae="_seasonalChart_45wm0_386",Ve="_seasonalBarContainer_45wm0_394",He="_seasonalBar_45wm0_394",Ye="_seasonalLabel_45wm0_416",Ee="_genreList_45wm0_424",Ke="_genreRow_45wm0_431",Qe="_genreInfo_45wm0_437",Ue="_genreName_45wm0_444",ze="_genreCount_45wm0_451",je="_genreBarBg_45wm0_458",Je="_genreBar_45wm0_458",Xe="_warningSection_45wm0_471",Ze="_warningHeader_45wm0_477",ea="_droppedGrid_45wm0_493",aa="_droppedCard_45wm0_498",ta="_droppedName_45wm0_507",sa="_droppedDate_45wm0_514",na="_genreGrid_45wm0_561",ra="_genreCard_45wm0_579",oa="_rankBadge_45wm0_585",ca="_rankNumber_45wm0_598",la="_genreTitle_45wm0_604",ia="_genreStats_45wm0_612",da="_posterRow_45wm0_620",ma="_miniPoster_45wm0_627",ha="_genreCardSkeleton_45wm0_641",_a="_pulse_45wm0_1",pa="_skeletonRank_45wm0_647",ua="_skeletonTitle_45wm0_661",ga="_skeletonStats_45wm0_674",wa="_skeletonPosters_45wm0_686",Na="_recSection_45wm0_717",va="_recHeader_45wm0_721",ya="_recSubtext_45wm0_736",fa="_recControls_45wm0_742",ba="_recControlBtn_45wm0_748",Ca="_recPosterButton_45wm0_776",Sa="_recAddBtn_45wm0_777",ka="_recGrid_45wm0_787",Ba="_recEmpty_45wm0_793",La="_recCard_45wm0_801",Ia="_recCover_45wm0_819",Da="_recInfo_45wm0_827",xa="_recTitle_45wm0_834",Ra="_recMatch_45wm0_845",Ma="_recMeta_45wm0_851",Ta="_recWhy_45wm0_856",$a="_recNote_45wm0_865",Ga="_loading_45wm0_900",Pa="_error_45wm0_906",a={header:Z,fadeIn:ee,personaBadge:ae,personaInfo:te,personaLabel:se,personaValue:ne,statsGrid:re,slideUpIn:oe,statCard:ce,statIcon:le,statInfo:ie,statValue:de,statLabel:me,wideSection:he,sectionHeader:_e,yearSelect:pe,heatmapLayout:ue,dayLabels:ge,heatmapWrapper:we,heatmapMonthLabels:Ne,heatmapGrid:ve,heatBox:ye,hiddenBox:fe,level0:be,level1:Ce,level2:Se,level3:ke,level4:Be,heatmapFooter:Le,heatLegend:Ie,chartsContainer:De,chartWrapper:xe,hourlyChart:Re,hourlyBarContainer:Me,hourlyBar:Te,hourlyLabel:$e,chartSubtext:Ge,popScale:Pe,popTrack:We,popThumb:Oe,popLabels:qe,popDescription:Fe,seasonalChart:Ae,seasonalBarContainer:Ve,seasonalBar:He,seasonalLabel:Ye,genreList:Ee,genreRow:Ke,genreInfo:Qe,genreName:Ue,genreCount:ze,genreBarBg:je,genreBar:Je,warningSection:Xe,warningHeader:Ze,droppedGrid:ea,droppedCard:aa,droppedName:ta,droppedDate:sa,genreGrid:na,genreCard:ra,rankBadge:oa,rankNumber:ca,genreTitle:la,genreStats:ia,posterRow:da,miniPoster:ma,genreCardSkeleton:ha,pulse:_a,skeletonRank:pa,skeletonTitle:ua,skeletonStats:ga,skeletonPosters:wa,recSection:Na,recHeader:va,recSubtext:ya,recControls:fa,recControlBtn:ba,recPosterButton:Ca,recAddBtn:Sa,recGrid:ka,recEmpty:Ba,recCard:La,recCover:Ia,recInfo:Da,recTitle:xa,recMatch:Ra,recMeta:Ma,recWhy:Ta,recNote:$a,loading:Ga,error:Pa},Aa=()=>{const[b,C]=M(0);U(()=>{document.title="Insights - dango"},[]);const{data:n,isLoading:W,isError:O}=$({queryKey:[m.insights],queryFn:async()=>await u.insights.summary.query()}),{data:q,isLoading:S}=j(),{hasConsent:F}=J(),{titlePreference:A}=X(),g=z(),{data:w,isLoading:k,isFetching:B,isError:N}=$({queryKey:[m.insightsRecommendations],queryFn:async()=>await u.insights.recommendations.query(),staleTime:300*1e3,retry:1}),v=G({mutationFn:()=>u.insights.recommendations.query({refresh:!0}),onSuccess:t=>{g.setQueryData([m.insightsRecommendations],t),C(0)},onError:()=>f.error("Could not refresh recommendations")}),L=G({mutationFn:async t=>{await u.watchlist.add.mutate({id:String(t.id),name:t.title,thumbnail:t.cover||"",status:"Plan to Watch",type:t.format})},onSuccess:()=>{g.invalidateQueries({queryKey:[m.watchlist]}),g.invalidateQueries({queryKey:[m.insightsRecommendations]}),f.success("Added to Plan to Watch")},onError:()=>f.error("Could not add to watchlist")}),l=d(()=>[...w?.candidates||[]].sort((t,s)=>s.matchPct-t.matchPct),[w]),y=d(()=>{if(!l.length)return[];const t=b%l.length;return[...l,...l].slice(t,t+Math.min(6,l.length))},[l,b]),I=t=>{const s=t.name||t.englishName||t.nativeName||"";switch(A){case"nativeName":return t.nativeName||s;case"englishName":return t.englishName||s;default:return s}},[h,V]=M(new Date().getFullYear()),H=d(()=>{if(!n?.activityGrid)return[new Date().getFullYear()];const t=new Set(n.activityGrid.map(s=>parseInt(s.day.split("-")[0])));return t.add(new Date().getFullYear()),Array.from(t).sort((s,r)=>r-s)},[n]),D=d(()=>{if(!n?.activityGrid)return[];const t=new Map(n.activityGrid.map(p=>[p.day,p.count])),s=[],r=new Date(h,0,1),i=new Date(h,11,31),_=r.getDay(),o=new Date(r);for(o.setDate(o.getDate()-_);(o<=i||o.getDay()!==0)&&!(o>i&&o.getDay()===0);){const p=o.getFullYear(),K=String(o.getMonth()+1).padStart(2,"0"),Q=String(o.getDate()).padStart(2,"0"),x=`${p}-${K}-${Q}`,R=o<r||o>i;s.push({date:x,count:R?0:t.get(x)||0,month:o.getMonth(),isOutOfRange:R}),o.setDate(o.getDate()+1)}return s},[n,h]),Y=d(()=>n?.seasonality?.length?Math.max(...n.seasonality.map(t=>t.seconds),1):0,[n]),E=d(()=>n?.hourlyDist?.length?Math.max(...n.hourlyDist.map(t=>t.count),1):0,[n]);return W||S?e("div",{className:a.loading,children:"Analyzing your anime lifestyle..."}):O?e("div",{className:a.error,children:"Could not load insights. Data might be syncing."}):n?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:n.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:[n.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:n.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:n.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:[n.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:n.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:n.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:[n.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:[n.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:h,onChange:t=>V(Number(t.currentTarget.value)),children:H.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.heatmapMonthLabels,children:(()=>{const t=[];let s=-1;return D.forEach((r,i)=>{if(r.month!==s&&!r.isOutOfRange){const _=Math.floor(i/7)+1;_>(t.length>0?t[t.length-1].props.style?.gridColumn+2:-1)&&(t.push(e("span",{style:{gridColumn:_,whiteSpace:"nowrap"},children:new Date(0,r.month).toLocaleString("default",{month:"short"})},i)),s=r.month)}}),t})()}),e("div",{className:a.heatmapGrid,children:D.map((t,s)=>{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:""}`,title:t.isOutOfRange?"":`${t.count} episodes on ${t.date}`},s)})}),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:n.hourlyDist?.map((t,s)=>e("div",{className:a.hourlyBarContainer,children:[e("div",{className:a.hourlyBar,style:{height:`${t.count/E*100||2}%`,width:"100%",maxWidth:"12px"},title:`${t.count} watches at ${t.hour}:00`}),e("span",{className:a.hourlyLabel,style:{visibility:s%4===0?"visible":"hidden"},children:t.hour})]},s))}),e("div",{className:a.chartSubtext,children:(()=>{if(!n.hourlyDist?.length)return"Watch more to see your peak hours!";const t=parseInt([...n.hourlyDist].sort((s,r)=>r.count-s.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-n.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:[n.popularityScore,"/10"]}),".",n.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:n.seasonality?.map((t,s)=>e("div",{className:a.seasonalBarContainer,children:[e("div",{className:a.seasonalBar,style:{height:`${t.seconds/Y*100||5}%`,width:"100%",maxWidth:"24px"},title:`${Math.round(t.seconds/3600)}h in ${new Date(0,s).toLocaleString("default",{month:"long"})}`}),e("span",{className:a.seasonalLabel,children:new Date(0,s).toLocaleString("default",{month:"short"})})]},s))})]})]}),e("div",{className:a.genreGrid,children:S?Array.from({length:4}).map((t,s)=>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})]},s)):q?.filter(t=>F||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(s=>e("img",{src:P(s.thumbnail),alt:I(s),className:a.miniPoster,title:I(s),loading:"lazy",decoding:"async"},s.id))})]},t.name))}),(y.length>0||k||N||w)&&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:[l.length>6&&e("button",{className:a.recControlBtn,onClick:()=>C(t=>(t+6)%l.length),children:"Different picks"}),e("button",{className:a.recControlBtn,onClick:()=>v.mutate(),disabled:B||v.isPending,children:[e(c,{name:"sync-alt"}),B||v.isPending?"Refreshing…":"Refresh"]})]})]}),N||!k&&y.length===0?e("p",{className:a.recEmpty,children:N?"Recommendations could not load. Try refreshing.":"No new recommendations yet. Keep watching or try again later."}):e("div",{className:a.recGrid,children:y.map(t=>e("div",{className:a.recCard,children:[t.cover&&e(T,{to:`/anime/${t.id}`,className:a.recPosterButton,"aria-label":`View ${t.title}`,children:e("img",{src:P(t.cover),alt:"",className:a.recCover,loading:"lazy",decoding:"async"})}),e("div",{className:a.recInfo,children:[e(T,{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:()=>L.mutate(t),disabled:L.isPending,children:[e(c,{name:"plus"})," Plan to Watch"]})]})]},t.id))})]}),n.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:n.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))})]})]}):null};export{Aa 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-DrybRNxP.js";import{P as E}from"./MediaCard-qj_IAltC.js";import{S as de}from"./SkeletonGrid-CDNxWb9m.js";import{E as oe}from"./ErrorMessage-DAxegITP.js";import{K as me,L as he,Q as C,B as q}from"./index-D1FwY1a_.js";import{s as l}from"./LibraryListPage.module-r6k9nyT9.js";function be({headerTitle:H,headerSubtitle:O,filters:Q,filterBy:r,filterBasePath:U,continueFilter:V,statusOptions:$,entries:d,total:o,isLoading:f,error:A,page:I,pageSize:u,onPageChange:M,emptyTitle:W,emptyFilteredText:Y,emptyAllText:j,browseLabel:F,browseTarget:J,removeListLabel:w,listNoun:S,skipConfirmKey:x,onBulkStatus:K,onBulkRemove:B,onStatusChange:L,onRemoveItem:R,renderCard:X,modals:Z}){const z=ie(),[g,T]=N(!1),[t,i]=N(new Set),[n,p]=N(null),[P,b]=N(!1),{data:y}=me(x),_=he();re(()=>{i(new Set),T(!1)},[r]);const m=r===V,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&&(K([...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&&_.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:H}),e("p",{className:l.subtitle,children:O})]}),e("div",{className:l.controls,children:e("div",{className:l.filters,children:Q.map(a=>e("button",{className:`${l.filterBtn} ${r===a?l.active:""}`,onClick:()=>z(`${U}/${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:f})]})]}),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"})]})]}),f?e(de,{}):A?e(oe,{message:A.message}):d.length===0?e("div",{className:l.emptyState,children:[e("h3",{className:l.emptyTitle,children:W}),e("p",{className:l.emptyText,children:r!=="All"?Y:j}),e("button",{className:l.emptyBtn,onClick:()=>z(J),children:[e(h,{name:"search",size:14}),e("span",{children:F})]})]}):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})}),X(a),!m&&!g&&e("div",{className:l.cardActions,children:[e("select",{className:l.statusSelect,value:a.status,onChange:s=>L(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:f,variant:"labeled"})}),Z,e(C,{isOpen:!!n,onClose:D,title:`Remove from ${S}`,children:[e(C.Body,{children:[e("p",{children:n&&n.ids.length===1?`Are you sure you want to remove "${n.title}" from your ${S}?`:`Are you sure you want to remove ${n?.ids.length??0} selected items from your ${S}?`}),e("label",{children:[e("input",{type:"checkbox",checked:P,onChange:a=>b(a.currentTarget.checked)}),"Don't ask again"]})]}),e(C.Actions,{children:[e(q,{variant:"secondary",onClick:D,children:"No"}),e(q,{variant:"danger",onClick:ce,children:"Yes"})]})]})]})}export{be as L};
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-DrybRNxP.js";import{P as E}from"./MediaCard-Czkyxqgb.js";import{S as de}from"./SkeletonGrid-B2s8ytI8.js";import{E as oe}from"./ErrorMessage-DAxegITP.js";import{K as me,L as he,Q as C,B as q}from"./index-BYGDqzEf.js";import{s as l}from"./LibraryListPage.module-r6k9nyT9.js";function be({headerTitle:H,headerSubtitle:O,filters:Q,filterBy:r,filterBasePath:U,continueFilter:V,statusOptions:$,entries:d,total:o,isLoading:f,error:A,page:I,pageSize:u,onPageChange:M,emptyTitle:W,emptyFilteredText:Y,emptyAllText:j,browseLabel:F,browseTarget:J,removeListLabel:w,listNoun:S,skipConfirmKey:x,onBulkStatus:K,onBulkRemove:B,onStatusChange:L,onRemoveItem:R,renderCard:X,modals:Z}){const z=ie(),[g,T]=N(!1),[t,i]=N(new Set),[n,p]=N(null),[P,b]=N(!1),{data:y}=me(x),_=he();re(()=>{i(new Set),T(!1)},[r]);const m=r===V,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&&(K([...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&&_.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:H}),e("p",{className:l.subtitle,children:O})]}),e("div",{className:l.controls,children:e("div",{className:l.filters,children:Q.map(a=>e("button",{className:`${l.filterBtn} ${r===a?l.active:""}`,onClick:()=>z(`${U}/${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:f})]})]}),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"})]})]}),f?e(de,{}):A?e(oe,{message:A.message}):d.length===0?e("div",{className:l.emptyState,children:[e("h3",{className:l.emptyTitle,children:W}),e("p",{className:l.emptyText,children:r!=="All"?Y:j}),e("button",{className:l.emptyBtn,onClick:()=>z(J),children:[e(h,{name:"search",size:14}),e("span",{children:F})]})]}):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})}),X(a),!m&&!g&&e("div",{className:l.cardActions,children:[e("select",{className:l.statusSelect,value:a.status,onChange:s=>L(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:f,variant:"labeled"})}),Z,e(C,{isOpen:!!n,onClose:D,title:`Remove from ${S}`,children:[e(C.Body,{children:[e("p",{children:n&&n.ids.length===1?`Are you sure you want to remove "${n.title}" from your ${S}?`:`Are you sure you want to remove ${n?.ids.length??0} selected items from your ${S}?`}),e("label",{children:[e("input",{type:"checkbox",checked:P,onChange:a=>b(a.currentTarget.checked)}),"Don't ask again"]})]}),e(C.Actions,{children:[e(q,{variant:"secondary",onClick:D,children:"No"}),e(q,{variant:"danger",onClick:ce,children:"Yes"})]})]})]})}export{be as L};
@@ -1 +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-qj_IAltC.js";import{L as N}from"./LibraryListPage-DVFA51uJ.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-BRzUy94h.js";import{u as Z}from"./useAsmrPopup-BBmHrx9v.js";import{A as J}from"./AsmrResetProgressModal-s1eRMiAW.js";import{h}from"./index-D1FwY1a_.js";import"./vendor-icons-DrybRNxP.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-CkodsDv3.js";import"./SkeletonGrid-CDNxWb9m.js";import"./ErrorMessage-DAxegITP.js";import"./LibraryListPage.module-r6k9nyT9.js";import"./vendor-query-BBT5_sHx.js";import"./libraryInvalidation-2b2_7vwd.js";import"./usePopup-DS9jMzp6.js";import"./ResetProgressModal-DkUfWl68.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 Lt(){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{Lt as default};
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-Czkyxqgb.js";import{L as N}from"./LibraryListPage-DhsV2n64.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-CfCdTvhx.js";import{u as Z}from"./useAsmrPopup-BBmHrx9v.js";import{A as J}from"./AsmrResetProgressModal-CLjzhb4H.js";import{h}from"./index-BYGDqzEf.js";import"./vendor-icons-DrybRNxP.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-BhpY2wdn.js";import"./SkeletonGrid-B2s8ytI8.js";import"./ErrorMessage-DAxegITP.js";import"./LibraryListPage.module-r6k9nyT9.js";import"./vendor-query-BBT5_sHx.js";import"./libraryInvalidation-CHW51Kbi.js";import"./usePopup-DS9jMzp6.js";import"./ResetProgressModal-Cx1SaMad.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 Lt(){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{Lt as default};
@@ -1 +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-DrybRNxP.js";import{T as se}from"./ToggleSwitch-CN_ppEc9.js";import{M as oe}from"./MatureConsentModal-CkodsDv3.js";import{E as ie}from"./ErrorMessage-DAxegITP.js";import{M as ce,P as de}from"./MediaCard-qj_IAltC.js";import{u as ue,M as ge}from"./useMangaPopup-BdNC1rr_.js";import{e as pe,af as he,m as me,aa as ve}from"./index-D1FwY1a_.js";import{u as be,m as D,i as fe,a as Se}from"./useMangaLibrary-BANnF0ot.js";import{u as Te}from"./useProviders-B0XQ7aY4.js";import{s as l}from"./Manga.module-depGEacJ.js";import{p as c}from"./page.module-C1MlZzf3.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./usePopup-DS9jMzp6.js";import"./vendor-query-BBT5_sHx.js";import"./libraryInvalidation-2b2_7vwd.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}=Te(),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=he({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}=be(),{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(),ve(),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,...Se(e),thumbnail:me(e.provider,e.cover),typeBadge:e.type||void 0,chapterBadge:e.latestChapter?`Ch. ${e.latestChapter}`:null,isAdult:fe(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
+ 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-DrybRNxP.js";import{T as se}from"./ToggleSwitch-CN_ppEc9.js";import{M as oe}from"./MatureConsentModal-BhpY2wdn.js";import{E as ie}from"./ErrorMessage-DAxegITP.js";import{M as ce,P as de}from"./MediaCard-Czkyxqgb.js";import{u as ue,M as ge}from"./useMangaPopup-DdrgbIw-.js";import{e as pe,af as he,m as me,aa as ve}from"./index-BYGDqzEf.js";import{u as be,m as D,i as fe,a as Se}from"./useMangaLibrary-x8zL6mOh.js";import{u as Te}from"./useProviders-Dk2T31ho.js";import{s as l}from"./Manga.module-depGEacJ.js";import{p as c}from"./page.module-C1MlZzf3.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./usePopup-DS9jMzp6.js";import"./vendor-query-BBT5_sHx.js";import"./libraryInvalidation-CHW51Kbi.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}=Te(),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=he({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}=be(),{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(),ve(),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,...Se(e),thumbnail:me(e.provider,e.cover),typeBadge:e.type||void 0,chapterBadge:e.latestChapter?`Ch. ${e.latestChapter}`:null,isAdult:fe(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-DrybRNxP.js";import{a8 as H,m as D,af as U,B as M,e as J,ag as K,d as V}from"./index-D1FwY1a_.js";import{E as X}from"./ErrorMessage-DAxegITP.js";import{s as r}from"./Manga.module-depGEacJ.js";import{c as Z,d as j,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-BANnF0ot.js";import{p as ce}from"./page.module-C1MlZzf3.js";import"./vendor-query-BBT5_sHx.js";import"./libraryInvalidation-2b2_7vwd.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=j(),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=j(),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]),F=f?u.get(f.id):void 0,W=(p.data?.progress?.length??0)>0,_=f&&(F||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
+ 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-DrybRNxP.js";import{a8 as H,m as D,af as U,B as M,e as J,ag as K,d as V}from"./index-BYGDqzEf.js";import{E as X}from"./ErrorMessage-DAxegITP.js";import{s as r}from"./Manga.module-depGEacJ.js";import{c as Z,d as j,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-x8zL6mOh.js";import{p as ce}from"./page.module-C1MlZzf3.js";import"./vendor-query-BBT5_sHx.js";import"./libraryInvalidation-CHW51Kbi.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=j(),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=j(),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]),F=f?u.get(f.id):void 0,W=(p.data?.progress?.length??0)>0,_=f&&(F||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-DAxegITP.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-D1FwY1a_.js";import{I as S}from"./vendor-icons-DrybRNxP.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-BANnF0ot.js";import{p as Ae}from"./page.module-C1MlZzf3.js";import"./libraryInvalidation-2b2_7vwd.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-DAxegITP.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-BYGDqzEf.js";import{I as S}from"./vendor-icons-DrybRNxP.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-x8zL6mOh.js";import{p as Ae}from"./page.module-C1MlZzf3.js";import"./libraryInvalidation-CHW51Kbi.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-DkUfWl68.js";import{t as n,h as g}from"./useMangaLibrary-BANnF0ot.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};
1
+ import{u as a}from"./vendor-core-DfaOB3Rn.js";import{R as i}from"./ResetProgressModal-Cx1SaMad.js";import{t as n,h as g}from"./useMangaLibrary-x8zL6mOh.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};