@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.
- package/LICENSE +21 -0
- package/README.md +258 -0
- package/client/dist/assets/AnimeCard-B5A20jAI.js +1 -0
- package/client/dist/assets/AnimeInfo-0huPAq0O.js +1 -0
- package/client/dist/assets/AnimeInfo-BFWtHlPC.css +1 -0
- package/client/dist/assets/AnimeInfoPage-Dqr5QH6R.js +2 -0
- package/client/dist/assets/AnimeMetaDetails-BPvv5xIl.js +1 -0
- package/client/dist/assets/AnimeMetaDetails-BwNQnRCd.css +1 -0
- package/client/dist/assets/Asmr-B6ZiqkmU.js +2 -0
- package/client/dist/assets/Asmr-Cq2ua6Zk.css +1 -0
- package/client/dist/assets/Asmr.module-ChUXDZKx.js +1 -0
- package/client/dist/assets/AsmrResetProgressModal-Cqsoo3XC.js +1 -0
- package/client/dist/assets/AvSyncCalibrator-C1_iBSyL.css +1 -0
- package/client/dist/assets/AvSyncCalibrator-C8ZoIwMY.js +10 -0
- package/client/dist/assets/ErrorMessage-CXoRbrLN.css +1 -0
- package/client/dist/assets/ErrorMessage-z4f4WGgP.js +1 -0
- package/client/dist/assets/Home-DtRtTuI9.css +1 -0
- package/client/dist/assets/Home-thJhPfs1.js +1 -0
- package/client/dist/assets/Insights-DKtoVe6L.css +1 -0
- package/client/dist/assets/Insights-ZlgPrzGD.js +1 -0
- package/client/dist/assets/LibraryListPage-CCiee-Ot.js +1 -0
- package/client/dist/assets/ListeningList-ctAz_6Zi.js +1 -0
- package/client/dist/assets/Manga-BI9WMTx5.js +1 -0
- package/client/dist/assets/Manga-Dp_-l1Pw.css +1 -0
- package/client/dist/assets/Manga.module-BcfOdsNP.js +1 -0
- package/client/dist/assets/MangaInfoPage-DcrEr7Sk.js +1 -0
- package/client/dist/assets/MangaReadPage-SYg63m48.js +1 -0
- package/client/dist/assets/MangaResetProgressModal-DX-1PS4h.js +1 -0
- package/client/dist/assets/Map-CXFqXmsZ.css +1 -0
- package/client/dist/assets/Map-Dj51g5zL.js +1 -0
- package/client/dist/assets/Mature-DJmUUtlF.css +1 -0
- package/client/dist/assets/Mature-Dqh_9SA3.js +1 -0
- package/client/dist/assets/MediaCard-Be1ST9oj.js +1 -0
- package/client/dist/assets/MediaCard-DB6Yjgky.css +1 -0
- package/client/dist/assets/Music-BGH_0voi.css +1 -0
- package/client/dist/assets/Music-zsPwT8_5.js +1 -0
- package/client/dist/assets/OptionListMenu-Drc_vybW.js +1 -0
- package/client/dist/assets/Player-B036Ic3m.css +1 -0
- package/client/dist/assets/Player-BEtAYps2.js +56 -0
- package/client/dist/assets/PlayerRedirect-D70t8VUW.js +1 -0
- package/client/dist/assets/PlayerSettings-Bj6SsmQ2.css +1 -0
- package/client/dist/assets/PlayerSettings-Cwoji-P7.js +1 -0
- package/client/dist/assets/QueueOptionsButton-B6BMq66e.js +1 -0
- package/client/dist/assets/QueueOptionsButton-CM15uQn8.css +1 -0
- package/client/dist/assets/QueueRail-BUYEjdaq.css +1 -0
- package/client/dist/assets/QueueRail-VxpUDBSm.js +1 -0
- package/client/dist/assets/Radio-B2Q_Egj7.js +1 -0
- package/client/dist/assets/Radio-CCHNFN7R.css +1 -0
- package/client/dist/assets/Radio.module-DGSZLpKM.js +1 -0
- package/client/dist/assets/ReadingList-O0QPwXu7.js +1 -0
- package/client/dist/assets/ResetProgressModal-CR_ovLAu.js +1 -0
- package/client/dist/assets/Search-C8e2nlDD.js +1 -0
- package/client/dist/assets/Search-Cs45oAwI.css +1 -0
- package/client/dist/assets/Search.module-CMEai-B-.js +1 -0
- package/client/dist/assets/Settings-AuFxQcJF.css +1 -0
- package/client/dist/assets/Settings-BgPWBl2V.js +21 -0
- package/client/dist/assets/SkeletonGrid-CtHKKMLj.js +1 -0
- package/client/dist/assets/SkeletonGrid-DhPYefXr.css +1 -0
- package/client/dist/assets/SynopsisText-BcpwT5iw.js +1 -0
- package/client/dist/assets/SynopsisText-CYv2W3yR.css +1 -0
- package/client/dist/assets/Trackers-Bfoiyuzy.js +2 -0
- package/client/dist/assets/Trackers-D5XBOCDp.css +1 -0
- package/client/dist/assets/Tv-Ca0fCdko.js +3 -0
- package/client/dist/assets/Tv-CuEl3Iol.css +1 -0
- package/client/dist/assets/TvInfo-Bu36xJyO.css +1 -0
- package/client/dist/assets/TvInfo-D_scgw_h.js +1 -0
- package/client/dist/assets/TvPopup-YTI7dEbJ.js +1 -0
- package/client/dist/assets/TvSearch-CxU33UOf.js +1 -0
- package/client/dist/assets/TvWatchlist-B4X1fWEH.js +1 -0
- package/client/dist/assets/VirtualKeyboard-6ZNTym4R.js +1 -0
- package/client/dist/assets/VirtualKeyboard-KIPc5ZGH.css +1 -0
- package/client/dist/assets/Watchlist-BiDEU0iV.css +1 -0
- package/client/dist/assets/Watchlist-P6YMZUdF.js +1 -0
- package/client/dist/assets/Watchlist.module-XGtVQr1d.js +1 -0
- package/client/dist/assets/hls-BOLXTnjL.js +42 -0
- package/client/dist/assets/hls-C4cG9wQw.js +1 -0
- package/client/dist/assets/index-BOKlZEHq.js +30354 -0
- package/client/dist/assets/index-CUm1meqr.css +1 -0
- package/client/dist/assets/index-IZgh1beL.js +178 -0
- package/client/dist/assets/useAnimeInfoData-DeuwDSnI.js +1 -0
- package/client/dist/assets/useAsmr-CbMVRjmV.js +1 -0
- package/client/dist/assets/useAsmrPopup-D91Q3CBg.js +1 -0
- package/client/dist/assets/useIsMobile-Dm_b6Ob3.js +1 -0
- package/client/dist/assets/useMangaLibrary-BPvFb1lU.js +1 -0
- package/client/dist/assets/useMangaPopup-BOL2mQJs.js +1 -0
- package/client/dist/assets/useMatureConsent-CT7-KfzG.js +1 -0
- package/client/dist/assets/useProviders-BsRGONMA.js +1 -0
- package/client/dist/assets/useTv-D37MfTHA.js +1 -0
- package/client/dist/assets/useTvLibrary-Cwxgy_Bg.js +1 -0
- package/client/dist/assets/vendor-core-8R2fFbyN.js +1 -0
- package/client/dist/assets/vendor-icons-CDMuNDeL.js +1 -0
- package/client/dist/assets/vendor-query-BXRECSI6.js +1 -0
- package/client/dist/assets/vendor-ui-CUDCvRS_.js +1 -0
- package/client/dist/av-sync-test.mp4 +0 -0
- package/client/dist/favicon.ico +0 -0
- package/client/dist/index.html +46 -0
- package/client/dist/logo-mochi.png +0 -0
- package/client/dist/logo-sakura.png +0 -0
- package/client/dist/logo.png +0 -0
- package/client/dist/placeholder.svg +4 -0
- package/client/dist/robots.txt +3 -0
- package/orchestrator.js +534 -0
- package/package.json +85 -0
- package/server/dist/app-auth.js +177 -0
- package/server/dist/config.js +175 -0
- package/server/dist/controllers/asmr-library.controller.js +288 -0
- package/server/dist/controllers/auth.controller.js +225 -0
- package/server/dist/controllers/data.controller.js +766 -0
- package/server/dist/controllers/insights.controller.js +198 -0
- package/server/dist/controllers/manga-library.controller.js +296 -0
- package/server/dist/controllers/music.controller.js +698 -0
- package/server/dist/controllers/proxy.controller.js +820 -0
- package/server/dist/controllers/settings.controller.js +609 -0
- package/server/dist/controllers/tv-library.controller.js +310 -0
- package/server/dist/controllers/watchlist.controller.js +1015 -0
- package/server/dist/db.js +145 -0
- package/server/dist/discord-gateway.js +391 -0
- package/server/dist/discord-rpc.js +427 -0
- package/server/dist/github-sync.js +512 -0
- package/server/dist/google.js +748 -0
- package/server/dist/lib/anilist.js +1549 -0
- package/server/dist/lib/anischedule.js +194 -0
- package/server/dist/lib/discord-roles-sync.service.js +130 -0
- package/server/dist/lib/ipc.js +24 -0
- package/server/dist/lib/kitsu.js +544 -0
- package/server/dist/lib/mal.js +934 -0
- package/server/dist/lib/migration.js +329 -0
- package/server/dist/lib/offline-db.js +401 -0
- package/server/dist/lib/temp-ids.js +3 -0
- package/server/dist/lib/tmdb.js +72 -0
- package/server/dist/lib/tracker/anilist-tracker.js +245 -0
- package/server/dist/lib/tracker/sync.service.js +496 -0
- package/server/dist/lib/ytmusic.js +125 -0
- package/server/dist/logger.js +16 -0
- package/server/dist/providers/manga/manga.types.js +7 -0
- package/server/dist/providers/provider.interface.js +1 -0
- package/server/dist/providers/remote-loader.js +574 -0
- package/server/dist/providers/remote-types.js +117 -0
- package/server/dist/providers/title-matching.js +225 -0
- package/server/dist/providers/tv.types.js +1 -0
- package/server/dist/rclone.js +120 -0
- package/server/dist/repositories/asmr.repository.js +123 -0
- package/server/dist/repositories/insights.repository.js +85 -0
- package/server/dist/repositories/library.repository.js +108 -0
- package/server/dist/repositories/mal-cache.repository.js +55 -0
- package/server/dist/repositories/manga.repository.js +138 -0
- package/server/dist/repositories/notifications.repository.js +41 -0
- package/server/dist/repositories/queue.repository.js +61 -0
- package/server/dist/repositories/settings.repository.js +12 -0
- package/server/dist/repositories/shows-meta.repository.js +42 -0
- package/server/dist/repositories/temp-show-ids.repository.js +51 -0
- package/server/dist/repositories/tv.repository.js +151 -0
- package/server/dist/repositories/watched-episodes.repository.js +52 -0
- package/server/dist/repositories/watchlist.repository.js +71 -0
- package/server/dist/request-logger.js +16 -0
- package/server/dist/routes/asmr-library.routes.js +23 -0
- package/server/dist/routes/asmr.routes.js +81 -0
- package/server/dist/routes/auth.routes.js +25 -0
- package/server/dist/routes/data.routes.js +47 -0
- package/server/dist/routes/discord-gateway.routes.js +51 -0
- package/server/dist/routes/insights.routes.js +34 -0
- package/server/dist/routes/lan-auth.routes.js +46 -0
- package/server/dist/routes/manga-library.routes.js +23 -0
- package/server/dist/routes/manga.routes.js +141 -0
- package/server/dist/routes/music.routes.js +20 -0
- package/server/dist/routes/providers.routes.js +17 -0
- package/server/dist/routes/proxy.routes.js +12 -0
- package/server/dist/routes/radio.routes.js +138 -0
- package/server/dist/routes/settings.routes.js +24 -0
- package/server/dist/routes/tracker.routes.js +164 -0
- package/server/dist/routes/translate.routes.js +88 -0
- package/server/dist/routes/tv-library.routes.js +23 -0
- package/server/dist/routes/tv.routes.js +629 -0
- package/server/dist/routes/watchlist.routes.js +341 -0
- package/server/dist/scripts/backfill-episode-duration.js +42 -0
- package/server/dist/server.js +529 -0
- package/server/dist/shipped-defaults.js +7 -0
- package/server/dist/sync-config.js +23 -0
- package/server/dist/sync-payload.js +91 -0
- package/server/dist/sync.js +1128 -0
- package/server/dist/utils/cache.utils.js +25 -0
- package/server/dist/utils/cookie.utils.js +13 -0
- package/server/dist/utils/db-utils.js +9 -0
- package/server/dist/utils/env.utils.js +77 -0
- package/server/dist/utils/http.utils.js +70 -0
- package/server/dist/utils/machine-id.js +40 -0
- package/server/dist/utils/megaplay.utils.js +41 -0
- package/server/dist/utils/request-context.js +2 -0
- package/server/dist/utils/security.utils.js +94 -0
- package/server/package.json +44 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._container_z68uz_1{position:relative;display:flex;align-items:center}._bellBtn_z68uz_7{background:#00000026;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:none;color:var(--text-primary);font-size:1.25rem;cursor:pointer;padding:var(--space-2);display:flex;align-items:center;justify-content:center;transition:transform var(--transition-fast),background var(--transition-fast);position:relative;width:50px;height:50px;border-radius:50%}._bellBtn_z68uz_7:hover{background:#00000040;border-color:#ffffff59;transform:scale(1.05)}._bellBtn_z68uz_7:focus-visible{outline:none;box-shadow:var(--shadow-focus)}@media(max-width:848px){._bellBtn_z68uz_7{width:36px;height:36px;font-size:1.05rem;padding:var(--space-1)}}@media(max-width:480px){._bellBtn_z68uz_7{width:36px;height:36px;font-size:.95rem}}._badge_z68uz_56{position:absolute;top:6px;right:6px;background-color:var(--color-danger);color:#fff;font-size:.62rem;font-weight:700;min-width:18px;height:18px;padding:0 4px;border-radius:50%;display:flex;align-items:center;justify-content:center;text-align:center;border:none;pointer-events:none;animation:_bounce_z68uz_1 .5s ease-out;line-height:1}@keyframes _bounce_z68uz_1{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-5px)}60%{transform:translateY(-3px)}}._dropdown_z68uz_96{position:absolute;top:calc(100% + var(--space-2));right:0;width:320px;max-height:480px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-secondary);border-radius:var(--radius-md);box-shadow:var(--shadow-xl);z-index:var(--z-header);overflow:hidden;display:flex;flex-direction:column;animation:_slideIn_z68uz_1 .3s ease}@keyframes _slideIn_z68uz_1{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}._dropdownHeader_z68uz_127{padding:var(--space-4);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border-primary)}._dropdownHeader_z68uz_127 h4{margin:0;font-size:1rem;color:var(--text-primary)}._clearAllBtn_z68uz_141{background:none;border:none;color:var(--primary-color);font-size:var(--font-size-xs);cursor:pointer;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);transition:background var(--transition-fast)}._clearAllBtn_z68uz_141:hover{background:#ffffff0d}._discoveryStatusRow_z68uz_156{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:.72rem;color:var(--text-muted);background:#ffffff08;border-bottom:1px solid var(--border-primary)}._statusDot_z68uz_167{width:8px;height:8px;border-radius:50%;flex-shrink:0}._statusDotRunning_z68uz_174{background:var(--accent);animation:_statusPulse_z68uz_1 1.2s ease-in-out infinite}._statusDotOk_z68uz_179{background:var(--color-success)}._statusDotInfo_z68uz_183{background:var(--color-info)}._statusDotError_z68uz_187{background:var(--color-danger)}._statusDotIdle_z68uz_191{background:var(--text-muted)}@keyframes _statusPulse_z68uz_1{0%,to{opacity:1}50%{opacity:.35}}._list_z68uz_205{overflow-y:auto;flex:1}._list_z68uz_205::-webkit-scrollbar{width:4px}._list_z68uz_205::-webkit-scrollbar-thumb{background:var(--border-secondary);border-radius:2px}._item_z68uz_219{display:flex;align-items:center;padding:var(--space-3) var(--space-4);gap:var(--space-3);text-decoration:none;transition:background var(--transition-fast);border-bottom:1px solid var(--border-primary);position:relative}._item_z68uz_219:hover{background:#ffffff0d}._thumbnail_z68uz_234{width:48px;height:64px;border-radius:var(--radius-sm);object-fit:cover;flex-shrink:0;box-shadow:0 2px 8px #0000004d}._itemInfo_z68uz_243{flex:1;min-width:0}._itemTitle_z68uz_248{display:block;font-size:.85rem;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:var(--space-1)}._itemMeta_z68uz_259{display:inline-block;font-size:.7rem;background:var(--accent);color:var(--accent-text);padding:1px 6px;border-radius:var(--radius-sm);font-weight:600}._systemItemMeta_z68uz_269{display:inline-block;font-size:.7rem;background:#ffffff1a;color:var(--text-secondary);padding:1px 6px;border-radius:var(--radius-sm);font-weight:500;border:none;cursor:pointer;transition:background var(--transition-fast)}._systemItemMeta_z68uz_269:hover{background:#ffffff2e}._removeItem_z68uz_286{background:none;border:none;color:var(--text-muted);font-size:var(--font-size-xs);cursor:pointer;padding:var(--space-2);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--transition-fast),color var(--transition-fast)}._item_z68uz_219:hover ._removeItem_z68uz_286{opacity:1}@media(hover:none),(pointer:coarse){._removeItem_z68uz_286{opacity:1}}._removeItem_z68uz_286:hover{color:var(--color-danger)}._queueItem_z68uz_316:hover{color:var(--color-success)}._emptyState_z68uz_320{padding:var(--space-10) var(--space-4);text-align:center;color:var(--text-muted);font-size:.9rem}@media(max-width:768px){._dropdown_z68uz_96{position:fixed;top:var(--header-height, 60px);left:0;right:0;width:100%;max-height:calc(100vh - var(--header-height, 60px));border-radius:0 0 var(--radius-md) var(--radius-md)}._bellBtn_z68uz_7{width:36px;height:36px;font-size:1rem}._removeItem_z68uz_286{padding:var(--space-2);min-width:36px;min-height:36px}._badge_z68uz_56{top:5px;right:6px;font-size:.58rem;min-width:16px;height:16px;padding:0 3px}}@media(max-width:480px){._bellBtn_z68uz_7{width:38px;height:38px;font-size:1.1rem}}.skeleton{position:relative;overflow:hidden;background-color:var(--bg-tertiary);border-radius:var(--radius-sm)}.skeleton:after{position:absolute;inset:0;transform:translate(-100%);background-image:linear-gradient(90deg,#fff0 0,#ffffff0d 20%,#ffffff1f 60%,#fff0);animation:shimmer 1.8s infinite ease-in-out;content:""}.skeleton-text{border-radius:var(--radius-sm);height:1em}.skeleton-circular{border-radius:50%}.skeleton-rectangular{border-radius:var(--radius-md)}.skeleton-card{display:flex;flex-direction:column;background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);overflow:hidden}@keyframes shimmer{to{transform:translate(100%)}}._header_rlbx9_1{height:var(--header-height);--logo-height: 60px;background:transparent;border-bottom:1px solid transparent;position:fixed;top:0;left:0;right:0;z-index:var(--z-header);display:flex;align-items:center;justify-content:center;transition:transform var(--transition-slow),background-color var(--transition-base),border-color var(--transition-base),box-shadow var(--transition-base)}._header_rlbx9_1._hidden_rlbx9_21{transform:translateY(-100%)}._header_rlbx9_1._scrolled_rlbx9_25{background-color:#0c0c0fd1;border-bottom:1px solid rgba(255,255,255,.08);box-shadow:0 8px 32px #00000073}._logo_rlbx9_31{display:flex;align-items:center;justify-content:center;padding:8px;border-radius:var(--radius-md);transition:opacity var(--transition-base)}._logo_rlbx9_31:hover{opacity:.8}._headerInner_rlbx9_44{width:100%;max-width:var(--max-width);margin:0 auto;padding:0 var(--space-8);display:flex;align-items:center;justify-content:space-between}._leftSection_rlbx9_54{display:flex;align-items:center;gap:var(--space-6)}._desktopNav_rlbx9_60{display:flex;align-items:center;gap:var(--space-1);margin-left:var(--space-2)}._navLink_rlbx9_67{color:var(--text-secondary);font-weight:500;font-size:var(--font-size-sm);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);text-decoration:none;transition:all var(--transition-fast);position:relative}._navLink_rlbx9_67:hover{color:var(--text-primary);background:#ffffff0f}._navLinkActive_rlbx9_83{color:#fff;font-weight:600;background:#ffffff1a}._navLinkActive_rlbx9_83:after{content:"";position:absolute;bottom:-4px;left:50%;transform:translate(-50%);width:16px;height:2px;background:var(--accent);border-radius:var(--radius-full);box-shadow:0 0 8px var(--accent-glow)}._rightSection_rlbx9_102{display:flex;align-items:center;gap:var(--space-3)}._searchWrapper_rlbx9_108{display:flex;align-items:center;gap:0}._searchInput_rlbx9_114{width:0;opacity:0;padding:0;border:none;background:transparent;color:var(--text-primary);font-size:var(--font-size-sm);font-family:inherit;height:42px;transition:all var(--transition-base);pointer-events:none;outline:none}._searchInput_rlbx9_114::placeholder{color:#ffffffb3}._searchWrapper_rlbx9_108:focus-within ._searchInput_rlbx9_114{width:200px;opacity:1;padding:0 var(--space-3);margin-right:var(--space-1);pointer-events:auto;background:#00000059;border:1px solid rgba(255,255,255,.35);border-radius:var(--radius-full);padding-left:var(--space-3);color:#fff}._searchButton_rlbx9_146{background:#00000026;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:none;color:var(--text-primary);padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;pointer-events:auto;width:50px;height:50px;border-radius:50%;transition:all var(--transition-base);flex-shrink:0}._searchButton_rlbx9_146:hover{background:#00000040;border-color:#ffffff59}._searchIcon_rlbx9_170{font-size:1rem;color:#fff;transition:all var(--transition-base)}._searchButton_rlbx9_146:hover ._searchIcon_rlbx9_170{color:var(--accent)}._profileBtn_rlbx9_180{width:50px;height:50px;border-radius:50%;overflow:hidden;border:none;cursor:pointer;transition:all var(--transition-base);display:flex;align-items:center;justify-content:center;flex-shrink:0;background:#00000026;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--text-primary)}._profileBtn_rlbx9_180:hover{border-color:#ffffff59;transform:translateY(-2px);background:#00000040}._profileBtn_rlbx9_180:active{transform:scale(.95)}._profileBtn_rlbx9_180 svg{color:var(--text-primary);font-size:1.1rem}._profileImg_rlbx9_213{width:100%;height:100%;object-fit:cover}._hamburgerBtn_rlbx9_219{background:#00000026;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:none;color:var(--text-primary);font-size:1.25rem;padding:var(--space-2);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-base);height:50px;width:50px;flex-shrink:0}._hamburgerBtn_rlbx9_219:hover{background:#00000040;border-color:#ffffff59}._hamburgerBtn_rlbx9_219:active{transform:scale(.95)}._mobileSearchBar_rlbx9_247{display:none}@media(max-width:1024px){._searchInput_rlbx9_114{display:none}._searchWrapper_rlbx9_108:focus-within ._searchInput_rlbx9_114{display:none}._mobileSearchBar_rlbx9_247{display:block;position:fixed;top:var(--header-height);left:0;right:0;z-index:calc(var(--z-header) - 1);background:#0c0c0f80;padding:var(--space-2) var(--space-3);animation:_slideDown_rlbx9_1 .2s ease}@keyframes _slideDown_rlbx9_1{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}._mobileSearchInner_rlbx9_283{display:flex;align-items:center;background:#ffffff14;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-full);padding:0 var(--space-4);height:40px}._mobileSearchIcon_rlbx9_293{color:#ffffff80;font-size:.85rem;flex-shrink:0;margin-right:var(--space-2)}._mobileSearchInput_rlbx9_300{flex:1;background:transparent;border:none;outline:none;color:var(--text-primary);font-size:var(--font-size-sm);font-family:inherit;height:100%}._mobileSearchInput_rlbx9_300::placeholder{color:#ffffff80}._mobileSearchInput_rlbx9_300:focus,input._mobileSearchInput_rlbx9_300:focus{outline:none;box-shadow:none}}@media(max-width:848px){._header_rlbx9_1{height:64px;padding:0 var(--space-3);--logo-height: 44px}._headerInner_rlbx9_44{padding:0;max-width:none}._leftSection_rlbx9_54{gap:var(--space-1);min-width:0}._hamburgerBtn_rlbx9_219{height:36px;width:36px;font-size:.9rem}._logo_rlbx9_31{padding:2px;min-width:0}._searchButton_rlbx9_146{width:36px;height:36px}._rightSection_rlbx9_102{gap:2px}._profileBtn_rlbx9_180{width:36px;height:36px}._mobileSearchBar_rlbx9_247{top:64px}}@media(max-width:900px){._desktopNav_rlbx9_60{display:none}}@media(max-width:480px){._rightSection_rlbx9_102{gap:4px}._hamburgerBtn_rlbx9_219{height:38px;width:38px;font-size:1rem}._logo_rlbx9_31{padding:2px;min-width:0}._searchButton_rlbx9_146,._profileBtn_rlbx9_180{width:38px;height:38px}}._sidebar_153jc_1{position:fixed;top:0;left:0;width:280px;max-width:85vw;height:100%;transition:transform var(--transition-normal);z-index:var(--z-sidebar);padding:var(--space-8) var(--space-6);display:flex;flex-direction:column;overflow-y:auto;transform:translate(-100%);background-color:#0a0a0cf2;color:var(--text-primary);border-right:1px solid var(--border-primary)}._sidebar_153jc_1._open_153jc_20{transform:translate(0);box-shadow:20px 0 60px #00000080}._sidebarHeader_153jc_25{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-10);position:relative}._closeBtn_153jc_33{position:absolute;top:0;right:0;background:none;border:none;font-size:1.25rem;line-height:1;cursor:pointer;color:var(--text-tertiary);transition:color var(--transition-base);display:flex;align-items:center;justify-content:center;padding:var(--space-1);width:32px;height:32px;border-radius:var(--radius-sm)}._closeBtn_153jc_33:hover{color:var(--text-primary)}._logo_153jc_57{display:flex;align-items:center;text-decoration:none;--logo-height: 50px;transition:opacity var(--transition-base)}._logo_153jc_57:hover{opacity:.8}._navSection_153jc_69{display:flex;flex-direction:column;gap:var(--space-1)}._navLink_153jc_75{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);text-decoration:none;transition:all var(--transition-base);color:var(--text-secondary);font-weight:var(--font-weight-medium);font-size:var(--font-size-base);border-left:2px solid transparent;margin-left:var(--space-2)}._navLink_153jc_75 svg{font-size:1rem;width:20px;text-align:center;flex-shrink:0;transition:color var(--transition-base)}._navLink_153jc_75:hover{background-color:#ffffff0a;color:var(--text-primary);border-left-color:#ffffff26}._navLink_153jc_75:hover svg{color:var(--text-primary)}._navLink_153jc_75._active_153jc_108{background-color:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent-light);border-left-color:var(--accent)}._navLink_153jc_75._active_153jc_108 svg{color:var(--accent)}._overlay_153jc_118{position:fixed;inset:0;background-color:#0009;z-index:calc(var(--z-sidebar) - 1);animation:_fadeIn_153jc_1 .3s ease-out}@keyframes _fadeIn_153jc_1{0%{opacity:0}to{opacity:1}}._versionInfo_153jc_138{margin-top:auto;padding-top:var(--space-8);font-size:1rem;color:var(--text-secondary);text-align:left;display:flex;align-items:center;gap:var(--space-2)}._versionInfo_153jc_138:before{content:"";display:block;width:5px;height:5px;border-radius:50%;background-color:var(--color-success)}@media(max-width:768px){._sidebar_153jc_1{width:260px;padding:var(--space-6) var(--space-4)}._sidebarHeader_153jc_25{margin-bottom:var(--space-8)}._logo_153jc_57{--logo-height: 48px}._navLink_153jc_75{padding:var(--space-3) var(--space-3)}}._footer_1p5nb_1{width:100%;position:relative;padding:0 var(--space-8) var(--space-8);overflow:visible;border-top:1px solid rgba(255,255,255,.08);margin-top:auto;background:linear-gradient(180deg,#0a0a0c99,#050507f2);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);color:var(--text-tertiary);font-size:var(--font-size-sm)}._footerInner_1p5nb_15{width:100%;max-width:var(--max-width);margin:0 auto;display:grid;grid-template-columns:1fr auto;align-items:start;gap:var(--space-12);padding-bottom:var(--space-8);border-bottom:1px solid rgba(255,255,255,.06)}._brandSection_1p5nb_27{grid-column:1;display:flex;flex-direction:column;align-items:flex-start;text-align:left;max-width:320px;position:relative;padding-top:0;margin-top:-60px}._logoRow_1p5nb_39{display:flex;align-items:center;gap:14px}._mascotContainer_1p5nb_45{position:absolute;top:-90px;left:0;line-height:0;flex-shrink:0}._mascot_1p5nb_45{height:160px;width:auto;display:block}._logoText_1p5nb_59{height:105px;width:auto;display:block}._brandMeta_1p5nb_65{display:flex;align-items:center;justify-content:flex-start;gap:var(--space-2);flex-wrap:wrap;margin-top:10px}._brandTagline_1p5nb_74{color:var(--text-secondary);font-size:.88rem;line-height:1.5;margin:0}._statusPill_1p5nb_81{display:inline-flex;align-items:center;gap:var(--space-2);padding:4px 12px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-full);font-size:.78rem;color:var(--text-secondary);width:fit-content}._statusDot_1p5nb_94{width:7px;height:7px;border-radius:50%;background:var(--color-success);box-shadow:0 0 8px var(--color-success)}._linksGrid_1p5nb_102{grid-column:2;display:flex;gap:var(--space-8);justify-content:flex-end;padding-top:var(--space-8)}._linkColumn_1p5nb_110{display:flex;flex-direction:column;gap:var(--space-2)}._columnTitle_1p5nb_116{color:var(--text-primary);font-size:.9rem;font-weight:700;margin:0 0 var(--space-2);text-transform:uppercase;letter-spacing:.05em}._footer_1p5nb_1 a{color:var(--text-secondary);text-decoration:none;font-weight:500;font-size:.88rem;transition:all var(--transition-fast);display:inline-flex;align-items:center}._footer_1p5nb_1 a:hover{color:var(--accent);transform:translate(2px)}._bottomBar_1p5nb_140{position:relative;width:100%;max-width:var(--max-width);margin:var(--space-6) auto 0;display:flex;align-items:center;justify-content:center}._copyright_1p5nb_150{margin:0;color:var(--text-muted);font-size:.85rem;display:flex;align-items:center;justify-content:center;gap:4px;text-align:center}._brand_1p5nb_27{color:var(--accent);font-weight:700}._heartIcon_1p5nb_166{color:var(--color-danger);margin:0 2px}._backToTop_1p5nb_171{position:absolute;right:0;display:inline-flex;align-items:center;gap:var(--space-2);padding:6px 14px;background:#ffffff0d;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-full);color:var(--text-secondary);font-size:.8rem;font-weight:600;cursor:pointer;transition:all var(--transition-base)}._backToTop_1p5nb_171:hover{background:#ffffff1f;color:#fff;border-color:var(--accent);transform:translateY(-2px)}@media(max-width:768px){._footer_1p5nb_1{padding:0 var(--space-4) var(--space-6)}._footerInner_1p5nb_15{grid-template-columns:1fr;gap:var(--space-5);align-items:center;justify-items:center}._brandSection_1p5nb_27{grid-column:1;align-items:center;text-align:center;padding-top:0;justify-content:center;margin-top:-40px}._mascotContainer_1p5nb_45{position:absolute;top:-60px;left:50%;transform:translate(-50%)}._logoRow_1p5nb_39{flex-direction:column;align-items:center;gap:6px}._mascot_1p5nb_45{height:120px}._logoText_1p5nb_59{height:84px}._brandMeta_1p5nb_65{flex-direction:column;align-items:center;gap:var(--space-1);justify-content:center;margin-top:6px}._linksGrid_1p5nb_102{grid-column:1;display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4);text-align:center}._linkColumn_1p5nb_110{align-items:center;gap:var(--space-1)}._columnTitle_1p5nb_116{margin:0 0 var(--space-1);font-size:.78rem}._footer_1p5nb_1 a{font-size:.82rem}._bottomBar_1p5nb_140{flex-direction:column;gap:var(--space-3);text-align:center}._copyright_1p5nb_150{font-size:.78rem}._backToTop_1p5nb_171{position:static}}._overlay_1juub_1{position:fixed;inset:0;background-color:#0009;z-index:var(--z-modal);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:_fadeIn_1juub_1 .2s ease-out}._content_1juub_11{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:calc(var(--z-modal) + 1);background-color:var(--bg-secondary);padding:var(--space-6);border-radius:var(--radius-lg);width:100%;max-width:min(500px,calc(100vw - 2 * var(--space-4)));max-height:calc(100vh - 2 * var(--space-4));overflow-y:auto;box-shadow:var(--shadow-xl);border:1px solid var(--border-primary);animation:_modalIn_1juub_1 .2s var(--ease-smooth)}._sm_1juub_29{max-width:min(400px,calc(100vw - 2 * var(--space-4)))}._md_1juub_33{max-width:min(500px,calc(100vw - 2 * var(--space-4)))}._lg_1juub_37{max-width:min(700px,calc(100vw - 2 * var(--space-4)))}._title_1juub_41{margin:0 0 var(--space-4);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--text-primary)}._body_1juub_48{color:var(--text-secondary)}._footer_1juub_52{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-3);margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--border-primary)}._footer_1juub_52>*{flex:0 1 auto;min-width:0;max-width:100%}@media(max-width:480px){._content_1juub_11{padding:var(--space-4)}._footer_1juub_52{flex-direction:column;align-items:stretch;justify-content:flex-start}._footer_1juub_52>*{flex:1 1 auto;width:100%}}@keyframes _fadeIn_1juub_1{0%{opacity:0}to{opacity:1}}@keyframes _modalIn_1juub_1{0%{opacity:0;transform:translate(-50%,-50%) scale(.95)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}._switch_1f1gi_1{position:relative;display:inline-block;width:48px;height:24px;flex-shrink:0}._switch_1f1gi_1 input{opacity:0;width:0;height:0}._slider_1f1gi_15{position:absolute;cursor:pointer;inset:0;background-color:#ffffff1a;border:1px solid var(--border-primary);transition:var(--transition-base);border-radius:24px}._slider_1f1gi_15:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:2px;background-color:var(--text-secondary);transition:var(--transition-base);border-radius:50%;box-shadow:var(--shadow-sm)}input:checked+._slider_1f1gi_15{background-color:color-mix(in srgb,var(--accent) 20%,transparent);border-color:var(--accent)}input:checked+._slider_1f1gi_15:before{transform:translate(22px);background-color:var(--accent);box-shadow:0 0 10px var(--accent-glow)}input:focus+._slider_1f1gi_15{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 20%,transparent)}._container_1hh92_1{display:flex;flex-direction:column;gap:1rem;color:var(--text-primary)}._description_1hh92_8{margin:0;line-height:1.5;color:var(--text-secondary)}._dataList_1hh92_14{background:var(--bg-tertiary);border-radius:6px;padding:.75rem 1rem}._dataTitle_1hh92_20{margin:0 0 .5rem;font-weight:600;font-size:.9rem}._dataList_1hh92_14 ul{margin:0;padding-left:1.25rem;display:flex;flex-direction:column;gap:.25rem}._dataList_1hh92_14 li{font-size:.85rem;color:var(--text-secondary)}._toggleRow_1hh92_39{display:flex;align-items:center;justify-content:space-between;gap:1rem}._toggleLabel_1hh92_46{font-size:.95rem}._actions_1hh92_50{display:flex;justify-content:flex-end}._okButton_1hh92_55{background:var(--accent);color:var(--accent-text);border:none;border-radius:6px;padding:.5rem 1.5rem;font-size:.95rem;cursor:pointer;font-weight:500;transition:opacity .15s}._okButton_1hh92_55:hover{opacity:.9}._previewToggle_1hh92_71{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;background:none;border:none;color:var(--text-secondary);font-size:.85rem;cursor:pointer;padding:0}._previewToggle_1hh92_71:hover{color:var(--text-primary)}._chevron_1hh92_89{font-size:.7rem;transition:transform .2s}._chevronOpen_1hh92_94{transform:rotate(180deg)}._previewBox_1hh92_98{background:var(--bg-tertiary);border-radius:6px;padding:.75rem 1rem;display:flex;flex-direction:column;gap:.4rem}._previewItem_1hh92_107{display:flex;gap:.5rem;font-size:.85rem;font-family:monospace}._previewKey_1hh92_114{color:var(--text-secondary)}._previewVal_1hh92_118{color:var(--text-primary)}._promoWrapper_1vfnt_1{position:fixed;right:0;top:50%;transform:translateY(-50%) translate(110%);z-index:1200;transition:transform .45s cubic-bezier(.34,1.28,.64,1);pointer-events:none}._promoWrapper_1vfnt_1._visible_1vfnt_11{transform:translateY(-50%) translate(0);pointer-events:all}._panel_1vfnt_16{background:linear-gradient(145deg,var(--bg-elevated) 0%,var(--bg-primary) 100%);border:1px solid var(--border-accent);border-right:none;border-radius:16px 0 0 16px;padding:20px 18px 20px 20px;width:280px;box-shadow:-8px 0 40px #0009,-2px 0 12px var(--accent-glow);position:relative}._closeBtn_1vfnt_29{position:absolute;top:10px;right:10px;background:#ffffff0f;border:none;color:var(--text-tertiary);width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;transition:background .2s,color .2s;line-height:1}._closeBtn_1vfnt_29:hover{background:#ffffff1f;color:var(--text-primary)}._header_1vfnt_55{display:flex;align-items:center;gap:10px;margin-bottom:12px}._discordIcon_1vfnt_62{width:36px;height:36px;background:var(--accent);border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}._headerText_1vfnt_74 h4{margin:0;font-size:.9rem;font-weight:700;color:var(--text-primary);line-height:1.2}._headerText_1vfnt_74 p{margin:2px 0 0;font-size:.72rem;color:var(--accent);font-weight:600}._body_1vfnt_89{font-size:.8rem;color:var(--text-secondary);line-height:1.5;margin-bottom:14px}._rolePreview_1vfnt_96{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}._badge_1vfnt_103{padding:3px 10px;border-radius:20px;font-size:.72rem;font-weight:700;letter-spacing:.02em}._badgeRank_1vfnt_111{background:var(--accent-subtle);color:var(--accent-light);border:1px solid var(--border-accent)}._badgeDere_1vfnt_117{background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-secondary)}._actions_1vfnt_123{display:flex;flex-direction:column;gap:7px}._btnJoin_1vfnt_129{background:var(--accent);color:var(--accent-text);border:none;border-radius:8px;padding:9px 12px;font-size:.82rem;font-weight:700;cursor:pointer;transition:background .2s,transform .15s;display:flex;align-items:center;justify-content:center;gap:6px;text-decoration:none;width:100%;box-sizing:border-box}._btnJoin_1vfnt_129:hover{background:var(--accent-light);transform:translateY(-1px)}._btnSettings_1vfnt_155{background:#ffffff0f;color:var(--text-secondary);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:8px 12px;font-size:.78rem;font-weight:600;cursor:pointer;transition:background .2s,color .2s;display:flex;align-items:center;justify-content:center;gap:6px;width:100%;box-sizing:border-box}._btnSettings_1vfnt_155:hover{background:#ffffff1a;color:var(--text-primary)}._skipLink_1vfnt_180{display:block;width:100%;text-align:center;margin-top:8px;font-size:.72rem;color:var(--text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .2s;background:none;border:none;padding:0;font-family:inherit}._skipLink_1vfnt_180:hover{color:var(--text-secondary)}._hint_1vfnt_200{font-size:.7rem;color:var(--text-tertiary);text-align:center;margin-top:10px;line-height:1.4}._container_e96gf_1{display:flex;flex-direction:column;gap:1rem;color:var(--text-primary);max-width:400px}._field_e96gf_9{display:flex;flex-direction:column;gap:.5rem}._field_e96gf_9 label{font-size:.9rem;opacity:.8}._textarea_e96gf_20{background:var(--bg-secondary);border:1px solid var(--border-primary);color:var(--text-primary);padding:.5rem;border-radius:4px;resize:vertical;font-family:inherit}._textarea_e96gf_20:hover{border-color:var(--border-secondary)}._textarea_e96gf_20:focus{outline:none;border-color:var(--accent);box-shadow:var(--shadow-input-focus)}._input_e96gf_40{background:var(--bg-secondary);border:1px solid var(--border-primary);color:var(--text-primary);padding:.6rem;border-radius:4px}._input_e96gf_40:hover{border-color:var(--border-secondary)}._input_e96gf_40:focus{outline:none;border-color:var(--accent);box-shadow:var(--shadow-input-focus)}._button_e96gf_58{background:var(--accent);color:var(--text-primary);border:none;padding:.7rem;border-radius:4px;cursor:pointer;font-weight:600;transition:opacity .2s}._button_e96gf_58:hover{opacity:.9}._button_e96gf_58:disabled{opacity:.5;cursor:not-allowed}._secondaryButton_e96gf_78{background:transparent;border:1px solid var(--border-primary);color:var(--text-primary);padding:.7rem;border-radius:4px;cursor:pointer;transition:background .2s,border-color .2s}._secondaryButton_e96gf_78:hover{background:#ffffff0d;border-color:var(--border-secondary)}._actions_e96gf_95{display:flex;gap:.5rem}._actions_e96gf_95 ._button_e96gf_58{flex:1}._hint_e96gf_104{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:4px;padding:.6rem;font-size:.85rem;line-height:1.5}._hint_e96gf_104 ._actions_e96gf_95{margin-top:.6rem}._link_e96gf_117{color:var(--accent);text-decoration:underline;font-weight:600}._link_e96gf_117:hover{opacity:.85}.top-progress-bar{position:fixed;top:0;left:0;right:0;height:3px;z-index:9999;overflow:hidden;pointer-events:none;background:transparent}.top-progress-bar:after{content:"";position:absolute;top:0;bottom:0;left:0;width:40%;border-radius:0 3px 3px 0;background:linear-gradient(90deg,transparent,var(--accent),var(--accent-light),transparent);animation:top-progress-slide 1.1s infinite ease-in-out}@keyframes top-progress-slide{0%{transform:translate(-100%)}to{transform:translate(280%)}}@media(prefers-reduced-motion:reduce){.top-progress-bar:after{animation:none;width:100%;border-radius:0}}._container_88bss_1{display:flex;flex-direction:column;gap:1rem;color:var(--text-primary)}._field_88bss_8{display:flex;flex-direction:column;gap:.5rem}._field_88bss_8 label{font-size:.9rem;opacity:.8}._input_88bss_19{background:var(--bg-secondary);border:1px solid var(--border-primary);color:var(--text-primary);padding:.6rem;border-radius:4px}._input_88bss_19:hover{border-color:var(--border-secondary)}._input_88bss_19:focus{outline:none;border-color:var(--accent);box-shadow:var(--shadow-input-focus)}._actions_88bss_37{display:flex;gap:.5rem;justify-content:flex-end}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border-radius:var(--radius-md);font-weight:var(--font-weight-medium);cursor:pointer;border:none;outline:none;font-family:inherit;position:relative;white-space:nowrap;font-size:var(--font-size-base);background:transparent;color:var(--text-primary);padding:var(--space-3) var(--space-6);min-height:44px;transition:background-color .15s ease,color .15s ease,transform .1s ease}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--accent-light);outline-offset:2px}.btn-primary{background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dark) 100%);color:var(--accent-text);box-shadow:0 4px 12px var(--accent-glow)}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,var(--accent-light) 0%,var(--accent) 100%);transform:translateY(-1px);box-shadow:0 6px 16px var(--accent-glow)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-secondary{background:#ffffff14;border:1px solid var(--border-secondary);color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background:#ffffff1f;border-color:#ffffff40}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:#ffffff14;color:var(--text-primary)}.btn-danger{background:var(--color-danger);color:var(--color-danger-text)}.btn-danger:hover:not(:disabled){background:var(--color-danger-dark)}.btn-sm{min-height:36px;padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);border-radius:var(--radius-sm)}.btn-lg{min-height:52px;padding:var(--space-4) var(--space-8);font-size:var(--font-size-md);border-radius:var(--radius-lg)}.btn-block{width:100%}.btn-loading{color:transparent;pointer-events:none}.btn-spinner{position:absolute;width:16px;height:16px;border:2px solid rgba(128,128,128,.35);border-top-color:var(--accent-text);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}:root{--accent: #6d5dfc;--accent-light: #897cff;--accent-lighter: #b3a8ff;--accent-dark: #5646db;--accent-text: #ffffff;--accent-subtle: rgba(109, 93, 252, .12);--accent-glow: rgba(109, 93, 252, .18);--accent-h: 245;--accent-s: 96%;--accent-l: 68%;--color-danger: #ef4444;--color-error: var(--color-danger);--color-danger-dark: #dc2626;--color-danger-text: #ffffff;--color-success: #10b981;--color-success-text: #ffffff;--color-warning: #f59e0b;--color-warning-text: #17171c;--color-info: #3b82f6;--color-info-text: #ffffff;--badge-info-bg: var(--accent);--badge-info-text: var(--accent-text);--secondary-h: 180;--secondary-s: 85%;--secondary-l: 50%;--accent-blue: hsl(var(--secondary-h), var(--secondary-s), var(--secondary-l));--accent-blue-light: hsl(var(--secondary-h), var(--secondary-s), 70%);--bg-main: #0c0d12;--bg-primary: #13151d;--bg-secondary: #13151d;--bg-tertiary: #191c27;--bg-elevated: #202433;--primary-color: var(--accent);--header-bg: rgba(12, 13, 18, .85);--text-primary: #ffffff;--text-secondary: #b4b4bd;--text-tertiary: #8f8f98;--text-muted: #b4b4bd;--border-primary: rgba(255, 255, 255, .08);--border-secondary: rgba(255, 255, 255, .12);--border-accent: hsla(var(--accent-h), var(--accent-s), var(--accent-l), .3);--border: var(--border-primary);--card-radius: var(--radius-lg);--border-light: var(--border-secondary);--danger-color: var(--color-danger);--shadow-input-focus: 0 0 0 2px var(--accent-subtle);--shadow-focus: 0 0 0 2px var(--accent-subtle);--glass-bg: rgba(20, 20, 22, .95);--glass-border: var(--border-primary);--glass-highlight: rgba(255, 255, 255, .05);--glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, .36);--bg-hover: rgba(255, 255, 255, .08);--bg-hover-strong: rgba(255, 255, 255, .1);--bg-overlay: rgba(0, 0, 0, .55);--bg-overlay-strong: rgba(0, 0, 0, .6);--bg-overlay-heavy: rgba(0, 0, 0, .7);--bg-scrim: rgba(10, 10, 12, .55);--bg-scrim-strong: rgba(10, 10, 12, .8);--bg-dark: #0a0a0c;--bg-black: #000000;--border-strong: rgba(255, 255, 255, .14);--track-bg: rgba(255, 255, 255, .1);--track-buffered: rgba(255, 255, 255, .25);--shimmer-highlight: rgba(255, 255, 255, .07);--bg-selected: rgba(255, 255, 255, .06);--shadow-scrim: 0 4px 16px rgba(0, 0, 0, .45);--shadow-panel: 0 12px 32px rgba(0, 0, 0, .5);--color-danger-bg: rgba(153, 42, 42, .9);--font-family: "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-size-2xs: .4375rem;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-md: 1.125rem;--font-size-lg: 1.5rem;--font-size-xl: 1.875rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75;--space-px: 1px;--space-2px: 2px;--space-1: .25rem;--space-1-5: .375rem;--space-2: .5rem;--space-2-5: .625rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--size-22: 22px;--size-42: 42px;--size-44: 44px;--size-48: 48px;--size-34: 34px;--size-36: 36px;--size-140: 140px;--size-180: 180px;--size-220: 220px;--size-250: 250px;--size-440: 440px;--size-480: 480px;--size-720: 720px;--size-84: 84px;--size-52: 52px;--size-90: 90px;--size-240: 240px;--size-320: 320px;--size-420: 420px;--size-900: 900px;--layout-asmr-max-width: 1400px;--layout-page-offset: 120px;--layout-player-mobile: 175px;--radius-xs: 6px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 20px;--radius-xl: 28px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 12px 32px -4px rgba(0, 0, 0, .6);--shadow-active: 0 0 0 1px var(--border-accent), 0 8px 24px -4px rgba(0, 0, 0, .5);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .4), 0 10px 10px -5px rgba(0, 0, 0, .2);--shadow-thumb: 0 0 5px rgba(0, 0, 0, .5);--blur-sm: 4px;--blur-md: 6px;--blur-lg: 12px;--z-base: 1;--z-dropdown: 100;--z-sticky: 200;--z-drawer: 300;--z-sidebar: 500;--z-header: 400;--z-modal: 600;--z-popover: 700;--z-toast: 800;--z-overlay: 900;--header-height: 80px;--max-width: 1600px;--sidebar-width: 280px;--ease-spring: cubic-bezier(.175, .885, .32, 1.275);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-emphasized: cubic-bezier(.32, .72, 0, 1);--transition-fast: .2s var(--ease-smooth);--transition-base: .3s var(--ease-smooth);--transition-normal: .4s var(--ease-smooth);--transition-slow: .5s var(--ease-smooth);--transition-emphasized: .42s var(--ease-emphasized);--transition-quick: .09s var(--ease-smooth);--duration-shimmer: 1.6s;--duration-spin: .9s;--focus-ring-color: var(--accent-light);--focus-ring-glow: 0 0 0 3px rgba(109, 93, 252, .35);--focus-scale: scale(1.05)}@media(min-width:1920px){:root{--font-size-base: 1.125rem;--max-width: 2000px}}html[data-theme=mochi]{--accent: #e3e1ee;--accent-light: #f4f3fa;--accent-lighter: #ffffff;--accent-dark: #b3b1c6;--accent-text: #17171c;--accent-subtle: rgba(227, 225, 238, .12);--accent-glow: rgba(227, 225, 238, 0);--accent-h: 248;--accent-s: 18%;--accent-l: 89%;--bg-main: #131316;--bg-primary: #1b1b1f;--bg-secondary: #1b1b1f;--bg-tertiary: #232329;--bg-elevated: #2b2b32;--header-bg: rgba(19, 19, 22, .88);--text-primary: #f2f2f5;--text-secondary: #a9a9b3;--text-tertiary: #85858f;--text-muted: #a9a9b3;--border-primary: #2c2c33;--border-secondary: #3a3a43;--glass-bg: rgba(27, 27, 31, .96);--badge-info-bg: var(--accent);--badge-info-text: var(--accent-text);--shadow-sm: none;--shadow-md: none;--shadow-lg: none;--shadow-active: 0 0 0 1px var(--border-secondary);--shadow-xl: none;--focus-ring-color: var(--accent);--focus-ring-glow: 0 0 0 3px rgba(227, 225, 238, .25)}html[data-theme=sakura]{--accent: #d9a3d9;--accent-light: #eccbec;--accent-lighter: #f9e8f9;--accent-dark: #a978a9;--accent-text: #fff;--accent-subtle: rgba(217, 163, 217, .12);--accent-glow: rgba(217, 163, 217, 0);--accent-h: 300;--accent-s: 45%;--accent-l: 74%;--bg-main: #141116;--bg-primary: #1c171e;--bg-secondary: #1c171e;--bg-tertiary: #241e26;--bg-elevated: #2e262f;--header-bg: rgba(20, 17, 22, .88);--text-primary: #f3eaf3;--text-secondary: #b3a3b5;--text-tertiary: #8d7c8f;--text-muted: #b3a3b5;--border-primary: #322a34;--border-secondary: #403640;--glass-bg: rgba(28, 23, 30, .96);--badge-info-bg: var(--accent-dark);--badge-info-text: #ffffff;--shadow-sm: none;--shadow-md: none;--shadow-lg: none;--shadow-active: 0 0 0 1px var(--border-secondary);--shadow-xl: none;--focus-ring-color: var(--accent);--focus-ring-glow: 0 0 0 3px rgba(217, 163, 217, .25)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;color-scheme:dark;scrollbar-gutter:stable;overflow-x:hidden;overflow-x:clip;max-width:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}html:has(:fullscreen),html:has(:-webkit-full-screen){scrollbar-gutter:auto}body{margin:0;padding:0;font-family:var(--font-family);background:var(--bg-main);color:var(--text-primary);line-height:var(--line-height-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden;overflow-x:clip;max-width:100%;color-scheme:dark}html,body,.app-container,.posterWrapper,.dot,.genreTag{--darkreader-inline-bgcolor: none !important;--darkreader-inline-bgimage: none !important;--darkreader-inline-bordercolor: none !important;--darkreader-inline-color: none !important;background-color:transparent}body{overflow-x:hidden;overflow-x:clip}body:before{display:none!important}h1,h2,h3,h4,h5,h6{margin:0;font-weight:var(--font-weight-semibold);letter-spacing:-.02em}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--focus-ring-color)!important;outline-offset:3px!important;box-shadow:var(--focus-ring-glow)!important;transition:outline-offset var(--transition-fast),transform var(--transition-fast)}a:focus:not(:focus-visible),button:focus:not(:focus-visible),input:focus:not(:focus-visible),select:focus:not(:focus-visible),[tabindex]:focus:not(:focus-visible){outline:none!important;box-shadow:none!important}a,button,input,select,textarea,[tabindex]{-webkit-tap-highlight-color:transparent}@media(min-width:1200px){a:focus-visible,button:focus-visible{transform:var(--focus-scale)}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-elevated);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}.text-gradient{background:linear-gradient(135deg,#fff,#a5a5a5);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.text-gradient-accent{background:linear-gradient(135deg,var(--accent-light) 0%,var(--accent) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.app-container{display:flex;flex-direction:column;min-height:100vh}main{flex:1;width:100%;max-width:var(--max-width);margin:0 auto;padding:0 var(--space-8) var(--space-16);position:relative;z-index:1}.main-content{padding-top:var(--header-height)}@media(max-width:1024px){.main-content{padding-top:calc(var(--header-height) + 52px)}}@media(max-width:848px){main{padding:0 var(--space-4) var(--space-12)}.main-content{padding-top:116px}}.section-title{font-size:1.75rem;font-weight:800;margin-bottom:var(--space-8);color:var(--text-primary);letter-spacing:-.02em;line-height:1}.section-eyebrow{display:flex;align-items:center;gap:8px;font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-light);margin:0;line-height:1.4}.section-eyebrow:before{content:"";width:14px;height:3px;border-radius:999px;background:linear-gradient(90deg,var(--accent) 0%,var(--accent-dark) 100%);box-shadow:0 0 8px var(--accent-glow);flex:none}.title-stack{display:flex;flex-direction:column;gap:4px;min-width:0;justify-content:center}html[data-theme=mochi] .section-eyebrow,html[data-theme=sakura] .section-eyebrow{color:var(--accent)}@media(max-width:768px){.section-title{font-size:1.5rem;margin-bottom:var(--space-6)}}.grid-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-6);width:100%}@media(max-width:1024px){.grid-container{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--space-4)}}@media(max-width:768px){.grid-container{grid-template-columns:repeat(3,1fr);gap:var(--space-2)}}@media(max-width:480px){.grid-container{grid-template-columns:repeat(3,1fr);gap:8px}}footer{text-align:center;padding:var(--space-12);color:var(--text-muted);border-top:1px solid var(--border-primary);margin-top:var(--space-16);background:var(--bg-secondary)}footer a{color:var(--accent);text-decoration:none;font-weight:var(--font-weight-medium);transition:color var(--transition-fast)}footer a:hover{color:var(--accent-light);text-shadow:0 0 8px var(--accent-glow)}select{appearance:none;-webkit-appearance:none;cursor:pointer;background-color:var(--bg-tertiary)!important;border-color:var(--border-primary)!important}select:hover{background-color:var(--bg-tertiary)!important;border-color:var(--border-secondary)!important}select:focus{background-color:var(--bg-tertiary)!important;border-color:var(--accent)!important;outline:none}select:active{background-color:var(--bg-tertiary)!important}body.low-end{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol!important;--transition-fast: 0s !important;--transition-base: 0s !important;--transition-normal: 0s !important;--transition-slow: 0s !important;scroll-behavior:auto!important}body.low-end,body.low-end *{transition:none!important;animation:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;box-shadow:none!important;text-shadow:none!important}body.low-end:before{display:none!important}body.low-end .text-gradient,body.low-end .text-gradient-accent{background:none!important;-webkit-background-clip:initial!important;-webkit-text-fill-color:initial!important;color:var(--text-primary)!important}body.low-end .text-gradient-accent{color:var(--accent)!important}body.low-end [class*=banner],body.low-end [class*=bannerContainer],body.low-end [class*=bannerOverlay],body.low-end [class*=heroSection]{background-image:none!important;background-color:var(--bg-main)!important;min-height:auto!important}body.low-end [class*=infoGlass]{background:var(--bg-secondary)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;border:1px solid var(--border-primary)!important;box-shadow:none!important}.skeleton{position:relative;overflow:hidden;background-color:var(--bg-tertiary)}.skeleton:after{content:"";position:absolute;inset:0;transform:translate(-100%);background-image:linear-gradient(90deg,#fff0 0,#ffffff0d 20%,#ffffff1f 60%,#fff0);animation:skeleton-wave 1.8s infinite ease-in-out}@keyframes skeleton-wave{to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Home-thJhPfs1.js","assets/vendor-core-8R2fFbyN.js","assets/vendor-query-BXRECSI6.js","assets/vendor-icons-CDMuNDeL.js","assets/AnimeCard-B5A20jAI.js","assets/useAnimeInfoData-DeuwDSnI.js","assets/QueueOptionsButton-B6BMq66e.js","assets/vendor-ui-CUDCvRS_.js","assets/QueueOptionsButton-CM15uQn8.css","assets/MediaCard-Be1ST9oj.js","assets/useIsMobile-Dm_b6Ob3.js","assets/MediaCard-DB6Yjgky.css","assets/SkeletonGrid-CtHKKMLj.js","assets/SkeletonGrid-DhPYefXr.css","assets/ErrorMessage-z4f4WGgP.js","assets/ErrorMessage-CXoRbrLN.css","assets/ResetProgressModal-CR_ovLAu.js","assets/QueueRail-VxpUDBSm.js","assets/QueueRail-BUYEjdaq.css","assets/useMangaPopup-BOL2mQJs.js","assets/useMangaLibrary-BPvFb1lU.js","assets/MangaResetProgressModal-DX-1PS4h.js","assets/useProviders-BsRGONMA.js","assets/useMatureConsent-CT7-KfzG.js","assets/useTv-D37MfTHA.js","assets/TvPopup-YTI7dEbJ.js","assets/useTvLibrary-Cwxgy_Bg.js","assets/AsmrResetProgressModal-Cqsoo3XC.js","assets/useAsmr-CbMVRjmV.js","assets/Home-DtRtTuI9.css","assets/Watchlist-P6YMZUdF.js","assets/Watchlist.module-XGtVQr1d.js","assets/Watchlist-BiDEU0iV.css","assets/Settings-BgPWBl2V.js","assets/Settings-AuFxQcJF.css","assets/Player-BEtAYps2.js","assets/AvSyncCalibrator-C8ZoIwMY.js","assets/AvSyncCalibrator-C1_iBSyL.css","assets/hls-C4cG9wQw.js","assets/AnimeMetaDetails-BPvv5xIl.js","assets/AnimeMetaDetails-BwNQnRCd.css","assets/SynopsisText-BcpwT5iw.js","assets/SynopsisText-CYv2W3yR.css","assets/Player-B036Ic3m.css","assets/Search-C8e2nlDD.js","assets/Search.module-CMEai-B-.js","assets/Search-Cs45oAwI.css","assets/Mature-Dqh_9SA3.js","assets/Mature-DJmUUtlF.css","assets/Asmr-B6ZiqkmU.js","assets/Asmr.module-ChUXDZKx.js","assets/Asmr-Cq2ua6Zk.css","assets/useAsmrPopup-D91Q3CBg.js","assets/Manga-BI9WMTx5.js","assets/Manga.module-BcfOdsNP.js","assets/Manga-Dp_-l1Pw.css","assets/MangaInfoPage-DcrEr7Sk.js","assets/MangaReadPage-SYg63m48.js","assets/ReadingList-O0QPwXu7.js","assets/LibraryListPage-CCiee-Ot.js","assets/Radio-B2Q_Egj7.js","assets/Radio.module-DGSZLpKM.js","assets/Radio-CCHNFN7R.css","assets/Music-zsPwT8_5.js","assets/Music-BGH_0voi.css","assets/TvSearch-CxU33UOf.js","assets/TvInfo-D_scgw_h.js","assets/TvInfo-Bu36xJyO.css","assets/Tv-Ca0fCdko.js","assets/OptionListMenu-Drc_vybW.js","assets/Tv-CuEl3Iol.css","assets/TvWatchlist-B4X1fWEH.js","assets/ListeningList-ctAz_6Zi.js","assets/Trackers-Bfoiyuzy.js","assets/Trackers-D5XBOCDp.css","assets/Insights-ZlgPrzGD.js","assets/Insights-DKtoVe6L.css","assets/Map-Dj51g5zL.js","assets/Map-CXFqXmsZ.css","assets/AnimeInfoPage-Dqr5QH6R.js","assets/PlayerRedirect-D70t8VUW.js","assets/VirtualKeyboard-6ZNTym4R.js","assets/VirtualKeyboard-KIPc5ZGH.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{N as Tt,k as D,A as q,q as R,h as _,S as F,d as v,X as te,x as ne,g as Te,u as t,L as K,$ as Ze,a as Xe,c as Ee,e as Et,f as Ct,D as $t,P as De,i as Pt,j as S,l as Re,z as I,T as le,m as Lt,B as At}from"./vendor-core-8R2fFbyN.js";import{u as O,a as j,b as M,c as Ce,Q as Ot,d as Dt}from"./vendor-query-BXRECSI6.js";import{I as g}from"./vendor-icons-CDMuNDeL.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const a of o)if(a.type==="childList")for(const i of a.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function r(o){const a={};return o.integrity&&(a.integrity=o.integrity),o.referrerPolicy&&(a.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?a.credentials="include":o.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function s(o){if(o.ep)return;o.ep=!0;const a=r(o);fetch(o.href,a)}})();const Rt="modulepreload",qt=function(e){return"/"+e},qe={},x=function(n,r,s){let o=Promise.resolve();if(r&&r.length>0){let d=function(u){return Promise.all(u.map(l=>Promise.resolve(l).then(m=>({status:"fulfilled",value:m}),m=>({status:"rejected",reason:m}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),c=i?.nonce||i?.getAttribute("nonce");o=d(r.map(u=>{if(u=qt(u),u in qe)return;qe[u]=!0;const l=u.endsWith(".css"),m=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${m}`))return;const h=document.createElement("link");if(h.rel=l?"stylesheet":Rt,l||(h.as="script"),h.crossOrigin="",h.href=u,c&&h.setAttribute("nonce",c),document.head.appendChild(h),l)return new Promise((b,P)=>{h.addEventListener("load",b),h.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${u}`)))})}))}function a(i){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=i,window.dispatchEvent(c),!c.defaultPrevented)throw i}return o.then(i=>{for(const c of i||[])c.status==="rejected"&&a(c.reason);return n().catch(a)})};let Mt={data:""},Bt=e=>{if(typeof window=="object"){let n=(e?e.querySelector("#_goober"):window._goober)||Object.assign(document.createElement("style"),{innerHTML:" ",id:"_goober"});return n.nonce=window.__nonce__,n.parentNode||(e||document.head).appendChild(n),n.firstChild}return e||Mt},Ft=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,Kt=/\/\*[^]*?\*\/| +/g,Me=/\n+/g,X=(e,n)=>{let r="",s="",o="";for(let a in e){let i=e[a];a[0]=="@"?a[1]=="i"?r=a+" "+i+";":s+=a[1]=="f"?X(i,a):a+"{"+X(i,a[1]=="k"?"":n)+"}":typeof i=="object"?s+=X(i,n?n.replace(/([^,])+/g,c=>a.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,d=>/&/.test(d)?d.replace(/&/g,c):c?c+" "+d:d)):a):i!=null&&(a=a[1]=="-"?a:a.replace(/[A-Z]/g,"-$&").toLowerCase(),o+=X.p?X.p(a,i):a+":"+i+";")}return r+(n&&o?n+"{"+o+"}":o)+s},Z={},et=e=>{if(typeof e=="object"){let n="";for(let r in e)n+=r+et(e[r]);return n}return e},jt=(e,n,r,s,o)=>{let a=et(e),i=Z[a]||(Z[a]=(d=>{let u=0,l=11;for(;u<d.length;)l=101*l+d.charCodeAt(u++)>>>0;return"go"+l})(a));if(!Z[i]){let d=a!==e?e:(u=>{let l,m,h=[{}];for(;l=Ft.exec(u.replace(Kt,""));)l[4]?h.shift():l[3]?(m=l[3].replace(Me," ").trim(),h.unshift(h[0][m]=h[0][m]||{})):h[0][l[1]]=l[2].replace(Me," ").trim();return h[0]})(e);Z[i]=X(o?{["@keyframes "+i]:d}:d,r?"":"."+i)}let c=r&&Z.g;return r&&(Z.g=Z[i]),((d,u,l,m)=>{m?u.data=u.data.replace(m,d):u.data.indexOf(d)===-1&&(u.data=l?d+u.data:u.data+d)})(Z[i],n,s,c),i},zt=(e,n,r)=>e.reduce((s,o,a)=>{let i=n[a];if(i&&i.call){let c=i(r),d=c&&c.props&&c.props.className||/^go/.test(c)&&c;i=d?"."+d:c&&typeof c=="object"?c.props?"":X(c,""):c===!1?"":c}return s+o+(i??"")},"");function ve(e){let n=this||{},r=e.call?e(n.p):e;return jt(r.unshift?r.raw?zt(r,[].slice.call(arguments,1),n.p):r.reduce((s,o)=>Object.assign(s,o&&o.call?o(n.p):o),{}):r,Bt(n.target),n.g,n.o,n.k)}let tt,ke,Ne;ve.bind({g:1});let J=ve.bind({k:1});function Wt(e,n,r,s){X.p=n,tt=e,ke=r,Ne=s}function ee(e,n){let r=this||{};return function(){let s=arguments;function o(a,i){let c=Object.assign({},a),d=c.className||o.className;r.p=Object.assign({theme:ke&&ke()},c),r.o=/go\d/.test(d),c.className=ve.apply(r,s)+(d?" "+d:"");let u=e;return e[0]&&(u=c.as||e,delete c.as),Ne&&u[0]&&Ne(c),tt(u,c)}return o}}var Ut=e=>typeof e=="function",ge=(e,n)=>Ut(e)?e(n):e,Vt=(()=>{let e=0;return()=>(++e).toString()})(),nt=(()=>{let e;return()=>{if(e===void 0&&typeof window<"u"){let n=matchMedia("(prefers-reduced-motion: reduce)");e=!n||n.matches}return e}})(),Qt=20,$e="default",rt=(e,n)=>{let{toastLimit:r}=e.settings;switch(n.type){case 0:return{...e,toasts:[n.toast,...e.toasts].slice(0,r)};case 1:return{...e,toasts:e.toasts.map(i=>i.id===n.toast.id?{...i,...n.toast}:i)};case 2:let{toast:s}=n;return rt(e,{type:e.toasts.find(i=>i.id===s.id)?1:0,toast:s});case 3:let{toastId:o}=n;return{...e,toasts:e.toasts.map(i=>i.id===o||o===void 0?{...i,dismissed:!0,visible:!1}:i)};case 4:return n.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(i=>i.id!==n.toastId)};case 5:return{...e,pausedAt:n.time};case 6:let a=n.time-(e.pausedAt||0);return{...e,pausedAt:void 0,toasts:e.toasts.map(i=>({...i,pauseDuration:i.pauseDuration+a}))}}},pe=[],st={toasts:[],pausedAt:void 0,settings:{toastLimit:Qt}},V={},ot=(e,n=$e)=>{V[n]=rt(V[n]||st,e),pe.forEach(([r,s])=>{r===n&&s(V[n])})},at=e=>Object.keys(V).forEach(n=>ot(e,n)),Ht=e=>Object.keys(V).find(n=>V[n].toasts.some(r=>r.id===e)),ye=(e=$e)=>n=>{ot(n,e)},Jt={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},Yt=(e={},n=$e)=>{let[r,s]=v(V[n]||st),o=q(V[n]);_(()=>(o.current!==V[n]&&s(V[n]),pe.push([n,s]),()=>{let i=pe.findIndex(([c])=>c===n);i>-1&&pe.splice(i,1)}),[n]);let a=r.toasts.map(i=>{var c,d,u;return{...e,...e[i.type],...i,removeDelay:i.removeDelay||((c=e[i.type])==null?void 0:c.removeDelay)||e?.removeDelay,duration:i.duration||((d=e[i.type])==null?void 0:d.duration)||e?.duration||Jt[i.type],style:{...e.style,...(u=e[i.type])==null?void 0:u.style,...i.style}}});return{...r,toasts:a}},Gt=(e,n="blank",r)=>({createdAt:Date.now(),visible:!0,dismissed:!1,type:n,ariaProps:{role:"status","aria-live":"polite"},message:e,pauseDuration:0,...r,id:r?.id||Vt()}),de=e=>(n,r)=>{let s=Gt(n,e,r);return ye(s.toasterId||Ht(s.id))({type:2,toast:s}),s.id},$=(e,n)=>de("blank")(e,n);$.error=de("error");$.success=de("success");$.loading=de("loading");$.custom=de("custom");$.dismiss=(e,n)=>{let r={type:3,toastId:e};n?ye(n)(r):at(r)};$.dismissAll=e=>$.dismiss(void 0,e);$.remove=(e,n)=>{let r={type:4,toastId:e};n?ye(n)(r):at(r)};$.removeAll=e=>$.remove(void 0,e);$.promise=(e,n,r)=>{let s=$.loading(n.loading,{...r,...r?.loading});return typeof e=="function"&&(e=e()),e.then(o=>{let a=n.success?ge(n.success,o):void 0;return a?$.success(a,{id:s,...r,...r?.success}):$.dismiss(s),o}).catch(o=>{let a=n.error?ge(n.error,o):void 0;a?$.error(a,{id:s,...r,...r?.error}):$.dismiss(s)}),e};var Zt=1e3,Xt=(e,n="default")=>{let{toasts:r,pausedAt:s}=Yt(e,n),o=q(new Map).current,a=R((m,h=Zt)=>{if(o.has(m))return;let b=setTimeout(()=>{o.delete(m),i({type:4,toastId:m})},h);o.set(m,b)},[]);_(()=>{if(s)return;let m=Date.now(),h=r.map(b=>{if(b.duration===1/0)return;let P=(b.duration||0)+b.pauseDuration-(m-b.createdAt);if(P<0){b.visible&&$.dismiss(b.id);return}return setTimeout(()=>$.dismiss(b.id,n),P)});return()=>{h.forEach(b=>b&&clearTimeout(b))}},[r,s,n]);let i=R(ye(n),[n]),c=R(()=>{i({type:5,time:Date.now()})},[i]),d=R((m,h)=>{i({type:1,toast:{id:m,height:h}})},[i]),u=R(()=>{s&&i({type:6,time:Date.now()})},[s,i]),l=R((m,h)=>{let{reverseOrder:b=!1,gutter:P=8,defaultPosition:z}=h||{},B=r.filter(w=>(w.position||z)===(m.position||z)&&w.height),Q=B.findIndex(w=>w.id===m.id),W=B.filter((w,C)=>C<Q&&w.visible).length;return B.filter(w=>w.visible).slice(...b?[W+1]:[0,W]).reduce((w,C)=>w+(C.height||0)+P,0)},[r]);return _(()=>{r.forEach(m=>{if(m.dismissed)a(m.id,m.removeDelay);else{let h=o.get(m.id);h&&(clearTimeout(h),o.delete(m.id))}})},[r,a]),{toasts:r,handlers:{updateHeight:d,startPause:c,endPause:u,calculateOffset:l}}},en=J`
|
|
3
|
+
from {
|
|
4
|
+
transform: scale(0) rotate(45deg);
|
|
5
|
+
opacity: 0;
|
|
6
|
+
}
|
|
7
|
+
to {
|
|
8
|
+
transform: scale(1) rotate(45deg);
|
|
9
|
+
opacity: 1;
|
|
10
|
+
}`,tn=J`
|
|
11
|
+
from {
|
|
12
|
+
transform: scale(0);
|
|
13
|
+
opacity: 0;
|
|
14
|
+
}
|
|
15
|
+
to {
|
|
16
|
+
transform: scale(1);
|
|
17
|
+
opacity: 1;
|
|
18
|
+
}`,nn=J`
|
|
19
|
+
from {
|
|
20
|
+
transform: scale(0) rotate(90deg);
|
|
21
|
+
opacity: 0;
|
|
22
|
+
}
|
|
23
|
+
to {
|
|
24
|
+
transform: scale(1) rotate(90deg);
|
|
25
|
+
opacity: 1;
|
|
26
|
+
}`,rn=ee("div")`
|
|
27
|
+
width: 20px;
|
|
28
|
+
opacity: 0;
|
|
29
|
+
height: 20px;
|
|
30
|
+
border-radius: 10px;
|
|
31
|
+
background: ${e=>e.primary||"#ff4b4b"};
|
|
32
|
+
position: relative;
|
|
33
|
+
transform: rotate(45deg);
|
|
34
|
+
|
|
35
|
+
animation: ${en} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)
|
|
36
|
+
forwards;
|
|
37
|
+
animation-delay: 100ms;
|
|
38
|
+
|
|
39
|
+
&:after,
|
|
40
|
+
&:before {
|
|
41
|
+
content: '';
|
|
42
|
+
animation: ${tn} 0.15s ease-out forwards;
|
|
43
|
+
animation-delay: 150ms;
|
|
44
|
+
position: absolute;
|
|
45
|
+
border-radius: 3px;
|
|
46
|
+
opacity: 0;
|
|
47
|
+
background: ${e=>e.secondary||"#fff"};
|
|
48
|
+
bottom: 9px;
|
|
49
|
+
left: 4px;
|
|
50
|
+
height: 2px;
|
|
51
|
+
width: 12px;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
&:before {
|
|
55
|
+
animation: ${nn} 0.15s ease-out forwards;
|
|
56
|
+
animation-delay: 180ms;
|
|
57
|
+
transform: rotate(90deg);
|
|
58
|
+
}
|
|
59
|
+
`,sn=J`
|
|
60
|
+
from {
|
|
61
|
+
transform: rotate(0deg);
|
|
62
|
+
}
|
|
63
|
+
to {
|
|
64
|
+
transform: rotate(360deg);
|
|
65
|
+
}
|
|
66
|
+
`,on=ee("div")`
|
|
67
|
+
width: 12px;
|
|
68
|
+
height: 12px;
|
|
69
|
+
box-sizing: border-box;
|
|
70
|
+
border: 2px solid;
|
|
71
|
+
border-radius: 100%;
|
|
72
|
+
border-color: ${e=>e.secondary||"#e0e0e0"};
|
|
73
|
+
border-right-color: ${e=>e.primary||"#616161"};
|
|
74
|
+
animation: ${sn} 1s linear infinite;
|
|
75
|
+
`,an=J`
|
|
76
|
+
from {
|
|
77
|
+
transform: scale(0) rotate(45deg);
|
|
78
|
+
opacity: 0;
|
|
79
|
+
}
|
|
80
|
+
to {
|
|
81
|
+
transform: scale(1) rotate(45deg);
|
|
82
|
+
opacity: 1;
|
|
83
|
+
}`,cn=J`
|
|
84
|
+
0% {
|
|
85
|
+
height: 0;
|
|
86
|
+
width: 0;
|
|
87
|
+
opacity: 0;
|
|
88
|
+
}
|
|
89
|
+
40% {
|
|
90
|
+
height: 0;
|
|
91
|
+
width: 6px;
|
|
92
|
+
opacity: 1;
|
|
93
|
+
}
|
|
94
|
+
100% {
|
|
95
|
+
opacity: 1;
|
|
96
|
+
height: 10px;
|
|
97
|
+
}`,ln=ee("div")`
|
|
98
|
+
width: 20px;
|
|
99
|
+
opacity: 0;
|
|
100
|
+
height: 20px;
|
|
101
|
+
border-radius: 10px;
|
|
102
|
+
background: ${e=>e.primary||"#61d345"};
|
|
103
|
+
position: relative;
|
|
104
|
+
transform: rotate(45deg);
|
|
105
|
+
|
|
106
|
+
animation: ${an} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)
|
|
107
|
+
forwards;
|
|
108
|
+
animation-delay: 100ms;
|
|
109
|
+
&:after {
|
|
110
|
+
content: '';
|
|
111
|
+
box-sizing: border-box;
|
|
112
|
+
animation: ${cn} 0.2s ease-out forwards;
|
|
113
|
+
opacity: 0;
|
|
114
|
+
animation-delay: 200ms;
|
|
115
|
+
position: absolute;
|
|
116
|
+
border-right: 2px solid;
|
|
117
|
+
border-bottom: 2px solid;
|
|
118
|
+
border-color: ${e=>e.secondary||"#fff"};
|
|
119
|
+
bottom: 6px;
|
|
120
|
+
left: 6px;
|
|
121
|
+
height: 10px;
|
|
122
|
+
width: 6px;
|
|
123
|
+
}
|
|
124
|
+
`,dn=ee("div")`
|
|
125
|
+
position: absolute;
|
|
126
|
+
`,un=ee("div")`
|
|
127
|
+
position: relative;
|
|
128
|
+
display: flex;
|
|
129
|
+
justify-content: center;
|
|
130
|
+
align-items: center;
|
|
131
|
+
min-width: 20px;
|
|
132
|
+
min-height: 20px;
|
|
133
|
+
`,mn=J`
|
|
134
|
+
from {
|
|
135
|
+
transform: scale(0.6);
|
|
136
|
+
opacity: 0.4;
|
|
137
|
+
}
|
|
138
|
+
to {
|
|
139
|
+
transform: scale(1);
|
|
140
|
+
opacity: 1;
|
|
141
|
+
}`,hn=ee("div")`
|
|
142
|
+
position: relative;
|
|
143
|
+
transform: scale(0.6);
|
|
144
|
+
opacity: 0.4;
|
|
145
|
+
min-width: 20px;
|
|
146
|
+
animation: ${mn} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275)
|
|
147
|
+
forwards;
|
|
148
|
+
`,pn=({toast:e})=>{let{icon:n,type:r,iconTheme:s}=e;return n!==void 0?typeof n=="string"?D(hn,null,n):n:r==="blank"?null:D(un,null,D(on,{...s}),r!=="loading"&&D(dn,null,r==="error"?D(rn,{...s}):D(ln,{...s})))},gn=e=>`
|
|
149
|
+
0% {transform: translate3d(0,${e*-200}%,0) scale(.6); opacity:.5;}
|
|
150
|
+
100% {transform: translate3d(0,0,0) scale(1); opacity:1;}
|
|
151
|
+
`,fn=e=>`
|
|
152
|
+
0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}
|
|
153
|
+
100% {transform: translate3d(0,${e*-150}%,-1px) scale(.6); opacity:0;}
|
|
154
|
+
`,vn="0%{opacity:0;} 100%{opacity:1;}",yn="0%{opacity:1;} 100%{opacity:0;}",_n=ee("div")`
|
|
155
|
+
display: flex;
|
|
156
|
+
align-items: center;
|
|
157
|
+
background: #fff;
|
|
158
|
+
color: #363636;
|
|
159
|
+
line-height: 1.3;
|
|
160
|
+
will-change: transform;
|
|
161
|
+
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05);
|
|
162
|
+
max-width: 350px;
|
|
163
|
+
pointer-events: auto;
|
|
164
|
+
padding: 8px 10px;
|
|
165
|
+
border-radius: 8px;
|
|
166
|
+
`,bn=ee("div")`
|
|
167
|
+
display: flex;
|
|
168
|
+
justify-content: center;
|
|
169
|
+
margin: 4px 10px;
|
|
170
|
+
color: inherit;
|
|
171
|
+
flex: 1 1 auto;
|
|
172
|
+
white-space: pre-line;
|
|
173
|
+
`,wn=(e,n)=>{let r=e.includes("top")?1:-1,[s,o]=nt()?[vn,yn]:[gn(r),fn(r)];return{animation:n?`${J(s)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`:`${J(o)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`}},Sn=Tt(({toast:e,position:n,style:r,children:s})=>{let o=e.height?wn(e.position||n||"top-center",e.visible):{opacity:0},a=D(pn,{toast:e}),i=D(bn,{...e.ariaProps},ge(e.message,e));return D(_n,{className:e.className,style:{...o,...r,...e.style}},typeof s=="function"?s({icon:a,message:i}):D(F,null,a,i))});Wt(D);var kn=({id:e,className:n,style:r,onHeightUpdate:s,children:o})=>{let a=R(i=>{if(i){let c=()=>{let d=i.getBoundingClientRect().height;s(e,d)};c(),new MutationObserver(c).observe(i,{subtree:!0,childList:!0,characterData:!0})}},[e,s]);return D("div",{ref:a,className:n,style:r},o)},Nn=(e,n)=>{let r=e.includes("top"),s=r?{top:0}:{bottom:0},o=e.includes("center")?{justifyContent:"center"}:e.includes("right")?{justifyContent:"flex-end"}:{};return{left:0,right:0,display:"flex",position:"absolute",transition:nt()?void 0:"all 230ms cubic-bezier(.21,1.02,.73,1)",transform:`translateY(${n*(r?1:-1)}px)`,...s,...o}},In=ve`
|
|
174
|
+
z-index: 9999;
|
|
175
|
+
> * {
|
|
176
|
+
pointer-events: auto;
|
|
177
|
+
}
|
|
178
|
+
`,me=16,xn=({reverseOrder:e,position:n="top-center",toastOptions:r,gutter:s,children:o,toasterId:a,containerStyle:i,containerClassName:c})=>{let{toasts:d,handlers:u}=Xt(r,a);return D("div",{"data-rht-toaster":a||"",style:{position:"fixed",zIndex:9999,top:me,left:me,right:me,bottom:me,pointerEvents:"none",...i},className:c,onMouseEnter:u.startPause,onMouseLeave:u.endPause},d.map(l=>{let m=l.position||n,h=u.calculateOffset(l,{reverseOrder:e,gutter:s,defaultPosition:n}),b=Nn(m,h);return D(kn,{id:l.id,key:l.id,onHeightUpdate:u.updateHeight,className:l.visible?In:"",style:b},l.type==="custom"?ge(l.message,l):o?o(l):D(Sn,{toast:l,position:m}))}))},f=$;const ce=new Map,Tn=500,En=(e,n,r)=>{if(!e||e.trim()==="")return"/placeholder.svg";if(e.includes("/api/image-proxy")){let i=e;if(n&&!i.includes("w=")){const c=i.includes("?")?"&":"?";i+=`${c}w=${n}`}if(r&&!i.includes("h=")){const c=i.includes("?")?"&":"?";i+=`${c}h=${r}`}return i}let s=e;s.includes("aln.youtube-anime.com")&&(s=s.replace(/https?:\/\/allanime\.day\/aln\.youtube-anime\.com/,"https://aln.youtube-anime.com"),s.includes("/images/mcovers")&&(s=s.replace("/images/mcovers","/mcovers")),s.includes("/images/images2")&&(s=s.replace("/images/images2","/images2"))),s.includes("allanime.day/s4.anilist.co")&&(s=s.replace(/https?:\/\/allanime\.day\/s4\.anilist\.co/,"https://s4.anilist.co")),s.includes("wp.youtube-anime.com/s4.anilist.co")&&(s=s.replace(/https?:\/\/wp\.youtube-anime\.com\/s4\.anilist\.co/,"https://s4.anilist.co"));const o=`${s}-${n}-${r}`;if(ce.has(o))return ce.get(o);let a;if(s.startsWith("https://s4.anilist.co"))a=s,n&&(a+=`${a.includes("?")?"&":"?"}w=${n}`),r&&(a+=`${a.includes("?")?"&":"?"}h=${r}`);else if(s.includes("animepahe")){a=`/api/image-proxy?url=${encodeURIComponent(s)}`;const i=localStorage.getItem("animepahe_cookie"),c=localStorage.getItem("animepahe_ua");i&&(a+=`&cookie=${encodeURIComponent(i)}`),c&&(a+=`&ua=${encodeURIComponent(c)}`)}else if(s.startsWith("http"))a=`/api/image-proxy?url=${encodeURIComponent(s)}`,n&&(a+=`&w=${n}`),r?a+=`&h=${r}`:n||(a+="&w=300");else{const c=`${s.startsWith("mcovers")||s.startsWith("images2")?"https://aln.youtube-anime.com":"https://aln.youtube-anime.com/images"}/${s}`;a=`/api/image-proxy?url=${encodeURIComponent(c)}`,n&&(a+=`&w=${n}`),r?a+=`&h=${r}`:n||(a+="&w=300")}return ce.size>Tn&&ce.clear(),ce.set(o,a),a},Na=e=>{if(isNaN(e)||e<=0)return"00:00";const n=new Date(e*1e3).toISOString().slice(11,19);return parseInt(n.slice(0,2),10)>0?n:n.slice(3)};function Ia(e){return e?e.replace(/<[^>]*>?/gm,"").replace(/ /g," ").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").trim():""}function xa(e){return e==null?e:e>10?Number((e/10).toFixed(1)):e}const it=te(void 0),Cn=()=>{const e=ne(it);if(e===void 0)throw new Error("useTitlePreference must be used within a TitlePreferenceProvider");return e},Ie={lan:new Set,animepahe:new Set,jasmr:new Set};function be(e){for(const n of[...Ie[e]])try{n()}catch(r){console.error(`auth-bus listener failed (${e}):`,r)}}function ct(e,n){return Ie[e].add(n),()=>{Ie[e].delete(n)}}const $n=e=>new Promise(n=>setTimeout(n,e)),y=async(e,n)=>{const r={"Content-Type":"application/json"};if(e.startsWith("/")||typeof window<"u"&&e.startsWith(window.location.origin)){const a=localStorage.getItem("animepahe_ua"),i=localStorage.getItem("animepahe_cookie"),c=localStorage.getItem("jasmr_ua"),d=localStorage.getItem("jasmr_cookie");a&&(r["x-animepahe-ua"]=a),i&&(r["x-animepahe-cookie"]=i),c&&(r["x-jasmr-ua"]=c),d&&(r["x-jasmr-cookie"]=d)}let o=await fetch(e,{...n,headers:{...r,...n?.headers}});for(let a=0;o.status===503&&a<8;a++)await $n(Math.min(500*2**a,4e3)),o=await fetch(e,{...n,headers:{...r,...n?.headers}});if(!o.ok){const a=await o.text().catch(()=>"");let i={};try{i=JSON.parse(a)}catch{}const c=typeof i.error=="string"?i.error:"";throw o.status===403&&c==="AUTH_REQUIRED"&&i.provider==="animepahe"&&be("animepahe"),o.status===403&&c==="AUTH_REQUIRED"&&i.provider==="jasmr"&&be("jasmr"),o.status===401&&c==="LAN_AUTH_REQUIRED"&&be("lan"),new Error(c||`Failed to fetch from ${e}`)}return o.json()},Ta=()=>M({queryKey:["spotlight"],queryFn:()=>y("/api/spotlight"),staleTime:1e3*60*5,retry:1}),Ea=(e="TRENDING_DESC",n=10)=>Ce({queryKey:["trendingList",e,n],queryFn:({pageParam:r=1})=>y(`/api/popular-list?sort=${e}&page=${r}&size=${n}`),initialPageParam:1,getNextPageParam:(r,s)=>r.length>=n?s.length+1:void 0}),Ca=(e="TV",n=12)=>Ce({queryKey:["latestReleases",e,n],queryFn:({pageParam:r=1})=>y(`/api/latest-releases?format=${e}&page=${r}&size=${n}`),initialPageParam:1,getNextPageParam:(r,s)=>r.length>=n?s.length+1:void 0}),$a=(e,n="TV",r=!0)=>M({queryKey:["currentSeason",e,n],queryFn:()=>y(`/api/seasonal?page=${e}&format=${n}&size=14`),enabled:r,staleTime:1e3*60*5}),Pa=(e,n,r=14)=>M({queryKey:["searchAnime",e,n,r],queryFn:async()=>{const s=new URLSearchParams(e);return s.set("page",n.toString()),s.set("limit",r.toString()),y(`/api/search?${s.toString()}`)},enabled:e!=null}),La=()=>M({queryKey:["queue"],queryFn:()=>y("/api/queue")}),Pn=()=>{const e=O();return j({mutationFn:async n=>y("/api/queue/add",{method:"POST",body:JSON.stringify(n)}),onSuccess:n=>{n.queued?f.success("Added to queue"):f.success("Removed from queue"),e.invalidateQueries({queryKey:["queue"]}),e.invalidateQueries({queryKey:["queue-remaining"]})},onError:n=>{f.error(`Failed to update queue: ${n.message}`)}})},Aa=()=>{const e=O();return j({mutationFn:async n=>{await y("/api/queue/remove",{method:"POST",body:JSON.stringify(n)})},onSuccess:()=>{f.success("Removed from queue"),e.invalidateQueries({queryKey:["queue"]}),e.invalidateQueries({queryKey:["queue-remaining"]}),e.invalidateQueries({queryKey:["allContinueWatching"]})},onError:n=>{f.error(`Failed to remove: ${n.message}`)}})},Oa=(e,n=!0)=>M({queryKey:["queue-remaining",e],queryFn:()=>y(`/api/queue/remaining/${e}`),enabled:!!e&&n,staleTime:1e3*60}),Da=()=>{const e=O();return j({mutationFn:async({episodeNumbers:n,...r})=>y("/api/queue/batch",{method:"POST",body:JSON.stringify({...r,episodeNumbers:n})}),onSuccess:(n,r)=>{const s=n.added??r.episodeNumbers.length;f.success(`${s} ${s===1?"episode":"episodes"} added to queue`),e.invalidateQueries({queryKey:["queue"]}),e.invalidateQueries({queryKey:["queue-remaining"]})},onError:n=>{f.error(`Failed to update queue: ${n.message}`)}})},Ra=()=>{const e=O();return j({mutationFn:async({showId:n,episodeNumbers:r})=>{await y("/api/queue/remove-many",{method:"POST",body:JSON.stringify({showId:n,episodeNumbers:r})})},onSuccess:()=>{f.success("Removed from queue"),e.invalidateQueries({queryKey:["queue"]}),e.invalidateQueries({queryKey:["queue-remaining"]}),e.invalidateQueries({queryKey:["allContinueWatching"]})},onError:n=>{f.error(`Failed to remove: ${n.message}`)}})},qa=()=>{const e=O();return j({mutationFn:async()=>{await y("/api/queue/clear",{method:"POST"})},onSuccess:()=>{f.success("Queue cleared"),e.invalidateQueries({queryKey:["queue"]}),e.invalidateQueries({queryKey:["queue-remaining"]}),e.invalidateQueries({queryKey:["allContinueWatching"]})},onError:n=>{f.error(`Failed to clear queue: ${n.message}`)}})},Ma=()=>{const e=O();return j({mutationFn:async n=>{await y("/api/queue/reorder",{method:"POST",body:JSON.stringify({items:n})})},onMutate:async n=>{await e.cancelQueries({queryKey:["queue"]});const r=e.getQueryData(["queue"]);return e.setQueryData(["queue"],s=>{if(!s)return s;const o=new Map(s.map(a=>[a.id,a]));return n.map((a,i)=>{const c=o.get(a.id);return c?{...c,queue_order:i}:void 0}).filter(a=>!!a)}),{previousQueue:r}},onError:(n,r,s)=>{s?.previousQueue&&e.setQueryData(["queue"],s.previousQueue)},onSettled:()=>{e.invalidateQueries({queryKey:["queue"]})}})},Ba=(e,n="",r,s=14)=>M({queryKey:["watchlist",e,n,r,s],queryFn:async()=>{const o=new URLSearchParams(n);return o.set("status",e),o.set("page",String(r)),o.set("limit",String(s)),y(`/api/watchlist?${o.toString()}`)}}),Fa=(e="")=>Ce({queryKey:["allContinueWatching",e],queryFn:async({pageParam:n=1})=>{const r=new URLSearchParams(e);return r.set("page",String(n)),r.set("limit","14"),await y(`/api/continue-watching/all?${r.toString()}`)},initialPageParam:1,getNextPageParam:n=>{if(!(n.data.length===0||n.page*n.limit>=n.total))return n.page+1},select:n=>({...n,pages:n.pages.flatMap(r=>r.data)})}),Ka=(e="",n,r=14)=>M({queryKey:["allContinueWatching",e,n,r],queryFn:async()=>{const s=new URLSearchParams(e);return s.set("page",String(n)),s.set("limit",String(r)),y(`/api/continue-watching/all?${s.toString()}`)}}),ja=()=>{const e=O();return j({mutationFn:async n=>{await y("/api/watchlist/remove",{method:"POST",body:JSON.stringify({id:n})})},onSuccess:()=>{f.success("Removed from watchlist"),e.invalidateQueries({queryKey:["watchlist"]})},onError:n=>{f.error(`Failed to remove: ${n.message}`)}})},za=()=>{const e=O();return j({mutationFn:async({ids:n,status:r})=>y("/api/watchlist/batch-status",{method:"POST",body:JSON.stringify({ids:n,status:r})}),onSuccess:n=>{f.success(`Status updated for ${n.updated??0} items`),e.invalidateQueries({queryKey:["watchlist"]}),e.invalidateQueries({queryKey:["allContinueWatching"]})},onError:n=>{f.error(`Failed to update statuses: ${n.message}`)}})},Wa=()=>{const e=O();return j({mutationFn:async n=>y("/api/watchlist/remove-many",{method:"POST",body:JSON.stringify({ids:n})}),onSuccess:n=>{const r=n.removed??0;f.success(`Removed ${r} ${r===1?"item":"items"} from watchlist`),e.invalidateQueries({queryKey:["watchlist"]}),e.invalidateQueries({queryKey:["allContinueWatching"]})},onError:n=>{f.error(`Failed to remove: ${n.message}`)}})},Ua=()=>{const e=O();return j({mutationFn:async n=>y("/api/continue-watching/remove-many",{method:"POST",body:JSON.stringify({ids:n})}),onSuccess:n=>{const r=n.removed??0;f.success(`Removed ${r} ${r===1?"item":"items"} from continue watching`),e.invalidateQueries({queryKey:["allContinueWatching"]})},onError:n=>{f.error(`Failed to remove: ${n.message}`)}})},lt=(e=!0)=>M({queryKey:["notifications"],queryFn:()=>y("/api/notifications"),enabled:e,refetchInterval:3e4}),dt=(e=!0)=>M({queryKey:["system-notifications"],queryFn:()=>y("/api/system-notifications"),enabled:e,refetchInterval:3e4}),ut=(e=!0)=>M({queryKey:["discovery-status"],queryFn:()=>y("/api/discovery/status"),enabled:e,refetchInterval:n=>n.state.data?.running?2e3:!1}),Ln=()=>{const e=O();return j({mutationFn:async()=>y("/api/discovery/refresh",{method:"POST"}),onSuccess:n=>{e.setQueryData(["discovery-status"],{running:n.running,state:n.state,total:n.total,done:n.done,lastRunAt:n.lastRunAt}),e.invalidateQueries({queryKey:["notifications"]})},onError:()=>{e.invalidateQueries({queryKey:["discovery-status"]})}})},An=()=>{const e=O();return j({mutationFn:async({showId:n,episodeNumber:r})=>{await y("/api/notifications/dismiss",{method:"POST",body:JSON.stringify({showId:n,episodeNumber:r})})},onSuccess:()=>{e.invalidateQueries({queryKey:["notifications"]})}})},On=()=>{const e=O();return j({mutationFn:async n=>{await y("/api/notifications/clear-all",{method:"POST",body:JSON.stringify({showId:n})})},onSuccess:()=>{e.invalidateQueries({queryKey:["notifications"]})}})},Va=()=>M({queryKey:["thisWeekSchedule"],queryFn:()=>y("/api/continue-watching/this-week"),staleTime:1e3*60*5}),Qa=()=>M({queryKey:["genresAndTags"],queryFn:()=>y("/api/genres-and-tags"),staleTime:1e3*60*60}),Ha=()=>M({queryKey:["genreCards"],queryFn:()=>y("/api/insights/genre-cards")}),Dn="_container_z68uz_1",Rn="_bellBtn_z68uz_7",qn="_badge_z68uz_56",Mn="_dropdown_z68uz_96",Bn="_dropdownHeader_z68uz_127",Fn="_clearAllBtn_z68uz_141",Kn="_discoveryStatusRow_z68uz_156",jn="_statusDot_z68uz_167",zn="_statusDotRunning_z68uz_174",Wn="_statusDotOk_z68uz_179",Un="_statusDotInfo_z68uz_183",Vn="_statusDotError_z68uz_187",Qn="_statusDotIdle_z68uz_191",Hn="_list_z68uz_205",Jn="_item_z68uz_219",Yn="_thumbnail_z68uz_234",Gn="_itemInfo_z68uz_243",Zn="_itemTitle_z68uz_248",Xn="_itemMeta_z68uz_259",er="_systemItemMeta_z68uz_269",tr="_removeItem_z68uz_286",nr="_queueItem_z68uz_316",rr="_emptyState_z68uz_320",p={container:Dn,bellBtn:Rn,badge:qn,dropdown:Mn,dropdownHeader:Bn,clearAllBtn:Fn,discoveryStatusRow:Kn,statusDot:jn,statusDotRunning:zn,statusDotOk:Wn,statusDotInfo:Un,statusDotError:Vn,statusDotIdle:Qn,list:Hn,item:Jn,thumbnail:Yn,itemInfo:Gn,itemTitle:Zn,itemMeta:Xn,systemItemMeta:er,removeItem:tr,queueItem:nr,emptyState:rr},sr=({notification:e})=>{const n=An(),r=Pn(),[s,o]=Te.useState(!1),a=l=>{l.preventDefault(),l.stopPropagation(),n.mutate({showId:e.showId,episodeNumber:e.episodeNumber})},i=()=>{n.mutate({showId:e.showId,episodeNumber:e.episodeNumber})},c=l=>{l.preventDefault(),l.stopPropagation(),o(!0),r.mutate({showId:e.showId,episodeNumber:e.episodeNumber,showName:e.name,showThumbnail:e.thumbnail,nativeName:e.nativeName,englishName:e.englishName}),n.mutate({showId:e.showId,episodeNumber:e.episodeNumber}),window.setTimeout(()=>o(!1),1e3)},{titlePreference:d}=Cn(),u=d==="nativeName"?e.nativeName||e.name:d==="englishName"&&e.englishName||e.name;return t(K,{to:`/watch/${e.showId}/${e.episodeNumber}`,className:p.item,onClick:i,children:[t("img",{src:En(e.thumbnail,48,64),alt:e.name,className:p.thumbnail,loading:"lazy",decoding:"async"}),t("div",{className:p.itemInfo,children:[t("span",{className:p.itemTitle,children:u}),t("span",{className:p.itemMeta,children:["New Episode ",e.episodeNumber]})]}),t("button",{className:`${p.removeItem} ${p.queueItem}`,onClick:c,"aria-label":"Add notification to queue",children:s?t(g,{name:"check"}):t(g,{name:"plus"})}),t("button",{className:p.removeItem,onClick:a,"aria-label":"Remove notification",children:t(g,{name:"times"})})]})};function we({width:e="100%",height:n="1em",variant:r="rectangular",className:s="",style:o}){return t("div",{className:`skeleton skeleton-${r} ${s}`,style:{width:e,height:n,...o}})}const or=({count:e=3})=>t(F,{children:Array.from({length:e}).map((n,r)=>t("div",{className:p.item,style:{borderBottom:"1px solid var(--border-primary)",pointerEvents:"none"},children:[t("div",{className:p.thumbnail,style:{overflow:"hidden"},children:t(we,{width:"100%",height:"100%",variant:"rectangular"})}),t("div",{className:p.itemInfo,children:[t(we,{width:"80%",height:"1rem",variant:"text",style:{marginBottom:"4px"}}),t(we,{width:"40%",height:"0.7rem",variant:"rectangular",style:{borderRadius:"var(--radius-sm)"}})]})]},r))}),ar=()=>{const{data:e=[],isLoading:n}=lt(),{data:r=[]}=dt(),{data:s}=ut(),o=On(),a=O(),[i,c]=v(null);_(()=>{a.invalidateQueries({queryKey:["notifications"]})},[a]);const d=()=>{o.mutate(void 0)},u=r.find(l=>l.id===i)??null;return t("div",{className:p.dropdown,children:[t("div",{className:p.dropdownHeader,children:[t("h4",{children:"Notifications"}),e.length>0&&t("button",{className:p.clearAllBtn,onClick:d,children:"Clear All"})]}),t("div",{className:p.discoveryStatusRow,children:s?.running?t(F,{children:[t("span",{className:`${p.statusDot} ${p.statusDotRunning}`,"aria-hidden":"true"}),t("span",{children:s.total>0?`Checking ${Math.min(s.done,s.total)}/${s.total} shows...`:"Checking for new episodes..."})]}):s?.state==="complete"?t(F,{children:[t("span",{className:`${p.statusDot} ${p.statusDotOk}`,"aria-hidden":"true"}),t("span",{children:["Discovery complete — checked ",s.total," ",s.total===1?"show":"shows"]})]}):s?.state==="empty"?t(F,{children:[t("span",{className:`${p.statusDot} ${p.statusDotInfo}`,"aria-hidden":"true"}),t("span",{children:"No shows set to Watching — nothing to check"})]}):s?.state==="error"?t(F,{children:[t("span",{className:`${p.statusDot} ${p.statusDotError}`,"aria-hidden":"true"}),t("span",{children:"Last check failed — will retry automatically"})]}):t(F,{children:[t("span",{className:`${p.statusDot} ${p.statusDotIdle}`,"aria-hidden":"true"}),t("span",{children:s?.lastRunAt?`Last checked ${Math.max(1,Math.round((Date.now()-s.lastRunAt)/1e3))}s ago`:"Auto-checks every few minutes"})]})}),t("div",{className:p.list,children:n&&r.length===0?t(or,{count:4}):t(F,{children:[r.map(l=>t("div",{className:p.item,children:[t("div",{className:p.thumbnail,style:{background:"transparent",display:"flex",alignItems:"center",justifyContent:"center",borderRadius:0,boxShadow:"none"},children:t(g,{name:"info-circle",size:32,color:"#6c9fff"})}),t("div",{className:p.itemInfo,children:[t("span",{className:p.itemTitle,children:l.title}),t("button",{type:"button",className:p.systemItemMeta,onClick:()=>c(l.id),title:"View full status",children:l.message.length>40?l.message.slice(0,40)+"…":l.message})]}),t("button",{className:p.removeItem,disabled:!0,style:{opacity:.3,cursor:"not-allowed"},"aria-hidden":"true",children:t(g,{name:"plus"})}),t("button",{className:p.removeItem,disabled:!0,style:{opacity:.3,cursor:"not-allowed"},"aria-hidden":"true",children:t(g,{name:"times"})})]},l.id)),r.length>0&&e.length>0&&t("div",{className:p.notificationDivider}),e.length>0?e.map(l=>t(sr,{notification:l},l.id)):!n&&r.length===0&&t("div",{className:p.emptyState,children:"No new notifications"})]})}),u&&Ze(t("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.6)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999,padding:"1rem",backdropFilter:"blur(3px)"},onClick:()=>c(null),children:t("div",{style:{backgroundColor:"var(--bg-secondary)",padding:"1.5rem",borderRadius:"var(--radius-lg)",maxWidth:"420px",width:"100%",boxShadow:"var(--shadow-xl)",border:"1px solid var(--border-primary)"},onClick:l=>l.stopPropagation(),children:[t("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem",marginBottom:"1rem"},children:[t(g,{name:"info-circle",color:"#6c9fff"}),t("span",{style:{color:"#fff",fontWeight:600,fontSize:"1rem"},children:u.title})]}),t("p",{style:{color:"var(--text-secondary)",marginBottom:"1.5rem",lineHeight:1.5},children:u.message}),t("div",{style:{display:"flex",justifyContent:"flex-end"},children:t("button",{type:"button",onClick:()=>c(null),style:{background:"var(--primary-color)",color:"#fff",border:"none",padding:"0.5rem 1rem",borderRadius:"var(--radius-md)",cursor:"pointer",fontWeight:600},children:"OK"})})]})}),document.body)]})},ir=()=>{const[e,n]=v(!1),r=q(null),s=O(),o=Ln(),{data:a=[]}=lt(),{data:i=[]}=dt(),{data:c}=ut(),d=a.length+i.length,u=d>5?"5+":d,l=q(!1);_(()=>{const h=b=>{r.current&&!r.current.contains(b.target)&&n(!1)};return document.addEventListener("mousedown",h),()=>document.removeEventListener("mousedown",h)},[]),_(()=>{const h=!!c?.running;l.current&&!h&&(s.invalidateQueries({queryKey:["notifications"]}),s.invalidateQueries({queryKey:["discovery-status"]})),l.current=h},[c?.running,s]);const m=()=>{const h=!e;n(h),h&&o.mutate()};return t("div",{className:p.container,ref:r,children:[t("button",{className:p.bellBtn,onClick:m,"aria-label":"Notifications",children:[t(g,{name:"bell"}),d>0&&t("span",{className:p.badge,children:u})]}),e&&t(ar,{})]})},mt=te(void 0),ht=()=>{const e=ne(mt);if(e===void 0)throw new Error("useTheme must be used within a ThemeProvider");return e},Ja=[{id:"iris",label:"Taro (default)",blurb:"Deep purple",swatch:"#7d6df0"},{id:"mochi",label:"Mochi",blurb:"Monochrome pearl",swatch:"#f0f0f0"},{id:"sakura",label:"Sakura",blurb:"Soft pink",swatch:"#e0b0e0"}],Be={iris:"/logo.png",mochi:"/logo-mochi.png",sakura:"/logo-sakura.png"},pt=({className:e})=>{const{theme:n}=ht(),r=Be[n]||Be.iris;return t("img",{src:r,alt:"dango",className:e,decoding:"async",style:{height:"var(--logo-height, 75px)",width:"auto",display:"block",objectFit:"contain"}})},gt=te(void 0),Pe=()=>{const e=ne(gt);if(e===void 0)throw new Error("useSidebar must be used within a SidebarProvider");return e},ft=te(void 0),vt=()=>{const e=ne(ft);if(e===void 0)throw new Error("useContentType must be used within a ContentTypeProvider");return e},xe="virtual-keyboard:hide",Fe="virtual-keyboard:enabled-change",yt="virtual_keyboard_enabled",cr=!1;function Ke(){const e=localStorage.getItem(yt);return e===null?cr:e==="true"}const je=e=>e instanceof HTMLInputElement&&e.type==="text"&&!e.disabled&&!e.readOnly;function lr(){window.dispatchEvent(new CustomEvent(xe))}function dr(){const[e,n]=v(!1),[r,s]=v(Ke),o=q(null);return _(()=>{const a=l=>{r&&je(l.target)&&(o.current=l.target,n(!0))},i=l=>{l.target===o.current&&window.setTimeout(()=>{if(je(document.activeElement)){o.current=document.activeElement,n(!0);return}o.current=null,n(!1)},0)},c=()=>{o.current=null,n(!1)},d=l=>{if(l.key!==yt)return;const m=l.newValue==="true";s(m),m||c()},u=()=>{const l=Ke();s(l),l||c()};return document.addEventListener("focusin",a),document.addEventListener("focusout",i),window.addEventListener(xe,c),window.addEventListener("storage",d),window.addEventListener(Fe,u),()=>{document.removeEventListener("focusin",a),document.removeEventListener("focusout",i),window.removeEventListener(xe,c),window.removeEventListener("storage",d),window.removeEventListener(Fe,u)}},[r]),{activeInputRef:o,isVisible:r&&e,hide:()=>n(!1)}}const ur="_header_rlbx9_1",mr="_hidden_rlbx9_21",hr="_scrolled_rlbx9_25",pr="_logo_rlbx9_31",gr="_headerInner_rlbx9_44",fr="_leftSection_rlbx9_54",vr="_desktopNav_rlbx9_60",yr="_navLink_rlbx9_67",_r="_navLinkActive_rlbx9_83",br="_rightSection_rlbx9_102",wr="_searchWrapper_rlbx9_108",Sr="_searchInput_rlbx9_114",kr="_searchButton_rlbx9_146",Nr="_searchIcon_rlbx9_170",Ir="_profileBtn_rlbx9_180",xr="_profileImg_rlbx9_213",Tr="_hamburgerBtn_rlbx9_219",Er="_mobileSearchBar_rlbx9_247",Cr="_mobileSearchInner_rlbx9_283",$r="_mobileSearchIcon_rlbx9_293",Pr="_mobileSearchInput_rlbx9_300",k={header:ur,hidden:mr,scrolled:hr,logo:pr,headerInner:gr,leftSection:fr,desktopNav:vr,navLink:yr,navLinkActive:_r,rightSection:br,searchWrapper:wr,searchInput:Sr,searchButton:kr,searchIcon:Nr,profileBtn:Ir,profileImg:xr,hamburgerBtn:Tr,mobileSearchBar:Er,mobileSearchInner:Cr,mobileSearchIcon:$r,mobileSearchInput:Pr},Lr=async()=>{const e=await fetch("/api/auth/settings/sync");if(!e.ok)return null;const r=(await e.json()).actualActiveProvider;if(r==="github"){const s=await fetch("/api/auth/github/status");if(s.ok){const o=await s.json();if(o.authenticated&&o.user)return{name:o.user.name||o.user.login,picture:o.user.avatarUrl,provider:"github"}}}if(r==="google"){const s=await fetch("/api/auth/user");if(s.ok){const o=await s.json();if(o)return{name:o.name,picture:o.picture,email:o.email,provider:"google"}}}return null},Ar=()=>{const{toggleSidebar:e}=Pe(),{contentType:n}=vt(),[r,s]=v(""),[o,a]=v(!0),[i,c]=v(!1),[d,u]=v(!0),[l,m]=v(!1),h=Xe(),b=Ee(),P=q(null),z=q(!1),B=q(null),Q=q(null),W=q(null),{data:w}=M({queryKey:["sync-profile"],queryFn:Lr,staleTime:3e4});_(()=>{const L=()=>{P.current&&(window.clearTimeout(P.current),P.current=null)},G=()=>{z.current||(z.current=!0,B.current=requestAnimationFrame(()=>{z.current=!1,B.current=null;const H=window.scrollY<=10;u(ie=>ie===H?ie:H),a(ie=>ie||!0),L(),H||(P.current=window.setTimeout(()=>{a(!1)},2500))}))},Oe=H=>{(H.metaKey||H.ctrlKey)&&H.key==="k"?(H.preventDefault(),C.current?.focus()):H.key==="Escape"&&document.activeElement===C.current&&C.current?.blur()};return window.addEventListener("scroll",G,{passive:!0}),window.addEventListener("keydown",Oe),()=>{window.removeEventListener("scroll",G),window.removeEventListener("keydown",Oe),L(),B.current!==null&&(cancelAnimationFrame(B.current),B.current=null),z.current=!1}},[i]);const C=Te.useRef(null),oe=()=>window.innerWidth<=1024,_e=()=>{oe()?(m(!0),setTimeout(()=>W.current?.focus(),50)):document.activeElement===C.current&&r.trim()?ae():C.current?.focus()},Y=L=>{Q.current?.contains(L.relatedTarget)||m(!1)},ue=n==="manga"?"Search manga...":n==="tv"?"Search TV & movies...":n==="asmr"?"Search ASMR...":"Search anime...",ae=L=>{lr();const G=r.trim();G&&h(n==="manga"?`/manga?q=${encodeURIComponent(G)}`:n==="tv"?`/tv-search?q=${encodeURIComponent(G)}`:n==="asmr"?`/asmr?q=${encodeURIComponent(G)}`:`/search?query=${encodeURIComponent(G)}`)};return t(F,{children:[t("header",{className:`${k.header} ${o?"":k.hidden} ${d?"":k.scrolled}`,children:t("div",{className:k.headerInner,children:[t("div",{className:k.leftSection,children:[t("button",{className:k.hamburgerBtn,onClick:e,"aria-label":"Menu",children:t(g,{name:"bars"})}),t(K,{to:"/",className:k.logo,"aria-label":"Ani-Web Home",children:t(pt,{})}),t("nav",{className:k.desktopNav,children:[t(K,{to:"/",className:`${k.navLink} ${b.pathname==="/"?k.navLinkActive:""}`,children:"Home"}),t(K,{to:"/watchlist",className:`${k.navLink} ${b.pathname==="/watchlist"?k.navLinkActive:""}`,children:"Watchlist"}),t(K,{to:"/insights",className:`${k.navLink} ${b.pathname==="/insights"?k.navLinkActive:""}`,children:"Insights"}),t(K,{to:"/settings",className:`${k.navLink} ${b.pathname.startsWith("/settings")?k.navLinkActive:""}`,children:"Settings"})]})]}),t("div",{className:k.rightSection,children:[t("div",{className:k.searchWrapper,children:[t("input",{ref:C,type:"text","data-virtual-keyboard":"true",className:k.searchInput,placeholder:ue,value:r,onChange:L=>s(L.target.value),onFocus:()=>c(!0),onBlur:()=>c(!1),onKeyDown:L=>{L.key==="Enter"&&ae()}}),t("button",{type:"button",className:k.searchButton,"aria-label":"Search",onMouseDown:L=>L.preventDefault(),onClick:_e,children:t(g,{name:"search",className:k.searchIcon})})]}),t(ir,{}),t(K,{to:"/settings?tab=sync",className:k.profileBtn,"aria-label":"Sync settings",children:w?.picture?t("img",{src:w.picture,alt:w.name,className:k.profileImg,referrerPolicy:"no-referrer",decoding:"async"}):w?.provider==="github"?t(g,{name:"github"}):t(g,{name:"cloud"})})]})]})}),l&&t("div",{className:k.mobileSearchBar,ref:Q,onBlur:Y,children:t("div",{className:k.mobileSearchInner,children:[t(g,{name:"search",className:k.mobileSearchIcon}),t("input",{ref:W,type:"text","data-virtual-keyboard":"true",className:k.mobileSearchInput,placeholder:ue,value:r,onChange:L=>s(L.target.value),onKeyDown:L=>{L.key==="Enter"?(ae(),m(!1)):L.key==="Escape"&&m(!1)}})]})})]})},Or="_sidebar_153jc_1",Dr="_open_153jc_20",Rr="_sidebarHeader_153jc_25",qr="_closeBtn_153jc_33",Mr="_logo_153jc_57",Br="_navSection_153jc_69",Fr="_navLink_153jc_75",Kr="_active_153jc_108",jr="_overlay_153jc_118",zr="_versionInfo_153jc_138",U={sidebar:Or,open:Dr,sidebarHeader:Rr,closeBtn:qr,logo:Mr,navSection:Br,navLink:Fr,active:Kr,overlay:jr,versionInfo:zr},Wr="dango-client",Ur="3.3.4",Vr="module",Qr={node:">=22.12.0"},Hr={start:"vite",dev:"vite",build:"tsc && vite build",lint:"eslint .",test:"vitest run",preview:"vite preview","start:prod":"vite preview",format:"prettier --write ."},Jr={"@floating-ui/react":"^0.27.20","@tanstack/react-query":"^5.99.2","anime4k-webgpu-async":"^2.0.0","embla-carousel-react":"^8.6.0","hls.js":"^1.5.13",preact:"^10.29.1","react-hot-toast":"^2.6.0","react-router":"^8.3.0","react-simple-maps":"^5.0.3"},Yr={"@preact/preset-vite":"^2.10.5","@webgpu/types":"^0.1.72","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2",vite:"^7.3.1",vitest:"^5.0.0"},Le={name:Wr,private:!0,version:Ur,type:Vr,engines:Qr,scripts:Hr,dependencies:Jr,devDependencies:Yr},Gr=()=>{const{isOpen:e,setIsOpen:n}=Pe(),{contentType:r}=vt(),[s,o]=v(()=>localStorage.getItem("agreedToViewMature")==="true");_(()=>{const l=()=>o(localStorage.getItem("agreedToViewMature")==="true");return window.addEventListener("storage",l),window.addEventListener("focus",l),()=>{window.removeEventListener("storage",l),window.removeEventListener("focus",l)}},[]);const a=()=>{n(!1)},i=r==="manga",c=r==="tv",d=r==="asmr",u=[{to:"/",icon:t(g,{name:"home"}),label:"Home"},i?{to:"/manga",icon:t(g,{name:"book"}),label:"Manga"}:c?{to:"/tv-search",icon:t(g,{name:"tv"}),label:"TV and Movies"}:d?{to:"/asmr",icon:t(g,{name:"headphones"}),label:"ASMR"}:{to:"/search",icon:t(g,{name:"search"}),label:"Search"},i?{to:"/reading-list",icon:t(g,{name:"bookmark"}),label:"Reading List"}:c?{to:"/tv-watchlist",icon:t(g,{name:"clock"}),label:"TV Watchlist"}:d?{to:"/listening-list",icon:t(g,{name:"history"}),label:"Listening List"}:{to:"/watchlist",icon:t(g,{name:"clock"}),label:"Watchlist"},{to:"/insights",icon:t(g,{name:"chart-pie"}),label:"Insights"},{to:"/trackers",icon:t(g,{name:"sync-alt"}),label:"Trackers"},{to:"/radio",icon:t(g,{name:"broadcast-tower"}),label:"Radio"},{to:"/music",icon:t(g,{name:"headphones"}),label:"Music"},...s?[{to:"/mature",icon:t(g,{name:"pepper-hot"}),label:"Mature"}]:[],{to:"/settings",icon:t(g,{name:"cog"}),label:"Settings"}];return t(F,{children:[t("aside",{className:`${U.sidebar} ${e?U.open:""} sidebar`,children:[t("div",{className:U.sidebarHeader,children:[t("button",{className:U.closeBtn,onClick:()=>n(!1),"aria-label":"Close menu",children:"×"}),t(K,{to:"/",className:U.logo,onClick:a,children:t(pt,{})})]}),t("nav",{className:U.navSection,children:u.map(l=>t(Et,{to:l.to,className:({isActive:m})=>`${U.navLink} ${m?U.active:""}`,onClick:a,end:l.to==="/",children:[l.icon,t("span",{children:l.label})]},l.to))}),t("div",{className:U.versionInfo,children:["v",Le.version]})]}),e&&t("div",{className:U.overlay,onClick:()=>n(!1),"aria-label":"Close sidebar"})]})},Zr="_footer_1p5nb_1",Xr="_footerInner_1p5nb_15",es="_brandSection_1p5nb_27",ts="_logoRow_1p5nb_39",ns="_logoText_1p5nb_59",rs="_brandMeta_1p5nb_65",ss="_brandTagline_1p5nb_74",os="_statusPill_1p5nb_81",as="_statusDot_1p5nb_94",is="_linksGrid_1p5nb_102",cs="_linkColumn_1p5nb_110",ls="_columnTitle_1p5nb_116",ds="_bottomBar_1p5nb_140",us="_copyright_1p5nb_150",ms="_brand_1p5nb_27",hs="_heartIcon_1p5nb_166",ps="_backToTop_1p5nb_171",T={footer:Zr,footerInner:Xr,brandSection:es,logoRow:ts,logoText:ns,brandMeta:rs,brandTagline:ss,statusPill:os,statusDot:as,linksGrid:is,linkColumn:cs,columnTitle:ls,bottomBar:ds,copyright:us,brand:ms,heartIcon:hs,backToTop:ps},ze={iris:"/logo.png",mochi:"/logo-mochi.png",sakura:"/logo-sakura.png"},gs=()=>{const{theme:e}=ht(),n=ze[e]||ze.iris,r=new Date().getFullYear(),s=()=>{window.scrollTo({top:0,behavior:"smooth"})};return t("footer",{className:T.footer,children:[t("div",{className:T.footerInner,children:[t("div",{className:T.brandSection,children:[t("div",{className:T.logoRow,children:t("img",{src:n,className:T.logoText,alt:"dango",loading:"lazy",decoding:"async"})}),t("div",{className:T.brandMeta,children:[t("div",{className:T.statusPill,children:[t("span",{className:T.statusDot}),t("span",{children:["v",Le.version]})]}),t("p",{className:T.brandTagline,children:"Fast, local anime streaming."})]})]}),t("div",{className:T.linksGrid,children:[t("div",{className:T.linkColumn,children:[t("h4",{className:T.columnTitle,children:"Navigation"}),t(K,{to:"/",children:"Home"}),t(K,{to:"/watchlist",children:"Watchlist"}),t(K,{to:"/settings",children:"Settings"})]}),t("div",{className:T.linkColumn,children:[t("h4",{className:T.columnTitle,children:"Features"}),t(K,{to:"/search",children:"Search Anime"}),t(K,{to:"/trackers",children:"Trackers"}),t(K,{to:"/insights",children:"Insights"})]}),t("div",{className:T.linkColumn,children:[t("h4",{className:T.columnTitle,children:"Community"}),t("a",{href:"https://discord.gg/2FTSPXCsvn",target:"_blank",rel:"noopener noreferrer",children:[t(g,{name:"discord",style:{marginRight:"6px"}})," Discord"]}),t("a",{href:"https://github.com/serifpersia/dango",target:"_blank",rel:"noopener noreferrer",children:[t(g,{name:"github",style:{marginRight:"6px"}})," GitHub"]})]}),t("div",{className:T.linkColumn,children:[t("h4",{className:T.columnTitle,children:"Project"}),t("a",{href:"https://github.com/serifpersia/dango/releases",target:"_blank",rel:"noopener noreferrer",children:"Releases"}),t("a",{href:"https://github.com/serifpersia/dango/issues",target:"_blank",rel:"noopener noreferrer",children:"Feedback"})]})]})]}),t("div",{className:T.bottomBar,children:[t("p",{className:T.copyright,children:["© ",r," ",t("span",{className:T.brand,children:"dango"})," • Crafted with"," ",t(g,{name:"heart",className:T.heartIcon})," by"," ",t("a",{href:"https://github.com/serifpersia",target:"_blank",rel:"noopener noreferrer",children:"serifpersia"})]}),t("button",{className:T.backToTop,onClick:s,"aria-label":"Back to top",children:[t(g,{name:"chevron-up",size:14}),t("span",{children:"Top"})]})]})]})},fs=()=>typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():Math.random().toString(36).slice(2)+Date.now().toString(36),fe="https://script.google.com/macros/s/AKfycbxpllCbhqNjqFN02er9WV-0Tv-Y9br13UqXZqGHzSMetAgqKaFX5oFKGHgxji1fxJ6udw/exec",vs=()=>{const e=navigator.userAgent;let n="Unknown Browser",r="Unknown OS";return e.includes("Firefox")?n="Firefox":e.includes("SamsungBrowser")?n="Samsung Browser":e.includes("Opera")||e.includes("OPR")?n="Opera":e.includes("Trident")?n="Internet Explorer":e.includes("Edge")?n="Edge":e.includes("Chrome")?n="Chrome":e.includes("Safari")&&(n="Safari"),e.includes("Windows")?r="Windows":e.includes("Mac")?r="MacOS":e.includes("Linux")?r="Linux":e.includes("Android")?r="Android":(e.includes("iPhone")||e.includes("iPad")||e.includes("iPod"))&&(r="iOS"),`${n} on ${r}`},ys=async()=>{localStorage.removeItem("last_telemetry_ping");const e=localStorage.getItem("installation_id");if(e&&fe)try{await fetch(fe,{method:"POST",mode:"no-cors",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,action:"delete"})})}catch(n){console.error("Telemetry delete request failed:",n)}};let Se=!1;const _s=async()=>{if(!Se){Se=!0,localStorage.setItem("last_telemetry_ping",Date.now().toString());try{let e=localStorage.getItem("installation_id");if(!e)try{const r=await(await fetch("/api/installation-id")).json();r.id&&(e=r.id,localStorage.setItem("installation_id",e))}catch(n){console.error("Failed to fetch hardware ID:",n)}e||(e=fs(),localStorage.setItem("installation_id",e)),await fetch(fe,{method:"POST",mode:"no-cors",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,version:Le.version,userAgent:vs(),timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})})}catch(e){console.error("Telemetry ping failed:",e)}finally{Se=!1}}},bs=()=>{const[e,n]=v(!1);return _(()=>{if(!localStorage.getItem("telemetry_notice_v2")){const s=setTimeout(()=>n(!0),3e3);return()=>clearTimeout(s)}},[]),_(()=>{if(!(localStorage.getItem("telemetry_enabled")!=="false")||!fe)return;const s=localStorage.getItem("last_telemetry_ping"),o=Date.now(),a=1440*60*1e3;s&&o-parseInt(s)<a||_s()},[]),{showTelemetryModal:e,setShowTelemetryModal:n}},ws="_overlay_1juub_1",Ss="_fadeIn_1juub_1",ks="_content_1juub_11",Ns="_modalIn_1juub_1",Is="_sm_1juub_29",xs="_md_1juub_33",Ts="_lg_1juub_37",Es="_title_1juub_41",Cs="_body_1juub_48",$s="_footer_1juub_52",re={overlay:ws,fadeIn:Ss,content:ks,modalIn:Ns,sm:Is,md:xs,lg:Ts,title:Es,body:Cs,footer:$s};function _t({children:e}){return t("h2",{className:re.title,children:e})}function bt({children:e}){return t("div",{className:re.body,children:e})}function wt({children:e}){return t("div",{className:re.footer,children:e})}function se({isOpen:e,onClose:n,title:r,children:s,footer:o,width:a="md"}){const i=q(null);return _(()=>{if(!e)return;const c=u=>{u.key==="Escape"&&n?.()};document.addEventListener("keydown",c);const d=document.body.style.overflow;return document.body.style.overflow="hidden",i.current?.focus(),()=>{document.removeEventListener("keydown",c),document.body.style.overflow=d}},[e,n]),e?Ze(t("div",{role:"presentation",onMouseDown:c=>c.stopPropagation(),children:[t("div",{className:re.overlay,onClick:()=>n?.(),"aria-hidden":"true"}),t("div",{ref:i,className:`${re.content} ${re[a]}`,role:"dialog","aria-modal":"true","aria-label":r,tabIndex:-1,children:[r&&t(_t,{children:r}),t(bt,{children:s}),o&&t(wt,{children:o})]})]}),document.body):null}se.Header=_t;se.Body=bt;se.Actions=wt;const Ps="_slider_1f1gi_15",We={switch:"_switch_1f1gi_1",slider:Ps},Ls=({isChecked:e,onChange:n,id:r,disabled:s=!1})=>t("label",{className:We.switch,htmlFor:r,children:[t("input",{type:"checkbox",id:r,checked:e,onChange:n,disabled:s}),t("span",{className:We.slider})]}),As="_container_1hh92_1",Os="_description_1hh92_8",Ds="_dataList_1hh92_14",Rs="_dataTitle_1hh92_20",qs="_toggleRow_1hh92_39",Ms="_toggleLabel_1hh92_46",Bs="_actions_1hh92_50",Fs="_okButton_1hh92_55",Ks="_previewToggle_1hh92_71",js="_chevron_1hh92_89",zs="_chevronOpen_1hh92_94",Ws="_previewBox_1hh92_98",Us="_previewItem_1hh92_107",Vs="_previewKey_1hh92_114",Qs="_previewVal_1hh92_118",N={container:As,description:Os,dataList:Ds,dataTitle:Rs,toggleRow:qs,toggleLabel:Ms,actions:Bs,okButton:Fs,previewToggle:Ks,chevron:js,chevronOpen:zs,previewBox:Ws,previewItem:Us,previewKey:Vs,previewVal:Qs},Hs="3.3.4",Js={version:Hs},Ys=()=>{const e=navigator.userAgent;return e.includes("Firefox")?"Firefox":e.includes("SamsungBrowser")?"Samsung Browser":e.includes("Opera")||e.includes("OPR")?"Opera":e.includes("Edge")?"Edge":e.includes("Chrome")?"Chrome":e.includes("Safari")?"Safari":"Unknown"},Gs=()=>{const e=navigator.userAgent;return e.includes("Windows")?"Windows":e.includes("Mac")?"macOS":e.includes("Linux")?"Linux":e.includes("Android")?"Android":e.includes("iPhone")||e.includes("iPad")?"iOS":"Unknown"},Zs=({isOpen:e,onClose:n})=>{const[r,s]=v(!0),[o,a]=v(!1),i=()=>{localStorage.setItem("telemetry_enabled",String(r)),localStorage.setItem("telemetry_notice_v2","true"),r||ys(),n()};return t(se,{isOpen:e,onClose:()=>{},title:"Telemetry",children:t("div",{className:N.container,children:[t("p",{className:N.description,children:"Dango collects anonymous usage data to help track how many people use the app. This information is used to measure the project's install base and popularity. Participation is completely optional."}),t("div",{className:N.dataList,children:[t("p",{className:N.dataTitle,children:"What is collected:"}),t("ul",{children:[t("li",{children:"Browser type and operating system"}),t("li",{children:"Your timezone (e.g. Europe/Berlin)"}),t("li",{children:"Anonymous timestamps (first seen / last seen)"})]})]}),t("button",{className:N.previewToggle,onClick:()=>a(!o),children:[t("span",{children:"See exactly what data is sent"}),t(g,{name:"chevron-down",className:`${N.chevron} ${o?N.chevronOpen:""}`})]}),o&&t("div",{className:N.previewBox,children:[t("div",{className:N.previewItem,children:[t("span",{className:N.previewKey,children:"Browser:"}),t("span",{className:N.previewVal,children:Ys()})]}),t("div",{className:N.previewItem,children:[t("span",{className:N.previewKey,children:"OS:"}),t("span",{className:N.previewVal,children:Gs()})]}),t("div",{className:N.previewItem,children:[t("span",{className:N.previewKey,children:"Timezone:"}),t("span",{className:N.previewVal,children:Intl.DateTimeFormat().resolvedOptions().timeZone})]}),t("div",{className:N.previewItem,children:[t("span",{className:N.previewKey,children:"App Version:"}),t("span",{className:N.previewVal,children:Js.version})]})]}),t("div",{className:N.toggleRow,children:[t("span",{className:N.toggleLabel,children:"Send anonymous telemetry"}),t(Ls,{isChecked:r,onChange:c=>s(c.target.checked),id:"telemetry-notice-toggle"})]}),t("div",{className:N.actions,children:t("button",{className:N.okButton,onClick:i,children:"Ok"})})]})})},Xs="_promoWrapper_1vfnt_1",eo="_visible_1vfnt_11",to="_panel_1vfnt_16",no="_closeBtn_1vfnt_29",ro="_header_1vfnt_55",so="_discordIcon_1vfnt_62",oo="_headerText_1vfnt_74",ao="_body_1vfnt_89",io="_rolePreview_1vfnt_96",co="_badge_1vfnt_103",lo="_badgeRank_1vfnt_111",uo="_badgeDere_1vfnt_117",mo="_actions_1vfnt_123",ho="_btnJoin_1vfnt_129",po="_btnSettings_1vfnt_155",go="_skipLink_1vfnt_180",fo="_hint_1vfnt_200",E={promoWrapper:Xs,visible:eo,panel:to,closeBtn:no,header:ro,discordIcon:so,headerText:oo,body:ao,rolePreview:io,badge:co,badgeRank:lo,badgeDere:uo,actions:mo,btnJoin:ho,btnSettings:po,skipLink:go,hint:fo},Ue="discord_community_promo_dismissed",vo=4500;function yo({workerUrl:e}){const n=Xe(),[r,s]=v(!1),o=q(!1);_(()=>{if(localStorage.getItem(Ue)==="true"||localStorage.getItem("dango_discord_user"))return;const c=setTimeout(()=>s(!0),vo);return()=>clearTimeout(c)},[]);const a=()=>{o.current||(o.current=!0,s(!1),localStorage.setItem(Ue,"true"))},i=()=>{a(),n("/settings?tab=community")};return e?t("div",{className:`${E.promoWrapper} ${r?E.visible:""}`,"aria-live":"polite",children:t("div",{className:E.panel,children:[t("button",{className:E.closeBtn,onClick:a,"aria-label":"Dismiss",children:"✕"}),t("div",{className:E.header,children:[t("div",{className:E.discordIcon,children:t("svg",{width:"20",height:"16",viewBox:"0 0 71 55",fill:"white","aria-hidden":"true",children:t("path",{d:"M60.1 4.9A58.5 58.5 0 0 0 45.5.3a.22.22 0 0 0-.23.11 40.8 40.8 0 0 0-1.8 3.7 54 54 0 0 0-16.2 0 37.5 37.5 0 0 0-1.83-3.7.23.23 0 0 0-.23-.11A58.3 58.3 0 0 0 10.9 4.9a.2.2 0 0 0-.1.08C1.58 18.73-1 32.23.31 45.55a.24.24 0 0 0 .09.17 58.8 58.8 0 0 0 17.7 8.95.23.23 0 0 0 .25-.08 42 42 0 0 0 3.61-5.88.22.22 0 0 0-.12-.31 38.7 38.7 0 0 1-5.53-2.64.23.23 0 0 1-.02-.37 29 29 0 0 0 1.1-.86.22.22 0 0 1 .23-.03c11.6 5.3 24.14 5.3 35.6 0a.22.22 0 0 1 .23.03c.36.3.73.58 1.1.86a.23.23 0 0 1-.02.37 36.4 36.4 0 0 1-5.53 2.64.22.22 0 0 0-.12.31 47.1 47.1 0 0 0 3.61 5.88.22.22 0 0 0 .25.08 58.6 58.6 0 0 0 17.72-8.95.23.23 0 0 0 .09-.16c1.47-15.27-2.47-28.65-10.46-40.47a.18.18 0 0 0-.09-.09ZM23.73 37.55c-3.49 0-6.37-3.21-6.37-7.15s2.82-7.15 6.37-7.15c3.58 0 6.42 3.24 6.37 7.15 0 3.94-2.82 7.15-6.37 7.15Zm23.54 0c-3.49 0-6.37-3.21-6.37-7.15s2.82-7.15 6.37-7.15c3.58 0 6.42 3.24 6.37 7.15 0 3.94-2.79 7.15-6.37 7.15Z"})})}),t("div",{className:E.headerText,children:[t("h4",{children:"Join the Dango Community"}),t("p",{children:"Earn roles based on your watch stats"})]})]}),t("div",{className:E.body,children:[t("p",{style:{margin:"0 0 6px"},children:"Connect your Discord account and earn exclusive server roles based on how much you watch:"}),t("div",{className:E.rolePreview,children:[t("span",{className:`${E.badge} ${E.badgeRank}`,children:"S-Rank"}),t("span",{className:`${E.badge} ${E.badgeRank}`,children:"F–A Rank"}),t("span",{className:`${E.badge} ${E.badgeDere}`,children:"Tsundere"}),t("span",{className:`${E.badge} ${E.badgeDere}`,children:"Kamidere…"})]})]}),t("div",{className:E.actions,children:[t("a",{className:E.btnJoin,href:"https://discord.gg/6yPAZjDzg8",target:"_blank",rel:"noopener noreferrer",children:[t("svg",{width:"16",height:"12",viewBox:"0 0 71 55",fill:"currentColor","aria-hidden":"true",children:t("path",{d:"M60.1 4.9A58.5 58.5 0 0 0 45.5.3a.22.22 0 0 0-.23.11 40.8 40.8 0 0 0-1.8 3.7 54 54 0 0 0-16.2 0 37.5 37.5 0 0 0-1.83-3.7.23.23 0 0 0-.23-.11A58.3 58.3 0 0 0 10.9 4.9a.2.2 0 0 0-.1.08C1.58 18.73-1 32.23.31 45.55a.24.24 0 0 0 .09.17 58.8 58.8 0 0 0 17.7 8.95.23.23 0 0 0 .25-.08 42 42 0 0 0 3.61-5.88.22.22 0 0 0-.12-.31 38.7 38.7 0 0 1-5.53-2.64.23.23 0 0 1-.02-.37 29 29 0 0 0 1.1-.86.22.22 0 0 1 .23-.03c11.6 5.3 24.14 5.3 35.6 0a.22.22 0 0 1 .23.03c.36.3.73.58 1.1.86a.23.23 0 0 1-.02.37 36.4 36.4 0 0 1-5.53 2.64.22.22 0 0 0-.12.31 47.1 47.1 0 0 0 3.61 5.88.22.22 0 0 0 .25.08 58.6 58.6 0 0 0 17.72-8.95.23.23 0 0 0 .09-.16c1.47-15.27-2.47-28.65-10.46-40.47a.18.18 0 0 0-.09-.09ZM23.73 37.55c-3.49 0-6.37-3.21-6.37-7.15s2.82-7.15 6.37-7.15c3.58 0 6.42 3.24 6.37 7.15 0 3.94-2.82 7.15-6.37 7.15Zm23.54 0c-3.49 0-6.37-3.21-6.37-7.15s2.82-7.15 6.37-7.15c3.58 0 6.42 3.24 6.37 7.15 0 3.94-2.79 7.15-6.37 7.15Z"})}),"Join Discord Server"]}),t("button",{className:E.btnSettings,onClick:i,children:[t("span",{children:"⚙"})," Get Roles & Settings"]})]}),t("button",{className:E.skipLink,onClick:a,children:"Skip — don't show again"}),t("p",{className:E.hint,children:"You can always find this in Settings → Community"})]})}):null}const _o=async e=>(await y(`/api/settings?key=${e}`)).value,bo=async({key:e,value:n})=>y("/api/settings",{method:"POST",body:JSON.stringify({key:e,value:n})}),Ae=e=>M({queryKey:["settings",e],queryFn:()=>_o(e)}),St=()=>{const e=O();return j({mutationFn:bo,onSuccess:()=>{f.success("Setting updated!"),e.invalidateQueries({queryKey:["settings"]})},onError:n=>{f.error(`Failed to update setting: ${n.message}`)}})};function wo(){const e=Ee(),{data:n}=Ae("discordRPCEnabled"),r=q("");r.current||(r.current=typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():`tab-${Date.now()}-${Math.random().toString(36).slice(2)}`),_(()=>{if(n===!1||n==="false")return;const s=r.current,o=()=>fetch("/api/discord/heartbeat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:s})}).catch(()=>{});o();const a=setInterval(o,15e3),i=()=>{navigator.sendBeacon("/api/discord/heartbeat",new Blob([JSON.stringify({sessionId:s,bye:!0})],{type:"application/json"}))};return window.addEventListener("pagehide",i),()=>{clearInterval(a),window.removeEventListener("pagehide",i)}},[n]),_(()=>{if(n===!1||n==="false")return;const s=e.pathname;if(s.startsWith("/watch/")||s.startsWith("/player/"))return;let o="home";s.startsWith("/search")||s.startsWith("/mature")?o="search":s.startsWith("/watchlist")?o="watchlist":s.startsWith("/anime/")?o="anime":s.startsWith("/insights")?o="insights":s.startsWith("/settings")?o="settings":s.startsWith("/map")?o="map":s.startsWith("/trackers")?o="trackers":s.startsWith("/asmr")?o="asmr":s.startsWith("/manga")?o="manga":s.startsWith("/radio")?o="radio":s.startsWith("/music")?o="music":s.startsWith("/tv")&&(o="tv"),fetch("/api/discord/status",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({page:o})}).catch(()=>{})},[e.pathname,n])}function kt(e,n){const[r,s]=v(()=>{try{const a=localStorage.getItem(e);if(a===null)return n;if(typeof n=="string")return a;try{return JSON.parse(a)}catch{return a}}catch{return n}});_(()=>{const a=i=>{if(i.key===e)try{if(i.newValue===null){s(n);return}if(typeof n=="string"){s(i.newValue);return}try{s(JSON.parse(i.newValue))}catch{s(i.newValue)}}catch{}};return window.addEventListener("storage",a),()=>window.removeEventListener("storage",a)},[e,n]);const o=R(a=>{s(i=>{const c=typeof a=="function"?a(i):a;try{typeof c=="string"?localStorage.setItem(e,c):localStorage.setItem(e,JSON.stringify(c))}catch{}return c})},[e]);return[r,o]}const Nt=te(void 0),So=()=>{const e=ne(Nt);if(!e)throw new Error("useAnimePaheCookie must be used within an AnimePaheCookieProvider");return e},ko="_container_e96gf_1",No="_field_e96gf_9",Io="_textarea_e96gf_20",xo="_input_e96gf_40",To="_button_e96gf_58",Eo="_secondaryButton_e96gf_78",Co="_actions_e96gf_95",$o="_hint_e96gf_104",Po="_link_e96gf_117",A={container:ko,field:No,textarea:Io,input:xo,button:To,secondaryButton:Eo,actions:Co,hint:$o,link:Po},Lo="https://github.com/serifpersia/dango/releases/latest/download/dango-extension.zip",Ao=e=>{try{return JSON.parse(e.detail)}catch{return null}},Oo=({isOpen:e,onClose:n,onSuccess:r})=>{const[s,o]=v(1),[a,i]=v(navigator.userAgent),[c,d]=v(""),[u,l]=v(!1),m=q(null),h=navigator.userAgent,b=/android/i.test(h),P=/firefox|fxios/i.test(h)&&!b,z=!P&&!b&&/chrome|chromium|edg|brave/i.test(h),B=P||z;_(()=>{e&&(o(1),i(navigator.userAgent),d(""),l(!1))},[e]),_(()=>()=>{m.current&&(window.removeEventListener("dango:pahe-cookie",m.current),m.current=null)},[]);const Q=()=>{localStorage.setItem("animepahe_ua",a),window.open("https://animepahe.pw","_blank","noopener,noreferrer"),o(2)},W=()=>{if(u)return;l(!0);const C=window.setTimeout(()=>{l(!1),m.current&&(window.removeEventListener("dango:pahe-cookie",m.current),m.current=null),f.error("Helper not detected — install it via about:debugging first.")},3e3),oe=_e=>{window.clearTimeout(C),window.removeEventListener("dango:pahe-cookie",oe),m.current=null,l(!1);const Y=Ao(_e);if(Y?.ok&&Y.cookie)d(Y.cookie),f.success("Cookie extracted from helper!");else if(Y?.error==="NO_COOKIE"){const ue=Y.debug?.stores?.length??0,ae=Y.debug?.names??[];f.error(`Helper found no cf_clearance (checked ${ue} stores, saw: ${ae.join(", ")||"none"}) — solve the challenge on the AnimePahe tab first.`)}else f.error("Helper request failed — try again.")};m.current=oe,window.addEventListener("dango:pahe-cookie",oe),window.dispatchEvent(new CustomEvent("dango:get-pahe-cookie"))},w=()=>{const C=c.trim();if(!C){f.error("Please enter the cf_clearance cookie");return}try{localStorage.setItem("animepahe_cookie",C),f.success("Cookie updated successfully! Reloading…"),r?.(),n(),window.setTimeout(()=>window.location.reload(),1e3)}catch{f.error("Failed to save cookie")}};return t(se,{isOpen:e,onClose:n,title:"AnimePahe Verification Required",children:t("div",{className:A.container,children:s===1?t(F,{children:[t("p",{children:"AnimePahe requires a manual verification to bypass Cloudflare/DDoS-Guard protection."}),t("div",{className:A.field,children:[t("label",{children:"Your User-Agent (will be used for requests):"}),t("textarea",{value:a,readOnly:!0,rows:3,className:A.textarea})]}),t("div",{className:A.actions,children:[t("button",{className:A.secondaryButton,onClick:n,children:"Cancel"}),t("button",{className:A.button,onClick:Q,children:"Start Verification (Opens AnimePahe)"})]})]}):t(F,{children:[t("p",{children:["1. Solve the challenge on the ",t("strong",{children:"AnimePahe tab"})," (keep that tab open).",t("br",{}),"2. Copy the ",t("strong",{children:"cf_clearance"})," cookie value using one of these:",t("br",{}),t("br",{}),t("strong",{children:"Chrome / Edge — DevTools:"})," press ",t("code",{children:"F12"})," →"," ",t("strong",{children:"Application"})," → ",t("strong",{children:"Cookies"})," →"," ",t("code",{children:"https://animepahe.pw"}),". Find ",t("strong",{children:"cf_clearance"}),", double-click its ",t("strong",{children:"Value"})," to select it, then copy.",t("br",{}),t("br",{}),t("strong",{children:"Firefox — Storage Inspector:"})," press ",t("code",{children:"F12"})," →"," ",t("strong",{children:"Storage"})," → ",t("strong",{children:"Cookies"})," →"," ",t("code",{children:"https://animepahe.pw"}),". Find ",t("strong",{children:"cf_clearance"}),", right-click the value → ",t("strong",{children:"Copy Value"}),".",t("br",{}),t("br",{}),t("strong",{children:"Either browser — extension:"})," open"," ",t("strong",{children:"Cookie Manager"})," while on the AnimePahe tab, find"," ",t("strong",{children:"cf_clearance"}),", and copy its value (or use the extension's export).",t("br",{}),t("br",{}),"3. Paste it below. Copy ",t("strong",{children:"only the value"})," — remove any"," ",t("code",{children:"cf_clearance="})," prefix or quotes if they were included."]}),B&&t("div",{className:A.hint,children:[t("strong",{children:"Dango helper (one-time setup):"})," ",P?t(F,{children:["type ",t("code",{children:"about:debugging"})," in the address bar →"," ",t("strong",{children:"This Firefox"})," → ",t("strong",{children:"Load Temporary Add-on"})," ","→ open the ",t("code",{children:"dango-extension/firefox"})," folder and pick"," ",t("code",{children:"manifest.json"}),". (Temporary helpers unload when Firefox closes — repeat after a restart.)"]}):t(F,{children:["type ",t("code",{children:"chrome://extensions"})," in the address bar → enable"," ",t("strong",{children:"Developer mode"})," → ",t("strong",{children:"Load unpacked"})," → open the ",t("code",{children:"dango-extension/chrome"})," folder. (Unpacked helpers show a developer-mode notice — expected.)"]})," ","Use this link to download the extension and extract it:"," ",t("a",{href:Lo,target:"_blank",rel:"noreferrer",className:A.link,children:"dango-extension.zip"}),". Then click Extract below and the field fills itself.",t("div",{className:A.actions,children:t("button",{className:A.button,onClick:W,disabled:u,type:"button",children:u?"Extracting…":"Extract cookie from helper"})})]}),t("div",{className:A.field,children:[t("label",{children:"cf_clearance cookie value:"}),t("input",{type:"text",value:c,onChange:C=>d(C.target.value),placeholder:"e.g. xxxxxxxx.xxxxxxxx.xxxxxxx-xxxxxxx",className:A.input})]}),t("div",{className:A.actions,children:[t("button",{className:A.secondaryButton,onClick:n,children:"Cancel"}),t("button",{className:A.secondaryButton,onClick:()=>o(1),children:"Back"}),t("button",{className:A.button,onClick:w,children:"Submit"})]})]})})})};function Do(){const[e,n]=v(!1);return _(()=>{const r=window.setTimeout(()=>n(!0),120);return()=>window.clearTimeout(r)},[]),e?t("div",{className:"top-progress-bar",role:"progressbar","aria-label":"Loading"}):null}class Ro extends Ct{state={hasError:!1};static getDerivedStateFromError(n){return{hasError:!0}}componentDidCatch(n,r){console.error("Uncaught error:",n,r)}render(){return this.state.hasError?t("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100vh",width:"100%",backgroundColor:"#1a1b1c",color:"#fff",textAlign:"center",padding:"2rem"},children:[t(g,{name:"exclamation-triangle",style:{fontSize:"4rem",color:"#ff4d4d",marginBottom:"1rem"}}),t("h1",{style:{marginBottom:"1rem"},children:"Something went wrong"}),t("p",{style:{color:"#aaa",marginBottom:"2rem"},children:"The application encountered an unexpected error."}),t("button",{onClick:()=>{this.setState({hasError:!1}),window.location.href="/"},style:{padding:"0.8rem 1.5rem",backgroundColor:"var(--accent, #3d5afe)",color:"#fff",border:"none",borderRadius:"0.5rem",cursor:"pointer",display:"flex",alignItems:"center",gap:"0.5rem",fontSize:"1rem",transition:"background-color 0.2s"},onMouseOver:n=>n.currentTarget.style.backgroundColor="#536dfe",onMouseOut:n=>n.currentTarget.style.backgroundColor="var(--accent, #3d5afe)",children:[t(g,{name:"home"}),"Go back Home"]})]}):this.props.children}}const It=te(void 0),qo=({children:e})=>{const[n,r]=v(!1),s=R(()=>r(!0),[]),o=R(()=>r(!1),[]);return _(()=>ct("lan",s),[s]),t(It.Provider,{value:{isOpen:n,openModal:s,closeModal:o},children:e})},Mo=()=>{const e=ne(It);if(!e)throw new Error("useLanAuth must be used within a LanAuthProvider");return e},Bo="_container_88bss_1",Fo="_field_88bss_8",Ko="_input_88bss_19",jo="_actions_88bss_37",he={container:Bo,field:Fo,input:Ko,actions:jo},Ve=$t(({variant:e="primary",size:n="md",loading:r,children:s,className:o="",disabled:a,...i},c)=>{const d=["btn",`btn-${e}`,n!=="md"&&`btn-${n}`,r&&"btn-loading",o].filter(Boolean).join(" ");return t("button",{className:d,disabled:a||r,ref:c,...i,children:r?t("span",{className:"btn-spinner"}):s})}),zo=({isOpen:e,onClose:n,onSuccess:r})=>{const[s,o]=v(""),[a,i]=v(!1);Te.useEffect(()=>{e&&o("")},[e]);const c=async()=>{if(!s){f.error("Please enter your password");return}i(!0);try{const d=await fetch("/api/auth/app-login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:s})}),u=await d.json().catch(()=>({}));if(!d.ok){f.error(u.error||"Login failed");return}f.success("Authenticated successfully"),r(),n(),window.location.reload()}catch{f.error("Network error")}finally{i(!1)}};return t(se,{isOpen:e,onClose:n,title:"LAN Authentication Required",children:t("div",{className:he.container,children:[t("p",{children:"This instance is protected. Enter the password to access from this device."}),t("div",{className:he.field,children:[t("label",{htmlFor:"lan-password",children:"Password"}),t("input",{id:"lan-password",type:"password",value:s,onChange:d=>o(d.target.value),placeholder:"Enter password...",className:he.input,onKeyDown:d=>d.key==="Enter"&&c()})]}),t("div",{className:he.actions,children:[t(Ve,{variant:"secondary",onClick:n,disabled:a,children:"Cancel"}),t(Ve,{variant:"primary",onClick:c,loading:a,children:"Unlock"})]})]})})},Wo=I(()=>x(()=>import("./Home-thJhPfs1.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29]))),Uo=I(()=>x(()=>import("./Watchlist-P6YMZUdF.js"),__vite__mapDeps([30,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,31,32]))),Vo=I(()=>x(()=>import("./Settings-BgPWBl2V.js"),__vite__mapDeps([33,1,2,3,34]))),Qe=I(()=>x(()=>import("./Player-BEtAYps2.js"),__vite__mapDeps([35,1,2,36,3,37,38,23,10,17,18,6,7,8,22,39,40,41,42,43]))),Qo=I(()=>x(()=>import("./Search-C8e2nlDD.js"),__vite__mapDeps([44,1,3,4,5,2,6,7,8,9,10,11,12,13,14,15,45,46]))),Ho=I(()=>x(()=>import("./Mature-Dqh_9SA3.js"),__vite__mapDeps([47,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,23,22,45,46,48]))),He=I(()=>x(()=>import("./Asmr-B6ZiqkmU.js"),__vite__mapDeps([49,1,3,2,9,7,10,11,28,50,51,52,38]))),Jo=I(()=>x(()=>import("./Manga-BI9WMTx5.js"),__vite__mapDeps([53,1,3,14,15,9,7,10,11,19,20,2,22,54,55]))),Yo=I(()=>x(()=>import("./MangaInfoPage-DcrEr7Sk.js"),__vite__mapDeps([56,1,3,14,15,20,2,54,55]))),Go=I(()=>x(()=>import("./MangaReadPage-SYg63m48.js"),__vite__mapDeps([57,1,14,3,15,2,20,54,55]))),Zo=I(()=>x(()=>import("./ReadingList-O0QPwXu7.js"),__vite__mapDeps([58,1,9,7,3,10,11,59,12,13,14,15,31,32,19,20,2,21,16]))),Xo=I(()=>x(()=>import("./Radio-B2Q_Egj7.js"),__vite__mapDeps([60,1,3,2,50,51,61,62]))),ea=I(()=>x(()=>import("./Music-zsPwT8_5.js"),__vite__mapDeps([63,1,3,50,51,61,62,2,64]))),Je=I(()=>x(()=>import("./TvSearch-CxU33UOf.js"),__vite__mapDeps([65,1,3,24,9,7,10,11,25,26,2,12,13,14,15,45,46]))),ta=I(()=>x(()=>import("./TvInfo-D_scgw_h.js"),__vite__mapDeps([66,1,3,23,26,2,67]))),na=I(()=>x(()=>import("./Tv-Ca0fCdko.js"),__vite__mapDeps([68,1,3,36,2,37,69,23,22,26,38,10,41,42,70]))),ra=I(()=>x(()=>import("./TvWatchlist-B4X1fWEH.js"),__vite__mapDeps([71,1,9,7,3,10,11,59,12,13,14,15,31,32,16,25,26,2]))),sa=I(()=>x(()=>import("./ListeningList-ctAz_6Zi.js"),__vite__mapDeps([72,1,9,7,3,10,11,59,12,13,14,15,31,32,52,28,2,50,51,27,16]))),oa=I(()=>x(()=>import("./Trackers-Bfoiyuzy.js"),__vite__mapDeps([73,1,2,3,74]))),aa=I(()=>x(()=>import("./Insights-ZlgPrzGD.js"),__vite__mapDeps([75,1,2,3,76]))),ia=I(()=>x(()=>import("./Map-Dj51g5zL.js"),__vite__mapDeps([77,1,3,78]))),ca=I(()=>x(()=>import("./AnimeInfoPage-Dqr5QH6R.js"),__vite__mapDeps([79,1,2,3]))),la=I(()=>x(()=>import("./PlayerRedirect-D70t8VUW.js"),__vite__mapDeps([80,1]))),da=I(()=>x(()=>import("./VirtualKeyboard-6ZNTym4R.js"),__vite__mapDeps([81,1,82])));function ua(){const{isOpen:e,closeModal:n,onSuccess:r}=So(),{isOpen:s,setIsOpen:o}=Pe(),{isOpen:a,openModal:i,closeModal:c}=Mo(),d=Ee(),u=dr(),{showTelemetryModal:l,setShowTelemetryModal:m}=bs();wo();const[h,b]=v("");_(()=>{y("/api/discord-roles-config").then(w=>{w.workerUrl&&b(w.workerUrl)}).catch(()=>{})},[]);const[P,z]=v(!1);_(()=>{fetch("/api/auth/app-status").then(w=>w.json()).then(w=>{w.hasPassword&&!w.isAuthenticated&&(z(!0),i())}).catch(()=>{})},[i]);const[B,Q]=kt("lan_auth_notice_shown","false"),W=q(!1);return _(()=>{if(B==="true"||W.current)return;W.current=!0,Q("true");const w=setTimeout(()=>{f("Optional LAN lock is available. Set a password in Settings to protect access from other devices on your network.",{duration:1e4,icon:"🔒"})},3e3);return()=>clearTimeout(w)},[B,Q]),_(()=>{window.scrollTo(0,0)},[d.pathname]),_(()=>{const w=C=>{s&&C.key==="Escape"&&o(!1)};return s?document.body.classList.add("sidebar-open"):document.body.classList.remove("sidebar-open"),window.addEventListener("keydown",w),()=>{window.removeEventListener("keydown",w),document.body.classList.remove("sidebar-open")}},[s,o]),t("div",{className:"app-container",children:[t(Oo,{isOpen:e,onClose:n,onSuccess:r}),t(Zs,{isOpen:l,onClose:()=>m(!1)}),t(zo,{isOpen:a,onClose:P?()=>{}:c,onSuccess:()=>{z(!1),c()}}),h&&t(yo,{workerUrl:h}),t(xn,{position:"top-center",toastOptions:{style:{background:"var(--bg-elevated)",color:"var(--text-primary)",border:"1px solid var(--border-primary)"},success:{style:{background:"var(--accent)",color:"var(--accent-text)"},iconTheme:{primary:"var(--accent-text)",secondary:"var(--accent)"}},error:{style:{background:"rgba(153, 42, 42, 0.95)",color:"#fff"}}}}),t(Ar,{}),t(Gr,{}),t("main",{className:"main-content",children:t(Ro,{children:t(De,{fallback:t(Do,{}),children:t(Pt,{children:[t(S,{path:"/",element:t(Wo,{})}),t(S,{path:"/watchlist/:filter?",element:t(Uo,{})}),t(S,{path:"/reading-list/:filter?",element:t(Zo,{})}),t(S,{path:"/search",element:t(Qo,{})}),t(S,{path:"/mature",element:t(Ho,{})}),t(S,{path:"/asmr",element:t(He,{})}),t(S,{path:"/asmr/:rj",element:t(He,{})}),t(S,{path:"/manga",element:t(Jo,{})}),t(S,{path:"/manga/:provider/:id",element:t(Yo,{})}),t(S,{path:"/manga/:provider/:id/read",element:t(Go,{})}),t(S,{path:"/radio",element:t(Xo,{})}),t(S,{path:"/music",element:t(ea,{})}),t(S,{path:"/tv",element:t(Je,{})}),t(S,{path:"/tv/:id",element:t(ta,{})}),t(S,{path:"/tv/:id/watch",element:t(na,{})}),t(S,{path:"/tv-search",element:t(Je,{})}),t(S,{path:"/tv-watchlist/:filter?",element:t(ra,{})}),t(S,{path:"/listening-list/:filter?",element:t(sa,{})}),t(S,{path:"/settings",element:t(Vo,{})}),t(S,{path:"/trackers",element:t(oa,{})}),t(S,{path:"/mal",element:t(Re,{to:"/trackers",replace:!0})}),t(S,{path:"/insights",element:t(aa,{})}),t(S,{path:"/map",element:t(ia,{})}),t(S,{path:"/anime/:id",element:t(ca,{})}),t(S,{path:"/watch/:id",element:t(Qe,{})}),t(S,{path:"/watch/:id/:episodeNumber",element:t(Qe,{})}),t(S,{path:"/player/:id/:episodeNumber?",element:t(la,{})}),t(S,{path:"*",element:t(Re,{to:"/",replace:!0})})]})})})}),t(gs,{}),u.isVisible&&t(De,{fallback:null,children:t(da,{activeInputRef:u.activeInputRef,isVisible:u.isVisible,onClose:u.hide})})]})}function ma(){return t(qo,{children:t(ua,{})})}const ha=({children:e})=>{const[n,r]=v(!1),s=R(()=>{r(a=>!a)},[]),o=le(()=>({isOpen:n,setIsOpen:r,toggleSidebar:s}),[n,s]);return t(gt.Provider,{value:o,children:e})},pa=({children:e})=>{const[n,r]=kt("dango_content_type","anime"),s=le(()=>({contentType:n,setContentType:r}),[n,r]);return t(ft.Provider,{value:s,children:e})},ga=({children:e})=>{const[n,r]=v("englishName"),[s,o]=v(!0);_(()=>{(async()=>{try{const c=await fetch("/api/settings?key=titlePreference");if(c.ok){const d=await c.json();d.value&&r(d.value)}}catch(c){console.error("Error fetching title preference in context:",c)}finally{o(!1)}})()},[]);const a=le(()=>({titlePreference:n,setTitlePreference:r,loading:s}),[n,s]);return t(it.Provider,{value:a,children:e})},xt=te(void 0),Ya=()=>{const e=ne(xt);if(e===void 0)throw new Error("useLowEndMode must be used within a LowEndModeProvider");return e},fa=({children:e})=>{const{data:n,isLoading:r}=Ae("lowEndMode"),s=St(),[o,a]=v(!1);_(()=>{n!==void 0&&a(n==="true"||n===!0)},[n]),_(()=>{o?document.body.classList.add("low-end"):document.body.classList.remove("low-end")},[o]);const i=R(d=>{a(d),s.mutate({key:"lowEndMode",value:String(d)})},[s]),c=le(()=>({lowEndMode:o,setLowEndMode:i,loading:r}),[o,i,r]);return t(xt.Provider,{value:c,children:e})},va=["iris","mochi","sakura"];function Ye(e){e==="iris"?document.documentElement.removeAttribute("data-theme"):document.documentElement.setAttribute("data-theme",e)}const ya=({children:e})=>{const{data:n,isLoading:r}=Ae("theme"),s=St(),[o,a]=v("iris");_(()=>{typeof n=="string"&&va.includes(n)&&a(n)},[n]),_(()=>{Ye(o)},[o]);const i=R(d=>{d!==o&&(a(d),Ye(d),s.mutate({key:"theme",value:d}))},[s,o]),c=le(()=>({theme:o,setTheme:i,loading:r}),[o,i,r]);return t(mt.Provider,{value:c,children:e})},_a=({children:e})=>{const[n,r]=v(!1),[s,o]=v(void 0),a=R(c=>{o(()=>c),r(!0)},[]),i=R(()=>{r(!1),o(void 0)},[]);return _(()=>ct("animepahe",()=>a()),[a]),t(Nt.Provider,{value:{isOpen:n,openModal:a,closeModal:i,onSuccess:s},children:e})},ba=new Ot({defaultOptions:{queries:{staleTime:1e3*60*5,refetchOnWindowFocus:!1,refetchIntervalInBackground:!1,retry:1}}}),Ge=document.getElementById("root");Ge&&Lt(t(At,{children:t(Dt,{client:ba,children:t(_a,{children:t(ha,{children:t(pa,{children:t(ga,{children:t(fa,{children:t(ya,{children:t(ma,{})})})})})})})})}),Ge);export{Ra as $,Ua as A,Ve as B,za as C,$ as D,ht as E,Ja as F,Ke as G,Js as H,vs as I,Fe as J,_s as K,ys as L,se as M,xa as N,Oo as O,Pa as P,lr as Q,A as R,we as S,Ls as T,ct as U,yt as V,Pe as W,Ha as X,Do as Y,Da as Z,x as _,kt as a,Oa as a0,Ea as b,Ca as c,Cn as d,Na as e,En as f,$a as g,vt as h,ja as i,La as j,Aa as k,qa as l,Ma as m,Va as n,Fa as o,Ta as p,y as q,Qa as r,Ia as s,Ka as t,Ya as u,Ba as v,Ae as w,St as x,Wa as y,f as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{q as d}from"./vendor-core-8R2fFbyN.js";import{u as g,b as w,a as q}from"./vendor-query-BXRECSI6.js";import{q as W,z as l}from"./index-IZgh1beL.js";import{u as b}from"./QueueOptionsButton-B6BMq66e.js";function Q(t){const i=g(),{data:n,isLoading:u,error:r}=b(t),{data:h}=w({queryKey:["watchlist-check",t],queryFn:async()=>t?W(`/api/watchlist/check/${t}`):{inWatchlist:!1},enabled:!!t}),s=h?.inWatchlist??!1,{mutateAsync:c}=q({mutationFn:async({wasIn:a,meta:e})=>{const m=a?"/api/watchlist/remove":"/api/watchlist/add",p={id:t,name:e?.name||e?.names?.romaji,thumbnail:e?.thumbnail,nativeName:e?.names?.native,englishName:e?.names?.english,type:e?.type,isAdult:e?.isAdult},o=await fetch(m,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(p)});if(!o.ok){const f=await o.json().catch(()=>null);throw new Error(f?.error||"Watchlist update failed")}return!a},onMutate:async({wasIn:a})=>{await i.cancelQueries({queryKey:["watchlist-check",t]}),i.setQueryData(["watchlist-check",t],e=>({...e,inWatchlist:!a}))},onError:a=>{i.invalidateQueries({queryKey:["watchlist-check",t]}),l.error(a instanceof Error?a.message:"Failed to update watchlist")},onSuccess:a=>{l.success(a?"Added to watchlist":"Removed from watchlist"),i.invalidateQueries({queryKey:["watchlist"]})}}),y=d(async()=>{!t||!n||await c({wasIn:s,meta:n})},[t,n,s,c]);return{showMeta:n,inWatchlist:s,loadingMeta:u,error:r?r.message:null,toggleWatchlist:y}}export{Q as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{T as L}from"./vendor-core-8R2fFbyN.js";import{b as d,u as c,a as y,e as Q}from"./vendor-query-BXRECSI6.js";import{q as n,z as o}from"./index-IZgh1beL.js";function P(e){return String(e||"").trim().toUpperCase()}function B(e){return P(e.id||e._id||"")}function I(e){return!!e.isAdult}const U=["Listening","Completed","On-Hold","Dropped","Planned"],T=e=>P(e),J=(e="All",s=1,r=24)=>d({queryKey:["asmr-library",e,s,r],queryFn:()=>{const t=new URLSearchParams;return t.set("status",e),t.set("page",String(s)),t.set("limit",String(r)),n(`/api/asmr/library?${t.toString()}`)}}),O=()=>d({queryKey:["asmr-library-ids"],queryFn:()=>n("/api/asmr/library/ids"),staleTime:1e3*60}),M=e=>d({queryKey:["asmr-library-check",e],queryFn:()=>n(`/api/asmr/library/check/${encodeURIComponent(e||"")}`),enabled:!!e,staleTime:1e3*60}),D=(e=24)=>d({queryKey:["asmr-continue-listening",e],queryFn:()=>n(`/api/asmr/continue-listening?limit=${e}`)}),G=e=>d({queryKey:["asmr-progress",e],queryFn:()=>n(`/api/asmr/progress/${encodeURIComponent(e||"")}`),enabled:!!e}),$=()=>{const e=c();return y({mutationFn:async s=>{const{silent:r,...t}=s;return n("/api/asmr/library/add",{method:"POST",body:JSON.stringify(t)})},onSuccess:(s,r)=>{r.silent||o.success("Added to listening list"),e.invalidateQueries({queryKey:["asmr-library"]}),e.invalidateQueries({queryKey:["asmr-library-ids"]}),e.invalidateQueries({queryKey:["asmr-library-check",T(r.rjCode)]})},onError:s=>{o.error(`Failed to add: ${s.message}`)}})},k=()=>{const e=c();return y({mutationFn:async s=>{await n("/api/asmr/library/remove",{method:"POST",body:JSON.stringify({id:s})})},onSuccess:(s,r)=>{o.success("Removed from listening list"),e.invalidateQueries({queryKey:["asmr-library"]}),e.invalidateQueries({queryKey:["asmr-library-ids"]}),e.invalidateQueries({queryKey:["asmr-continue-listening"]}),e.invalidateQueries({queryKey:["asmr-library-check",r]})},onError:s=>{o.error(`Failed to remove: ${s.message}`)}})},H=()=>{const e=c();return y({mutationFn:async({id:s,status:r})=>{await n("/api/asmr/library/status",{method:"POST",body:JSON.stringify({id:s,status:r})})},onSuccess:()=>{o.success("Status updated"),e.invalidateQueries({queryKey:["asmr-library"]}),e.invalidateQueries({queryKey:["asmr-continue-listening"]})},onError:s=>{o.error(`Failed to update status: ${s.message}`)}})},x=()=>{const e=c();return y({mutationFn:async s=>{await n("/api/asmr/progress",{method:"POST",body:JSON.stringify(s)})},onSuccess:(s,r)=>{e.invalidateQueries({queryKey:["asmr-progress",r.workId]}),e.invalidateQueries({queryKey:["asmr-continue-listening"]}),e.invalidateQueries({queryKey:["asmr-library"]}),e.invalidateQueries({queryKey:["asmr-library-ids"]})}})},W=()=>{const e=c();return y({mutationFn:async({workId:s,trackIndex:r})=>{await n("/api/asmr/progress/remove",{method:"POST",body:JSON.stringify({workId:s,trackIndex:r})})},onSuccess:()=>{o.success("Progress reset"),e.invalidateQueries({queryKey:["asmr-progress"]}),e.invalidateQueries({queryKey:["asmr-continue-listening"]}),e.invalidateQueries({queryKey:["asmr-library"]})},onError:s=>{o.error(`Failed to reset progress: ${s.message}`)}})},z=()=>{const e=c();return y({mutationFn:async({ids:s,status:r})=>n("/api/asmr/library/batch-status",{method:"POST",body:JSON.stringify({ids:s,status:r})}),onSuccess:s=>{o.success(`Status updated for ${s.updated??0} items`),e.invalidateQueries({queryKey:["asmr-library"]}),e.invalidateQueries({queryKey:["asmr-continue-listening"]})},onError:s=>{o.error(`Failed to update statuses: ${s.message}`)}})},j=()=>{const e=c();return y({mutationFn:async s=>n("/api/asmr/library/remove-many",{method:"POST",body:JSON.stringify({ids:s})}),onSuccess:s=>{const r=s.removed??0;o.success(`Removed ${r} ${r===1?"item":"items"} from listening list`),e.invalidateQueries({queryKey:["asmr-library"]}),e.invalidateQueries({queryKey:["asmr-library-ids"]}),e.invalidateQueries({queryKey:["asmr-continue-listening"]})},onError:s=>{o.error(`Failed to remove: ${s.message}`)}})},Y=()=>{const e=c();return y({mutationFn:async s=>n("/api/asmr/progress/remove-many",{method:"POST",body:JSON.stringify({ids:s})}),onSuccess:s=>{const r=s.removed??0;o.success(`Reset progress for ${r} ${r===1?"item":"items"}`),e.invalidateQueries({queryKey:["asmr-progress"]}),e.invalidateQueries({queryKey:["asmr-continue-listening"]}),e.invalidateQueries({queryKey:["asmr-library"]})},onError:s=>{o.error(`Failed to reset progress: ${s.message}`)}})},V=()=>{const e=$(),s=k(),{data:r}=O(),t=L(()=>new Set(r?.ids||[]),[r]);return{toggle:a=>{const u=T(a.rjCode);t.has(u)?s.mutate(u):e.mutate({...a,thumbnail:a.thumbnail||""})},bookmarkedIds:t,pending:e.isPending||s.isPending}},q=300*1e3,K=15,X=(e,s,r,t)=>{const l=s+1,a=Q({queries:Array.from({length:l},(m,p)=>{const w=p+1;return{queryKey:["asmrBrowse",e,w,r,t],queryFn:()=>{const S=new URLSearchParams;return e.trim()&&S.set("q",e.trim()),S.set("page",w.toString()),r&&r!=="latest"&&S.set("sort",r),t&&S.set("rating",t),n(`/api/asmr/browse?${S.toString()}`)},staleTime:q}})}),u=a.flatMap(m=>m.data?.shows??[]),b=u.slice((s-1)*K,s*K),g=a[a.length-1]?.data,f=!!(g&&(g.hasNext||u.length>s*K)),v=a.some(m=>m.isLoading),i=a.some(m=>m.isFetching),A=a.some(m=>m.isError);return{data:{shows:b,hasNext:f},isLoading:v,isError:A,isFetching:i}},Z=e=>d({queryKey:["asmrWork",e],queryFn:()=>n(`/api/asmr/work/${e}`),enabled:!!e,staleTime:q,refetchOnMount:"always"}),E=15,h=6;function _(e){if(e.isAdult||!e.thumbnail)return!1;const s=(e.rating||"").toLowerCase();return s===""||s==="sfw"}function F(e,s){const r=new Set,t=[];for(const l of e)for(const a of l){if(t.length>=s)return t;const u=a.id||a._id;!u||r.has(u)||(r.add(u),_(a)&&t.push(a))}return t}const ee=(e=!0)=>{const s=Q({queries:Array.from({length:E},(i,A)=>{const m=A+1;return{queryKey:["asmrBrowse","",m,"popular_month",""],queryFn:()=>{const p=new URLSearchParams;return p.set("page",String(m)),p.set("sort","popular_month"),n(`/api/asmr/browse?${p.toString()}`)},staleTime:q,enabled:e,retry:1}})}),r=s.map(i=>i.data?.shows??[]),t=F(r,h),l=s.every(i=>i.isFetched),a=e&&l&&t.length<h,u=d({queryKey:["asmrBrowse","",1,"popular","sfw"],queryFn:()=>{const i=new URLSearchParams;return i.set("page","1"),i.set("sort","popular"),i.set("rating","sfw"),n(`/api/asmr/browse?${i.toString()}`)},staleTime:q,enabled:a,retry:1}),b=u.data?.shows??[],g=t.length>=h?t.slice(0,h):F([t,b],h),f=e&&(s.some(i=>i.isLoading)||a&&u.isLoading),v=e&&l&&g.length===0&&s.some(i=>i.isError);return{data:g,isLoading:f,isError:v}};export{U as A,B as a,ee as b,Z as c,M as d,V as e,G as f,P as g,x as h,$ as i,X as j,T as k,I as l,J as m,k as n,H as o,z as p,j as q,Y as r,W as s,D as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as e,S as y,L as g,d as k,A as L,q as r}from"./vendor-core-8R2fFbyN.js";import{I as a}from"./vendor-icons-CDMuNDeL.js";import{c as P}from"./useAsmr-CbMVRjmV.js";import{p as s,a as f}from"./MediaCard-Be1ST9oj.js";import{a as A}from"./Asmr.module-ChUXDZKx.js";const B=({data:n,anchorRect:l,bookmarked:i,onToggleBookmark:c,onMouseEnter:o,onMouseLeave:m,onRequestClose:p})=>{const{data:t,isLoading:d}=P(n.rjCode||null),u=t?.tracks.length??0,N=u>0,h=!d;return e(f,{anchorRect:l,onMouseEnter:o,onMouseLeave:m,onRequestClose:p,children:[e("div",{className:s.header,children:[n.thumbnail&&e("img",{src:n.thumbnail,alt:n.title,loading:"lazy",decoding:"async",className:A.popupCover}),e("div",{className:s.title,children:n.title}),e("div",{className:s.synopsis,children:n.rjCode})]}),e("div",{className:s.body,children:[e("div",{className:s.metaRow,children:[e("div",{className:s.metaItem,children:[e(a,{name:"headphones",size:14}),e("span",{children:h?N?e(y,{children:[u," track",u===1?"":"s"]}):"No tracks":"Loading tracks…"})]}),n.rating&&e("div",{className:s.metaItem,children:e("span",{children:n.rating.toUpperCase()})}),n.isAdult&&e("div",{className:s.metaItem,children:e("span",{children:"18+"})}),n.progressLabel&&e("div",{className:s.metaItem,children:[e(a,{name:"bookmark",size:12}),e("span",{children:n.progressLabel})]})]}),e("div",{className:s.synopsis,children:!h&&!t?.description?"Loading description…":t?.description??"No description available."})]}),e("div",{className:s.footer,children:[e("div",{className:s.primaryAction,children:N?e(g,{to:n.listenTarget,className:s.watchBtn,children:[e(a,{name:"play",size:14}),"Listen now"]}):e("span",{className:s.watchBtn,"aria-disabled":"true",style:{opacity:.5,pointerEvents:"none"},children:[e(a,{name:"play",size:14}),h?"No tracks":"Loading…"]})}),e("div",{className:s.secondaryActions,children:[e("button",{className:`${s.watchlistBtn} ${i?s.active:""}`,onClick:v=>{v.preventDefault(),v.stopPropagation(),c()},children:[i?e(a,{name:"check",size:12}):e(a,{name:"plus",size:12}),e("span",{children:i?"Remove":"Bookmark"})]}),e(g,{to:n.listenTarget,className:s.detailsBtn,children:"Details"})]})]})]})},C=300;function D(){const[n,l]=k(null),i=L(null),c=r(()=>{i.current&&(clearTimeout(i.current),i.current=null)},[]),o=r((t,d)=>{c(),l({data:d,rect:t})},[c]),m=r(()=>{c(),i.current=setTimeout(()=>{i.current=null,l(null)},C)},[c]),p=r(()=>{c(),l(null)},[c]);return{popup:n,openPopup:o,scheduleClose:m,cancelClose:c,closePopup:p}}export{B as A,D as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d,h as o}from"./vendor-core-8R2fFbyN.js";const c=(n=768)=>{const[r,s]=d(window.innerWidth<n);return o(()=>{const e=window.matchMedia(`(max-width: ${n-1}px)`);s(e.matches);const t=i=>s(i.matches);return e.addEventListener?(e.addEventListener("change",t),()=>e.removeEventListener("change",t)):(e.addListener(t),()=>e.removeListener(t))},[n]),r};export{c as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as y,c as b,u as m,a as d}from"./vendor-query-BXRECSI6.js";import{q as s,z as o}from"./index-IZgh1beL.js";import{T as S}from"./vendor-core-8R2fFbyN.js";const q=300*1e3,f={mangadex:"https://mangadex.org/",mangapill:"https://www.mangapill.com/"},K=(e,a)=>`/api/proxy?url=${encodeURIComponent(a)}&referer=${encodeURIComponent(f[e])}`,M=(e,a)=>a&&(e==="mangapill"?K(e,a):a),$=(e,a=!0)=>{const{provider:n,query:t,page:u,sort:i,status:g,type:c,rating:l,mature:p}=e;return y({queryKey:["mangaBrowse",n,t,u,i,g,c,l,p],queryFn:()=>{const r=new URLSearchParams;return r.set("provider",n),t.trim()&&r.set("q",t.trim()),r.set("page",String(u)),i&&r.set("sort",i),g&&r.set("status",g),c&&r.set("type",c),l&&r.set("rating",l),p&&r.set("mature","1"),s(`/api/manga/search?${r.toString()}`)},staleTime:q,enabled:a&&!!n})},k=(e,a=14)=>{const{provider:n,query:t,sort:u,status:i,type:g,rating:c,mature:l}=e;return b({queryKey:["mangaBrowseInfinite",n,t,u,i,g,c,l,a],queryFn:({pageParam:p=1})=>{const r=new URLSearchParams;return r.set("provider",n),t.trim()&&r.set("q",t.trim()),r.set("page",String(p)),r.set("limit",String(a)),u&&r.set("sort",u),i&&r.set("status",i),g&&r.set("type",g),c&&r.set("rating",c),l&&r.set("mature","1"),s(`/api/manga/search?${r.toString()}`)},initialPageParam:1,getNextPageParam:(p,r)=>p.hasNext?r.length+1:void 0,staleTime:q,enabled:!!n})},C=(e,a,n="safe",t=!1)=>y({queryKey:["mangaDetail",e,a,n,t],queryFn:()=>{const u=new URLSearchParams;return u.set("provider",e||""),u.set("id",a||""),n&&u.set("rating",n),t&&u.set("mature","1"),s(`/api/manga/info?${u.toString()}`)},enabled:!!e&&!!a,staleTime:q}),w=(e,a,n)=>y({queryKey:["mangaPages",e,a],queryFn:()=>s(`/api/manga/pages?provider=${e}&id=${encodeURIComponent(a||"")}`),enabled:!!e&&!!a,staleTime:1800*1e3}),O=()=>y({queryKey:["mangaTrending"],queryFn:()=>s("/api/manga/trending"),staleTime:600*1e3}),N=e=>e.contentRating==="erotica"||e.contentRating==="pornographic"||e.type==="doujinshi";function I(e,a){const n=e.titles??{};return a==="englishName"?n.en||e.title:a==="nativeName"&&(n.native||n.romaji||e.altTitle)||e.title}function B(e){return{englishName:e.titles?.en??e.title,nativeName:e.titles?.native??e.titles?.romaji??e.altTitle??void 0}}const E=["Reading","Completed","On-Hold","Dropped","Planned"],v=(e,a)=>`${e.toLowerCase()}:${a}`,U=(e="All",a=1,n=24)=>y({queryKey:["manga-library",e,a,n],queryFn:()=>{const t=new URLSearchParams;return t.set("status",e),t.set("page",String(a)),t.set("limit",String(n)),s(`/api/manga/library?${t.toString()}`)}}),h=()=>y({queryKey:["manga-library-ids"],queryFn:()=>s("/api/manga/library/ids"),staleTime:1e3*60}),L=e=>y({queryKey:["manga-library-check",e],queryFn:()=>s(`/api/manga/library/check/${encodeURIComponent(e||"")}`),enabled:!!e,staleTime:1e3*60}),A=(e=24)=>y({queryKey:["manga-continue-reading",e],queryFn:()=>s(`/api/manga/continue-reading?limit=${e}`)}),_=e=>y({queryKey:["manga-progress",e],queryFn:()=>s(`/api/manga/progress/${encodeURIComponent(e||"")}`),enabled:!!e}),P=()=>{const e=m();return d({mutationFn:async a=>{const{silent:n,...t}=a;return s("/api/manga/library/add",{method:"POST",body:JSON.stringify(t)})},onSuccess:(a,n)=>{n.silent||o.success("Bookmarked"),e.invalidateQueries({queryKey:["manga-library"]}),e.invalidateQueries({queryKey:["manga-library-ids"]}),e.invalidateQueries({queryKey:["manga-library-check",v(n.provider,n.mangaId)]})},onError:a=>{o.error(`Failed to bookmark: ${a.message}`)}})},R=()=>{const e=m();return d({mutationFn:async a=>{await s("/api/manga/library/remove",{method:"POST",body:JSON.stringify({id:a})})},onSuccess:(a,n)=>{o.success("Bookmark removed"),e.invalidateQueries({queryKey:["manga-library"]}),e.invalidateQueries({queryKey:["manga-library-ids"]}),e.invalidateQueries({queryKey:["manga-continue-reading"]}),e.invalidateQueries({queryKey:["manga-library-check",n]})},onError:a=>{o.error(`Failed to remove: ${a.message}`)}})},J=()=>{const e=m();return d({mutationFn:async({id:a,status:n})=>{await s("/api/manga/library/status",{method:"POST",body:JSON.stringify({id:a,status:n})})},onSuccess:()=>{o.success("Status updated"),e.invalidateQueries({queryKey:["manga-library"]}),e.invalidateQueries({queryKey:["manga-continue-reading"]})},onError:a=>{o.error(`Failed to update status: ${a.message}`)}})},x=()=>{const e=m();return d({mutationFn:async a=>{await s("/api/manga/progress",{method:"POST",body:JSON.stringify(a)})},onSuccess:(a,n)=>{e.invalidateQueries({queryKey:["manga-progress",n.mangaId]}),e.invalidateQueries({queryKey:["manga-continue-reading"]}),e.invalidateQueries({queryKey:["manga-library"]}),e.invalidateQueries({queryKey:["manga-library-ids"]})}})},D=()=>{const e=m();return d({mutationFn:async({mangaId:a,chapterId:n})=>{await s("/api/manga/progress/remove",{method:"POST",body:JSON.stringify({mangaId:a,chapterId:n})})},onSuccess:()=>{o.success("Progress reset"),e.invalidateQueries({queryKey:["manga-progress"]}),e.invalidateQueries({queryKey:["manga-continue-reading"]}),e.invalidateQueries({queryKey:["manga-library"]})},onError:a=>{o.error(`Failed to reset progress: ${a.message}`)}})},j=()=>{const e=m();return d({mutationFn:async({ids:a,status:n})=>s("/api/manga/library/batch-status",{method:"POST",body:JSON.stringify({ids:a,status:n})}),onSuccess:a=>{o.success(`Status updated for ${a.updated??0} items`),e.invalidateQueries({queryKey:["manga-library"]}),e.invalidateQueries({queryKey:["manga-continue-reading"]})},onError:a=>{o.error(`Failed to update statuses: ${a.message}`)}})},V=()=>{const e=m();return d({mutationFn:async a=>s("/api/manga/library/remove-many",{method:"POST",body:JSON.stringify({ids:a})}),onSuccess:a=>{const n=a.removed??0;o.success(`Removed ${n} ${n===1?"item":"items"} from reading list`),e.invalidateQueries({queryKey:["manga-library"]}),e.invalidateQueries({queryKey:["manga-library-ids"]}),e.invalidateQueries({queryKey:["manga-continue-reading"]})},onError:a=>{o.error(`Failed to remove: ${a.message}`)}})},z=()=>{const e=m();return d({mutationFn:async a=>s("/api/manga/progress/remove-many",{method:"POST",body:JSON.stringify({ids:a})}),onSuccess:a=>{const n=a.removed??0;o.success(`Reset progress for ${n} ${n===1?"item":"items"}`),e.invalidateQueries({queryKey:["manga-progress"]}),e.invalidateQueries({queryKey:["manga-continue-reading"]}),e.invalidateQueries({queryKey:["manga-library"]})},onError:a=>{o.error(`Failed to reset progress: ${a.message}`)}})},G=()=>{const e=P(),a=R(),{data:n}=h(),t=S(()=>new Set(n?.ids||[]),[n]);return{toggle:i=>{const g=v(i.provider,i.id);t.has(g)?a.mutate(g):e.mutate({provider:i.provider,mangaId:i.id,title:i.title,cover:i.cover,altTitle:i.altTitle,contentRating:i.contentRating})},bookmarkedIds:t,pending:e.isPending||a.isPending}};export{E as M,k as a,M as b,B as c,A as d,O as e,$ as f,C as g,L as h,N as i,_ as j,P as k,R as l,v as m,J as n,w as o,K as p,x as q,I as r,U as s,j as t,G as u,V as v,z as w,D as x};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as e,S as T,L as N,d as P,A as y,q as o}from"./vendor-core-8R2fFbyN.js";import{I as c}from"./vendor-icons-CDMuNDeL.js";import{g as I,r as A}from"./useMangaLibrary-BPvFb1lU.js";import{d as L}from"./index-IZgh1beL.js";import{p as s,a as M}from"./MediaCard-Be1ST9oj.js";const S=({data:l,anchorRect:t,bookmarked:a,onToggleBookmark:i,onMouseEnter:d,onMouseLeave:m,onRequestClose:p})=>{const{data:n,isLoading:h}=I(l.provider,l.mangaId,l.rating||"safe",l.mature||!1),{titlePreference:f}=L(),u=n?.chapters.length??0,v=[n?.status,n?.type].filter(Boolean).join(" · "),g=A({title:l.title,altTitle:n?.altTitle??l.altTitle},f);return e(M,{anchorRect:t,onMouseEnter:d,onMouseLeave:m,onRequestClose:p,children:h?e("div",{className:s.loading,children:[e("div",{className:s.spinner}),e("span",{children:"Fetching details..."})]}):e(T,{children:[e("div",{className:s.header,children:[e("div",{className:s.title,children:g}),n?.altTitle&&n.altTitle!==g&&e("div",{className:s.synopsis,children:["Also known as: ",n.altTitle]})]}),e("div",{className:s.body,children:[e("div",{className:s.metaRow,children:[v&&e("div",{className:s.metaItem,children:[e(c,{name:"book",size:14}),e("span",{children:v})]}),u>0&&e("div",{className:s.metaItem,children:e("span",{children:[u," chapter",u===1?"":"s"]})}),l.progressLabel&&e("div",{className:s.metaItem,children:[e(c,{name:"bookmark",size:12}),e("span",{children:l.progressLabel})]})]}),e("div",{className:s.synopsis,children:n?.description?n.description:"No synopsis available."}),Array.isArray(n?.genres)&&(n?.genres?.length??0)>0&&e("div",{className:s.details,children:e("div",{className:s.genres,children:n.genres.filter(Boolean).slice(0,4).map(r=>e("span",{className:s.genre,children:r},r))})})]}),e("div",{className:s.footer,children:[e("div",{className:s.primaryAction,children:e(N,{to:l.readTarget,className:s.watchBtn,children:[e(c,{name:"book",size:14}),"Read now"]})}),e("div",{className:s.secondaryActions,children:[e("button",{className:`${s.watchlistBtn} ${a?s.active:""}`,onClick:r=>{r.preventDefault(),r.stopPropagation(),i()},children:[a?e(c,{name:"check",size:12}):e(c,{name:"plus",size:12}),e("span",{children:a?"Remove":"Bookmark"})]}),e(N,{to:`/manga/${l.provider}/${encodeURIComponent(l.mangaId)}`,className:s.detailsBtn,children:"Read more"})]})]})]})})},b=300;function $(){const[l,t]=P(null),a=y(null),i=o(()=>{a.current&&(clearTimeout(a.current),a.current=null)},[]),d=o((n,h)=>{i(),t({data:h,rect:n})},[i]),m=o(()=>{i(),a.current=setTimeout(()=>{a.current=null,t(null)},b)},[i]),p=o(()=>{i(),t(null)},[i]);return{popup:l,openPopup:d,scheduleClose:m,cancelClose:i,closePopup:p}}export{S as M,$ as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as n,q as s}from"./vendor-core-8R2fFbyN.js";const t="agreedToViewMature";function u(){const[e,o]=n(()=>localStorage.getItem(t)==="true"),r=s(()=>{localStorage.setItem(t,"true"),o(!0)},[]);return{hasConsent:e,grant:r}}export{u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{T as o}from"./vendor-core-8R2fFbyN.js";import{b as a}from"./vendor-query-BXRECSI6.js";import{q as i}from"./index-IZgh1beL.js";const n=300*1e3;function u(r){return{value:r.id,label:r.label,mature:r.mature,kind:r.kind,sub:r.sub,tier:r.tier,browse:r.browse,facets:r.facets,servers:r.servers}}const d=()=>{const r=a({queryKey:["providers"],queryFn:()=>i("/api/providers"),staleTime:n,retry:1}),e=Array.isArray(r.data)?r.data:null,t=o(()=>e&&e.length>0?e.filter(s=>s.loaded).map(u):[],[e]);return{...r,options:t,isFallback:!e||e.length===0}};export{d as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{N as d,u as o,S as v}from"./vendor-core-8R2fFbyN.js";import{I as g}from"./vendor-icons-CDMuNDeL.js";import{M as f}from"./MediaCard-Be1ST9oj.js";import{T as m}from"./TvPopup-YTI7dEbJ.js";import{c as T,i as h}from"./useTvLibrary-Cwxgy_Bg.js";import{b as u}from"./vendor-query-BXRECSI6.js";import{q as y}from"./index-IZgh1beL.js";const b=d(({item:e})=>{const r=e.type==="tv"||e.type==="tvSeries"||e.type==="tvMiniSeries",t=T(e.type,e.id);return o(f,{item:{id:String(e.id),title:e.title,thumbnail:e.image,typeBadge:r?"TV":"Movie",isAdult:h(e)},linkTo:t,hoverIcon:"info",showInfoButton:!0,metaRow:o(v,{children:[e.year&&o("span",{style:{opacity:.75},children:e.year}),e.vote_average!=null&&o("span",{style:{display:"inline-flex",alignItems:"center",gap:3},children:[o(g,{name:"star",size:10}),Number(e.vote_average).toFixed(1)]})]}),renderPopup:(n,a)=>o(m,{item:e,anchorRect:n,onMouseEnter:a.onMouseEnter,onMouseLeave:a.onMouseLeave,onRequestClose:a.close})})}),c=1e3*60*5,w=e=>{const{query:r,type:t,genre:n,year:a,sort_by:i,page:l}=e,s=new URLSearchParams;r?.trim()&&s.set("q",r.trim()),t&&t!=="multi"&&s.set("type",t),n&&s.set("genre",n),a&&a!=="ALL"&&s.set("year",a),i&&i!=="popularity.desc"&&s.set("sort_by",i),s.set("page",String(l||1));const p=s.toString();return u({queryKey:["tv-search-paginated",p],queryFn:()=>y(`/api/tv/search?${p}`),staleTime:c,retry:1})},A=(e="all",r="week",t=1,n=!0)=>u({queryKey:["tv-trending",e,r,t],queryFn:()=>y(`/api/tv/trending?media_type=${e}&time_window=${r}&page=${t}`),enabled:n,staleTime:c,retry:1});export{b as T,w as a,A as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{T as m}from"./vendor-core-8R2fFbyN.js";import{b as y,u as o,a as u}from"./vendor-query-BXRECSI6.js";import{q as i,z as a}from"./index-IZgh1beL.js";const d=e=>String(e).toLowerCase()==="movie"?"movie":"tv",g=(e,t)=>`${d(e)}:${t}`,K=(e,t)=>{const r=d(e);return`/tv/${t}?type=${r}`},Q=(e,t,r,s)=>{const n=new URLSearchParams;return n.set("type",d(e)),r!==void 0&&n.set("s",String(r)),s!==void 0&&n.set("e",String(s)),`/tv/${t}/watch?${n.toString()}`},$=e=>e.adult===!0||e.adult===1,f=["Watching","Completed","On-Hold","Dropped","Planned"],l=(e,t)=>g(e,t),w=(e="All",t=1,r=24)=>y({queryKey:["tv-library",e,t,r],queryFn:()=>{const s=new URLSearchParams;return s.set("status",e),s.set("page",String(t)),s.set("limit",String(r)),i(`/api/tv/library?${s.toString()}`)}}),p=()=>y({queryKey:["tv-library-ids"],queryFn:()=>i("/api/tv/library/ids"),staleTime:1e3*60}),P=e=>y({queryKey:["tv-library-check",e],queryFn:()=>i(`/api/tv/library/check/${encodeURIComponent(e||"")}`),enabled:!!e,staleTime:1e3*60}),F=(e=24)=>y({queryKey:["tv-continue-watching",e],queryFn:()=>i(`/api/tv/continue-watching?limit=${e}`)}),O=e=>y({queryKey:["tv-progress",e],queryFn:()=>i(`/api/tv/progress/${encodeURIComponent(e||"")}`),enabled:!!e}),C=(e,t,r)=>y({queryKey:["tv-progress-latest",e,t,r],queryFn:()=>{const s=new URLSearchParams;t!==void 0&&s.set("season",String(t)),r!==void 0&&s.set("episode",String(r));const n=s.toString();return i(`/api/tv/progress/${encodeURIComponent(e||"")}/latest${n?`?${n}`:""}`)},enabled:!!e,staleTime:0}),q=()=>{const e=o();return u({mutationFn:async t=>{const{silent:r,...s}=t;return i("/api/tv/library/add",{method:"POST",body:JSON.stringify(s)})},onSuccess:(t,r)=>{r.silent||a.success("Added to TV watchlist"),e.invalidateQueries({queryKey:["tv-library"]}),e.invalidateQueries({queryKey:["tv-library-ids"]}),e.invalidateQueries({queryKey:["tv-library-check",l(r.mediaType,r.tmdbId)]})},onError:t=>{a.error(`Failed to add: ${t.message}`)}})},b=()=>{const e=o();return u({mutationFn:async t=>{await i("/api/tv/library/remove",{method:"POST",body:JSON.stringify({id:t})})},onSuccess:(t,r)=>{a.success("Removed from TV watchlist"),e.invalidateQueries({queryKey:["tv-library"]}),e.invalidateQueries({queryKey:["tv-library-ids"]}),e.invalidateQueries({queryKey:["tv-continue-watching"]}),e.invalidateQueries({queryKey:["tv-library-check",r]})},onError:t=>{a.error(`Failed to remove: ${t.message}`)}})},R=()=>{const e=o();return u({mutationFn:async({id:t,status:r})=>{await i("/api/tv/library/status",{method:"POST",body:JSON.stringify({id:t,status:r})})},onSuccess:()=>{a.success("Status updated"),e.invalidateQueries({queryKey:["tv-library"]}),e.invalidateQueries({queryKey:["tv-continue-watching"]})},onError:t=>{a.error(`Failed to update status: ${t.message}`)}})},k=()=>{const e=o();return u({mutationFn:async t=>{await i("/api/tv/progress",{method:"POST",body:JSON.stringify(t)})},onSuccess:(t,r)=>{e.invalidateQueries({queryKey:["tv-progress",r.mediaId]}),e.invalidateQueries({queryKey:["tv-progress-latest",r.mediaId]}),e.invalidateQueries({queryKey:["tv-continue-watching"]}),e.invalidateQueries({queryKey:["tv-library"]}),e.invalidateQueries({queryKey:["tv-library-ids"]})}})},L=()=>{const e=o();return u({mutationFn:async({mediaId:t,season:r,episode:s})=>{await i("/api/tv/progress/remove",{method:"POST",body:JSON.stringify({mediaId:t,season:r,episode:s})})},onSuccess:()=>{a.success("Progress reset"),e.invalidateQueries({queryKey:["tv-progress"]}),e.invalidateQueries({queryKey:["tv-continue-watching"]}),e.invalidateQueries({queryKey:["tv-library"]})},onError:t=>{a.error(`Failed to reset progress: ${t.message}`)}})},I=()=>{const e=o();return u({mutationFn:async({ids:t,status:r})=>i("/api/tv/library/batch-status",{method:"POST",body:JSON.stringify({ids:t,status:r})}),onSuccess:t=>{a.success(`Status updated for ${t.updated??0} items`),e.invalidateQueries({queryKey:["tv-library"]}),e.invalidateQueries({queryKey:["tv-continue-watching"]})},onError:t=>{a.error(`Failed to update statuses: ${t.message}`)}})},U=()=>{const e=o();return u({mutationFn:async t=>i("/api/tv/library/remove-many",{method:"POST",body:JSON.stringify({ids:t})}),onSuccess:t=>{const r=t.removed??0;a.success(`Removed ${r} ${r===1?"item":"items"} from TV watchlist`),e.invalidateQueries({queryKey:["tv-library"]}),e.invalidateQueries({queryKey:["tv-library-ids"]}),e.invalidateQueries({queryKey:["tv-continue-watching"]})},onError:t=>{a.error(`Failed to remove: ${t.message}`)}})},E=()=>{const e=o();return u({mutationFn:async t=>i("/api/tv/progress/remove-many",{method:"POST",body:JSON.stringify({ids:t})}),onSuccess:t=>{const r=t.removed??0;a.success(`Reset progress for ${r} ${r===1?"item":"items"}`),e.invalidateQueries({queryKey:["tv-progress"]}),e.invalidateQueries({queryKey:["tv-continue-watching"]}),e.invalidateQueries({queryKey:["tv-library"]})},onError:t=>{a.error(`Failed to reset progress: ${t.message}`)}})},J=()=>{const e=q(),t=b(),{data:r}=p(),s=m(()=>new Set(r?.ids||[]),[r]);return{toggle:c=>{const v=l(c.mediaType,c.tmdbId);s.has(v)?t.mutate(v):e.mutate({...c,poster:c.poster||""})},bookmarkedIds:s,pending:e.isPending||t.isPending}};export{f as T,b as a,L as b,K as c,g as d,P as e,J as f,k as g,C as h,$ as i,O as j,w as k,R as l,I as m,d as n,U as o,E as p,Q as t,F as u};
|