@serifpersia/dango 3.3.8 → 3.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/client/dist/assets/{AnimeCard-D4qo4289.js → AnimeCard-URCiiy5W.js} +1 -1
- package/client/dist/assets/{AnimeInfo-BdRRm4So.js → AnimeInfo-e3z3er9t.js} +1 -1
- package/client/dist/assets/{AnimeInfoPage-DeJNAKMR.js → AnimeInfoPage-B7Djlmy_.js} +2 -2
- package/client/dist/assets/{Asmr-D0EGRYsv.js → Asmr-C28TfSvX.js} +1 -1
- package/client/dist/assets/{AsmrResetProgressModal-Gs0GmVaT.js → AsmrResetProgressModal-6Xh71AgR.js} +1 -1
- package/client/dist/assets/{AvSyncCalibrator-D8hqarVB.js → AvSyncCalibrator-BwCtRW0P.js} +1 -1
- package/client/dist/assets/{Home-BnBzjFkW.js → Home-BJdbHYja.js} +1 -1
- package/client/dist/assets/{Insights-i9QgY3nE.js → Insights-CjRy42YE.js} +1 -1
- package/client/dist/assets/{LibraryListPage-D3hTqTRU.js → LibraryListPage-B0qWqhb_.js} +1 -1
- package/client/dist/assets/{ListeningList-BgWsfu40.js → ListeningList-CSqD8j1C.js} +1 -1
- package/client/dist/assets/{Manga-Dn-CYins.js → Manga-Cg2YuObF.js} +1 -1
- package/client/dist/assets/{MangaInfoPage-EmQoK7Bv.js → MangaInfoPage-DcArhEsy.js} +1 -1
- package/client/dist/assets/{MangaReadPage-xJB8K2YU.js → MangaReadPage-YCETZRte.js} +1 -1
- package/client/dist/assets/{MangaResetProgressModal-Dian37PQ.js → MangaResetProgressModal-D_yT3d1v.js} +1 -1
- package/client/dist/assets/{Mature-DQtXKOXc.js → Mature-BGxRWkV5.js} +1 -1
- package/client/dist/assets/{MediaCard-DpKoY-1j.js → MediaCard-CAzoxsRS.js} +1 -1
- package/client/dist/assets/Music-Cgo-yQ7E.js +1 -0
- package/client/dist/assets/{OptionListMenu-Bj9ebsW3.js → OptionListMenu--Owe9Jle.js} +1 -1
- package/client/dist/assets/Player-yRXG2BrP.js +56 -0
- package/client/dist/assets/{PlayerSettings-DYZ272Yp.js → PlayerSettings-DrZLa0CC.js} +1 -1
- package/client/dist/assets/{QueueOptionsButton-lv26-6jp.js → QueueOptionsButton-BVZyPyKf.js} +1 -1
- package/client/dist/assets/{QueueRail-B7DeSFoA.js → QueueRail-B7f1-e6i.js} +1 -1
- package/client/dist/assets/{Radio-qQBYnVfY.js → Radio-BFjxlzuF.js} +1 -1
- package/client/dist/assets/{ReadingList-BT8kUjCB.js → ReadingList-BaIem8H1.js} +1 -1
- package/client/dist/assets/{ResetProgressModal-DWeiO-hs.js → ResetProgressModal-DES5Y-Fl.js} +1 -1
- package/client/dist/assets/{Search-BkvPYN33.js → Search-BOBo0Ogh.js} +1 -1
- package/client/dist/assets/{Settings-CyZEBF6S.js → Settings-DOvNQ0gX.js} +1 -1
- package/client/dist/assets/{SkeletonGrid-B5loz7ii.js → SkeletonGrid-BxfgjP4i.js} +1 -1
- package/client/dist/assets/{Trackers-JK-aXBYC.js → Trackers-DZ9KqOWv.js} +1 -1
- package/client/dist/assets/{Tv-BwXWJxMy.js → Tv-5mATEU4p.js} +1 -1
- package/client/dist/assets/{TvInfo-Dzyq6ucH.js → TvInfo-CF-5C5Fs.js} +1 -1
- package/client/dist/assets/{TvPopup-PlCU30FO.js → TvPopup-Dfqifj3s.js} +1 -1
- package/client/dist/assets/{TvSearch-BYwCf5kO.js → TvSearch-BWDwWnHe.js} +1 -1
- package/client/dist/assets/{TvWatchlist-BiJU6pKT.js → TvWatchlist-D3n5_4MI.js} +1 -1
- package/client/dist/assets/{Watchlist-BOEeGXH9.js → Watchlist-B8MHNsAU.js} +1 -1
- package/client/dist/assets/{hls-C11FOWHj.js → hls-BO_L1WoN.js} +1 -1
- package/client/dist/assets/{index-CtoKRNLc.js → index-D2RkUJIN.js} +2 -2
- package/client/dist/assets/{useAnimeInfoData-kr3WOIWH.js → useAnimeInfoData-BWShDHqE.js} +1 -1
- package/client/dist/assets/{useAsmr-CB9THf0m.js → useAsmr-FyfD9G7b.js} +1 -1
- package/client/dist/assets/{useAsmrPopup-cT_Uu41e.js → useAsmrPopup-D_o9-QlR.js} +1 -1
- package/client/dist/assets/{useMangaLibrary-rM6z3_0E.js → useMangaLibrary-BJU5x8Vz.js} +1 -1
- package/client/dist/assets/{useMangaPopup-PnmSctHu.js → useMangaPopup-TFzkC-tG.js} +1 -1
- package/client/dist/assets/{useProviders-B3VB7A9M.js → useProviders-DDRxa8vl.js} +1 -1
- package/client/dist/assets/{useTv-BTUKMH7Q.js → useTv-Bh6WmNnZ.js} +1 -1
- package/client/dist/assets/{useTvLibrary-C0sX-ilZ.js → useTvLibrary-_Pqm8re1.js} +1 -1
- package/client/dist/index.html +1 -1
- package/package.json +2 -2
- package/server/dist/controllers/music.controller.js +123 -50
- package/server/dist/lib/ytmusic.js +15 -2
- package/server/package.json +1 -1
- package/client/dist/assets/Music-BP43Zqmq.js +0 -1
- package/client/dist/assets/Player-O2Cy2GF1.js +0 -56
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as W,o as ae,A as re,d as o,T as z,q as A,u as t}from"./vendor-core-8R2fFbyN.js";import{I as p}from"./vendor-icons-CDMuNDeL.js";import{P as I,S as ne}from"./SkeletonGrid-
|
|
1
|
+
import{h as W,o as ae,A as re,d as o,T as z,q as A,u as t}from"./vendor-core-8R2fFbyN.js";import{I as p}from"./vendor-icons-CDMuNDeL.js";import{P as I,S as ne}from"./SkeletonGrid-BxfgjP4i.js";import{a as se,T as le}from"./useTv-Bh6WmNnZ.js";import{u as ie,Q as oe,B as x}from"./index-D2RkUJIN.js";import{E as ce}from"./ErrorMessage-z4f4WGgP.js";import{s as r}from"./Search.module-CMEai-B-.js";import"./MediaCard-CAzoxsRS.js";import"./vendor-ui-CUDCvRS_.js";import"./useIsMobile-Dm_b6Ob3.js";import"./TvPopup-Dfqifj3s.js";import"./useTvLibrary-_Pqm8re1.js";import"./vendor-query-BXRECSI6.js";const de=[{value:"multi",label:"All"},{value:"tv",label:"TV Shows"},{value:"movie",label:"Movies"}],me=[{value:"popularity.desc",label:"Popularity"},{value:"vote_average.desc",label:"Top Rated"},{value:"primary_release_date.desc",label:"Newest"},{value:"primary_release_date.asc",label:"Oldest"},{value:"vote_count.desc",label:"Most Voted"}],Y={10759:"Action & Adventure",16:"Animation",35:"Comedy",80:"Crime",99:"Documentary",18:"Drama",10751:"Family",10762:"Kids",9648:"Mystery",10765:"Sci-Fi & Fantasy",37:"Western"},Q={28:"Action",12:"Adventure",16:"Animation",35:"Comedy",80:"Crime",99:"Documentary",18:"Drama",10751:"Family",14:"Fantasy",36:"History",27:"Horror",9648:"Mystery",10749:"Romance",878:"Sci-Fi",53:"Thriller",10752:"War",37:"Western"},O=new Date().getFullYear(),ue=[{value:"ALL",label:"All Years"},...Array.from({length:O-1980+1},(l,u)=>({value:String(O-u),label:String(O-u)}))];function Me(){W(()=>{document.title="Search TV & Movies - dango"},[]);const[l,u]=ae(),{lowEndMode:H}=ie(),C=re(null),[g,K]=o(l.get("q")||""),[h,U]=o(l.get("q")||""),[m,v]=o(parseInt(l.get("page")||"1",10)||1),[i,J]=o(l.get("type")||"multi"),[$,k]=o(l.get("genre")||""),[y,F]=o(l.get("year")||"ALL"),[f,B]=o(l.get("sort_by")||"popularity.desc"),[b,X]=o(!1),[c,N]=o(()=>{const e={},a=l.get("genre")||"";return a&&(e[a]="include"),e}),M=z(()=>{if(i==="tv")return Object.entries(Y).map(([a,n])=>({id:a,name:n}));if(i==="movie")return Object.entries(Q).map(([a,n])=>({id:a,name:n}));const e=new Map;for(const[a,n]of Object.entries(Y))e.set(a,n);for(const[a,n]of Object.entries(Q))e.set(a,n);return Array.from(e.entries()).map(([a,n])=>({id:a,name:n}))},[i]),S=z(()=>Object.entries(c).filter(([,a])=>a==="include").map(([a])=>a).join(","),[c]),{data:P,isLoading:w,isError:Z,error:ee}=se({query:h,type:i,genre:S,year:y,sort_by:f,page:m}),T=P?.results||[],L=P?.total_pages||0,E=P?.total_results||0,R=m<Math.min(L,500),d=A((e={})=>{const a=new URLSearchParams,n=e.q!==void 0?e.q:h,s=e.type!==void 0?e.type:i,q=e.year!==void 0?e.year:y,G=e.sort!==void 0?e.sort:f,D=e.page!==void 0?e.page:String(m),V=e.genre!==void 0?e.genre:S;n.trim()&&a.set("q",n.trim()),s!=="multi"&&a.set("type",s),V&&a.set("genre",V),q!=="ALL"&&a.set("year",q),G!=="popularity.desc"&&a.set("sort_by",G),D!=="1"&&a.set("page",D),u(a,{replace:!0})},[h,i,y,f,m,S,u]),_=A(()=>{oe(),v(1),U(g),d({q:g,page:"1"}),window.scrollTo({top:0,behavior:"smooth"})},[g,d]),j=A(e=>{if(v(e),d({page:String(e)}),C.current){const a=C.current.getBoundingClientRect().top+window.scrollY-100;window.scrollTo({top:a,behavior:"smooth"})}},[d]),te=A(e=>{N(a=>{const n=a[e],s={...a};return n==="include"?s[e]="exclude":n==="exclude"?delete s[e]:s[e]="include",s}),v(1)},[]);return W(()=>{const a=Object.entries(c).filter(([,n])=>n==="include").map(([n])=>n).join(",");a!==$&&(k(a),d({genre:a,page:"1"}))},[c,$,k,d]),t("div",{className:"page-container",children:[t("div",{className:r.header,children:[t("h1",{className:r.pageTitle,children:"Search TV & Movies"}),t("p",{className:r.pageSubtitle,children:"Discover trending shows, movies, and more powered by TMDB"})]}),t("div",{className:r.filterContainer,children:[t("div",{className:r.searchBarWrapper,children:[t("div",{className:r.inputIconWrapper,children:[t(p,{name:"search",className:r.searchIcon}),t("input",{type:"text","data-virtual-keyboard":"true",className:r.searchInput,placeholder:"Search titles...",value:g,onInput:e=>K(e.currentTarget.value),onKeyDown:e=>e.key==="Enter"&&_()})]}),t("div",{className:r.searchActions,children:[t("select",{value:i,onChange:e=>{J(e.target.value),N({})},className:r.providerSelect,"aria-label":"Media type",children:de.map(e=>t("option",{value:e.value,children:e.label},e.value))}),t(x,{onClick:_,className:r.searchBtn,children:"Search"}),t("button",{className:`${r.filterToggleBtn} ${b?r.active:""}`,onClick:()=>X(!b),children:[t(p,{name:"filter",size:14}),t("span",{children:"Filters"}),b?t(p,{name:"chevron-up",size:12}):t(p,{name:"chevron-down",size:12})]})]})]}),t("div",{className:`${r.advancedFilters} ${b?r.show:""}`,children:[t("div",{className:r.filterDivider}),t("div",{className:r.filterGrid,children:[t("div",{className:r.filterItem,children:[t("label",{children:"Sort By"}),t("select",{value:f,onChange:e=>B(e.currentTarget.value),children:me.map(e=>t("option",{value:e.value,children:e.label},e.value))})]}),t("div",{className:r.filterItem,children:[t("label",{children:"Year"}),t("select",{value:y,onChange:e=>F(e.currentTarget.value),children:ue.map(e=>t("option",{value:e.value,children:e.label},e.value))})]})]}),M.length>0&&t("div",{className:r.genreSection,children:[t("label",{className:r.genreLabel,children:"Genres"}),t("div",{className:r.genreContainer,children:M.map(e=>t("button",{className:`${r.genreButton} ${r[c[e.id]||""]}`,onClick:()=>te(e.id),children:e.name},e.id))})]}),t("div",{className:r.filterActions,children:[t(x,{variant:"secondary",onClick:()=>{N({}),F("ALL"),B("popularity.desc"),v(1),d({genre:"",year:"ALL",sort:"popularity.desc",page:"1"})},children:"Reset All"}),t(x,{onClick:_,className:r.searchBtn,children:"Apply Filters"})]})]})]}),Z&&t(ce,{message:ee?.message||"Search failed"}),Object.keys(c).length>0&&t("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px",marginBottom:"1.5rem"},children:[t("span",{style:{fontSize:"0.8rem",color:"var(--text-muted)",fontWeight:600},children:"Active Filters:"}),Object.entries(c).map(([e,a])=>{const n=M.find(s=>s.id===e)?.name||e;return t("span",{className:`badge ${a==="include"?"badge-primary":"badge-danger"}`,style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:[a==="include"?`+ ${n}`:`- ${n}`,t("button",{onClick:()=>{const s={...c};delete s[e],N(s)},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]},e)})]}),t("div",{className:r.resultsHeader,ref:C,children:[t("h2",{className:r.resultsTitle,children:[h?`Results for "${h}"`:S?"Browsing genres":i==="tv"?"Popular TV Shows":i==="movie"?"Popular Movies":"Trending",E>0&&t("span",{style:{fontWeight:400,color:"var(--text-tertiary)",fontSize:"0.85em",marginLeft:"0.5em"},children:["(",E.toLocaleString(),")"]})]}),T.length>0&&t(I,{page:m,totalPages:Math.max(1,Math.min(L,500)),canGoNext:R,onChange:j,isLoading:w})]}),t("div",{className:`${r.resultsGrid} ${H?r.lowEnd:""}`,children:w?t(ne,{}):T.map(e=>t(le,{item:{id:e.id,title:e.title,year:e.year,type:e.type,image:e.image,vote_average:e.vote_average,adult:e.adult}},`${e.type}-${e.id}`))}),!w&&T.length===0&&t("div",{className:r.noResults,children:[t(p,{name:"search",size:48,className:r.noResultsIcon}),t("h3",{children:"No results found"}),t("p",{children:"Try adjusting your search or filters to find what you're looking for."})]}),T.length>0&&t("div",{className:r.bottomPagination,children:t(I,{page:m,totalPages:Math.max(1,Math.min(L,500)),canGoNext:R,onChange:j,isLoading:w,variant:"labeled"})})]})}export{Me as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as U,d as v,h as y,T as x,u as l}from"./vendor-core-8R2fFbyN.js";import{M as N}from"./MediaCard-
|
|
1
|
+
import{n as U,d as v,h as y,T as x,u as l}from"./vendor-core-8R2fFbyN.js";import{M as N}from"./MediaCard-CAzoxsRS.js";import{L as _}from"./LibraryListPage-B0qWqhb_.js";import{R as K}from"./ResetProgressModal-DES5Y-Fl.js";import{T as O}from"./TvPopup-Dfqifj3s.js";import{e as u}from"./index-D2RkUJIN.js";import{l as Q,u as Y,a as q,b as z,h as G,m as Z,o as j,p as D,t as S,i as I,T as k}from"./useTvLibrary-_Pqm8re1.js";import"./vendor-ui-CUDCvRS_.js";import"./vendor-icons-CDMuNDeL.js";import"./useIsMobile-Dm_b6Ob3.js";import"./SkeletonGrid-BxfgjP4i.js";import"./ErrorMessage-z4f4WGgP.js";import"./Watchlist.module-XGtVQr1d.js";import"./vendor-query-BXRECSI6.js";const H=["All","Continue Watching",...k],P=24;function ce(){const{filter:d="All"}=U(),[T,g]=v(1),[s,p]=v(null),[h,c]=v(!1);y(()=>{document.title="TV Watchlist - dango"},[]),y(()=>{g(1)},[d]);const o=d==="Continue Watching",r=Q(o?"All":d,T,P),i=Y(100),b=q(),w=z(),C=G(),W=Z(),B=j(),E=D(),M=x(()=>o?(i.data?.data??[]).map(e=>{const a=e.currentTime??0,t=e.duration??0,f=e.season??e.lastSeason??1,R=e.episode??e.lastEpisode??1,n=e.mediaType==="movie",m=n?"Movie":`S${f} E${R}`,L=e.completed===!0||e.completed===1||t>0&&a>=t*.8;return{key:e.id,libId:e.id,tmdbId:e.tmdbId,mediaType:e.mediaType,title:e.title,poster:e.poster||"",year:e.year,adult:I({adult:e.adult===1}),status:e.status,badge:m,progressPercent:L?100:t>0?a/t*100:0,progressLabel:t>0?L?"Watched":n?`${u(a)} / ${u(t)}`:`${m} · ${u(a)} / ${u(t)}`:m,watchTarget:S(e.mediaType,e.tmdbId,n?void 0:f,n?void 0:R)}}):(r.data?.data??[]).map(e=>({key:e.id,libId:e.id,tmdbId:e.tmdbId,mediaType:e.mediaType,title:e.title,poster:e.poster||"",year:e.year,adult:I({adult:e.adult===1}),status:e.status,badge:e.lastSeason&&e.lastEpisode?`S${e.lastSeason} E${e.lastEpisode}`:void 0,progressPercent:void 0,progressLabel:void 0,watchTarget:S(e.mediaType,e.tmdbId,e.lastSeason??void 0,e.lastEpisode??void 0)})),[o,i.data,r.data]),A=o?i.data?.total??0:r.data?.total??0,V=o?i.isLoading:r.isLoading,$=o?i.error:r.error,F=()=>{s&&(w.mutate({mediaId:s.libId}),h&&b.mutate(s.libId),p(null),c(!1))};return l(_,{headerTitle:"My TV Watchlist",headerSubtitle:"Track and manage your movies and shows",filters:H,filterBy:d,filterBasePath:"/tv-watchlist",continueFilter:"Continue Watching",statusOptions:[...k],entries:M,total:A,isLoading:V,error:$,page:T,pageSize:P,onPageChange:g,emptyTitle:"Your TV watchlist is looking a bit empty",emptyFilteredText:"No titles match this filter.",emptyAllText:"Let's find something to watch!",browseLabel:"Browse TV & Movies",browseTarget:"/tv",removeListLabel:"Remove from TV Watchlist",listNoun:"TV watchlist",skipConfirmKey:"tvSkipRemoveConfirmation",onBulkStatus:(e,a)=>W.mutate({ids:e,status:a}),onBulkRemove:e=>{o?E.mutate(e):B.mutate(e)},onStatusChange:(e,a)=>C.mutate({id:e,status:a}),onRemoveItem:e=>b.mutate(e),renderCard:e=>l(N,{item:{id:e.libId,title:e.title,thumbnail:e.poster,typeBadge:e.mediaType==="movie"?"Movie":"TV",chapterBadge:e.badge??null,isAdult:e.adult},linkTo:e.watchTarget,hoverIcon:"play",progress:e.progressPercent!==void 0&&e.progressLabel?{percent:e.progressPercent,label:e.progressLabel}:void 0,showProgress:o,metaRow:e.year?l("span",{style:{opacity:.75},children:e.year}):void 0,onRemove:o?()=>p(e):void 0,renderPopup:(a,t)=>l(O,{item:{id:e.tmdbId??0,title:e.title||"",year:e.year||"",type:e.mediaType||"tv",image:e.poster||""},anchorRect:a,onMouseEnter:t.onMouseEnter,onMouseLeave:t.onMouseLeave,onRequestClose:t.close})}),modals:l(K,{isOpen:!!s,itemName:s?.title,progressKind:"watch",listLabel:"my TV watchlist",alsoRemove:h,onAlsoRemoveChange:c,onClose:()=>{p(null),c(!1)},onConfirm:F})})}export{ce as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as pe,n as Ke,a as Ve,o as Qe,d as u,A as ge,T as R,u as t,S as He}from"./vendor-core-8R2fFbyN.js";import{u as Je,a as ve}from"./vendor-query-BXRECSI6.js";import{u as Ze,d as Xe,r as et,t as fe,v as ye,z as tt,q as Se,i as at,w as nt,x as st,y as lt,A as rt,C as it,B as T,M as te}from"./index-CtoKRNLc.js";import{I as p}from"./vendor-icons-CDMuNDeL.js";import{A as ct}from"./AnimeCard-D4qo4289.js";import{P as be,S as ot}from"./SkeletonGrid-B5loz7ii.js";import{E as dt}from"./ErrorMessage-z4f4WGgP.js";import{s as a}from"./Watchlist.module-XGtVQr1d.js";import"./useAnimeInfoData-kr3WOIWH.js";import"./QueueOptionsButton-lv26-6jp.js";import"./vendor-ui-CUDCvRS_.js";import"./MediaCard-DpKoY-1j.js";import"./useIsMobile-Dm_b6Ob3.js";const ut=(d,g)=>{const l=new URLSearchParams(g);return l.delete("page"),l.sort(),`${d}|${l.toString()}`},mt=(d,g)=>{const l=new Set(d);return g.forEach(N=>l.add(N)),l},ht=(d,g)=>{const l=new Set(d);return g.forEach(N=>l.delete(N)),l},Ae=["All","Continue Watching","Watching","Completed","On-Hold","Dropped","Planned"],Le=Ae.slice(2),pt=[{value:"ALL",label:"All Types"},{value:"TV",label:"TV Series"},{value:"Movie",label:"Movie"},{value:"OVA",label:"OVA"},{value:"ONA",label:"ONA"},{value:"TV_SHORT",label:"TV Short"},{value:"SPECIAL",label:"Special"},{value:"ADULT",label:"Adult (18+)"}],gt=[{value:"ALL",label:"All Seasons"},{value:"WINTER",label:"Winter"},{value:"SPRING",label:"Spring"},{value:"SUMMER",label:"Summer"},{value:"FALL",label:"Fall"}],Tt=()=>{pe(()=>{document.title="Watchlist - dango"},[]);const{filter:d="All"}=Ke(),g=Ve(),[l,N]=Qe(),ae=Je(),[v,B]=u(parseInt(l.get("page")||"1")),[f,P]=u(l.get("query")||""),[C,q]=u(l.get("sortBy")||"last_added"),[y,W]=u(l.get("type")||"ALL"),[S,I]=u(l.get("season")||"ALL"),[b,$]=u(l.get("year")||"ALL"),[w,O]=u(()=>{const e={},n=l.get("genres")?.split(",").map(r=>r.trim()).filter(Boolean)||[],s=l.get("excludeGenres")?.split(",").map(r=>r.trim()).filter(Boolean)||[];return n.forEach(r=>r&&(e[r]="include")),s.forEach(r=>r&&(e[r]="exclude")),e}),[F,Ne]=u(()=>["type","season","year","genres","excludeGenres"].some(e=>l.has(e))),{lowEndMode:Ce}=Ze(),{titlePreference:M}=Xe(),{data:we}=et(),ne=we?.genres||[],K=ge(null),[c,k]=u(null),[V,D]=u(!1),[se,z]=u(!1),[E,ke]=u(!1),[h,L]=u(new Set),Q=ge(null),i=d==="Continue Watching",G=R(()=>{const e=new URLSearchParams(l);return e.delete("page"),e.set("titlePreference",M),e.toString()},[l,M]),{data:_,isLoading:xe,error:Re}=fe(G,v,14),{data:U,isLoading:Te,error:Be}=ye(d,G,v,14),{data:Pe}=fe(G,v+1,14),{data:We}=ye(d,G,v+1,14),H=R(()=>(i?_?.data:U?.data)||[],[i,_,U]),x=R(()=>(i?_?.total:U?.total)||0,[i,_,U]),Y=i?xe:Te,le=i?Re:Be,re=i?Pe:We;pe(()=>{P(l.get("query")||""),q(l.get("sortBy")||"last_added"),W(l.get("type")||"ALL"),I(l.get("season")||"ALL"),$(l.get("year")||"ALL");const e={},n=l.get("genres")?.split(",").map(o=>o.trim()).filter(Boolean)||[],s=l.get("excludeGenres")?.split(",").map(o=>o.trim()).filter(Boolean)||[];n.forEach(o=>o&&(e[o]="include")),s.forEach(o=>o&&(e[o]="exclude")),O(e),B(parseInt(l.get("page")||"1"));const r=ut(d,l);Q.current!==null&&Q.current!==r&&L(new Set),Q.current=r},[l,d]);const Ie=ve({mutationFn:async({id:e,status:n})=>{await Se("/api/watchlist/status",{method:"POST",body:JSON.stringify({id:e,status:n})})},onSuccess:()=>{ae.invalidateQueries({queryKey:["watchlist"]}),tt.success("Status updated")}}),$e=ve({mutationFn:async e=>{await Se("/api/continue-watching/remove",{method:"POST",body:JSON.stringify({showId:e})})},onSuccess:()=>ae.invalidateQueries({queryKey:["allContinueWatching"]})}),J=at(),{data:ie}=nt("skipRemoveConfirmation"),Oe=st(),Z=R(()=>{const e=n=>n[M]||n.name||"";return[...H].sort((n,s)=>C==="name_asc"?e(n).localeCompare(e(s)):C==="name_desc"?e(s).localeCompare(e(n)):0)},[H,C,M]),X=new Date().getFullYear(),Fe=[{value:"ALL",label:"All Years"},...Array.from({length:X-1980+1},(e,n)=>({value:String(X-n),label:String(X-n)}))],m=(e=C,n=1)=>{const s=new URLSearchParams;f.trim()&&s.set("query",f.trim()),e!=="last_added"&&s.set("sortBy",e),y!=="ALL"&&s.set("type",y),S!=="ALL"&&s.set("season",S),b!=="ALL"&&s.set("year",b);const r=Object.entries(w).filter(([,A])=>A==="include").map(([A])=>A),o=Object.entries(w).filter(([,A])=>A==="exclude").map(([A])=>A);r.length>0&&s.set("genres",r.join(",")),o.length>0&&s.set("excludeGenres",o.join(",")),n>1&&s.set("page",n.toString()),N(s),n!==v&&B(n)},ce=e=>{if(m(C,e),K.current){const n=K.current.getBoundingClientRect().top+window.scrollY-100;window.scrollTo({top:n,behavior:"smooth"})}},Me=()=>{P(""),q("last_added"),W("ALL"),I("ALL"),$("ALL"),O({}),N(new URLSearchParams),B(1)},De=e=>{O(n=>{const s=n[e],r={...n};return s==="include"?r[e]="exclude":s==="exclude"?delete r[e]:r[e]="include",r})},oe=(e,n)=>{if(i){k({id:e,name:n});return}String(ie)==="true"||String(ie)==="1"?J.mutate(e):k({id:e,name:n})},ze=()=>{if(c){if(c.ids){i?(Ee.mutate(c.ids),V&&ue.mutate(c.ids)):ue.mutate(c.ids),L(new Set),k(null),D(!1),z(!1);return}i?($e.mutate(c.id),V&&J.mutate(c.id)):J.mutate(c.id),se&&Oe.mutate({key:"skipRemoveConfirmation",value:!0}),k(null),D(!1),z(!1)}},de=()=>{k(null),D(!1),z(!1)},ue=lt(),Ee=rt(),Ge=it(),_e=()=>{ke(e=>{const n=!e;return n||L(new Set),n})},Ue=e=>{L(n=>{const s=new Set(n);return s.has(e)?s.delete(e):s.add(e),s})},j=Z.map(e=>e.id),ee=j.length>0&&j.every(e=>h.has(e)),Ye=()=>{L(ee?e=>ht(e,j):e=>mt(e,j))},je=e=>{h.size!==0&&(Ge.mutate({ids:[...h],status:e}),L(new Set))},qe=()=>{h.size!==0&&k({ids:[...h]})},me=H.length>=14&&re&&re.data.length>0,he=R(()=>Math.max(1,Math.ceil(x/14)),[x]);return t("div",{className:"page-container",children:[t("header",{className:a.header,children:[t("h2",{className:a.title,children:"My Watchlist"}),t("p",{className:a.subtitle,children:"Track and manage your anime collection"})]}),t("div",{className:a.controls,children:[t("div",{className:a.filters,children:Ae.map(e=>t("button",{className:`${a.filterBtn} ${d===e?a.active:""}`,onClick:()=>{const n=new URLSearchParams(l);n.delete("page"),g({pathname:`/watchlist/${e}`,search:n.toString()}),B(1)},children:e},e))}),t("div",{children:t("select",{className:a.sortSelect,value:C,onChange:e=>{const n=e.currentTarget.value;q(n),m(n,v)},children:[t("option",{value:"last_added",children:"Recently Added"}),t("option",{value:"name_asc",children:"Name (A-Z)"}),t("option",{value:"name_desc",children:"Name (Z-A)"})]})})]}),t("div",{className:a.filterContainer,children:[t("div",{className:a.searchBarWrapper,children:[t("div",{className:a.inputIconWrapper,children:[t(p,{name:"search",className:a.searchIcon}),t("input",{className:a.searchInput,placeholder:"Search your watchlist by title...",value:f,onInput:e=>P(e.currentTarget.value),onKeyDown:e=>e.key==="Enter"&&m()})]}),t("div",{className:a.searchActions,children:[t(T,{onClick:()=>m(),className:a.searchBtn,children:"Search"}),t("button",{className:`${a.filterToggleBtn} ${F?a.active:""}`,onClick:()=>Ne(!F),children:[t(p,{name:"filter",size:14}),t("span",{children:"Filters"}),F?t(p,{name:"chevron-up",size:12}):t(p,{name:"chevron-down",size:12})]})]})]}),t("div",{className:`${a.advancedFilters} ${F?a.show:""}`,children:[t("div",{className:a.filterDivider}),t("div",{className:a.filterGrid,children:[t("div",{className:a.filterItem,children:[t("label",{children:"Type"}),t("select",{value:y,onChange:e=>W(e.currentTarget.value),children:pt.map(e=>t("option",{value:e.value,children:e.label},e.value))})]}),t("div",{className:a.filterItem,children:[t("label",{children:"Season"}),t("select",{value:S,onChange:e=>I(e.currentTarget.value),children:gt.map(e=>t("option",{value:e.value,children:e.label},e.value))})]}),t("div",{className:a.filterItem,children:[t("label",{children:"Year"}),t("select",{value:b,onChange:e=>$(e.currentTarget.value),children:Fe.map(e=>t("option",{value:e.value,children:e.label},e.value))})]})]}),ne.length>0&&t("div",{className:a.genreSection,children:[t("label",{className:a.genreLabel,children:"Genres"}),t("div",{className:a.genreContainer,children:ne.map(e=>t("button",{className:`${a.genreButton} ${a[w[e]||""]}`,onClick:()=>De(e),children:e},e))})]}),t("div",{className:a.filterActions,children:[t(T,{variant:"secondary",onClick:Me,children:"Reset All"}),t(T,{onClick:()=>m(),className:a.applyBtn,children:"Apply Filters"})]})]})]}),t("div",{className:a.resultsHeader,ref:K,children:[t("h3",{className:a.resultsTitle,children:[i?"Continue Watching":d,t("span",{className:a.itemCount,children:["(",x," items)"]})]}),t("div",{className:a.headerActions,children:[t("button",{className:`${a.manageBtn} ${E?a.active:""}`,onClick:_e,children:[t(p,{name:"pencil-alt",size:13}),t("span",{children:"Bulk Manage"})]}),x>0&&t(be,{page:v,totalPages:he,canGoNext:me,onChange:ce,isLoading:Y})]})]}),E&&t("div",{className:a.manageBar,children:[t("button",{className:a.selectAllBtn,onClick:Ye,children:[t("span",{className:`${a.selectAllBox} ${ee?a.selectAllBoxChecked:""}`,"aria-hidden":"true"}),t("span",{children:ee?"Clear Page":"Select All"})]}),t("span",{className:a.manageCount,children:[h.size," selected"]}),t("div",{className:a.manageSpacer}),!i&&t("select",{className:a.manageStatusSelect,value:"",onChange:e=>{e.currentTarget.value&&je(e.currentTarget.value)},disabled:h.size===0,title:"Set status for selected items",children:[t("option",{value:"",children:"Set status…"}),Le.map(e=>t("option",{value:e,children:e},e))]}),t("button",{className:a.manageRemoveBtn,onClick:qe,disabled:h.size===0,children:[t(p,{name:"trash",size:13}),t("span",{children:"Remove Selected"})]})]}),Y?t(ot,{}):le?t(dt,{message:le.message}):t(He,{children:[(y!=="ALL"||S!=="ALL"||b!=="ALL"||Object.keys(w).length>0||f.trim())&&t("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px",alignItems:"center",marginBottom:"1.5rem"},children:[t("span",{style:{fontSize:"0.8rem",color:"var(--text-muted)",fontWeight:600},children:"Active Filters:"}),f.trim()&&t("span",{className:"badge badge-secondary",style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:["Search: ",f,t("button",{onClick:e=>{e.stopPropagation(),e.preventDefault(),P(""),m()},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]}),y!=="ALL"&&t("span",{className:"badge badge-secondary",style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:["Type: ",y,t("button",{onClick:e=>{e.stopPropagation(),e.preventDefault(),W("ALL"),m()},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]}),S!=="ALL"&&t("span",{className:"badge badge-secondary",style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:["Season: ",S,t("button",{onClick:e=>{e.stopPropagation(),e.preventDefault(),I("ALL"),m()},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]}),b!=="ALL"&&t("span",{className:"badge badge-secondary",style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:["Year: ",b,t("button",{onClick:e=>{e.stopPropagation(),e.preventDefault(),$("ALL"),m()},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]}),Object.entries(w).map(([e,n])=>t("span",{className:`badge ${n==="include"?"badge-primary":"badge-danger"}`,style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:[n==="include"?`+ ${e}`:`- ${e}`,t("button",{onClick:s=>{s.stopPropagation(),s.preventDefault(),O(r=>{const o={...r};return delete o[e],o}),m()},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]},e))]}),t("div",{className:`${a.grid} ${Ce?a.lowEnd:""}`,children:Z.map(e=>{const n=h.has(e.id);return t("div",{className:`${a.itemWrapper} ${n?a.selected:""}`,children:[E&&t("div",{className:a.selectOverlay,onClick:()=>Ue(e.id),title:n?"Deselect":"Select",children:t("span",{className:a.selectBadge,children:n?t(p,{name:"check",size:12}):null})}),t(ct,{anime:e,continueWatching:i,onRemove:()=>oe(e.id,e.name),layout:"vertical"}),!i&&!E&&t("div",{className:a.cardActions,children:[t("select",{className:a.statusSelect,value:e.status,onChange:s=>Ie.mutate({id:e.id,status:s.currentTarget.value}),children:Le.map(s=>t("option",{value:s,children:s},s))}),t("button",{className:a.removeBtn,onClick:()=>oe(e.id,e.name),title:"Remove from Watchlist","aria-label":"Remove from Watchlist",children:t(p,{name:"trash",size:12})})]})]},e._id)})})]}),!Y&&Z.length===0&&t("div",{className:a.emptyState,children:[t("h3",{className:a.emptyTitle,children:"Your watchlist is looking a bit lonely"}),t("p",{className:a.emptyText,children:d!=="All"||f||y!=="ALL"||S!=="ALL"||b!=="ALL"||Object.keys(w).length>0?"No anime match these filters. Try adjusting them to see more titles.":"Let's find something to watch!"}),t("button",{className:a.emptyBtn,onClick:()=>g("/search"),children:[t(p,{name:"search",size:14}),t("span",{children:"Browse Anime"})]})]}),x>0&&t("div",{className:a.bottomPagination,children:t(be,{page:v,totalPages:he,canGoNext:me,onChange:ce,isLoading:Y,variant:"labeled"})}),t(te,{isOpen:!!c,onClose:de,title:i?"Reset Progress":"Remove from Watchlist",children:[t(te.Body,{children:[t("p",{children:c?.ids&&c.ids.length>1?i?`Are you sure you want to remove watch progress for ${c.ids.length} items?`:`Are you sure you want to remove ${c.ids.length} items from your watchlist?`:i?`Are you sure you want to remove your watch progress for "${c?.name}"?`:`Are you sure you want to remove "${c?.name}" from your watchlist?`}),i&&t("label",{children:[t("input",{type:"checkbox",checked:V,onChange:e=>D(e.target.checked)}),"Also remove from my watchlist"]}),!i&&!(c?.ids&&c.ids.length>1)&&t("label",{children:[t("input",{type:"checkbox",checked:se,onChange:e=>z(e.target.checked)}),"Remember my choice"]})]}),t(te.Actions,{children:[t(T,{variant:"secondary",onClick:de,children:"No"}),t(T,{variant:"danger",onClick:ze,children:"Yes"})]})]})]})};export{Tt as default};
|
|
1
|
+
import{h as pe,n as Ke,a as Ve,o as Qe,d as u,A as ge,T as R,u as t,S as He}from"./vendor-core-8R2fFbyN.js";import{u as Je,a as ve}from"./vendor-query-BXRECSI6.js";import{u as Ze,d as Xe,r as et,t as fe,v as ye,z as tt,q as Se,i as at,w as nt,x as st,y as lt,A as rt,C as it,B as T,M as te}from"./index-D2RkUJIN.js";import{I as p}from"./vendor-icons-CDMuNDeL.js";import{A as ct}from"./AnimeCard-URCiiy5W.js";import{P as be,S as ot}from"./SkeletonGrid-BxfgjP4i.js";import{E as dt}from"./ErrorMessage-z4f4WGgP.js";import{s as a}from"./Watchlist.module-XGtVQr1d.js";import"./useAnimeInfoData-BWShDHqE.js";import"./QueueOptionsButton-BVZyPyKf.js";import"./vendor-ui-CUDCvRS_.js";import"./MediaCard-CAzoxsRS.js";import"./useIsMobile-Dm_b6Ob3.js";const ut=(d,g)=>{const l=new URLSearchParams(g);return l.delete("page"),l.sort(),`${d}|${l.toString()}`},mt=(d,g)=>{const l=new Set(d);return g.forEach(N=>l.add(N)),l},ht=(d,g)=>{const l=new Set(d);return g.forEach(N=>l.delete(N)),l},Ae=["All","Continue Watching","Watching","Completed","On-Hold","Dropped","Planned"],Le=Ae.slice(2),pt=[{value:"ALL",label:"All Types"},{value:"TV",label:"TV Series"},{value:"Movie",label:"Movie"},{value:"OVA",label:"OVA"},{value:"ONA",label:"ONA"},{value:"TV_SHORT",label:"TV Short"},{value:"SPECIAL",label:"Special"},{value:"ADULT",label:"Adult (18+)"}],gt=[{value:"ALL",label:"All Seasons"},{value:"WINTER",label:"Winter"},{value:"SPRING",label:"Spring"},{value:"SUMMER",label:"Summer"},{value:"FALL",label:"Fall"}],Tt=()=>{pe(()=>{document.title="Watchlist - dango"},[]);const{filter:d="All"}=Ke(),g=Ve(),[l,N]=Qe(),ae=Je(),[v,B]=u(parseInt(l.get("page")||"1")),[f,P]=u(l.get("query")||""),[C,q]=u(l.get("sortBy")||"last_added"),[y,W]=u(l.get("type")||"ALL"),[S,I]=u(l.get("season")||"ALL"),[b,$]=u(l.get("year")||"ALL"),[w,O]=u(()=>{const e={},n=l.get("genres")?.split(",").map(r=>r.trim()).filter(Boolean)||[],s=l.get("excludeGenres")?.split(",").map(r=>r.trim()).filter(Boolean)||[];return n.forEach(r=>r&&(e[r]="include")),s.forEach(r=>r&&(e[r]="exclude")),e}),[F,Ne]=u(()=>["type","season","year","genres","excludeGenres"].some(e=>l.has(e))),{lowEndMode:Ce}=Ze(),{titlePreference:M}=Xe(),{data:we}=et(),ne=we?.genres||[],K=ge(null),[c,k]=u(null),[V,D]=u(!1),[se,z]=u(!1),[E,ke]=u(!1),[h,L]=u(new Set),Q=ge(null),i=d==="Continue Watching",G=R(()=>{const e=new URLSearchParams(l);return e.delete("page"),e.set("titlePreference",M),e.toString()},[l,M]),{data:_,isLoading:xe,error:Re}=fe(G,v,14),{data:U,isLoading:Te,error:Be}=ye(d,G,v,14),{data:Pe}=fe(G,v+1,14),{data:We}=ye(d,G,v+1,14),H=R(()=>(i?_?.data:U?.data)||[],[i,_,U]),x=R(()=>(i?_?.total:U?.total)||0,[i,_,U]),Y=i?xe:Te,le=i?Re:Be,re=i?Pe:We;pe(()=>{P(l.get("query")||""),q(l.get("sortBy")||"last_added"),W(l.get("type")||"ALL"),I(l.get("season")||"ALL"),$(l.get("year")||"ALL");const e={},n=l.get("genres")?.split(",").map(o=>o.trim()).filter(Boolean)||[],s=l.get("excludeGenres")?.split(",").map(o=>o.trim()).filter(Boolean)||[];n.forEach(o=>o&&(e[o]="include")),s.forEach(o=>o&&(e[o]="exclude")),O(e),B(parseInt(l.get("page")||"1"));const r=ut(d,l);Q.current!==null&&Q.current!==r&&L(new Set),Q.current=r},[l,d]);const Ie=ve({mutationFn:async({id:e,status:n})=>{await Se("/api/watchlist/status",{method:"POST",body:JSON.stringify({id:e,status:n})})},onSuccess:()=>{ae.invalidateQueries({queryKey:["watchlist"]}),tt.success("Status updated")}}),$e=ve({mutationFn:async e=>{await Se("/api/continue-watching/remove",{method:"POST",body:JSON.stringify({showId:e})})},onSuccess:()=>ae.invalidateQueries({queryKey:["allContinueWatching"]})}),J=at(),{data:ie}=nt("skipRemoveConfirmation"),Oe=st(),Z=R(()=>{const e=n=>n[M]||n.name||"";return[...H].sort((n,s)=>C==="name_asc"?e(n).localeCompare(e(s)):C==="name_desc"?e(s).localeCompare(e(n)):0)},[H,C,M]),X=new Date().getFullYear(),Fe=[{value:"ALL",label:"All Years"},...Array.from({length:X-1980+1},(e,n)=>({value:String(X-n),label:String(X-n)}))],m=(e=C,n=1)=>{const s=new URLSearchParams;f.trim()&&s.set("query",f.trim()),e!=="last_added"&&s.set("sortBy",e),y!=="ALL"&&s.set("type",y),S!=="ALL"&&s.set("season",S),b!=="ALL"&&s.set("year",b);const r=Object.entries(w).filter(([,A])=>A==="include").map(([A])=>A),o=Object.entries(w).filter(([,A])=>A==="exclude").map(([A])=>A);r.length>0&&s.set("genres",r.join(",")),o.length>0&&s.set("excludeGenres",o.join(",")),n>1&&s.set("page",n.toString()),N(s),n!==v&&B(n)},ce=e=>{if(m(C,e),K.current){const n=K.current.getBoundingClientRect().top+window.scrollY-100;window.scrollTo({top:n,behavior:"smooth"})}},Me=()=>{P(""),q("last_added"),W("ALL"),I("ALL"),$("ALL"),O({}),N(new URLSearchParams),B(1)},De=e=>{O(n=>{const s=n[e],r={...n};return s==="include"?r[e]="exclude":s==="exclude"?delete r[e]:r[e]="include",r})},oe=(e,n)=>{if(i){k({id:e,name:n});return}String(ie)==="true"||String(ie)==="1"?J.mutate(e):k({id:e,name:n})},ze=()=>{if(c){if(c.ids){i?(Ee.mutate(c.ids),V&&ue.mutate(c.ids)):ue.mutate(c.ids),L(new Set),k(null),D(!1),z(!1);return}i?($e.mutate(c.id),V&&J.mutate(c.id)):J.mutate(c.id),se&&Oe.mutate({key:"skipRemoveConfirmation",value:!0}),k(null),D(!1),z(!1)}},de=()=>{k(null),D(!1),z(!1)},ue=lt(),Ee=rt(),Ge=it(),_e=()=>{ke(e=>{const n=!e;return n||L(new Set),n})},Ue=e=>{L(n=>{const s=new Set(n);return s.has(e)?s.delete(e):s.add(e),s})},j=Z.map(e=>e.id),ee=j.length>0&&j.every(e=>h.has(e)),Ye=()=>{L(ee?e=>ht(e,j):e=>mt(e,j))},je=e=>{h.size!==0&&(Ge.mutate({ids:[...h],status:e}),L(new Set))},qe=()=>{h.size!==0&&k({ids:[...h]})},me=H.length>=14&&re&&re.data.length>0,he=R(()=>Math.max(1,Math.ceil(x/14)),[x]);return t("div",{className:"page-container",children:[t("header",{className:a.header,children:[t("h2",{className:a.title,children:"My Watchlist"}),t("p",{className:a.subtitle,children:"Track and manage your anime collection"})]}),t("div",{className:a.controls,children:[t("div",{className:a.filters,children:Ae.map(e=>t("button",{className:`${a.filterBtn} ${d===e?a.active:""}`,onClick:()=>{const n=new URLSearchParams(l);n.delete("page"),g({pathname:`/watchlist/${e}`,search:n.toString()}),B(1)},children:e},e))}),t("div",{children:t("select",{className:a.sortSelect,value:C,onChange:e=>{const n=e.currentTarget.value;q(n),m(n,v)},children:[t("option",{value:"last_added",children:"Recently Added"}),t("option",{value:"name_asc",children:"Name (A-Z)"}),t("option",{value:"name_desc",children:"Name (Z-A)"})]})})]}),t("div",{className:a.filterContainer,children:[t("div",{className:a.searchBarWrapper,children:[t("div",{className:a.inputIconWrapper,children:[t(p,{name:"search",className:a.searchIcon}),t("input",{className:a.searchInput,placeholder:"Search your watchlist by title...",value:f,onInput:e=>P(e.currentTarget.value),onKeyDown:e=>e.key==="Enter"&&m()})]}),t("div",{className:a.searchActions,children:[t(T,{onClick:()=>m(),className:a.searchBtn,children:"Search"}),t("button",{className:`${a.filterToggleBtn} ${F?a.active:""}`,onClick:()=>Ne(!F),children:[t(p,{name:"filter",size:14}),t("span",{children:"Filters"}),F?t(p,{name:"chevron-up",size:12}):t(p,{name:"chevron-down",size:12})]})]})]}),t("div",{className:`${a.advancedFilters} ${F?a.show:""}`,children:[t("div",{className:a.filterDivider}),t("div",{className:a.filterGrid,children:[t("div",{className:a.filterItem,children:[t("label",{children:"Type"}),t("select",{value:y,onChange:e=>W(e.currentTarget.value),children:pt.map(e=>t("option",{value:e.value,children:e.label},e.value))})]}),t("div",{className:a.filterItem,children:[t("label",{children:"Season"}),t("select",{value:S,onChange:e=>I(e.currentTarget.value),children:gt.map(e=>t("option",{value:e.value,children:e.label},e.value))})]}),t("div",{className:a.filterItem,children:[t("label",{children:"Year"}),t("select",{value:b,onChange:e=>$(e.currentTarget.value),children:Fe.map(e=>t("option",{value:e.value,children:e.label},e.value))})]})]}),ne.length>0&&t("div",{className:a.genreSection,children:[t("label",{className:a.genreLabel,children:"Genres"}),t("div",{className:a.genreContainer,children:ne.map(e=>t("button",{className:`${a.genreButton} ${a[w[e]||""]}`,onClick:()=>De(e),children:e},e))})]}),t("div",{className:a.filterActions,children:[t(T,{variant:"secondary",onClick:Me,children:"Reset All"}),t(T,{onClick:()=>m(),className:a.applyBtn,children:"Apply Filters"})]})]})]}),t("div",{className:a.resultsHeader,ref:K,children:[t("h3",{className:a.resultsTitle,children:[i?"Continue Watching":d,t("span",{className:a.itemCount,children:["(",x," items)"]})]}),t("div",{className:a.headerActions,children:[t("button",{className:`${a.manageBtn} ${E?a.active:""}`,onClick:_e,children:[t(p,{name:"pencil-alt",size:13}),t("span",{children:"Bulk Manage"})]}),x>0&&t(be,{page:v,totalPages:he,canGoNext:me,onChange:ce,isLoading:Y})]})]}),E&&t("div",{className:a.manageBar,children:[t("button",{className:a.selectAllBtn,onClick:Ye,children:[t("span",{className:`${a.selectAllBox} ${ee?a.selectAllBoxChecked:""}`,"aria-hidden":"true"}),t("span",{children:ee?"Clear Page":"Select All"})]}),t("span",{className:a.manageCount,children:[h.size," selected"]}),t("div",{className:a.manageSpacer}),!i&&t("select",{className:a.manageStatusSelect,value:"",onChange:e=>{e.currentTarget.value&&je(e.currentTarget.value)},disabled:h.size===0,title:"Set status for selected items",children:[t("option",{value:"",children:"Set status…"}),Le.map(e=>t("option",{value:e,children:e},e))]}),t("button",{className:a.manageRemoveBtn,onClick:qe,disabled:h.size===0,children:[t(p,{name:"trash",size:13}),t("span",{children:"Remove Selected"})]})]}),Y?t(ot,{}):le?t(dt,{message:le.message}):t(He,{children:[(y!=="ALL"||S!=="ALL"||b!=="ALL"||Object.keys(w).length>0||f.trim())&&t("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px",alignItems:"center",marginBottom:"1.5rem"},children:[t("span",{style:{fontSize:"0.8rem",color:"var(--text-muted)",fontWeight:600},children:"Active Filters:"}),f.trim()&&t("span",{className:"badge badge-secondary",style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:["Search: ",f,t("button",{onClick:e=>{e.stopPropagation(),e.preventDefault(),P(""),m()},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]}),y!=="ALL"&&t("span",{className:"badge badge-secondary",style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:["Type: ",y,t("button",{onClick:e=>{e.stopPropagation(),e.preventDefault(),W("ALL"),m()},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]}),S!=="ALL"&&t("span",{className:"badge badge-secondary",style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:["Season: ",S,t("button",{onClick:e=>{e.stopPropagation(),e.preventDefault(),I("ALL"),m()},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]}),b!=="ALL"&&t("span",{className:"badge badge-secondary",style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:["Year: ",b,t("button",{onClick:e=>{e.stopPropagation(),e.preventDefault(),$("ALL"),m()},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]}),Object.entries(w).map(([e,n])=>t("span",{className:`badge ${n==="include"?"badge-primary":"badge-danger"}`,style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:[n==="include"?`+ ${e}`:`- ${e}`,t("button",{onClick:s=>{s.stopPropagation(),s.preventDefault(),O(r=>{const o={...r};return delete o[e],o}),m()},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]},e))]}),t("div",{className:`${a.grid} ${Ce?a.lowEnd:""}`,children:Z.map(e=>{const n=h.has(e.id);return t("div",{className:`${a.itemWrapper} ${n?a.selected:""}`,children:[E&&t("div",{className:a.selectOverlay,onClick:()=>Ue(e.id),title:n?"Deselect":"Select",children:t("span",{className:a.selectBadge,children:n?t(p,{name:"check",size:12}):null})}),t(ct,{anime:e,continueWatching:i,onRemove:()=>oe(e.id,e.name),layout:"vertical"}),!i&&!E&&t("div",{className:a.cardActions,children:[t("select",{className:a.statusSelect,value:e.status,onChange:s=>Ie.mutate({id:e.id,status:s.currentTarget.value}),children:Le.map(s=>t("option",{value:s,children:s},s))}),t("button",{className:a.removeBtn,onClick:()=>oe(e.id,e.name),title:"Remove from Watchlist","aria-label":"Remove from Watchlist",children:t(p,{name:"trash",size:12})})]})]},e._id)})})]}),!Y&&Z.length===0&&t("div",{className:a.emptyState,children:[t("h3",{className:a.emptyTitle,children:"Your watchlist is looking a bit lonely"}),t("p",{className:a.emptyText,children:d!=="All"||f||y!=="ALL"||S!=="ALL"||b!=="ALL"||Object.keys(w).length>0?"No anime match these filters. Try adjusting them to see more titles.":"Let's find something to watch!"}),t("button",{className:a.emptyBtn,onClick:()=>g("/search"),children:[t(p,{name:"search",size:14}),t("span",{children:"Browse Anime"})]})]}),x>0&&t("div",{className:a.bottomPagination,children:t(be,{page:v,totalPages:he,canGoNext:me,onChange:ce,isLoading:Y,variant:"labeled"})}),t(te,{isOpen:!!c,onClose:de,title:i?"Reset Progress":"Remove from Watchlist",children:[t(te.Body,{children:[t("p",{children:c?.ids&&c.ids.length>1?i?`Are you sure you want to remove watch progress for ${c.ids.length} items?`:`Are you sure you want to remove ${c.ids.length} items from your watchlist?`:i?`Are you sure you want to remove your watch progress for "${c?.name}"?`:`Are you sure you want to remove "${c?.name}" from your watchlist?`}),i&&t("label",{children:[t("input",{type:"checkbox",checked:V,onChange:e=>D(e.target.checked)}),"Also remove from my watchlist"]}),!i&&!(c?.ids&&c.ids.length>1)&&t("label",{children:[t("input",{type:"checkbox",checked:se,onChange:e=>z(e.target.checked)}),"Remember my choice"]})]}),t(te.Actions,{children:[t(T,{variant:"secondary",onClick:de,children:"No"}),t(T,{variant:"danger",onClick:ze,children:"Yes"})]})]})]})};export{Tt as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as n}from"./index-
|
|
1
|
+
import{_ as n}from"./index-D2RkUJIN.js";let a=null,e=null;async function r(){return a||(e||(e=n(()=>import("./hls-BOLXTnjL.js"),[]).then(l=>(a=l.default,a)).catch(()=>null)),e)}function c(l){return l.canPlayType("application/vnd.apple.mpegurl")!==""||l.canPlayType("application/x-mpegURL")!==""}export{c,r as l};
|