@serifpersia/dango 3.3.4

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 (190) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +258 -0
  3. package/client/dist/assets/AnimeCard-B5A20jAI.js +1 -0
  4. package/client/dist/assets/AnimeInfo-0huPAq0O.js +1 -0
  5. package/client/dist/assets/AnimeInfo-BFWtHlPC.css +1 -0
  6. package/client/dist/assets/AnimeInfoPage-Dqr5QH6R.js +2 -0
  7. package/client/dist/assets/AnimeMetaDetails-BPvv5xIl.js +1 -0
  8. package/client/dist/assets/AnimeMetaDetails-BwNQnRCd.css +1 -0
  9. package/client/dist/assets/Asmr-B6ZiqkmU.js +2 -0
  10. package/client/dist/assets/Asmr-Cq2ua6Zk.css +1 -0
  11. package/client/dist/assets/Asmr.module-ChUXDZKx.js +1 -0
  12. package/client/dist/assets/AsmrResetProgressModal-Cqsoo3XC.js +1 -0
  13. package/client/dist/assets/AvSyncCalibrator-C1_iBSyL.css +1 -0
  14. package/client/dist/assets/AvSyncCalibrator-C8ZoIwMY.js +10 -0
  15. package/client/dist/assets/ErrorMessage-CXoRbrLN.css +1 -0
  16. package/client/dist/assets/ErrorMessage-z4f4WGgP.js +1 -0
  17. package/client/dist/assets/Home-DtRtTuI9.css +1 -0
  18. package/client/dist/assets/Home-thJhPfs1.js +1 -0
  19. package/client/dist/assets/Insights-DKtoVe6L.css +1 -0
  20. package/client/dist/assets/Insights-ZlgPrzGD.js +1 -0
  21. package/client/dist/assets/LibraryListPage-CCiee-Ot.js +1 -0
  22. package/client/dist/assets/ListeningList-ctAz_6Zi.js +1 -0
  23. package/client/dist/assets/Manga-BI9WMTx5.js +1 -0
  24. package/client/dist/assets/Manga-Dp_-l1Pw.css +1 -0
  25. package/client/dist/assets/Manga.module-BcfOdsNP.js +1 -0
  26. package/client/dist/assets/MangaInfoPage-DcrEr7Sk.js +1 -0
  27. package/client/dist/assets/MangaReadPage-SYg63m48.js +1 -0
  28. package/client/dist/assets/MangaResetProgressModal-DX-1PS4h.js +1 -0
  29. package/client/dist/assets/Map-CXFqXmsZ.css +1 -0
  30. package/client/dist/assets/Map-Dj51g5zL.js +1 -0
  31. package/client/dist/assets/Mature-DJmUUtlF.css +1 -0
  32. package/client/dist/assets/Mature-Dqh_9SA3.js +1 -0
  33. package/client/dist/assets/MediaCard-Be1ST9oj.js +1 -0
  34. package/client/dist/assets/MediaCard-DB6Yjgky.css +1 -0
  35. package/client/dist/assets/Music-BGH_0voi.css +1 -0
  36. package/client/dist/assets/Music-zsPwT8_5.js +1 -0
  37. package/client/dist/assets/OptionListMenu-Drc_vybW.js +1 -0
  38. package/client/dist/assets/Player-B036Ic3m.css +1 -0
  39. package/client/dist/assets/Player-BEtAYps2.js +56 -0
  40. package/client/dist/assets/PlayerRedirect-D70t8VUW.js +1 -0
  41. package/client/dist/assets/PlayerSettings-Bj6SsmQ2.css +1 -0
  42. package/client/dist/assets/PlayerSettings-Cwoji-P7.js +1 -0
  43. package/client/dist/assets/QueueOptionsButton-B6BMq66e.js +1 -0
  44. package/client/dist/assets/QueueOptionsButton-CM15uQn8.css +1 -0
  45. package/client/dist/assets/QueueRail-BUYEjdaq.css +1 -0
  46. package/client/dist/assets/QueueRail-VxpUDBSm.js +1 -0
  47. package/client/dist/assets/Radio-B2Q_Egj7.js +1 -0
  48. package/client/dist/assets/Radio-CCHNFN7R.css +1 -0
  49. package/client/dist/assets/Radio.module-DGSZLpKM.js +1 -0
  50. package/client/dist/assets/ReadingList-O0QPwXu7.js +1 -0
  51. package/client/dist/assets/ResetProgressModal-CR_ovLAu.js +1 -0
  52. package/client/dist/assets/Search-C8e2nlDD.js +1 -0
  53. package/client/dist/assets/Search-Cs45oAwI.css +1 -0
  54. package/client/dist/assets/Search.module-CMEai-B-.js +1 -0
  55. package/client/dist/assets/Settings-AuFxQcJF.css +1 -0
  56. package/client/dist/assets/Settings-BgPWBl2V.js +21 -0
  57. package/client/dist/assets/SkeletonGrid-CtHKKMLj.js +1 -0
  58. package/client/dist/assets/SkeletonGrid-DhPYefXr.css +1 -0
  59. package/client/dist/assets/SynopsisText-BcpwT5iw.js +1 -0
  60. package/client/dist/assets/SynopsisText-CYv2W3yR.css +1 -0
  61. package/client/dist/assets/Trackers-Bfoiyuzy.js +2 -0
  62. package/client/dist/assets/Trackers-D5XBOCDp.css +1 -0
  63. package/client/dist/assets/Tv-Ca0fCdko.js +3 -0
  64. package/client/dist/assets/Tv-CuEl3Iol.css +1 -0
  65. package/client/dist/assets/TvInfo-Bu36xJyO.css +1 -0
  66. package/client/dist/assets/TvInfo-D_scgw_h.js +1 -0
  67. package/client/dist/assets/TvPopup-YTI7dEbJ.js +1 -0
  68. package/client/dist/assets/TvSearch-CxU33UOf.js +1 -0
  69. package/client/dist/assets/TvWatchlist-B4X1fWEH.js +1 -0
  70. package/client/dist/assets/VirtualKeyboard-6ZNTym4R.js +1 -0
  71. package/client/dist/assets/VirtualKeyboard-KIPc5ZGH.css +1 -0
  72. package/client/dist/assets/Watchlist-BiDEU0iV.css +1 -0
  73. package/client/dist/assets/Watchlist-P6YMZUdF.js +1 -0
  74. package/client/dist/assets/Watchlist.module-XGtVQr1d.js +1 -0
  75. package/client/dist/assets/hls-BOLXTnjL.js +42 -0
  76. package/client/dist/assets/hls-C4cG9wQw.js +1 -0
  77. package/client/dist/assets/index-BOKlZEHq.js +30354 -0
  78. package/client/dist/assets/index-CUm1meqr.css +1 -0
  79. package/client/dist/assets/index-IZgh1beL.js +178 -0
  80. package/client/dist/assets/useAnimeInfoData-DeuwDSnI.js +1 -0
  81. package/client/dist/assets/useAsmr-CbMVRjmV.js +1 -0
  82. package/client/dist/assets/useAsmrPopup-D91Q3CBg.js +1 -0
  83. package/client/dist/assets/useIsMobile-Dm_b6Ob3.js +1 -0
  84. package/client/dist/assets/useMangaLibrary-BPvFb1lU.js +1 -0
  85. package/client/dist/assets/useMangaPopup-BOL2mQJs.js +1 -0
  86. package/client/dist/assets/useMatureConsent-CT7-KfzG.js +1 -0
  87. package/client/dist/assets/useProviders-BsRGONMA.js +1 -0
  88. package/client/dist/assets/useTv-D37MfTHA.js +1 -0
  89. package/client/dist/assets/useTvLibrary-Cwxgy_Bg.js +1 -0
  90. package/client/dist/assets/vendor-core-8R2fFbyN.js +1 -0
  91. package/client/dist/assets/vendor-icons-CDMuNDeL.js +1 -0
  92. package/client/dist/assets/vendor-query-BXRECSI6.js +1 -0
  93. package/client/dist/assets/vendor-ui-CUDCvRS_.js +1 -0
  94. package/client/dist/av-sync-test.mp4 +0 -0
  95. package/client/dist/favicon.ico +0 -0
  96. package/client/dist/index.html +46 -0
  97. package/client/dist/logo-mochi.png +0 -0
  98. package/client/dist/logo-sakura.png +0 -0
  99. package/client/dist/logo.png +0 -0
  100. package/client/dist/placeholder.svg +4 -0
  101. package/client/dist/robots.txt +3 -0
  102. package/orchestrator.js +534 -0
  103. package/package.json +85 -0
  104. package/server/dist/app-auth.js +177 -0
  105. package/server/dist/config.js +175 -0
  106. package/server/dist/controllers/asmr-library.controller.js +288 -0
  107. package/server/dist/controllers/auth.controller.js +225 -0
  108. package/server/dist/controllers/data.controller.js +766 -0
  109. package/server/dist/controllers/insights.controller.js +198 -0
  110. package/server/dist/controllers/manga-library.controller.js +296 -0
  111. package/server/dist/controllers/music.controller.js +698 -0
  112. package/server/dist/controllers/proxy.controller.js +820 -0
  113. package/server/dist/controllers/settings.controller.js +609 -0
  114. package/server/dist/controllers/tv-library.controller.js +310 -0
  115. package/server/dist/controllers/watchlist.controller.js +1015 -0
  116. package/server/dist/db.js +145 -0
  117. package/server/dist/discord-gateway.js +391 -0
  118. package/server/dist/discord-rpc.js +427 -0
  119. package/server/dist/github-sync.js +512 -0
  120. package/server/dist/google.js +748 -0
  121. package/server/dist/lib/anilist.js +1549 -0
  122. package/server/dist/lib/anischedule.js +194 -0
  123. package/server/dist/lib/discord-roles-sync.service.js +130 -0
  124. package/server/dist/lib/ipc.js +24 -0
  125. package/server/dist/lib/kitsu.js +544 -0
  126. package/server/dist/lib/mal.js +934 -0
  127. package/server/dist/lib/migration.js +329 -0
  128. package/server/dist/lib/offline-db.js +401 -0
  129. package/server/dist/lib/temp-ids.js +3 -0
  130. package/server/dist/lib/tmdb.js +72 -0
  131. package/server/dist/lib/tracker/anilist-tracker.js +245 -0
  132. package/server/dist/lib/tracker/sync.service.js +496 -0
  133. package/server/dist/lib/ytmusic.js +125 -0
  134. package/server/dist/logger.js +16 -0
  135. package/server/dist/providers/manga/manga.types.js +7 -0
  136. package/server/dist/providers/provider.interface.js +1 -0
  137. package/server/dist/providers/remote-loader.js +574 -0
  138. package/server/dist/providers/remote-types.js +117 -0
  139. package/server/dist/providers/title-matching.js +225 -0
  140. package/server/dist/providers/tv.types.js +1 -0
  141. package/server/dist/rclone.js +120 -0
  142. package/server/dist/repositories/asmr.repository.js +123 -0
  143. package/server/dist/repositories/insights.repository.js +85 -0
  144. package/server/dist/repositories/library.repository.js +108 -0
  145. package/server/dist/repositories/mal-cache.repository.js +55 -0
  146. package/server/dist/repositories/manga.repository.js +138 -0
  147. package/server/dist/repositories/notifications.repository.js +41 -0
  148. package/server/dist/repositories/queue.repository.js +61 -0
  149. package/server/dist/repositories/settings.repository.js +12 -0
  150. package/server/dist/repositories/shows-meta.repository.js +42 -0
  151. package/server/dist/repositories/temp-show-ids.repository.js +51 -0
  152. package/server/dist/repositories/tv.repository.js +151 -0
  153. package/server/dist/repositories/watched-episodes.repository.js +52 -0
  154. package/server/dist/repositories/watchlist.repository.js +71 -0
  155. package/server/dist/request-logger.js +16 -0
  156. package/server/dist/routes/asmr-library.routes.js +23 -0
  157. package/server/dist/routes/asmr.routes.js +81 -0
  158. package/server/dist/routes/auth.routes.js +25 -0
  159. package/server/dist/routes/data.routes.js +47 -0
  160. package/server/dist/routes/discord-gateway.routes.js +51 -0
  161. package/server/dist/routes/insights.routes.js +34 -0
  162. package/server/dist/routes/lan-auth.routes.js +46 -0
  163. package/server/dist/routes/manga-library.routes.js +23 -0
  164. package/server/dist/routes/manga.routes.js +141 -0
  165. package/server/dist/routes/music.routes.js +20 -0
  166. package/server/dist/routes/providers.routes.js +17 -0
  167. package/server/dist/routes/proxy.routes.js +12 -0
  168. package/server/dist/routes/radio.routes.js +138 -0
  169. package/server/dist/routes/settings.routes.js +24 -0
  170. package/server/dist/routes/tracker.routes.js +164 -0
  171. package/server/dist/routes/translate.routes.js +88 -0
  172. package/server/dist/routes/tv-library.routes.js +23 -0
  173. package/server/dist/routes/tv.routes.js +629 -0
  174. package/server/dist/routes/watchlist.routes.js +341 -0
  175. package/server/dist/scripts/backfill-episode-duration.js +42 -0
  176. package/server/dist/server.js +529 -0
  177. package/server/dist/shipped-defaults.js +7 -0
  178. package/server/dist/sync-config.js +23 -0
  179. package/server/dist/sync-payload.js +91 -0
  180. package/server/dist/sync.js +1128 -0
  181. package/server/dist/utils/cache.utils.js +25 -0
  182. package/server/dist/utils/cookie.utils.js +13 -0
  183. package/server/dist/utils/db-utils.js +9 -0
  184. package/server/dist/utils/env.utils.js +77 -0
  185. package/server/dist/utils/http.utils.js +70 -0
  186. package/server/dist/utils/machine-id.js +40 -0
  187. package/server/dist/utils/megaplay.utils.js +41 -0
  188. package/server/dist/utils/request-context.js +2 -0
  189. package/server/dist/utils/security.utils.js +94 -0
  190. package/server/package.json +44 -0
@@ -0,0 +1 @@
1
+ import{d as v,A as E,h as k,q as K,$ as I,u as o}from"./vendor-core-8R2fFbyN.js";const D="_keyboard_1ia7t_1",O="_small_1ia7t_18",W="_medium_1ia7t_25",R="_large_1ia7t_32",T="_topBar_1ia7t_39",q="_dragHandle_1ia7t_48",U="_grip_1ia7t_59",V="_topButton_1ia7t_67",X="_key_1ia7t_1",Y="_closeButton_1ia7t_98",j="_keys_1ia7t_104",A="_row_1ia7t_111",F="_wideKey_1ia7t_127",J="_extraWideKey_1ia7t_131",P="_spaceKey_1ia7t_135",G="_spaceIcon_1ia7t_143",Q="_activeKey_1ia7t_151",t={keyboard:D,small:O,medium:W,large:R,topBar:T,dragHandle:q,grip:U,topButton:V,key:X,closeButton:Y,keys:j,row:A,wideKey:F,extraWideKey:J,spaceKey:P,spaceIcon:G,activeKey:Q},N="virtual-keyboard-state",b=["small","medium","large"],Z=["1","2","3","4","5","6","7","8","9","0"],ee=["!","@","#","$","%","^","&","*","(",")"],te=[["q","w","e","r","t","y","u","i","o","p"],["a","s","d","f","g","h","j","k","l"],["z","x","c","v","b","n","m"]],ne=()=>{const i={position:{x:Math.max(12,window.innerWidth-690),y:Math.max(90,window.innerHeight-330)},size:"medium"};try{const c=localStorage.getItem(N);if(!c)return i;const s=JSON.parse(c);return{position:s.position&&Number.isFinite(s.position.x)&&Number.isFinite(s.position.y)?s.position:i.position,size:s.size&&b.includes(s.size)?s.size:i.size}}catch{return i}},x=(i,c)=>{const s=c?.offsetWidth??650,r=c?.offsetHeight??270;return{x:Math.min(Math.max(8,i.x),Math.max(8,window.innerWidth-s-8)),y:Math.min(Math.max(8,i.y),Math.max(8,window.innerHeight-r-8))}};function se({activeInputRef:i,isVisible:c,onClose:s}){const[{position:r,size:l},h]=v(ne),[f,S]=v(!1),[g,$]=v(!1),_=E(null),u=E(null);k(()=>{localStorage.setItem(N,JSON.stringify({position:r,size:l}))},[r,l]),k(()=>{const e=()=>{h(n=>({...n,position:x(n.position,_.current)}))};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const w=()=>i.current&&document.contains(i.current)?i.current:document.activeElement instanceof HTMLInputElement?document.activeElement:null,d=e=>{const n=w();if(!n)return;const a=n.selectionStart??n.value.length,y=n.selectionEnd??n.value.length;n.setRangeText(e,a,y,"end"),n.dispatchEvent(new Event("input",{bubbles:!0})),n.focus()},z=()=>{const e=w();if(!e)return;const n=e.selectionStart??e.value.length,a=e.selectionEnd??e.value.length;n===a&&n===0||(e.setRangeText("",n===a?n-1:n,a,"end"),e.dispatchEvent(new Event("input",{bubbles:!0})),e.focus())},M=()=>{const e=w();if(!e){s();return}const n=e.form;n?n.requestSubmit():e.dispatchEvent(new KeyboardEvent("keydown",{key:"Enter",bubbles:!0})),s()},B=e=>{e.preventDefault()},m=K(e=>{if(!u.current)return;const n={x:e.clientX-u.current.x,y:e.clientY-u.current.y};h(a=>({...a,position:x(n,_.current)}))},[]),p=K(()=>{u.current=null,window.removeEventListener("mousemove",m),window.removeEventListener("mouseup",p)},[m]),C=e=>{e.preventDefault(),u.current={x:e.clientX-r.x,y:e.clientY-r.y},window.addEventListener("mousemove",m),window.addEventListener("mouseup",p)};if(k(()=>()=>{window.removeEventListener("mousemove",m),window.removeEventListener("mouseup",p)},[m,p]),!c)return null;const L=g?ee:Z,H=()=>{h(e=>{const n=b[(b.indexOf(e.size)+1)%b.length];return{...e,size:n}})};return I(o("div",{ref:_,className:`${t.keyboard} ${t[l]}`,style:{left:r.x,top:r.y},onMouseDown:B,"data-virtual-keyboard-root":!0,children:[o("div",{className:t.topBar,children:[o("div",{className:t.dragHandle,onMouseDown:C,"aria-label":"Move virtual keyboard",children:[o("span",{className:t.grip,"aria-hidden":"true"}),o("span",{children:"Virtual Keyboard"})]}),o("button",{type:"button",className:t.topButton,onClick:H,children:["Size: ",l[0].toUpperCase()+l.slice(1)]}),o("button",{type:"button",className:`${t.topButton} ${t.closeButton}`,onClick:s,children:"X"})]}),o("div",{className:t.keys,children:[o("div",{className:t.row,children:[L.map(e=>o("button",{type:"button",className:t.key,onClick:()=>d(e),children:e},e)),o("button",{type:"button",className:`${t.key} ${t.wideKey}`,onClick:z,"aria-label":"Backspace",children:"⟵"})]}),te.map((e,n)=>o("div",{className:t.row,children:[e.map(a=>{const y=f?a.toUpperCase():a;return o("button",{type:"button",className:t.key,onClick:()=>d(y),children:y},a)}),n===1&&o("button",{type:"button",className:`${t.key} ${t.wideKey}`,onClick:M,children:"Enter"})]},e.join(""))),o("div",{className:t.row,children:[o("button",{type:"button",className:`${t.key} ${t.wideKey} ${g?t.activeKey:""}`,onClick:()=>$(e=>!e),children:"Ctrl"}),o("button",{type:"button",className:`${t.key} ${t.wideKey} ${f?t.activeKey:""}`,onClick:()=>S(e=>!e),children:"Shift"}),o("button",{type:"button",className:`${t.key} ${t.spaceKey}`,onClick:()=>d(" "),"aria-label":"Space",children:o("span",{className:t.spaceIcon})}),o("button",{type:"button",className:t.key,onClick:()=>d("."),children:"."}),o("button",{type:"button",className:t.key,onClick:()=>d("-"),children:"-"})]})]})]}),document.body)}export{se as default};
@@ -0,0 +1 @@
1
+ ._keyboard_1ia7t_1{position:fixed;z-index:var(--z-overlay);width:min(var(--keyboard-width),calc(100vw - 24px));overflow:hidden;color:var(--text-primary);background:linear-gradient(180deg,#ffffff14,#ffffff05),#0f0f11f7;border:1px solid var(--border-secondary);border-radius:var(--radius-md);box-shadow:0 18px 60px #00000075;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);-webkit-user-select:none;user-select:none}._small_1ia7t_18{--keyboard-width: 500px;--key-size: 34px;--key-font: .8rem;--keyboard-gap: 5px}._medium_1ia7t_25{--keyboard-width: 650px;--key-size: 42px;--key-font: .95rem;--keyboard-gap: 7px}._large_1ia7t_32{--keyboard-width: 820px;--key-size: 52px;--key-font: 1.08rem;--keyboard-gap: 9px}._topBar_1ia7t_39{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);background:#ffffff0f;border-bottom:1px solid var(--border-primary)}._dragHandle_1ia7t_48{flex:1;min-height:34px;display:flex;align-items:center;gap:var(--space-2);color:var(--text-secondary);font-size:var(--font-size-sm);cursor:move}._grip_1ia7t_59{width:22px;height:14px;background-image:radial-gradient(currentColor 1px,transparent 1px);background-size:6px 6px;opacity:.8}._topButton_1ia7t_67,._key_1ia7t_1{border:1px solid var(--border-secondary);color:var(--text-primary);background:#ffffff14;font:inherit;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,transform .08s ease}._topButton_1ia7t_67{min-height:34px;padding:0 var(--space-3);border-radius:var(--radius-sm);font-size:var(--font-size-sm)}._topButton_1ia7t_67:hover,._key_1ia7t_1:hover{background:#ffffff24;border-color:#ffffff42}._topButton_1ia7t_67:active,._key_1ia7t_1:active{transform:translateY(1px)}._closeButton_1ia7t_98{width:44px;height:44px;padding:0}._keys_1ia7t_104{display:grid;gap:var(--keyboard-gap);padding:var(--space-3);justify-items:center}._row_1ia7t_111{display:flex;justify-content:center;gap:var(--keyboard-gap);width:100%;max-width:calc((var(--key-size) * 10) + (var(--key-size) * 1.75) + (var(--keyboard-gap) * 10))}._key_1ia7t_1{min-width:var(--key-size);height:var(--key-size);border-radius:var(--radius-sm);font-size:var(--key-font);font-weight:var(--font-weight-semibold)}._wideKey_1ia7t_127{min-width:calc(var(--key-size) * 1.75)}._extraWideKey_1ia7t_131{min-width:calc(var(--key-size) * 2.3)}._spaceKey_1ia7t_135{flex:1;max-width:calc((var(--key-size) * 10) + (var(--key-size) * 1.75) + (var(--keyboard-gap) * 10) - (var(--key-size) * 5.5) - (var(--keyboard-gap) * 4))}._spaceIcon_1ia7t_143{width:14%;height:12px;border-bottom:2px solid currentColor;display:inline-block;opacity:.9}._activeKey_1ia7t_151{border-color:var(--accent);background:linear-gradient(135deg,var(--accent),var(--accent-dark))}@media(max-width:700px){._keyboard_1ia7t_1{left:8px!important;width:calc(100vw - 16px)}._small_1ia7t_18,._medium_1ia7t_25,._large_1ia7t_32{--key-size: 31px;--keyboard-gap: 4px;--key-font: .76rem}._dragHandle_1ia7t_48 span{display:none}}
@@ -0,0 +1 @@
1
+ ._header_ezj97_1{margin-bottom:var(--space-8);animation:_fadeIn_ezj97_1 .8s var(--ease-smooth)}._title_ezj97_6{font-size:var(--font-size-xl);font-weight:800;color:var(--text-primary);margin:0 0 var(--space-2);letter-spacing:-.02em}._subtitle_ezj97_14{color:var(--text-tertiary);font-size:var(--font-size-sm);margin:0;font-weight:500}._controls_ezj97_21{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-6);margin-bottom:var(--space-10);background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);padding:var(--space-4) var(--space-6);border-radius:var(--radius-xl);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);animation:_slideUpIn_ezj97_1 .8s var(--ease-smooth);width:100%;box-sizing:border-box}._filters_ezj97_40{display:flex;flex-wrap:wrap;gap:var(--space-2)}._filterBtn_ezj97_46{background:#ffffff0d;color:var(--text-secondary);border:1px solid var(--border-primary);padding:.6rem 1.2rem;border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:600;transition:all var(--transition-base);cursor:pointer}._filterBtn_ezj97_46:hover{background:#ffffff1a;color:var(--text-primary);border-color:var(--text-tertiary)}._filterBtn_ezj97_46._active_ezj97_64{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 4px 15px var(--accent-glow)}._sortSelect_ezj97_71{width:180px;height:44px;padding:0 var(--space-4);background-color:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);color:var(--text-primary);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2371717a' stroke-width='2' viewBox='0 0 12 12'%3E%3Cpolyline points='3 5 6 8 9 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;transition:all var(--transition-fast)}._sortSelect_ezj97_71:hover{background-color:var(--bg-elevated);border-color:var(--border-secondary)}._sortSelect_ezj97_71:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}._filterContainer_ezj97_100{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:var(--space-6);border-radius:var(--radius-xl);margin-bottom:var(--space-10);box-shadow:var(--glass-shadow);animation:_slideUpIn_ezj97_1 .8s var(--ease-smooth);width:100%;box-sizing:border-box}._searchBarWrapper_ezj97_114{display:flex;gap:var(--space-4);align-items:center}._inputIconWrapper_ezj97_120{flex:1;position:relative}._searchIcon_ezj97_125{position:absolute;left:var(--space-4);top:50%;transform:translateY(-50%);color:var(--text-tertiary);pointer-events:none}._searchInput_ezj97_134{width:100%;height:52px;padding:0 var(--space-4) 0 3.2rem;background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);color:var(--text-primary);font-size:var(--font-size-base);font-family:inherit;transition:all var(--transition-fast)}._searchInput_ezj97_134:focus{outline:none;border-color:var(--accent);background:var(--bg-elevated);box-shadow:0 0 0 4px var(--accent-glow)}._searchActions_ezj97_154{display:flex;gap:var(--space-3)}._searchBtn_ezj97_159{height:52px;padding:0 var(--space-8)!important}._filterToggleBtn_ezj97_164{display:flex;align-items:center;gap:var(--space-2);height:52px;padding:0 var(--space-4);background:#ffffff0d;border:1px solid var(--border-secondary);border-radius:var(--radius-lg);color:var(--text-primary);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast)}._filterToggleBtn_ezj97_164:hover{background:#ffffff1a;border-color:var(--text-secondary)}._filterToggleBtn_ezj97_164._active_ezj97_64{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 4px 15px var(--accent-glow)}._advancedFilters_ezj97_192{max-height:0;overflow:hidden;transition:all .4s cubic-bezier(.4,0,.2,1);opacity:0}._advancedFilters_ezj97_192._show_ezj97_199{max-height:1200px;opacity:1;margin-top:var(--space-6)}._filterDivider_ezj97_205{height:1px;background:var(--border-primary);margin-bottom:var(--space-6)}._filterGrid_ezj97_211{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-6);margin-bottom:var(--space-8)}._filterItem_ezj97_218{display:flex;flex-direction:column;gap:var(--space-2)}._filterItem_ezj97_218 label{font-size:.7rem;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}._filterItem_ezj97_218 select{height:44px;padding:0 var(--space-4);background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-sm);font-family:inherit;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2371717a' stroke-width='2' viewBox='0 0 12 12'%3E%3Cpolyline points='3 5 6 8 9 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;transition:all var(--transition-fast)}._filterItem_ezj97_218 select:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._filterItem_ezj97_218 select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}._genreSection_ezj97_260{border-top:1px solid var(--border-primary);padding-top:var(--space-6);margin-bottom:var(--space-8)}._genreLabel_ezj97_266{display:block;font-size:.7rem;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-4)}._genreContainer_ezj97_276{display:flex;flex-wrap:wrap;gap:var(--space-2)}._genreButton_ezj97_282{background:#ffffff0d;border:1px solid var(--border-primary);color:var(--text-secondary);padding:.5rem 1rem;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;cursor:pointer;transition:all var(--transition-fast)}._genreButton_ezj97_282:hover{border-color:var(--accent);color:var(--text-primary)}._genreButton_ezj97_282._include_ezj97_299{background:color-mix(in srgb,var(--color-success) 10%,transparent);border-color:var(--color-success);color:var(--color-success)}._genreButton_ezj97_282._exclude_ezj97_305{background:color-mix(in srgb,var(--color-danger) 10%,transparent);border-color:var(--color-danger);color:var(--color-danger);text-decoration:line-through}._filterActions_ezj97_312{display:flex;justify-content:flex-end;gap:var(--space-4);border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._grid_ezj97_320{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-6);animation:_fadeIn_ezj97_1 .5s var(--ease-smooth);width:100%}@media(max-width:1400px){._grid_ezj97_320{grid-template-columns:repeat(6,1fr)}}@media(max-width:1200px){._grid_ezj97_320{grid-template-columns:repeat(5,1fr)}}@media(max-width:1024px){._grid_ezj97_320{grid-template-columns:repeat(4,1fr)}}@media(max-width:768px){._grid_ezj97_320{grid-template-columns:repeat(3,1fr);gap:var(--space-2);min-width:0;width:100%;align-items:start}._controls_ezj97_21,._filterContainer_ezj97_100{padding:var(--space-4);width:100%;box-sizing:border-box}._filters_ezj97_40{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;padding-bottom:var(--space-2)}._filters_ezj97_40::-webkit-scrollbar{display:none}._filterBtn_ezj97_46{flex-shrink:0;scroll-snap-align:start}._searchBarWrapper_ezj97_114{flex-direction:column;align-items:stretch}._searchActions_ezj97_154{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}._searchBtn_ezj97_159{padding:0!important}._filterGrid_ezj97_211{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){._grid_ezj97_320{grid-template-columns:repeat(2,1fr)!important;gap:12px!important;min-width:0;width:100%;overflow:hidden;justify-items:center}._itemWrapper_ezj97_410{width:100%;max-width:160px;min-width:0;overflow:hidden;height:auto}._cardActions_ezj97_418{gap:8px;margin-top:8px;width:100%}._statusSelect_ezj97_424{height:36px;font-size:11px;padding:0 8px;background-position:right .6rem center;flex-grow:1}._removeBtn_ezj97_432{width:36px;height:36px;flex-shrink:0}._filterGrid_ezj97_211{grid-template-columns:1fr}}._resultsHeader_ezj97_443{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6);gap:var(--space-4);flex-wrap:wrap;width:100%}._resultsTitle_ezj97_453{font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary);margin:0;display:flex;align-items:center;gap:var(--space-2)}._itemCount_ezj97_463{font-size:var(--font-size-sm);color:var(--text-tertiary);font-weight:500}._pagination_ezj97_469{display:flex;align-items:center;gap:var(--space-3);background:var(--bg-secondary);padding:6px 12px;border-radius:var(--radius-full);border:1px solid var(--border-secondary)}._pageBtn_ezj97_479{background:none;border:none;color:var(--text-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:6px;border-radius:var(--radius-full);transition:all var(--transition-fast);gap:var(--space-2)}._pageBtn_ezj97_479:hover:not(:disabled){background:var(--bg-tertiary);color:var(--accent)}._pageBtn_ezj97_479:disabled{opacity:.3;cursor:not-allowed}._pageBtn_ezj97_479 span{font-size:var(--font-size-xs);font-weight:600}._pageInfo_ezj97_508{font-size:var(--font-size-sm);color:var(--text-secondary);min-width:80px;text-align:center}._pageInfo_ezj97_508 strong{color:var(--text-primary)}._bottomPagination_ezj97_519{display:flex;justify-content:center;margin-top:var(--space-10);padding-top:var(--space-6);border-top:1px solid var(--border-primary);width:100%}._itemWrapper_ezj97_410{display:flex;flex-direction:column;height:100%;transition:transform var(--transition-base)}._itemWrapper_ezj97_410:hover{transform:translateY(-4px)}._cardActions_ezj97_418{margin-top:.5rem;display:flex;align-items:center;gap:.5rem;background:var(--bg-surface, #181820);padding:4px;border-radius:var(--radius-md);border:1px solid var(--border-primary)}._statusSelect_ezj97_424{flex-grow:1;height:36px;padding:0 .75rem;background-color:#ffffff0a!important;border:1px solid var(--border-primary)!important;border-radius:var(--radius-sm)!important;color:var(--text-primary);font-size:.8rem;font-weight:600;cursor:pointer}._statusSelect_ezj97_424:hover{border-color:var(--border-accent)!important;background-color:#ffffff14!important}._removeBtn_ezj97_432{background:color-mix(in srgb,var(--color-danger) 10%,transparent);color:var(--color-danger);border:1px solid color-mix(in srgb,var(--color-danger) 20%,transparent);width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all .2s ease;cursor:pointer;flex-shrink:0}._removeBtn_ezj97_432:hover{background:var(--color-danger);color:var(--color-danger-text);border-color:var(--color-danger);transform:scale(1.05)}._emptyState_ezj97_590{text-align:center;padding:var(--space-16) var(--space-4);color:var(--text-tertiary);background:var(--glass-bg);background-image:radial-gradient(circle,color-mix(in srgb,var(--accent) 8%,transparent) 0%,transparent 70%);border:1px dashed var(--border-primary);border-radius:var(--radius-xl);font-size:var(--font-size-base);font-weight:500;animation:_fadeIn_ezj97_1 .5s var(--ease-smooth);width:100%;display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}._emptyTitle_ezj97_612{font-size:1.25rem;font-weight:700;color:var(--text-primary);margin:0}._emptyText_ezj97_619{color:var(--text-secondary);margin:0;max-width:420px;line-height:1.6}._emptyBtn_ezj97_626{display:inline-flex;align-items:center;gap:.5rem;margin-top:var(--space-2);padding:.7rem 1.6rem;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dark) 100%);color:var(--accent-text);font-size:var(--font-size-sm);font-weight:700;border:none;border-radius:var(--radius-full);cursor:pointer;box-shadow:0 4px 16px var(--accent-glow);transition:all var(--transition-base)}._emptyBtn_ezj97_626:hover{transform:translateY(-2px);box-shadow:0 8px 24px var(--accent-glow)}@keyframes _fadeIn_ezj97_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUpIn_ezj97_1{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}._headerActions_ezj97_668{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap}._manageBtn_ezj97_675{display:flex;align-items:center;gap:var(--space-2);height:40px;padding:0 var(--space-4);background:#ffffff0d;border:1px solid var(--border-secondary);border-radius:var(--radius-lg);color:var(--text-primary);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast)}._manageBtn_ezj97_675:hover{background:#ffffff1a;border-color:var(--text-secondary)}._manageBtn_ezj97_675._active_ezj97_64{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 4px 15px var(--accent-glow)}._manageBar_ezj97_703{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap;padding:var(--space-3) var(--space-4);margin-bottom:var(--space-6);background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--radius-xl);box-shadow:var(--glass-shadow);width:100%;box-sizing:border-box;animation:_fadeIn_ezj97_1 .3s ease-out}._selectAllBtn_ezj97_721{display:flex;align-items:center;gap:var(--space-2);background:none;border:none;color:var(--text-secondary);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);transition:all var(--transition-fast)}._selectAllBtn_ezj97_721:hover{color:var(--text-primary);background:#ffffff0f}._selectAllBox_ezj97_741{width:16px;height:16px;border-radius:50%;border:2px solid var(--accent);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;box-sizing:border-box}._selectAllBoxChecked_ezj97_753{background:var(--accent)}._selectAllBoxChecked_ezj97_753:after{content:"";width:4px;height:7px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg) translateY(-1px)}._manageCount_ezj97_766{font-size:var(--font-size-sm);font-weight:700;color:var(--accent-light);white-space:nowrap}._manageSpacer_ezj97_773{flex:1}._manageStatusSelect_ezj97_777{height:38px;padding:0 .75rem;background-color:#ffffff0a!important;border:1px solid var(--border-primary)!important;border-radius:var(--radius-sm)!important;color:var(--text-primary);font-size:.8rem;font-weight:600;cursor:pointer}._manageStatusSelect_ezj97_777:disabled{opacity:.45;cursor:default}._manageRemoveBtn_ezj97_794{display:flex;align-items:center;gap:var(--space-2);height:38px;padding:0 var(--space-4);background:color-mix(in srgb,var(--color-danger) 12%,transparent);color:var(--color-danger);border:1px solid color-mix(in srgb,var(--color-danger) 30%,transparent);border-radius:var(--radius-sm);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast)}._manageRemoveBtn_ezj97_794:hover:not(:disabled){background:color-mix(in srgb,var(--color-danger) 25%,transparent);border-color:var(--color-danger)}._manageRemoveBtn_ezj97_794:disabled{opacity:.45;cursor:default}._itemWrapper_ezj97_410{position:relative}._selectOverlay_ezj97_824{position:absolute;inset:0;z-index:6;cursor:pointer;border-radius:var(--radius-md);transition:background var(--transition-fast)}._selectOverlay_ezj97_824:hover{background:#6c9fff1f}._itemWrapper_ezj97_410._selected_ezj97_837 ._selectOverlay_ezj97_824{background:#6c9fff26;border:2px solid var(--accent);border-radius:var(--radius-md);box-shadow:0 8px 24px var(--accent-glow)}._selectBadge_ezj97_844{position:absolute;top:8px;left:8px;width:26px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:50%;border:2px solid rgba(255,255,255,.7);background:#00000073;color:#fff;transition:all var(--transition-fast)}._itemWrapper_ezj97_410._selected_ezj97_837 ._selectBadge_ezj97_844{background:var(--accent);border-color:var(--accent)}
@@ -0,0 +1 @@
1
+ import{h as he,n as je,a as qe,o as Ke,d as u,A as pe,T as j,u as t,S as Ve}from"./vendor-core-8R2fFbyN.js";import{u as Qe,a as ge}from"./vendor-query-BXRECSI6.js";import{u as He,d as Je,r as Ze,t as ve,v as fe,z as Xe,q as ye,i as et,w as tt,x as at,y as nt,A as st,C as lt,B,M as ae}from"./index-IZgh1beL.js";import{I as h}from"./vendor-icons-CDMuNDeL.js";import{A as rt}from"./AnimeCard-B5A20jAI.js";import{S as it}from"./SkeletonGrid-CtHKKMLj.js";import{E as ct}from"./ErrorMessage-z4f4WGgP.js";import{s as a}from"./Watchlist.module-XGtVQr1d.js";import"./useAnimeInfoData-DeuwDSnI.js";import"./QueueOptionsButton-B6BMq66e.js";import"./vendor-ui-CUDCvRS_.js";import"./MediaCard-Be1ST9oj.js";import"./useIsMobile-Dm_b6Ob3.js";const ot=(d,v)=>{const l=new URLSearchParams(v);return l.delete("page"),l.sort(),`${d}|${l.toString()}`},dt=(d,v)=>{const l=new Set(d);return v.forEach(A=>l.add(A)),l},mt=(d,v)=>{const l=new Set(d);return v.forEach(A=>l.delete(A)),l},Se=["All","Continue Watching","Watching","Completed","On-Hold","Dropped","Planned"],be=Se.slice(2),ut=[{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+)"}],ht=[{value:"ALL",label:"All Seasons"},{value:"WINTER",label:"Winter"},{value:"SPRING",label:"Spring"},{value:"SUMMER",label:"Summer"},{value:"FALL",label:"Fall"}],xt=()=>{he(()=>{document.title="Watchlist - dango"},[]);const{filter:d="All"}=je(),v=qe(),[l,A]=Ke(),ne=Qe(),[m,R]=u(parseInt(l.get("page")||"1")),[f,T]=u(l.get("query")||""),[C,q]=u(l.get("sortBy")||"last_added"),[y,P]=u(l.get("type")||"ALL"),[b,W]=u(l.get("season")||"ALL"),[S,I]=u(l.get("year")||"ALL"),[k,$]=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}),[O,Ne]=u(()=>["type","season","year","genres","excludeGenres"].some(e=>l.has(e))),{lowEndMode:Le}=He(),{titlePreference:F}=Je(),{data:Ae}=Ze(),se=Ae?.genres||[],K=pe(null),[c,w]=u(null),[V,z]=u(!1),[le,D]=u(!1),[M,Ce]=u(!1),[g,N]=u(new Set),Q=pe(null),i=d==="Continue Watching",E=j(()=>{const e=new URLSearchParams(l);return e.delete("page"),e.set("titlePreference",F),e.toString()},[l,F]),{data:G,isLoading:ke,error:we}=ve(E,m,14),{data:_,isLoading:xe,error:Be}=fe(d,E,m,14),{data:Re}=ve(E,m+1,14),{data:Te}=fe(d,E,m+1,14),H=j(()=>(i?G?.data:_?.data)||[],[i,G,_]),J=j(()=>(i?G?.total:_?.total)||0,[i,G,_]),x=i?ke:xe,re=i?we:Be,ie=i?Re:Te;he(()=>{T(l.get("query")||""),q(l.get("sortBy")||"last_added"),P(l.get("type")||"ALL"),W(l.get("season")||"ALL"),I(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")),$(e),R(parseInt(l.get("page")||"1"));const r=ot(d,l);Q.current!==null&&Q.current!==r&&N(new Set),Q.current=r},[l,d]);const Pe=ge({mutationFn:async({id:e,status:n})=>{await ye("/api/watchlist/status",{method:"POST",body:JSON.stringify({id:e,status:n})})},onSuccess:()=>{ne.invalidateQueries({queryKey:["watchlist"]}),Xe.success("Status updated")}}),We=ge({mutationFn:async e=>{await ye("/api/continue-watching/remove",{method:"POST",body:JSON.stringify({showId:e})})},onSuccess:()=>ne.invalidateQueries({queryKey:["allContinueWatching"]})}),Z=et(),{data:ce}=tt("skipRemoveConfirmation"),Ie=at(),X=j(()=>{const e=n=>n[F]||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,F]),ee=new Date().getFullYear(),$e=[{value:"ALL",label:"All Years"},...Array.from({length:ee-1980+1},(e,n)=>({value:String(ee-n),label:String(ee-n)}))],p=(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),b!=="ALL"&&s.set("season",b),S!=="ALL"&&s.set("year",S);const r=Object.entries(k).filter(([,L])=>L==="include").map(([L])=>L),o=Object.entries(k).filter(([,L])=>L==="exclude").map(([L])=>L);r.length>0&&s.set("genres",r.join(",")),o.length>0&&s.set("excludeGenres",o.join(",")),n>1&&s.set("page",n.toString()),A(s),n!==m&&R(n)},U=e=>{if(p(C,e),K.current){const n=K.current.getBoundingClientRect().top+window.scrollY-100;window.scrollTo({top:n,behavior:"smooth"})}},Oe=()=>{T(""),q("last_added"),P("ALL"),W("ALL"),I("ALL"),$({}),A(new URLSearchParams),R(1)},Fe=e=>{$(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){w({id:e,name:n});return}String(ce)==="true"||String(ce)==="1"?Z.mutate(e):w({id:e,name:n})},ze=()=>{if(c){if(c.ids){i?(De.mutate(c.ids),V&&me.mutate(c.ids)):me.mutate(c.ids),N(new Set),w(null),z(!1),D(!1);return}i?(We.mutate(c.id),V&&Z.mutate(c.id)):Z.mutate(c.id),le&&Ie.mutate({key:"skipRemoveConfirmation",value:!0}),w(null),z(!1),D(!1)}},de=()=>{w(null),z(!1),D(!1)},me=nt(),De=st(),Me=lt(),Ee=()=>{Ce(e=>{const n=!e;return n||N(new Set),n})},Ge=e=>{N(n=>{const s=new Set(n);return s.has(e)?s.delete(e):s.add(e),s})},Y=X.map(e=>e.id),te=Y.length>0&&Y.every(e=>g.has(e)),_e=()=>{N(te?e=>mt(e,Y):e=>dt(e,Y))},Ue=e=>{g.size!==0&&(Me.mutate({ids:[...g],status:e}),N(new Set))},Ye=()=>{g.size!==0&&w({ids:[...g]})},ue=H.length>=14&&ie&&ie.data.length>0;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:Se.map(e=>t("button",{className:`${a.filterBtn} ${d===e?a.active:""}`,onClick:()=>{const n=new URLSearchParams(l);n.delete("page"),v({pathname:`/watchlist/${e}`,search:n.toString()}),R(1)},children:e},e))}),t("div",{children:t("select",{className:a.sortSelect,value:C,onChange:e=>{const n=e.currentTarget.value;q(n),p(n,m)},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(h,{name:"search",className:a.searchIcon}),t("input",{className:a.searchInput,placeholder:"Search your watchlist by title...",value:f,onInput:e=>T(e.currentTarget.value),onKeyDown:e=>e.key==="Enter"&&p()})]}),t("div",{className:a.searchActions,children:[t(B,{onClick:()=>p(),className:a.searchBtn,children:"Search"}),t("button",{className:`${a.filterToggleBtn} ${O?a.active:""}`,onClick:()=>Ne(!O),children:[t(h,{name:"filter",size:14}),t("span",{children:"Filters"}),O?t(h,{name:"chevron-up",size:12}):t(h,{name:"chevron-down",size:12})]})]})]}),t("div",{className:`${a.advancedFilters} ${O?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=>P(e.currentTarget.value),children:ut.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:b,onChange:e=>W(e.currentTarget.value),children:ht.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:S,onChange:e=>I(e.currentTarget.value),children:$e.map(e=>t("option",{value:e.value,children:e.label},e.value))})]})]}),se.length>0&&t("div",{className:a.genreSection,children:[t("label",{className:a.genreLabel,children:"Genres"}),t("div",{className:a.genreContainer,children:se.map(e=>t("button",{className:`${a.genreButton} ${a[k[e]||""]}`,onClick:()=>Fe(e),children:e},e))})]}),t("div",{className:a.filterActions,children:[t(B,{variant:"secondary",onClick:Oe,children:"Reset All"}),t(B,{onClick:()=>p(),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:["(",J," items)"]})]}),t("div",{className:a.headerActions,children:[t("button",{className:`${a.manageBtn} ${M?a.active:""}`,onClick:Ee,children:[t(h,{name:"pencil-alt",size:13}),t("span",{children:"Bulk Manage"})]}),J>0&&t("div",{className:a.pagination,children:[t("button",{className:a.pageBtn,onClick:()=>U(m-1),disabled:m===1||x,"aria-label":"Previous page",children:t(h,{name:"chevron-left",size:14})}),t("span",{className:a.pageInfo,children:["Page ",t("strong",{children:m})]}),t("button",{className:a.pageBtn,onClick:()=>U(m+1),disabled:!ue||x,"aria-label":"Next page",children:t(h,{name:"chevron-right",size:14})})]})]})]}),M&&t("div",{className:a.manageBar,children:[t("button",{className:a.selectAllBtn,onClick:_e,children:[t("span",{className:`${a.selectAllBox} ${te?a.selectAllBoxChecked:""}`,"aria-hidden":"true"}),t("span",{children:te?"Clear Page":"Select All"})]}),t("span",{className:a.manageCount,children:[g.size," selected"]}),t("div",{className:a.manageSpacer}),!i&&t("select",{className:a.manageStatusSelect,value:"",onChange:e=>{e.currentTarget.value&&Ue(e.currentTarget.value)},disabled:g.size===0,title:"Set status for selected items",children:[t("option",{value:"",children:"Set status…"}),be.map(e=>t("option",{value:e,children:e},e))]}),t("button",{className:a.manageRemoveBtn,onClick:Ye,disabled:g.size===0,children:[t(h,{name:"trash",size:13}),t("span",{children:"Remove Selected"})]})]}),x?t(it,{}):re?t(ct,{message:re.message}):t(Ve,{children:[(y!=="ALL"||b!=="ALL"||S!=="ALL"||Object.keys(k).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(),T(""),p()},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(),P("ALL"),p()},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:["Season: ",b,t("button",{onClick:e=>{e.stopPropagation(),e.preventDefault(),W("ALL"),p()},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:["Year: ",S,t("button",{onClick:e=>{e.stopPropagation(),e.preventDefault(),I("ALL"),p()},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]}),Object.entries(k).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(),$(r=>{const o={...r};return delete o[e],o}),p()},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]},e))]}),t("div",{className:`${a.grid} ${Le?a.lowEnd:""}`,children:X.map(e=>{const n=g.has(e.id);return t("div",{className:`${a.itemWrapper} ${n?a.selected:""}`,children:[M&&t("div",{className:a.selectOverlay,onClick:()=>Ge(e.id),title:n?"Deselect":"Select",children:t("span",{className:a.selectBadge,children:n?t(h,{name:"check",size:12}):null})}),t(rt,{anime:e,continueWatching:i,onRemove:()=>oe(e.id,e.name),layout:"vertical"}),!i&&!M&&t("div",{className:a.cardActions,children:[t("select",{className:a.statusSelect,value:e.status,onChange:s=>Pe.mutate({id:e.id,status:s.currentTarget.value}),children:be.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(h,{name:"trash",size:12})})]})]},e._id)})})]}),!x&&X.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"||b!=="ALL"||S!=="ALL"||Object.keys(k).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:()=>v("/search"),children:[t(h,{name:"search",size:14}),t("span",{children:"Browse Anime"})]})]}),J>0&&t("div",{className:a.bottomPagination,children:t("div",{className:a.pagination,children:[t("button",{className:a.pageBtn,onClick:()=>U(m-1),disabled:m===1||x,children:[t(h,{name:"chevron-left",size:14}),t("span",{children:"Previous"})]}),t("span",{className:a.pageInfo,children:["Page ",t("strong",{children:m})]}),t("button",{className:a.pageBtn,onClick:()=>U(m+1),disabled:!ue||x,children:[t("span",{children:"Next"}),t(h,{name:"chevron-right",size:14})]})]})}),t(ae,{isOpen:!!c,onClose:de,title:i?"Reset Progress":"Remove from Watchlist",children:[t(ae.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=>z(e.target.checked)}),"Also remove from my watchlist"]}),!i&&!(c?.ids&&c.ids.length>1)&&t("label",{children:[t("input",{type:"checkbox",checked:le,onChange:e=>D(e.target.checked)}),"Remember my choice"]})]}),t(ae.Actions,{children:[t(B,{variant:"secondary",onClick:de,children:"No"}),t(B,{variant:"danger",onClick:ze,children:"Yes"})]})]})]})};export{xt as default};
@@ -0,0 +1 @@
1
+ const e="_header_ezj97_1",t="_fadeIn_ezj97_1",n="_title_ezj97_6",_="_subtitle_ezj97_14",s="_controls_ezj97_21",c="_slideUpIn_ezj97_1",o="_filters_ezj97_40",a="_filterBtn_ezj97_46",r="_active_ezj97_64",l="_sortSelect_ezj97_71",i="_filterContainer_ezj97_100",j="_searchBarWrapper_ezj97_114",z="_inputIconWrapper_ezj97_120",g="_searchIcon_ezj97_125",p="_searchInput_ezj97_134",d="_searchActions_ezj97_154",m="_searchBtn_ezj97_159",B="_filterToggleBtn_ezj97_164",u="_advancedFilters_ezj97_192",f="_show_ezj97_199",h="_filterDivider_ezj97_205",A="_filterGrid_ezj97_211",I="_filterItem_ezj97_218",S="_genreSection_ezj97_260",v="_genreLabel_ezj97_266",y="_genreContainer_ezj97_276",C="_genreButton_ezj97_282",x="_include_ezj97_299",T="_exclude_ezj97_305",b="_filterActions_ezj97_312",W="_grid_ezj97_320",k="_itemWrapper_ezj97_410",w="_cardActions_ezj97_418",D="_statusSelect_ezj97_424",F="_removeBtn_ezj97_432",G="_resultsHeader_ezj97_443",H="_resultsTitle_ezj97_453",L="_itemCount_ezj97_463",O="_pagination_ezj97_469",P="_pageBtn_ezj97_479",R="_pageInfo_ezj97_508",U="_bottomPagination_ezj97_519",q="_emptyState_ezj97_590",E="_emptyTitle_ezj97_612",J="_emptyText_ezj97_619",K="_emptyBtn_ezj97_626",M="_headerActions_ezj97_668",N="_manageBtn_ezj97_675",Q="_manageBar_ezj97_703",V="_selectAllBtn_ezj97_721",X="_selectAllBox_ezj97_741",Y="_selectAllBoxChecked_ezj97_753",Z="_manageCount_ezj97_766",$="_manageSpacer_ezj97_773",ee="_manageStatusSelect_ezj97_777",te="_manageRemoveBtn_ezj97_794",ne="_selectOverlay_ezj97_824",_e="_selected_ezj97_837",se="_selectBadge_ezj97_844",ce={header:e,fadeIn:t,title:n,subtitle:_,controls:s,slideUpIn:c,filters:o,filterBtn:a,active:r,sortSelect:l,filterContainer:i,searchBarWrapper:j,inputIconWrapper:z,searchIcon:g,searchInput:p,searchActions:d,searchBtn:m,filterToggleBtn:B,advancedFilters:u,show:f,filterDivider:h,filterGrid:A,filterItem:I,genreSection:S,genreLabel:v,genreContainer:y,genreButton:C,include:x,exclude:T,filterActions:b,grid:W,itemWrapper:k,cardActions:w,statusSelect:D,removeBtn:F,resultsHeader:G,resultsTitle:H,itemCount:L,pagination:O,pageBtn:P,pageInfo:R,bottomPagination:U,emptyState:q,emptyTitle:E,emptyText:J,emptyBtn:K,headerActions:M,manageBtn:N,manageBar:Q,selectAllBtn:V,selectAllBox:X,selectAllBoxChecked:Y,manageCount:Z,manageSpacer:$,manageStatusSelect:ee,manageRemoveBtn:te,selectOverlay:ne,selected:_e,selectBadge:se};export{ce as s};