@serifpersia/dango 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +247 -0
- package/client/dist/assets/AnimeInfo-CMxs0nRH.css +1 -0
- package/client/dist/assets/AnimeInfo-DVdaocCl.js +1 -0
- package/client/dist/assets/AnimeInfoPage-Bx5EvGt-.js +2 -0
- package/client/dist/assets/Asmr-C2i9GKD4.css +1 -0
- package/client/dist/assets/Asmr-CIjmFtRH.js +2 -0
- package/client/dist/assets/Asmr.module-DPG2JhDJ.js +1 -0
- package/client/dist/assets/AvSyncCalibrator-CIYcyon5.css +1 -0
- package/client/dist/assets/AvSyncCalibrator-vqErH7Cm.js +10 -0
- package/client/dist/assets/ErrorMessage-BwSjzblw.js +1 -0
- package/client/dist/assets/ErrorMessage-CXoRbrLN.css +1 -0
- package/client/dist/assets/Home-D7YfGBUk.js +1 -0
- package/client/dist/assets/Home-DKCfEiwl.css +1 -0
- package/client/dist/assets/Insights-BljI64Ua.css +1 -0
- package/client/dist/assets/Insights-CLQGrlpX.js +1 -0
- package/client/dist/assets/Manga-DQ9HYnpk.js +1 -0
- package/client/dist/assets/Manga-H8Wb04w3.css +1 -0
- package/client/dist/assets/Map-CXFqXmsZ.css +1 -0
- package/client/dist/assets/Map-L_ryVBTq.js +1 -0
- package/client/dist/assets/Mature-BeWzAJ7B.js +1 -0
- package/client/dist/assets/Mature-DJmUUtlF.css +1 -0
- package/client/dist/assets/Player-CYpd__FP.js +30 -0
- package/client/dist/assets/Player-DreAhybc.css +1 -0
- package/client/dist/assets/PlayerRedirect-fxUAp9JV.js +1 -0
- package/client/dist/assets/PlayerSettings-BcsotxP9.js +1 -0
- package/client/dist/assets/PlayerSettings-Cqua1CDD.css +1 -0
- package/client/dist/assets/QueueRail-B9Pgbqc3.js +1 -0
- package/client/dist/assets/QueueRail-BnaltOP8.css +1 -0
- package/client/dist/assets/Radio-BvdY5twD.js +1 -0
- package/client/dist/assets/Radio-CUuYy3DY.css +1 -0
- package/client/dist/assets/Search-BzO-aRP7.css +1 -0
- package/client/dist/assets/Search-R9YLAXS1.js +1 -0
- package/client/dist/assets/Search.module-D8ZbQAiK.js +1 -0
- package/client/dist/assets/Settings-9kYcXdTR.js +21 -0
- package/client/dist/assets/Settings-DF8JThUL.css +1 -0
- package/client/dist/assets/SkeletonGrid-D5vRvX5q.js +1 -0
- package/client/dist/assets/SkeletonGrid-DEbYtO4H.css +1 -0
- package/client/dist/assets/SynopsisText-BlFw0R-0.js +1 -0
- package/client/dist/assets/SynopsisText-CUgOjOxt.css +1 -0
- package/client/dist/assets/Trackers-DfZlnnVq.js +2 -0
- package/client/dist/assets/Trackers-Dt9lR_uP.css +1 -0
- package/client/dist/assets/Tv-CVKC2YBs.css +1 -0
- package/client/dist/assets/Tv-Db1Wx_b7.js +15 -0
- package/client/dist/assets/Watchlist-B2nkNZqM.css +1 -0
- package/client/dist/assets/Watchlist-a77CYtzu.js +1 -0
- package/client/dist/assets/hls-6Owgw2Aj.js +1 -0
- package/client/dist/assets/hls-BOLXTnjL.js +42 -0
- package/client/dist/assets/index-B6qdXFtl.css +1 -0
- package/client/dist/assets/index-B8TPVaIS.js +30354 -0
- package/client/dist/assets/index-CpjgU8ou.js +178 -0
- package/client/dist/assets/useAnimeInfoData-BOfyi9UJ.js +1 -0
- package/client/dist/assets/useIsMobile-CM15uQn8.css +1 -0
- package/client/dist/assets/useIsMobile-Cb8HcKRj.js +1 -0
- package/client/dist/assets/useMatureConsent-CZMYBVXd.js +1 -0
- package/client/dist/assets/vendor-rLNfZm7Y.js +1 -0
- package/client/dist/av-sync-test.mp4 +0 -0
- package/client/dist/favicon.ico +0 -0
- package/client/dist/index.html +31 -0
- package/client/dist/logo-mochi.png +0 -0
- package/client/dist/logo-sakura.png +0 -0
- package/client/dist/logo.png +0 -0
- package/client/dist/placeholder.svg +4 -0
- package/client/dist/robots.txt +3 -0
- package/orchestrator.js +416 -0
- package/package.json +89 -0
- package/server/dist/app-auth.js +231 -0
- package/server/dist/config.js +133 -0
- package/server/dist/controllers/auth.controller.js +247 -0
- package/server/dist/controllers/data.controller.js +785 -0
- package/server/dist/controllers/insights.controller.js +197 -0
- package/server/dist/controllers/proxy.controller.js +665 -0
- package/server/dist/controllers/settings.controller.js +267 -0
- package/server/dist/controllers/watchlist.controller.js +967 -0
- package/server/dist/db.js +152 -0
- package/server/dist/discord-gateway.js +381 -0
- package/server/dist/discord-rpc.js +424 -0
- package/server/dist/github-sync.js +403 -0
- package/server/dist/google.js +549 -0
- package/server/dist/lib/anilist.js +1519 -0
- package/server/dist/lib/anischedule.js +202 -0
- package/server/dist/lib/ipc.js +32 -0
- package/server/dist/lib/kitsu.js +552 -0
- package/server/dist/lib/mal.js +886 -0
- package/server/dist/lib/migration.js +335 -0
- package/server/dist/lib/temp-ids.js +11 -0
- package/server/dist/lib/tmdb.js +71 -0
- package/server/dist/lib/tracker/anilist-tracker.js +250 -0
- package/server/dist/lib/tracker/sync.service.js +312 -0
- package/server/dist/logger.js +19 -0
- package/server/dist/providers/123anime.provider.js +240 -0
- package/server/dist/providers/anilight.provider.js +366 -0
- package/server/dist/providers/animepahe.provider.js +531 -0
- package/server/dist/providers/animeya.provider.js +746 -0
- package/server/dist/providers/base-provider.js +45 -0
- package/server/dist/providers/hn.provider.js +473 -0
- package/server/dist/providers/ht.provider.js +439 -0
- package/server/dist/providers/jasmr.provider.js +504 -0
- package/server/dist/providers/kaa.provider.js +388 -0
- package/server/dist/providers/manga/manga.types.js +10 -0
- package/server/dist/providers/manga/mangadex.provider.js +227 -0
- package/server/dist/providers/manga/mangapill.provider.js +232 -0
- package/server/dist/providers/megaplay.provider.js +583 -0
- package/server/dist/providers/op.provider.js +440 -0
- package/server/dist/providers/provider.interface.js +2 -0
- package/server/dist/providers/title-matching.js +234 -0
- package/server/dist/providers/wh.provider.js +600 -0
- package/server/dist/rclone.js +126 -0
- package/server/dist/repositories/insights.repository.js +43 -0
- package/server/dist/repositories/mal-cache.repository.js +66 -0
- package/server/dist/repositories/notifications.repository.js +40 -0
- package/server/dist/repositories/queue.repository.js +64 -0
- package/server/dist/repositories/settings.repository.js +15 -0
- package/server/dist/repositories/shows-meta.repository.js +43 -0
- package/server/dist/repositories/temp-show-ids.repository.js +54 -0
- package/server/dist/repositories/watched-episodes.repository.js +54 -0
- package/server/dist/repositories/watchlist.repository.js +74 -0
- package/server/dist/routes/asmr.routes.js +72 -0
- package/server/dist/routes/auth.routes.js +28 -0
- package/server/dist/routes/data.routes.js +50 -0
- package/server/dist/routes/discord-gateway.routes.js +57 -0
- package/server/dist/routes/insights.routes.js +12 -0
- package/server/dist/routes/lan-auth.routes.js +49 -0
- package/server/dist/routes/manga.routes.js +115 -0
- package/server/dist/routes/proxy.routes.js +15 -0
- package/server/dist/routes/radio.routes.js +143 -0
- package/server/dist/routes/settings.routes.js +27 -0
- package/server/dist/routes/tracker.routes.js +143 -0
- package/server/dist/routes/translate.routes.js +90 -0
- package/server/dist/routes/tv.routes.js +843 -0
- package/server/dist/routes/watchlist.routes.js +312 -0
- package/server/dist/server.js +310 -0
- package/server/dist/shipped-defaults.js +8 -0
- package/server/dist/sync-config.js +32 -0
- package/server/dist/sync.js +506 -0
- package/server/dist/utils/cookie.utils.js +17 -0
- package/server/dist/utils/db-utils.js +15 -0
- package/server/dist/utils/env.utils.js +83 -0
- package/server/dist/utils/machine-id.js +46 -0
- package/server/dist/utils/request-context.js +5 -0
- package/server/dist/utils/security.utils.js +99 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._controls_1ua34_1{display:flex;align-items:stretch;gap:1.25rem;flex-wrap:wrap;width:100%}._titleContainer_1ua34_9{display:flex;flex-direction:column;gap:1rem}._scheduleInfo_1ua34_15{display:flex;gap:1rem;font-size:.95rem;color:var(--text-tertiary);align-items:center}._status_1ua34_23{background:#8b5cf61a;color:var(--accent-light);border:1px solid rgba(139,92,246,.2);padding:.35rem .85rem;border-radius:var(--radius-full);font-weight:700;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em}._nextEpisode_1ua34_35{background:#ffffff0d;color:var(--text-secondary);padding:.35rem .85rem;border-radius:var(--radius-full);font-size:.8rem;font-weight:600;border:1px solid var(--glass-border)}._watchlistBtn_1ua34_45{background:#ffffff0d;color:var(--text-primary);border:1px solid rgba(255,255,255,.1);padding:.65rem 1.25rem;border-radius:var(--radius-full);font-weight:600;cursor:pointer;transition:all var(--transition-normal);display:flex;align-items:center;gap:.6rem;font-size:.85rem;flex:0 1 auto;min-width:120px;justify-content:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}._watchlistBtn_1ua34_45:hover{background:#ffffff1f;border-color:#ffffff40;transform:translateY(-2px);box-shadow:0 4px 12px #00000040}._watchlistBtn_1ua34_45._inList_1ua34_72{background:#10b9811f;border-color:#10b98159;color:var(--color-success)}._watchlistBtn_1ua34_45._inList_1ua34_72:hover{background:#10b9812e;border-color:var(--color-success)}._queueBtn_1ua34_83{background:#8b5cf614;border-color:#8b5cf640;color:#d8b4fe}._queueBtn_1ua34_83:hover{background:#8b5cf624;border-color:#a78bfa73;color:#f3e8ff}._queueActive_1ua34_95{background:#8b5cf626;border-color:#a78bfa99;color:#f5d0fe}._modeToggleBtn_1ua34_101{background:#ffffff0d;color:var(--text-primary);border-color:#ffffff1a;flex:0 1 auto}._modeToggleActive_1ua34_108{background:#3b82f61f;border-color:#60a5fa73;color:#dbeafe}._modeToggleActive_1ua34_108:hover{background:#3b82f62e;border-color:#60a5faa6}._nativeToggleBtn_1ua34_119{background:#ffffff0d;color:var(--text-primary);border-color:#ffffff1a;flex:0 1 auto}._nativeToggleBtn_1ua34_119:hover{background:#ffffff1f;border-color:#ffffff40;transform:translateY(-2px)}._nativeToggleActive_1ua34_132{background:#f59e0b1a;border-color:#f59e0b66;color:#fde68a}._nativeToggleActive_1ua34_132:hover{background:#f59e0b29;border-color:#f59e0b99}._watchlistBtn_1ua34_45:disabled{opacity:.7;cursor:wait;transform:none}._watchlistBtn_1ua34_45:disabled:hover{transform:none}._markWatchedBtn_1ua34_153{background:#3b82f614;border-color:#3b82f640;color:#93c5fd;flex:0 1 auto;justify-content:center}._markWatchedBtn_1ua34_153:hover{background:#3b82f624;border-color:#60a5fa73;color:#dbeafe}._markWatchedDone_1ua34_167{background:#10b9811f;border-color:#10b98159;color:var(--color-success)}._markWatchedDone_1ua34_167:hover{background:#10b9812e;border-color:var(--color-success)}._completeSeriesBtn_1ua34_178{background:#10b9811a;border-color:#10b9814d;color:#d1fae5;flex:0 1 auto;justify-content:center}._completeSeriesBtn_1ua34_178:hover{background:#10b98129;border-color:#34d39973;color:#ecfdf5}._providerAndEpisodeRow_1ua34_192{display:flex;align-items:flex-start;gap:1rem;flex-wrap:wrap}._episodeActions_1ua34_199{display:flex;flex-wrap:wrap;gap:.75rem;margin:.5rem 0 .25rem}._desktopEpisodeActions_1ua34_206{flex:1 1 320px;justify-content:flex-end;align-self:flex-end;margin:0}._mobileEpisodeActions_1ua34_213{margin:.5rem 0 .25rem}._episodeNavBtn_1ua34_217{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:.7rem 1rem;background:#ffffff0d;color:var(--text-primary);cursor:pointer;font-size:.9rem;font-weight:700;transition:background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}._episodeNavBtn_1ua34_217:hover:not(:disabled){border-color:var(--text-secondary);background:#ffffff14}._episodeNavBtn_1ua34_217:disabled{opacity:.45;cursor:not-allowed;transform:none}._episodeNavBtn_1ua34_217._primary_1ua34_247{background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dark) 100%);border-color:transparent;color:#fff}._episodeNavBtn_1ua34_217._primary_1ua34_247:hover:not(:disabled){background:linear-gradient(135deg,var(--accent-light) 0%,var(--accent) 100%)}._episodeNavBtn_1ua34_217._secondary_1ua34_257{background:#ffffff0a}._episodePickerBtn_1ua34_261{display:none}._queueCountdown_1ua34_265{position:absolute;left:50%;bottom:1.5rem;transform:translate(-50%);z-index:75;padding:.7rem 1rem;border:1px solid var(--glass-border);border-radius:var(--radius-md);background:#121216eb;color:#fff;font-weight:700;box-shadow:var(--glass-shadow)}._speedBoostBadge_1ua34_280{position:absolute;top:1.5rem;left:50%;transform:translate(-50%);z-index:75;display:flex;align-items:center;gap:.7rem;padding:.65rem 1rem;border:1px solid rgba(167,139,250,.45);border-radius:var(--radius-md);background:#121216eb;color:#f5f3ff;font-weight:800;letter-spacing:.06em;text-transform:none;box-shadow:var(--glass-shadow);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}._speedBoostBadge_1ua34_280 span{line-height:1}._speedBoostBadge_1ua34_280 svg{display:block;flex-shrink:0}._videoContainer_1ua34_311{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000;display:flex;justify-content:center;align-items:center;container-type:inline-size}._loadingOverlay_1ua34_324{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:10;background:#00000080;border-radius:inherit}._loadingDots_1ua34_338{display:flex;gap:10px}._dot_1ua34_343{width:12px;height:12px;border-radius:50%;background-color:var(--accent);animation:_bounce_1ua34_1 1.4s infinite ease-in-out both;box-shadow:0 0 10px var(--accent-glow)}._dot_1ua34_343:nth-child(1){animation-delay:-.32s}._dot_1ua34_343:nth-child(2){animation-delay:-.16s}@keyframes _bounce_1ua34_1{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}._bufferingOverlay_1ua34_372{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:20}._bufferingSpinner_1ua34_381{width:50px;height:50px;border:4px solid rgba(255,255,255,.3);border-radius:50%;border-top-color:var(--accent);animation:_spin_1ua34_921 1s ease-in-out infinite}@keyframes _spin_1ua34_921{to{transform:rotate(360deg)}}._videoIframe_1ua34_396{width:100%;height:100%;border:none;position:absolute;top:0;left:0;object-fit:cover;border-radius:inherit}._videoContainer_1ua34_311 video{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;object-fit:contain;background-color:#000;border-radius:inherit}._videoContainer_1ua34_311 video._videoElementHidden_1ua34_421{opacity:0;pointer-events:none}._upscalerCanvas_1ua34_426{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;object-fit:contain;opacity:0;pointer-events:none;border-radius:inherit}._upscalerCanvas_1ua34_426._upscalerActive_1ua34_439{opacity:1}._upscalerStatusBadge_1ua34_443{position:absolute;top:12px;right:12px;z-index:4;background:#000000a6;color:var(--text-primary);font-size:.75rem;font-weight:600;padding:.35em .8em;border-radius:999px;border:1px solid var(--glass-border);pointer-events:none}._subtitleOverlay_1ua34_458{position:absolute;top:0;left:0;width:100%;height:100%;z-index:3;pointer-events:none;overflow:hidden;border-radius:inherit}._controlsOverlay_1ua34_470{position:absolute;inset:0;opacity:1;transition:opacity .4s cubic-bezier(.4,0,.2,1);z-index:50;pointer-events:none;display:flex;flex-direction:column;justify-content:space-between;border-radius:inherit;background:linear-gradient(to bottom,rgba(0,0,0,.35) 0%,rgba(0,0,0,.2) 15%,transparent 40%,transparent 60%,rgba(0,0,0,.2) 85%,rgba(0,0,0,.35) 100%);will-change:opacity}._controlsOverlay_1ua34_470>*{pointer-events:auto}._controlsOverlay_1ua34_470._hidden_1ua34_500{opacity:0;pointer-events:none;cursor:none}._centerPlayPause_1ua34_506{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;background:#0f0f11d9;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.15);border-radius:50%;color:#fff;width:90px;height:90px;font-size:2.8rem;cursor:pointer;padding-left:6px;transition:all .3s cubic-bezier(.34,1.56,.64,1);box-shadow:none;will-change:transform}._centerPlayPause_1ua34_506:hover{background:var(--accent);transform:translate(-50%,-50%) scale(1.1);border-color:var(--accent);box-shadow:0 0 40px var(--accent-glow)}._bottomControls_1ua34_537{position:absolute;bottom:24px;left:24px;right:24px;display:flex;flex-direction:column;gap:0;background:#0f0f11f2;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);border-radius:20px;padding:16px 24px;box-shadow:none}._progressBarContainer_1ua34_554{width:100%;padding:10px 0;cursor:pointer;position:relative;touch-action:none;display:flex;align-items:center}._progressBar_1ua34_554{width:100%;height:4px;background-color:#ffffff26;border-radius:4px;position:relative;transition:height .2s,background-color .2s;overflow:visible}._progressBarContainer_1ua34_554:hover ._progressBar_1ua34_554,._progressBarContainer_1ua34_554._scrubbing_1ua34_577 ._progressBar_1ua34_554{height:6px;background-color:#ffffff40}._watchedBar_1ua34_582,._bufferedBar_1ua34_583{position:absolute;top:0;left:0;height:100%;border-radius:4px}._watchedBar_1ua34_582{background:var(--accent);background:linear-gradient(90deg,var(--accent) 0%,var(--accent-light) 100%);z-index:2;box-shadow:0 0 15px var(--accent-glow);transition:width .3s linear;will-change:width}._bufferedBar_1ua34_583{background-color:#ffffff4d;z-index:1}._thumb_1ua34_605{position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);width:16px;height:16px;background-color:#fff;border-radius:50%;z-index:3;transition:transform .2s cubic-bezier(.175,.885,.32,1.275),left .3s linear;box-shadow:0 0 0 4px #fff3;will-change:left}._progressBarContainer_1ua34_554:hover ._thumb_1ua34_605,._progressBarContainer_1ua34_554._scrubbing_1ua34_577 ._thumb_1ua34_605{transform:translate(-50%,-50%) scale(1)}._timeBubble_1ua34_626{position:absolute;bottom:35px;transform:translate(-50%);background:#000000e6;border:1px solid rgba(255,255,255,.1);color:#fff;padding:6px 10px;border-radius:8px;font-size:.85rem;font-weight:600;opacity:0;transition:opacity .2s;pointer-events:none;white-space:nowrap;box-shadow:0 4px 12px #0000004d}._progressBarContainer_1ua34_554:hover ._timeBubble_1ua34_626{opacity:1}._skipSegment_1ua34_648{position:absolute;top:0;height:100%;z-index:10;opacity:.5;transition:opacity .2s;border-radius:4px}._skipSegment_1ua34_648:hover{opacity:.8}._skipSegment_1ua34_648._op_1ua34_662{background-color:var(--success)}._skipSegment_1ua34_648._ed_1ua34_666{background-color:var(--accent-blue)}._skipSegment_1ua34_648._recap_1ua34_670{background-color:var(--warning)}._bottomControlsRow_1ua34_674{display:flex;justify-content:space-between;align-items:center;width:100%;margin-top:4px}._controlBtn_1ua34_682{background:transparent;border:none;color:#ffffffe6;font-size:1.2rem;cursor:pointer;transition:all .2s;padding:10px;border-radius:12px;display:flex;align-items:center;justify-content:center}._controlBtn_1ua34_682:hover{background:#ffffff1a;color:#fff;transform:translateY(-2px)}._controlBtn_1ua34_682:active{transform:translateY(0)}._timeDisplay_1ua34_706{font-size:.9rem;font-weight:500;color:#ffffffe6;font-variant-numeric:tabular-nums;margin-left:.5rem;opacity:.9}._leftControls_1ua34_715,._rightControls_1ua34_716,._middleControls_1ua34_717{display:flex;align-items:center;gap:1.5rem}._skipControls_1ua34_723{display:flex;align-items:center;gap:.25rem}._skipBtn_1ua34_729{background:transparent;border:none;color:#fff;cursor:pointer;font-size:1.4rem;display:flex;align-items:center;justify-content:center;opacity:.7;transition:all .2s;padding:6px}._skipBtn_1ua34_729:hover{opacity:1;transform:scale(1.1);color:var(--accent)}._skipBtn_1ua34_729:active{transform:scale(.9)}._volumeContainer_1ua34_753{display:flex;align-items:center;position:relative;padding-right:10px}._volumeSlider_1ua34_760{width:0;opacity:0;transform:scaleX(0);transform-origin:left;transition:all .3s var(--ease-smooth);cursor:pointer;margin-left:6px;-webkit-appearance:none;appearance:none;background:transparent;height:30px}._volumeContainer_1ua34_753:hover ._volumeSlider_1ua34_760,._volumeSlider_1ua34_760:focus{width:80px;opacity:1;transform:scaleX(1)}._volumeSlider_1ua34_760::-webkit-slider-runnable-track{width:100%;height:4px;background:linear-gradient(to right,var(--accent) 0%,var(--accent) var(--volume-percent, 100%),rgba(255,255,255,.25) var(--volume-percent, 100%),rgba(255,255,255,.25) 100%);border-radius:4px;border:none}._volumeSlider_1ua34_760::-moz-range-track{width:100%;height:4px;background:#ffffff40;border-radius:4px;border:none}._volumeSlider_1ua34_760::-moz-range-progress{height:4px;background:var(--accent);border-radius:4px}._volumeSlider_1ua34_760::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;background-color:#fff;border:2px solid var(--accent);border-radius:50%;cursor:pointer;margin-top:-5px;box-shadow:0 0 10px #00000080;transition:transform .1s ease}._volumeSlider_1ua34_760::-webkit-slider-thumb:hover{transform:scale(1.2);box-shadow:0 0 15px var(--accent-glow)}._volumeSlider_1ua34_760::-moz-range-thumb{width:14px;height:14px;background-color:#fff;border:2px solid var(--accent);border-radius:50%;cursor:pointer;box-shadow:0 0 10px #00000080}._settingsMenu_1ua34_838{position:absolute;bottom:50px;right:0;background:#0f0f0ffa;border:1px solid rgba(255,255,255,.1);color:#fff;padding:1rem;border-radius:12px;width:280px;z-index:var(--z-dropdown);box-shadow:0 10px 40px #00000080;animation:_slideUp_1ua34_1 .2s cubic-bezier(.16,1,.3,1);transform-origin:bottom right}@keyframes _slideUp_1ua34_1{0%{opacity:0;transform:translateY(10px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}._settingsMenu_1ua34_838 h4{margin:0 0 1rem;font-size:.95rem;text-transform:uppercase;letter-spacing:.05em;color:#ffffff80;border-bottom:1px solid rgba(255,255,255,.1);padding-bottom:.5rem;font-weight:600}._qualityListInMenu_1ua34_877,._ccOptionsContainer_1ua34_878{display:flex;flex-direction:column;gap:.25rem;max-height:300px;overflow-y:auto}._qualityItemInMenu_1ua34_886,._ccItem_1ua34_887{background:transparent;color:#fffc;border:none;padding:.75rem 1rem;border-radius:8px;cursor:pointer;text-align:left;font-size:.95rem;transition:all .2s;display:flex;justify-content:space-between;align-items:center}._qualityItemInMenu_1ua34_886:hover,._ccItem_1ua34_887:hover{background:#ffffff1a;color:#fff}._qualityItemInMenu_1ua34_886._active_1ua34_908,._ccItem_1ua34_887._active_1ua34_908{background:var(--accent);color:#fff;font-weight:600}._sourceLoader_1ua34_915{padding:2rem;display:flex;justify-content:center}._spinner_1ua34_921{width:40px;height:40px;border:4px solid rgba(255,255,255,.1);border-left-color:var(--accent);border-radius:50%;animation:_spin_1ua34_921 1s linear infinite}@media(max-width:768px){._bottomControls_1ua34_537{padding:.75rem;bottom:8px;left:8px;right:8px;border-radius:12px}._leftControls_1ua34_715,._rightControls_1ua34_716{gap:.5rem}._controlBtn_1ua34_682{padding:8px;font-size:1.1rem}._timeDisplay_1ua34_706{font-size:.75rem;margin-left:.25rem}._centerPlayPause_1ua34_506{width:64px;height:64px;font-size:2rem}._titleContainer_1ua34_9 h1{font-size:1.25rem}._volumeSlider_1ua34_760,._volumeContainer_1ua34_753{display:none}._skipBubble_1ua34_972{width:80px;height:80px}._skipIcon_1ua34_976{font-size:1.8rem}._skipText_1ua34_979{font-size:.8rem}._episodeActions_1ua34_199{margin-top:.25rem}._controls_1ua34_1{gap:.5rem}._watchBtn_1ua34_991,._watchlistBtn_1ua34_45,._queueBtn_1ua34_83,._markWatchedBtn_1ua34_153,._completeSeriesBtn_1ua34_178,._nativeToggleBtn_1ua34_119,._modeToggleBtn_1ua34_101{flex:1 1 calc(50% - .25rem);min-width:0;padding:.5rem .75rem;font-size:.78rem;gap:.4rem}._watchBtn_1ua34_991{flex-basis:100%}._episodeNavBtn_1ua34_217{flex:1 1 calc(50% - .25rem);min-width:0;padding:.45rem .75rem;font-size:.8rem;min-height:44px}._episodePickerBtn_1ua34_261{display:inline-flex;flex-basis:100%;padding:.4rem .75rem;font-size:.78rem;min-height:44px}._desktopEpisodeActions_1ua34_206{display:none}._mobileEpisodeActions_1ua34_213{display:flex}._providerAndEpisodeRow_1ua34_192{flex-direction:column}._errorOverlay_1ua34_1037{padding:1rem;gap:.5rem;overflow-y:auto}._errorOverlay_1ua34_1037 p{font-size:1rem}._retryButton_1ua34_1047{padding:.5rem 1.25rem;font-size:.9rem;margin-top:0}}@media(min-width:769px){._mobileEpisodeActions_1ua34_213{display:none}}@media(max-width:900px)and (orientation:landscape){._bottomControls_1ua34_537{bottom:8px;left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));padding:.5rem 1rem}._centerPlayPause_1ua34_506{width:54px;height:54px;font-size:1.5rem}._skipIndicatorContainer_1ua34_1074._leftSkip_1ua34_1074{left:max(0px,env(safe-area-inset-left))}._skipIndicatorContainer_1ua34_1074._rightSkip_1ua34_1077{right:max(0px,env(safe-area-inset-right))}}._sourceSelectionContainer_1ua34_1082{display:flex;flex-direction:column;gap:1.5rem;background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:2rem;border-radius:var(--radius-xl);width:100%;box-shadow:var(--glass-shadow);animation:_slideUpIn_1ua34_1 .6s var(--ease-smooth)}._providerSelectContainer_1ua34_1097{display:flex;flex-direction:column;gap:.75rem;width:100%}._providerSelect_1ua34_1097,._sourceSelect_1ua34_1082{height:48px;padding:0 1.25rem;background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);color:var(--text-primary);font-size:.95rem;font-family:inherit;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2371717a' stroke-width='2' viewBox='0 0 12 12'%3E%3Cpolyline points='3 5 6 8 9 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1.25rem center;transition:all var(--transition-fast);width:100%;max-width:400px}._providerSelect_1ua34_1097:hover,._sourceSelect_1ua34_1082:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._providerSelect_1ua34_1097:focus,._sourceSelect_1ua34_1082:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-glow)}._providerSelect_1ua34_1097 option,._sourceSelect_1ua34_1082 option{background:var(--bg-tertiary);color:var(--text-primary)}._sourceSelectionContainer_1ua34_1082 h4,._providerSelectContainer_1ua34_1097 h4{margin:0;color:var(--text-tertiary);font-weight:700;text-transform:uppercase;font-size:.75rem;letter-spacing:.1em}._sourceButtons_1ua34_1153{display:flex;flex-wrap:wrap;gap:.75rem}._sourceButton_1ua34_1153{background:#ffffff0d;color:var(--text-secondary);border:1px solid var(--glass-border);padding:.75rem 1.5rem;border-radius:var(--radius-lg);cursor:pointer;font-size:.95rem;font-weight:600;transition:all var(--transition-normal)}._sourceButton_1ua34_1153:hover{background:#ffffff1a;border-color:var(--text-primary);color:var(--text-primary);transform:translateY(-2px)}._sourceButton_1ua34_1153._active_1ua34_908{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 8px 20px var(--accent-glow)}._detailsBox_1ua34_1185{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:2.5rem;border-radius:var(--radius-xl);display:flex;flex-direction:column;gap:1.5rem;box-shadow:var(--glass-shadow)}._detailsToggleBtn_1ua34_1198{background:#ffffff0d;border:1px solid var(--glass-border);color:var(--text-secondary);padding:.75rem 1.5rem;border-radius:var(--radius-lg);cursor:pointer;font-size:.95rem;font-weight:600;transition:all var(--transition-normal);display:flex;align-items:center;gap:.75rem;margin-top:2rem;width:fit-content}._detailsToggleBtn_1ua34_1198:hover{background:#ffffff1a;color:var(--text-primary);border-color:var(--text-primary);transform:translateY(-2px)}._detailsGridContainer_1ua34_1222{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:2rem;margin-top:2.5rem;background:#ffffff05;padding:2.5rem;border-radius:var(--radius-xl);border:1px solid var(--glass-border);animation:_fadeIn_1ua34_1 .6s var(--ease-smooth)}._detailItem_1ua34_1234{display:flex;flex-direction:column;gap:.5rem}._detailItem_1ua34_1234 strong{color:var(--text-tertiary);font-weight:700;font-size:.7rem;text-transform:uppercase;letter-spacing:.1em}._detailItem_1ua34_1234 span{color:var(--text-primary);font-size:1rem;font-weight:500}._animeStatus_1ua34_1254{display:inline-block;background:#10b9811a;color:#34d399;padding:.25rem .75rem;border-radius:var(--radius-sm);font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;border:1px solid rgba(16,185,129,.2)}._genresList_1ua34_1267{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.25rem}._genreTag_1ua34_1274{background:#ffffff0d;color:var(--text-secondary);padding:.4rem 1rem;border-radius:var(--radius-full);font-size:.85rem;font-weight:600;border:1px solid var(--glass-border);transition:all var(--transition-fast)}._genreTag_1ua34_1274:hover{background:#ffffff1a;color:var(--text-primary);border-color:var(--text-secondary);transform:translateY(-1px)}._loadingDetails_1ua34_1292{color:var(--text-muted);font-style:italic;text-align:center;padding:2rem}._descriptionSection_1ua34_1299{margin-top:2.5rem;padding:2.5rem;background:#ffffff05;border-radius:var(--radius-xl);border:1px solid var(--glass-border)}._descriptionSection_1ua34_1299 h3{font-size:1.25rem;font-weight:800;margin-bottom:1.5rem;color:var(--text-primary);text-transform:uppercase;letter-spacing:.05em;display:flex;align-items:center;gap:.75rem}._descriptionSection_1ua34_1299 h3:before{content:"";width:4px;height:20px;background:var(--accent);border-radius:var(--radius-full);box-shadow:0 0 10px var(--accent-glow)}._description_1ua34_1299{line-height:1.8;color:var(--text-secondary);font-size:1.05rem;margin:0}._epJumpControls_1ua34_1335{margin-bottom:1rem;padding:1rem;background:#ffffff08;border-radius:var(--radius-md);display:flex;flex-direction:column;gap:.8rem;border:1px solid var(--border-primary)}._epRangeButtons_1ua34_1346{display:flex;flex-wrap:wrap;gap:.5rem}._metaTags_1ua34_1352{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}._epRangeBtn_1ua34_1359{background:transparent;border:1px solid var(--border-primary);color:var(--text-secondary);padding:.3rem .6rem;border-radius:4px;cursor:pointer;font-size:.8rem}._epRangeBtn_1ua34_1359:hover{border-color:var(--accent);color:var(--accent)}._epJumpInputGroup_1ua34_1374{display:flex;gap:.5rem}._epJumpInputGroup_1ua34_1374 input{background:#0000004d;border:1px solid var(--border-primary);color:#fff;padding:.4rem .8rem;border-radius:4px;flex:1}._epJumpInputGroup_1ua34_1374 input:focus{outline:none;border-color:var(--accent)}._epJumpInputGroup_1ua34_1374 button{background:var(--accent);color:#fff;border:none;padding:.4rem 1rem;border-radius:4px;cursor:pointer}._epJumpInputGroup_1ua34_1374 button:hover{background:var(--accent-dark)}._videoContainer_1ua34_311._fullscreenActive_1ua34_1406{cursor:none;border-radius:0}._videoContainer_1ua34_311:fullscreen{width:100vw;height:100vh}._skipIndicatorContainer_1ua34_1074{position:absolute;top:0;width:30%;height:100%;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:60;overflow:hidden}._leftSkip_1ua34_1074{left:0}._rightSkip_1ua34_1077{right:0}._skipBubble_1ua34_972{background:#fff3;width:120px;height:120px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;animation:_skipRipple_1ua34_1 .6s ease-out forwards}._skipIcon_1ua34_976{font-size:2.5rem;color:#fff;margin-bottom:.5rem}._skipText_1ua34_979{color:#fff;font-weight:700;font-size:1rem}@keyframes _skipRipple_1ua34_1{0%{transform:scale(.5);opacity:0}50%{transform:scale(1.1);opacity:1}to{transform:scale(1.3);opacity:0}}._errorOverlay_1ua34_1037{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#000c;color:#fff;z-index:30;padding:2rem;text-align:center;gap:1rem;border-radius:inherit}._errorOverlay_1ua34_1037 p{margin:0;font-size:1.2rem;font-weight:500}._errorSubtext_1ua34_1503{color:var(--text-tertiary)!important;font-size:.9rem!important}._retryButton_1ua34_1047{background:var(--accent);color:#fff;border:none;padding:.6rem 2rem;border-radius:var(--radius-md);font-weight:600;cursor:pointer;transition:all .2s;margin-top:.5rem;box-shadow:0 4px 12px #8b5cf64d}._retryButton_1ua34_1047:hover{background:var(--accent-light);transform:translateY(-2px)}._playerPageLayout_n8o7e_1{display:grid;grid-template-columns:320px 1fr;gap:2.5rem;padding:2rem;width:100%;max-width:1800px;margin:0 auto;align-items:start;min-height:calc(100vh - var(--header-height));background-color:transparent;animation:_fadeIn_n8o7e_1 .8s var(--ease-smooth)}._episodeSidebar_n8o7e_15{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--radius-lg);overflow:visible;display:flex;flex-direction:column;box-shadow:var(--glass-shadow);animation:_slideUpIn_n8o7e_1 .8s var(--ease-smooth)}._playerMain_n8o7e_28{min-width:0;display:flex;flex-direction:column;gap:1.25rem;animation:_slideUpIn_n8o7e_1 .8s .1s var(--ease-smooth) both}._videoPlayerWrapper_n8o7e_36{width:100%;padding-top:56.25%;background-color:#000;border-radius:var(--radius-lg);overflow:hidden;overflow:clip;isolation:isolate;position:relative;box-shadow:0 20px 50px #00000080;border:1px solid var(--glass-border)}._playerInfoHeader_n8o7e_56{display:flex;gap:2.5rem;align-items:flex-start}._playerAnimeCard_n8o7e_62{width:140px;flex-shrink:0;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-xl);border:1px solid var(--glass-border);transform:translateZ(0);aspect-ratio:2/3;height:auto}._playerInfoContainer_n8o7e_74{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:3rem;border-radius:var(--radius-2xl);box-shadow:var(--glass-shadow);display:flex;flex-direction:column}._playerAnimeCard_n8o7e_62 img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s cubic-bezier(.2,.8,.2,1)}._playerAnimeCard_n8o7e_62:hover img{transform:scale(1.1)}._videoTitleSection_n8o7e_98{flex:1;display:flex;flex-direction:column;justify-content:flex-start;gap:1.5rem}._videoTitleSection_n8o7e_98 h1{margin:0;font-size:2.5rem;line-height:1.1;font-weight:800;color:var(--text-primary);letter-spacing:-.02em}._videoDescription_n8o7e_115{color:var(--text-secondary);line-height:1.7;font-size:1.05rem}@keyframes _fadeIn_n8o7e_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUpIn_n8o7e_1{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media(max-width:1280px){._playerPageLayout_n8o7e_1{grid-template-columns:280px 1fr;padding:1.5rem;gap:1.5rem}}@media(max-width:1024px){._playerPageLayout_n8o7e_1{display:flex;flex-direction:column;gap:2rem}._episodeSidebar_n8o7e_15{width:100%;height:auto;max-height:500px;position:static;order:2;overflow-y:auto;-webkit-overflow-scrolling:touch}._playerMain_n8o7e_28{order:1;width:100%}._playerInfoHeader_n8o7e_56{padding:0}}@media(max-width:768px){._playerPageLayout_n8o7e_1{padding:1rem;gap:1.5rem}._episodeSidebar_n8o7e_15{display:none}._playerMain_n8o7e_28{gap:1.5rem}._videoPlayerWrapper_n8o7e_36{border-radius:var(--radius-lg)}._playerInfoContainer_n8o7e_74{border-radius:var(--radius-xl);padding:1.5rem}._playerInfoHeader_n8o7e_56{flex-direction:row;align-items:flex-start;text-align:left;gap:1.5rem}._videoTitleSection_n8o7e_98 h1{font-size:1.75rem}._playerAnimeCard_n8o7e_62{width:100px}._episodeSidebar_n8o7e_15{border-radius:var(--radius-lg)}}@media(max-width:480px){._playerInfoHeader_n8o7e_56{flex-direction:column;align-items:center;text-align:center}._playerAnimeCard_n8o7e_62{width:120px}}@media(max-width:900px)and (orientation:landscape){._playerPageLayout_n8o7e_1{padding:0;gap:0}._videoPlayerWrapper_n8o7e_36{border-radius:0;height:100vh;padding-top:0}._playerInfoContainer_n8o7e_74{padding:1.5rem}}body.low-end ._playerPageLayout_n8o7e_1,body.low-end ._episodeSidebar_n8o7e_15,body.low-end ._playerInfoContainer_n8o7e_74{animation:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;box-shadow:none!important;background:var(--bg-secondary)!important}body.low-end ._videoPlayerWrapper_n8o7e_36{box-shadow:none!important;border-color:var(--border-primary)!important}body.low-end ._episodeSidebar_n8o7e_15{background:var(--bg-secondary)!important}._theaterMode_n8o7e_266{display:flex!important;justify-content:center!important;align-items:center!important;position:fixed!important;top:0!important;left:0!important;width:100vw!important;height:100vh!important;min-height:100vh!important;max-width:none!important;padding:2.5rem!important;margin:0!important;background-color:var(--bg-main)!important;backdrop-filter:blur(24px)!important;-webkit-backdrop-filter:blur(24px)!important;animation:_fadeIn_n8o7e_1 .4s var(--ease-smooth)!important;overflow:hidden!important;z-index:var(--z-overlay)!important}._theaterMode_n8o7e_266 ._playerMain_n8o7e_28{width:90%!important;max-width:1200px!important;height:auto!important;aspect-ratio:16/9!important;gap:0!important;margin:auto!important;padding:0!important;animation:_scaleUpIn_n8o7e_1 .4s cubic-bezier(.25,1,.5,1)!important}._theaterMode_n8o7e_266 ._videoPlayerWrapper_n8o7e_36{width:100%!important;height:100%!important;padding-top:0!important;border-radius:var(--radius-2xl)!important;border-color:#ffffff26!important;box-shadow:0 20px 60px #8b5cf626,0 0 100px #000000e6!important;overflow:hidden!important;position:relative!important}@keyframes _scaleUpIn_n8o7e_1{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}body.theater-mode header,body.theater-mode footer{display:none!important}body.theater-mode main{padding:0!important;max-width:none!important;margin:0!important;width:100vw!important;height:100vh!important}body.theater-mode{overflow:hidden!important;background:#000!important}@media(max-width:768px){._theaterMode_n8o7e_266{padding:1rem!important}._theaterMode_n8o7e_266 ._playerMain_n8o7e_28{width:100%!important;max-width:none!important}}._controlsOverlay_1b7ea_1{position:absolute;inset:0;opacity:1;transition:opacity .4s cubic-bezier(.4,0,.2,1);z-index:50;pointer-events:none;display:flex;flex-direction:column;justify-content:space-between;background:radial-gradient(circle,transparent 20%,rgba(0,0,0,.4) 100%)}._controlsOverlay_1b7ea_1>*{pointer-events:auto}._controlsOverlay_1b7ea_1._hidden_1b7ea_21{opacity:0;pointer-events:none;cursor:none}._topControls_1b7ea_27{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:var(--space-6);background:linear-gradient(to bottom,rgba(0,0,0,.85) 0%,rgba(0,0,0,.45) 60%,transparent 100%);padding:var(--space-8) var(--space-10);transition:transform .4s cubic-bezier(.2,.8,.2,1);z-index:10;pointer-events:auto}._backBtn_1b7ea_47{background:transparent;border:none;color:#ffffffd9;font-size:1.6rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast);padding:8px;border-radius:50%}._backBtn_1b7ea_47:hover{background:#0f0f1199;color:#fff;transform:scale(1.1)}._videoTitleInfo_1b7ea_67{display:flex;flex-direction:column;gap:.25rem}._animeTitle_1b7ea_73{font-size:1.4rem;font-weight:800;color:#fff;letter-spacing:-.01em;text-shadow:0 2px 4px rgba(0,0,0,.5)}._episodeNumber_1b7ea_81{font-size:.95rem;font-weight:600;color:var(--accent-light);letter-spacing:.02em;text-shadow:0 1px 2px rgba(0,0,0,.5)}._bottomControls_1b7ea_89{position:absolute;bottom:0;left:0;right:0;display:flex;flex-direction:column;gap:0;background:linear-gradient(to top,rgba(0,0,0,.95) 0%,rgba(0,0,0,.6) 50%,rgba(0,0,0,.25) 80%,transparent 100%);padding:0 clamp(1rem,4cqw,2rem) clamp(.75rem,2.5cqw,1.5rem);transition:transform .4s cubic-bezier(.2,.8,.2,1)}._progressBarContainer_1b7ea_108{width:100%;padding:10px 0 6px;cursor:pointer;position:relative;touch-action:none;display:flex;align-items:center}@media(pointer:coarse){._progressBarContainer_1b7ea_108{padding:14px 0 10px}._progressBarContainer_1b7ea_108 ._progressBar_1b7ea_108{height:6px}._progressBarContainer_1b7ea_108 ._thumb_1b7ea_127{transform:translate(-50%,-50%) scale(1)}}._progressBar_1b7ea_108{width:100%;height:4px;background-color:#ffffff1a;border-radius:4px;position:relative;transition:height .2s}._progressBarContainer_1b7ea_108:hover ._progressBar_1b7ea_108,._progressBarContainer_1b7ea_108._scrubbing_1b7ea_142 ._progressBar_1b7ea_108{height:6px}._watchedBar_1b7ea_146,._bufferedBar_1b7ea_147{position:absolute;top:0;left:0;height:100%;border-radius:4px}._watchedBar_1b7ea_146{background:var(--accent);background:linear-gradient(90deg,var(--accent) 0%,var(--accent-light) 100%);z-index:12;box-shadow:0 0 15px var(--accent-glow)}._bufferedBar_1b7ea_147{background-color:#fff3;z-index:11}._thumb_1b7ea_127{position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);width:14px;height:14px;background-color:#fff;border-radius:50%;z-index:15;transition:transform .2s cubic-bezier(.175,.885,.32,1.275);box-shadow:0 0 10px #00000080}._progressBarContainer_1b7ea_108:hover ._thumb_1b7ea_127,._progressBarContainer_1b7ea_108._scrubbing_1b7ea_142 ._thumb_1b7ea_127{transform:translate(-50%,-50%) scale(1)}._timeBubble_1b7ea_185{position:absolute;bottom:24px;transform:translate(-50%);background:#0f0f11f2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--glass-border);color:#fff;padding:6px 10px;border-radius:8px;font-size:.8rem;font-weight:700;opacity:0;transition:opacity .2s;pointer-events:none;white-space:nowrap;box-shadow:var(--shadow-lg)}._timeBubble_1b7ea_185:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#0f0f11f2}._progressBarContainer_1b7ea_108:hover ._timeBubble_1b7ea_185,._progressBarContainer_1b7ea_108._scrubbing_1b7ea_142 ._timeBubble_1b7ea_185{opacity:1}._skipSegment_1b7ea_219{position:absolute;top:0;height:100%;z-index:10;opacity:.4;transition:opacity .2s;border-radius:4px}._skipSegment_1b7ea_219._op_1b7ea_229{background-color:var(--color-success)}._skipSegment_1b7ea_219._ed_1b7ea_232{background-color:var(--accent-blue)}._skipSegment_1b7ea_219._recap_1b7ea_235{background-color:var(--color-warning)}._bottomControlsRow_1b7ea_239{display:flex;justify-content:space-between;align-items:center;width:100%;margin-top:0}._leftControls_1b7ea_247,._rightControls_1b7ea_248{display:flex;align-items:center;gap:1.25rem;gap:clamp(.5rem,2.5cqw,1.25rem)}._controlBtn_1b7ea_255{background:transparent;border:none;color:#fffc;font-size:1.1rem;cursor:pointer;transition:all var(--transition-fast);padding:8px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;min-width:2.125rem;min-height:2.125rem}@media(pointer:coarse){._controlBtn_1b7ea_255{padding:10px;min-width:2.75rem;min-height:2.75rem}}@container (max-width: 30rem){._bottomControls_1b7ea_89{padding:0 .75rem .75rem}._leftControls_1b7ea_247,._rightControls_1b7ea_248{gap:.2rem}._controlBtn_1b7ea_255{padding:5px;min-width:2.125rem;min-height:2.125rem;font-size:1rem}._theaterBtn_1b7ea_296{display:none}._nextEpisodeBtn_1b7ea_300{padding:.3rem .5rem;font-size:.7rem}}._controlBtn_1b7ea_255:hover{background:#ffffff1a;color:#fff;transform:translateY(-2px)}._controlBtn_1b7ea_255:focus-visible{outline:none;box-shadow:var(--shadow-focus)}._controlBtn_1b7ea_255._active_1b7ea_317{color:var(--accent)}._timeDisplay_1b7ea_321{font-size:.9rem;font-weight:600;color:#fffc;font-variant-numeric:tabular-nums;letter-spacing:.02em}._skipControls_1b7ea_329{display:flex;align-items:center;gap:var(--space-2)}._skipBtn_1b7ea_335{background:transparent;border:none;color:#ffffffb3;cursor:pointer;font-size:1.3rem;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast);padding:6px}._skipBtn_1b7ea_335:hover{color:#fff;transform:scale(1.1)}._nextEpisodeBtn_1b7ea_300{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-md);padding:.45rem .8rem;color:#fffc;font-weight:600;font-size:.9rem;display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}._nextEpisodeBtn_1b7ea_300:hover{background:#ffffff1a;color:#fff;transform:translateY(-1px);border-color:#fff3}._volumeContainer_1b7ea_376{display:flex;align-items:center;position:relative}._volumeSlider_1b7ea_382{width:0;opacity:0;transform:scaleX(0);transform-origin:left;transition:all .3s var(--ease-smooth);cursor:pointer;margin-left:8px;-webkit-appearance:none;appearance:none;background:transparent;height:20px}._volumeContainer_1b7ea_376:hover ._volumeSlider_1b7ea_382,._volumeSlider_1b7ea_382:focus{width:80px;opacity:1;transform:scaleX(1)}._volumeSlider_1b7ea_382::-webkit-slider-runnable-track{width:100%;height:4px;background:linear-gradient(to right,var(--accent) 0%,var(--accent) var(--volume-percent, 0%),rgba(255,255,255,.2) var(--volume-percent, 0%),rgba(255,255,255,.2) 100%);border-radius:4px}._volumeSlider_1b7ea_382::-moz-range-track{width:100%;height:4px;background:#fff3;border-radius:4px}._volumeSlider_1b7ea_382::-moz-range-progress{height:4px;background:var(--accent);border-radius:4px}._volumeSlider_1b7ea_382::-webkit-slider-thumb{-webkit-appearance:none;height:12px;width:12px;border-radius:50%;background:#fff;margin-top:-4px;box-shadow:0 0 5px #00000080}@media(max-width:900px)and (orientation:landscape){._playerPageLayout_1b7ea_440{padding:0;gap:0}._videoPlayerWrapper_1b7ea_444{border-radius:0;height:100vh;padding-top:0}._playerInfoContainer_1b7ea_449{padding:1.5rem}}body.low-end ._controlsOverlay_1b7ea_1,body.low-end div._controlsOverlay_1b7ea_1{background:none;transition:none}body.low-end ._bottomControls_1b7ea_89,body.low-end div._bottomControls_1b7ea_89{backdrop-filter:none;-webkit-backdrop-filter:none;background:#1a1a1c;box-shadow:none;transition:none}body.low-end ._controlBtn_1b7ea_255._active_1b7ea_317,body.low-end button._controlBtn_1b7ea_255._active_1b7ea_317{color:var(--accent)}body.low-end ._progressBar_1b7ea_108,body.low-end div._progressBar_1b7ea_108{height:4px;transition:none}body.low-end ._watchedBar_1b7ea_146,body.low-end div._watchedBar_1b7ea_146{background:var(--accent);box-shadow:none}body.low-end ._thumb_1b7ea_127,body.low-end div._thumb_1b7ea_127{transition:none;box-shadow:none}body.low-end ._controlBtn_1b7ea_255:hover,body.low-end ._nextEpisodeBtn_1b7ea_300:hover,body.low-end button._controlBtn_1b7ea_255:hover,body.low-end button._nextEpisodeBtn_1b7ea_300:hover{transform:none}body.low-end ._timeBubble_1b7ea_185,body.low-end div._timeBubble_1b7ea_185{-webkit-backdrop-filter:none;backdrop-filter:none;background:#111;transition:none}@media(max-width:768px){._topControls_1b7ea_27{padding:12px 16px;gap:.75rem}._backBtn_1b7ea_47{font-size:1.2rem;padding:4px}._animeTitle_1b7ea_73{font-size:1rem;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._episodeNumber_1b7ea_81{font-size:.75rem}._bottomControls_1b7ea_89{padding:0 16px 16px}._timeDisplay_1b7ea_321{font-size:.75rem;margin-right:2px}._volumeContainer_1b7ea_376{display:flex;flex-direction:column-reverse;align-items:center;position:relative}._volumeSlider_1b7ea_382{display:block!important;position:absolute;bottom:100%;left:50%;width:0;height:32px;opacity:0;transform:translate(-50%) rotate(-90deg) scaleX(0);transform-origin:center;transition:all .3s var(--ease-smooth);margin:0 0 20px;background:#0f0f11f2;border:1px solid var(--glass-border);padding:4px 12px;border-radius:16px;z-index:var(--z-dropdown);pointer-events:none}._volumeContainer_1b7ea_376._visible_1b7ea_566 ._volumeSlider_1b7ea_382,._volumeContainer_1b7ea_376:hover ._volumeSlider_1b7ea_382,._volumeContainer_1b7ea_376:active ._volumeSlider_1b7ea_382,._volumeSlider_1b7ea_382:focus{width:100px;opacity:1;transform:translate(-50%) rotate(-90deg) scaleX(1);pointer-events:auto}._nextEpisodeBtn_1b7ea_300{padding:.35rem .6rem;font-size:.75rem}}@media(max-width:480px){._shortcuts_1b7ea_584{gap:.25rem}._timeDisplay_1b7ea_321{display:none}._topControls_1b7ea_27{padding:8px 12px}}._statusArea_1xccu_1{display:flex;flex-direction:column;align-items:flex-start;gap:.6rem;background:var(--bg-secondary);border:1px solid var(--border-primary);padding:.75rem 1.25rem;border-radius:var(--radius-lg);margin-top:.5rem;margin-bottom:0;color:var(--text-secondary);box-shadow:var(--shadow-lg);width:fit-content;max-width:100%;-webkit-user-select:none;user-select:none;flex-wrap:wrap}._toggleBtn_1xccu_20{display:inline-flex;align-items:center;gap:.5rem;background:transparent;border:none;color:var(--text-secondary);font-size:.8rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;padding:.15rem .25rem;border-radius:var(--radius-sm);transition:color var(--transition-fast);pointer-events:auto}._toggleBtn_1xccu_20:hover{color:var(--text-primary)}._toggleBtn_1xccu_20 svg{color:var(--accent)}._shortcuts_1xccu_46{display:flex;gap:1.5rem;align-items:center;flex-wrap:wrap;padding-top:.6rem;border-top:1px solid var(--border-primary);width:100%}._shortcutGroup_1xccu_56{display:flex;gap:1rem;align-items:center;flex-wrap:nowrap}._shortcut_1xccu_46{display:flex;align-items:center;gap:.3rem;white-space:nowrap}._key_1xccu_70{background:#ffffff14;padding:.15rem .4rem;border-radius:5px;border:1px solid rgba(255,255,255,.1);font-weight:800;color:var(--text-primary);font-size:.75rem;min-width:1.4rem;height:1.4rem;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);box-shadow:0 1.5px #0000004d}._key_1xccu_70+._key_1xccu_70{margin-left:-.15rem}._label_1xccu_91{color:var(--text-tertiary);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}@media(max-width:768px){._statusArea_1xccu_1{display:none}}._episodeListContainer_1hhgs_1{display:flex;flex-direction:column;height:100%;min-height:0;background:transparent}._drawerContainer_1hhgs_9{height:auto;min-height:100%}._episodeListHeader_1hhgs_14{background:transparent;padding:var(--space-6);border-bottom:1px solid var(--glass-border)}._drawerHeader_1hhgs_20{position:sticky;top:0;background:#0c0c0ffa;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}._episodeListTitle_1hhgs_28{margin:0 0 var(--space-5) 0;font-size:.85rem;font-weight:800;color:var(--text-tertiary);display:flex;align-items:center;gap:var(--space-3);letter-spacing:.1em;text-transform:uppercase}._rangeSelector_1hhgs_40{display:flex;flex-wrap:wrap;gap:var(--space-2)}._rangeButton_1hhgs_46{background:#ffffff0d;border:1px solid var(--glass-border);color:var(--text-secondary);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:.8rem;font-weight:600;transition:all var(--transition-fast);cursor:pointer}._rangeButton_1hhgs_46:hover{border-color:var(--text-secondary);color:var(--text-primary);background:#ffffff1a}._rangeButton_1hhgs_46:focus-visible{outline:none;box-shadow:var(--shadow-focus)}._rangeButton_1hhgs_46._active_1hhgs_69{background:var(--accent);color:#fff;border-color:var(--accent)}._episodeList_1hhgs_1{flex:1;display:flex;flex-direction:column;padding:var(--space-4);overflow-y:auto;-webkit-overflow-scrolling:touch;min-height:0;touch-action:pan-y;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.14) transparent}._drawerList_1hhgs_88{overflow:visible;-webkit-overflow-scrolling:auto;touch-action:pan-y}._episodeList_1hhgs_1::-webkit-scrollbar{width:6px}._episodeList_1hhgs_1::-webkit-scrollbar-track{background:transparent}._episodeList_1hhgs_1::-webkit-scrollbar-thumb{background:#ffffff24;background-clip:padding-box;border-radius:var(--radius-full);border:2px solid transparent}._episodeList_1hhgs_1:hover::-webkit-scrollbar-thumb{background-color:#ffffff47}._episodeList_1hhgs_1::-webkit-scrollbar-thumb:hover{background-color:var(--accent)}._episodeItem_1hhgs_117{padding:var(--space-4) var(--space-5);margin-bottom:var(--space-2);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-normal);color:var(--text-secondary);font-weight:600;display:flex;justify-content:space-between;align-items:center;font-size:.9rem;border:1px solid transparent}._episodeItem_1hhgs_117:hover{background:#ffffff0d;color:var(--text-primary);transform:translate(6px);border-color:var(--glass-border)}._episodeItem_1hhgs_117:focus-visible{outline:none;box-shadow:var(--shadow-focus)}._episodeItem_1hhgs_117._watched_1hhgs_144{color:var(--text-muted);opacity:.6}._episodeItem_1hhgs_117._active_1hhgs_69{background:#8b5cf61a;color:var(--accent-light);border:1px solid rgba(139,92,246,.3)}._episodeItem_1hhgs_117._active_1hhgs_69:hover{transform:none;background:#8b5cf626}._episodeItem_1hhgs_117 span{display:flex;align-items:center;gap:var(--space-3)}._shell_cys6s_1{position:fixed;inset:0;z-index:var(--z-drawer);display:flex;align-items:flex-end;justify-content:center}._overlay_cys6s_10{position:absolute;inset:0;border:0;padding:0;background:#0000008f;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);animation:_fadeIn_cys6s_1 .2s ease-out}._drawer_cys6s_21{position:relative;z-index:1;width:min(100vw,100%);max-height:86vh;background:#0c0c0ffa;border-radius:var(--radius-lg) var(--radius-lg) 0 0;border:1px solid var(--glass-border);border-bottom:none;display:flex;flex-direction:column;overflow:hidden;animation:_slideUpIn_cys6s_1 .25s ease-out}@keyframes _fadeIn_cys6s_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUpIn_cys6s_1{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}._handle_cys6s_56{width:52px;height:5px;border-radius:999px;background:#ffffff2e;margin:.7rem auto 0}._header_cys6s_64{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1rem 1rem .9rem;border-bottom:1px solid var(--glass-border)}._headerCopy_cys6s_73{display:flex;flex-direction:column;gap:.25rem}._kicker_cys6s_79{color:var(--text-tertiary);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.14em}._title_cys6s_87{margin:0;font-size:1.1rem;font-weight:800;color:var(--text-primary)}._closeBtn_cys6s_94{width:38px;height:38px;border-radius:999px;border:1px solid var(--glass-border);background:#ffffff0d;color:var(--text-primary);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}._closeBtn_cys6s_94:hover{background:#ffffff1a}._closeBtn_cys6s_94:focus-visible{outline:none;box-shadow:var(--shadow-focus)}._body_cys6s_116{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y}._container_hp53a_1{display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}._titleContainer_hp53a_8{display:flex;flex-direction:column;gap:1rem}._scheduleInfo_hp53a_14{display:flex;gap:1rem;font-size:.95rem;color:var(--text-tertiary);align-items:center}._status_hp53a_22{background:#8b5cf61a;color:var(--accent-light);border:1px solid rgba(139,92,246,.2);padding:.35rem .85rem;border-radius:var(--radius-full);font-weight:700;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em}._nextEpisode_hp53a_34{background:#ffffff0d;color:var(--text-secondary);padding:.35rem .85rem;border-radius:var(--radius-full);font-size:.8rem;font-weight:600;border:1px solid var(--glass-border)}._watchlistBtn_hp53a_44{background:#ffffff0d;color:var(--text-primary);border:1px solid var(--glass-border);padding:.75rem 1.5rem;border-radius:var(--radius-lg);font-weight:600;cursor:pointer;transition:all var(--transition-normal);display:flex;align-items:center;gap:.6rem;font-size:.9rem}._watchlistBtn_hp53a_44:hover{background:#ffffff1a;border-color:var(--text-secondary);transform:translateY(-2px)}._watchlistBtn_hp53a_44._inList_hp53a_65{background:#10b9811a;border-color:#10b98166;color:var(--color-success)}._watchlistBtn_hp53a_44._inList_hp53a_65:hover{background:#10b98126;border-color:var(--color-success)}._sourceSelectionContainer_hp53a_76{display:flex;flex-direction:column;gap:1.5rem;background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:2rem;border-radius:var(--radius-xl);width:100%}._providerSelectContainer_hp53a_89{display:flex;flex-direction:column;gap:1rem;width:100%}._providerSelect_hp53a_89,._sourceSelect_hp53a_76{height:44px;padding:0 1.25rem;background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);color:var(--text-primary);font-size:.95rem;font-family:inherit;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2371717a' stroke-width='2' viewBox='0 0 12 12'%3E%3Cpolyline points='3 5 6 8 9 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1.25rem center;transition:all var(--transition-fast);width:100%;max-width:400px}._providerSelect_hp53a_89:hover,._sourceSelect_hp53a_76:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._providerSelect_hp53a_89:focus,._sourceSelect_hp53a_76:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}._providerSelect_hp53a_89 option,._sourceSelect_hp53a_76 option{background:var(--bg-tertiary);color:var(--text-primary)}._sourceSelectionContainer_hp53a_76 h4,._providerSelectContainer_hp53a_89 h4{margin:0;color:var(--text-tertiary);font-weight:700;text-transform:uppercase;font-size:.75rem;letter-spacing:.1em}._sourceButtons_hp53a_145{display:flex;flex-wrap:wrap;gap:.75rem}._sourceButton_hp53a_145{background:#ffffff0d;color:var(--text-secondary);border:1px solid var(--glass-border);padding:.75rem 1.5rem;border-radius:var(--radius-lg);cursor:pointer;font-size:.95rem;font-weight:600;transition:all var(--transition-normal)}._sourceButton_hp53a_145:hover{background:#ffffff1a;border-color:var(--text-primary);color:var(--text-primary);transform:translateY(-2px)}._sourceButton_hp53a_145._active_hp53a_170{background:var(--accent);border-color:var(--accent);color:#fff}._detailsBox_hp53a_176{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:2.5rem;border-radius:var(--radius-xl);display:flex;flex-direction:column;gap:1.5rem}._detailsToggle_hp53a_188{background:#ffffff0d;border:1px solid var(--glass-border);color:var(--text-secondary);padding:.75rem 1.5rem;border-radius:var(--radius-lg);cursor:pointer;font-size:.95rem;font-weight:600;transition:all var(--transition-normal);display:flex;align-items:center;gap:.75rem;margin-top:2rem;width:fit-content}._detailsToggle_hp53a_188:hover{background:#ffffff1a;color:var(--text-primary);border-color:var(--text-primary);transform:translateY(-2px)}._detailsToggle_hp53a_188 h3{margin:0;font-size:1.25rem;font-weight:600}._detailsGridContainer_hp53a_218{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:2rem;margin-top:2.5rem;background:#ffffff05;padding:2.5rem;border-radius:var(--radius-xl);border:1px solid var(--glass-border);animation:_fadeIn_hp53a_1 .6s var(--ease-smooth)}@keyframes _fadeIn_hp53a_1{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}._detailItem_hp53a_242{display:flex;flex-direction:column;gap:.5rem}._detailItem_hp53a_242 strong{color:var(--text-tertiary);font-weight:700;font-size:.7rem;text-transform:uppercase;letter-spacing:.1em}._detailItem_hp53a_242 span{color:var(--text-primary);font-size:1rem;font-weight:500}._animeStatus_hp53a_262{display:inline-block;background:#10b9811a;color:var(--color-success);padding:.25rem .75rem;border-radius:var(--radius-sm);font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;border:1px solid rgba(16,185,129,.2)}._genresList_hp53a_275{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.25rem}._genreTag_hp53a_282{background:#ffffff0d;color:var(--text-secondary);padding:.4rem 1rem;border-radius:var(--radius-full);font-size:.85rem;font-weight:600;border:1px solid var(--glass-border);transition:all var(--transition-fast)}._genreTag_hp53a_282:hover{background:#ffffff1a;color:var(--text-primary);border-color:var(--text-secondary);transform:translateY(-1px)}._loadingDetails_hp53a_300{color:var(--text-muted);font-style:italic;text-align:center;padding:2rem}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{p as t,e as r,m as s}from"./vendor-rLNfZm7Y.js";function u(){const{id:e,episodeNumber:a}=t();return r(s,{to:a?`/watch/${e}/${a}`:`/watch/${e}`,replace:!0})}export{u as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as $,d as E,e}from"./vendor-rLNfZm7Y.js";import{F as Z,Q as o}from"./index-CpjgU8ou.js";import{M as C,S as w,T as ee,B as ne,d as te,D as d}from"./AvSyncCalibrator-vqErH7Cm.js";const le="_settingsPanel_3tjdq_1",ae="_header_3tjdq_33",se="_backBtn_3tjdq_56",oe="_contentWrapper_3tjdq_76",ie="_menuContent_3tjdq_82",re="_menuItem_3tjdq_89",ce="_selected_3tjdq_114",de="_currentValue_3tjdq_134",ue="_menuNote_3tjdq_141",me="_menuError_3tjdq_150",n={settingsPanel:le,header:ae,backBtn:se,contentWrapper:oe,menuContent:ie,menuItem:re,selected:ce,currentValue:de,menuNote:ue,menuError:me},he=(x,P)=>{const{isOpen:y,onClose:pe,videoSources:be,currentSource:I,currentLink:S,onSourceChange:T,subtitles:V,activeSubtitleTrack:u,onSubtitleChange:z,subtitleSettings:l,onSubtitleSettingsChange:a,useNativeControls:v,onNativeControlsToggle:B,anime4kEnabled:p,onAnime4kToggle:D,anime4kSupported:O,anime4kProfile:i,onAnime4kProfileChange:b,anime4kInitializing:j,anime4kError:A,videoDelayEnabled:g,onVideoDelayToggle:q,videoDelayMs:N,onVideoDelayChange:U,onCalibrateAvSync:M,isAutoSkipEnabled:m,onAutoSkipChange:L,isAutoplayEnabled:h,onAutoplayChange:R}=x,[s,r]=E("main"),[f,k]=E(null),_=f??N,F=()=>{f!==null&&(U(f),k(null))};$.useEffect(()=>{if(!y){const t=setTimeout(()=>r("main"),300);return()=>clearTimeout(t)}},[y]),$.useEffect(()=>{k(null)},[N]);const G=()=>e("div",{className:n.menuContent,children:[e("button",{className:n.menuItem,onClick:()=>r("quality"),children:[e("span",{children:"Quality"}),e("span",{className:n.currentValue,children:S?.resolutionStr||"Auto"})]}),e("button",{className:n.menuItem,onClick:()=>r("subtitles"),children:[e("span",{children:"Subtitles"}),e("span",{className:n.currentValue,children:u||"Off"})]}),e("button",{className:n.menuItem,onClick:()=>r("subtitle-style"),children:e("span",{children:"Subtitle Style"})}),e("button",{className:`${n.menuItem} ${v?n.selected:""}`,onClick:()=>{const t=!v;B(t),localStorage.setItem("playerUseNativeControls",t.toString())},children:[e("span",{children:"Native Controls"}),v&&e(o,{size:12})]}),O&&e("button",{className:`${n.menuItem} ${p?n.selected:""}`,onClick:()=>{D(!p)},children:[e("span",{children:"Anime4K Upscaler"}),p&&e(o,{size:12})]}),O&&p&&e("button",{className:n.menuItem,onClick:()=>r("upscaler"),children:e("span",{children:"Upscaler Settings"})}),e("button",{className:n.menuItem,onClick:()=>r("av-sync"),children:[e("span",{children:"A/V Sync"}),e("span",{className:n.currentValue,children:g?`${N}ms`:"Off"})]}),e("button",{className:n.menuItem,onClick:()=>r("playback"),children:[e("span",{children:"Playback"}),e("span",{className:n.currentValue,children:[m?"Auto-skip On":null,h?"Autoplay On":null].filter(Boolean).join(" • ")||"Off"})]})]}),W=()=>{const t=I?.links.sort((c,J)=>(parseInt(J.resolutionStr)||0)-(parseInt(c.resolutionStr)||0))||[];return e("div",{className:n.menuContent,children:t.map(c=>e("button",{className:`${n.menuItem} ${S?.resolutionStr===c.resolutionStr?n.selected:""} `,onClick:()=>T(I,c),children:[e("span",{children:c.resolutionStr}),S?.resolutionStr===c.resolutionStr&&e(o,{size:12})]},c.resolutionStr))})},Q=()=>e("div",{className:n.menuContent,children:[e("button",{className:`${n.menuItem} ${u==="off"?n.selected:""} `,onClick:()=>z("off"),children:[e("span",{children:"Off"}),u==="off"&&e(o,{size:12})]}),V.map(t=>e("button",{className:`${n.menuItem} ${u===(t.label||t.lang)?n.selected:""} `,onClick:()=>z(t.label||t.lang),children:[e("span",{children:t.label}),u===(t.label||t.lang)&&e(o,{size:12})]},t.label))]}),H=()=>e("div",{className:n.menuContent,children:[e(C,{label:"Font Size",display:l.fontSize.toFixed(1),min:.5,max:10,step:.5,value:l.fontSize,percent:(l.fontSize-.5)/9.5*100,onChange:t=>a("fontSize",t)}),e(C,{label:"Vertical Position",display:`${l.position}`,min:0,max:100,step:1,value:l.position,percent:l.position,onChange:t=>a("position",Math.round(t))}),e(C,{label:"Background Opacity",display:`${Math.round(l.bgOpacity*100)}%`,min:0,max:1,step:.05,value:l.bgOpacity,percent:l.bgOpacity*100,onChange:t=>a("bgOpacity",t)}),e(w,{label:"Text Color",colors:ee,value:l.textColor,onChange:t=>a("textColor",t)}),e(w,{label:"Background Color",colors:ne,value:l.bgColor,onChange:t=>a("bgColor",t)}),e(te,{label:"Text Edge",options:["shadow","outline","none"],value:l.edge,onChange:t=>a("edge",t)}),e("button",{type:"button",className:`${n.menuItem} ${l.bold?n.selected:""}`,onClick:()=>a("bold",!l.bold),children:[e("span",{children:"Bold Text"}),l.bold&&e(o,{size:12})]}),e("button",{type:"button",className:n.menuItem,onClick:()=>{a("fontSize",d.fontSize),a("position",d.position),a("bgOpacity",d.bgOpacity),a("bgColor",d.bgColor),a("textColor",d.textColor),a("edge",d.edge),a("bold",d.bold)},children:e("span",{children:"Reset to Defaults"})})]}),K=()=>e("div",{className:n.menuContent,children:[j&&e("div",{className:n.menuNote,role:"status",children:"Preparing GPU, this can take a few seconds…"}),A&&e("div",{className:n.menuError,role:"alert",children:["Upscaler failed: ",A]}),e("button",{className:`${n.menuItem} ${i==="low"?n.selected:""}`,onClick:()=>b("low"),children:[e("div",{children:[e("div",{children:"Low"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Lightest, best for weaker GPUs"})]}),i==="low"&&e(o,{size:12})]}),e("button",{className:`${n.menuItem} ${i==="balanced"?n.selected:""}`,onClick:()=>b("balanced"),children:[e("div",{children:[e("div",{children:"Balanced"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Source + display aware"})]}),i==="balanced"&&e(o,{size:12})]}),e("button",{className:`${n.menuItem} ${i==="high"?n.selected:""}`,onClick:()=>b("high"),children:[e("div",{children:[e("div",{children:"High"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Aggressive, needs strong GPU"})]}),i==="high"&&e(o,{size:12})]}),e("button",{className:`${n.menuItem} ${i==="denoise"?n.selected:""}`,onClick:()=>b("denoise"),children:[e("div",{children:[e("div",{children:"Denoise"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Denoise + upscale noisy, compressed sources"})]}),i==="denoise"&&e(o,{size:12})]})]}),X=()=>e("div",{className:n.menuContent,children:[e("button",{type:"button",className:`${n.menuItem} ${m?n.selected:""}`,onClick:()=>L(!m),"aria-pressed":m,children:[e("span",{children:"Auto-skip openings and endings"}),e("span",{className:n.currentValue,children:m?"On":"Off"})]}),e("div",{className:n.menuNote,children:"Automatically jump past opening, ending and recap segments when detected."}),e("button",{type:"button",className:`${n.menuItem} ${h?n.selected:""}`,onClick:()=>R(!h),"aria-pressed":h,children:[e("span",{children:"Autoplay next episode"}),e("span",{className:n.currentValue,children:h?"On":"Off"})]}),e("div",{className:n.menuNote,children:"Automatically start the next episode when this one ends."})]}),Y=()=>e("div",{className:n.menuContent,children:[e("button",{className:`${n.menuItem} ${g?n.selected:""}`,onClick:()=>q(!g),children:[e("span",{children:"Video delay"}),g&&e(o,{size:12})]}),e(C,{label:"Video delay",display:`${_}ms`,min:0,max:500,step:5,value:_,percent:_/500*100,onChange:t=>k(Math.round(t)),onCommit:F}),e("div",{className:n.menuNote,children:"For Bluetooth headsets where audio arrives late. Video is held back via canvas; audio plays untouched."}),e("button",{className:n.menuItem,onClick:M,children:e("span",{children:"Calibrate…"})})]});return y?e("div",{ref:P,className:n.settingsPanel,onClick:t=>t.stopPropagation(),children:[e("div",{className:n.header,children:[s!=="main"&&e("button",{className:n.backBtn,onClick:()=>r("main"),children:e(Z,{})}),e("h3",{children:s==="main"?"Settings":s.charAt(0).toUpperCase()+s.slice(1).replace("-"," ")})]}),e("div",{className:n.contentWrapper,children:[s==="main"&&G(),s==="quality"&&W(),s==="subtitles"&&Q(),s==="subtitle-style"&&H(),s==="upscaler"&&K(),s==="av-sync"&&Y(),s==="playback"&&X()]})]}):null},Se=$.forwardRef(he);export{Se as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._settingsPanel_3tjdq_1{position:absolute;bottom:clamp(4rem,12vh,6.25rem);right:clamp(.5rem,3vw,1.5rem);width:max-content;min-width:12rem;max-width:min(19rem,calc(100vw - 1.5rem));font-size:.85rem;background:var(--glass-bg);backdrop-filter:blur(25px);-webkit-backdrop-filter:blur(25px);border:1px solid var(--glass-border);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--glass-shadow);z-index:60;animation:_slideUp_3tjdq_1 .3s var(--ease-smooth)}@keyframes _slideUp_3tjdq_1{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}._header_3tjdq_33{display:flex;align-items:center;padding:.55rem .75rem;border-bottom:1px solid var(--glass-border);position:relative;min-height:2.5rem}._header_3tjdq_33 h3{margin:0;font-size:.72rem;font-weight:800;flex-grow:1;text-align:center;text-transform:uppercase;letter-spacing:.1em;color:var(--text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._backBtn_3tjdq_56{background:transparent;border:none;color:#fff;cursor:pointer;position:absolute;left:.5rem;padding:.375rem;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast)}._backBtn_3tjdq_56:hover{background:#ffffff1a;transform:translate(-2px)}._contentWrapper_3tjdq_76{max-height:min(56vh,22rem);overflow-y:auto;-webkit-overflow-scrolling:touch}._menuContent_3tjdq_82{display:flex;flex-direction:column;padding:.375rem;gap:.125rem}._menuItem_3tjdq_89{background:transparent;border:none;color:var(--text-secondary);padding:.5rem .75rem;min-height:2rem;text-align:left;display:flex;justify-content:space-between;align-items:center;gap:.75rem;cursor:pointer;font-size:.85rem;font-weight:600;border-radius:var(--radius-md);transition:all var(--transition-fast);white-space:nowrap}._menuItem_3tjdq_89:hover{background:#ffffff0d;color:var(--text-primary);transform:translate(4px)}._menuItem_3tjdq_89._selected_3tjdq_114{color:var(--accent-light);background:#8b5cf61a}._presetSelect_3tjdq_119{background:#ffffff0d;border:1px solid var(--glass-border);color:var(--text-primary);padding:.25rem .5rem;border-radius:var(--radius-md);font-size:.8rem;cursor:pointer;outline:none}._presetSelect_3tjdq_119:focus{border-color:var(--accent)}._currentValue_3tjdq_134{color:var(--text-tertiary);font-size:.75rem;font-weight:500;font-variant-numeric:tabular-nums}._menuNote_3tjdq_141{color:var(--text-tertiary);font-size:.72rem;font-weight:500;line-height:1.5;padding:.375rem .75rem;overflow-wrap:break-word}._menuError_3tjdq_150{color:#f87171;font-size:.75rem;font-weight:600;padding:.375rem .75rem;word-break:break-word}._contentWrapper_3tjdq_76::-webkit-scrollbar{width:4px}._contentWrapper_3tjdq_76::-webkit-scrollbar-thumb{background:var(--glass-border);border-radius:2px}@media(pointer:coarse){._settingsPanel_3tjdq_1{font-size:.9rem}._menuItem_3tjdq_89{min-height:2.75rem;padding:.625rem .875rem}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as c,e as t,f as H}from"./vendor-rLNfZm7Y.js";import{b as X,c as Y,g as L,at as O,h as j,al as z}from"./index-CpjgU8ou.js";const G="_section_1bmqt_1",J="_header_1bmqt_10",K="_headerToggle_1bmqt_20",V="_headerActions_1bmqt_34",W="_title_1bmqt_40",Z="_badge_1bmqt_50",ee="_clearBtn_1bmqt_65",te="_nextBtn_1bmqt_83",ne="_list_1bmqt_101",re="_item_1bmqt_114",ae="_active_1bmqt_134",oe="_dragging_1bmqt_142",se="_dragHandle_1bmqt_149",ce="_thumbnail_1bmqt_167",le="_meta_1bmqt_175",ie="_name_1bmqt_182",ue="_episode_1bmqt_204",de="_iconBtn_1bmqt_210",r={section:G,header:J,headerToggle:K,headerActions:V,title:W,badge:Z,clearBtn:ee,nextBtn:te,list:ne,item:re,active:ae,dragging:oe,dragHandle:se,thumbnail:ce,meta:le,name:ie,episode:ue,iconBtn:de},me=({item:a,isActive:q,index:p,onRemove:P,onTouchPointerDown:y,onTouchPointerMove:B,onTouchPointerUp:w,onTouchPointerCancel:I,shouldIgnoreClick:b,onDragStart:C,onDragEnter:_,onDragEnd:s,isDragging:f})=>{const o=H(),{titlePreference:l}=L(),i=a[l]||a.name||"Unknown show";return t("div",{"data-queue-index":p,className:`${r.item} ${q?r.active:""} ${f?r.dragging:""}`,draggable:!0,onDragStart:C,onDragEnter:_,onDragOver:u=>u.preventDefault(),onDragEnd:s,onPointerDown:u=>y(p,u),onPointerMove:B,onPointerUp:w,onPointerCancel:I,children:[t("button",{className:r.dragHandle,type:"button","aria-label":"Drag queue item",children:t(O,{})}),t("img",{className:r.thumbnail,src:j(a.thumbnail||"",72,96),alt:i,onError:u=>{u.currentTarget.src="/placeholder.svg"}}),t("div",{className:r.meta,children:[t("button",{className:r.name,type:"button",onClick:()=>{b()||o(`/watch/${a.showId}/${a.episodeNumber}`)},children:i}),t("div",{className:r.episode,children:["Episode ",a.episodeNumber]})]}),t("button",{className:r.iconBtn,type:"button",onClick:()=>{b()||P(a)},"aria-label":`Remove ${i} episode ${a.episodeNumber} from queue`,children:t(z,{})})]})},pe=({title:a="Queue",eyebrow:q,items:p,currentShowId:P,currentEpisode:y,onRemove:B,onReorder:w,onNextQueue:I,onClear:b,showClearAll:C=!1,defaultExpanded:_=!0})=>{const[s,f]=c.useState([]),[o,l]=c.useState(null),[i,u]=c.useState(_),N=c.useRef(null),T=c.useRef(null),d=c.useRef(null),m=c.useRef(!1),v=c.useRef(!1);c.useEffect(()=>{f(p)},[p]),c.useEffect(()=>{u(_)},[_]);const R=e=>{l(e)},E=e=>{if(o===null||o===e)return;const n=[...s],h=n[o];n.splice(o,1),n.splice(e,0,h),l(e),f(n)},$=()=>{o!==null&&w(s.map(e=>({id:e.id,showId:e.showId,episodeNumber:e.episodeNumber}))),l(null)},x=(e=!1)=>{d.current!==null&&(window.clearTimeout(d.current),d.current=null),e&&m.current&&(w(s.map(n=>({id:n.id,showId:n.showId,episodeNumber:n.episodeNumber}))),v.current=!0,window.setTimeout(()=>{v.current=!1},0)),N.current=null,T.current=null,m.current=!1,l(null)},k=(e,n)=>{if(n.pointerType==="mouse")return;const h=n.currentTarget,g=n.pointerId;N.current=n.pointerId,T.current={x:n.clientX,y:n.clientY},d.current!==null&&window.clearTimeout(d.current),d.current=window.setTimeout(()=>{m.current=!0,l(e);try{h.setPointerCapture(g)}catch{}},220)},A=e=>{if(e.pointerType==="mouse"||N.current!==e.pointerId)return;if(!m.current&&T.current){const F=Math.abs(e.clientX-T.current.x),M=Math.abs(e.clientY-T.current.y);(F>8||M>8)&&x(!1);return}if(!m.current)return;e.preventDefault();const h=document.elementFromPoint(e.clientX,e.clientY)?.closest?.("[data-queue-index]"),g=h?Number(h.dataset.queueIndex):NaN;if(Number.isNaN(g)||o===null||g===o)return;const D=[...s],U=D[o];D.splice(o,1),D.splice(g,0,U),l(g),f(D)},Q=e=>{e.pointerType!=="mouse"&&N.current===e.pointerId&&x(m.current)},S=e=>{e.pointerType!=="mouse"&&N.current===e.pointerId&&x(!1)};return s.length===0?null:t("section",{className:r.section,children:[t("div",{className:r.header,children:[t("button",{className:r.headerToggle,type:"button",onClick:()=>u(e=>!e),"aria-expanded":i,"aria-label":i?`Collapse ${a}`:`Expand ${a}`,children:[t("span",{className:r.title,children:[t("span",{className:"title-stack",children:[q&&t("div",{className:"section-eyebrow",children:q}),t("span",{children:a})]}),t("span",{className:r.badge,children:s.length})]}),i?t(X,{}):t(Y,{})]}),C&&b&&t("div",{className:r.headerActions,children:[I&&s.length>1&&t("button",{className:r.nextBtn,type:"button",onClick:I,children:"Next"}),t("button",{className:r.clearBtn,type:"button",onClick:b,children:"Clear All"})]})]}),i&&t("div",{className:r.list,children:s.map((e,n)=>t(me,{item:e,isActive:e.showId===P&&e.episodeNumber===y,index:n,onRemove:B,onTouchPointerDown:k,onTouchPointerMove:A,onTouchPointerUp:Q,onTouchPointerCancel:S,shouldIgnoreClick:()=>v.current,onDragStart:()=>R(n),onDragEnter:()=>E(n),onDragEnd:$,isDragging:o===n},e.id))})]})};export{pe as Q,r as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._section_1bmqt_1{border:1px solid var(--border-primary);border-radius:var(--radius-lg);background:var(--bg-tertiary);overflow:hidden;box-shadow:0 4px 24px #0003;margin-bottom:3rem}._header_1bmqt_10{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-6);background:linear-gradient(to right,var(--accent-subtle),transparent 55%);border-bottom:1px solid var(--border-primary)}._headerToggle_1bmqt_20{flex:1;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);border:none;background:transparent;color:inherit;padding:0;text-align:left;cursor:pointer}._headerActions_1bmqt_34{display:flex;align-items:center;gap:var(--space-3)}._title_1bmqt_40{display:flex;align-items:center;gap:var(--space-4);font-weight:800;color:var(--text-primary);font-size:1.1rem;letter-spacing:-.01em}._badge_1bmqt_50{min-width:20px;height:20px;padding:0 6px;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;background:var(--accent-subtle);color:var(--accent-light);font-size:.7rem;font-weight:900;border:1px solid var(--border-accent)}._clearBtn_1bmqt_65{border:1px solid var(--border-primary);background:var(--bg-secondary);color:var(--text-secondary);border-radius:var(--radius-md);cursor:pointer;padding:.5rem 1rem;font-size:.8rem;font-weight:700;transition:all var(--transition-base)}._clearBtn_1bmqt_65:hover{background:var(--bg-elevated);color:var(--color-danger);border-color:#ef44444d}._nextBtn_1bmqt_83{border:1px solid var(--border-secondary);background:var(--bg-secondary);color:var(--text-primary);border-radius:var(--radius-md);cursor:pointer;padding:.5rem 1rem;font-size:.8rem;font-weight:800;transition:all var(--transition-base)}._nextBtn_1bmqt_83:hover{background:var(--bg-elevated);color:var(--text-primary);transform:translateY(-1px)}._list_1bmqt_101{display:flex;gap:var(--space-4);overflow-x:auto;padding:var(--space-6);-webkit-user-select:none;user-select:none;scrollbar-width:none}._list_1bmqt_101::-webkit-scrollbar{display:none}._item_1bmqt_114{width:240px;flex:0 0 240px;display:grid;grid-template-columns:24px 54px minmax(0,1fr) 32px;align-items:center;gap:var(--space-2);padding:var(--space-2);border:1px solid var(--border-primary);border-radius:var(--radius-md);background:var(--bg-secondary);transition:all var(--transition-base)}._item_1bmqt_114:hover{background:var(--bg-elevated);border-color:var(--border-accent);transform:translateY(-2px)}._item_1bmqt_114._active_1bmqt_134{border-color:var(--border-accent);background:var(--bg-elevated);box-shadow:inset 0 0 0 1px var(--border-accent),0 0 16px var(--accent-glow)}._item_1bmqt_114._dragging_1bmqt_142{opacity:.5;background:var(--bg-tertiary);border-style:dashed;transform:scale(.95)}._dragHandle_1bmqt_149{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-tertiary);cursor:grab;border:none;background:transparent;padding:0;transition:color var(--transition-base)}._item_1bmqt_114:hover ._dragHandle_1bmqt_149{color:var(--text-secondary)}._thumbnail_1bmqt_167{width:54px;height:72px;object-fit:cover;border-radius:var(--radius-sm);background:var(--bg-tertiary)}._meta_1bmqt_175{min-width:0;display:flex;flex-direction:column;gap:2px}._name_1bmqt_182{display:block;width:100%;border:none;background:transparent;padding:0;text-align:left;color:var(--text-primary);font-weight:700;font-size:.85rem;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;transition:color var(--transition-base)}._name_1bmqt_182:hover{color:var(--text-secondary)}._episode_1bmqt_204{color:var(--text-tertiary);font-size:.75rem;font-weight:600}._iconBtn_1bmqt_210{width:30px;height:30px;border:1px solid var(--border-primary);background:var(--bg-tertiary);color:var(--text-tertiary);border-radius:var(--radius-sm);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all var(--transition-base)}._iconBtn_1bmqt_210:hover{color:var(--color-danger);border-color:#ef444466;background:#ef44441a}@media(max-width:768px){._section_1bmqt_1{border-radius:var(--radius-md)}._header_1bmqt_10{padding:var(--space-4) var(--space-5)}._list_1bmqt_101{padding:var(--space-4) var(--space-5);gap:var(--space-3)}._item_1bmqt_114{width:220px;flex-basis:220px;grid-template-columns:24px 50px minmax(0,1fr) 30px}._thumbnail_1bmqt_167{width:50px;height:65px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as Y,d as m,A,h,g as ne,e,S as P,$ as K,T as Q}from"./vendor-rLNfZm7Y.js";import{am as Z,az as se,a5 as re,j as oe,aC as ie,aM as H,c as le,b as ce,ad as de,aD as ue,aE as me,aF as pe,al as he,J as fe}from"./index-CpjgU8ou.js";import{a}from"./Asmr.module-DPG2JhDJ.js";const x=300*1e3,ye="https://cdn.listen.moe/covers/";function U(n){return n?n.startsWith("http")?n:`${ye}${n}`:null}function ve(n){return n?U(n.albums[0]?.image)||U(n.artists[0]?.image)||U(n.sources[0]?.image):null}function O(n){return n?n.artists.map(r=>r.nameRomaji||r.name).join(", "):""}const be=()=>Y({queryKey:["radioStations"],queryFn:()=>Z("/api/radio/stations"),staleTime:x}),ge=n=>Y({queryKey:["radioSearch",n],queryFn:()=>Z(`/api/radio/search?q=${encodeURIComponent(n)}`),enabled:n.trim().length>0,staleTime:x}),G={song:null,lastPlayed:[],listeners:0,startTime:null},Ne=n=>{const[r,p]=m(G),[o,l]=m(!1),c=A(null);return h(()=>{if(p(G),l(!1),!n)return;let u=null,f=!1;try{u=new WebSocket(n)}catch{return}return u.onopen=()=>{f||l(!0)},u.onmessage=y=>{try{const d=JSON.parse(y.data);if(d.op===0){const b=d.d?.heartbeat||35e3;c.current&&window.clearInterval(c.current),c.current=window.setInterval(()=>{u&&u.readyState===WebSocket.OPEN&&u.send(JSON.stringify({op:9}))},b)}else d.op===1&&p({song:d.d?.song||null,lastPlayed:d.d?.lastPlayed||[],listeners:d.d?.listeners||0,startTime:d.d?.startTime||null})}catch{}},u.onclose=()=>{f||l(!1)},()=>{f=!0,c.current&&window.clearInterval(c.current),c.current=null,u&&u.close()}},[n]),{nowPlaying:r,connected:o}},we="_liveBadge_5bfp1_1",Se="_stationList_5bfp1_15",_e="_stationRow_5bfp1_21",Te="_stationRowActive_5bfp1_39",$e="_stationThumb_5bfp1_44",Pe="_stationThumbPlaceholder_5bfp1_53",Be="_stationMeta_5bfp1_65",Ce="_stationName_5bfp1_70",Re="_stationSub_5bfp1_77",Ie="_stationNowPlaying_5bfp1_85",Le="_coverWrap_5bfp1_95",ke="_cover_5bfp1_95",Ee="_sectionTitle_5bfp1_110",i={liveBadge:we,stationList:Se,stationRow:_e,stationRowActive:Te,stationThumb:$e,stationThumbPlaceholder:Pe,stationMeta:Be,stationName:Ce,stationSub:Re,stationNowPlaying:Ie,coverWrap:Le,cover:ke,sectionTitle:Ee};function X(n){if(!n)return"";const r=Math.max(0,Math.floor((Date.now()-new Date(n).getTime())/1e3)),p=Math.floor(r/60),o=r%60;return`${p}:${String(o).padStart(2,"0")}`}const Fe=({station:n,nowPlaying:r,connected:p,expanded:o,onStationStep:l,onExpandedChange:c,onClose:u})=>{const f=A(null),[y,d]=m(!1),[b,D]=m(!0),[N,_]=m(!1),[C,T]=m(!0),[k,R]=m(""),[w,E]=m(()=>{const t=parseFloat(localStorage.getItem("radioVolume")||"");return Number.isFinite(t)?t:1}),s=A(""),v=A(w);v.current=w,s.current||(s.current=typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():`radio-${Date.now()}-${Math.random().toString(36).slice(2)}`);const g=r.song,$=ve(g)||n.favicon||null,[I,J]=m(!1);h(()=>{J(!1)},[$]);const L=I?null:$,j=!!L,B=g?`${O(g)} — ${g.title}`:n.name;h(()=>{const t=f.current;if(t)return d(!1),t.src=n.streamUrl,t.load(),t.volume=v.current,t.play().catch(()=>d(!1)),()=>{t.removeAttribute("src")}},[n.id,n.streamUrl]),h(()=>{const t=f.current;t&&(t.volume=w)},[w]),h(()=>{if(o)return document.body.classList.add("asmr-player-open"),()=>document.body.classList.remove("asmr-player-open")},[o]),h(()=>{o&&T(!0)},[o]);const ee=t=>t?Math.max(0,Math.floor((Date.now()-new Date(t).getTime())/1e3)):0,F=ne.useCallback(t=>{n&&(fetch("/api/discord/radio",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:B,stationLabel:n.name,isPlaying:t,thumbnail:L||"",currentTime:ee(r.startTime),sessionId:s.current})}).catch(()=>{}),fetch("/api/discord/heartbeat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:s.current})}).catch(()=>{}))},[n,B,L,r.startTime]);h(()=>{F(y)},[F,y,n.id,B,o]),h(()=>{if(!y)return;const t=window.setInterval(()=>F(!0),15e3);return()=>window.clearInterval(t)},[y,F]),h(()=>{const t=s.current,S=()=>{if(!t)return;const z=JSON.stringify({sessionId:t});navigator.sendBeacon?(navigator.sendBeacon("/api/discord/clear",new Blob([z],{type:"application/json"})),navigator.sendBeacon("/api/discord/heartbeat",new Blob([JSON.stringify({sessionId:t,bye:!0})],{type:"application/json"}))):(fetch("/api/discord/clear",{method:"POST",headers:{"Content-Type":"application/json"},body:z,keepalive:!0}).catch(()=>{}),fetch("/api/discord/heartbeat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:t,bye:!0}),keepalive:!0}).catch(()=>{}))},M=()=>S(),q=()=>{document.visibilityState==="hidden"&&S()};return window.addEventListener("pagehide",M),window.addEventListener("beforeunload",M),document.addEventListener("visibilitychange",q),()=>{window.removeEventListener("pagehide",M),window.removeEventListener("beforeunload",M),document.removeEventListener("visibilitychange",q),S()}},[]),h(()=>{if(!r.startTime){R("");return}R(X(r.startTime));const t=window.setInterval(()=>R(X(r.startTime)),1e3);return()=>window.clearInterval(t)},[r.startTime,r.song?.id]),h(()=>{if(!o)return;const t=S=>{S.key==="Escape"&&(N?_(!1):c(!1))};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[o,N,c]);const te=()=>{const t=f.current;t&&(t.paused?(t.load(),t.play().catch(()=>{})):t.pause())},ae=e(P,{children:[e("div",{className:a.playerButtons,children:[e("button",{className:a.playerBtn,onClick:()=>l(-1),"aria-label":"Previous station",children:e(se,{})}),e("button",{className:`${a.playerBtn} ${a.playBtn}`,onClick:te,"aria-label":y?"Pause":"Play",children:y?e(re,{}):e(oe,{})}),e("button",{className:a.playerBtn,onClick:()=>l(1),"aria-label":"Next station",children:e(ie,{})})]}),e("div",{className:a.seekRow,children:[e("span",{className:i.liveBadge,children:[e(H,{size:10})," LIVE"]}),k&&e("span",{className:a.timeLabel,children:k}),p&&r.listeners>0&&e("span",{className:a.timeLabel,children:[r.listeners," listening"]}),!p&&n.source==="listen.moe"&&e("span",{className:a.timeLabel,children:"connecting…"})]})]}),V=e(P,{children:[e("button",{className:`${a.playerBtn} ${a.playerToggle}`,onClick:()=>c(!o),"aria-label":o?"Minimize player":"Expand player",title:o?"Minimize to browse":"Expand",children:o?e(le,{}):e(ce,{})}),e("div",{className:a.playerInfo,children:[e("p",{className:a.playerTitle,title:B,children:B}),e("p",{className:a.playerTrack,children:n.name})]}),e("div",{className:a.playerControls,children:ae}),e("div",{className:a.playerRight,children:[e(de,{className:a.volumeIcon}),e("input",{className:a.volumeBar,type:"range",min:0,max:1,step:.01,value:w,onChange:t=>{const S=parseFloat(t.target.value);E(S),localStorage.setItem("radioVolume",String(S))},style:{"--volume-percent":`${w*100}%`},"aria-label":"Volume"})]}),e("div",{className:a.playerActions,children:[o&&j&&e("button",{className:a.playerBtn,onClick:()=>D(t=>!t),"aria-label":b?"Hide art":"Show art",title:b?"Hide art":"Show art",children:b?e(ue,{}):e(me,{})}),o&&r.lastPlayed.length>0&&e("button",{className:`${a.playerBtn} ${N?a.playerBtnActive:""}`,onClick:()=>_(t=>!t),"aria-label":N?"Hide history":"Show history",title:"Recently played",children:e(pe,{})}),e("button",{className:a.playerBtn,onClick:u,"aria-label":"Close player",children:e(he,{})})]})]}),W=e("audio",{ref:f,preload:"none",onPlay:()=>d(!0),onPause:()=>d(!1)});return o?K(e(P,{children:[W,e("div",{className:`${a.npOverlay} ${C?"":a.npOverlayControlsHidden}`,children:[e("div",{className:`${a.npStage} ${!b||!j?a.npStageBlank:""}`,onClick:()=>T(t=>!t),children:b&&j&&L&&e("div",{className:i.coverWrap,children:e("img",{src:L,alt:B,draggable:!1,className:i.cover,onError:()=>J(!0)})})}),e("div",{className:`${a.playerBar} ${a.playerBarDocked} ${C?"":a.playerBarDockedHidden}`,onClick:t=>t.stopPropagation(),children:[V,N&&e(P,{children:[e("div",{className:a.npBackdrop,onClick:()=>_(!1)}),e("div",{className:a.chapterPanel,children:r.lastPlayed.map(t=>e("div",{className:a.chapterRow,children:e("span",{className:a.chapterRowLabel,title:`${O(t)} — ${t.title}`,children:[O(t)," — ",t.title]})},t.id))})]})]})]})]}),document.body):K(e(P,{children:[W,e("div",{className:a.playerBar,children:V})]}),document.body)},De=()=>{h(()=>{document.title="Radio - dango"},[]);const[n,r]=m(""),[p,o]=m(""),[l,c]=m(null),[u,f]=m(!0),{data:y,isLoading:d}=be(),{data:b,isLoading:D}=ge(p),N=Q(()=>y?.stations||[],[y]),_=Q(()=>b?.stations||[],[b]),C=p?_:N,{nowPlaying:T,connected:k}=Ne(l?.gateway),R=s=>{c(s),f(!0)},w=s=>{const v=C.length>0?C:N;if(v.length===0||!l)return;const g=v.findIndex(I=>I.id===l.id),$=v[(g<0?0:g+s+v.length)%v.length];c($)},E=s=>{const v=l?.id===s.id,g=v&&T.song?`${O(T.song)} — ${T.song.title}`:null,$=[s.codec,s.bitrate?`${s.bitrate}k`:"",s.tags].filter(Boolean).join(" · ");return e("button",{className:`${i.stationRow} ${v?i.stationRowActive:""}`,onClick:()=>R(s),children:[s.favicon?e("img",{src:s.favicon,alt:"",className:i.stationThumb,onError:I=>{I.target.style.display="none"}}):e("span",{className:i.stationThumbPlaceholder,children:e(H,{})}),e("span",{className:i.stationMeta,children:[e("span",{className:i.stationName,children:s.name}),$&&e("span",{className:i.stationSub,children:$})]}),g&&e("span",{className:i.stationNowPlaying,children:g})]},s.id)};return e("div",{className:`${a.page} ${l?a.pageWithPlayer:""}`,children:[e("div",{className:a.header,children:[e("h1",{className:a.pageTitle,children:[e(H,{})," Radio"]}),e("form",{className:a.searchForm,onSubmit:s=>{s.preventDefault(),o(n)},children:[e("input",{className:a.searchInput,value:n,onChange:s=>r(s.target.value),placeholder:"Search stations (anime, j-pop, k-pop…)","aria-label":"Search radio stations"}),e("button",{className:a.searchBtn,type:"submit","aria-label":"Search",children:e(fe,{})})]})]}),p?e(P,{children:[e("h2",{className:i.sectionTitle,children:["Results for “",p,"”"]}),D?e("p",{className:a.statusMsg,children:"Searching…"}):_.length===0?e("p",{className:a.statusMsg,children:"No stations found."}):e("div",{className:i.stationList,children:_.map(E)})]}):e(P,{children:[e("h2",{className:i.sectionTitle,children:"Featured"}),d?e("p",{className:a.statusMsg,children:"Loading…"}):e("div",{className:i.stationList,children:N.map(E)})]}),l&&e(Fe,{station:l,nowPlaying:T,connected:k,expanded:u,onStationStep:w,onExpandedChange:f,onClose:()=>c(null)})]})};export{De as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._liveBadge_5bfp1_1{display:inline-flex;align-items:center;gap:4px;background:var(--accent-dark);color:#fff;font-size:11px;font-weight:700;letter-spacing:.5px;border-radius:4px;padding:2px 8px;white-space:nowrap}._stationList_5bfp1_15{display:flex;flex-direction:column;gap:8px}._stationRow_5bfp1_21{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:#ffffff0a;border:1px solid transparent;border-radius:10px;padding:10px 12px;cursor:pointer;color:inherit}._stationRow_5bfp1_21:hover{background:#ffffff14}._stationRowActive_5bfp1_39{border-color:var(--accent);background:hsla(var(--accent-h),var(--accent-s),var(--accent-l),.12)}._stationThumb_5bfp1_44{width:44px;height:44px;border-radius:8px;object-fit:cover;flex-shrink:0;background:#ffffff0f}._stationThumbPlaceholder_5bfp1_53{width:44px;height:44px;border-radius:8px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:#ffffff0f;color:#fff9}._stationMeta_5bfp1_65{flex:1;min-width:0}._stationName_5bfp1_70{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._stationSub_5bfp1_77{font-size:12px;opacity:.65;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._stationNowPlaying_5bfp1_85{font-size:12px;color:var(--accent-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40%;text-align:right}._coverWrap_5bfp1_95{display:flex;align-items:center;justify-content:center;width:100%;height:100%}._cover_5bfp1_95{max-width:min(60vw,420px);max-height:60vh;border-radius:12px;box-shadow:0 8px 40px #00000080}._sectionTitle_5bfp1_110{margin:20px 0 10px;font-size:15px;font-weight:700;opacity:.9}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._header_66r0s_1{margin-bottom:var(--space-8);animation:_fadeIn_66r0s_1 .8s var(--ease-smooth)}._pageTitle_66r0s_6{font-size:var(--font-size-xl);font-weight:800;color:var(--text-primary);margin:0 0 var(--space-2);letter-spacing:-.02em}._pageSubtitle_66r0s_14{color:var(--text-tertiary);font-size:var(--font-size-sm);margin:0}._filterContainer_66r0s_20{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:var(--space-6);border-radius:var(--radius-xl);margin-bottom:var(--space-10);box-shadow:var(--glass-shadow);animation:_slideUpIn_66r0s_1 .8s var(--ease-smooth)}._searchBarWrapper_66r0s_32{display:flex;gap:var(--space-4);align-items:center}._inputIconWrapper_66r0s_38{flex:1;position:relative}._searchIcon_66r0s_43{position:absolute;left:var(--space-4);top:50%;transform:translateY(-50%);color:var(--text-tertiary);pointer-events:none;transition:color var(--transition-fast)}._searchInput_66r0s_53{width:100%;height:52px;padding:0 var(--space-4) 0 3.2rem;background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);color:var(--text-primary);font-size:var(--font-size-base);font-family:inherit;transition:all var(--transition-fast)}._searchInput_66r0s_53:focus{outline:none;border-color:var(--accent);background:var(--bg-elevated);box-shadow:0 0 0 4px var(--accent-glow)}._searchInput_66r0s_53:focus+._searchIcon_66r0s_43{color:var(--accent)}._searchActions_66r0s_77{display:flex;gap:var(--space-3)}._providerSelect_66r0s_82{height:52px;padding:0 var(--space-4);background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);color:var(--text-primary);font-size:var(--font-size-sm);font-family:inherit;cursor:pointer;appearance:none;transition:all var(--transition-fast)}._providerSelect_66r0s_82:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._providerSelect_66r0s_82:focus{outline:none;border-color:var(--accent)}._searchBtn_66r0s_106{height:52px;padding:0 var(--space-8)!important}._filterToggleBtn_66r0s_111{display:flex;align-items:center;gap:var(--space-2);height:52px;padding:0 var(--space-4);background:#ffffff0d;border:1px solid var(--border-secondary);border-radius:var(--radius-lg);color:var(--text-primary);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast)}._filterToggleBtn_66r0s_111:hover{background:#ffffff1a;border-color:var(--text-secondary)}._filterToggleBtn_66r0s_111._active_66r0s_132{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 4px 15px var(--accent-glow)}._advancedFilters_66r0s_139{max-height:0;overflow:hidden;transition:all .4s cubic-bezier(.4,0,.2,1);opacity:0}._advancedFilters_66r0s_139._show_66r0s_146{max-height:1000px;opacity:1;margin-top:var(--space-6)}._filterDivider_66r0s_152{height:1px;background:var(--border-primary);margin-bottom:var(--space-6)}._filterGrid_66r0s_158{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-6);margin-bottom:var(--space-8)}._filterItem_66r0s_165{display:flex;flex-direction:column;gap:var(--space-2)}._filterItem_66r0s_165 label{font-size:.7rem;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}._filterItem_66r0s_165 select{height:44px;padding:0 var(--space-4);background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-sm);font-family:inherit;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2371717a' stroke-width='2' viewBox='0 0 12 12'%3E%3Cpolyline points='3 5 6 8 9 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;transition:all var(--transition-fast)}._filterItem_66r0s_165 select:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._filterItem_66r0s_165 select:focus{outline:none;border-color:var(--accent)}._genreSection_66r0s_206{border-top:1px solid var(--border-primary);padding-top:var(--space-6);margin-bottom:var(--space-8)}._genreLabel_66r0s_212{display:block;font-size:.7rem;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-4)}._genreContainer_66r0s_222{display:flex;flex-wrap:wrap;gap:var(--space-2)}._genreButton_66r0s_228{background:#ffffff0d;border:1px solid var(--border-primary);color:var(--text-secondary);padding:.5rem 1rem;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;cursor:pointer;transition:all var(--transition-fast)}._genreButton_66r0s_228:hover{border-color:var(--accent);color:var(--text-primary)}._genreButton_66r0s_228._include_66r0s_245{background:#10b9811a;border-color:#10b981;color:#10b981}._genreButton_66r0s_228._exclude_66r0s_251{background:#ef44441a;border-color:#ef4444;color:#ef4444;text-decoration:line-through}._filterActions_66r0s_258{display:flex;justify-content:flex-end;gap:var(--space-4);border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._resultsGrid_66r0s_266{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-6);animation:_fadeIn_66r0s_1 .5s var(--ease-smooth)}@media(max-width:1400px){._resultsGrid_66r0s_266{grid-template-columns:repeat(6,1fr)}}@media(max-width:1200px){._resultsGrid_66r0s_266{grid-template-columns:repeat(5,1fr)}}@media(max-width:1024px){._resultsGrid_66r0s_266{grid-template-columns:repeat(4,1fr)}}@media(max-width:768px){._resultsGrid_66r0s_266{grid-template-columns:repeat(3,1fr);gap:var(--space-2);align-items:start}}@media(max-width:480px){._resultsGrid_66r0s_266{grid-template-columns:repeat(3,1fr);gap:8px;align-items:start}._filterContainer_66r0s_20{padding:var(--space-4)}}._resultsHeader_66r0s_311{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6);gap:var(--space-4);flex-wrap:wrap}._resultsTitle_66r0s_320{font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary);margin:0}._pagination_66r0s_327{display:flex;align-items:center;gap:var(--space-3);background:var(--bg-secondary);padding:6px 12px;border-radius:var(--radius-full);border:1px solid var(--border-secondary)}._pageBtn_66r0s_337{background:none;border:none;color:var(--text-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:6px;border-radius:var(--radius-full);transition:all var(--transition-fast);gap:var(--space-2)}._pageBtn_66r0s_337:hover:not(:disabled){background:var(--bg-tertiary);color:var(--accent)}._pageBtn_66r0s_337:disabled{opacity:.3;cursor:not-allowed}._pageBtn_66r0s_337 span{font-size:var(--font-size-xs);font-weight:600}._pageInfo_66r0s_366{font-size:var(--font-size-sm);color:var(--text-secondary);min-width:80px;text-align:center}._pageInfo_66r0s_366 strong{color:var(--text-primary)}._bottomPagination_66r0s_377{display:flex;justify-content:center;margin-top:var(--space-10);padding-top:var(--space-6);border-top:1px solid var(--border-primary)}._noResults_66r0s_385{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-16);text-align:center;color:var(--text-tertiary);animation:_fadeIn_66r0s_1 .5s var(--ease-smooth)}._noResultsIcon_66r0s_396{color:var(--border-secondary);margin-bottom:var(--space-6)}._noResults_66r0s_385 h3{color:var(--text-primary);margin:0 0 var(--space-2)}._noResults_66r0s_385 p{max-width:400px;margin:0}@keyframes _fadeIn_66r0s_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUpIn_66r0s_1{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){._searchBarWrapper_66r0s_32{flex-direction:column;align-items:stretch}._searchActions_66r0s_77{display:grid;grid-template-columns:1fr 1fr}._searchBtn_66r0s_106{padding:0!important}._filterGrid_66r0s_158{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){._filterGrid_66r0s_158{grid-template-columns:1fr}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{h as T,r as re,f as ie,d as r,A as ce,g as oe,e as a}from"./vendor-rLNfZm7Y.js";import{u as de,y as ue,au as j,J as W,B as _,K as he,b as pe,c as ge,F as H,a as q,av as ve}from"./index-CpjgU8ou.js";import{S as me,a as be}from"./SkeletonGrid-D5vRvX5q.js";import{E as fe}from"./ErrorMessage-BwSjzblw.js";import{s as l}from"./Search.module-D8ZbQAiK.js";import"./useIsMobile-Cb8HcKRj.js";import"./useAnimeInfoData-BOfyi9UJ.js";const Le=[{value:"ALL",label:"All Types"},{value:"TV",label:"TV Series"},{value:"Movie",label:"Movie"},{value:"OVA",label:"OVA"},{value:"ONA",label:"ONA"},{value:"TV_SHORT",label:"TV Short"},{value:"SPECIAL",label:"Special"},{value:"ADULT",label:"Mature"}],Ae=[{value:"ALL",label:"All Seasons"},{value:"Winter",label:"Winter"},{value:"Spring",label:"Spring"},{value:"Summer",label:"Summer"},{value:"Fall",label:"Fall"}],ye=[{value:"ALL",label:"All Countries"},{value:"JP",label:"Japan"},{value:"CN",label:"China"}],Se=[{value:"POPULARITY_DESC",label:"Popularity"},{value:"TRENDING_DESC",label:"Trending"},{value:"SCORE_DESC",label:"Score"},{value:"START_DATE_DESC",label:"Newest"},{value:"START_DATE_ASC",label:"Oldest"},{value:"EPISODES_DESC",label:"Most Episodes"},{value:"FAVOURITES_DESC",label:"Favourites"}],Ne=[{value:"RELEASING",label:"Currently Airing"},{value:"FINISHED",label:"Finished"},{value:"NOT_YET_RELEASED",label:"Not Yet Released"},{value:"CANCELLED",label:"Cancelled"},{value:"HIATUS",label:"Hiatus"}];function Re(){T(()=>{document.title="Search - dango"},[]);const[n,J]=re(),K=ie(),[v,w]=r(n.get("query")||""),[c,B]=r(parseInt(n.get("page")||"1")),[o,m]=r(n.get("type")||"ALL"),[h,L]=r(n.get("season")||"ALL"),[p,A]=r(n.get("year")||"ALL"),[E,I]=r(n.get("country")||"ALL"),[G,Q]=r(n.get("provider")||"anilist"),[x,D]=r(n.get("sortBy")||"POPULARITY_DESC"),[P,R]=r(n.get("status")||""),[y,X]=r(!1),[Z,U]=r(null);T(()=>{let e=!1;return fetch("/api/anilist-status").then(t=>t.json()).then(t=>{e||U(t.available)}).catch(()=>{e||U(!0)}),()=>{e=!0}},[]),T(()=>{o==="TV_SHORT"&&m("ALL")},[o]);const{lowEndMode:ee}=de(),O=ce(null),{data:ae}=ue(),Y=ae?.genres||[],[b,S]=r(()=>{const e={},t=n.get("genres")?.split(",")||[],i=n.get("excludeGenres")?.split(",")||[];return t.forEach(s=>s&&(e[s]="include")),i.forEach(s=>s&&(e[s]="exclude")),e}),$=new URLSearchParams(n);$.delete("page");const z=$.toString(),{data:f=[],isLoading:g,isError:le,error:te}=j(z,c,14),{data:M}=j(z,c+1,14),[k,ne]=r(!1),N=oe.useMemo(()=>G==="anilist"&&o==="ADULT"||k?f:f.filter(e=>!(e.isAdult||e.rating==="R+"||e.rating==="Rx"||e.rating?.includes("17+"))),[f,k,G,o]);T(()=>{w(n.get("query")||""),m(n.get("type")||"ALL"),L(n.get("season")||"ALL"),A(n.get("year")||"ALL"),I(n.get("country")||"ALL"),Q(n.get("provider")||"anilist"),D(n.get("sortBy")||"POPULARITY_DESC"),R(n.get("status")||""),B(parseInt(n.get("page")||"1"));const e={},t=n.get("genres")?.split(",")||[],i=n.get("excludeGenres")?.split(",")||[];t.forEach(s=>s&&(e[s]="include")),i.forEach(s=>s&&(e[s]="exclude")),S(e)},[n]);const u=(e=1)=>{ve();const t=new URLSearchParams;v.trim()&&t.set("query",v.trim()),o!=="ALL"&&t.set("type",o),P&&t.set("status",P),h!=="ALL"&&t.set("season",h),p!=="ALL"&&t.set("year",p),E!=="ALL"&&t.set("country",E),x!=="POPULARITY_DESC"&&t.set("sortBy",x);const i=Object.entries(b).filter(([,d])=>d==="include").map(([d])=>d),s=Object.entries(b).filter(([,d])=>d==="exclude").map(([d])=>d);i.length>0&&t.set("genres",i.join(",")),s.length>0&&t.set("excludeGenres",s.join(",")),o!=="ADULT"&&!k&&t.set("adult","false"),t.set("provider","anilist"),e>1&&t.set("page",e.toString()),J(t),e!==c&&B(e)},C=e=>{if(u(e),O.current){const t=O.current.getBoundingClientRect().top+window.scrollY-100;window.scrollTo({top:t,behavior:"smooth"})}},F=new Date().getFullYear(),se=[{value:"ALL",label:"All Years"},...Array.from({length:F-1980+1},(e,t)=>({value:String(F-t),label:String(F-t)}))],V=f.length>=14&&M&&M.length>0;return a("div",{className:"page-container",children:[a("div",{className:l.header,children:[a("h1",{className:l.pageTitle,children:"Search Anime"}),a("p",{className:l.pageSubtitle,children:"Search through thousands of titles and discover your next favorite"})]}),a("div",{className:l.filterContainer,children:[a("div",{className:l.searchBarWrapper,children:[a("div",{className:l.inputIconWrapper,children:[a(W,{className:l.searchIcon}),a("input",{type:"text","data-virtual-keyboard":"true",className:l.searchInput,placeholder:"Search by title, character, or studio...",value:v,onInput:e=>w(e.currentTarget.value),onKeyDown:e=>e.key==="Enter"&&u()})]}),a("div",{className:l.searchActions,children:[a(_,{onClick:()=>u(),className:l.searchBtn,children:"Search"}),a("button",{className:`${l.filterToggleBtn} ${y?l.active:""}`,onClick:()=>X(!y),children:[a(he,{size:14}),a("span",{children:"Filters"}),y?a(pe,{size:12}):a(ge,{size:12})]})]})]}),a("div",{className:`${l.advancedFilters} ${y?l.show:""}`,children:[a("div",{className:l.filterDivider}),a("div",{className:l.filterGrid,children:[a("div",{className:l.filterItem,children:[a("label",{children:"Type"}),a("select",{value:o,onChange:e=>{if(e.currentTarget.value==="ADULT"){K("/mature?provider=mal");return}m(e.currentTarget.value)},children:Le.map(e=>a("option",{value:e.value,children:e.label},e.value))})]}),a("div",{className:l.filterItem,children:[a("label",{children:"Status"}),a("select",{value:P,onChange:e=>R(e.currentTarget.value),children:[a("option",{value:"",children:"All Status"}),Ne.map(e=>a("option",{value:e.value,children:e.label},e.value))]})]}),a("div",{className:l.filterItem,children:[a("label",{children:"Season"}),a("select",{value:h,onChange:e=>L(e.currentTarget.value),children:Ae.map(e=>a("option",{value:e.value,children:e.label},e.value))})]}),a("div",{className:l.filterItem,children:[a("label",{children:"Year"}),a("select",{value:p,onChange:e=>A(e.currentTarget.value),children:se.map(e=>a("option",{value:e.value,children:e.label},e.value))})]}),a("div",{className:l.filterItem,children:[a("label",{children:["Country",Z===!1&&a("span",{style:{display:"block",fontSize:"0.75rem",color:"var(--text-muted)",fontWeight:400},children:"AniList only — ignored by fallback providers"})]}),a("select",{value:E,onChange:e=>I(e.currentTarget.value),children:ye.map(e=>a("option",{value:e.value,children:e.label},e.value))})]}),a("div",{className:l.filterItem,children:[a("label",{children:"Sort By"}),a("select",{value:x,onChange:e=>D(e.currentTarget.value),children:Se.map(e=>a("option",{value:e.value,children:e.label},e.value))})]})]}),Y.length>0&&a("div",{className:l.genreSection,children:[a("label",{className:l.genreLabel,children:"Genres"}),a("div",{className:l.genreContainer,children:Y.map(e=>a("button",{className:`${l.genreButton} ${l[b[e]||""]}`,onClick:()=>{S(t=>{const i=t[e],s={...t};return i==="include"?s[e]="exclude":i==="exclude"?delete s[e]:s[e]="include",s})},children:e},e))})]}),a("div",{className:l.filterActions,children:[a(_,{variant:"secondary",onClick:()=>{S({}),m("ALL"),L("ALL"),A("ALL"),I("ALL"),D("POPULARITY_DESC"),R(""),ne(!1)},children:"Reset All"}),a(_,{onClick:()=>u(),className:l.applyBtn,children:"Apply Filters"})]})]})]}),le&&a(fe,{message:te?.message||"Error"}),(o!=="ALL"||h!=="ALL"||p!=="ALL"||Object.keys(b).length>0)&&a("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px",alignItems:"center",marginBottom:"1.5rem"},children:[a("span",{style:{fontSize:"0.8rem",color:"var(--text-muted)",fontWeight:600},children:"Active Filters:"}),o!=="ALL"&&a("span",{className:"badge badge-secondary",style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:["Type: ",o,a("button",{onClick:e=>{e.stopPropagation(),e.preventDefault(),m("ALL"),u()},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]}),h!=="ALL"&&a("span",{className:"badge badge-secondary",style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:["Season: ",h,a("button",{onClick:e=>{e.stopPropagation(),e.preventDefault(),L("ALL"),u()},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]}),p!=="ALL"&&a("span",{className:"badge badge-secondary",style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:["Year: ",p,a("button",{onClick:e=>{e.stopPropagation(),e.preventDefault(),A("ALL"),u()},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]}),Object.entries(b).map(([e,t])=>a("span",{className:`badge ${t==="include"?"badge-primary":"badge-danger"}`,style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:[t==="include"?`+ ${e}`:`- ${e}`,a("button",{onClick:i=>{i.stopPropagation(),i.preventDefault(),S(s=>{const d={...s};return delete d[e],d}),u()},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]},e))]}),a("div",{className:l.resultsHeader,ref:O,children:[a("h2",{className:l.resultsTitle,children:v?`Search Results for "${v}"`:"Discover Anime"}),N.length>0&&a("div",{className:l.pagination,children:[a("button",{className:l.pageBtn,onClick:()=>C(c-1),disabled:c===1||g,"aria-label":"Previous page",children:a(H,{size:14})}),a("span",{className:l.pageInfo,children:["Page ",a("strong",{children:c})]}),a("button",{className:l.pageBtn,onClick:()=>C(c+1),disabled:!V||g,"aria-label":"Next page",children:a(q,{size:14})})]})]}),a("div",{className:`${l.resultsGrid} ${ee?l.lowEnd:""}`,children:g?a(me,{}):N.map(e=>a(be,{anime:e},e._id))}),!g&&N.length===0&&a("div",{className:l.noResults,children:[a(W,{size:48,className:l.noResultsIcon}),a("h3",{children:"No results found"}),a("p",{children:"Try adjusting your search or filters to find what you're looking for."})]}),N.length>0&&a("div",{className:l.bottomPagination,children:a("div",{className:l.pagination,children:[a("button",{className:l.pageBtn,onClick:()=>C(c-1),disabled:c===1||g,children:[a(H,{size:14}),a("span",{children:"Previous"})]}),a("span",{className:l.pageInfo,children:["Page ",a("strong",{children:c})]}),a("button",{className:l.pageBtn,onClick:()=>C(c+1),disabled:!V||g,children:[a("span",{children:"Next"}),a(q,{size:14})]})]})})]})}export{Re as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e="_header_66r0s_1",t="_fadeIn_66r0s_1",s="_pageTitle_66r0s_6",r="_pageSubtitle_66r0s_14",n="_filterContainer_66r0s_20",_="_slideUpIn_66r0s_1",o="_searchBarWrapper_66r0s_32",c="_inputIconWrapper_66r0s_38",i="_searchIcon_66r0s_43",a="_searchInput_66r0s_53",l="_searchActions_66r0s_77",p="_providerSelect_66r0s_82",d="_searchBtn_66r0s_106",g="_filterToggleBtn_66r0s_111",u="_active_66r0s_132",f="_advancedFilters_66r0s_139",I="_show_66r0s_146",h="_filterDivider_66r0s_152",B="_filterGrid_66r0s_158",v="_filterItem_66r0s_165",b="_genreSection_66r0s_206",S="_genreLabel_66r0s_212",T="_genreContainer_66r0s_222",m="_genreButton_66r0s_228",A="_include_66r0s_245",C="_exclude_66r0s_251",G="_filterActions_66r0s_258",R="_resultsGrid_66r0s_266",W="_resultsHeader_66r0s_311",x="_resultsTitle_66r0s_320",w="_pagination_66r0s_327",D="_pageBtn_66r0s_337",F="_pageInfo_66r0s_366",H="_bottomPagination_66r0s_377",L="_noResults_66r0s_385",P="_noResultsIcon_66r0s_396",U={header:e,fadeIn:t,pageTitle:s,pageSubtitle:r,filterContainer:n,slideUpIn:_,searchBarWrapper:o,inputIconWrapper:c,searchIcon:i,searchInput:a,searchActions:l,providerSelect:p,searchBtn:d,filterToggleBtn:g,active:u,advancedFilters:f,show:I,filterDivider:h,filterGrid:B,filterItem:v,genreSection:b,genreLabel:S,genreContainer:T,genreButton:m,include:A,exclude:C,filterActions:G,resultsGrid:R,resultsHeader:W,resultsTitle:x,pagination:w,pageBtn:D,pageInfo:F,bottomPagination:H,noResults:L,noResultsIcon:P};export{U as s};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import{d as r,A as B,h as R,e,q as ee,S as me,u as se,T as pe,r as ye,f as fe,g as te,_ as ve}from"./vendor-rLNfZm7Y.js";import{g as be,B as C,M as H,T as F,C as ae,R as Y,S as we,U as ke,V as Se,u as Ce,W as _e,D as ne,E as Ne,X as Te,Y as xe,Z as Ie,_ as Pe,$ as Re,a0 as Oe,a1 as De,a2 as Le,a3 as Ae,a4 as Ee}from"./index-CpjgU8ou.js";const X={"title-preference-container":"_title-preference-container_sdqgs_1","toggle-button":"_toggle-button_sdqgs_21","toggle-label":"_toggle-label_sdqgs_51"},Q=["name","nativeName","englishName"],Z={name:"Default (Romaji)",nativeName:"Native",englishName:"English"},Ge=()=>{const{titlePreference:n,setTitlePreference:u,loading:l}=be(),[c,d]=r(Z[n]),[k,m]=r(!1),h=B(null);R(()=>{l||d(Z[n])},[n,l]);const a=async()=>{if(k)return;m(!0);const v=(Q.indexOf(n)+1)%Q.length,g=Q[v],p=Z[g];h.current&&(h.current.style.transform="translateX(-100%)",h.current.style.opacity="0"),setTimeout(async()=>{d(p),u(g),h.current&&(h.current.style.transition="none",h.current.style.transform="translateX(100%)",h.current.style.opacity="0",h.current.offsetWidth,h.current.style.transition="transform 0.3s ease-out, opacity 0.3s ease-out",h.current.style.transform="translateX(0)",h.current.style.opacity="1");try{await fetch("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:"titlePreference",value:g})})}catch(_){console.error("Error saving title preference:",_)}finally{m(!1)}},300)};return l?e("p",{children:"Loading title preference..."}):e("div",{className:X["title-preference-container"],children:[e("h4",{children:"Anime Title Display Preference"}),e("button",{onClick:a,className:X["toggle-button"],disabled:k,children:e("span",{ref:h,className:X["toggle-label"],children:c})})]})},ze="_settingsHeader_106ag_1",je="_pageTitle_106ag_6",Fe="_pageSubtitle_106ag_14",He="_settingsLayout_106ag_20",Me="_sidebar_106ag_27",Ue="_sidebarIndicator_106ag_35",$e="_sidebarItem_106ag_50",We="_active_106ag_72",Be="_mainContent_106ag_80",qe="_tabContent_106ag_85",Ve="_sectionCard_106ag_103",Je="_settingItem_106ag_127",Ke="_settingRow_106ag_132",Ye="_controls_106ag_145",Xe="_status_106ag_151",i={settingsHeader:ze,pageTitle:je,pageSubtitle:Fe,settingsLayout:He,sidebar:Me,sidebarIndicator:Ue,sidebarItem:$e,active:We,mainContent:Be,tabContent:qe,sectionCard:Ve,settingItem:Je,settingRow:Ke,controls:Ye,status:Xe},Qe="_sectionCard_ljinx_12",Ze="_title_ljinx_22",et="_signIn_ljinx_29",tt="_userInfo_ljinx_36",at="_warning_ljinx_58",nt="_formGroup_ljinx_65",rt="_label_ljinx_69",st="_inputWrapper_ljinx_79",it="_input_ljinx_79",ot="_select_ljinx_103",lt="_actions_ljinx_140",ct="_hr_ljinx_148",s={sectionCard:Qe,title:Ze,signIn:et,userInfo:tt,warning:at,formGroup:nt,label:rt,inputWrapper:st,input:it,select:ot,actions:lt,hr:ct},dt=()=>{const[n,u]=r(!0),[l,c]=r(!1),[d,k]=r(!1),[m,h]=r(null),[a,o]=r({status:"idle"}),[v,g]=r(!1),[p,_]=r(""),[L,w]=r(!1),N=B(null),[f,b]=r({show:!1,message:"",type:"info"}),I=()=>{N.current&&(window.clearInterval(N.current),N.current=null)},M=ee(y=>{k(y.authenticated),h(y.user||y.device.user||null),o(y.device),g(!!y.hasCustomClientId)},[]),A=ee(async()=>{const T=await(await fetch("/api/auth/github/status")).json();M(T)},[M]),U=async()=>{try{const T=await(await fetch("/api/auth/github/poll")).json();o(T),T.status==="success"?(I(),await A(),b({show:!0,message:"GitHub authentication complete. Sync has been initialized.",type:"success"})):T.status==="error"&&(I(),b({show:!0,message:T.error||"GitHub authentication failed.",type:"error"}))}catch{I(),b({show:!0,message:"Failed to poll GitHub authentication status.",type:"error"})}},G=(y=5)=>{I(),N.current=window.setInterval(U,Math.max(y,5)*1e3)};R(()=>(A().catch(()=>{b({show:!0,message:"Failed to load GitHub sync status.",type:"error"})}).finally(()=>u(!1)),I),[A]);const S=async()=>{c(!0);try{const y=await fetch("/api/auth/github/start",{method:"POST"}),T=await y.json();if(!y.ok)throw new Error("Failed to start GitHub authentication.");o(T),G(T.verification?.interval)}catch(y){b({show:!0,message:y instanceof Error?y.message:"Failed to start GitHub authentication.",type:"error"})}finally{c(!1)}},x=async()=>{try{await fetch("/api/auth/github/logout",{method:"POST"}),k(!1),h(null),o({status:"idle"}),b({show:!0,message:"Signed out of GitHub sync.",type:"success"})}catch{b({show:!0,message:"Failed to sign out of GitHub.",type:"error"})}},P=async()=>{w(!0);try{if(!(await fetch("/api/auth/github/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:p})})).ok)throw new Error("save failed");_(""),await A(),b({show:!0,message:"Custom GitHub auth saved.",type:"success"})}catch{b({show:!0,message:"Failed to save override.",type:"error"})}finally{w(!1)}},O=async()=>{w(!0);try{await fetch("/api/auth/github/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:""})}),_(""),await A(),b({show:!0,message:"Custom auth cleared. Using dango defaults.",type:"success"})}catch{b({show:!0,message:"Failed to clear override.",type:"error"})}finally{w(!1)}};return n?e("div",{style:{color:"var(--text-secondary)",padding:"1.5rem"},children:"Loading..."}):e("div",{className:s.sectionCard,children:[e("h3",{className:s.title,children:"GitHub Cloud Sync"}),e("p",{className:s.signIn,children:"Sync local data through a private GitHub repository named dango-sync-data."}),d&&m?e("div",{className:s.userInfo,children:[e("p",{children:["Signed in as: ",e("strong",{children:m.name||m.login})]}),e(C,{variant:"danger",onClick:x,children:"Sign Out"})]}):e("div",{className:s.signIn,children:e(C,{onClick:S,disabled:l||a.status==="pending",children:l||a.status==="pending"?"Waiting for GitHub...":"Sign in with GitHub"})}),a.status==="pending"&&a.verification&&e(me,{children:[e("hr",{className:s.hr}),e("div",{className:s.formGroup,children:[e("label",{className:s.label,children:"Verification URL"}),e("div",{className:s.inputWrapper,children:[e("input",{className:s.input,value:a.verification.verification_uri,readOnly:!0}),e(C,{onClick:()=>{const y=a.verification?.verification_uri;y&&/^https?:\/\//i.test(y)&&window.open(y,"_blank","noopener,noreferrer")},children:"Open"})]})]}),e("div",{className:s.formGroup,children:[e("label",{className:s.label,children:"Device Code"}),e("input",{className:s.input,value:a.verification.user_code,readOnly:!0})]})]}),a.status==="error"&&e("p",{className:s.warning,children:a.error}),e("details",{style:{marginTop:"1rem",fontSize:"var(--font-size-sm)"},children:[e("summary",{style:{cursor:"pointer",color:"var(--text-secondary)"},children:["Advanced: use your own auth ",v?"(override active)":""]}),e("div",{className:s.formGroup,style:{marginTop:"0.75rem"},children:[e("label",{className:s.label,children:"Client ID (optional)"}),e("input",{className:s.input,value:p,onChange:y=>_(y.currentTarget.value),placeholder:"Your GitHub OAuth app ID"})]}),e("div",{className:s.actions,children:[e(C,{onClick:P,disabled:L,children:"Save override"}),e(C,{variant:"secondary",onClick:O,disabled:L,children:"Use dango defaults"})]})]}),e(H,{isOpen:f.show,onClose:()=>b(y=>({...y,show:!1})),width:"sm",children:[e(H.Body,{children:e("p",{children:f.message})}),e(H.Actions,{children:e(C,{onClick:()=>b(y=>({...y,show:!1})),children:"OK"})})]})]})},ht=()=>{const[n,u]=r(!0),[l,c]=r(null),[d,k]=r(!1),[m,h]=r(!1),[a,o]=r(""),[v,g]=r(""),[p,_]=r(""),[L,w]=r(!1),[N,f]=r({show:!1,message:"",type:"info"}),b=async()=>{try{const x=await(await fetch("/api/auth/user")).json();c(x?.email?x:null)}catch{c(null)}},I=async()=>{try{const[S,x]=await Promise.all([fetch("/api/auth/config-status"),fetch("/api/auth/google-auth")]),P=await S.json(),O=await x.json();k(!!P.hasConfig),h(!!(O.hasCustomWorkerUrl||O.hasCustomClientId||O.hasClientSecret))}catch(S){console.error("Failed to fetch config status",S)}};R(()=>{(async()=>(u(!0),await Promise.all([b(),I()]),u(!1)))();const x=P=>{P.origin===window.location.origin&&typeof P.data=="object"&&P.data!==null&&P.data.type==="GOOGLE_AUTH_SUCCESS"&&(c(P.data.user),window.location.reload())};return window.addEventListener("message",x),()=>window.removeEventListener("message",x)},[]);const M=async()=>{try{const x=await(await fetch("/api/auth/google/login",{method:"POST"})).json();if(x.authenticated){window.location.reload();return}if(x.url){const y=window.innerWidth/2-300,T=window.innerHeight/2-700/2;window.open(x.url,"GoogleAuth",`width=600,height=700,top=${T},left=${y}`)}else throw new Error("Auth URL not available")}catch{f({show:!0,message:"Authentication failed. Ensure server is configured correctly.",type:"error"})}},A=async()=>{try{await fetch("/api/auth/logout",{method:"POST"}),c(null),f({show:!0,message:"Successfully signed out.",type:"success"}),window.location.reload()}catch(S){console.error("Sign out failed",S),f({show:!0,message:"Failed to sign out.",type:"error"})}},U=async()=>{w(!0);try{if(!(await fetch("/api/auth/google-auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({workerUrl:a,clientId:v,clientSecret:p})})).ok)throw new Error("save failed");o(""),g(""),_(""),await I(),f({show:!0,message:"Custom auth saved. Restart may be required.",type:"success"})}catch{f({show:!0,message:"Failed to save override.",type:"error"})}finally{w(!1)}},G=async()=>{w(!0);try{await fetch("/api/auth/google-auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({workerUrl:"",clientId:"",clientSecret:""})}),o(""),g(""),_(""),await I(),f({show:!0,message:"Custom auth cleared. Using dango defaults.",type:"success"})}catch{f({show:!0,message:"Failed to clear override.",type:"error"})}finally{w(!1)}};return n?e("div",{style:{color:"var(--text-secondary)",padding:"1.5rem"},children:"Loading..."}):e("div",{className:s.sectionCard,children:[e("h3",{className:s.title,children:"Google Drive Sync"}),l?e("div",{className:s.userInfo,children:[e("p",{children:["Signed in as: ",e("strong",{children:l.name})," (",l.email,")"]}),e(C,{variant:"danger",onClick:A,children:"Sign Out"})]}):e("div",{className:s.signIn,children:[e("p",{children:"Sign in with your Google account to enable synchronization features."}),e(C,{onClick:M,disabled:!d,children:"Sign in with Google"}),!d&&e("p",{className:s.warning,children:"Google sync is not configured on the server."})]}),e("details",{style:{marginTop:"1rem",fontSize:"var(--font-size-sm)"},children:[e("summary",{style:{cursor:"pointer",color:"var(--text-secondary)"},children:["Advanced: use your own auth ",m?"(override active)":""]}),e("div",{className:s.formGroup,style:{marginTop:"0.75rem"},children:[e("label",{className:s.label,children:"Worker URL (optional)"}),e("input",{className:s.input,value:a,onChange:S=>o(S.currentTarget.value),placeholder:"https://your-worker.workers.dev"})]}),e("div",{className:s.formGroup,children:[e("label",{className:s.label,children:"Client ID (optional)"}),e("input",{className:s.input,value:v,onChange:S=>g(S.currentTarget.value),placeholder:"Your Google OAuth client ID"})]}),e("div",{className:s.formGroup,children:[e("label",{className:s.label,children:"Client Secret (optional)"}),e("input",{type:"password",className:s.input,value:p,onChange:S=>_(S.currentTarget.value),placeholder:"Your Google OAuth secret"})]}),e("div",{className:s.actions,children:[e(C,{onClick:U,disabled:L,children:"Save override"}),e(C,{variant:"secondary",onClick:G,disabled:L,children:"Use dango defaults"})]})]}),e(H,{isOpen:N.show,onClose:()=>f(S=>({...S,show:!1})),width:"sm",children:[e(H.Body,{children:e("p",{children:N.message})}),e(H.Actions,{children:e(C,{onClick:()=>f(S=>({...S,show:!1})),children:"OK"})})]})]})},ut="_sectionCard_hf2a3_1",gt="_settingItem_hf2a3_26",mt="_settingRow_hf2a3_31",pt="_modalOverlay_hf2a3_38",yt="_modal_hf2a3_38",ft="_modalActions_hf2a3_73",vt="_modalSecondary_hf2a3_79",bt="_modalPrimary_hf2a3_89",D={sectionCard:ut,settingItem:gt,settingRow:mt,modalOverlay:pt,modal:yt,modalActions:ft,modalSecondary:vt,modalPrimary:bt},wt=(n,u)=>{if(n==null)return u;const l=String(n);return l==="true"||l==="1"?!0:l==="false"||l==="0"?!1:u},re=(n,u)=>{const[l,c]=r(u),[d,k]=r(!1),m=se();return R(()=>{(async()=>{try{const v=await(await fetch(`/api/settings?key=${n}`)).json();c(wt(v.value,u))}catch(o){console.error("Failed to fetch setting",o)}})()},[n,u]),{value:l,setValue:c,isUpdating:d,toggle:async()=>{if(d)return;k(!0);const a=!l;c(a);try{await fetch("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:n,value:a})}),m.invalidateQueries({queryKey:["allContinueWatching"]})}catch(o){console.error("Error saving setting:",o),c(!a)}finally{k(!1)}}}},kt=()=>{const[n,u]=r(!1),[l,c]=r(!0),[d,k]=r(!1),m=re("ignoreAdultContent",!0),h=re("cwWatchlistOnly",!1),[a,o]=r(null),[v,g]=r(!1),p=se();R(()=>{(async()=>{try{const I=await(await fetch("/api/settings?key=skipRemoveConfirmation")).json();String(I.value)==="true"||String(I.value)==="1"?u(!0):u(!1)}catch(b){console.error("Failed to fetch setting",b)}finally{c(!1)}})()},[]);const _=async()=>{if(d)return;k(!0);const f=!n;u(f);try{await fetch("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:"skipRemoveConfirmation",value:f})})}catch(b){console.error("Error saving setting:",b),u(!f)}finally{k(!1)}},L=async()=>{if(!m.isUpdating){if(m.value)try{const b=await(await fetch("/api/continue-watching/adult-count")).json();if(typeof b.count=="number"&&b.count>0){o(b.count);return}}catch(f){console.error("Failed to fetch adult count",f)}m.toggle()}},w=()=>{o(null),m.toggle()},N=async()=>{if(!v){g(!0);try{const b=await(await fetch("/api/continue-watching/purge-adult",{method:"POST"})).json();ae.success(`Removed ${b.removed??0} entries from continue watching`),p.invalidateQueries({queryKey:["allContinueWatching"]})}catch(f){console.error("Failed to purge adult entries",f),ae.error("Failed to remove adult entries")}finally{g(!1),o(null)}m.toggle()}};return l?e("div",{children:"Loading settings..."}):e("div",{className:D.sectionCard,children:[e("h3",{children:"Watchlist Preferences"}),e("p",{children:"Customize your experience when managing your watchlist and series entries."}),e("div",{className:D.settingItem,children:e("div",{className:D.settingRow,children:[e("label",{htmlFor:"skip-confirmation-toggle",children:"Skip confirmation when removing from watchlist"}),e(F,{isChecked:n,onChange:_,id:"skip-confirmation-toggle",disabled:d})]})}),e("div",{className:D.settingItem,children:e("div",{className:D.settingRow,children:[e("label",{htmlFor:"ignore-adult-toggle",children:"Hide adult content from continue watching"}),e(F,{isChecked:m.value,onChange:L,id:"ignore-adult-toggle",disabled:m.isUpdating})]})}),e("div",{className:D.settingItem,children:e("div",{className:D.settingRow,children:[e("label",{htmlFor:"cw-watchlist-only-toggle",children:"Only show continue watching for shows in watchlist"}),e(F,{isChecked:h.value,onChange:h.toggle,id:"cw-watchlist-only-toggle",disabled:h.isUpdating})]})}),a!==null&&e("div",{className:D.modalOverlay,onClick:()=>o(null),children:e("div",{className:D.modal,onClick:f=>f.stopPropagation(),children:[e("h4",{children:"Show adult entries?"}),e("p",{children:[a," adult ",a===1?"entry":"entries"," not in your watchlist"," ",a===1?"is":"are"," currently hidden from continue watching. You can purge ",a===1?"it":"them"," from the database instead of showing"," ",a===1?"it":"them","."]}),e("div",{className:D.modalActions,children:[e("button",{type:"button",className:D.modalSecondary,onClick:w,disabled:v,children:"Show them"}),e("button",{type:"button",className:D.modalPrimary,onClick:N,disabled:v,children:v?"Purging...":`Purge ${a}`})]})]})})]})},St=()=>{const[n,u]=r(""),[l,c]=r([]),[d,k]=r(null),[m,h]=r(!0),[a,o]=r({show:!1,message:"",type:"info"}),v=async()=>{try{h(!0);const _=await(await fetch("/api/auth/settings/rclone")).json();u(_.remote||""),c(_.availableRemotes||[]),k(_.activeRemote||null)}catch(p){console.error("Failed to fetch Rclone settings",p)}finally{h(!1)}};R(()=>{v()},[]);const g=async()=>{try{if((await fetch("/api/auth/settings/rclone",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({remote:n})})).ok)o({show:!0,message:"Rclone configuration saved successfully. You must restart the server for these changes to take effect.",type:"success"}),v();else throw new Error("Failed to save")}catch{o({show:!0,message:"Failed to save Rclone configuration.",type:"error"})}};return m?e("div",{style:{color:"var(--text-secondary)",padding:"1.5rem"},children:"Loading..."}):e("div",{className:s.sectionCard,children:[e("h3",{className:s.title,children:"Rclone Cloud Sync"}),e("p",{className:s.signIn,children:"Configure which Rclone remote to use for database synchronization."}),d?e("div",{className:s.userInfo,children:e("p",{children:["Current Active Remote: ",e("strong",{children:d})]})}):e("p",{className:s.warning,style:{marginBottom:"1.5rem"},children:"Rclone sync is not currently active. Ensure rclone is installed and a remote is configured."}),e("div",{className:s.formGroup,children:[e("label",{className:s.label,children:"Remote Name"}),e("div",{className:s.inputWrapper,children:e("select",{className:s.select,value:n,onChange:p=>u(p.target.value),children:[e("option",{value:"",children:"(Disabled / None)"}),l.map(p=>e("option",{value:p,children:p},p)),n&&!l.includes(n)&&e("option",{value:n,children:[n," (Manual)"]})]})}),e("p",{className:s.warning,style:{marginTop:"12px"},children:[e("strong",{children:"Note:"})," You can choose which provider is active using the selector at the top of the page."]})]}),e("div",{className:s.actions,children:e(C,{onClick:g,children:"Save Rclone Settings"})}),e(H,{isOpen:a.show,onClose:()=>o(p=>({...p,show:!1})),width:"sm",children:[e(H.Body,{children:e("p",{children:a.message})}),e(H.Actions,{children:e(C,{onClick:()=>o(p=>({...p,show:!1})),children:"OK"})})]})]})},Ct=()=>{const[n,u]=r(null),[l,c]=r(!0),d=async()=>{try{const o=await(await fetch("/api/auth/settings/sync")).json();u(o)}catch(a){console.error("Failed to fetch sync settings",a)}finally{c(!1)}};R(()=>{d()},[]);const k=async a=>{const o=a.target.value;try{const v=await fetch("/api/auth/settings/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:o})});if(v.ok){const g=await v.json();u(p=>p?{...p,activeProvider:g.activeProvider}:null),await d(),Y.success(`Sync provider updated to ${o==="default"?"Default Order":o}`)}else Y.error("Failed to update sync provider")}catch{Y.error("Error updating sync provider")}};if(l||!n)return null;const m=[{value:"default",label:"Default (Priority Based)"}];n.authenticatedProviders.github&&m.push({value:"github",label:"GitHub"}),n.authenticatedProviders.google&&m.push({value:"google",label:"Google Drive"}),n.authenticatedProviders.rclone&&m.push({value:"rclone",label:"Rclone"}),m.push({value:"none",label:"None (Local Only)"});const h=a=>a==="none"?"Local Only (No Sync)":a==="google"?"Google Drive":a==="github"?"GitHub":a==="rclone"?"Rclone":a;return e("div",{className:i.sectionCard,children:[e("h3",{children:"Active Sync Provider"}),e("p",{children:'Choose which provider to use for synchronization. "Default" uses the first available provider you are logged into.'}),e("div",{style:{marginBottom:"1.5rem",padding:"0.75rem",background:"rgba(255, 255, 255, 0.03)",borderRadius:"var(--radius-md)",borderLeft:"4px solid var(--accent)",fontSize:"var(--font-size-sm)"},children:["Current Status:"," ",e("strong",{style:{color:"var(--accent-light)",textTransform:"capitalize"},children:h(n.actualActiveProvider)})]}),e("div",{className:i.settingRow,children:[e("label",{htmlFor:"sync-provider-select",children:"Selected Preference"}),e("select",{id:"sync-provider-select",value:n.activeProvider,onChange:k,style:{padding:"0.5rem",borderRadius:"var(--radius-md)",background:"rgba(255, 255, 255, 0.05)",color:"var(--text-primary)",border:"1px solid var(--glass-border)",fontSize:"var(--font-size-sm)",minWidth:"220px",outline:"none",cursor:"pointer"},children:m.map(a=>e("option",{value:a.value,children:a.label},a.value))})]})]})};function _t(){return"javascript:"+encodeURIComponent(`(function(){
|
|
2
|
+
if(!/(^|\\.)discord\\.com$/.test(location.hostname)){alert('Dango: use this bookmarklet while on discord.com');return}
|
|
3
|
+
var t=null;
|
|
4
|
+
try{
|
|
5
|
+
window.webpackChunkdiscord_app.push([[Symbol()],{},function(req){
|
|
6
|
+
if(!req.c)return;
|
|
7
|
+
var ms=Object.values(req.c);
|
|
8
|
+
for(var i=0;i<ms.length;i++){var m=ms[i];
|
|
9
|
+
try{
|
|
10
|
+
if(!m.exports||m.exports===window)continue;
|
|
11
|
+
if(typeof m.exports.getToken==='function'){var x=m.exports.getToken();if(x){t=x;return}}
|
|
12
|
+
for(var k in m.exports){try{var ex=m.exports[k];if(ex&&typeof ex.getToken==='function'&&ex[Symbol.toStringTag]!=='IntlMessagesProxy'){var y=ex.getToken();if(y){t=y;return}}}catch(e1){}}
|
|
13
|
+
}catch(e2){}}
|
|
14
|
+
}]);
|
|
15
|
+
window.webpackChunkdiscord_app.pop();
|
|
16
|
+
}catch(e3){}
|
|
17
|
+
if(!t){alert('Dango: could not grab your token. Make sure you are logged in to Discord in this tab, then run the bookmarklet again.');return}
|
|
18
|
+
function copyFallback(){var a=document.createElement('textarea');a.value=t;a.style.position='fixed';a.style.opacity='0';document.body.appendChild(a);a.select();try{document.execCommand('copy')}catch(e4){}document.body.removeChild(a)}
|
|
19
|
+
var done=function(){window.close();setTimeout(function(){if(!window.closed){alert('Dango: token copied to clipboard! Could not close this tab, so just close it, go back to Dango Settings, paste the token and press Save.')}},250)};
|
|
20
|
+
if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(t).then(done,function(){copyFallback();done()})}else{copyFallback();done()}
|
|
21
|
+
})()`)}const Nt=()=>{const n=pe(_t,[]);return e("div",{style:{marginTop:"0.9rem",paddingTop:"0.9rem",borderTop:"1px dashed var(--border-color)"},children:[e("h4",{style:{margin:"0 0 0.35rem",fontSize:"0.95rem"},children:"Grab the token automatically (bookmarklet)"}),e("p",{style:{margin:"0 0 0.6rem",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Set this up once and you never have to dig through DevTools: the bookmarklet copies your Discord token to the clipboard and closes the Discord tab — then you just paste it above and press Save."}),e("ol",{style:{margin:"0 0 0.75rem",paddingLeft:"1.25rem",fontSize:"0.85rem",color:"var(--text-secondary)",display:"grid",gap:"0.3rem"},children:[e("li",{children:["Drag the ",e("strong",{style:{color:"var(--text-primary)"},children:"Dango Token Grabber"})," ","button below onto your bookmarks bar (press ",e("kbd",{children:"Ctrl"}),"+",e("kbd",{children:"Shift"}),"+",e("kbd",{children:"B"})," ","first if the bar is hidden)."]}),e("li",{children:["Click ",e("strong",{style:{color:"var(--text-primary)"},children:"Open Discord"})," and log in (skip this if you are already logged in)."]}),e("li",{children:["On the Discord tab, click the"," ",e("strong",{style:{color:"var(--text-primary)"},children:"Dango Token Grabber"})," bookmark. The token lands in your clipboard and the tab closes on its own — come back here, paste it above and press ",e("strong",{children:"Save"}),"."]})]}),e("div",{style:{display:"flex",gap:"0.5rem",alignItems:"center",flexWrap:"wrap"},children:[e("a",{href:n,onClick:c=>{c.preventDefault(),alert("Drag this button onto your bookmarks bar instead of clicking it, then click it while you are on discord.com.")},title:"Drag me to your bookmarks bar",draggable:!0,style:{display:"inline-flex",alignItems:"center",padding:"0.4rem 0.8rem",borderRadius:"999px",border:"1px dashed var(--accent)",background:"var(--bg-secondary)",color:"var(--text-primary)",fontSize:"0.85rem",textDecoration:"none",cursor:"grab",userSelect:"none"},children:[e(we,{style:{marginRight:"0.45rem",color:"var(--accent)"}}),"Dango Token Grabber"]}),e("a",{className:"btn btn-secondary btn-sm",href:"https://discord.com/channels/@me",target:"_blank",rel:"noopener noreferrer",children:"Open Discord"}),e(C,{variant:"ghost",size:"sm",onClick:async()=>{try{await navigator.clipboard.writeText(n),alert('Bookmarklet code copied. Create a new bookmark on your bookmarks bar, name it "Dango Token" and paste the code as its URL.')}catch{alert(`Could not copy automatically. Right-click the "Dango Token Grabber" button and choose "Copy link address" instead, then paste that into a new bookmark's URL.`)}},children:"Copy code"})]}),e("p",{style:{margin:"0.5rem 0 0",fontSize:"0.75rem",color:"var(--text-tertiary)"},children:`"Copy code" is a fallback for browsers that won't drag bookmarklets: create any bookmark, then paste the copied code as its URL.`})]})},Tt="_sectionCard_1qfho_1",xt="_settingItem_1qfho_25",It="_field_1qfho_30",Pt="_input_1qfho_43",Rt="_actions_1qfho_63",Ot="_status_1qfho_69",j={sectionCard:Tt,settingItem:xt,field:It,input:Pt,actions:Rt,status:Ot},Dt=()=>{const[n,u]=r(!1),[l,c]=r(""),[d,k]=r(""),[m,h]=r(!0),[a,o]=r(!1),[v,g]=r("");R(()=>{(async()=>{try{const f=await(await fetch("/api/auth/app-status")).json();u(f.hasPassword)}catch{console.error("Failed to fetch LAN auth status")}finally{h(!1)}})()},[]);const p=async()=>{if(g(""),l!==d){g("Passwords do not match");return}if(l.length<4){g("Password must be at least 4 characters");return}o(!0);try{const w=await fetch("/api/auth/app-setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:l})}),N=await w.json();if(!w.ok){g(N.error||"Failed to update password");return}u(N.hasPassword),c(""),k(""),g(N.hasPassword?"Password set successfully":"Password removed")}catch{g("Network error")}finally{o(!1)}},_=async()=>{o(!0);try{const w=await fetch("/api/auth/app-setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:""})}),N=await w.json();if(!w.ok){g(N.error||"Failed to remove password");return}u(!1),c(""),k(""),g("Password removed")}catch{g("Network error")}finally{o(!1)}},L=async()=>{o(!0);try{await fetch("/api/auth/app-logout",{method:"POST"}),g("Logged out"),window.location.reload()}catch{g("Logout failed")}finally{o(!1)}};return m?e("div",{className:j.sectionCard,children:e("p",{children:"Loading..."})}):e("div",{className:j.sectionCard,children:[e("h3",{children:"LAN Lock"}),e("p",{children:"Require a password to access this instance from any device, including this one. Sessions persist across server restarts until logout or password change."}),e("div",{className:j.settingItem,children:[e("div",{className:j.field,children:[e("label",{htmlFor:"lan-password",children:"New Password"}),e("input",{id:"lan-password",type:"password",value:l,onChange:w=>c(w.target.value),placeholder:n?"Leave empty to keep current password":"Enter a password...",className:j.input})]}),e("div",{className:j.field,children:[e("label",{htmlFor:"lan-confirm-password",children:"Confirm Password"}),e("input",{id:"lan-confirm-password",type:"password",value:d,onChange:w=>k(w.target.value),placeholder:"Confirm password...",className:j.input})]}),e("div",{className:j.actions,children:[e(C,{variant:"primary",onClick:p,loading:a,disabled:a,children:n?"Update Password":"Set Password"}),n&&e(C,{variant:"danger",onClick:L,loading:a,disabled:a,children:"Logout"}),n&&e(C,{variant:"secondary",onClick:_,loading:a,disabled:a,children:"Remove Password"})]}),v&&e("p",{className:j.status,children:v})]})]})},Lt=()=>{const{theme:n,setTheme:u,loading:l}=ke();return e("div",{children:[e("h4",{style:{margin:"0 0 0.25rem",fontSize:"1rem"},children:"Palette"}),e("p",{style:{margin:"0 0 0.75rem",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Taro is the default. Pick a palette that suits you."}),e("div",{role:"radiogroup","aria-label":"Palette",style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(150px, 1fr))",gap:"0.6rem"},children:Se.map(c=>{const d=n===c.id;return e("button",{role:"radio","aria-checked":d,disabled:l,onClick:()=>u(c.id),style:{display:"flex",gap:"0.6rem",alignItems:"center",textAlign:"left",padding:"0.65rem 0.75rem",borderRadius:"10px",cursor:"pointer",background:d?"var(--accent-subtle)":"var(--bg-tertiary)",border:d?"1px solid var(--accent)":"1px solid var(--border-primary)",color:"var(--text-primary)"},children:[e("span",{"aria-hidden":!0,style:{width:26,height:26,borderRadius:"50%",flex:"none",background:c.swatch,border:"1px solid rgba(0,0,0,0.35)"}}),e("span",{style:{minWidth:0},children:[e("span",{style:{display:"block",fontSize:"0.85rem",fontWeight:700},children:c.label}),e("span",{style:{display:"block",fontSize:"0.75rem",color:"var(--text-secondary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:c.blurb})]})]},c.id)})})]})};function At({variant:n="info",children:u,className:l=""}){return e("div",{className:`alert alert-${n} ${l}`,children:u})}const zt=()=>{const[n,u]=ye(),l=fe(),c=n.get("tab"),[d,k]=r(c&&["general","sync","watchlist","database"].includes(c)?c:"general"),[m,h]=r(""),a=B(null),o=B(null),v=B(new Map),[g,p]=r({top:0,height:0,left:0,width:0}),{lowEndMode:_,setLowEndMode:L}=Ce(),[w,N]=r(localStorage.getItem("telemetry_enabled")!=="false"),[f,b]=r(localStorage.getItem("installation_id")||"");R(()=>{fetch("/api/installation-id").then(t=>t.json()).then(t=>{t.id&&(b(t.id),localStorage.setItem("installation_id",t.id))}).catch(()=>{})},[]);const[I,M]=r(_e),[A,U]=r(!0),{data:G}=ne("discordRPCEnabled"),S=Ne(),[x,P]=r(!0),{data:O}=ne("discordRPCHideMature"),[y,T]=r(""),[W,K]=r(null);R(()=>{fetch("/api/discord/gateway/status").then(t=>t.json()).then(t=>{K(t),t.masked&&t.masked!=="none"&&T(t.masked)}).catch(()=>{})},[]),R(()=>{G!==void 0&&U(G==="true"||G===!0||G===null)},[G]),R(()=>{O!==void 0&&P(O==="true"||O===!0||O===null)},[O]);const ie=t=>{U(t),S.mutate({key:"discordRPCEnabled",value:String(t)})},oe=t=>{P(t),S.mutate({key:"discordRPCHideMature",value:String(t)})},le=t=>{N(t),localStorage.setItem("telemetry_enabled",String(t)),t?Ae():Ee()},ce=t=>{M(t),localStorage.setItem(De,String(t)),window.dispatchEvent(new CustomEvent(Le))};te.useEffect(()=>{document.title="Settings - dango"},[]),te.useEffect(()=>{const t=n.get("tab");t&&["general","sync","watchlist","database"].includes(t)&&k(t)},[n]);const q=t=>{k(t),u(t==="general"?{}:{tab:t})},V=ee(()=>{const t=v.current.get(d),z=o.current;if(t&&z){const $=z.getBoundingClientRect(),E=t.getBoundingClientRect(),J=window.matchMedia("(max-width: 900px)").matches;p(J?{top:E.top-$.top,height:E.height,left:E.left-$.left,width:E.width}:{top:E.top-$.top,height:E.height,left:0,width:0})}},[d]);ve(()=>{V()},[d,V]),R(()=>{const t=()=>V();return window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[d,V]);const de=()=>{h("Downloading database backup...");const t=document.createElement("a");t.href="/api/backup-db",t.download="dango-backup.db",document.body.appendChild(t),t.click(),t.remove(),setTimeout(()=>{h("Database backup downloaded!")},1500)},he=async t=>{const z=t.target.files?.[0];if(!z)return;h("Restoring database...");const $=new FormData;$.append("dbfile",z);try{const E=await fetch("/api/restore-db",{method:"POST",body:$}),J=await E.json();E.ok?(h(J.message||"Database restored successfully!"),setTimeout(()=>window.location.reload(),2e3)):h(`Restore failed: ${J.error}`)}catch{h("Restore failed: An unexpected error occurred.")}},ue=()=>{a.current?.click()},ge=()=>{switch(d){case"general":return e("div",{className:i.tabContent,children:e("div",{className:i.sectionCard,children:[e("h3",{children:"Appearance & Preferences"}),e("p",{children:"Configure how titles are displayed and other general preferences."}),e("div",{className:i.settingItem,children:e(Ge,{})}),e("div",{className:i.settingItem,style:{marginTop:"1.5rem"},children:e(Lt,{})}),e("div",{className:i.settingItem,style:{marginTop:"1.5rem"},children:e("div",{className:i.settingRow,children:[e("div",{style:{minWidth:0},children:[e("h4",{style:{margin:0,fontSize:"1rem"},children:"Low End Mode"}),e("p",{style:{margin:"0.25rem 0 0",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Disables animations and heavy visual effects for better performance on older hardware."})]}),e(F,{isChecked:_,onChange:t=>L(t.target.checked),id:"low-end-mode"})]})}),e("div",{className:i.settingItem,style:{marginTop:"1.5rem"},children:e("div",{className:i.settingRow,children:[e("div",{style:{minWidth:0},children:[e("h4",{style:{margin:0,fontSize:"1rem"},children:"Virtual Keyboard"}),e("p",{style:{margin:"0.25rem 0 0",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Shows an on-screen keyboard when text search fields are focused."})]}),e(F,{isChecked:I,onChange:t=>ce(t.target.checked),id:"virtual-keyboard-enabled"})]})}),e("div",{className:i.settingItem,style:{marginTop:"1.5rem"},children:e("div",{className:i.settingRow,children:[e("div",{style:{minWidth:0},children:[e("h4",{style:{margin:0,fontSize:"1rem"},children:"Discord Rich Presence"}),e("p",{style:{margin:"0.25rem 0 0",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Show your current anime and watch progress on your Discord profile status."})]}),e(F,{isChecked:A,onChange:t=>ie(t.target.checked),id:"discord-rpc-enabled"})]})}),e("div",{style:{marginTop:"2rem"},children:e(Dt,{})}),A&&e("div",{className:i.settingItem,style:{marginTop:"1rem"},children:e("div",{className:i.settingRow,children:[e("div",{style:{minWidth:0},children:[e("h4",{style:{margin:0,fontSize:"1rem"},children:"Hide Mature Content"}),e("p",{style:{margin:"0.25rem 0 0",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Hide mature content (18+) from Discord Rich Presence."})]}),e(F,{isChecked:x,onChange:t=>oe(t.target.checked),id:"discord-hide-mature"})]})}),e("div",{className:i.settingItem,style:{marginTop:"1.5rem",background:"var(--bg-tertiary)",padding:"1rem",borderRadius:"8px",border:"1px solid var(--border-color)"},children:[e("div",{className:i.settingRow,children:e("div",{style:{minWidth:0},children:[e("h4",{style:{margin:0,fontSize:"1rem"},children:"Discord Mobile Presence (Gateway)"}),e("p",{style:{margin:"0.25rem 0 0.75rem",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Paste your Discord authentication token to enable presence on mobile devices. If no token is saved, the default desktop Rich Presence is used. The token is stored locally in your configuration and never shared."})]})}),e(At,{variant:"warning",style:{marginTop:"1.25rem",paddingTop:"1.25rem"},children:[e("strong",{children:"Use at your own risk."})," This feature uses the Discord Gateway API with your user token, which violates Discord's Terms of Service. Discord may detect this usage and take action against your account, including phone number locks, temporary suspensions, or permanent bans. While the risk is generally low, it is not zero. Only use this if you understand and accept the risks."]}),e("div",{style:{marginTop:"0.75rem",display:"flex",gap:"0.5rem",alignItems:"center",flexWrap:"wrap"},children:[e("input",{type:"password",value:y,onChange:t=>T(t.target.value),placeholder:"Paste Discord token here...",style:{flex:"1 1 200px",padding:"0.5rem",borderRadius:"4px",border:"1px solid var(--border-color)",background:"var(--bg-primary)",color:"var(--text-primary)",fontFamily:"monospace",minWidth:0}}),e(C,{variant:"primary",size:"sm",onClick:async()=>{const t=await fetch("/api/discord/gateway/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:y})}),z=await t.json();t.ok?(K({hasToken:!0,masked:z.masked,enabled:!0}),T(z.masked)):alert(z.error||"Failed to save token")},children:"Save"}),e(C,{variant:"secondary",size:"sm",onClick:async()=>{await fetch("/api/discord/gateway/remove",{method:"POST"}),T(""),K({hasToken:!1,masked:null,enabled:!1})},children:"Remove"})]}),W&&e("p",{style:{marginTop:"0.5rem",fontSize:"0.8rem",color:W.hasToken?"green":"var(--text-secondary)"},children:["Status:"," ",W.hasToken?`Token saved (${W.masked})`:"No token saved",W.enabled?" - Gateway active":""]}),e(Nt,{})]}),e("div",{className:i.settingItem,style:{marginTop:"1.5rem"},children:[e("div",{className:i.settingRow,children:[e("div",{style:{minWidth:0},children:[e("h4",{style:{margin:0,fontSize:"1rem"},children:"Telemetry Tracking"}),e("p",{style:{margin:"0.25rem 0 0",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Share anonymous installation data to help track active users. Collected: Browser type and OS (e.g. 'Chrome on Windows'), App Version, First Seen/Last Seen timestamps, and timezone (e.g. 'Europe/Berlin'). No other personal information or usage habits are collected."})]}),e(F,{isChecked:w,onChange:t=>le(t.target.checked),id:"telemetry-enabled"})]}),w&&e("div",{style:{marginTop:"0.75rem",fontSize:"0.8rem",color:"var(--text-secondary)"},children:[e("p",{style:{margin:"0 0 0.5rem 0",fontWeight:"bold"},children:"Data currently being shared:"}),e("div",{style:{background:"var(--bg-tertiary)",padding:"0.5rem",borderRadius:"4px",wordBreak:"break-all",fontFamily:"monospace"},children:[e("p",{style:{margin:"0"},children:[e("strong",{children:"ID:"})," ",f||"Loading..."]}),e("p",{style:{margin:"0"},children:[e("strong",{children:"Version:"})," ",Re.version]}),e("p",{style:{margin:"0"},children:[e("strong",{children:"Browser:"})," ",Oe()]}),e("p",{style:{margin:"0"},children:[e("strong",{children:"Timezone:"})," ",Intl.DateTimeFormat().resolvedOptions().timeZone]})]})]}),e("div",{style:{marginTop:"1rem"},children:e(C,{variant:"secondary",size:"sm",onClick:()=>l("/map"),children:"View User Map"})})]}),localStorage.getItem("agreedToViewMature")==="true"&&e("div",{className:i.settingItem,style:{marginTop:"1.5rem"},children:e("div",{className:i.settingRow,children:[e("div",{style:{minWidth:0},children:[e("h4",{style:{margin:0,fontSize:"1rem"},children:"Mature Content"}),e("p",{style:{margin:"0.25rem 0 0",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"You have previously agreed to view 18+ content. Toggle this off to re-enable the blur gate and filtering."})]}),e(F,{isChecked:!0,onChange:t=>{t.target.checked||(localStorage.removeItem("agreedToViewMature"),window.location.reload())},id:"mature-content-enabled"})]})})]})});case"sync":return e("div",{className:i.tabContent,children:[e(Ct,{}),e(dt,{}),e(ht,{}),e(St,{})]});case"watchlist":return e("div",{className:i.tabContent,children:e(kt,{})});case"database":return e("div",{className:i.tabContent,children:e("div",{className:i.sectionCard,children:[e("h3",{children:"Database Management"}),e("p",{children:"Download a backup of your current database or restore from an existing file."}),e("div",{className:i.controls,children:[e(C,{onClick:de,children:"Backup Database"}),e(C,{variant:"secondary",onClick:ue,children:"Restore Database"})]}),e("input",{type:"file",ref:a,onChange:he,style:{display:"none"},accept:".db"}),m&&e("p",{className:i.status,children:m})]})});default:return null}};return e("div",{className:"page-container",children:[e("div",{className:i.settingsHeader,children:[e("h1",{className:i.pageTitle,children:"Settings"}),e("p",{className:i.pageSubtitle,children:"Manage your preferences and data synchronization"})]}),e("div",{className:i.settingsLayout,children:[e("aside",{className:i.sidebar,ref:o,children:[e("div",{className:i.sidebarIndicator,style:{top:g.top,height:g.height,left:g.left,...g.width?{width:g.width}:{}}}),e("button",{ref:t=>{t&&v.current.set("general",t)},className:`${i.sidebarItem} ${d==="general"?i.active:""}`,onClick:()=>q("general"),children:[e(Te,{})," ",e("span",{children:"General"})]}),e("button",{ref:t=>{t&&v.current.set("sync",t)},className:`${i.sidebarItem} ${d==="sync"?i.active:""}`,onClick:()=>q("sync"),children:[e(xe,{})," ",e("span",{children:"Synchronization"})]}),e("button",{ref:t=>{t&&v.current.set("watchlist",t)},className:`${i.sidebarItem} ${d==="watchlist"?i.active:""}`,onClick:()=>q("watchlist"),children:[e(Ie,{})," ",e("span",{children:"Watchlist"})]}),e("button",{ref:t=>{t&&v.current.set("database",t)},className:`${i.sidebarItem} ${d==="database"?i.active:""}`,onClick:()=>q("database"),children:[e(Pe,{})," ",e("span",{children:"Database"})]})]}),e("main",{className:i.mainContent,children:e("div",{className:i.tabContent,children:ge()},d)})]})]})};export{zt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._title-preference-container_sdqgs_1{margin-bottom:var(--space-6);padding:var(--space-4);border:1px solid var(--border-primary);border-radius:var(--radius-md);background-color:var(--bg-tertiary)}._title-preference-container_sdqgs_1 h4{margin-top:0;margin-bottom:var(--space-4);color:var(--text-primary);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold)}._error_sdqgs_17{color:var(--danger)}._toggle-button_sdqgs_21{position:relative;width:200px;height:40px;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dark) 100%);border:none;border-radius:20px;cursor:pointer;overflow:hidden;display:flex;align-items:center;justify-content:center;color:var(--accent-text);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);transition:var(--transition-base);box-shadow:var(--shadow-md)}._toggle-button_sdqgs_21:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-lg);filter:brightness(1.1)}._toggle-button_sdqgs_21:disabled{opacity:.7;cursor:not-allowed}._toggle-label_sdqgs_51{position:absolute;white-space:nowrap;transition:var(--transition-base)}._settingsHeader_106ag_1{margin-bottom:var(--space-8);animation:_fadeIn_106ag_1 .8s var(--ease-smooth)}._pageTitle_106ag_6{font-size:var(--font-size-xl);font-weight:800;color:var(--text-primary);margin:0 0 var(--space-2);letter-spacing:-.02em}._pageSubtitle_106ag_14{color:var(--text-tertiary);font-size:var(--font-size-sm);margin:0}._settingsLayout_106ag_20{display:flex;gap:var(--space-8);align-items:flex-start;animation:_slideUpIn_106ag_1 .8s var(--ease-smooth)}._sidebar_106ag_27{width:240px;display:flex;flex-direction:column;gap:var(--space-2);position:relative}._sidebarIndicator_106ag_35{position:absolute;left:0;right:0;border-radius:var(--radius-lg);background:var(--accent);transition:top .22s cubic-bezier(.2,1.2,.3,1),height .22s cubic-bezier(.2,1.2,.3,1),left .22s cubic-bezier(.2,1.2,.3,1),width .22s cubic-bezier(.2,1.2,.3,1);z-index:0;pointer-events:none}._sidebarItem_106ag_50{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);background:transparent;border:1px solid transparent;border-radius:var(--radius-lg);color:var(--text-tertiary);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;transition:color .22s ease;text-align:left;position:relative;z-index:1}._sidebarItem_106ag_50:hover{color:var(--text-primary)}._sidebarItem_106ag_50._active_106ag_72{color:var(--accent-text)}._sidebarItem_106ag_50 svg{font-size:1.1rem}._mainContent_106ag_80{flex:1;min-width:0}._tabContent_106ag_85{display:flex;flex-direction:column;gap:var(--space-6);animation:_tabFadeIn_106ag_1 .3s ease}@keyframes _tabFadeIn_106ag_1{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}._sectionCard_106ag_103{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:var(--space-8);border-radius:var(--radius-xl);box-shadow:var(--glass-shadow)}._sectionCard_106ag_103 h3{margin:0 0 var(--space-2);font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary)}._sectionCard_106ag_103 p{color:var(--text-secondary);font-size:var(--font-size-sm);margin:0 0 var(--space-6);line-height:1.6}._settingItem_106ag_127{border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._settingRow_106ag_132{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4)}._settingRow_106ag_132 label{font-size:var(--font-size-base);color:var(--text-secondary);font-weight:500}._controls_106ag_145{display:flex;gap:var(--space-4);flex-wrap:wrap}._status_106ag_151{margin-top:var(--space-4);padding:var(--space-3) var(--space-4);background:#8b5cf61a;border-radius:var(--radius-md);color:var(--accent-light);font-size:var(--font-size-sm);font-weight:500}@keyframes _fadeIn_106ag_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUpIn_106ag_1{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media(max-width:900px){._settingsLayout_106ag_20{flex-direction:column}._sidebar_106ag_27{width:100%;flex-direction:row;overflow-x:auto;padding-bottom:var(--space-2)}._sidebarIndicator_106ag_35{right:auto;top:auto!important;bottom:0;height:3px!important}._sidebarItem_106ag_50{padding:var(--space-3) var(--space-4);white-space:nowrap;flex-shrink:0}._sidebarItem_106ag_50 span{display:block}}@media(max-width:480px){._sidebarItem_106ag_50 span{display:none}._sidebarItem_106ag_50{padding:var(--space-4);justify-content:center}._sectionCard_106ag_103{padding:var(--space-6)}}._container_ljinx_1{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:var(--space-8);border-radius:var(--radius-xl);box-shadow:var(--glass-shadow);margin-bottom:var(--space-6)}._sectionCard_ljinx_12{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:var(--space-8);border-radius:var(--radius-xl);box-shadow:var(--glass-shadow)}._title_ljinx_22{margin:0 0 var(--space-2);font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary)}._signIn_ljinx_29{color:var(--text-secondary);font-size:var(--font-size-sm);margin:0 0 var(--space-6);line-height:1.6}._userInfo_ljinx_36{padding:var(--space-4) var(--space-5);background:#10b9810d;border:1px solid rgba(16,185,129,.2);border-radius:var(--radius-lg);margin-bottom:var(--space-6);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}._userInfo_ljinx_36 p{margin:0;color:var(--text-secondary);font-size:var(--font-size-sm)}._userInfo_ljinx_36 strong{color:#10b981}._warning_ljinx_58{color:#f59e0b;font-size:var(--font-size-xs);margin:var(--space-3) 0 0;font-weight:500}._formGroup_ljinx_65{margin-bottom:var(--space-5)}._label_ljinx_69{display:block;margin-bottom:var(--space-2);color:var(--text-tertiary);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}._inputWrapper_ljinx_79{display:flex;gap:var(--space-2)}._input_ljinx_79{flex-grow:1;height:48px;padding:0 var(--space-4);background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);font-size:var(--font-size-base);transition:all var(--transition-fast)}._input_ljinx_79:focus{outline:none;border-color:var(--accent);background:var(--bg-elevated);box-shadow:0 0 0 4px var(--accent-glow)}._select_ljinx_103{flex-grow:1;height:48px;padding:0 var(--space-4);background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);font-size:var(--font-size-base);cursor:pointer;transition:all var(--transition-fast);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2371717a' stroke-width='2' viewBox='0 0 12 12'%3E%3Cpolyline points='3 5 6 8 9 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center}._iconButton_ljinx_120{background:var(--bg-tertiary);border:1px solid var(--border-primary);color:var(--text-secondary);width:48px;height:48px;border-radius:var(--radius-lg);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast)}._iconButton_ljinx_120:hover{background:var(--bg-elevated);color:var(--text-primary);border-color:var(--border-secondary)}._actions_ljinx_140{display:flex;gap:var(--space-3);margin-top:var(--space-6);border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._hr_ljinx_148{border:none;border-top:1px solid var(--border-primary);margin:var(--space-8) 0}@media(max-width:600px){._userInfo_ljinx_36{flex-direction:column;align-items:flex-start}._actions_ljinx_140{flex-direction:column}}._sectionCard_hf2a3_1{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:var(--space-8);border-radius:var(--radius-xl);box-shadow:var(--glass-shadow);margin-bottom:var(--space-6)}._sectionCard_hf2a3_1 h3{margin:0 0 var(--space-2);font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary)}._sectionCard_hf2a3_1 p{color:var(--text-secondary);font-size:var(--font-size-sm);margin:0 0 var(--space-6);line-height:1.6}._settingItem_hf2a3_26{border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._settingRow_hf2a3_31{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4)}._modalOverlay_hf2a3_38{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-4)}._modal_hf2a3_38{background:var(--bg-secondary, #1a1a2e);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:var(--space-8);max-width:420px;width:100%;box-shadow:var(--glass-shadow)}._modal_hf2a3_38 h4{margin:0 0 var(--space-2);font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary)}._modal_hf2a3_38 p{color:var(--text-secondary);font-size:var(--font-size-sm);line-height:1.6;margin:0 0 var(--space-6)}._modalActions_hf2a3_73{display:flex;justify-content:flex-end;gap:var(--space-3)}._modalSecondary_hf2a3_79{background:transparent;border:1px solid var(--border-primary);color:var(--text-primary);border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);cursor:pointer;font-size:var(--font-size-sm)}._modalPrimary_hf2a3_89{background:var(--accent, #ef4444);border:none;color:var(--accent-text, #fff);border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);cursor:pointer;font-size:var(--font-size-sm);font-weight:600}._modalSecondary_hf2a3_79:disabled,._modalPrimary_hf2a3_89:disabled{opacity:.6;cursor:default}._sectionCard_1qfho_1{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:var(--space-8);border-radius:var(--radius-xl);box-shadow:var(--glass-shadow)}._sectionCard_1qfho_1 h3{margin:0 0 var(--space-2);font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary)}._sectionCard_1qfho_1 p{color:var(--text-secondary);font-size:var(--font-size-sm);margin:0 0 var(--space-6);line-height:1.6}._settingItem_1qfho_25{border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._field_1qfho_30{display:flex;flex-direction:column;gap:.5rem;margin-bottom:var(--space-4)}._field_1qfho_30 label{font-size:.9rem;color:var(--text-secondary);font-weight:500}._input_1qfho_43{background:var(--bg-secondary);border:1px solid var(--border-primary);color:var(--text-primary);padding:.6rem;border-radius:4px;width:100%;max-width:400px}._input_1qfho_43:hover{border-color:var(--border-secondary)}._input_1qfho_43:focus{outline:none;border-color:var(--accent);box-shadow:var(--shadow-input-focus)}._actions_1qfho_63{display:flex;gap:var(--space-3);flex-wrap:wrap}._status_1qfho_69{margin-top:var(--space-4);padding:var(--space-3) var(--space-4);background:#8b5cf61a;border-radius:var(--radius-md);color:var(--accent-light);font-size:var(--font-size-sm);font-weight:500}.alert{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);border:1px solid transparent}.alert-info{background:#8b5cf61a;border-color:var(--accent);color:var(--text-primary)}.alert-success{background:#10b9811a;border-color:var(--color-success);color:var(--color-success)}.alert-warning{background:#f59e0b1a;border-color:var(--color-warning);color:var(--color-warning)}.alert-error{background:#ef44441a;border-color:var(--color-danger);color:var(--color-danger)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as w,T as ee,A as $,g as V,e,S as Y,L as q,$ as $e,h as te,q as m,N as Ae,f as Ie}from"./vendor-rLNfZm7Y.js";import{g as ae,i as Re,a7 as ke,s as xe,j as re,Q as Se,ar as Oe,am as De,u as le,d as Le,h as ze,k as Fe,aw as ne,a6 as Ve,ax as Ge,an as We,B as se,al as Ue,ay as Qe}from"./index-CpjgU8ou.js";import{b as Ye,Q as qe,c as Xe,f as He,s as Je,a as Ke}from"./useIsMobile-Cb8HcKRj.js";import{u as Ze}from"./useAnimeInfoData-BOfyi9UJ.js";const et="_popupPortal_1lefp_1",tt="_popupContent_1lefp_6",nt="_popupBackdrop_1lefp_31",st="_mobile_1lefp_38",ot="_header_1lefp_62",at="_title_1lefp_67",rt="_body_1lefp_87",lt="_metaRow_1lefp_94",it="_metaItem_1lefp_101",ct="_scoreIcon_1lefp_107",dt="_synopsis_1lefp_111",pt="_details_1lefp_121",ut="_detailItem_1lefp_129",_t="_genres_1lefp_133",mt="_genre_1lefp_133",ht="_footer_1lefp_148",gt="_primaryAction_1lefp_157",ft="_watchBtn_1lefp_161",vt="_secondaryActions_1lefp_184",bt="_watchlistBtn_1lefp_189",Bt="_detailsBtn_1lefp_190",yt="_active_1lefp_216",Nt="_loading_1lefp_227",wt="_spinner_1lefp_237",o={popupPortal:et,popupContent:tt,popupBackdrop:nt,mobile:st,header:ot,title:at,body:rt,metaRow:lt,metaItem:it,scoreIcon:ct,synopsis:dt,details:pt,detailItem:ut,genres:_t,genre:mt,footer:ht,primaryAction:gt,watchBtn:ft,secondaryActions:vt,watchlistBtn:bt,detailsBtn:Bt,active:yt,loading:Nt,spinner:wt},Ct=({showId:t,anchorRect:a,onMouseEnter:i,onMouseLeave:c,onRequestClose:h})=>{const[d]=w(()=>window.matchMedia("(pointer: coarse)").matches),{showMeta:n,loadingMeta:A,inWatchlist:_,toggleWatchlist:g}=Ze(t),{titlePreference:b}=ae(),I=ee(()=>n?.name?b==="name"?n.name:b==="nativeName"?n.names?.native||n.name:b==="englishName"&&n.names?.english||n.name:"",[n,b]),C=ee(()=>({getBoundingClientRect:()=>a}),[a]),{refs:T,floatingStyles:N}=Ye({elements:{reference:C},placement:"right-start",middleware:[He({fallbackAxisSideDirection:"start"}),Je({padding:20})],whileElementsMounted:Xe}),[r,u]=w(!1),f=$(!1);V.useEffect(()=>{if(!d)return;const p=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=p}},[d]);const S=()=>{f.current=!0,i()},O=()=>{f.current=!1,!r&&c()},v=p=>{u(p),!p&&!f.current&&c()},R=e(Y,{children:[d&&e("div",{className:o.popupBackdrop,onClick:()=>h?.()}),e("div",{ref:d?void 0:T.setFloating,className:`${o.popupPortal} ${d?o.mobile:""}`,style:d?void 0:N,onMouseEnter:S,onMouseLeave:O,children:e("div",{className:o.popupContent,children:A?e("div",{className:o.loading,children:[e("div",{className:o.spinner}),e("span",{children:"Fetching details..."})]}):n?e(Y,{children:[e("div",{className:o.header,children:e("div",{className:o.title,children:I})}),e("div",{className:o.body,children:[e("div",{className:o.metaRow,children:[n.score&&e("div",{className:o.metaItem,children:[e(Re,{className:o.scoreIcon,size:14}),e("span",{children:n.score})]}),n.status&&e("div",{className:o.metaItem,children:[e(ke,{size:14}),e("span",{children:n.status})]})]}),e("div",{className:o.synopsis,children:n.description?xe(n.description):"No synopsis available."}),e("div",{className:o.details,children:[n.nextEpisodeAirDate&&e("div",{className:o.detailItem,children:[e("strong",{children:"Aired:"})," ",n.nextEpisodeAirDate]}),Array.isArray(n.genres)&&n.genres.length>0&&e("div",{className:o.genres,children:n.genres.filter(Boolean).slice(0,4).map(p=>{const D=typeof p=="string"?p:p?.name;return e("span",{className:o.genre,children:D},D)})})]})]}),e("div",{className:o.footer,children:[e("div",{className:o.primaryAction,children:e(q,{to:`/watch/${n?.id||t}`,className:o.watchBtn,children:[e(re,{size:14}),"Watch now"]})}),e("div",{className:o.secondaryActions,children:[e("button",{className:`${o.watchlistBtn} ${_?o.active:""}`,onClick:p=>{p.preventDefault(),p.stopPropagation(),g()},children:[_?e(Se,{size:12}):e(Oe,{size:12}),e("span",{children:_?"Remove":"Watchlist"})]}),e(qe,{showId:t,showName:n.name||n.names?.romaji,showThumbnail:n.thumbnail,nativeName:n.names?.native,englishName:n.names?.english,showType:n.type,className:o.watchlistBtn,activeClassName:o.active,align:"left",onMenuOpenChange:v}),e(q,{to:`/anime/${n?.id||t}`,className:o.detailsBtn,children:"Read more"})]})]})]}):e("div",{className:o.loading,children:"Failed to load info."})})})]});return $e(R,document.body)},Tt=t=>!t||t.trim()===""?!0:t.includes("placeholder");function Pt(t,a){const[i,c]=w(a);return te(()=>{c(a)},[a]),te(()=>{if(!Tt(a)||!t)return;let h=!1;return De(`/api/show-meta/${t}`).then(d=>{const n=d?.thumbnail;!h&&n&&n.trim()!==""&&!n.includes("placeholder")&&c(n)}).catch(()=>{}),()=>{h=!0}},[t,a]),{thumbnail:i}}const Et="_cardWrapper_98jil_1",Mt="_card_98jil_1",jt="_cardButton_98jil_35",$t="_hoverOverlay_98jil_60",At="_matureOverlay_98jil_81",It="_posterContainer_98jil_91",Rt="_posterImg_98jil_100",kt="_blurred_98jil_112",xt="_flat_98jil_135",St="_loaded_98jil_139",Ot="_posterGradient_98jil_143",Dt="_progressSection_98jil_163",Lt="_titleSection_98jil_170",zt="_title_98jil_170",Ft="_titleText_98jil_189",Vt="_badge_98jil_201",Gt="_typeBadge_98jil_212 _badge_98jil_201",Wt="_epBadge_98jil_221 _badge_98jil_201",Ut="_airTime_98jil_230",Qt="_adultBadge_98jil_237 _badge_98jil_201",Yt="_gated_98jil_250",qt="_notAiredBadge_98jil_256 _badge_98jil_201",Xt="_metaRow_98jil_271",Ht="_metaItem_98jil_282",Jt="_progressContainer_98jil_299",Kt="_progressBar_98jil_307",Zt="_timestamp_98jil_314",en="_removeBtn_98jil_319",tn="_infoBtn_98jil_320",nn="_mobileBadges_98jil_369",sn="_mobileBadgeBase_98jil_376",on="_mobileType_98jil_384 _mobileBadgeBase_98jil_376",an="_mobileEp_98jil_391 _mobileBadgeBase_98jil_376",rn="_horizontal_98jil_459",ln="_vertical_98jil_482",cn="_placeholder_98jil_497",dn="_placeholderText_98jil_506",pn="_lowEnd_98jil_513",s={cardWrapper:Et,card:Mt,cardButton:jt,hoverOverlay:$t,matureOverlay:At,posterContainer:It,posterImg:Rt,blurred:kt,flat:xt,loaded:St,posterGradient:Ot,progressSection:Dt,titleSection:Lt,title:zt,titleText:Ft,badge:Vt,typeBadge:Gt,epBadge:Wt,airTime:Ut,adultBadge:Qt,gated:Yt,notAiredBadge:qt,metaRow:Xt,metaItem:Ht,progressContainer:Jt,progressBar:Kt,timestamp:Zt,removeBtn:en,infoBtn:tn,mobileBadges:nn,mobileBadgeBase:sn,mobileType:on,mobileEp:an,horizontal:rn,vertical:ln,placeholder:cn,placeholderText:dn,lowEnd:pn},un=500,oe=20,_n=300;function mn(t){const a=$(null),i=$(null),c=$(!1),h=$({x:0,y:0}),d=$(null),n=m(()=>{i.current&&(clearTimeout(i.current),i.current=null)},[]),A=m(()=>{a.current&&(clearTimeout(a.current),a.current=null)},[]),_=m(r=>{a.current&&clearTimeout(a.current),a.current=setTimeout(r,_n)},[]),g=m((r,u=!1)=>{c.current=u,t(r,u)},[t]),b=m((r,u)=>{if(u||r.pointerType==="mouse")return;d.current=r.pointerType,c.current=!1,h.current={x:r.clientX,y:r.clientY};const f=r.currentTarget.getBoundingClientRect();n(),i.current=setTimeout(()=>{i.current=null,g(f,!0)},un)},[n,g]),I=m(r=>{if(!i.current)return;const u=Math.abs(r.clientX-h.current.x),f=Math.abs(r.clientY-h.current.y);(u>oe||f>oe)&&n()},[n]),C=m(()=>{n(),d.current=null},[n]),T=m((r,u)=>{r.preventDefault(),r.stopPropagation(),d.current==="touch"?i.current&&(clearTimeout(i.current),i.current=null,g(r.currentTarget.getBoundingClientRect(),!0)):!u&&!c.current&&g(r.currentTarget.getBoundingClientRect())},[g]),N=m(()=>c.current?(c.current=!1,!0):!1,[]);return{longPressFiredRef:c,cancelLongPress:n,clearPopupTimeout:A,schedulePopupClose:_,openViaHold:g,handlePointerDown:b,handlePointerMove:I,handlePointerUpOrCancel:C,handleContextMenu:T,consumeLongPressClick:N}}const Q={elements:{poster:{typeBadge:!0,episodeBadge:!0,adultBadge:!0},info:{title:!0,mobileBadges:!0,progress:!0,meta:!0}}},jn=Ae(({anime:t,continueWatching:a=!1,onRemove:i,config:c,layout:h="vertical"})=>{const d=Ie(),n=Ke(),{titlePreference:A}=ae(),{lowEndMode:_}=le(),[g,b]=w(!1),[I,C]=w(!1),{thumbnail:T}=Pt(t._id,t.thumbnail),[N,r]=w(!1),[u,f]=w(null),S=l=>{f(l),r(!0)},O=()=>{r(!1),f(null)},v=mn(S),R=m(()=>{v.schedulePopupClose(O)},[v]),p=v.clearPopupTimeout,D=l=>{if(n)return;const U=l.currentTarget.getBoundingClientRect();S(U)},ie=()=>{R()},ce=()=>{p()},de=()=>{R()},pe=l=>{v.handlePointerDown(l,B)},ue=l=>{v.handlePointerMove(l)},X=()=>{v.handlePointerUpOrCancel()},_e=l=>{v.handleContextMenu(l,B)},H={...c,elements:{...Q.elements,...c?.elements||{},poster:{...Q.elements?.poster,...c?.elements?.poster||{}},info:{...Q.elements?.info,...c?.elements?.info||{}}}},P=t.currentTime||0,E=t.duration||0,G=P>5&&E>5&&P<E*.95,J=P>0&&(E<=5||P>=E*.95),W=t[A]||t.name,M=t.episodeNumber,k=a?{pathname:M?`/watch/${t._id}/${M}`:`/watch/${t._id}`,state:{name:t.name,thumbnail:T??t.thumbnail,nativeName:t.nativeName,englishName:t.englishName,type:t.type}}:M?`/watch/${t._id}/${M}`:`/anime/${t._id}`,me=(()=>{if(typeof k=="string")return k.startsWith("/watch/");const l=k.pathname;return typeof l=="string"&&l.startsWith("/watch/")})(),he=G||J,ge=G?P/E*100:J?100:0,fe=m(l=>{l.preventDefault(),l.stopPropagation();const U=t.id||t.showId||t._id;i&&i(U)},[i,t.id,t.showId,t._id]),j=a&&M?`EP ${M}`:t.watchedCount!==void 0&&t.watchedCount>0?`EP ${t.watchedCount}`:null,x=H.elements?.poster,L=H.elements?.info,ve=x?.typeBadge??!a,be=x?.episodeBadge??!0,Be=x?.removeButton===void 0?a&&!!i:x.removeButton,ye=x?.adultBadge??!0,Ne=L?.mobileBadges??!0,we=L?.progress??!0,Ce=L?.meta??!0,K=t.isAdult||t.rating==="R+"||t.rating==="Rx"||t.rating?.includes("17+"),[Te,Pe]=Le("agreedToViewMature","false"),Ee=Te==="true",[Z,z]=V.useState(!1),F=V.useRef(null),Me=()=>{Pe("true"),z(!1),F.current&&(d(F.current),F.current=null)},B=K&&!Ee,je=l=>{if(v.consumeLongPressClick()){l.preventDefault(),l.stopPropagation();return}B&&(l.preventDefault(),l.stopPropagation(),F.current=k,z(!0))};return e("div",{className:`${s.cardWrapper} ${_?s.lowEnd:""}`,onMouseEnter:()=>{C(!0),N&&p()},onMouseLeave:()=>{C(!1),N&&R()},children:[e(q,{to:k,className:`${s.card} ${s[h]} ${B?s.cardButton:""}`,onClick:je,onContextMenu:_e,onPointerDown:pe,onPointerMove:ue,onPointerUp:X,onPointerCancel:X,children:[e("div",{className:s.posterContainer,children:[B&&e("div",{className:`${s.matureOverlay} ${_?s.flat:""}`}),e("img",{src:ze(T,_?100:150,_?150:200),alt:W,className:`${s.posterImg} ${g?s.loaded:""} ${B&&!_?s.blurred:""}`,loading:"lazy",decoding:"async",onLoad:()=>b(!0)}),!n&&e(Y,{children:[ve&&e("div",{className:s.typeBadge,children:t.type||"TV"}),be&&(j||t.episodeNumber)&&e("div",{className:s.epBadge,children:[j||`EP ${t.episodeNumber}`,t.airTime&&e("span",{className:s.airTime,children:t.airTime}),t.aired===!1&&t.nextEpisodeAirDate&&e("span",{className:s.airTime,children:[" · ",t.nextEpisodeAirDate.split(",")[0]]})]})]}),ye&&K&&e("div",{className:`${s.adultBadge} ${B?s.gated:""}`,children:"18+"}),t.aired===!1&&e("div",{className:s.notAiredBadge,children:"NOT AIRED"}),!n&&I&&e("div",{className:s.hoverOverlay,children:me?e(re,{size:28}):e(Fe,{size:28})})]}),we&&a&&he&&e("div",{className:s.progressSection,children:[e("div",{className:s.progressContainer,children:e("div",{className:s.progressBar,style:{width:`${ge}%`}})}),G?e("div",{className:s.timestamp,children:[ne(P)," / ",ne(E)]}):e("div",{className:s.timestamp,children:"Watched"})]}),e("div",{className:s.titleSection,children:[n&&Ne&&e("div",{className:s.mobileBadges,children:[e("span",{className:s.mobileType,children:t.type||"TV"}),(j||t.episodeNumber)&&e("span",{className:s.mobileEp,children:j||`EP ${t.episodeNumber}`})]}),L?.title!==!1&&e("div",{className:s.title,title:W,children:e("span",{className:s.titleText,children:W})}),Ce&&e("div",{className:s.metaRow,children:[(t.availableEpisodesDetail?.sub||t.availableEpisodes?.sub)&&e("div",{className:s.metaItem,children:[e(Ve,{size:10}),t.availableEpisodesDetail?.sub?.length??t.availableEpisodes?.sub]}),(t.availableEpisodesDetail?.dub||t.availableEpisodes?.dub)&&e("div",{className:s.metaItem,children:[e(Ge,{size:10}),t.availableEpisodesDetail?.dub?.length??t.availableEpisodes?.dub]})]})]})]}),Z&&e(We,{isOpen:Z,title:"Content Warning",onClose:()=>z(!1),children:e("div",{style:{padding:"1rem",textAlign:"center"},children:[e("p",{children:"This title contains mature content intended for adult audiences."}),e("p",{children:["By proceeding, you confirm that you are ",e("strong",{children:"18 years of age or older"})," ","(or the age of majority in your jurisdiction) and wish to view this content."]}),e("p",{style:{fontSize:"0.8rem",color:"var(--text-secondary)",marginTop:"1rem"},children:["You can reset this preference at any time in the ",e("strong",{children:"Settings"})," page."]}),e("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center"},children:[e(se,{variant:"secondary",onClick:()=>z(!1),children:"Go Back"}),e(se,{onClick:Me,children:"I'm 18+, Continue"})]})]})}),Be&&e("button",{className:s.removeBtn,onClick:fe,"aria-label":"Remove",children:e(Ue,{size:10})}),!a&&!n&&!B&&e("button",{className:s.infoBtn,onMouseEnter:D,onMouseLeave:ie,"aria-label":"Info",children:e(Qe,{size:11})}),N&&u&&e(Ct,{showId:t._id,anchorRect:u,onMouseEnter:ce,onMouseLeave:de,onRequestClose:O})]})}),hn="_skeletonCard_1b0hr_1",gn="_poster_1b0hr_11",fn="_line_1b0hr_20",vn="_info_1b0hr_38",bn="_short_1b0hr_54",Bn="_horizontal_1b0hr_60",yn="_vertical_1b0hr_78",Nn="_lowEnd_1b0hr_97",y={skeletonCard:hn,poster:gn,line:fn,"skeleton-wave":"_skeleton-wave_1b0hr_1",info:vn,short:bn,horizontal:Bn,vertical:yn,lowEnd:Nn},wn=({layout:t="vertical"})=>{const{lowEndMode:a}=le();return e("div",{className:`${y.skeletonCard} ${y[t]} ${a?y.lowEnd:""}`,children:[e("div",{className:y.poster}),e("div",{className:y.info,children:[e("div",{className:y.line}),e("div",{className:`${y.line} ${y.short}`})]})]})},Cn=({count:t=14,layout:a="vertical"})=>e("div",{className:"grid-container",children:Array.from({length:t}).map((i,c)=>e(wn,{layout:a},c))}),$n=V.memo(Cn);export{wn as A,$n as S,jn as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._popupPortal_1lefp_1{z-index:var(--z-popover);pointer-events:none}._popupContent_1lefp_6{pointer-events:auto;width:320px;background-color:var(--bg-secondary);border-radius:var(--radius-lg);box-shadow:0 10px 30px #00000080;border:1px solid var(--border-secondary);overflow:hidden;display:flex;flex-direction:column;animation:_fadeIn_1lefp_1 .2s ease-out;color:var(--text-primary)}@keyframes _fadeIn_1lefp_1{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}._popupBackdrop_1lefp_31{position:fixed;inset:0;z-index:var(--z-popover);background:#0009}._popupPortal_1lefp_1._mobile_1lefp_38{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:calc(var(--z-popover) + 1);pointer-events:auto}._popupPortal_1lefp_1._mobile_1lefp_38 ._popupContent_1lefp_6{width:min(340px,calc(100vw - 32px));max-height:85svh;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}@media(orientation:landscape)and (max-height:500px){._popupPortal_1lefp_1._mobile_1lefp_38 ._popupContent_1lefp_6{width:min(460px,calc(100vw - 24px));max-height:calc(100svh - 16px)}}._header_1lefp_62{padding:var(--space-4);background:linear-gradient(to bottom,rgba(0,0,0,.3),transparent)}._title_1lefp_67{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);margin-bottom:var(--space-1);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--accent-light)}._altTitle_1lefp_78{font-size:var(--font-size-xs);color:var(--text-muted);display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}._body_1lefp_87{padding:0 var(--space-4) var(--space-4) var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}._metaRow_1lefp_94{display:flex;align-items:center;gap:var(--space-4);font-size:var(--font-size-sm)}._metaItem_1lefp_101{display:flex;align-items:center;gap:var(--space-1)}._scoreIcon_1lefp_107{color:var(--color-warning)}._synopsis_1lefp_111{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.5;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}._details_1lefp_121{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--font-size-xs);color:var(--text-muted)}._detailItem_1lefp_129 strong{color:var(--text-secondary)}._genres_1lefp_133{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-top:var(--space-1)}._genre_1lefp_133{background:var(--bg-tertiary);padding:2px 8px;border-radius:var(--radius-sm);font-size:12px;color:var(--text-secondary)}._footer_1lefp_148{padding:var(--space-4);border-top:1px solid var(--border-secondary);background-color:var(--bg-tertiary);display:flex;flex-direction:column;gap:var(--space-2)}._primaryAction_1lefp_157{width:100%}._watchBtn_1lefp_161{width:100%;height:48px;background-color:var(--accent);color:#fff;border:none;border-radius:var(--radius-md);font-weight:var(--font-weight-bold);display:flex;align-items:center;justify-content:center;gap:var(--space-2);cursor:pointer;transition:all .2s;text-decoration:none;font-size:var(--font-size-base)}._watchBtn_1lefp_161:hover{background-color:var(--accent-dark);transform:translateY(-1px)}._secondaryActions_1lefp_184{display:flex;gap:var(--space-2)}._watchlistBtn_1lefp_189,._detailsBtn_1lefp_190{flex:1;height:36px;display:flex;align-items:center;justify-content:center;gap:var(--space-2);background-color:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border-secondary);border-radius:var(--radius-md);cursor:pointer;font-size:11px;font-weight:var(--font-weight-semibold);transition:all .2s;text-decoration:none;white-space:nowrap}._watchlistBtn_1lefp_189:hover,._detailsBtn_1lefp_190:hover{background-color:var(--bg-secondary);border-color:var(--accent);color:var(--accent)}._watchlistBtn_1lefp_189._active_1lefp_216{background-color:var(--accent);border-color:var(--accent);color:#fff}._watchlistBtn_1lefp_189._active_1lefp_216:hover{background-color:var(--accent-dark);border-color:var(--accent-dark)}._loading_1lefp_227{padding:var(--space-8);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);color:var(--text-muted)}._spinner_1lefp_237{width:30px;height:30px;border:3px solid rgba(255,255,255,.1);border-top-color:var(--accent);border-radius:50%;animation:_spin_1lefp_237 1s linear infinite}@keyframes _spin_1lefp_237{to{transform:rotate(360deg)}}._cardWrapper_98jil_1{position:relative;width:100%;height:100%;min-width:0;z-index:1;transition:z-index var(--transition-fast);content-visibility:auto;contain-intrinsic-size:200px 300px;border-radius:var(--radius-md)}._cardWrapper_98jil_1:hover{z-index:5}._card_98jil_1{display:flex;flex-direction:column;background-color:var(--bg-secondary);border-radius:var(--radius-md);overflow:hidden;height:100%;min-width:0;box-shadow:none;border:1px solid var(--border-secondary);transition:border-color var(--transition-base),background-color var(--transition-base);-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}._cardButton_98jil_35{width:100%;padding:0;text-align:left;font:inherit;border:1px solid var(--border-secondary);cursor:pointer}._cardButton_98jil_35:focus-visible{outline:2px solid var(--accent);outline-offset:2px}._cardWrapper_98jil_1:hover ._card_98jil_1,._cardWrapper_98jil_1:focus-within ._card_98jil_1{border-color:var(--border-accent);background-color:var(--bg-tertiary);box-shadow:var(--shadow-active)}._cardWrapper_98jil_1:focus-within{z-index:5}._hoverOverlay_98jil_60{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;background:#0f0f1373;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:8;border-radius:var(--radius-md) var(--radius-md) 0 0}._cardWrapper_98jil_1:hover ._hoverOverlay_98jil_60,._cardWrapper_98jil_1:focus-within ._hoverOverlay_98jil_60{opacity:1}._cardWrapper_98jil_1:has(._matureOverlay_98jil_81) ._hoverOverlay_98jil_60{display:none}@media(hover:none),(pointer:coarse){._hoverOverlay_98jil_60{display:none}}._posterContainer_98jil_91{position:relative;width:100%;aspect-ratio:3 / 4;overflow:hidden;background:var(--bg-tertiary);border-radius:var(--radius-md) var(--radius-md) 0 0}._posterImg_98jil_100{width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .4s ease,transform var(--transition-base),filter var(--transition-base);border-radius:var(--radius-md) var(--radius-md) 0 0}._posterImg_98jil_100._blurred_98jil_112{filter:blur(15px)}._matureOverlay_98jil_81{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#00000073;z-index:10;cursor:pointer;flex-direction:column;gap:var(--space-2);padding:var(--space-2);text-align:center;transition:background-color var(--transition-base)}._matureOverlay_98jil_81._flat_98jil_135{background-color:#000000f2}._posterImg_98jil_100._loaded_98jil_139{opacity:1}._posterGradient_98jil_143{position:absolute;bottom:0;left:0;right:0;height:60%;background:linear-gradient(to top,rgba(0,0,0,.9) 0%,rgba(0,0,0,.5) 40%,transparent 100%);pointer-events:none;z-index:3}._cardWrapper_98jil_1:hover ._posterImg_98jil_100{transform:scale(1.05)}._progressSection_98jil_163{padding:var(--space-2) var(--space-3);display:flex;flex-direction:column;gap:2px}._titleSection_98jil_170{padding:var(--space-3) var(--space-3) 0;display:flex;flex-direction:column;gap:var(--space-1)}._title_98jil_170{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);line-height:1.3;color:#e2e8f0;height:2.6em;margin-bottom:0;transition:color var(--transition-base);word-break:break-word;min-width:0}._titleText_98jil_189{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:2.6em}._cardWrapper_98jil_1:hover ._title_98jil_170{color:var(--accent-light)}._badge_98jil_201{position:absolute;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);z-index:2;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}._typeBadge_98jil_212{top:var(--space-2);left:var(--space-2);background-color:#000000b3;color:#fff;border:1px solid rgba(255,255,255,.1)}._epBadge_98jil_221{bottom:var(--space-2);left:var(--space-2);background-color:var(--accent);color:var(--accent-text);border-radius:var(--radius-full)}._airTime_98jil_230{margin-left:6px;font-size:12px;opacity:.85;font-weight:500}._adultBadge_98jil_237{bottom:var(--space-2);right:var(--space-2);background-color:var(--color-danger);color:#fff;border:none;font-size:14px;padding:5px 10px;z-index:5;box-shadow:0 2px 8px #0006}._posterContainer_98jil_91 ._adultBadge_98jil_237._gated_98jil_250{background-color:#000000bf;border:1px solid rgba(220,53,69,.45);color:#ff4a5a}._notAiredBadge_98jil_256{top:var(--space-2);right:var(--space-2);background-color:#0369a1;color:#fff;border:none;font-size:11px;font-weight:800;letter-spacing:.06em;padding:4px 8px;z-index:5;box-shadow:0 2px 8px #0006}._metaRow_98jil_271{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-xs);color:#94a3b8;margin-top:auto;min-width:0;height:24px}._metaItem_98jil_282{display:flex;align-items:center;gap:var(--space-1);background-color:var(--bg-tertiary);padding:2px var(--space-2);border-radius:var(--radius-sm);transition:background-color var(--transition-base),color var(--transition-base)}._metaItem_98jil_282:hover{background-color:var(--bg-elevated);color:var(--text-primary)}._progressContainer_98jil_299{width:100%;height:4px;background-color:var(--bg-tertiary);border-radius:var(--radius-sm);overflow:hidden}._progressBar_98jil_307{height:100%;background:var(--accent);border-radius:var(--radius-sm);transition:width .3s ease}._timestamp_98jil_314{font-size:var(--font-size-xs);color:var(--text-muted)}._removeBtn_98jil_319,._infoBtn_98jil_320{position:absolute;top:var(--space-2);right:var(--space-2);width:28px;height:28px;border-radius:50%;background-color:#0009;color:#fff;border:1px solid rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .15s ease,background-color .15s ease,transform .15s ease;z-index:20;font-size:14px}._cardWrapper_98jil_1 ._removeBtn_98jil_319:hover{background-color:#ef4444e6;border-color:#ef4444e6;transform:scale(1.08)}._infoBtn_98jil_320:hover{background-color:var(--accent);border-color:var(--accent);transform:scale(1.08)}._cardWrapper_98jil_1:hover ._removeBtn_98jil_319,._card_98jil_1:hover ._removeBtn_98jil_319,._cardWrapper_98jil_1:hover ._infoBtn_98jil_320,._card_98jil_1:hover ._infoBtn_98jil_320{opacity:1}@media(hover:none),(pointer:coarse){._removeBtn_98jil_319,._infoBtn_98jil_320{display:none}}._mobileBadges_98jil_369{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-bottom:var(--space-1)}._mobileBadgeBase_98jil_376{font-size:10px;font-weight:var(--font-weight-bold);padding:1px var(--space-1);border-radius:4px;text-transform:uppercase}._mobileType_98jil_384{background-color:#ffffff1a;color:var(--text-secondary);border:1px solid rgba(255,255,255,.1)}._mobileEp_98jil_391{background-color:var(--accent);color:var(--accent-text)}@media(max-width:768px){._cardWrapper_98jil_1,._card_98jil_1{height:auto}._progressSection_98jil_163{padding:4px 8px}._titleSection_98jil_170{padding:8px 8px 0}._cardWrapper_98jil_1 ._title_98jil_170{height:auto;max-height:2.6em;font-size:.82rem;line-height:1.25;color:#e2e8f0}._titleText_98jil_189{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:2.6em;word-break:break-word;color:#e2e8f0}._removeBtn_98jil_319,._infoBtn_98jil_320{min-width:36px;min-height:36px;width:36px;height:36px;font-size:14px}._mobileBadges_98jil_369{justify-content:center;margin-bottom:4px;gap:4px}._metaRow_98jil_271{margin-top:auto;justify-content:center;height:20px}._typeBadge_98jil_212{display:none}._cardWrapper_98jil_1 ._removeBtn_98jil_319{opacity:1;background-color:#00000080}._card_98jil_1._horizontal_98jil_459{flex-direction:row;height:auto;min-height:100px}._card_98jil_1._horizontal_98jil_459 ._posterContainer_98jil_91{width:85px;height:100%;aspect-ratio:auto;flex-shrink:0}._card_98jil_1._horizontal_98jil_459 ._posterGradient_98jil_143{display:none}._card_98jil_1._horizontal_98jil_459 ._titleSection_98jil_170{padding:var(--space-2) var(--space-3);justify-content:center;flex-grow:1}._card_98jil_1._vertical_98jil_482 ._posterContainer_98jil_91{width:100%;aspect-ratio:3 / 4}._card_98jil_1._vertical_98jil_482 ._titleSection_98jil_170{align-items:center;text-align:center}._card_98jil_1._vertical_98jil_482 ._mobileBadges_98jil_369{justify-content:center}}._placeholder_98jil_497{width:100%;height:100%;background:var(--bg-tertiary);display:flex;align-items:center;justify-content:center}._placeholderText_98jil_506{font-size:2.5rem;font-weight:var(--font-weight-bold);color:var(--text-tertiary);opacity:.3}._cardWrapper_98jil_1._lowEnd_98jil_513 ._card_98jil_1,._cardWrapper_98jil_1._lowEnd_98jil_513 ._posterImg_98jil_100{transition:none}._skeletonCard_1b0hr_1{display:flex;flex-direction:column;background-color:var(--bg-secondary);border-radius:var(--radius-md);overflow:hidden;height:100%;border:1px solid var(--border-secondary)}._poster_1b0hr_11{width:100%;aspect-ratio:3 / 4;background-color:var(--bg-tertiary);position:relative;overflow:hidden}._poster_1b0hr_11:after,._line_1b0hr_20:after{content:"";position:absolute;inset:0;transform:translate(-100%);background-image:linear-gradient(90deg,#fff0 0,#ffffff0d 20%,#ffffff1f 60%,#fff0);animation:_skeleton-wave_1b0hr_1 1.8s infinite ease-in-out}._info_1b0hr_38{padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2);flex-grow:1}._line_1b0hr_20{position:relative;overflow:hidden;height:18px;border-radius:var(--radius-sm);background-color:var(--bg-tertiary)}._line_1b0hr_20._short_1b0hr_54{width:60%;height:14px}@media(max-width:768px){._skeletonCard_1b0hr_1._horizontal_1b0hr_60{flex-direction:row;height:auto;min-height:100px}._skeletonCard_1b0hr_1._horizontal_1b0hr_60 ._poster_1b0hr_11{width:85px;height:100%;aspect-ratio:auto;flex-shrink:0}._skeletonCard_1b0hr_1._horizontal_1b0hr_60 ._info_1b0hr_38{padding:var(--space-2) var(--space-3);justify-content:center}._skeletonCard_1b0hr_1._vertical_1b0hr_78 ._poster_1b0hr_11{width:100%;aspect-ratio:3 / 4}._skeletonCard_1b0hr_1._vertical_1b0hr_78 ._info_1b0hr_38{padding:var(--space-2);align-items:center}._line_1b0hr_20{height:16px}._line_1b0hr_20._short_1b0hr_54{height:12px}}._skeletonCard_1b0hr_1._lowEnd_1b0hr_97{min-height:0}._skeletonCard_1b0hr_1._lowEnd_1b0hr_97 ._poster_1b0hr_11:after,._skeletonCard_1b0hr_1._lowEnd_1b0hr_97 ._line_1b0hr_20:after{animation:none}._skeletonCard_1b0hr_1._lowEnd_1b0hr_97 ._line_1b0hr_20{opacity:.6}._skeletonCard_1b0hr_1._lowEnd_1b0hr_97 ._info_1b0hr_38{padding:var(--space-3)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as o,d as f}from"./vendor-rLNfZm7Y.js";import{a as g}from"./useIsMobile-Cb8HcKRj.js";const y={JP:"Japan",KR:"Korea",CN:"China",CH:"China"},l=n=>{if(typeof n=="number"&&Number.isFinite(n))return n;if(typeof n=="string"&&n.trim()!==""){const t=Number(n);if(Number.isFinite(t))return t}return null},S=n=>l(n?.year)!==null&&l(n?.month)!==null&&l(n?.date)!==null,u=n=>{const t=l(n?.year);if(t===null)return null;const e=l(n?.month),r=l(n?.date);return e!==null&&r!==null?new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric",timeZone:"UTC"}).format(new Date(Date.UTC(t,e,r))):e!==null?new Intl.DateTimeFormat("en-US",{month:"short",year:"numeric",timeZone:"UTC"}).format(new Date(Date.UTC(t,e,1))):String(t)},b=(n,t,e)=>{const r=u(n),i=S(t)?u(t):null;return r&&i?`${r} - ${i}`:r&&e?.toLowerCase()==="releasing"?`${r} - TBA`:r||i},C=n=>{const t=[n.availableEpisodesDetail?.sub?.length,n.availableEpisodesDetail?.dub?.length,n.availableEpisodesDetail?.raw?.length].filter(s=>typeof s=="number"),e=[n.availableEpisodes?.sub,n.availableEpisodes?.dub,n.availableEpisodes?.raw].map(l).filter(s=>s!==null),r=Math.max(0,...t,...e),i=l(n.episodeCount);return r>0&&i!==null?`${r}/${i}`:r>0?String(r):i!==null?String(i):null},_=n=>{const t=l(n.score);if(t!==null)return String(t);const e=l(n.averageScore??n.stats?.averageScore);return e!==null?(e/10).toFixed(1):null},E=n=>n?y[n]||n:null,D=n=>n&&[n.quarter||n.season||n.title,n.year].filter(Boolean).join(" ")||null,N=n=>n?.length?n.map(t=>typeof t=="string"?t:t.name).filter(Boolean).join(", "):null,T=n=>n?[["Status",n.status],["Score",_(n)],["Type",n.type],["Country",E(n.country)],["Season",D(n.season)],["Rating",n.rating],["Studios",N(n.studios)],["Aired",b(n.airedStart,n.airedEnd,n.status)],["Episodes",C(n)]].filter(e=>typeof e[1]=="string"&&e[1].trim()!=="").map(([e,r])=>({label:e,value:r})):[],v="_detailsGridContainer_1kd9p_1",B="_detailItem_1kd9p_7",x={detailsGridContainer:v,detailItem:B};function R({showMeta:n,styles:t}){const e=t??x,r=T(n);return o("div",{className:e.detailsGridContainer,children:r.map(i=>o("div",{className:e.detailItem,children:[o("strong",{children:i.label}),o("span",{children:i.value})]},i.label))})}const A="_synopsisBlock_16qnf_1",U="_description_16qnf_7",h="_clamped_16qnf_15",k="_toggleButton_16qnf_24",a={synopsisBlock:A,description:U,clamped:h,toggleButton:k},I=180;function q({text:n,emptyText:t="No description available.",collapsedLines:e=2}){const r=g(),i=n?.trim()||"",s=r&&i.length>I,[d,m]=f(!1),c=!s||d;return i?o("div",{className:a.synopsisBlock,children:[o("p",{className:`${a.description} ${!c&&s?a.clamped:""}`,style:{"--synopsis-lines":String(e)},children:i}),s&&o("button",{type:"button",className:a.toggleButton,onClick:()=>m(p=>!p),"aria-expanded":c,children:c?"Show less":"Read more"})]}):o("p",{className:a.description,children:t})}export{R as A,q as S};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._detailsGridContainer_1kd9p_1{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-4)}._detailItem_1kd9p_7{display:flex;flex-direction:column;gap:var(--space-1)}._synopsisBlock_16qnf_1{display:flex;flex-direction:column;gap:.85rem}._description_16qnf_7{font-size:var(--font-size-base);color:var(--text-secondary);line-height:1.7;margin:0;white-space:pre-wrap}._clamped_16qnf_15{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;-webkit-line-clamp:var(--synopsis-lines, 2);line-clamp:var(--synopsis-lines, 2)}._toggleButton_16qnf_24{align-self:flex-start;border:1px solid var(--border-primary);background:#ffffff0a;color:var(--text-primary);border-radius:var(--radius-full);padding:.45rem .9rem;font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:all var(--transition-fast)}._toggleButton_16qnf_24:hover{border-color:var(--accent);color:var(--accent);background:#ffffff14}
|