@serifpersia/dango 3.7.6 → 3.7.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/README.md +3 -1
  2. package/client/dist/assets/{AnimeCard-a7KkMGQv.js → AnimeCard-B_eNHj3Q.js} +1 -1
  3. package/client/dist/assets/{AnimeInfo-De3gudGy.js → AnimeInfo-B4DtKpJi.js} +1 -1
  4. package/client/dist/assets/{AnimeInfoPage-adJHjnqz.js → AnimeInfoPage-BTJBbJx7.js} +2 -2
  5. package/client/dist/assets/Asmr-DB4F0zQm.js +2 -0
  6. package/client/dist/assets/{AsmrResetProgressModal-CZGzmnlI.js → AsmrResetProgressModal-BkO6uAVo.js} +1 -1
  7. package/client/dist/assets/Home-BYtjQAAm.js +1 -0
  8. package/client/dist/assets/Insights-kd8R5HFL.js +1 -0
  9. package/client/dist/assets/{LibraryListPage-CgZiYRmp.js → LibraryListPage-BXCoAwO-.js} +1 -1
  10. package/client/dist/assets/{ListeningList-DX_Imiie.js → ListeningList-B58inkaW.js} +1 -1
  11. package/client/dist/assets/Manga-B09DXrt3.js +1 -0
  12. package/client/dist/assets/{MangaInfoPage-D_3Rx6rr.js → MangaInfoPage-HniBD97j.js} +1 -1
  13. package/client/dist/assets/MangaReadPage-XTo4eB8e.js +1 -0
  14. package/client/dist/assets/{MangaResetProgressModal-Bd_lIuFo.js → MangaResetProgressModal-DgD2JJiz.js} +1 -1
  15. package/client/dist/assets/Mature--NRjmFgA.js +1 -0
  16. package/client/dist/assets/{MatureConsentModal-RZ_j_2BD.js → MatureConsentModal-BxCEXBbj.js} +1 -1
  17. package/client/dist/assets/{MediaCard-BODgA6ir.js → MediaCard-BXWAjpwt.js} +1 -1
  18. package/client/dist/assets/OptionListMenu-DHzVKmrw.js +1 -0
  19. package/client/dist/assets/Player-BopSS6Gv.js +56 -0
  20. package/client/dist/assets/PlayerProvider-Cj4nkG1Z.js +1 -0
  21. package/client/dist/assets/PlayerSettings-BEorvGw8.js +1 -0
  22. package/client/dist/assets/{QueueOptionsButton-C-y5QFrT.js → QueueOptionsButton-E2SuRJH_.js} +1 -1
  23. package/client/dist/assets/{QueueRail-DGFI6xTM.js → QueueRail-ZlyY6iwq.js} +1 -1
  24. package/client/dist/assets/{ReadingList-BB_fA_j0.js → ReadingList-DEOzfsq9.js} +1 -1
  25. package/client/dist/assets/{ResetProgressModal-DEnbScHS.js → ResetProgressModal-B4qmiw-m.js} +1 -1
  26. package/client/dist/assets/Search-C2mxeTuG.js +1 -0
  27. package/client/dist/assets/Settings-BqOAQxhe.js +21 -0
  28. package/client/dist/assets/Settings-D37LNfis.css +1 -0
  29. package/client/dist/assets/{SkeletonGrid-w6TsxWu7.js → SkeletonGrid-Od92F7If.js} +1 -1
  30. package/client/dist/assets/Trackers-CyWVHtOz.js +2 -0
  31. package/client/dist/assets/Tv-B8tWYqQt.js +4 -0
  32. package/client/dist/assets/TvInfo-CYh7oICz.js +1 -0
  33. package/client/dist/assets/TvPopup-8uQGvzWG.js +1 -0
  34. package/client/dist/assets/TvSearch-DMc5DzU4.js +1 -0
  35. package/client/dist/assets/{TvWatchlist-er5RKLmv.js → TvWatchlist-fPe4D63a.js} +1 -1
  36. package/client/dist/assets/VirtualKeyboard-CjOEv-Zs.js +1 -0
  37. package/client/dist/assets/WatchAlong-Cd_rNUGz.js +1 -0
  38. package/client/dist/assets/WatchAlongPanel-BKprdx-w.js +1 -0
  39. package/client/dist/assets/WatchAlongPanel-DbJuLqxU.css +1 -0
  40. package/client/dist/assets/{Watchlist-BiJ1SCAH.js → Watchlist-DMj82PtZ.js} +1 -1
  41. package/client/dist/assets/index-B_2ppn5P.js +178 -0
  42. package/client/dist/assets/index-DP9TtvZX.css +1 -0
  43. package/client/dist/assets/{libraryInvalidation-CVK2SYUR.js → libraryInvalidation-DeUzK6TJ.js} +1 -1
  44. package/client/dist/assets/playbackCompletion-_kwPgoZi.js +1 -0
  45. package/client/dist/assets/{useAnimeInfoData-8RI9qMzw.js → useAnimeInfoData-CH9hmj5A.js} +1 -1
  46. package/client/dist/assets/{useAsmr-ClAcWwjW.js → useAsmr-DQsv1SQT.js} +1 -1
  47. package/client/dist/assets/{useAsmrPopup-CDcDqi0C.js → useAsmrPopup-6kWviNqn.js} +1 -1
  48. package/client/dist/assets/{useMangaLibrary-D3Foz2m_.js → useMangaLibrary-DlU4Z9JL.js} +1 -1
  49. package/client/dist/assets/{useMangaPopup-kZzwoCN6.js → useMangaPopup-3MuX6uO9.js} +1 -1
  50. package/client/dist/assets/{useProviders-OKWPunZg.js → useProviders-Dx9rG8FY.js} +1 -1
  51. package/client/dist/assets/useTv-DZQzHJgO.js +1 -0
  52. package/client/dist/assets/useTvLibrary-DVpLBz5c.js +1 -0
  53. package/client/dist/assets/useWatchAlongPlayer-KZT7d2pQ.js +10 -0
  54. package/client/dist/index.html +2 -2
  55. package/package.json +2 -2
  56. package/server/dist/config.js +1 -1
  57. package/server/dist/profile-scope.js +1 -0
  58. package/server/dist/server.js +257 -249
  59. package/server/dist/shipped-defaults.js +1 -1
  60. package/server/package.json +2 -2
  61. package/client/dist/assets/Asmr-BH3j9n5n.js +0 -2
  62. package/client/dist/assets/Home-4lO9InFx.js +0 -1
  63. package/client/dist/assets/Insights-Co9pEzWb.js +0 -1
  64. package/client/dist/assets/Manga-tDOa59vQ.js +0 -1
  65. package/client/dist/assets/MangaReadPage-D0satiXp.js +0 -1
  66. package/client/dist/assets/Mature-DhozU6BP.js +0 -1
  67. package/client/dist/assets/OptionListMenu-CGazCg0C.js +0 -1
  68. package/client/dist/assets/Player-M3yMiFzg.js +0 -56
  69. package/client/dist/assets/PlayerProvider-pi0at080.js +0 -1
  70. package/client/dist/assets/PlayerSettings-k4bqwbns.js +0 -1
  71. package/client/dist/assets/Search-Dikasx2q.js +0 -1
  72. package/client/dist/assets/Settings-CCoAhBc0.js +0 -21
  73. package/client/dist/assets/Settings-DYjRBgpE.css +0 -1
  74. package/client/dist/assets/Trackers-CoM-8Hz9.js +0 -2
  75. package/client/dist/assets/Tv-BLUeZ2n8.js +0 -4
  76. package/client/dist/assets/TvInfo-BjFZ57fG.js +0 -1
  77. package/client/dist/assets/TvPopup-D6UvGI7M.js +0 -1
  78. package/client/dist/assets/TvSearch-BDNZjbZo.js +0 -1
  79. package/client/dist/assets/VirtualKeyboard-DeP7fb3P.js +0 -1
  80. package/client/dist/assets/index-5x1mF1nD.css +0 -1
  81. package/client/dist/assets/index-BP1z44Uk.js +0 -178
  82. package/client/dist/assets/playbackCompletion-IPHm9fp5.js +0 -1
  83. package/client/dist/assets/usePlaybackEnd-DmvZ__Ut.js +0 -10
  84. package/client/dist/assets/useTv-BgO7EV-p.js +0 -1
  85. package/client/dist/assets/useTvLibrary-C6rSJQi_.js +0 -1
  86. /package/client/dist/assets/{usePlaybackEnd-BMf_H2dw.css → useWatchAlongPlayer-BMf_H2dw.css} +0 -0
@@ -0,0 +1 @@
1
+ ._container_vk8jv_1{position:relative;display:flex;align-items:center}._bellBtn_vk8jv_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_vk8jv_7:hover{background:#00000040;border-color:#ffffff59;transform:scale(1.05)}._bellBtn_vk8jv_7:focus-visible{outline:none;box-shadow:var(--shadow-focus)}@media(max-width:848px){._bellBtn_vk8jv_7{width:36px;height:36px;font-size:1.05rem;padding:var(--space-1)}}@media(max-width:480px){._bellBtn_vk8jv_7{width:36px;height:36px;font-size:.95rem}}._badge_vk8jv_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_vk8jv_1 .5s ease-out;line-height:1}@keyframes _bounce_vk8jv_1{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-5px)}60%{transform:translateY(-3px)}}._dropdown_vk8jv_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_vk8jv_1 .3s ease}@keyframes _slideIn_vk8jv_1{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}._dropdownHeader_vk8jv_127{padding:var(--space-4);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border-primary)}._dropdownHeader_vk8jv_127 h4{margin:0;font-size:1rem;color:var(--text-primary)}._clearAllBtn_vk8jv_141{background:none;border:1px solid var(--border-secondary);color:var(--accent-light);font-size:var(--font-size-xs);font-weight:600;cursor:pointer;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);transition:all var(--transition-fast)}._clearAllBtn_vk8jv_141:hover{background:var(--accent-subtle);border-color:var(--border-accent);color:var(--accent-lighter)}._discoveryStatusRow_vk8jv_159{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_vk8jv_170{width:8px;height:8px;border-radius:50%;flex-shrink:0}._statusDotRunning_vk8jv_177{background:var(--accent);animation:_statusPulse_vk8jv_1 1.2s ease-in-out infinite}._statusDotOk_vk8jv_182{background:var(--color-success)}._statusDotInfo_vk8jv_186{background:var(--color-info)}._statusDotError_vk8jv_190{background:var(--color-danger)}._statusDotIdle_vk8jv_194{background:var(--text-muted)}@keyframes _statusPulse_vk8jv_1{0%,to{opacity:1}50%{opacity:.35}}._list_vk8jv_208{overflow-y:auto;flex:1}._list_vk8jv_208::-webkit-scrollbar{width:4px}._list_vk8jv_208::-webkit-scrollbar-thumb{background:var(--border-secondary);border-radius:2px}._item_vk8jv_222{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_vk8jv_222:hover{background:#ffffff0d}._thumbnail_vk8jv_237{width:48px;height:64px;border-radius:var(--radius-sm);object-fit:cover;flex-shrink:0;box-shadow:0 2px 8px #0000004d}._itemInfo_vk8jv_246{flex:1;min-width:0}._itemTitle_vk8jv_251{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_vk8jv_262{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_vk8jv_272{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_vk8jv_272:hover{background:#ffffff2e}._removeItem_vk8jv_289{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_vk8jv_222:hover ._removeItem_vk8jv_289{opacity:1}@media(hover:none),(pointer:coarse){._removeItem_vk8jv_289{opacity:1}}._removeItem_vk8jv_289:hover{color:var(--color-danger)}._queueItem_vk8jv_319:hover{color:var(--color-success)}._emptyState_vk8jv_323{padding:var(--space-10) var(--space-4);text-align:center;color:var(--text-muted);font-size:.9rem}@media(max-width:768px){._dropdown_vk8jv_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_vk8jv_7{width:36px;height:36px;font-size:1rem}._removeItem_vk8jv_289{padding:var(--space-2);min-width:36px;min-height:36px}._badge_vk8jv_56{top:5px;right:6px;font-size:.58rem;min-width:16px;height:16px;padding:0 3px}}@media(max-width:480px){._bellBtn_vk8jv_7{width:38px;height:38px;font-size:1.1rem}}._notificationDivider_vk8jv_371{height:1px;flex-shrink:0;margin:var(--space-2) 0;background:var(--border-primary)}.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%)}}._logo_t3il2_1{height:var(--logo-height, 75px);width:auto;display:block;overflow:visible}._skewer_t3il2_8{fill:none;stroke:#d9c6a5;stroke-width:1.1;stroke-linecap:round}._gaze_t3il2_15{transform:translate(calc(var(--dango-gaze-x, 0) * 1.1px),calc(var(--dango-gaze-y, 0) * .8px));transition:transform var(--gaze-dur, .15s) ease-out}._face_t3il2_20{opacity:0;transition:opacity .18s ease}[data-dango-face=normal] ._faceNormal_t3il2_25,[data-dango-face=pet] ._facePet_t3il2_26,[data-dango-face=squint] ._faceSquint_t3il2_27,[data-dango-face=sleep] ._faceSleep_t3il2_28{opacity:1}[data-dango-hover] ._gaze_t3il2_15{filter:drop-shadow(0 0 .5px var(--accent))}._line_t3il2_36{fill:none;stroke:#140f15;stroke-width:.5;stroke-linecap:round;stroke-linejoin:round}._sway_t3il2_44{animation:_dango-sway_t3il2_1 7.4s ease-in-out infinite}@keyframes _dango-sway_t3il2_1{0%,to{transform:translate(0)}50%{transform:translateY(.5px)}}._weight_t3il2_58{animation:_dango-weight_t3il2_1 5.6s ease-in-out infinite}@keyframes _dango-weight_t3il2_1{0%,to{transform:translate(0)}45%,65%{transform:translate(.2px,.8px)}}._shift_t3il2_73{animation:_dango-shift_t3il2_1 10.5s ease-in-out infinite}@keyframes _dango-shift_t3il2_1{0%,to{transform:translate(.3px,.6px)}50%{transform:translate(-.3px,.3px)}}._rock_t3il2_87{animation:_dango-rock_t3il2_1 7.9s ease-in-out infinite}@keyframes _dango-rock_t3il2_1{0%,72%,to{transform:translate(0)}80%{transform:translate(-.35px,.5px)}88%{transform:translate(.15px,.1px)}}._glance_t3il2_105{animation:_dango-glance_t3il2_1 11s ease-in-out infinite}@keyframes _dango-glance_t3il2_1{0%,30%,to{transform:translate(0)}40%,50%{transform:translate(-1.6px,-.45px)}62%{transform:translate(0)}}._blink_t3il2_124{transform-box:fill-box;transform-origin:center}._blinkDouble_t3il2_129{animation:_dango-blink-double_t3il2_1 4.4s infinite}@keyframes _dango-blink-double_t3il2_1{0%,86%,to{transform:scaleY(1)}89%,90.5%{transform:scaleY(.08)}93%,94.5%{transform:scaleY(.08)}97%{transform:scaleY(1)}}._blinkSlow_t3il2_153{animation:_dango-blink-slow_t3il2_1 9.5s infinite}@keyframes _dango-blink-slow_t3il2_1{0%,82%,to{transform:scaleY(1)}88%{transform:scaleY(.14)}95%{transform:scaleY(1)}}[data-dango-nudge=""] ._bump_t3il2_172{animation:_dango-nudge_t3il2_1 .52s ease-out}@keyframes _dango-nudge_t3il2_1{0%,to{transform:translate(0)}25%{transform:translate(.5px)}60%{transform:translate(-.35px)}}[data-dango-cheer=""] ._heart_t3il2_189{animation:_dango-heart_t3il2_1 1.2s ease-out infinite}._heart_t3il2_189{opacity:0;font-size:4.6px;text-anchor:middle;transform-box:fill-box;transform-origin:center}@keyframes _dango-heart_t3il2_1{0%{opacity:0;transform:translate(0) scale(.35)}22%{opacity:1}to{opacity:0;transform:translate(var(--drift, 0),-6.5px) scale(1.05)}}@media(prefers-reduced-motion:reduce){._sway_t3il2_44,._weight_t3il2_58,._shift_t3il2_73,._rock_t3il2_87,._glance_t3il2_105,._blinkDouble_t3il2_129,._blinkSlow_t3il2_153,[data-dango-nudge=""] ._bump_t3il2_172,[data-dango-cheer=""] ._heart_t3il2_189{animation:none}}._header_1f1e7_1{height:var(--header-height);--logo-height: 42px;background:transparent;border-bottom:1px solid transparent;position:fixed;top:var(--vv-top, 0px);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_1f1e7_1._hidden_1f1e7_21{transform:translateY(-100%)}._header_1f1e7_1._scrolled_1f1e7_25{background-color:#0c0c0fd1;border-bottom:1px solid rgba(255,255,255,.08);box-shadow:0 8px 32px #00000073}._logo_1f1e7_31{display:flex;align-items:center;justify-content:center;padding:4px;border-radius:var(--radius-md);transition:opacity var(--transition-base)}._logo_1f1e7_31:hover{opacity:.8}._headerInner_1f1e7_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_1f1e7_54{display:flex;align-items:center;gap:var(--space-2)}._desktopNav_1f1e7_60{display:flex;align-items:center;gap:var(--space-1);margin-left:var(--space-6)}._navLink_1f1e7_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_1f1e7_67:hover{color:var(--text-primary);background:#ffffff0f}._navLinkActive_1f1e7_83{color:#fff;font-weight:600;background:#ffffff1a}._navLinkActive_1f1e7_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_1f1e7_102{display:flex;align-items:center;gap:var(--space-3)}._searchWrapper_1f1e7_108{display:flex;align-items:center;gap:8px}._searchInput_1f1e7_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_1f1e7_114::placeholder{color:#ffffffb3}._searchWrapper_1f1e7_108:focus-within ._searchInput_1f1e7_114{width:200px;opacity:1;padding:0 var(--space-3);pointer-events:auto;background:#00000059;border:1px solid rgba(255,255,255,.35);border-radius:var(--radius-full);color:#fff}._searchButton_1f1e7_144{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_1f1e7_144:hover{background:#00000040;border-color:#ffffff59}._searchIcon_1f1e7_168{font-size:1rem;color:#fff;transition:all var(--transition-base)}._searchButton_1f1e7_144:hover ._searchIcon_1f1e7_168{color:var(--accent)}._profileBtn_1f1e7_178{height:50px;border-radius:var(--radius-full);gap:var(--space-2);padding-right:var(--space-3);text-decoration:none;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_1f1e7_178:hover{border-color:#ffffff59;transform:translateY(-2px);background:#00000040}._profileBtn_1f1e7_178:active{transform:scale(.95)}._profileBtn_1f1e7_178 svg{color:var(--text-primary);font-size:1.1rem}._profileAvatar_1f1e7_213{width:50px;height:50px;display:flex;flex-shrink:0}._profileName_1f1e7_220{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-sm);font-weight:500}._hamburgerBtn_1f1e7_229{background:none;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:background var(--transition-fast),transform var(--transition-fast);height:40px;width:40px;flex-shrink:0}._hamburgerBtn_1f1e7_229:hover{background:#ffffff0f}._hamburgerBtn_1f1e7_229:active{transform:scale(.95)}._mobileSearchBar_1f1e7_256{display:none}@media(max-width:1024px){._searchInput_1f1e7_114{display:none}._searchWrapper_1f1e7_108:focus-within ._searchInput_1f1e7_114{display:none}._mobileSearchBar_1f1e7_256{display:block;position:absolute;top:100%;left:0;right:0;background:#0c0c0fe6;padding:var(--space-2) var(--space-3);animation:_slideDown_1f1e7_1 .2s ease;transition:transform var(--transition-base),opacity var(--transition-base)}._mobileSearchBarHidden_1f1e7_283{transform:translateY(-100%);opacity:0;pointer-events:none}@keyframes _slideDown_1f1e7_1{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}._mobileSearchInner_1f1e7_300{display:flex;align-items:center;background:#ffffff14;border:none;border-radius:var(--radius-full);padding:0 var(--space-4);height:40px}._mobileSearchInner_1f1e7_300:focus-within{border:none;outline:none;box-shadow:0 0 0 2px var(--accent)}._mobileSearchIcon_1f1e7_316{color:#ffffff80;font-size:.85rem;flex-shrink:0;margin-right:var(--space-2)}._mobileSearchInput_1f1e7_323{flex:1;background:transparent;border:none;outline:none;color:var(--text-primary);font-size:var(--font-size-sm);font-family:inherit;height:100%}._mobileSearchInput_1f1e7_323::placeholder{color:#ffffff80}._mobileSearchInput_1f1e7_323:focus,input._mobileSearchInput_1f1e7_323:focus,._mobileSearchInput_1f1e7_323:focus-visible,input._mobileSearchInput_1f1e7_323:focus-visible{outline:none!important;box-shadow:none!important;border:none}}@media(max-width:848px){._header_1f1e7_1{height:64px;padding:0 var(--space-3);--logo-height: 36px}._headerInner_1f1e7_44{padding:0;max-width:none}._leftSection_1f1e7_54{gap:var(--space-1);min-width:0}._hamburgerBtn_1f1e7_229{height:36px;width:36px;font-size:.9rem}._logo_1f1e7_31{padding:2px;min-width:0}._searchButton_1f1e7_144{width:36px;height:36px}._rightSection_1f1e7_102{gap:2px}._profileBtn_1f1e7_178{height:36px}._profileAvatar_1f1e7_213{width:36px;height:36px}._profileName_1f1e7_220{max-width:84px}}@media(max-width:900px){._desktopNav_1f1e7_60{display:none}}@media(max-width:480px){._rightSection_1f1e7_102{gap:4px}._hamburgerBtn_1f1e7_229{height:38px;width:38px;font-size:1rem}._logo_1f1e7_31{padding:2px;min-width:0}._searchButton_1f1e7_144{width:38px;height:38px}._profileBtn_1f1e7_178{width:38px;height:38px;padding:0}._profileAvatar_1f1e7_213{width:38px;height:38px}._profileName_1f1e7_220{display:none}}._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_1c905_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_1c905_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_1c905_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:-30px}._logoRow_1c905_39{display:flex;align-items:center;gap:14px}._logoText_1c905_45{--logo-height: 60px;width:auto;display:block}._brandMeta_1c905_51{display:flex;align-items:center;justify-content:flex-start;gap:var(--space-2);flex-wrap:wrap;margin-top:10px}._brandTagline_1c905_60{color:var(--text-secondary);font-size:.88rem;line-height:1.5;margin:0}._statusPill_1c905_67{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_1c905_80{width:7px;height:7px;border-radius:50%;background:var(--color-success);box-shadow:0 0 8px var(--color-success)}._linksGrid_1c905_88{grid-column:2;display:flex;gap:var(--space-8);justify-content:flex-end;padding-top:var(--space-8)}._linkColumn_1c905_96{display:flex;flex-direction:column;gap:var(--space-2)}._columnTitle_1c905_102{color:var(--text-primary);font-size:.9rem;font-weight:700;margin:0 0 var(--space-2);text-transform:uppercase;letter-spacing:.05em}._footer_1c905_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_1c905_1 a:hover{color:var(--accent);transform:translate(2px)}._bottomBar_1c905_126{position:relative;width:100%;max-width:var(--max-width);margin:var(--space-6) auto 0;display:flex;align-items:center;justify-content:center}._copyright_1c905_136{margin:0;color:var(--text-muted);font-size:.85rem;display:flex;align-items:center;justify-content:center;gap:4px;text-align:center}._brand_1c905_27{color:var(--accent);font-weight:700}._heartIcon_1c905_152{color:var(--color-danger);margin:0 2px}._backToTop_1c905_157{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_1c905_157:hover{background:#ffffff1f;color:#fff;border-color:var(--accent);transform:translateY(-2px)}@media(max-width:768px){._footer_1c905_1{padding:0 var(--space-4) var(--space-6)}._footerInner_1c905_15{grid-template-columns:1fr;gap:var(--space-5);align-items:center;justify-items:center}._brandSection_1c905_27{grid-column:1;align-items:center;text-align:center;padding-top:0;justify-content:center;margin-top:-26px}._logoRow_1c905_39{flex-direction:column;align-items:center;gap:6px}._logoText_1c905_45{--logo-height: 52px}._brandMeta_1c905_51{flex-direction:column;align-items:center;gap:var(--space-1);justify-content:center;margin-top:6px}._linksGrid_1c905_88{grid-column:1;display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4);text-align:center}._linkColumn_1c905_96{align-items:center;gap:var(--space-1)}._columnTitle_1c905_102{margin:0 0 var(--space-1);font-size:.78rem}._footer_1c905_1 a{font-size:.82rem}._bottomBar_1c905_126{flex-direction:column;gap:var(--space-3);text-align:center}._copyright_1c905_136{font-size:.78rem}._backToTop_1c905_157{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)}}._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}}._screen_1pca0_1{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;width:100%;background-color:var(--bg-secondary);color:var(--text-primary);text-align:center;padding:2rem}._icon_1pca0_14{font-size:4rem;color:var(--color-danger);margin-bottom:1rem}._title_1pca0_20{margin-bottom:1rem}._text_1pca0_24{color:var(--text-secondary);margin-bottom:2rem}._button_1pca0_29{padding:.8rem 1.5rem;background-color:var(--accent);color:var(--accent-text);border:none;border-radius:var(--radius-md);cursor:pointer;display:flex;align-items:center;gap:.5rem;font-size:1rem;transition:background-color .2s}._button_1pca0_29:hover{background-color:var(--accent-light)}._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)}}._notice_1d75r_1{position:fixed;right:max(var(--space-4),env(safe-area-inset-right));bottom:max(var(--space-4),env(safe-area-inset-bottom));z-index:10000;display:flex;align-items:center;gap:var(--space-2);max-width:calc(100vw - 2 * var(--space-4));padding:var(--space-2-5) var(--space-3);border:1px solid var(--glass-border);border-radius:var(--radius-md);background:var(--glass-bg);color:var(--text-secondary);box-shadow:0 4px 16px #00000029;font-family:var(--font-family);font-size:var(--font-size-xs);font-weight:400;line-height:1.5;pointer-events:none;animation:_appear_1d75r_1 2.6s ease both}._notice_1d75r_1 svg{color:var(--text-tertiary);flex-shrink:0}@keyframes _appear_1d75r_1{0%{opacity:0;transform:translateY(4px)}8%,88%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(2px)}}@media(prefers-reduced-motion:reduce){._notice_1d75r_1{animation:none}}:root{--accent: #6d5dfc;--logo-ink: #140f15;--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);--palette-gold: #d8b56b;--palette-silver: #c3c9d1;--palette-bronze: #c08d5f;--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;--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}}.badge{display:inline-flex;align-items:center;gap:var(--space-1-5);padding:var(--space-1) var(--space-2-5);border-radius:var(--radius-full);border:1px solid var(--border-primary);background:var(--bg-tertiary);color:var(--text-secondary);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);white-space:nowrap}.badge-primary{border-color:color-mix(in srgb,var(--accent) 35%,transparent);background:var(--accent-subtle);color:var(--accent-light)}.badge-secondary{border-color:var(--border-secondary);background:var(--bg-secondary);color:var(--text-secondary)}.badge-danger{border-color:color-mix(in srgb,var(--color-danger) 35%,transparent);background:color-mix(in srgb,var(--color-danger) 12%,transparent);color:var(--color-danger)}.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}}.page-container{width:100%;animation:page-fade-in var(--transition-smooth)}@keyframes page-fade-in{0%{opacity:0}to{opacity:1}}.error-message{padding:var(--space-4);text-align:center;color:var(--color-danger)}._gate_r3yn2_1{min-height:100dvh;display:grid;place-content:center;padding:var(--space-5);background:var(--bg-primary);color:var(--text-primary)}._panel_r3yn2_10{width:min(100%,440px);padding:var(--space-5);border:1px solid var(--border-secondary);border-radius:var(--radius-lg);background:var(--bg-tertiary)}._form_r3yn2_18{display:flex;flex-wrap:wrap;align-items:end;gap:var(--space-3);margin:var(--space-4) 0}._form_r3yn2_18 h3,._form_r3yn2_18 p{flex-basis:100%}._field_r3yn2_31{display:flex;flex-direction:column;gap:var(--space-2);max-width:100%}._field_r3yn2_31 input,._field_r3yn2_31 select{padding:var(--space-3);color:var(--text-primary);background:var(--bg-primary);border:1px solid var(--border-secondary);border-radius:var(--radius-md);min-width:0}._avatarRow_r3yn2_48{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-4)}._avatarRow_r3yn2_48>:first-child{width:72px;height:72px}._profileList_r3yn2_60{list-style:none;padding:0}._profileList_r3yn2_60 li{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--border-secondary)}._smallAvatar_r3yn2_73{width:36px;height:36px;flex-shrink:0}._profileName_r3yn2_78{flex:1;min-width:0;overflow-wrap:anywhere}
@@ -1 +1 @@
1
- import{q as r}from"./index-BP1z44Uk.js";const s={tv:{library:r.tvLibrary,continue:r.tvContinueWatching,progress:r.tvProgress},manga:{library:r.mangaLibrary,continue:r.mangaContinueReading,progress:r.mangaProgress},asmr:{library:r.asmrLibrary,continue:r.asmrContinueListening,progress:r.asmrProgress}};function t(a,e,n=!1){const i=s[e];n&&a.invalidateQueries({queryKey:[i.progress]}),a.invalidateQueries({queryKey:[i.library]}),a.invalidateQueries({queryKey:[i.continue]})}export{t as i};
1
+ import{q as r}from"./index-B_2ppn5P.js";const s={tv:{library:r.tvLibrary,continue:r.tvContinueWatching,progress:r.tvProgress},manga:{library:r.mangaLibrary,continue:r.mangaContinueReading,progress:r.mangaProgress},asmr:{library:r.asmrLibrary,continue:r.asmrContinueListening,progress:r.asmrProgress}};function t(a,e,n=!1){const i=s[e];n&&a.invalidateQueries({queryKey:[i.progress]}),a.invalidateQueries({queryKey:[i.library]}),a.invalidateQueries({queryKey:[i.continue]})}export{t as i};
@@ -0,0 +1 @@
1
+ import{p as e}from"./index-B_2ppn5P.js";const o=.8,r=5,a="autoplayEnabled",E=(s,t)=>t>0&&s>=t*o,c=.25,l=(s,t)=>t>0&&Number.isFinite(t)&&s>=t-c,p=s=>s>r,m=()=>{try{return e.getItem(a)==="true"}catch{return!1}},b=s=>{try{e.setItem(a,String(s))}catch{}};export{o as C,l as a,p as h,E as i,m as l,b as s};
@@ -1 +1 @@
1
- import{q as g}from"./vendor-core-DfaOB3Rn.js";import{u as p,b as q,a as M}from"./vendor-query-BBT5_sHx.js";import{i as v,A as h,q as A,t as y}from"./index-BP1z44Uk.js";import{u as Q}from"./QueueOptionsButton-C-y5QFrT.js";function k(t){const s=p(),c=v(),{data:i,isLoading:w,error:u}=Q(t),n=c.watchlist.check.queryOptions({showId:t??""}).queryKey,{data:d}=q({...c.watchlist.check.queryOptions({showId:t??""}),enabled:!!t}),r=d?.inWatchlist??!1,{mutateAsync:l}=M({mutationFn:async({wasIn:e,meta:a})=>{if(!t)throw new Error("Missing showId");if(e)await y.watchlist.remove.mutate({id:t});else{const o=a?.names,m=a?.name||o?.romaji;if(!m)throw new Error("Missing show name");await y.watchlist.add.mutate({id:t,name:m,thumbnail:a?.thumbnail,nativeName:o?.native,englishName:o?.english,type:a?.type,isAdult:a?.isAdult})}return!e},onMutate:async({wasIn:e})=>{await s.cancelQueries({queryKey:n}),s.setQueryData(n,a=>({...a,inWatchlist:!e,status:a?.status??""}))},onError:e=>{s.invalidateQueries({queryKey:n}),h.error(e instanceof Error?e.message:"Failed to update watchlist")},onSuccess:e=>{h.success(e?"Added to watchlist":"Removed from watchlist"),s.invalidateQueries({queryKey:[A.watchlist]})}}),f=g(async()=>{!t||!i||await l({wasIn:r,meta:i})},[t,i,r,l]);return{showMeta:i,inWatchlist:r,loadingMeta:w,error:u?u.message:null,toggleWatchlist:f}}export{k as u};
1
+ import{q as g}from"./vendor-core-DfaOB3Rn.js";import{u as p,b as q,a as M}from"./vendor-query-BBT5_sHx.js";import{l as v,F as h,q as Q,t as y}from"./index-B_2ppn5P.js";import{u as A}from"./QueueOptionsButton-E2SuRJH_.js";function k(t){const s=p(),c=v(),{data:i,isLoading:w,error:u}=A(t),n=c.watchlist.check.queryOptions({showId:t??""}).queryKey,{data:d}=q({...c.watchlist.check.queryOptions({showId:t??""}),enabled:!!t}),r=d?.inWatchlist??!1,{mutateAsync:l}=M({mutationFn:async({wasIn:e,meta:a})=>{if(!t)throw new Error("Missing showId");if(e)await y.watchlist.remove.mutate({id:t});else{const o=a?.names,m=a?.name||o?.romaji;if(!m)throw new Error("Missing show name");await y.watchlist.add.mutate({id:t,name:m,thumbnail:a?.thumbnail,nativeName:o?.native,englishName:o?.english,type:a?.type,isAdult:a?.isAdult})}return!e},onMutate:async({wasIn:e})=>{await s.cancelQueries({queryKey:n}),s.setQueryData(n,a=>({...a,inWatchlist:!e,status:a?.status??""}))},onError:e=>{s.invalidateQueries({queryKey:n}),h.error(e instanceof Error?e.message:"Failed to update watchlist")},onSuccess:e=>{h.success(e?"Added to watchlist":"Removed from watchlist"),s.invalidateQueries({queryKey:[Q.watchlist]})}}),f=g(async()=>{!t||!i||await l({wasIn:r,meta:i})},[t,i,r,l]);return{showMeta:i,inWatchlist:r,loadingMeta:w,error:u?u.message:null,toggleWatchlist:f}}export{k as u};
@@ -1 +1 @@
1
- import{T as C}from"./vendor-core-DfaOB3Rn.js";import{b as p,u as d,a as l,e as Q}from"./vendor-query-BBT5_sHx.js";import{i as n,A as a,q as v,t as b}from"./index-BP1z44Uk.js";import{i as g}from"./libraryInvalidation-CVK2SYUR.js";function k(s){return String(s||"").trim().toUpperCase()}function H(s){return k(s.id||s._id||"")}function K(s){return!!s.isAdult}const U=["Listening","Completed","On-Hold","Dropped","Planned"],T=s=>k(s),x=(s="All",r=1,e=24)=>{const t=n();return p(t.asmrLibrary.list.queryOptions({status:s,page:r,limit:e}))},_=()=>{const s=n();return p({...s.asmrLibrary.ids.queryOptions(),staleTime:1e3*60})},W=s=>{const r=n();return p({...r.asmrLibrary.check.queryOptions({id:s||""}),enabled:!!s,staleTime:1e3*60})},j=(s=24)=>{const r=n();return p(r.asmrProgress.continueListening.queryOptions({limit:s}))},z=s=>{const r=n();return p({...r.asmrProgress.getByWork.queryOptions({workId:s||""}),enabled:!!s})},B=()=>{const s=n(),r=d();return l({mutationFn:async e=>{const{silent:t,...m}=e;return b.asmrLibrary.add.mutate(m)},onSuccess:(e,t)=>{t.silent||a.success("Added to listening list"),r.invalidateQueries({queryKey:[v.asmrLibrary]}),r.invalidateQueries(s.asmrLibrary.pathFilter())},onError:e=>{a.error(`Failed to add: ${e.message}`)}})},R=()=>{const s=n(),r=d();return l(s.asmrLibrary.remove.mutationOptions({onSuccess:()=>{a.success("Removed from listening list"),g(r,"asmr"),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{a.error(`Failed to remove: ${e.message}`)}}))},Y=()=>{const s=n(),r=d();return l(s.asmrLibrary.setStatus.mutationOptions({onSuccess:()=>{a.success("Status updated"),g(r,"asmr"),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{a.error(`Failed to update status: ${e.message}`)}}))},J=()=>{const s=n(),r=d();return l(s.asmrProgress.save.mutationOptions({onSuccess:()=>{g(r,"asmr",!0),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())}}))},V=()=>{const s=n(),r=d();return l(s.asmrProgress.remove.mutationOptions({onSuccess:()=>{a.success("Progress reset"),g(r,"asmr",!0),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{a.error(`Failed to reset progress: ${e.message}`)}}))},X=()=>{const s=n(),r=d();return l(s.asmrLibrary.batchStatus.mutationOptions({onSuccess:e=>{a.success(`Status updated for ${e.updated??0} items`),g(r,"asmr"),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{a.error(`Failed to update statuses: ${e.message}`)}}))},Z=()=>{const s=n(),r=d();return l(s.asmrLibrary.removeMany.mutationOptions({onSuccess:e=>{const t=e.removed??0;a.success(`Removed ${t} ${t===1?"item":"items"} from listening list`),g(r,"asmr"),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{a.error(`Failed to remove: ${e.message}`)}}))},ss=()=>{const s=n(),r=d();return l(s.asmrProgress.removeMany.mutationOptions({onSuccess:e=>{const t=e.removed??0;a.success(`Reset progress for ${t} ${t===1?"item":"items"}`),g(r,"asmr",!0),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{a.error(`Failed to reset progress: ${e.message}`)}}))},rs=()=>{const s=B(),r=R(),{data:e}=_(),t=C(()=>new Set(e?.ids||[]),[e]);return{toggle:o=>{const i=T(o.rjCode);t.has(i)?r.mutate({id:i}):s.mutate({...o,thumbnail:o.thumbnail||""})},bookmarkedIds:t,pending:s.isPending||r.isPending}},f=300*1e3,F=15,es=(s,r,e,t)=>{const m=r+1,o=Q({queries:Array.from({length:m},(u,E)=>{const P=E+1;return{queryKey:[v.asmrBrowse,s,P,e,t],queryFn:()=>{const O=s.trim();return b.asmr.browse.query({q:O||void 0,page:P,sort:e&&e!=="latest"?e:void 0,rating:t||void 0})},staleTime:f}})}),i=o.flatMap(u=>u.data?.shows??[]),A=i.slice((r-1)*F,r*F),y=o[o.length-1]?.data,L=!!(y&&(y.hasNext||i.length>r*F)),S=o.some(u=>u.isLoading),c=o.some(u=>u.isFetching),q=o.some(u=>u.isError);return{data:{shows:A,hasNext:L},isLoading:S,isError:q,isFetching:c}},ts=s=>{const r=n(),e=p({...r.asmr.work.queryOptions({rj:s}),enabled:!!s,staleTime:f,refetchOnMount:"always"});return{...e,data:e.data}},$=15,h=6;function I(s){if(s.isAdult||!s.thumbnail)return!1;const r=(s.rating||"").toLowerCase();return r===""||r==="sfw"}function w(s,r){const e=new Set,t=[];for(const m of s)for(const o of m){if(t.length>=r)return t;const i=o.id||o._id;!i||e.has(i)||(e.add(i),I(o)&&t.push(o))}return t}const os=(s=!0)=>{const r=Q({queries:Array.from({length:$},(c,q)=>{const u=q+1;return{queryKey:[v.asmrBrowse,"",u,"popular_month",""],queryFn:()=>b.asmr.browse.query({page:u,sort:"popular_month"}),staleTime:f,enabled:s,retry:1}})}),e=r.map(c=>c.data?.shows??[]),t=w(e,h),m=r.every(c=>c.isFetched),o=s&&m&&t.length<h,i=p({queryKey:[v.asmrBrowse,"",1,"popular","sfw"],queryFn:()=>b.asmr.browse.query({page:1,sort:"popular",rating:"sfw"}),staleTime:f,enabled:o,retry:1}),A=i.data?.shows??[],y=t.length>=h?t.slice(0,h):w([t,A],h),L=s&&(r.some(c=>c.isLoading)||o&&i.isLoading),S=s&&m&&y.length===0&&r.some(c=>c.isError);return{data:y,isLoading:L,isError:S}};export{U as A,H as a,os as b,ts as c,W as d,rs as e,z as f,k as g,J as h,B as i,es as j,T as k,K as l,x as m,R as n,Y as o,X as p,Z as q,ss as r,V as s,j as u};
1
+ import{T as C}from"./vendor-core-DfaOB3Rn.js";import{b as p,u as d,a as l,e as Q}from"./vendor-query-BBT5_sHx.js";import{l as n,F as a,q as v,t as b}from"./index-B_2ppn5P.js";import{i as g}from"./libraryInvalidation-DeUzK6TJ.js";function k(s){return String(s||"").trim().toUpperCase()}function H(s){return k(s.id||s._id||"")}function K(s){return!!s.isAdult}const U=["Listening","Completed","On-Hold","Dropped","Planned"],T=s=>k(s),x=(s="All",r=1,e=24)=>{const t=n();return p(t.asmrLibrary.list.queryOptions({status:s,page:r,limit:e}))},_=()=>{const s=n();return p({...s.asmrLibrary.ids.queryOptions(),staleTime:1e3*60})},W=s=>{const r=n();return p({...r.asmrLibrary.check.queryOptions({id:s||""}),enabled:!!s,staleTime:1e3*60})},j=(s=24)=>{const r=n();return p(r.asmrProgress.continueListening.queryOptions({limit:s}))},z=s=>{const r=n();return p({...r.asmrProgress.getByWork.queryOptions({workId:s||""}),enabled:!!s})},B=()=>{const s=n(),r=d();return l({mutationFn:async e=>{const{silent:t,...m}=e;return b.asmrLibrary.add.mutate(m)},onSuccess:(e,t)=>{t.silent||a.success("Added to listening list"),r.invalidateQueries({queryKey:[v.asmrLibrary]}),r.invalidateQueries(s.asmrLibrary.pathFilter())},onError:e=>{a.error(`Failed to add: ${e.message}`)}})},R=()=>{const s=n(),r=d();return l(s.asmrLibrary.remove.mutationOptions({onSuccess:()=>{a.success("Removed from listening list"),g(r,"asmr"),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{a.error(`Failed to remove: ${e.message}`)}}))},Y=()=>{const s=n(),r=d();return l(s.asmrLibrary.setStatus.mutationOptions({onSuccess:()=>{a.success("Status updated"),g(r,"asmr"),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{a.error(`Failed to update status: ${e.message}`)}}))},J=()=>{const s=n(),r=d();return l(s.asmrProgress.save.mutationOptions({onSuccess:()=>{g(r,"asmr",!0),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())}}))},V=()=>{const s=n(),r=d();return l(s.asmrProgress.remove.mutationOptions({onSuccess:()=>{a.success("Progress reset"),g(r,"asmr",!0),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{a.error(`Failed to reset progress: ${e.message}`)}}))},X=()=>{const s=n(),r=d();return l(s.asmrLibrary.batchStatus.mutationOptions({onSuccess:e=>{a.success(`Status updated for ${e.updated??0} items`),g(r,"asmr"),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{a.error(`Failed to update statuses: ${e.message}`)}}))},Z=()=>{const s=n(),r=d();return l(s.asmrLibrary.removeMany.mutationOptions({onSuccess:e=>{const t=e.removed??0;a.success(`Removed ${t} ${t===1?"item":"items"} from listening list`),g(r,"asmr"),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{a.error(`Failed to remove: ${e.message}`)}}))},ss=()=>{const s=n(),r=d();return l(s.asmrProgress.removeMany.mutationOptions({onSuccess:e=>{const t=e.removed??0;a.success(`Reset progress for ${t} ${t===1?"item":"items"}`),g(r,"asmr",!0),r.invalidateQueries(s.asmrLibrary.pathFilter()),r.invalidateQueries(s.asmrProgress.pathFilter())},onError:e=>{a.error(`Failed to reset progress: ${e.message}`)}}))},rs=()=>{const s=B(),r=R(),{data:e}=_(),t=C(()=>new Set(e?.ids||[]),[e]);return{toggle:o=>{const i=T(o.rjCode);t.has(i)?r.mutate({id:i}):s.mutate({...o,thumbnail:o.thumbnail||""})},bookmarkedIds:t,pending:s.isPending||r.isPending}},f=300*1e3,F=15,es=(s,r,e,t)=>{const m=r+1,o=Q({queries:Array.from({length:m},(u,E)=>{const P=E+1;return{queryKey:[v.asmrBrowse,s,P,e,t],queryFn:()=>{const O=s.trim();return b.asmr.browse.query({q:O||void 0,page:P,sort:e&&e!=="latest"?e:void 0,rating:t||void 0})},staleTime:f}})}),i=o.flatMap(u=>u.data?.shows??[]),L=i.slice((r-1)*F,r*F),y=o[o.length-1]?.data,A=!!(y&&(y.hasNext||i.length>r*F)),S=o.some(u=>u.isLoading),c=o.some(u=>u.isFetching),q=o.some(u=>u.isError);return{data:{shows:L,hasNext:A},isLoading:S,isError:q,isFetching:c}},ts=s=>{const r=n(),e=p({...r.asmr.work.queryOptions({rj:s}),enabled:!!s,staleTime:f,refetchOnMount:"always"});return{...e,data:e.data}},$=15,h=6;function I(s){if(s.isAdult||!s.thumbnail)return!1;const r=(s.rating||"").toLowerCase();return r===""||r==="sfw"}function w(s,r){const e=new Set,t=[];for(const m of s)for(const o of m){if(t.length>=r)return t;const i=o.id||o._id;!i||e.has(i)||(e.add(i),I(o)&&t.push(o))}return t}const os=(s=!0)=>{const r=Q({queries:Array.from({length:$},(c,q)=>{const u=q+1;return{queryKey:[v.asmrBrowse,"",u,"popular_month",""],queryFn:()=>b.asmr.browse.query({page:u,sort:"popular_month"}),staleTime:f,enabled:s,retry:1}})}),e=r.map(c=>c.data?.shows??[]),t=w(e,h),m=r.every(c=>c.isFetched),o=s&&m&&t.length<h,i=p({queryKey:[v.asmrBrowse,"",1,"popular","sfw"],queryFn:()=>b.asmr.browse.query({page:1,sort:"popular",rating:"sfw"}),staleTime:f,enabled:o,retry:1}),L=i.data?.shows??[],y=t.length>=h?t.slice(0,h):w([t,L],h),A=s&&(r.some(c=>c.isLoading)||o&&i.isLoading),S=s&&m&&y.length===0&&r.some(c=>c.isError);return{data:y,isLoading:A,isError:S}};export{U as A,H as a,os as b,ts as c,W as d,rs as e,z as f,k as g,J as h,B as i,es as j,T as k,K as l,x as m,R as n,Y as o,X as p,Z as q,ss as r,V as s,j as u};
@@ -1 +1 @@
1
- import{u as b}from"./vendor-core-DfaOB3Rn.js";import{c as k}from"./useAsmr-ClAcWwjW.js";import{a as g}from"./MediaCard-BODgA6ir.js";import{u as d}from"./usePopup-DS9jMzp6.js";const y=({data:o,anchorRect:n,bookmarked:a,onToggleBookmark:l,onMouseEnter:p,onMouseLeave:c,onRequestClose:u})=>{const{data:r,isLoading:m}=k(o.rjCode||null),e=r?.tracks.length??0,i=e>0,t=!m,s=[{icon:"headphones",label:t?i?`${e} track${e===1?"":"s"}`:"No tracks":"Loading tracks…"}];return o.rating&&s.push({label:o.rating.toUpperCase()}),o.isAdult&&s.push({label:"18+"}),o.progressLabel&&s.push({icon:"bookmark",label:o.progressLabel}),b(g,{anchorRect:n,title:o.title,subtitle:o.rjCode,cover:o.thumbnail,meta:s,synopsis:!t&&!r?.description?"Loading description…":r?.description??"No description available.",primaryAction:{to:o.listenTarget,label:i?"Listen now":t?"No tracks":"Loading…",icon:"play",disabled:!i},secondaryAction:{to:o.listenTarget,label:"Details"},bookmarked:a,bookmarkLabel:"Bookmark",onToggleBookmark:l,onMouseEnter:p,onMouseLeave:c,onRequestClose:u})},C=()=>d();export{y as A,C as u};
1
+ import{u as b}from"./vendor-core-DfaOB3Rn.js";import{c as k}from"./useAsmr-DQsv1SQT.js";import{a as g}from"./MediaCard-BXWAjpwt.js";import{u as d}from"./usePopup-DS9jMzp6.js";const y=({data:o,anchorRect:n,bookmarked:a,onToggleBookmark:l,onMouseEnter:p,onMouseLeave:c,onRequestClose:u})=>{const{data:r,isLoading:m}=k(o.rjCode||null),e=r?.tracks.length??0,i=e>0,t=!m,s=[{icon:"headphones",label:t?i?`${e} track${e===1?"":"s"}`:"No tracks":"Loading tracks…"}];return o.rating&&s.push({label:o.rating.toUpperCase()}),o.isAdult&&s.push({label:"18+"}),o.progressLabel&&s.push({icon:"bookmark",label:o.progressLabel}),b(g,{anchorRect:n,title:o.title,subtitle:o.rjCode,cover:o.thumbnail,meta:s,synopsis:!t&&!r?.description?"Loading description…":r?.description??"No description available.",primaryAction:{to:o.listenTarget,label:i?"Listen now":t?"No tracks":"Loading…",icon:"play",disabled:!i},secondaryAction:{to:o.listenTarget,label:"Details"},bookmarked:a,bookmarkLabel:"Bookmark",onToggleBookmark:l,onMouseEnter:p,onMouseLeave:c,onRequestClose:u})},C=()=>d();export{y as A,C as u};
@@ -1 +1 @@
1
- import{b as u,c as f,u as c,a as g}from"./vendor-query-BBT5_sHx.js";import{q as v,t as b,i as o,A as s}from"./index-BP1z44Uk.js";import{T as L}from"./vendor-core-DfaOB3Rn.js";import{i as d}from"./libraryInvalidation-CVK2SYUR.js";const q=300*1e3,h={mangadex:"https://mangadex.org/",mangapill:"https://www.mangapill.com/"},P=(e,a)=>`/api/proxy?url=${encodeURIComponent(a)}&referer=${encodeURIComponent(h[e])}`,B=(e,a)=>a&&(e==="mangapill"||e==="mangadex"?P(e,a):a),N=(e,a=!0)=>{const{provider:t,query:r,page:i,sort:n,status:m,type:p,rating:y,mature:l}=e;return u({queryKey:[v.mangaBrowse,t,r,i,n,m,p,y,l],queryFn:()=>b.manga.search.query({provider:t,q:r.trim()||void 0,page:i,sort:n||void 0,status:m||void 0,type:p||void 0,rating:y||void 0,mature:l?"1":void 0}),staleTime:q,enabled:a})},A=(e,a=14)=>{const{provider:t,query:r,sort:i,status:n,type:m,rating:p,mature:y}=e;return f({queryKey:[v.mangaBrowseInfinite,t,r,i,n,m,p,y,a],queryFn:({pageParam:l=1})=>b.manga.search.query({provider:t,q:r.trim()||void 0,page:l,limit:a,sort:i||void 0,status:n||void 0,type:m||void 0,rating:p||void 0,mature:y?"1":void 0}),initialPageParam:1,getNextPageParam:(l,M)=>l.hasNext?M.length+1:void 0,staleTime:q,enabled:!0})},I=(e,a,t="safe",r=!1)=>u({queryKey:[v.mangaDetail,e,a,t,r],queryFn:()=>b.manga.info.query({provider:e||"",id:a||"",rating:t,mature:r?"1":void 0}),enabled:!!e&&!!a,staleTime:q}),Q=(e,a,t)=>u({queryKey:[v.mangaPages,e,a],queryFn:()=>b.manga.pages.query({provider:e||"",id:a||""}),enabled:!!e&&!!a,staleTime:1800*1e3}),w=()=>{const e=o(),a=u({...e.manga.trending.queryOptions(),staleTime:600*1e3,retry:1});return{...a,data:a.data}},x=e=>e.contentRating==="erotica"||e.contentRating==="pornographic"||e.type==="doujinshi";function _(e,a){const t=e.titles??{};return a==="englishName"?t.en||e.title:a==="nativeName"&&(t.native||t.romaji||e.altTitle)||e.title}function D(e){return{englishName:e.titles?.en??e.title,nativeName:e.titles?.native??e.titles?.romaji??e.altTitle??void 0}}const S=/^anilist:ch:(\d+)$/;function K(e){if(!e)return null;const a=S.exec(e.trim());if(!a)return null;const t=Number.parseInt(a[1],10);return Number.isFinite(t)?t:null}function U(e,a){const t=String(a),r=e.find(i=>(i.number??"").trim()===t);return r||(e.find(i=>{const n=Number.parseFloat((i.number??"").trim());return Number.isFinite(n)&&n===a})??null)}const j=["Reading","Completed","On-Hold","Dropped","Planned"],F=(e,a)=>`${e.toLowerCase()}:${a}`,H=(e="All",a=1,t=24)=>{const r=o();return u(r.mangaLibrary.list.queryOptions({status:e,page:a,limit:t}))},R=()=>{const e=o();return u({...e.mangaLibrary.ids.queryOptions(),staleTime:1e3*60})},V=e=>{const a=o();return u({...a.mangaLibrary.check.queryOptions({id:e??""}),enabled:!!e,staleTime:1e3*60})},Y=e=>{const a=o();return u({...a.mangaLibrary.entry.queryOptions({id:e??""}),enabled:!!e,staleTime:1e3*60})},z=()=>{const e=o(),a=c();return g(e.mangaLibrary.link.mutationOptions({onSuccess:t=>{s.success(t?.progressMigrated?"Linked - chapter progress carried over":"Linked to AniList entry"),a.invalidateQueries(e.mangaLibrary.pathFilter()),d(a,"manga")},onError:t=>{s.error(`Failed to link: ${t.message}`)}}))},G=(e=24)=>{const a=o();return u(a.mangaProgress.continueReading.queryOptions({limit:e}))},J=e=>{const a=o();return u({...a.mangaProgress.byManga.queryOptions({mangaId:e??""}),enabled:!!e})},k=()=>{const e=o(),a=c();return g(e.mangaLibrary.add.mutationOptions({onSuccess:(t,r)=>{r.silent||s.success("Bookmarked"),a.invalidateQueries(e.mangaLibrary.pathFilter()),a.invalidateQueries({queryKey:[v.mangaLibrary]})},onError:t=>{s.error(`Failed to bookmark: ${t.message}`)}}))},C=()=>{const e=o(),a=c();return g(e.mangaLibrary.remove.mutationOptions({onSuccess:()=>{s.success("Bookmark removed"),a.invalidateQueries(e.mangaLibrary.pathFilter()),d(a,"manga")},onError:t=>{s.error(`Failed to remove: ${t.message}`)}}))},W=()=>{const e=o(),a=c();return g(e.mangaLibrary.setStatus.mutationOptions({onSuccess:()=>{s.success("Status updated"),a.invalidateQueries(e.mangaLibrary.pathFilter()),d(a,"manga")},onError:t=>{s.error(`Failed to update status: ${t.message}`)}}))},X=()=>{const e=o(),a=c();return g(e.mangaProgress.save.mutationOptions({onSuccess:()=>{d(a,"manga",!0),a.invalidateQueries(e.mangaProgress.pathFilter())}}))},Z=()=>{const e=o(),a=c();return g(e.mangaProgress.remove.mutationOptions({onSuccess:()=>{s.success("Progress reset"),d(a,"manga",!0),a.invalidateQueries(e.mangaProgress.pathFilter())},onError:t=>{s.error(`Failed to reset progress: ${t.message}`)}}))},ee=()=>{const e=o(),a=c();return g(e.mangaLibrary.batchStatus.mutationOptions({onSuccess:t=>{s.success(`Status updated for ${t.updated??0} items`),a.invalidateQueries(e.mangaLibrary.pathFilter()),d(a,"manga")},onError:t=>{s.error(`Failed to update statuses: ${t.message}`)}}))},ae=()=>{const e=o(),a=c();return g(e.mangaLibrary.removeMany.mutationOptions({onSuccess:t=>{const r=t.removed??0;s.success(`Removed ${r} ${r===1?"item":"items"} from reading list`),a.invalidateQueries(e.mangaLibrary.pathFilter()),d(a,"manga")},onError:t=>{s.error(`Failed to remove: ${t.message}`)}}))},te=()=>{const e=o(),a=c();return g(e.mangaProgress.removeMany.mutationOptions({onSuccess:t=>{const r=t.removed??0;s.success(`Reset progress for ${r} ${r===1?"item":"items"}`),d(a,"manga",!0),a.invalidateQueries(e.mangaProgress.pathFilter())},onError:t=>{s.error(`Failed to reset progress: ${t.message}`)}}))},re=()=>{const e=k(),a=C(),{data:t}=R(),r=L(()=>new Set(t?.ids||[]),[t]);return{toggle:n=>{const m=F(n.provider,n.id);r.has(m)?a.mutate(m):e.mutate({provider:n.provider,mangaId:n.id,title:n.title,cover:n.cover,altTitle:n.altTitle,contentRating:n.contentRating})},bookmarkedIds:r,pending:e.isPending||a.isPending}};export{te as A,Z as B,j as M,A as a,B as b,D as c,G as d,w as e,N as f,Y as g,k as h,x as i,z as j,I as k,V as l,F as m,J as n,C as o,W as p,K as q,_ as r,U as s,Q as t,re as u,P as v,X as w,H as x,ee as y,ae as z};
1
+ import{b as u,c as f,u as c,a as g}from"./vendor-query-BBT5_sHx.js";import{q as v,t as b,l as o,F as s}from"./index-B_2ppn5P.js";import{T as L}from"./vendor-core-DfaOB3Rn.js";import{i as l}from"./libraryInvalidation-DeUzK6TJ.js";const q=300*1e3,h={mangadex:"https://mangadex.org/",mangapill:"https://www.mangapill.com/"},F=(e,a)=>`/api/proxy?url=${encodeURIComponent(a)}&referer=${encodeURIComponent(h[e])}`,B=(e,a)=>a&&(e==="mangapill"||e==="mangadex"?F(e,a):a),N=(e,a=!0)=>{const{provider:t,query:r,page:i,sort:n,status:m,type:p,rating:y,mature:d}=e;return u({queryKey:[v.mangaBrowse,t,r,i,n,m,p,y,d],queryFn:()=>b.manga.search.query({provider:t,q:r.trim()||void 0,page:i,sort:n||void 0,status:m||void 0,type:p||void 0,rating:y||void 0,mature:d?"1":void 0}),staleTime:q,enabled:a})},I=(e,a=14)=>{const{provider:t,query:r,sort:i,status:n,type:m,rating:p,mature:y}=e;return f({queryKey:[v.mangaBrowseInfinite,t,r,i,n,m,p,y,a],queryFn:({pageParam:d=1})=>b.manga.search.query({provider:t,q:r.trim()||void 0,page:d,limit:a,sort:i||void 0,status:n||void 0,type:m||void 0,rating:p||void 0,mature:y?"1":void 0}),initialPageParam:1,getNextPageParam:(d,M)=>d.hasNext?M.length+1:void 0,staleTime:q,enabled:!0})},Q=(e,a,t="safe",r=!1)=>u({queryKey:[v.mangaDetail,e,a,t,r],queryFn:()=>b.manga.info.query({provider:e||"",id:a||"",rating:t,mature:r?"1":void 0}),enabled:!!e&&!!a,staleTime:q}),A=(e,a,t)=>u({queryKey:[v.mangaPages,e,a],queryFn:()=>b.manga.pages.query({provider:e||"",id:a||""}),enabled:!!e&&!!a,staleTime:1800*1e3}),w=()=>{const e=o(),a=u({...e.manga.trending.queryOptions(),staleTime:600*1e3,retry:1});return{...a,data:a.data}},x=e=>e.contentRating==="erotica"||e.contentRating==="pornographic"||e.type==="doujinshi";function _(e,a){const t=e.titles??{};return a==="englishName"?t.en||e.title:a==="nativeName"&&(t.native||t.romaji||e.altTitle)||e.title}function D(e){return{englishName:e.titles?.en??e.title,nativeName:e.titles?.native??e.titles?.romaji??e.altTitle??void 0}}const P=/^anilist:ch:(\d+)$/;function K(e){if(!e)return null;const a=P.exec(e.trim());if(!a)return null;const t=Number.parseInt(a[1],10);return Number.isFinite(t)?t:null}function U(e,a){const t=String(a),r=e.find(i=>(i.number??"").trim()===t);return r||(e.find(i=>{const n=Number.parseFloat((i.number??"").trim());return Number.isFinite(n)&&n===a})??null)}const j=["Reading","Completed","On-Hold","Dropped","Planned"],S=(e,a)=>`${e.toLowerCase()}:${a}`,H=(e="All",a=1,t=24)=>{const r=o();return u(r.mangaLibrary.list.queryOptions({status:e,page:a,limit:t}))},R=()=>{const e=o();return u({...e.mangaLibrary.ids.queryOptions(),staleTime:1e3*60})},V=e=>{const a=o();return u({...a.mangaLibrary.check.queryOptions({id:e??""}),enabled:!!e,staleTime:1e3*60})},Y=e=>{const a=o();return u({...a.mangaLibrary.entry.queryOptions({id:e??""}),enabled:!!e,staleTime:1e3*60})},z=()=>{const e=o(),a=c();return g(e.mangaLibrary.link.mutationOptions({onSuccess:t=>{s.success(t?.progressMigrated?"Linked - chapter progress carried over":"Linked to AniList entry"),a.invalidateQueries(e.mangaLibrary.pathFilter()),l(a,"manga")},onError:t=>{s.error(`Failed to link: ${t.message}`)}}))},G=(e=24)=>{const a=o();return u(a.mangaProgress.continueReading.queryOptions({limit:e}))},J=e=>{const a=o();return u({...a.mangaProgress.byManga.queryOptions({mangaId:e??""}),enabled:!!e})},k=()=>{const e=o(),a=c();return g(e.mangaLibrary.add.mutationOptions({onSuccess:(t,r)=>{r.silent||s.success("Bookmarked"),a.invalidateQueries(e.mangaLibrary.pathFilter()),a.invalidateQueries({queryKey:[v.mangaLibrary]})},onError:t=>{s.error(`Failed to bookmark: ${t.message}`)}}))},C=()=>{const e=o(),a=c();return g(e.mangaLibrary.remove.mutationOptions({onSuccess:()=>{s.success("Bookmark removed"),a.invalidateQueries(e.mangaLibrary.pathFilter()),l(a,"manga")},onError:t=>{s.error(`Failed to remove: ${t.message}`)}}))},W=()=>{const e=o(),a=c();return g(e.mangaLibrary.setStatus.mutationOptions({onSuccess:()=>{s.success("Status updated"),a.invalidateQueries(e.mangaLibrary.pathFilter()),l(a,"manga")},onError:t=>{s.error(`Failed to update status: ${t.message}`)}}))},X=()=>{const e=o(),a=c();return g(e.mangaProgress.save.mutationOptions({onSuccess:()=>{l(a,"manga",!0),a.invalidateQueries(e.mangaProgress.pathFilter())}}))},Z=()=>{const e=o(),a=c();return g(e.mangaProgress.remove.mutationOptions({onSuccess:()=>{s.success("Progress reset"),l(a,"manga",!0),a.invalidateQueries(e.mangaProgress.pathFilter())},onError:t=>{s.error(`Failed to reset progress: ${t.message}`)}}))},ee=()=>{const e=o(),a=c();return g(e.mangaLibrary.batchStatus.mutationOptions({onSuccess:t=>{s.success(`Status updated for ${t.updated??0} items`),a.invalidateQueries(e.mangaLibrary.pathFilter()),l(a,"manga")},onError:t=>{s.error(`Failed to update statuses: ${t.message}`)}}))},ae=()=>{const e=o(),a=c();return g(e.mangaLibrary.removeMany.mutationOptions({onSuccess:t=>{const r=t.removed??0;s.success(`Removed ${r} ${r===1?"item":"items"} from reading list`),a.invalidateQueries(e.mangaLibrary.pathFilter()),l(a,"manga")},onError:t=>{s.error(`Failed to remove: ${t.message}`)}}))},te=()=>{const e=o(),a=c();return g(e.mangaProgress.removeMany.mutationOptions({onSuccess:t=>{const r=t.removed??0;s.success(`Reset progress for ${r} ${r===1?"item":"items"}`),l(a,"manga",!0),a.invalidateQueries(e.mangaProgress.pathFilter())},onError:t=>{s.error(`Failed to reset progress: ${t.message}`)}}))},re=()=>{const e=k(),a=C(),{data:t}=R(),r=L(()=>new Set(t?.ids||[]),[t]);return{toggle:n=>{const m=S(n.provider,n.id);r.has(m)?a.mutate(m):e.mutate({provider:n.provider,mangaId:n.id,title:n.title,cover:n.cover,altTitle:n.altTitle,contentRating:n.contentRating})},bookmarkedIds:r,pending:e.isPending||a.isPending}};export{te as A,Z as B,j as M,I as a,B as b,D as c,G as d,w as e,N as f,Y as g,k as h,x as i,z as j,Q as k,V as l,S as m,J as n,C as o,W as p,K as q,_ as r,U as s,A as t,re as u,F as v,X as w,H as x,ee as y,ae as z};
@@ -1 +1 @@
1
- import{u as k}from"./vendor-core-DfaOB3Rn.js";import{k as T,r as d}from"./useMangaLibrary-D3Foz2m_.js";import{d as y}from"./index-BP1z44Uk.js";import{a as h}from"./MediaCard-BODgA6ir.js";import{u as M}from"./usePopup-DS9jMzp6.js";const B=({data:e,anchorRect:i,bookmarked:l,onToggleBookmark:n,onMouseEnter:p,onMouseLeave:c,onRequestClose:m})=>{const{data:o,isLoading:u}=T(e.provider,e.mangaId,e.rating||"safe",e.mature||!1),{titlePreference:g}=y(),s=o?.chapters.length??0,a=d({title:e.title,altTitle:o?.altTitle??e.altTitle},g),t=[],r=[o?.status,o?.type].filter(Boolean).join(" · ");r&&t.push({icon:"book",label:r}),s>0&&t.push({label:`${s} chapter${s===1?"":"s"}`}),e.progressLabel&&t.push({icon:"bookmark",label:e.progressLabel});const b=Array.isArray(o?.genres)?o.genres.filter(Boolean).slice(0,4).map(f=>f):[];return k(h,{anchorRect:i,title:a,subtitle:o?.altTitle&&o.altTitle!==a?`Also known as: ${o.altTitle}`:void 0,loading:u,meta:t,genres:b,synopsis:o?.description?o.description:"No synopsis available.",primaryAction:{to:e.readTarget,label:"Read now",icon:"book"},secondaryAction:{to:`/manga/${e.provider}/${encodeURIComponent(e.mangaId)}`,label:"Read more"},bookmarked:l,bookmarkLabel:"Bookmark",onToggleBookmark:n,onMouseEnter:p,onMouseLeave:c,onRequestClose:m})},I=()=>M();export{B as M,I as u};
1
+ import{u as k}from"./vendor-core-DfaOB3Rn.js";import{k as T,r as d}from"./useMangaLibrary-DlU4Z9JL.js";import{d as y}from"./index-B_2ppn5P.js";import{a as h}from"./MediaCard-BXWAjpwt.js";import{u as M}from"./usePopup-DS9jMzp6.js";const B=({data:e,anchorRect:i,bookmarked:l,onToggleBookmark:n,onMouseEnter:p,onMouseLeave:c,onRequestClose:m})=>{const{data:o,isLoading:u}=T(e.provider,e.mangaId,e.rating||"safe",e.mature||!1),{titlePreference:g}=y(),s=o?.chapters.length??0,a=d({title:e.title,altTitle:o?.altTitle??e.altTitle},g),t=[],r=[o?.status,o?.type].filter(Boolean).join(" · ");r&&t.push({icon:"book",label:r}),s>0&&t.push({label:`${s} chapter${s===1?"":"s"}`}),e.progressLabel&&t.push({icon:"bookmark",label:e.progressLabel});const b=Array.isArray(o?.genres)?o.genres.filter(Boolean).slice(0,4).map(f=>f):[];return k(h,{anchorRect:i,title:a,subtitle:o?.altTitle&&o.altTitle!==a?`Also known as: ${o.altTitle}`:void 0,loading:u,meta:t,genres:b,synopsis:o?.description?o.description:"No synopsis available.",primaryAction:{to:e.readTarget,label:"Read now",icon:"book"},secondaryAction:{to:`/manga/${e.provider}/${encodeURIComponent(e.mangaId)}`,label:"Read more"},bookmarked:l,bookmarkLabel:"Bookmark",onToggleBookmark:n,onMouseEnter:p,onMouseLeave:c,onRequestClose:m})},I=()=>M();export{B as M,I as u};
@@ -1 +1 @@
1
- import{T as o}from"./vendor-core-DfaOB3Rn.js";import{b as a}from"./vendor-query-BBT5_sHx.js";import{q as i,J as n}from"./index-BP1z44Uk.js";const l=300*1e3,c=()=>{const e=a({queryKey:[i.providers],queryFn:()=>n("/api/providers"),staleTime:l,retry:1}),r=Array.isArray(e.data)?e.data:null,s=o(()=>r&&r.length>0?r.filter(t=>t.loaded):[],[r]);return{...e,options:s,isFallback:!r||r.length===0}};export{c as u};
1
+ import{T as o}from"./vendor-core-DfaOB3Rn.js";import{b as a}from"./vendor-query-BBT5_sHx.js";import{q as i,O as n}from"./index-B_2ppn5P.js";const l=300*1e3,c=()=>{const e=a({queryKey:[i.providers],queryFn:()=>n("/api/providers"),staleTime:l,retry:1}),r=Array.isArray(e.data)?e.data:null,s=o(()=>r&&r.length>0?r.filter(t=>t.loaded):[],[r]);return{...e,options:s,isFallback:!r||r.length===0}};export{c as u};
@@ -0,0 +1 @@
1
+ import{N as c,u as o,S as d}from"./vendor-core-DfaOB3Rn.js";import{I as v}from"./vendor-icons-DrybRNxP.js";import{M as T}from"./MediaCard-BXWAjpwt.js";import{T as g}from"./TvPopup-8uQGvzWG.js";import{j as m,i as f,l as i}from"./index-B_2ppn5P.js";import{b as u}from"./vendor-query-BBT5_sHx.js";const P=c(({item:e})=>{const a=e.type==="tv"||e.type==="tvSeries"||e.type==="tvMiniSeries",s=m(e.type,e.id);return o(T,{item:{id:String(e.id),title:e.title,thumbnail:e.image,typeBadge:a?"TV":"Movie",isAdult:f(e)},linkTo:s,hoverIcon:"info",showInfoButton:!0,metaRow:o(d,{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(v,{name:"star",size:10}),Number(e.vote_average).toFixed(1)]})]}),renderPopup:(n,t)=>o(g,{item:e,anchorRect:n,onMouseEnter:t.onMouseEnter,onMouseLeave:t.onMouseLeave,onRequestClose:t.close})})}),p=1e3*60*5,_=e=>{const a=i(),{query:s,type:n,genre:t,year:r,sort_by:l,page:y}=e;return u({...a.tv.search.queryOptions({q:s?.trim()||"",type:n||"multi",genre:t||"",year:r&&r!=="ALL"?r:"",sortBy:l||"popularity.desc",page:y||1}),staleTime:p,retry:1})},b=(e="all",a="week",s=1,n=!0)=>{const t=i(),r=u({...t.tv.trending.queryOptions({mediaType:e,timeWindow:a,page:s}),enabled:n,staleTime:p,retry:1});return{...r,data:r.data}};export{P as T,_ as a,b as u};
@@ -0,0 +1 @@
1
+ import{T as p}from"./vendor-core-DfaOB3Rn.js";import{b as c,u as i,a as n}from"./vendor-query-BBT5_sHx.js";import{l as a,F as o,q as m,t as y,a9 as g}from"./index-B_2ppn5P.js";import{i as u}from"./libraryInvalidation-DeUzK6TJ.js";const q=["Watching","Completed","On-Hold","Dropped","Planned"],b=(t,e)=>g(t,e),C=(t="All",e=1,r=24)=>{const s=a();return c(s.tvLibrary.list.queryOptions({status:t,page:e,limit:r}))},T=()=>{const t=a();return c({...t.tvLibrary.ids.queryOptions(),staleTime:1e3*60})},O=t=>{const e=a();return c({...e.tvLibrary.check.queryOptions({id:t||""}),enabled:!!t,staleTime:1e3*60})},k=(t=24)=>{const e=a();return c(e.tvProgress.continueWatching.queryOptions({limit:t}))},$=t=>{const e=a();return c({...e.tvProgress.getByMedia.queryOptions({mediaId:t||""}),enabled:!!t})},f=(t,e,r)=>{const s=a();return c({...s.tvProgress.latest.queryOptions({mediaId:t||"",season:e,episode:r}),enabled:!!t,staleTime:0})},h=()=>{const t=a(),e=i();return n({mutationFn:async r=>{const{silent:s,...d}=r;return y.tvLibrary.add.mutate(d)},onSuccess:(r,s)=>{s.silent||o.success("Added to TV watchlist"),e.invalidateQueries({queryKey:[m.tvLibrary]}),e.invalidateQueries(t.tvLibrary.pathFilter())},onError:r=>{o.error(`Failed to add: ${r.message}`)}})},F=()=>{const t=a(),e=i();return n(t.tvLibrary.remove.mutationOptions({onSuccess:()=>{o.success("Removed from TV watchlist"),u(e,"tv"),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to remove: ${r.message}`)}}))},R=()=>{const t=a(),e=i();return n(t.tvLibrary.setStatus.mutationOptions({onSuccess:()=>{o.success("Status updated"),u(e,"tv"),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to update status: ${r.message}`)}}))},B=()=>{const t=a(),e=i();return n(t.tvProgress.save.mutationOptions({onSuccess:()=>{u(e,"tv",!0),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())}}))},E=()=>{const t=a(),e=i();return n(t.tvProgress.remove.mutationOptions({onSuccess:()=>{o.success("Progress reset"),u(e,"tv",!0),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to reset progress: ${r.message}`)}}))},I=()=>{const t=a(),e=i();return n(t.tvLibrary.batchStatus.mutationOptions({onSuccess:r=>{o.success(`Status updated for ${r.updated??0} items`),u(e,"tv"),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to update statuses: ${r.message}`)}}))},A=()=>{const t=a(),e=i();return n(t.tvLibrary.removeMany.mutationOptions({onSuccess:r=>{const s=r.removed??0;o.success(`Removed ${s} ${s===1?"item":"items"} from TV watchlist`),u(e,"tv"),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to remove: ${r.message}`)}}))},w=()=>{const t=a(),e=i();return n(t.tvProgress.removeMany.mutationOptions({onSuccess:r=>{const s=r.removed??0;o.success(`Reset progress for ${s} ${s===1?"item":"items"}`),u(e,"tv",!0),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to reset progress: ${r.message}`)}}))},M=()=>{const t=h(),e=F(),{data:r}=T(),s=p(()=>new Set(r?.ids||[]),[r]);return{toggle:v=>{const l=b(v.mediaType,v.tmdbId);s.has(l)?e.mutate(l):t.mutate({...v,poster:v.poster||""})},bookmarkedIds:s,pending:t.isPending||e.isPending}};export{q as T,F as a,E as b,O as c,M as d,B as e,R as f,h as g,f as h,$ as i,C as j,I as k,A as l,w as m,k as u};
@@ -0,0 +1,10 @@
1
+ import{u as t,A as w,q as E,h as j,d as P,T as te,$ as ct}from"./vendor-core-DfaOB3Rn.js";import{p as M,L as qe,B as G,$ as se,l as lt,aa as Re,q as K,a6 as dt,t as ut,g as pt,a2 as ft,ab as je,ac as mt}from"./index-B_2ppn5P.js";import{I as Y}from"./vendor-icons-DrybRNxP.js";import{S as Fe,a as ht,f as He,m as yt,h as bt,d as gt,s as ee,k as _t,u as vt,n as ie}from"./PlayerProvider-Cj4nkG1Z.js";import{u as St}from"./vendor-query-BBT5_sHx.js";import{i as ce,a as wt}from"./playbackCompletion-_kwPgoZi.js";const Ct="_controls_pcbjf_1",kt="_titleContainer_pcbjf_9",xt="_scheduleInfo_pcbjf_15",Tt="_status_pcbjf_23",Lt="_nextEpisode_pcbjf_35",Nt="_watchlistBtn_pcbjf_45",Pt="_inList_pcbjf_72",Bt="_queueBtn_pcbjf_83",Et="_queueActive_pcbjf_95",At="_modeToggleBtn_pcbjf_101",It="_modeToggleActive_pcbjf_108",$t="_markWatchedBtn_pcbjf_129",Mt="_markWatchedDone_pcbjf_143",Rt="_streamPanel_pcbjf_154",jt="_desktopEpisodeActions_pcbjf_168",Ft="_sourceLoader_pcbjf_174",Dt="_episodeActions_pcbjf_187",Ot="_mobileEpisodeActions_pcbjf_201",qt="_episodeNavBtn_pcbjf_205",Ht="_primary_pcbjf_235",Wt="_secondary_pcbjf_245",zt="_episodePickerBtn_pcbjf_249",Vt="_queueCountdown_pcbjf_253",Kt="_speedBoostBadge_pcbjf_268",Ut="_videoContainer_pcbjf_299",Qt="_loadingOverlay_pcbjf_312",Gt="_loadingDots_pcbjf_326",Yt="_dot_pcbjf_331",Xt="_bounce_pcbjf_1",Jt="_bufferingOverlay_pcbjf_348",Zt="_bufferingSpinner_pcbjf_357",er="_spin_pcbjf_444",tr="_videoIframe_pcbjf_366",rr="_videoElementHidden_pcbjf_389",nr="_upscalerCanvas_pcbjf_394",sr="_upscalerActive_pcbjf_407",ar="_upscalerStatusBadge_pcbjf_411",or="_subtitleOverlay_pcbjf_426",ir="_spinner_pcbjf_444",cr="_errorOverlay_pcbjf_505",lr="_retryButton_pcbjf_515",dr="_detailsToggleBtn_pcbjf_528",ur="_descriptionSection_pcbjf_551",pr="_synopsisFlat_pcbjf_559",fr="_fullscreenActive_pcbjf_593",mr="_errorSubtext_pcbjf_636",Qn={controls:Ct,titleContainer:kt,scheduleInfo:xt,status:Tt,nextEpisode:Lt,watchlistBtn:Nt,inList:Pt,queueBtn:Bt,queueActive:Et,modeToggleBtn:At,modeToggleActive:It,markWatchedBtn:$t,markWatchedDone:Mt,streamPanel:Rt,desktopEpisodeActions:jt,sourceLoader:Ft,episodeActions:Dt,mobileEpisodeActions:Ot,episodeNavBtn:qt,primary:Ht,secondary:Wt,episodePickerBtn:zt,queueCountdown:Vt,speedBoostBadge:Kt,videoContainer:Ut,loadingOverlay:Qt,loadingDots:Gt,dot:Yt,bounce:Xt,bufferingOverlay:Jt,bufferingSpinner:Zt,spin:er,videoIframe:tr,videoElementHidden:rr,upscalerCanvas:nr,upscalerActive:sr,upscalerStatusBadge:ar,subtitleOverlay:or,spinner:ir,errorOverlay:cr,retryButton:lr,detailsToggleBtn:dr,descriptionSection:ur,synopsisFlat:pr,fullscreenActive:fr,errorSubtext:mr},hr="_playerPageLayout_13s1u_1",yr="_noSidebar_13s1u_15",br="_episodeSidebar_13s1u_19",gr="_playerMain_13s1u_32",_r="_videoPlayerWrapper_13s1u_40",vr="_playerInfoHeader_13s1u_56",Sr="_playerAnimeCard_13s1u_62",wr="_playerInfoContainer_13s1u_74",Cr="_infoColumns_13s1u_86",kr="_videoTitleSection_13s1u_114",xr="_theaterMode_13s1u_288",Gn={playerPageLayout:hr,noSidebar:yr,episodeSidebar:br,playerMain:gr,videoPlayerWrapper:_r,playerInfoHeader:vr,playerAnimeCard:Sr,playerInfoContainer:wr,infoColumns:Cr,videoTitleSection:kr,theaterMode:xr},Tr={fontSize:"subtitleFontSize",position:"subtitlePosition",bgOpacity:"subtitleBgOpacity",bgColor:"subtitleBgColor",textColor:"subtitleTextColor",edge:"subtitleEdge",bold:"subtitleBold"},U={fontSize:1.8,position:0,bgOpacity:.5,bgColor:"#000000",textColor:"#ffffff",edge:"shadow",bold:!1},fe=(e,n,s)=>Math.max(n,Math.min(s,e)),me=e=>typeof e=="string"&&/^#[0-9a-fA-F]{6}$/.test(e),le=(e,n,s,o)=>{try{const r=M.getItem(e);if(r===null)return n;const i=parseFloat(r);return Number.isFinite(i)?fe(i,s,o):n}catch{return n}};function Lr(){let e=U.edge,n=U.bgColor,s=U.textColor,o=U.bold;try{const r=M.getItem("subtitleEdge");(r==="shadow"||r==="outline"||r==="none")&&(e=r);const i=M.getItem("subtitleBgColor");me(i)&&(n=i);const c=M.getItem("subtitleTextColor");me(c)&&(s=c);const p=M.getItem("subtitleBold");p!==null&&(o=p==="true")}catch{}return{fontSize:le("subtitleFontSize",U.fontSize,.5,10),position:le("subtitlePosition",U.position,0,100),bgOpacity:le("subtitleBgOpacity",U.bgOpacity,0,1),bgColor:n,textColor:s,edge:e,bold:o}}function We(e,n){const s=`rgba(0, 0, 0, ${fe(n,0,1)})`;if(!me(e))return s;const o=parseInt(e.slice(1,3),16),r=parseInt(e.slice(3,5),16),i=parseInt(e.slice(5,7),16);return`rgba(${o}, ${r}, ${i}, ${fe(n,0,1)})`}function ze(e,n){return e==="none"?n<=0?"0 1px 3px rgba(0, 0, 0, 0.9)":"none":e==="outline"?["-1px 0 0 black","1px 0 0 black","0 -1px 0 black","0 1px 0 black","-1px -1px 0 black","1px -1px 0 black","-1px 1px 0 black","1px 1px 0 black","0 0 6px rgba(0, 0, 0, 0.9)"].join(", "):"0 0 4px black, 0 1px 2px rgba(0, 0, 0, 0.8)"}function Yn(e){return`
2
+ video::cue {
3
+ font-size: ${e.fontSize}rem !important;
4
+ color: ${e.textColor} !important;
5
+ background-color: ${We(e.bgColor,e.bgOpacity)} !important;
6
+ font-weight: ${e.bold?"bold":"normal"} !important;
7
+ text-shadow: ${ze(e.edge,e.bgOpacity)} !important;
8
+ }
9
+ `}function Xn(e){return[`font-size: ${e.fontSize}rem`,`color: ${e.textColor}`,`background-color: ${We(e.bgColor,e.bgOpacity)}`,`font-weight: ${e.bold?"700":"400"}`,`text-shadow: ${ze(e.edge,e.bgOpacity)}`,"padding: 0.2em 0.5em","border-radius: 0.25em","text-align: center","position: absolute","left: 50%","transform: translateX(-50%)","max-width: 92%","white-space: pre-wrap","overflow-wrap: break-word","line-height: 1.4"].join(`;
10
+ `)+";"}const Nr=new Set(["b","i","u","strong","em"]);function Jn(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/&lt;(\/?)([a-zA-Z]+)&gt;/g,(s,o,r)=>Nr.has(r.toLowerCase())?`<${o}${r.toLowerCase()}>`:s)}function Zn(e){return e.replace(/<[^>]*>/g,"")}const es=["#ffffff","#ffff00","#7CFC00","#00e5ff","#ff9ff3","#ffa502"],ts=["#000000","#1e272e","#2f3542","#3d0c02","#0c3d2e","#ffffff"];function rs(e,n){const s=Number.isFinite(e)?e*16:U.fontSize*16;return!Number.isFinite(n)||n<=0?s/16:Math.min(s,Math.max(13,n*.07))/16}function ns(e){const n=Math.abs(e/1e3).toFixed(1);return e>0?`+${n}s`:e<0?`-${n}s`:"0.0s"}function ss(e,n){const s=e.clientWidth||0,o=e.clientHeight||0,r=e.videoWidth>0&&e.videoHeight>0?e.videoWidth/e.videoHeight:0;let i=o;r>0&&s>0&&o>0&&(i=s/o>r?o:s/r);const c=Math.max(0,(o-i)/2),p=Math.max(0,Math.min(100,Number(n)||0))/100*i;return c+p}const as=({isOpen:e,onClose:n,title:s,heading:o,message:r,children:i})=>t(qe,{isOpen:e,onClose:n,title:s,width:"sm",children:t("div",{style:{padding:"1rem",textAlign:"center"},children:[t(Y,{name:"check-circle",size:48,style:{color:"var(--accent-lighter)",marginBottom:"0.5rem"}}),t("p",{style:{fontSize:"1.1rem",fontWeight:600},children:o}),t("p",{style:{color:"var(--text-secondary)"},children:r}),i&&t("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center",flexWrap:"wrap"},children:i})]})}),os=({isOpen:e,onClose:n,title:s,message:o,resumeLabel:r="Resume",restartLabel:i="Start Over",onResume:c,onRestart:p})=>t(qe,{isOpen:e,onClose:n,title:s,width:"sm",children:t("div",{style:{padding:"1rem",textAlign:"center"},children:[t("p",{children:o}),t("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center"},children:[t(G,{variant:"secondary",onClick:p,children:i}),t(G,{onClick:c,children:r})]})]})}),Pr="_centerControls_bxt8c_1",Br="_centerSkipBtn_bxt8c_15",Er="_centerPlayPause_bxt8c_37",ae={centerControls:Pr,centerSkipBtn:Br,centerPlayPause:Er},is=()=>t("div",{className:ae.centerControls,onClick:e=>e.stopPropagation(),children:[t(Fe,{seconds:-10,className:ae.centerSkipBtn}),t(ht,{className:ae.centerPlayPause,"data-speed-boost-ignore":"true"}),t(Fe,{seconds:10,className:ae.centerSkipBtn})]}),cs=({visible:e,title:n,episode:s,onBack:o,classes:r})=>t("div",{className:`${r.overlay} ${e?"":r.hidden} `,"data-speed-boost-ignore":"true",style:{pointerEvents:"none",background:"none"},children:t("div",{className:r.top,onClick:i=>i.stopPropagation(),children:[t("button",{className:r.backBtn,onClick:i=>{i.stopPropagation(),o()},title:"Back","aria-label":"Back",children:t(Y,{name:"chevron-left"})}),t("div",{className:r.titleInfo,children:[t("span",{className:r.title,children:n}),s&&t("span",{className:r.episode,children:s})]})]})});function Ar(e){return e instanceof Element&&!!e.closest('button, input, select, textarea, a, [role="button"], [role="slider"], [data-player-ui="true"]')}function ls({engine:e,topBar:n,centerControls:s,bottomBar:o,settingsPanel:r,overlays:i,isInteracting:c=!1,nativeControls:p=!1,chromeDisabled:a=!1,className:u,onStageClick:_,children:x}){const g=He(e),A=yt(),l=w(void 0),d=w(void 0),C=w(0),f=w(c);f.current=c;const h=E(()=>{clearTimeout(l.current),l.current=void 0},[]),y=E(()=>{h();const N=e.getState();!N.isPlaying||N.isScrubbing||f.current||p||(l.current=setTimeout(()=>{const b=e.getState();f.current||b.isScrubbing||!b.isPlaying||e.setShowControls(!1)},A?5e3:3e3))},[e,A,p,h]),B=E(()=>{e.setShowControls(!0),y()},[e,y]);bt(e,B,!p&&!a),j(()=>(c||g.isScrubbing||!g.isPlaying?(e.setShowControls(!0),h()):y(),h),[e,c,g.isPlaying,g.isScrubbing,g.showControls,h,y]),j(()=>()=>{clearTimeout(d.current)},[]);const m=N=>{if(Ar(N.target)||p||a)return;_?.();const b=Date.now();if(b-C.current<280){clearTimeout(d.current),d.current=void 0,C.current=0,e.toggleFullscreen();return}C.current=b,clearTimeout(d.current),d.current=setTimeout(()=>{d.current=void 0,e.setShowControls(!e.getState().showControls),y()},280)},T=g.showControls||g.isScrubbing||c||!g.isPlaying;return t(gt,{engine:e,children:t("div",{ref:e.containerRef,"data-player-root":"true",className:`${ee.shell} ${g.isFullscreen?ee.shellFullscreen:""} ${u??""}`,style:{cursor:!T&&g.isFullscreen?"none":"default"},onContextMenu:N=>N.preventDefault(),onPointerMove:N=>{N.pointerType==="mouse"&&B()},onFocusIn:B,onMouseLeave:()=>{window.matchMedia?.("(hover: hover) and (pointer: fine)").matches&&e.getState().isPlaying&&!f.current&&e.setShowControls(!1)},children:[t("div",{className:ee.stage,onClick:m,children:x}),i,(g.error||g.playBlocked)&&t("div",{className:ee.engineStatus,"data-player-ui":"true",children:t(_t,{})}),!a&&!p&&t("div",{className:ee.uiLayer,children:[t("div",{"data-player-ui":"true",children:n}),T&&s&&t("div",{"data-player-ui":"true",children:s}),t("div",{"data-player-ui":"true",children:o}),r&&t("div",{"data-player-ui":"true",children:r})]})]})})}const Ir=e=>(e.language??e.lang??"").toLowerCase(),$r=e=>(e.label??"").toLowerCase(),Mr=e=>`${e.language??e.lang??""}|||${e.label??""}`,Rr=e=>Ir(e).startsWith("en")||$r(e).includes("english");function ds(e,n){if(e.length===0||n?.enabled===!1)return-1;const s=n?.lastKey??null;if(s){const r=e.findIndex(i=>Mr(i)===s);if(r>=0)return r}const o=e.findIndex(Rr);return o>=0?o:0}const jr="_statusArea_1xccu_1",Fr="_toggleBtn_1xccu_20",Dr="_shortcuts_1xccu_46",Or="_shortcutGroup_1xccu_56",qr="_shortcut_1xccu_46",Hr="_key_1xccu_70",Wr="_label_1xccu_91",k={statusArea:jr,toggleBtn:Fr,shortcuts:Dr,shortcutGroup:Or,shortcut:qr,key:Hr,label:Wr},us=({showTheater:e=!0})=>{const[n,s]=P(!1);return t("div",{className:k.statusArea,children:[t("button",{type:"button",className:k.toggleBtn,onClick:()=>s(o=>!o),"aria-expanded":n,"aria-controls":"player-shortcuts",children:[t(Y,{name:"keyboard",size:14}),t("span",{children:"Keyboard Shortcuts"}),n?t(Y,{name:"chevron-up",size:12}):t(Y,{name:"chevron-down",size:12})]}),n&&t("div",{id:"player-shortcuts",className:k.shortcuts,children:[t("div",{className:k.shortcutGroup,children:[t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"↑"}),t("span",{className:k.key,children:"↓"}),t("span",{className:k.label,children:"Volume"})]}),t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"←"}),t("span",{className:k.key,children:"→"}),t("span",{className:k.label,children:"Seek"})]})]}),t("div",{className:k.shortcutGroup,children:[t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"Space"}),t("span",{className:k.label,children:"Play/Pause"})]}),t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"F"}),t("span",{className:k.label,children:"Fullscreen"})]}),t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"M"}),t("span",{className:k.label,children:"Mute"})]}),e&&t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"T"}),t("span",{className:k.label,children:"Theater"})]}),t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"N"}),t("span",{className:k.label,children:"Next"})]})]})]})]})},zr="_episodeListContainer_9tyin_1",Vr="_drawerContainer_9tyin_9",Kr="_episodeListHeader_9tyin_14",Ur="_drawerHeader_9tyin_20",Qr="_episodeListTitle_9tyin_29",Gr="_rangeSelector_9tyin_41",Yr="_rangeButton_9tyin_47",Xr="_active_9tyin_70",Jr="_episodeList_9tyin_1",Zr="_drawerList_9tyin_89",en="_episodeItem_9tyin_118",tn="_watched_9tyin_145",rn="_episodeThumb_9tyin_167",nn="_episodeText_9tyin_176",sn="_episodeLabel_9tyin_184",an="_episodeSub_9tyin_189",L={episodeListContainer:zr,drawerContainer:Vr,episodeListHeader:Kr,drawerHeader:Ur,episodeListTitle:Qr,rangeSelector:Gr,rangeButton:Yr,active:Xr,episodeList:Jr,drawerList:Zr,episodeItem:en,watched:tn,episodeThumb:rn,episodeText:nn,episodeLabel:sn,episodeSub:an},on=({episodes:e,currentEpisode:n,watchedEpisodes:s=[],onEpisodeClick:o,variant:r="sidebar",title:i="Episodes",header:c})=>{const[p,a]=P(0),u=w(null),_=te(()=>e.map(l=>typeof l=="string"?{id:l,label:`Episode ${l}`}:l),[e]),x=te(()=>new Set(s),[s]);j(()=>{const l=u.current;if(!l)return;let d=l.parentElement;for(;d;){const h=window.getComputedStyle(d);if((h.overflowY==="auto"||h.overflowY==="scroll")&&d.scrollHeight>d.clientHeight)break;d=d.parentElement}if(!d)return;const C=d.getBoundingClientRect(),f=l.getBoundingClientRect();d.scrollTop+=f.top+f.height/2-(C.top+d.clientHeight/2)},[n,p]);const g=te(()=>{if(_.length<=100)return[];const l=[];for(let d=0;d<_.length;d+=100){const C=d+1,f=Math.min(d+100,_.length);l.push(`${C}-${f}`)}return l},[_]),A=te(()=>{if(g.length===0)return _;const l=g[p];if(!l)return _;const[d,C]=l.split("-"),f=parseInt(d,10),h=parseInt(C,10);return _.slice(f-1,h)},[_,g,p]);return t("div",{className:`${L.episodeListContainer} ${r==="drawer"?L.drawerContainer:""}`,children:[t("div",{className:`${L.episodeListHeader} ${r==="drawer"?L.drawerHeader:""}`,children:[c,t("h3",{className:L.episodeListTitle,children:i}),g.length>0&&t("div",{className:L.rangeSelector,children:g.map((l,d)=>t("button",{className:`${L.rangeButton} ${p===d?L.active:""}`,onClick:()=>a(d),children:l},l))})]}),t("div",{className:`${L.episodeList} ${r==="drawer"?L.drawerList:""}`,children:A.map(l=>{const d=l.id===n,C=x.has(l.id)||l.watched===!0;return t("div",{ref:d?u:void 0,className:`${L.episodeItem} ${C?L.watched:""} ${d?L.active:""}`,onClick:()=>o(l.id),children:[l.thumbnail&&t("img",{src:l.thumbnail,alt:"",loading:"lazy",decoding:"async",className:L.episodeThumb}),t("span",{className:L.episodeText,children:[t("span",{className:L.episodeLabel,children:l.label??`Episode ${l.id}`}),l.sublabel&&t("span",{className:L.episodeSub,children:l.sublabel})]})]},l.id)})})]})},ps=({variant:e="sidebar",count:n=12})=>t("div",{className:`${L.episodeListContainer} ${e==="drawer"?L.drawerContainer:""}`,children:[t("div",{className:`${L.episodeListHeader} ${e==="drawer"?L.drawerHeader:""}`,children:[t("h3",{className:L.episodeListTitle,children:"Episodes"}),t("div",{className:L.rangeSelector,children:[t(se,{width:"60px",height:"28px",variant:"rectangular"}),t(se,{width:"60px",height:"28px",variant:"rectangular"}),t(se,{width:"60px",height:"28px",variant:"rectangular"})]})]}),t("div",{className:`${L.episodeList} ${e==="drawer"?L.drawerList:""}`,children:Array.from({length:n}).map((s,o)=>t("div",{className:L.episodeItem,style:{border:"none",background:"transparent"},children:t(se,{width:"120px",height:"1.2rem",variant:"text"})},o))})]}),cn="_shell_cys6s_1",ln="_overlay_cys6s_10",dn="_drawer_cys6s_21",un="_handle_cys6s_56",pn="_header_cys6s_64",fn="_headerCopy_cys6s_73",mn="_kicker_cys6s_79",hn="_title_cys6s_87",yn="_closeBtn_cys6s_94",bn="_body_cys6s_116",z={shell:cn,overlay:ln,drawer:dn,handle:un,header:pn,headerCopy:fn,kicker:mn,title:hn,closeBtn:yn,body:bn};function fs({isOpen:e,onClose:n,episodes:s,currentEpisode:o,watchedEpisodes:r=[],onEpisodeClick:i,title:c,header:p}){return j(()=>{if(!e)return;const a=_=>{_.key==="Escape"&&n()},u=document.body.style.overflow;return document.body.style.overflow="hidden",document.addEventListener("keydown",a),()=>{document.body.style.overflow=u,document.removeEventListener("keydown",a)}},[e,n]),e?ct(t("div",{className:z.shell,role:"dialog","aria-modal":"true","aria-label":"Episode picker",children:[t("button",{className:z.overlay,type:"button",onClick:n,"aria-label":"Close episodes"}),t("aside",{className:z.drawer,children:[t("div",{className:z.handle}),t("div",{className:z.header,children:[t("div",{className:z.headerCopy,children:[t("span",{className:z.kicker,children:"Episode picker"}),t("h3",{className:z.title,children:"Choose an episode"})]}),t("button",{className:z.closeBtn,type:"button",onClick:n,"aria-label":"Close",children:t(Y,{name:"times"})})]}),t("div",{className:z.body,children:t(on,{episodes:s,currentEpisode:o,watchedEpisodes:r,onEpisodeClick:i,variant:"drawer",title:c,header:p})})]})]}),document.body):null}const gn="_sourceSelectionContainer_1am19_1",_n="_providerSelectContainer_1am19_14",vn="_providerSelect_1am19_14",Sn="_sourceSelect_1am19_1",wn="_sourceButtons_1am19_70",Cn="_sourceButton_1am19_70",kn="_active_1am19_95",ms={sourceSelectionContainer:gn,providerSelectContainer:_n,providerSelect:vn,sourceSelect:Sn,sourceButtons:wn,sourceButton:Cn,active:kn},hs=({skipIntervals:e,showId:n,episodeNumber:s,episodeCount:o,sourceType:r,showMeta:i})=>{const c=St(),p=lt(),{engine:a,mediaRef:u}=vt({volumeKey:"playerVolume",mutedKey:"playerMuted"}),{isPlaying:_,isMuted:x,volume:g,duration:A,isScrubbing:l,isBuffering:d,isFullscreen:C,isSpeedBoostActive:f,showControls:h,playbackLocked:y}=He(a),B=a.containerRef,m=w(null),T=w(0),N=w(Math.random().toString(36).substring(2)),b=a.setShowControls,[$,O]=P(M.getItem("autoSkipEnabled")==="true"),[V,I]=P(null),[H]=P(Lr),[Ve,ye]=P(H.fontSize),[Ke,be]=P(H.position),[Ue,ge]=P(H.bgOpacity),[Qe,_e]=P(H.bgColor),[Ge,ve]=P(H.textColor),[Ye,Se]=P(H.edge),[Xe,we]=P(H.bold),Ce=E((v,R)=>{if({fontSize:S=>typeof S!="number"?!1:(ye(S),!0),position:S=>typeof S!="number"?!1:(be(S),!0),bgOpacity:S=>typeof S!="number"?!1:(ge(S),!0),bgColor:S=>typeof S!="string"?!1:(_e(S),!0),textColor:S=>typeof S!="string"?!1:(ve(S),!0),edge:S=>S!=="shadow"&&S!=="outline"&&S!=="none"?!1:(Se(S),!0),bold:S=>typeof S!="boolean"?!1:(we(S),!0)}[v](R))try{M.setItem(Tr[v],String(R))}catch{}},[]),[Je,Ze]=P([]),[et,tt]=P(null),[rt,nt]=P(!1),[st,at]=P(!1),[ot,ke]=P(()=>{try{return M.getItem("playerUseNativeControls")==="true"}catch{return!1}}),X=w(!1),re=w(-1),ne=E(()=>{const v=u.current;return!n||!s||!i?.name?null:{showId:n,episodeNumber:s,episodeCount:o,currentTime:a.getTimeline().currentTime,duration:a.getState().duration,showName:i.name,showThumbnail:i.thumbnail,nativeName:i.names?.native,englishName:i.names?.english,genres:Array.isArray(i.genres)?i.genres.map(R=>typeof R=="string"?R:R?.name).filter(Boolean):void 0,popularityScore:i.score,type:i.type,isPlaying:v?!v.paused:r==="iframe",sessionId:N.current,isAdult:i.isAdult}},[a,u,n,s,o,i,r]),F=E((v=!1,R=!1)=>{if(X.current)return!1;const q=ne();if(!q)return!1;const S=u.current;if(!S&&!v&&r!=="iframe"||r!=="iframe"&&q.duration<=0)return!1;const W=a.getTimeline().currentTime;if(!R){if(W===0)return!1;const Z=S?Math.abs(W-re.current):0;if(!v&&S&&W!==S.duration&&Z<5)return!1}return q.currentTime=W,re.current=W,v?(async()=>{try{await Re("progress.updateProgress",q),c.invalidateQueries({queryKey:[K.playerData,n]}),c.invalidateQueries({queryKey:[K.videoSources,n,s]}),c.invalidateQueries({queryKey:[K.continueWatching]}),c.invalidateQueries({queryKey:[K.thisWeekSchedule]}),c.invalidateQueries(p.continueWatching.pathFilter())}catch(Z){console.error("Failed to update progress:",Z)}})():Re("progress.updateProgress",q).then(()=>{ce(q.currentTime,q.duration)&&c.invalidateQueries({queryKey:[K.playerData,n]})}).catch(Z=>console.error("Failed to update progress:",Z)),!0},[a,ne,r,c,n,s,p.continueWatching,u]);j(()=>{const v=()=>{X.current||F(!0)};window.addEventListener("beforeunload",v),window.addEventListener("pagehide",v);const R=()=>{document.visibilityState==="hidden"&&v()};document.addEventListener("visibilitychange",R);const q=m;return()=>{window.removeEventListener("beforeunload",v),window.removeEventListener("pagehide",v),document.removeEventListener("visibilitychange",R),X.current||F(!0),q.current&&clearTimeout(q.current)}},[F]);const xe=E(()=>a.setShowControls(!0),[a]),Te=a.toggleFullscreen,Le=E(()=>{a.togglePlay(),b(!0)},[a,b]),Ne=E(()=>{a.toggleMute(),b(!0)},[a,b]),Pe=E(v=>{a.seekRelative(v),m.current&&clearTimeout(m.current),m.current=setTimeout(()=>F(!1,!0),1500),b(!0)},[a,F,b]),Be=E(()=>{X.current=!1,F(!1,!0)},[F]),Ee=E(()=>{b(!0),F(!1,!0)},[F,b]);j(()=>{X.current=!1,re.current=-1,T.current=0,N.current=Math.random().toString(36).substring(2),a.reset()},[a,n,s]);const Ae=a.reset;j(()=>{const v=N.current;return()=>{dt(v)}},[a,n,s]),j(()=>{if(r!=="iframe")return;F(!1,!0);const v=setInterval(()=>{F(!1,!0)},6e4);return()=>clearInterval(v)},[r,F]);const Ie=E(()=>{const v=u.current;if(!v)return;const R=v.currentTime||0,q=Date.now(),S=ce(R,v.duration)&&!ce(re.current,v.duration);(S||q-T.current>6e4)&&F(!1,S)&&(T.current=q);const W=e.find(J=>R>=J.start_time&&R<J.end_time)||null;I(J=>J?.skip_id!==W?.skip_id?W:J),$&&W&&!v.paused&&!a.getState().playbackLocked&&(a.seek(W.end_time),I(null))},[u,e,$,F,a]),$e=E(()=>{const v=ne();v&&(v.currentTime=v.duration,ut.progress.updateProgress.mutate(v).then(()=>{c.invalidateQueries({queryKey:[K.playerData,n]}),c.invalidateQueries({queryKey:[K.videoSources,n,s]}),c.invalidateQueries({queryKey:[K.continueWatching]})}).catch(R=>console.error("Failed to send final progress:",R)))},[ne,c,n,s]),Me=E(()=>{X.current=!0,$e()},[$e]),it=te(()=>({togglePlay:Le,seek:Pe,toggleMute:Ne,toggleFullscreen:Te,onPlay:Be,onPause:Ee,formatTime:pt,onTimeUpdate:Ie,onEnded:Me,setShowControls:b,setIsAutoSkipEnabled:O,setCurrentSkipInterval:I,setSubtitleFontSize:ye,setSubtitlePosition:be,setSubtitleBgOpacity:ge,setSubtitleBgColor:_e,setSubtitleTextColor:ve,setSubtitleEdge:Se,setSubtitleBold:we,setSubtitleStyle:Ce,setAvailableSubtitles:Ze,setActiveSubtitleTrack:tt,setShowSettings:nt,setShowVolumeSlider:at,flashControls:xe,sendProgressUpdate:F,setUseNativeControls:ke,resetMediaState:Ae}),[Le,Pe,Ne,Te,Be,Ee,Ie,Me,F,ke,Ae,xe,Ce,b]);return{engine:a,refs:{videoRef:u,playerContainerRef:B},state:{playbackLocked:y,isPlaying:_,isMuted:x,volume:g,isFullscreen:C,duration:A,showControls:h,isScrubbing:l,isAutoSkipEnabled:$,currentSkipInterval:V,subtitleFontSize:Ve,subtitlePosition:Ke,subtitleBgOpacity:Ue,subtitleBgColor:Qe,subtitleTextColor:Ge,subtitleEdge:Ye,subtitleBold:Xe,availableSubtitles:Je,activeSubtitleTrack:et,showSettings:rt,showVolumeSlider:st,isBuffering:d,isSpeedBoostActive:f,useNativeControls:ot},actions:it}};function xn(){try{return typeof navigator<"u"&&/android/i.test(navigator.userAgent)}catch{return!1}}function ys(e,n){const{refs:s,actions:o}=e,r=w(n);r.current=n;const i=w(!1),c=w(!1),p=a=>{try{if(a)return a.matches}catch{}try{return window.innerWidth>window.innerHeight}catch{return!1}};j(()=>{if(!xn())return;let a=null;const u=()=>{const _=s.playerContainerRef.current;if(p(a)){if(!r.current||!_||ie(s.videoRef.current)||c.current)return;i.current=!0,o.toggleFullscreen()}else c.current=!1,i.current&&(i.current=!1,ie(s.videoRef.current)&&o.toggleFullscreen())};try{a=window.matchMedia("(orientation: landscape)"),a.addEventListener?a.addEventListener("change",u):a.addListener(u)}catch{}return u(),()=>{try{a&&(a.removeEventListener?a.removeEventListener("change",u):a.removeListener(u))}catch{}}},[o,s.playerContainerRef,s.videoRef,n]),j(()=>{const a=()=>{if(!ie(s.videoRef.current)){i.current=!1;try{window.matchMedia("(orientation: landscape)").matches&&(c.current=!0)}catch{c.current=!0}}};return document.addEventListener("fullscreenchange",a),document.addEventListener("webkitfullscreenchange",a),()=>{document.removeEventListener("fullscreenchange",a),document.removeEventListener("webkitfullscreenchange",a)}},[s.videoRef])}const Tn=e=>Math.max(8,Math.min(40,Math.ceil(e/16.7)+4));function bs({videoRef:e,canvasRef:n,delayMs:s,enabled:o}){const r=w(s);r.current=s;const i=w([]),c=w(-1),p=w(-1),a=w(!1),u=w(0),_=w(null);j(()=>{const x=f=>{if(f)try{f.close()}catch{}},g=()=>{for(const f of i.current)x(f.bitmap);i.current=[]};if(!o){g(),c.current=-1,p.current=-1,a.current=!1,u.current=0;return}let A=!1;const l=()=>{_.current!==null&&(cancelAnimationFrame(_.current),_.current=null)},d=()=>{A||(l(),_.current=requestAnimationFrame(()=>{C()}))};async function C(){if(A)return;const f=e.current,h=n.current;if(!f||!h||f.videoWidth===0){d();return}if(f.paused||f.ended||document.hidden||f.readyState<HTMLMediaElement.HAVE_CURRENT_DATA){d();return}const y=f.getVideoPlaybackQuality().totalVideoFrames;if(y===c.current){d();return}(f.seeking||p.current>=0&&Math.abs(f.currentTime-p.current)>.5)&&(g(),a.current=!1,u.current=0,c.current=-1),p.current=f.currentTime,(h.width!==f.videoWidth||h.height!==f.videoHeight)&&(h.width=f.videoWidth,h.height=f.videoHeight);const B=Math.max(0,r.current||0);B>u.current&&(a.current=!1);try{const m=await createImageBitmap(f);if(A){x(m);return}c.current=y;const T=performance.now(),N=h.getContext("2d"),b=I=>{N&&N.drawImage(I,0,0,h.width,h.height)};if(B<=0){g(),a.current=!1,u.current=0,b(m),x(m),d();return}const $=i.current;$.push({bitmap:m,capture:T});const O=Tn(B);for(;$.length>O;)x($.shift()?.bitmap);let V=-1;for(let I=$.length-1;I>=0;I--)if(T-$[I].capture>=B){V=I;break}if(V!==-1){for(let H=0;H<V;H++)x($.shift()?.bitmap);const I=$.shift();I?(b(I.bitmap),x(I.bitmap),a.current=!0,u.current=B):b(m)}else if(!a.current)b(m);else{const I=$.shift();I?(b(I.bitmap),x(I.bitmap)):b(m)}}catch{}d()}return d(),()=>{A=!0,l();for(const f of i.current)try{f.bitmap.close()}catch{}i.current=[]}},[o,e,n])}const De=(e,n)=>{try{M.setItem("playerVideoDelayMs",String(e)),M.setItem("playerVideoDelayEnabled",String(n))}catch{}},Oe=e=>{try{M.setItem("playerVideoDelayEnabled",String(e))}catch{}};function gs(e,n){const[s,o]=P(()=>{try{const y=Number(M.getItem("playerVideoDelayMs"));if(Number.isFinite(y)&&y>=0&&y<=500)return Math.round(y)}catch{}return 180}),[r,i]=P(()=>{try{return M.getItem("playerVideoDelayEnabled")==="true"}catch{return!1}}),[c,p]=P(!1),[a,u]=P(!1),_=w(null),x=w(null),g=y=>{const B=Math.max(0,Math.min(500,Math.round(y)));o(B);try{M.setItem("playerVideoDelayMs",String(B))}catch{}},A=y=>{i(y),Oe(y)},l=E(()=>{u(!1),p(!1)},[]);return{videoDelayMs:s,videoDelayEnabled:r,setDelayEnabled:A,handleVideoDelayChange:g,isCalibrating:c,testClipActive:a,stopCalibration:l,openAvSyncCalibrator:()=>{_.current={enabled:r,ms:s},i(!0),Oe(!0),n?.(),p(!0)},cancelAvSyncCalibrator:()=>{const y=_.current;_.current=null,y&&(o(y.ms),i(y.enabled),De(y.ms,y.enabled)),u(!1),p(!1)},applyAvSyncCalibrator:()=>{_.current=null,i(!0),De(s,!0),u(!1),p(!1)},toggleTestClip:()=>{if(a){u(!1);return}const y=e.current;y&&!isNaN(y.currentTime)&&(x.current=y.currentTime),u(!0)},calibReturnRef:x,effectiveVideoDelayMs:r?s:0}}function _s(){const[e,n]=P(()=>{try{return M.getItem("playerTheaterMode")==="true"}catch{return!1}});j(()=>{try{e?document.body.classList.add("theater-mode"):document.body.classList.remove("theater-mode")}catch(r){console.error(r)}return()=>{try{document.body.classList.remove("theater-mode")}catch(r){console.error(r)}}},[e]);const s=E(()=>{n(r=>{const i=!r;try{M.setItem("playerTheaterMode",i.toString())}catch{}return i})},[]),o=E(r=>{if(e&&r.target===r.currentTarget){n(!1);try{M.setItem("playerTheaterMode","false")}catch{}}},[e]);return{isTheaterMode:e,toggleTheaterMode:s,handleLayoutClick:o}}const Q={enabled:!0,blur:60,saturation:150,brightness:70,opacity:60};function Ln(){try{const e=M.getItem("playerAmbientLight");if(!e)return Q;const n=JSON.parse(e),s=(o,r,i,c)=>{const p=Number(o);return Number.isFinite(p)?Math.max(i,Math.min(c,p)):r};return{enabled:n.enabled??Q.enabled,blur:s(n.blur,Q.blur,0,120),saturation:s(n.saturation,Q.saturation,0,200),brightness:s(n.brightness,Q.brightness,20,120),opacity:s(n.opacity,Q.opacity,10,100)}}catch{return Q}}function vs(){const[e,n]=P(Ln),s=E(o=>{n(r=>{const i={...r,...o};try{M.setItem("playerAmbientLight",JSON.stringify(i))}catch{}return i})},[]);return{settings:e,update:s}}const Nn="_theaterAmbient_x9t0o_1",Pn={theaterAmbient:Nn},de=160,ue=90,Bn=120,Ss=({videoRef:e,active:n,settings:s,className:o})=>{const r=w(null);return j(()=>{if(!n)return;const i=r.current,c=e.current;if(!i||!c)return;const p=i.getContext("2d",{alpha:!1});if(!p)return;let a=0,u=0,_=!1;const x=()=>{if(!(c.readyState<2||!c.videoWidth))try{const d=c.videoWidth,C=c.videoHeight,f=de/ue,h=d/C;let y=d,B=C,m=0,T=0;h>f?(y=C*f,m=(d-y)/2):(B=d/f,T=(C-B)/2),p.drawImage(c,m,T,y,B,0,0,de,ue)}catch{}},g=d=>{_||c.paused||(a=requestAnimationFrame(g),!(d-u<Bn)&&(u=d,x()))},A=()=>{_||(cancelAnimationFrame(a),u=0,a=requestAnimationFrame(g))},l=()=>cancelAnimationFrame(a);return c.addEventListener("play",A),c.addEventListener("pause",l),c.addEventListener("seeked",x),c.addEventListener("loadeddata",x),a=requestAnimationFrame(g),()=>{_=!0,cancelAnimationFrame(a),c.removeEventListener("play",A),c.removeEventListener("pause",l),c.removeEventListener("seeked",x),c.removeEventListener("loadeddata",x)}},[n,e]),n?t("canvas",{ref:r,width:de,height:ue,"aria-hidden":"true",className:o??Pn.theaterAmbient,style:{filter:`blur(${s.blur}px) saturate(${s.saturation}%) brightness(${s.brightness}%)`,opacity:s.opacity/100}}):null},En="_row_1fq55_1",An="_rowHeader_1fq55_9",In="_rowLabel_1fq55_17",$n="_rowValue_1fq55_28",Mn="_slider_1fq55_36",Rn="_swatches_1fq55_99",jn="_swatch_1fq55_99",Fn="_swatchPicked_1fq55_114",Dn="_colorInput_1fq55_120",On="_segmented_1fq55_131",D={row:En,rowHeader:An,rowLabel:In,rowValue:$n,slider:Mn,swatches:Rn,swatch:jn,swatchPicked:Fn,colorInput:Dn,segmented:On},qn=({label:e,display:n,min:s,max:o,step:r,value:i,percent:c,onChange:p,onCommit:a})=>t("div",{className:D.row,children:[t("div",{className:D.rowHeader,children:[t("span",{className:D.rowLabel,children:e}),t("span",{className:D.rowValue,children:n})]}),t("input",{type:"range",className:D.slider,min:s,max:o,step:r,value:i,"aria-label":e,"data-speed-boost-ignore":"true",onInput:u=>p(Number(u.target.value)),onMouseDown:u=>u.stopPropagation(),onPointerDown:u=>u.stopPropagation(),onTouchStart:u=>u.stopPropagation(),onPointerUp:a,onPointerCancel:a,onTouchEnd:a,onKeyUp:a,onBlur:a,style:{"--slider-percent":`${c}%`}})]}),ws=({label:e,colors:n,value:s,onChange:o})=>t("div",{className:D.row,children:[t("div",{className:D.rowHeader,children:t("span",{className:D.rowLabel,children:e})}),t("div",{className:D.swatches,children:[n.map(r=>t("button",{type:"button","aria-label":`${e} ${r}`,"aria-pressed":s.toLowerCase()===r.toLowerCase(),onClick:()=>o(r),className:`${D.swatch} ${s.toLowerCase()===r.toLowerCase()?D.swatchPicked:""}`,style:{backgroundColor:r}},r)),t("input",{type:"color","aria-label":`Custom ${e.toLowerCase()}`,className:D.colorInput,value:s,"data-speed-boost-ignore":"true",onInput:r=>o(r.target.value),onMouseDown:r=>r.stopPropagation(),onPointerDown:r=>r.stopPropagation(),onTouchStart:r=>r.stopPropagation()})]})]});function Cs({label:e,options:n,value:s,onChange:o}){return t("div",{className:D.row,children:[t("div",{className:D.rowHeader,children:t("span",{className:D.rowLabel,children:e})}),t("div",{className:D.segmented,role:"group","aria-label":e,children:n.map(r=>t("button",{type:"button","aria-pressed":s===r,onClick:()=>o(r),children:[t("span",{children:r}),s===r&&t(Y,{name:"check",size:10})]},r))})]})}const oe=10,he=500,pe=e=>Math.max(0,Math.min(he,Math.round(e))),ks=({isOpen:e,ms:n,onChange:s,onApply:o,onClose:r,testClipActive:i,onTestClip:c})=>e?t("div",{role:"dialog","aria-label":"Calibrate audio video sync","data-speed-boost-ignore":"true",onClick:p=>p.stopPropagation(),style:{position:"absolute",right:8,bottom:112,width:"min(260px, calc(100% - 16px))",maxHeight:"calc(100% - 124px)",overflowY:"auto",overflowX:"hidden",zIndex:60,display:"flex",flexDirection:"column",alignItems:"center",gap:8,padding:12,borderRadius:"var(--radius-lg)",border:"1px solid var(--glass-border)",background:"rgba(18, 18, 22, 0.95)",boxShadow:"var(--glass-shadow)",backdropFilter:"blur(14px)",WebkitBackdropFilter:"blur(14px)",boxSizing:"border-box"},children:[t("div",{style:{fontSize:"0.8rem",fontWeight:800,color:"var(--text-primary)"},children:"A/V sync"}),t("div",{children:t(G,{size:"sm",variant:"secondary",onClick:c,children:i?"Back to video":"Preview test clip"})}),t("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:6,flexWrap:"wrap"},children:[t(G,{size:"sm",onClick:()=>s(pe(n-oe)),"aria-label":"Decrease delay by 10 milliseconds",children:["− ",oe,"ms"]}),t("div",{style:{fontSize:"1.1rem",fontWeight:800,minWidth:64,textAlign:"center"},children:[n,"ms"]}),t(G,{size:"sm",onClick:()=>s(pe(n+oe)),"aria-label":"Increase delay by 10 milliseconds",children:["+ ",oe,"ms"]})]}),t(qn,{label:"Video delay",display:`${n}ms`,min:0,max:he,step:5,value:n,percent:n/he*100,onChange:p=>s(pe(p))}),t("div",{style:{display:"flex",gap:8,justifyContent:"center",flexWrap:"wrap"},children:[t(G,{size:"sm",variant:"secondary",onClick:r,children:"Cancel"}),t(G,{size:"sm",onClick:o,children:["Apply ",n,"ms"]})]})]}):null;function xs({videoRef:e,sourceType:n,resetKey:s,onEnd:o}){const r=w(!1),i=w(o);i.current=o,j(()=>{r.current=!1},[s]);const c=E(()=>{const a=e.current?.duration;!a||!Number.isFinite(a)||console.info(`[playback] duration ${a.toFixed(2)}s`)},[e]);return{checkEnd:E((a=!1)=>{const u=e.current;!u||n==="iframe"||r.current||!a&&!wt(u.currentTime,u.duration)||(r.current=!0,console.info(`[playback] end reached at ${u.currentTime.toFixed(2)}s / ${u.duration.toFixed(2)}s`),i.current())},[n,e]),logDuration:c}}function Ts(e,n,s){const o=ft(),r=w({watch:o,selection:n,loading:s});r.current={watch:o,selection:n,loading:s};const[i,c]=P(!1),p=w(""),a=w(""),u=w(""),_=w(!1),x=!!o.session&&!o.session.host;j(()=>(!o.session&&_.current&&e.applyRemotePlayback(void 0,!1,1),_.current=!!o.session,e.setPlaybackLocked(!!o.session&&(x||!o.connected)),o.session&&!o.connected&&e.applyRemotePlayback(void 0,!1,1),()=>e.setPlaybackLocked(!1)),[e,x,o.connected,o.session]);const g=E((A=!1)=>{const{watch:l,selection:d,loading:C}=r.current,f=e.mediaRef.current;if(!l.session||!l.room||!f)return;if(l.session.host){l.connected&&l.selfId!==u.current&&!C&&d&&f.readyState>=1&&(u.current=l.selfId,je(d,l.room.selection)&&e.applyRemotePlayback(l.room.position,!1,l.room.rate));return}const h=l.room,y=d&&je(d,h.selection);if(!l.connected||C||!y||f.readyState<1){e.applyRemotePlayback(void 0,!1,h.rate);return}const B=Date.now()+l.clock.offset-h.updatedAt<15e3;if(h.playing&&!B){e.applyRemotePlayback(void 0,!1,h.rate);return}const m=h.playing&&h.hostOnline&&B,T=Math.min(f.duration||1/0,mt({...h,playing:m},Date.now()+l.clock.offset)),N=T-f.currentTime,b=Math.abs(N)>(m?1.25:.15),$=m&&!b&&Math.abs(N)>.15?Math.min(4,Math.max(.25,h.rate*(N>0?1.03:.97))):h.rate,O=e.getState().playBlocked;e.applyRemotePlayback(b?T:void 0,m&&(!O||A),$),c(O&&m)},[e]);return j(()=>{if(!o.session)return;const A=()=>{const{watch:m,selection:T,loading:N}=r.current,b=e.mediaRef.current;if(!m.connected||!m.session?.host||!m.room)return;if(!T||N||!b||b.readyState<1){m.room.playing&&m.send({type:"update",...m.room,playing:!1});return}g();const $=e.getState(),O=!b.paused&&!b.ended&&!$.isBuffering,V={type:"update",selection:T,position:b.currentTime+(O?m.clock.latency/1e3*b.playbackRate:0),playing:O,rate:b.playbackRate},I=JSON.stringify(V);!O&&a.current===I||(a.current=I,m.send(V))},l=()=>{const{watch:m,selection:T,loading:N}=r.current,b=e.getState(),$=e.mediaRef.current,O=b.error||!N&&!T?"error":b.playBlocked?"blocked":N||!$||$.readyState<1?"loading":b.isBuffering?"buffering":"ready";m.connected&&`${m.selfId}:${O}`!==p.current&&(p.current=`${m.selfId}:${O}`,m.send({type:"status",status:O})),g()};let d=null;const C=["play","pause","seeked","ratechange","playing","waiting","canplay","ended"];let f;const h=()=>{clearTimeout(f),f=setTimeout(A,100)},y=setInterval(()=>{const m=e.mediaRef.current;d!==m&&(C.forEach(T=>d?.removeEventListener(T,h)),d=m,C.forEach(T=>d?.addEventListener(T,h))),l()},500),B=setInterval(A,3e3);return()=>{clearInterval(y),clearInterval(B),clearTimeout(f),C.forEach(T=>d?.removeEventListener(T,h));const{watch:m}=r.current;m.session?.host&&m.room&&m.connected&&m.send({type:"update",...m.room,playing:!1,position:e.mediaRef.current?.currentTime??m.room.position})}},[e,o.session,g]),j(()=>{g()},[o.room,o.connected,n,s,g]),{needsPlayback:i,enablePlayback:()=>g(!0)}}export{Ss as A,ts as B,is as C,Cs as D,ps as E,U as F,Q as G,qn as M,ls as P,os as R,ws as S,es as T,cs as a,ms as b,Yn as c,Xn as d,ss as e,rs as f,Zn as g,Ts as h,gs as i,bs as j,_s as k,xs as l,ys as m,vs as n,Gn as o,ds as p,as as q,Jn as r,Mr as s,on as t,hs as u,Qn as v,ks as w,us as x,fs as y,ns as z};
@@ -33,11 +33,11 @@
33
33
  background-color: #0c0d12;
34
34
  }
35
35
  </style>
36
- <script type="module" crossorigin src="/assets/index-BP1z44Uk.js"></script>
36
+ <script type="module" crossorigin src="/assets/index-B_2ppn5P.js"></script>
37
37
  <link rel="modulepreload" crossorigin href="/assets/vendor-core-DfaOB3Rn.js">
38
38
  <link rel="modulepreload" crossorigin href="/assets/vendor-query-BBT5_sHx.js">
39
39
  <link rel="modulepreload" crossorigin href="/assets/vendor-icons-DrybRNxP.js">
40
- <link rel="stylesheet" crossorigin href="/assets/index-5x1mF1nD.css">
40
+ <link rel="stylesheet" crossorigin href="/assets/index-DP9TtvZX.css">
41
41
  </head>
42
42
 
43
43
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serifpersia/dango",
3
- "version": "3.7.6",
3
+ "version": "3.7.8",
4
4
  "description": "A web application for watching anime.",
5
5
  "main": "orchestrator.js",
6
6
  "repository": {
@@ -69,5 +69,5 @@
69
69
  "allowScripts": {
70
70
  "esbuild@0.28.2": true
71
71
  },
72
- "versionDate": "2026-10-23T19:40:16.958Z"
72
+ "versionDate": "2026-10-24T10:58:04.892Z"
73
73
  }
@@ -1 +1 @@
1
- import i from"fs";import r from"os";import n from"path";import d from"dotenv";import{SHIPPED_DEFAULTS as c}from"./shipped-defaults.js";const E=n.resolve(import.meta.dirname,".."),A=n.resolve(E,"..");function R(){return process.platform==="win32"&&process.env.APPDATA?n.join(process.env.APPDATA,"dango"):process.platform==="darwin"?n.join(r.homedir(),"Library","Application Support","dango"):process.env.XDG_DATA_HOME?n.join(process.env.XDG_DATA_HOME,"dango"):n.join(r.homedir(),".local","share","dango")}function m(e,o){if(!(!i.existsSync(e)||i.existsSync(o)))try{i.renameSync(e,o)}catch{i.copyFileSync(e,o),i.unlinkSync(e)}}function D(e,o){const t=[".env","google_tokens.json","sync_manifest.json","sync_manifest.dev.json","anime.db","anime.db-shm","anime.db-wal","anime.dev.db","anime.dev.db-shm","anime.dev.db-wal"];i.mkdirSync(o,{recursive:!0});for(const a of t)m(n.join(e,a),n.join(o,a));for(const a of["manga.db","manga.db-shm","manga.db-wal","manga.dev.db","manga.dev.db-shm","manga.dev.db-wal","manga.sync_manifest.json","manga.sync_manifest.dev.json","tv.db","tv.db-shm","tv.db-wal","tv.dev.db","tv.dev.db-shm","tv.dev.db-wal","tv.sync_manifest.json","tv.sync_manifest.dev.json","asmr.db","asmr.db-shm","asmr.db-wal","asmr.dev.db","asmr.dev.db-shm","asmr.dev.db-wal","asmr.sync_manifest.json","asmr.sync_manifest.dev.json"])m(n.join(e,a),n.join(o,a))}function p(){return process.platform==="win32"&&process.env.APPDATA?n.join(process.env.APPDATA,"ani-web"):process.platform==="darwin"?n.join(r.homedir(),"Library","Application Support","ani-web"):process.env.XDG_DATA_HOME?n.join(process.env.XDG_DATA_HOME,"ani-web"):n.join(r.homedir(),".local","share","ani-web")}function f(e){const o=p();if(o===e||!i.existsSync(o))return;const t=[".env","google_tokens.json","sync_manifest.json","sync_manifest.dev.json","anime.db","anime.db-shm","anime.db-wal","anime.dev.db","anime.dev.db-shm","anime.dev.db-wal"];i.mkdirSync(e,{recursive:!0});for(const a of t)m(n.join(o,a),n.join(e,a))}const _=R(),O=n.join(_,".env");D(E,_),f(_),d.config({path:n.join(E,".env")}),d.config({path:O,override:!0});const s=process.argv.includes("--dev"),v=Number(process.env.PORT)||3e3,j=Number(process.env.DEV_PORT)||5173,L=process.env.HOST||"0.0.0.0",N=s?`http://localhost:${j}/api/auth/google/callback`:`http://localhost:${v}/api/auth/google/callback`,S={ROOT:_,SERVER_ROOT:E,PACKAGE_ROOT:A,ENV_PATH:O,TOKEN_PATH:n.join(_,"google_tokens.json"),LOCAL_MANIFEST_PATH:n.join(_,s?"sync_manifest.dev.json":"sync_manifest.json"),MANGA_LOCAL_MANIFEST_PATH:n.join(_,s?"manga.sync_manifest.dev.json":"manga.sync_manifest.json"),TV_LOCAL_MANIFEST_PATH:n.join(_,s?"tv.sync_manifest.dev.json":"tv.sync_manifest.json"),ASMR_LOCAL_MANIFEST_PATH:n.join(_,s?"asmr.sync_manifest.dev.json":"asmr.sync_manifest.json"),DB_NAME_PROD:"anime.db",DB_NAME_DEV:"anime.dev.db",MANGA_DB_NAME_PROD:"manga.db",MANGA_DB_NAME_DEV:"manga.dev.db",TV_DB_NAME_PROD:"tv.db",TV_DB_NAME_DEV:"tv.dev.db",ASMR_DB_NAME_PROD:"asmr.db",ASMR_DB_NAME_DEV:"asmr.dev.db",REMOTE_FOLDER_PROD:"dango_db",REMOTE_FOLDER_DEV:"dango_dev_db",MANIFEST_FILENAME:s?"sync_manifest.dev.json":"sync_manifest.json",GOOGLE_SCOPES:["https://www.googleapis.com/auth/drive.appdata","https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/userinfo.email"],GOOGLE_SYNC_FILENAME:s?"sync.dev.json":"sync.json",MANGA_GOOGLE_SYNC_FILENAME:s?"manga.sync.dev.json":"manga.sync.json",TV_GOOGLE_SYNC_FILENAME:s?"tv.sync.dev.json":"tv.sync.json",ASMR_GOOGLE_SYNC_FILENAME:s?"asmr.sync.dev.json":"asmr.sync.json",RCLONE_SYNC_FILENAME:s?"sync.dev.json":"sync.json",MANGA_RCLONE_SYNC_FILENAME:s?"manga.sync.dev.json":"manga.sync.json",TV_RCLONE_SYNC_FILENAME:s?"tv.sync.dev.json":"tv.sync.json",ASMR_RCLONE_SYNC_FILENAME:s?"asmr.sync.dev.json":"asmr.sync.json",IS_DEV:s,PORT:v,HOST:L,GOOGLE_CLIENT_ID:process.env.GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET:process.env.GOOGLE_CLIENT_SECRET,GOOGLE_REDIRECT_URI:N,GOOGLE_AUTH_WORKER_URL:process.env.GOOGLE_AUTH_WORKER_URL||c.GOOGLE_AUTH_WORKER_URL||"",RCLONE_REMOTE:process.env.RCLONE_REMOTE,SYNC_PROVIDER:process.env.SYNC_PROVIDER,DISCORD_CLIENT_ID:process.env.DISCORD_CLIENT_ID||c.DISCORD_CLIENT_ID||void 0,APP_PASSWORD_HASH:process.env.APP_PASSWORD_HASH||"",PROVIDER_REPO_URL:process.env.PROVIDER_REPO_URL||c.PROVIDER_REPO_URL||"",PROVIDER_ENABLED:process.env.PROVIDER_ENABLED||"",PROVIDER_REPO_REFRESH_MS:parseInt(process.env.PROVIDER_REPO_REFRESH_MS||"",10)||216e5};export{S as CONFIG,E as SERVER_ROOT};
1
+ import E from"fs";import i from"os";import s from"path";import m from"dotenv";import{SHIPPED_DEFAULTS as t}from"./shipped-defaults.js";import{profileScope as A}from"./profile-scope.js";const O=s.resolve(import.meta.dirname,".."),T=s.resolve(O,"..");function N(){return process.platform==="win32"&&process.env.APPDATA?s.join(process.env.APPDATA,"dango"):process.platform==="darwin"?s.join(i.homedir(),"Library","Application Support","dango"):process.env.XDG_DATA_HOME?s.join(process.env.XDG_DATA_HOME,"dango"):s.join(i.homedir(),".local","share","dango")}function c(e,n){if(!(!E.existsSync(e)||E.existsSync(n)))try{E.renameSync(e,n)}catch{E.copyFileSync(e,n),E.unlinkSync(e)}}function f(e,n){const _=[".env","google_tokens.json","sync_manifest.json","sync_manifest.dev.json","anime.db","anime.db-shm","anime.db-wal","anime.dev.db","anime.dev.db-shm","anime.dev.db-wal"];E.mkdirSync(n,{recursive:!0});for(const r of _)c(s.join(e,r),s.join(n,r));for(const r of["manga.db","manga.db-shm","manga.db-wal","manga.dev.db","manga.dev.db-shm","manga.dev.db-wal","manga.sync_manifest.json","manga.sync_manifest.dev.json","tv.db","tv.db-shm","tv.db-wal","tv.dev.db","tv.dev.db-shm","tv.dev.db-wal","tv.sync_manifest.json","tv.sync_manifest.dev.json","asmr.db","asmr.db-shm","asmr.db-wal","asmr.dev.db","asmr.dev.db-shm","asmr.dev.db-wal","asmr.sync_manifest.json","asmr.sync_manifest.dev.json"])c(s.join(e,r),s.join(n,r))}function p(){return process.platform==="win32"&&process.env.APPDATA?s.join(process.env.APPDATA,"ani-web"):process.platform==="darwin"?s.join(i.homedir(),"Library","Application Support","ani-web"):process.env.XDG_DATA_HOME?s.join(process.env.XDG_DATA_HOME,"ani-web"):s.join(i.homedir(),".local","share","ani-web")}function D(e){const n=p();if(n===e||!E.existsSync(n))return;const _=[".env","google_tokens.json","sync_manifest.json","sync_manifest.dev.json","anime.db","anime.db-shm","anime.db-wal","anime.dev.db","anime.dev.db-shm","anime.dev.db-wal"];E.mkdirSync(e,{recursive:!0});for(const r of _)c(s.join(n,r),s.join(e,r))}const a=N(),R=s.join(a,".env");f(O,a),D(a),m.config({path:s.join(O,".env")}),m.config({path:R,override:!0});const o=process.argv.includes("--dev"),d=Number(process.env.PORT)||3e3,v=Number(process.env.DEV_PORT)||5173,S=process.env.HOST||"0.0.0.0",j=o?`http://localhost:${v}/api/auth/google/callback`:`http://localhost:${d}/api/auth/google/callback`,I={ROOT:a,SERVER_ROOT:O,PACKAGE_ROOT:T,ENV_PATH:R,TOKEN_PATH:s.join(a,"google_tokens.json"),LOCAL_MANIFEST_PATH:s.join(a,o?"sync_manifest.dev.json":"sync_manifest.json"),MANGA_LOCAL_MANIFEST_PATH:s.join(a,o?"manga.sync_manifest.dev.json":"manga.sync_manifest.json"),TV_LOCAL_MANIFEST_PATH:s.join(a,o?"tv.sync_manifest.dev.json":"tv.sync_manifest.json"),ASMR_LOCAL_MANIFEST_PATH:s.join(a,o?"asmr.sync_manifest.dev.json":"asmr.sync_manifest.json"),DB_NAME_PROD:"anime.db",DB_NAME_DEV:"anime.dev.db",MANGA_DB_NAME_PROD:"manga.db",MANGA_DB_NAME_DEV:"manga.dev.db",TV_DB_NAME_PROD:"tv.db",TV_DB_NAME_DEV:"tv.dev.db",ASMR_DB_NAME_PROD:"asmr.db",ASMR_DB_NAME_DEV:"asmr.dev.db",REMOTE_FOLDER_PROD:"dango_db",REMOTE_FOLDER_DEV:"dango_dev_db",MANIFEST_FILENAME:o?"sync_manifest.dev.json":"sync_manifest.json",GOOGLE_SCOPES:["https://www.googleapis.com/auth/drive.appdata","https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/userinfo.email"],GOOGLE_SYNC_FILENAME:o?"sync.dev.json":"sync.json",MANGA_GOOGLE_SYNC_FILENAME:o?"manga.sync.dev.json":"manga.sync.json",TV_GOOGLE_SYNC_FILENAME:o?"tv.sync.dev.json":"tv.sync.json",ASMR_GOOGLE_SYNC_FILENAME:o?"asmr.sync.dev.json":"asmr.sync.json",RCLONE_SYNC_FILENAME:o?"sync.dev.json":"sync.json",MANGA_RCLONE_SYNC_FILENAME:o?"manga.sync.dev.json":"manga.sync.json",TV_RCLONE_SYNC_FILENAME:o?"tv.sync.dev.json":"tv.sync.json",ASMR_RCLONE_SYNC_FILENAME:o?"asmr.sync.dev.json":"asmr.sync.json",IS_DEV:o,PORT:d,DEV_PORT:v,HOST:S,GOOGLE_CLIENT_ID:process.env.GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET:process.env.GOOGLE_CLIENT_SECRET,GOOGLE_REDIRECT_URI:j,GOOGLE_AUTH_WORKER_URL:process.env.GOOGLE_AUTH_WORKER_URL||t.GOOGLE_AUTH_WORKER_URL||"",RCLONE_REMOTE:process.env.RCLONE_REMOTE,SYNC_PROVIDER:process.env.SYNC_PROVIDER,DISCORD_CLIENT_ID:process.env.DISCORD_CLIENT_ID||t.DISCORD_CLIENT_ID||void 0,APP_PASSWORD_HASH:process.env.APP_PASSWORD_HASH||"",WATCH_ALONG_WORKER_URL:process.env.WATCH_ALONG_WORKER_URL||t.WATCH_ALONG_WORKER_URL||"",PROVIDER_REPO_URL:process.env.PROVIDER_REPO_URL||t.PROVIDER_REPO_URL||"",PROVIDER_ENABLED:process.env.PROVIDER_ENABLED||"",PROVIDER_REPO_REFRESH_MS:parseInt(process.env.PROVIDER_REPO_REFRESH_MS||"",10)||216e5},l=new Set(["ENV_PATH","TOKEN_PATH","LOCAL_MANIFEST_PATH","MANGA_LOCAL_MANIFEST_PATH","TV_LOCAL_MANIFEST_PATH","ASMR_LOCAL_MANIFEST_PATH"]),L=new Set(["GOOGLE_CLIENT_ID","GOOGLE_CLIENT_SECRET","GOOGLE_AUTH_WORKER_URL","RCLONE_REMOTE","SYNC_PROVIDER"]),y=new Proxy(I,{get(e,n){const _=A.getStore();return _?n==="ROOT"?_.root:l.has(n)?s.join(_.root,s.basename(String(e[n]))):L.has(n)?_.env[n]||(n==="GOOGLE_AUTH_WORKER_URL"?e.GOOGLE_AUTH_WORKER_URL:n.startsWith("GOOGLE_")?e[n]:void 0):e[n]:e[n]},set(e,n,_){const r=A.getStore();return r&&L.has(n)?r.env[n]=_:Reflect.set(e,n,_),!0}});export{y as CONFIG,I as INSTALL_CONFIG,O as SERVER_ROOT};
@@ -0,0 +1 @@
1
+ import{AsyncLocalStorage as o}from"node:async_hooks";const n=new o;function a(r){const e=new Map;return()=>{const t=n.getStore()?.id??"default";return e.has(t)||e.set(t,r()),e.get(t)}}function s(r){const e=n.getStore();if(!e?.deleted)return e?e.env[r]??(r==="GITHUB_CLIENT_ID"?process.env[r]:void 0):process.env[r]}export{s as profileEnv,n as profileScope,a as profileService};