ani-web 2.0.7
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 +220 -0
- package/client/dist/assets/AnimeInfo-B88ZA3gl.js +1 -0
- package/client/dist/assets/AnimeInfo-R63luGTP.css +1 -0
- package/client/dist/assets/AnimeInfoPage-xGVarrXG.js +2 -0
- package/client/dist/assets/Button-Fq9KaUOg.css +1 -0
- package/client/dist/assets/Button-lkEUHIDS.js +1 -0
- package/client/dist/assets/ErrorMessage-BVWNgHMx.css +1 -0
- package/client/dist/assets/ErrorMessage-BXKDLzn8.js +1 -0
- package/client/dist/assets/Home-O1FbN8t_.js +1 -0
- package/client/dist/assets/Home-r0eYbWNc.css +1 -0
- package/client/dist/assets/Insights-CF4K-oO5.css +1 -0
- package/client/dist/assets/Insights-opcB-aTo.js +1 -0
- package/client/dist/assets/MAL-BGM33N5c.js +1 -0
- package/client/dist/assets/MAL-DeQNXXPx.css +1 -0
- package/client/dist/assets/Player-BarbgKjI.css +1 -0
- package/client/dist/assets/Player-CSyGax33.js +9 -0
- package/client/dist/assets/PlayerSettings-BaCVQyw6.js +1 -0
- package/client/dist/assets/PlayerSettings-l6aLKrHh.css +1 -0
- package/client/dist/assets/QueueRail-Cxn5U8kE.js +1 -0
- package/client/dist/assets/QueueRail-DOM_pWkE.css +1 -0
- package/client/dist/assets/RemoveConfirmationModal-BBiogSdf.css +1 -0
- package/client/dist/assets/RemoveConfirmationModal-DatCZQKq.js +1 -0
- package/client/dist/assets/Search-BzO-aRP7.css +1 -0
- package/client/dist/assets/Search-DJxo3BYH.js +1 -0
- package/client/dist/assets/SearchableSelect-BkCrf6E8.css +1 -0
- package/client/dist/assets/SearchableSelect-BzYsMz8B.js +1 -0
- package/client/dist/assets/Settings-Bv9fX-x3.css +1 -0
- package/client/dist/assets/Settings-C5adinOe.js +1 -0
- package/client/dist/assets/SynopsisText-C3AK-aRc.js +1 -0
- package/client/dist/assets/SynopsisText-DsI3mW5v.css +1 -0
- package/client/dist/assets/ToggleSwitch-BIlQxIjg.css +1 -0
- package/client/dist/assets/ToggleSwitch-CrXim14A.js +1 -0
- package/client/dist/assets/Watchlist-CXw0vbNx.js +1 -0
- package/client/dist/assets/Watchlist-a2RHQogs.css +1 -0
- package/client/dist/assets/hls.light-DcbkToIY.js +27 -0
- package/client/dist/assets/index-BzX_xmnf.css +1 -0
- package/client/dist/assets/index-Ciivz6fh.js +178 -0
- package/client/dist/assets/useAnimeInfoData-Dqthchpa.js +1 -0
- package/client/dist/assets/useIsMobile-BviODivc.js +1 -0
- package/client/dist/assets/vendor-Bc4EraM_.js +3 -0
- package/client/dist/favicon.ico +0 -0
- package/client/dist/index.html +35 -0
- package/client/dist/logo.png +0 -0
- package/client/dist/placeholder.svg +4 -0
- package/client/dist/robots.txt +3 -0
- package/client/package.json +58 -0
- package/orchestrator.js +323 -0
- package/package.json +88 -0
- package/server/.env +1 -0
- package/server/dist/config.js +89 -0
- package/server/dist/constants.json +1359 -0
- package/server/dist/controllers/auth.controller.js +215 -0
- package/server/dist/controllers/data.controller.js +232 -0
- package/server/dist/controllers/insights.controller.js +200 -0
- package/server/dist/controllers/proxy.controller.js +353 -0
- package/server/dist/controllers/settings.controller.js +159 -0
- package/server/dist/controllers/watchlist.controller.js +749 -0
- package/server/dist/db.js +152 -0
- package/server/dist/discord-rpc.js +279 -0
- package/server/dist/github-sync.js +342 -0
- package/server/dist/google.js +310 -0
- package/server/dist/logger.js +21 -0
- package/server/dist/providers/123anime.provider.js +226 -0
- package/server/dist/providers/allanime.provider.js +736 -0
- package/server/dist/providers/animepahe.provider.js +457 -0
- package/server/dist/providers/animeya.provider.js +787 -0
- package/server/dist/providers/megaplay.provider.js +264 -0
- package/server/dist/providers/provider.interface.js +2 -0
- package/server/dist/rclone.js +126 -0
- package/server/dist/repositories/insights.repository.js +42 -0
- package/server/dist/repositories/notifications.repository.js +30 -0
- package/server/dist/repositories/queue.repository.js +38 -0
- package/server/dist/repositories/settings.repository.js +14 -0
- package/server/dist/repositories/shows-meta.repository.js +41 -0
- package/server/dist/repositories/watched-episodes.repository.js +67 -0
- package/server/dist/repositories/watchlist.repository.js +80 -0
- package/server/dist/routes/auth.routes.js +26 -0
- package/server/dist/routes/data.routes.js +42 -0
- package/server/dist/routes/insights.routes.js +12 -0
- package/server/dist/routes/proxy.routes.js +14 -0
- package/server/dist/routes/settings.routes.js +27 -0
- package/server/dist/routes/watchlist.routes.js +46 -0
- package/server/dist/server.js +229 -0
- package/server/dist/sync-config.js +28 -0
- package/server/dist/sync.js +427 -0
- package/server/dist/utils/db-utils.js +15 -0
- package/server/dist/utils/env.utils.js +79 -0
- package/server/dist/utils/machine-id.js +46 -0
- package/server/dist/utils/request-context.js +5 -0
- package/server/package.json +19 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._controls_1j51z_1{display:flex;align-items:stretch;gap:1.25rem;flex-wrap:wrap;width:100%}._titleContainer_1j51z_9{display:flex;flex-direction:column;gap:1rem}._scheduleInfo_1j51z_15{display:flex;gap:1rem;font-size:.95rem;color:var(--text-tertiary);align-items:center}._status_1j51z_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_1j51z_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_1j51z_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_1j51z_45:hover{background:#ffffff1f;border-color:#ffffff40;transform:translateY(-2px);box-shadow:0 4px 12px #00000040}._watchlistBtn_1j51z_45._inList_1j51z_72{background:#10b9811f;border-color:#10b98159;color:var(--color-success)}._watchlistBtn_1j51z_45._inList_1j51z_72:hover{background:#10b9812e;border-color:var(--color-success)}._queueBtn_1j51z_83{background:#8b5cf614;border-color:#8b5cf640;color:#d8b4fe}._queueBtn_1j51z_83:hover{background:#8b5cf624;border-color:#a78bfa73;color:#f3e8ff}._queueActive_1j51z_95{background:#8b5cf626;border-color:#a78bfa99;color:#f5d0fe}._modeToggleBtn_1j51z_101{background:#ffffff0d;color:var(--text-primary);border-color:#ffffff1a;flex:0 1 auto}._modeToggleActive_1j51z_108{background:#3b82f61f;border-color:#60a5fa73;color:#dbeafe}._modeToggleActive_1j51z_108:hover{background:#3b82f62e;border-color:#60a5faa6}._nativeToggleBtn_1j51z_119{background:#ffffff0d;color:var(--text-primary);border-color:#ffffff1a;flex:0 1 auto}._nativeToggleBtn_1j51z_119:hover{background:#ffffff1f;border-color:#ffffff40;transform:translateY(-2px)}._nativeToggleActive_1j51z_132{background:#f59e0b1a;border-color:#f59e0b66;color:#fde68a}._nativeToggleActive_1j51z_132:hover{background:#f59e0b29;border-color:#f59e0b99}._watchlistBtn_1j51z_45:disabled{opacity:.7;cursor:wait;transform:none}._watchlistBtn_1j51z_45:disabled:hover{transform:none}._markWatchedBtn_1j51z_153{background:#3b82f614;border-color:#3b82f640;color:#93c5fd;flex:0 1 auto;justify-content:center}._markWatchedBtn_1j51z_153:hover{background:#3b82f624;border-color:#60a5fa73;color:#dbeafe}._markWatchedDone_1j51z_167{background:#10b9811f;border-color:#10b98159;color:var(--color-success)}._markWatchedDone_1j51z_167:hover{background:#10b9812e;border-color:var(--color-success)}._completeSeriesBtn_1j51z_178{background:#10b9811a;border-color:#10b9814d;color:#d1fae5;flex:0 1 auto;justify-content:center}._completeSeriesBtn_1j51z_178:hover{background:#10b98129;border-color:#34d39973;color:#ecfdf5}._providerAndEpisodeRow_1j51z_192{display:flex;align-items:flex-start;gap:1rem;flex-wrap:wrap}._episodeActions_1j51z_199{display:flex;flex-wrap:wrap;gap:.75rem;margin:.5rem 0 .25rem}._desktopEpisodeActions_1j51z_206{flex:1 1 320px;justify-content:flex-end;align-self:flex-end;margin:0}._mobileEpisodeActions_1j51z_213{margin:.5rem 0 .25rem}._episodeNavBtn_1j51z_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_1j51z_217:hover:not(:disabled){border-color:var(--text-secondary);background:#ffffff14}._episodeNavBtn_1j51z_217:disabled{opacity:.45;cursor:not-allowed;transform:none}._episodeNavBtn_1j51z_217._primary_1j51z_247{background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dark) 100%);border-color:transparent;color:#fff}._episodeNavBtn_1j51z_217._primary_1j51z_247:hover:not(:disabled){background:linear-gradient(135deg,var(--accent-light) 0%,var(--accent) 100%)}._episodeNavBtn_1j51z_217._secondary_1j51z_257{background:#ffffff0a}._episodePickerBtn_1j51z_261{display:none}._queueCountdown_1j51z_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_1j51z_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_1j51z_280 span{line-height:1}._speedBoostBadge_1j51z_280 svg{display:block;flex-shrink:0}._videoContainer_1j51z_311{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000;display:flex;justify-content:center;align-items:center}._loadingOverlay_1j51z_323{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:10;background:#00000080}._loadingDots_1j51z_336{display:flex;gap:10px}._dot_1j51z_341{width:12px;height:12px;border-radius:50%;background-color:var(--accent);animation:_bounce_1j51z_1 1.4s infinite ease-in-out both;box-shadow:0 0 10px var(--accent-glow)}._dot_1j51z_341:nth-child(1){animation-delay:-.32s}._dot_1j51z_341:nth-child(2){animation-delay:-.16s}@keyframes _bounce_1j51z_1{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}._bufferingOverlay_1j51z_370{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:20}._bufferingSpinner_1j51z_379{width:50px;height:50px;border:4px solid rgba(255,255,255,.3);border-radius:50%;border-top-color:var(--accent);animation:_spin_1j51z_864 1s ease-in-out infinite}@keyframes _spin_1j51z_864{to{transform:rotate(360deg)}}._videoIframe_1j51z_394{width:100%;height:100%;border:none;position:absolute;top:0;left:0;object-fit:cover}._videoContainer_1j51z_311 video{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;object-fit:contain}._controlsOverlay_1j51z_414{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: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_1j51z_414>*{pointer-events:auto}._controlsOverlay_1j51z_414._hidden_1j51z_443{opacity:0;pointer-events:none;cursor:none}._centerPlayPause_1j51z_449{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_1j51z_449:hover{background:var(--accent);transform:translate(-50%,-50%) scale(1.1);border-color:var(--accent);box-shadow:0 0 40px var(--accent-glow)}._bottomControls_1j51z_480{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_1j51z_497{width:100%;padding:10px 0;cursor:pointer;position:relative;touch-action:none;display:flex;align-items:center}._progressBar_1j51z_497{width:100%;height:4px;background-color:#ffffff26;border-radius:4px;position:relative;transition:height .2s,background-color .2s;overflow:visible}._progressBarContainer_1j51z_497:hover ._progressBar_1j51z_497,._progressBarContainer_1j51z_497._scrubbing_1j51z_520 ._progressBar_1j51z_497{height:6px;background-color:#ffffff40}._watchedBar_1j51z_525,._bufferedBar_1j51z_526{position:absolute;top:0;left:0;height:100%;border-radius:4px}._watchedBar_1j51z_525{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_1j51z_526{background-color:#ffffff4d;z-index:1}._thumb_1j51z_548{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_1j51z_497:hover ._thumb_1j51z_548,._progressBarContainer_1j51z_497._scrubbing_1j51z_520 ._thumb_1j51z_548{transform:translate(-50%,-50%) scale(1)}._timeBubble_1j51z_569{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_1j51z_497:hover ._timeBubble_1j51z_569{opacity:1}._skipSegment_1j51z_591{position:absolute;top:0;height:100%;z-index:10;opacity:.5;transition:opacity .2s;border-radius:4px}._skipSegment_1j51z_591:hover{opacity:.8}._skipSegment_1j51z_591._op_1j51z_605{background-color:var(--success)}._skipSegment_1j51z_591._ed_1j51z_609{background-color:var(--accent-blue)}._skipSegment_1j51z_591._recap_1j51z_613{background-color:var(--warning)}._bottomControlsRow_1j51z_617{display:flex;justify-content:space-between;align-items:center;width:100%;margin-top:4px}._controlBtn_1j51z_625{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_1j51z_625:hover{background:#ffffff1a;color:#fff;transform:translateY(-2px)}._controlBtn_1j51z_625:active{transform:translateY(0)}._timeDisplay_1j51z_649{font-size:.9rem;font-weight:500;color:#ffffffe6;font-variant-numeric:tabular-nums;margin-left:.5rem;opacity:.9}._leftControls_1j51z_658,._rightControls_1j51z_659,._middleControls_1j51z_660{display:flex;align-items:center;gap:1.5rem}._skipControls_1j51z_666{display:flex;align-items:center;gap:.25rem}._skipBtn_1j51z_672{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_1j51z_672:hover{opacity:1;transform:scale(1.1);color:var(--accent)}._skipBtn_1j51z_672:active{transform:scale(.9)}._volumeContainer_1j51z_696{display:flex;align-items:center;position:relative;padding-right:10px}._volumeSlider_1j51z_703{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_1j51z_696:hover ._volumeSlider_1j51z_703,._volumeSlider_1j51z_703:focus{width:80px;opacity:1;transform:scaleX(1)}._volumeSlider_1j51z_703::-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_1j51z_703::-moz-range-track{width:100%;height:4px;background:#ffffff40;border-radius:4px;border:none}._volumeSlider_1j51z_703::-moz-range-progress{height:4px;background:var(--accent);border-radius:4px}._volumeSlider_1j51z_703::-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_1j51z_703::-webkit-slider-thumb:hover{transform:scale(1.2);box-shadow:0 0 15px var(--accent-glow)}._volumeSlider_1j51z_703::-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_1j51z_781{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:100;box-shadow:0 10px 40px #00000080;animation:_slideUp_1j51z_1 .2s cubic-bezier(.16,1,.3,1);transform-origin:bottom right}@keyframes _slideUp_1j51z_1{0%{opacity:0;transform:translateY(10px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}._settingsMenu_1j51z_781 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_1j51z_820,._ccOptionsContainer_1j51z_821{display:flex;flex-direction:column;gap:.25rem;max-height:300px;overflow-y:auto}._qualityItemInMenu_1j51z_829,._ccItem_1j51z_830{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_1j51z_829:hover,._ccItem_1j51z_830:hover{background:#ffffff1a;color:#fff}._qualityItemInMenu_1j51z_829._active_1j51z_851,._ccItem_1j51z_830._active_1j51z_851{background:var(--accent);color:#fff;font-weight:600}._sourceLoader_1j51z_858{padding:2rem;display:flex;justify-content:center}._spinner_1j51z_864{width:40px;height:40px;border:4px solid rgba(255,255,255,.1);border-left-color:var(--accent);border-radius:50%;animation:_spin_1j51z_864 1s linear infinite}@media(max-width:768px){._bottomControls_1j51z_480{padding:.75rem;bottom:8px;left:8px;right:8px;border-radius:12px}._leftControls_1j51z_658,._rightControls_1j51z_659{gap:.5rem}._controlBtn_1j51z_625{padding:8px;font-size:1.1rem}._timeDisplay_1j51z_649{font-size:.75rem;margin-left:.25rem}._centerPlayPause_1j51z_449{width:64px;height:64px;font-size:2rem}._titleContainer_1j51z_9 h1{font-size:1.25rem}._volumeSlider_1j51z_703,._volumeContainer_1j51z_696{display:none}._skipBubble_1j51z_915{width:80px;height:80px}._skipIcon_1j51z_919{font-size:1.8rem}._skipText_1j51z_922{font-size:.8rem}._episodeActions_1j51z_199{margin-top:.25rem}._controls_1j51z_1{gap:.65rem}._watchBtn_1j51z_934,._watchlistBtn_1j51z_45,._queueBtn_1j51z_83,._markWatchedBtn_1j51z_153,._completeSeriesBtn_1j51z_178,._nativeToggleBtn_1j51z_119,._modeToggleBtn_1j51z_101{flex:1 1 calc(50% - .35rem);min-width:0}._watchBtn_1j51z_934{flex-basis:100%}._episodeNavBtn_1j51z_217{flex:1 1 calc(50% - .4rem);min-width:0}._episodePickerBtn_1j51z_261{display:inline-flex;flex-basis:100%}._desktopEpisodeActions_1j51z_206{display:none}._mobileEpisodeActions_1j51z_213{display:flex}._providerAndEpisodeRow_1j51z_192{flex-direction:column}}@media(min-width:769px){._mobileEpisodeActions_1j51z_213{display:none}}@media(max-width:900px)and (orientation:landscape){._bottomControls_1j51z_480{bottom:8px;left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));padding:.5rem 1rem}._centerPlayPause_1j51z_449{width:54px;height:54px;font-size:1.5rem}._skipIndicatorContainer_1j51z_992._leftSkip_1j51z_992{left:max(0px,env(safe-area-inset-left))}._skipIndicatorContainer_1j51z_992._rightSkip_1j51z_995{right:max(0px,env(safe-area-inset-right))}}._sourceSelectionContainer_1j51z_1000{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_1j51z_1 .6s var(--ease-smooth)}._providerSelectContainer_1j51z_1015{display:flex;flex-direction:column;gap:.75rem;width:100%}._providerSelect_1j51z_1015,._sourceSelect_1j51z_1000{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_1j51z_1015:hover,._sourceSelect_1j51z_1000:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._providerSelect_1j51z_1015:focus,._sourceSelect_1j51z_1000:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-glow)}._providerSelect_1j51z_1015 option,._sourceSelect_1j51z_1000 option{background:var(--bg-tertiary);color:var(--text-primary)}._sourceSelectionContainer_1j51z_1000 h4,._providerSelectContainer_1j51z_1015 h4{margin:0;color:var(--text-tertiary);font-weight:700;text-transform:uppercase;font-size:.75rem;letter-spacing:.1em}._sourceButtons_1j51z_1071{display:flex;flex-wrap:wrap;gap:.75rem}._sourceButton_1j51z_1071{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_1j51z_1071:hover{background:#ffffff1a;border-color:var(--text-primary);color:var(--text-primary);transform:translateY(-2px)}._sourceButton_1j51z_1071._active_1j51z_851{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 8px 20px var(--accent-glow)}._detailsBox_1j51z_1103{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_1j51z_1116{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_1j51z_1116:hover{background:#ffffff1a;color:var(--text-primary);border-color:var(--text-primary);transform:translateY(-2px)}._detailsGridContainer_1j51z_1140{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_1j51z_1 .6s var(--ease-smooth)}._detailItem_1j51z_1152{display:flex;flex-direction:column;gap:.5rem}._detailItem_1j51z_1152 strong{color:var(--text-tertiary);font-weight:700;font-size:.7rem;text-transform:uppercase;letter-spacing:.1em}._detailItem_1j51z_1152 span{color:var(--text-primary);font-size:1rem;font-weight:500}._animeStatus_1j51z_1172{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_1j51z_1185{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.25rem}._genreTag_1j51z_1192{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_1j51z_1192:hover{background:#ffffff1a;color:var(--text-primary);border-color:var(--text-secondary);transform:translateY(-1px)}._loadingDetails_1j51z_1210{color:var(--text-muted);font-style:italic;text-align:center;padding:2rem}._descriptionSection_1j51z_1217{margin-top:2.5rem;padding:2.5rem;background:#ffffff05;border-radius:var(--radius-xl);border:1px solid var(--glass-border)}._descriptionSection_1j51z_1217 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_1j51z_1217 h3:before{content:"";width:4px;height:20px;background:var(--accent);border-radius:var(--radius-full);box-shadow:0 0 10px var(--accent-glow)}._description_1j51z_1217{line-height:1.8;color:var(--text-secondary);font-size:1.05rem;margin:0}._epJumpControls_1j51z_1253{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_1j51z_1264{display:flex;flex-wrap:wrap;gap:.5rem}._metaTags_1j51z_1270{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}._epRangeBtn_1j51z_1277{background:transparent;border:1px solid var(--border-primary);color:var(--text-secondary);padding:.3rem .6rem;border-radius:4px;cursor:pointer;font-size:.8rem}._epRangeBtn_1j51z_1277:hover{border-color:var(--accent);color:var(--accent)}._epJumpInputGroup_1j51z_1292{display:flex;gap:.5rem}._epJumpInputGroup_1j51z_1292 input{background:#0000004d;border:1px solid var(--border-primary);color:#fff;padding:.4rem .8rem;border-radius:4px;flex:1}._epJumpInputGroup_1j51z_1292 input:focus{outline:none;border-color:var(--accent)}._epJumpInputGroup_1j51z_1292 button{background:var(--accent);color:#fff;border:none;padding:.4rem 1rem;border-radius:4px;cursor:pointer}._epJumpInputGroup_1j51z_1292 button:hover{background:var(--accent-dark)}._videoContainer_1j51z_311._fullscreenActive_1j51z_1324{cursor:none;border-radius:0}._skipIndicatorContainer_1j51z_992{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_1j51z_992{left:0}._rightSkip_1j51z_995{right:0}._skipBubble_1j51z_915{background:#fff3;width:120px;height:120px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;animation:_skipRipple_1j51z_1 .6s ease-out forwards}._skipIcon_1j51z_919{font-size:2.5rem;color:#fff;margin-bottom:.5rem}._skipText_1j51z_922{color:#fff;font-weight:700;font-size:1rem}@keyframes _skipRipple_1j51z_1{0%{transform:scale(.5);opacity:0}50%{transform:scale(1.1);opacity:1}to{transform:scale(1.3);opacity:0}}._errorOverlay_1j51z_1391{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}._errorOverlay_1j51z_1391 p{margin:0;font-size:1.2rem;font-weight:500}._errorSubtext_1j51z_1415{color:var(--text-tertiary)!important;font-size:.9rem!important}._retryButton_1j51z_1420{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_1j51z_1420:hover{background:var(--accent-light);transform:translateY(-2px)}._playerPageLayout_1v9kl_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_1v9kl_1 .8s var(--ease-smooth)}._episodeSidebar_1v9kl_15{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--radius-xl);height:calc(100vh - var(--header-height) - 4rem);position:sticky;top:calc(var(--header-height) + 2rem);overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--glass-shadow);animation:_slideUpIn_1v9kl_1 .8s var(--ease-smooth)}._playerMain_1v9kl_31{min-width:0;display:flex;flex-direction:column;gap:2.5rem;animation:_slideUpIn_1v9kl_1 .8s .1s var(--ease-smooth) both}._videoPlayerWrapper_1v9kl_39{width:100%;padding-top:56.25%;background-color:#000;border-radius:var(--radius-xl);overflow:hidden;position:relative;box-shadow:0 20px 50px #00000080;border:1px solid var(--glass-border)}._playerInfoHeader_1v9kl_50{display:flex;gap:2.5rem;align-items:flex-start}._playerAnimeCard_1v9kl_56{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_1v9kl_68{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_1v9kl_56 img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s cubic-bezier(.2,.8,.2,1)}._playerAnimeCard_1v9kl_56:hover img{transform:scale(1.1)}._videoTitleSection_1v9kl_92{flex:1;display:flex;flex-direction:column;justify-content:flex-start;gap:1.5rem}._videoTitleSection_1v9kl_92 h1{margin:0;font-size:2.5rem;line-height:1.1;font-weight:800;color:var(--text-primary);letter-spacing:-.02em}._videoDescription_1v9kl_109{color:var(--text-secondary);line-height:1.7;font-size:1.05rem}@keyframes _fadeIn_1v9kl_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUpIn_1v9kl_1{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media(max-width:1280px){._playerPageLayout_1v9kl_1{grid-template-columns:280px 1fr;padding:1.5rem;gap:1.5rem}}@media(max-width:1024px){._playerPageLayout_1v9kl_1{display:flex;flex-direction:column;gap:2rem}._episodeSidebar_1v9kl_15{width:100%;height:auto;max-height:500px;position:static;order:2;overflow-y:auto;-webkit-overflow-scrolling:touch}._playerMain_1v9kl_31{order:1;width:100%}._playerInfoHeader_1v9kl_50{padding:0}}@media(max-width:768px){._playerPageLayout_1v9kl_1{padding:1rem;gap:1.5rem}._episodeSidebar_1v9kl_15{display:none}._playerMain_1v9kl_31{gap:1.5rem}._videoPlayerWrapper_1v9kl_39{border-radius:var(--radius-lg)}._playerInfoContainer_1v9kl_68{border-radius:var(--radius-xl);padding:1.5rem}._playerInfoHeader_1v9kl_50{flex-direction:row;align-items:flex-start;text-align:left;gap:1.5rem}._videoTitleSection_1v9kl_92 h1{font-size:1.75rem}._playerAnimeCard_1v9kl_56{width:100px}._episodeSidebar_1v9kl_15{border-radius:var(--radius-lg)}}@media(max-width:480px){._playerInfoHeader_1v9kl_50{flex-direction:column;align-items:center;text-align:center}._playerAnimeCard_1v9kl_56{width:120px}}@media(max-width:900px)and (orientation:landscape){._playerPageLayout_1v9kl_1{padding:0;gap:0}._videoPlayerWrapper_1v9kl_39{border-radius:0;height:100vh;padding-top:0}._playerInfoContainer_1v9kl_68{padding:1.5rem}}body.low-end ._playerPageLayout_1v9kl_1,body.low-end ._episodeSidebar_1v9kl_15,body.low-end ._playerInfoContainer_1v9kl_68{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_1v9kl_39{box-shadow:none!important;border-color:var(--border-primary)!important}body.low-end ._episodeSidebar_1v9kl_15{background:#0a0a0c!important}._theaterMode_1v9kl_260{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:#060608f0!important;backdrop-filter:blur(12px)!important;-webkit-backdrop-filter:blur(12px)!important;animation:_fadeIn_1v9kl_1 .4s var(--ease-smooth)!important;overflow:hidden!important;z-index:9999!important}._theaterMode_1v9kl_260 ._playerMain_1v9kl_31{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_1v9kl_1 .4s cubic-bezier(.25,1,.5,1)!important}._theaterMode_1v9kl_260 ._videoPlayerWrapper_1v9kl_39{width:100%!important;height:100%!important;padding-top:0!important;border-radius:var(--radius-2xl)!important;border:1px solid rgba(255,255,255,.08)!important;box-shadow:0 30px 60px #000c!important;overflow:hidden!important;position:relative!important}@keyframes _scaleUpIn_1v9kl_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_1v9kl_260{padding:1rem!important}._theaterMode_1v9kl_260 ._playerMain_1v9kl_31{width:100%!important;max-width:none!important}}._controlsOverlay_5mbjm_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_5mbjm_1>*{pointer-events:auto}._controlsOverlay_5mbjm_1._hidden_5mbjm_21{opacity:0;pointer-events:none;cursor:none}._controlsOverlay_5mbjm_1._hidden_5mbjm_21 ._topControls_5mbjm_27{transform:translateY(-20px)}._controlsOverlay_5mbjm_1._hidden_5mbjm_21 ._bottomControls_5mbjm_31{transform:translateY(20px)}._controlsOverlay_5mbjm_1._hidden_5mbjm_21 ._centerControls_5mbjm_35{transform:translate(-50%,-50%) scale(.9)}._topControls_5mbjm_27{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:1.5rem;background:linear-gradient(to bottom,rgba(0,0,0,.85) 0%,rgba(0,0,0,.45) 60%,transparent 100%);padding:32px 40px;transition:transform .4s cubic-bezier(.2,.8,.2,1);z-index:10;pointer-events:auto}._backBtn_5mbjm_59{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_5mbjm_59:hover{background:#0f0f1199;color:#fff;transform:scale(1.1)}._videoTitleInfo_5mbjm_93{display:flex;flex-direction:column;gap:.25rem}._animeTitle_5mbjm_99{font-size:1.4rem;font-weight:800;color:#fff;letter-spacing:-.01em;text-shadow:0 2px 4px rgba(0,0,0,.5)}._episodeNumber_5mbjm_107{font-size:.95rem;font-weight:600;color:var(--accent-light);letter-spacing:.02em;text-shadow:0 1px 2px rgba(0,0,0,.5)}._centerControls_5mbjm_35{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(1);display:flex;align-items:center;gap:3rem;z-index:10;pointer-events:auto;transition:transform .4s cubic-bezier(.2,.8,.2,1)}._centerSkipBtn_5mbjm_129{background:transparent;border:1px solid rgba(255,255,255,.15);border-radius:50%;color:#ffffffd9;width:56px;height:56px;font-size:1.8rem;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .3s cubic-bezier(.2,.8,.2,1)}._centerSkipBtn_5mbjm_129:hover{background:#0f0f11b3;color:#fff;border-color:#ffffff4d;transform:scale(1.1)}._centerPlayPause_5mbjm_151{display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid rgba(255,255,255,.2);border-radius:50%;color:#fff;width:76px;height:76px;font-size:2.2rem;cursor:pointer;transition:all .3s cubic-bezier(.2,.8,.2,1)}._centerPlayPause_5mbjm_151:hover{background:#0f0f11bf;border-color:#fff6;transform:scale(1.1)}._playIconOffset_5mbjm_172{transform:translate(3px)}._bottomControls_5mbjm_31{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 32px 24px;transition:transform .4s cubic-bezier(.2,.8,.2,1)}._progressBarContainer_5mbjm_195{width:100%;padding:10px 0 6px;cursor:pointer;position:relative;touch-action:none;display:flex;align-items:center}._progressBar_5mbjm_195{width:100%;height:4px;background-color:#ffffff1a;border-radius:4px;position:relative;transition:height .2s}._progressBarContainer_5mbjm_195:hover ._progressBar_5mbjm_195,._progressBarContainer_5mbjm_195._scrubbing_5mbjm_215 ._progressBar_5mbjm_195{height:6px}._watchedBar_5mbjm_219,._bufferedBar_5mbjm_220{position:absolute;top:0;left:0;height:100%;border-radius:4px}._watchedBar_5mbjm_219{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_5mbjm_220{background-color:#fff3;z-index:11}._thumb_5mbjm_240{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_5mbjm_195:hover ._thumb_5mbjm_240,._progressBarContainer_5mbjm_195._scrubbing_5mbjm_215 ._thumb_5mbjm_240{transform:translate(-50%,-50%) scale(1)}._timeBubble_5mbjm_258{position:absolute;bottom:40px;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)}._progressBarContainer_5mbjm_195:hover ._timeBubble_5mbjm_258{opacity:1}._skipSegment_5mbjm_281{position:absolute;top:0;height:100%;z-index:10;opacity:.4;transition:opacity .2s;border-radius:4px}._skipSegment_5mbjm_281._op_5mbjm_291{background-color:var(--color-success)}._skipSegment_5mbjm_281._ed_5mbjm_294{background-color:var(--accent-blue)}._skipSegment_5mbjm_281._recap_5mbjm_297{background-color:var(--color-warning)}._bottomControlsRow_5mbjm_301{display:flex;justify-content:space-between;align-items:center;width:100%;margin-top:0}._leftControls_5mbjm_309,._rightControls_5mbjm_310{display:flex;align-items:center;gap:1.25rem}._controlBtn_5mbjm_316{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}._controlBtn_5mbjm_316:hover{background:#ffffff1a;color:#fff;transform:translateY(-2px)}._controlBtn_5mbjm_316._active_5mbjm_336{color:var(--accent)}._timeDisplay_5mbjm_340{font-size:.9rem;font-weight:600;color:#fffc;font-variant-numeric:tabular-nums;letter-spacing:.02em}._skipControls_5mbjm_348{display:flex;align-items:center;gap:.5rem}._skipBtn_5mbjm_354{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_5mbjm_354:hover{color:#fff;transform:scale(1.1)}._nextEpisodeBtn_5mbjm_372{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_5mbjm_372:hover{background:#ffffff1a;color:#fff;transform:translateY(-1px);border-color:#fff3}._volumeContainer_5mbjm_395{display:flex;align-items:center;position:relative}._volumeSlider_5mbjm_401{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_5mbjm_395:hover ._volumeSlider_5mbjm_401,._volumeSlider_5mbjm_401:focus{width:80px;opacity:1;transform:scaleX(1)}._volumeSlider_5mbjm_401::-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_5mbjm_401::-moz-range-track{width:100%;height:4px;background:#fff3;border-radius:4px}._volumeSlider_5mbjm_401::-moz-range-progress{height:4px;background:var(--accent);border-radius:4px}._volumeSlider_5mbjm_401::-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_5mbjm_459{padding:0;gap:0}._videoPlayerWrapper_5mbjm_463{border-radius:0;height:100vh;padding-top:0}._playerInfoContainer_5mbjm_468{padding:1.5rem}}body.low-end ._controlsOverlay_5mbjm_1{background:none!important;transition:none!important}body.low-end ._centerPlayPause_5mbjm_151,body.low-end ._bottomControls_5mbjm_31{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;background:#1a1a1c;box-shadow:none!important;transition:none!important}body.low-end ._centerPlayPause_5mbjm_151:hover{background:#000!important}body.low-end ._controlBtn_5mbjm_316._active_5mbjm_336{color:var(--accent)!important}body.low-end ._progressBar_5mbjm_195{height:4px!important;transition:none!important}body.low-end ._watchedBar_5mbjm_219{background:var(--accent)!important;box-shadow:none!important}body.low-end ._thumb_5mbjm_240{transition:none!important;box-shadow:none!important}body.low-end ._controlBtn_5mbjm_316:hover,body.low-end ._nextEpisodeBtn_5mbjm_372:hover{transform:none!important}body.low-end ._timeBubble_5mbjm_258{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:#111!important;transition:none!important}@media(max-width:768px){._topControls_5mbjm_27{padding:12px 16px;gap:.75rem}._backBtn_5mbjm_59{font-size:1.2rem;padding:4px}._animeTitle_5mbjm_99{font-size:1rem;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._episodeNumber_5mbjm_107{font-size:.75rem}._centerControls_5mbjm_35{gap:1.25rem}._centerSkipBtn_5mbjm_129{width:40px;height:40px;font-size:1.2rem}._centerPlayPause_5mbjm_151{width:56px;height:56px;font-size:1.5rem}._bottomControls_5mbjm_31{padding:0 16px 16px}._leftControls_5mbjm_309,._rightControls_5mbjm_310{gap:.4rem}._controlBtn_5mbjm_316{padding:6px;font-size:1rem}._timeDisplay_5mbjm_340{font-size:.75rem;margin-right:2px}._volumeContainer_5mbjm_395{display:flex;flex-direction:column-reverse;align-items:center;position:relative}._volumeSlider_5mbjm_401{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:100;pointer-events:none}._volumeContainer_5mbjm_395._visible_5mbjm_607 ._volumeSlider_5mbjm_401,._volumeContainer_5mbjm_395:hover ._volumeSlider_5mbjm_401,._volumeContainer_5mbjm_395:active ._volumeSlider_5mbjm_401,._volumeSlider_5mbjm_401:focus{width:100px;opacity:1;transform:translate(-50%) rotate(-90deg) scaleX(1);pointer-events:auto}._nextEpisodeBtn_5mbjm_372{padding:.35rem .6rem;font-size:.75rem}}@media(max-width:480px){._leftControls_5mbjm_309,._rightControls_5mbjm_310{gap:.2rem}._shortcuts_5mbjm_630{gap:.25rem}._controlBtn_5mbjm_316{padding:4px}._timeDisplay_5mbjm_340{display:none}._topControls_5mbjm_27{padding:8px 12px}._centerControls_5mbjm_35{gap:1rem}}._statusArea_1wdj2_1{display:flex;align-items:center;background:var(--bg-secondary);border:1px solid var(--border-primary);padding:.5rem 1rem;border-radius:var(--radius-lg);margin-top:-1.25rem;margin-bottom:0;color:var(--text-secondary);box-shadow:var(--shadow-lg);width:fit-content;max-width:100%;pointer-events:none;-webkit-user-select:none;user-select:none;flex-wrap:wrap}._shortcuts_1wdj2_19{display:flex;gap:1.5rem;align-items:center;flex-wrap:wrap}._shortcutGroup_1wdj2_26{display:flex;gap:1rem;align-items:center;flex-wrap:nowrap}._shortcut_1wdj2_19{display:flex;align-items:center;gap:.3rem;white-space:nowrap}._key_1wdj2_40{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:.65rem;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_1wdj2_40+._key_1wdj2_40{margin-left:-.15rem}._label_1wdj2_61{color:var(--text-tertiary);font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}@media(max-width:768px){._statusArea_1wdj2_1{display:none}}._episodeListContainer_jtzlz_1{display:flex;flex-direction:column;height:100%;min-height:0;background:transparent}._drawerContainer_jtzlz_9{height:auto;min-height:100%}._episodeListHeader_jtzlz_14{background:transparent;padding:1.5rem;border-bottom:1px solid var(--glass-border);z-index:10}._drawerHeader_jtzlz_21{position:sticky;top:0;background:#0c0c0ffa;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}._episodeListTitle_jtzlz_29{margin:0 0 1.25rem;font-size:1.25rem;font-weight:800;color:var(--text-primary);display:flex;align-items:center;gap:.75rem;letter-spacing:-.01em;text-transform:uppercase;font-size:.85rem;color:var(--text-tertiary);letter-spacing:.1em}._rangeSelector_jtzlz_44{display:flex;flex-wrap:wrap;gap:.5rem}._rangeButton_jtzlz_50{background:#ffffff0d;border:1px solid var(--glass-border);color:var(--text-secondary);padding:.5rem .75rem;border-radius:var(--radius-md);font-size:.8rem;font-weight:600;transition:all var(--transition-fast);cursor:pointer}._rangeButton_jtzlz_50:hover{border-color:var(--text-secondary);color:var(--text-primary);background:#ffffff1a}._rangeButton_jtzlz_50._active_jtzlz_68{background:var(--accent);color:#fff;border-color:var(--accent)}._episodeList_jtzlz_1{flex:1;display:flex;flex-direction:column;padding:1rem;overflow-y:auto;-webkit-overflow-scrolling:touch;min-height:0;touch-action:pan-y}._drawerList_jtzlz_85{overflow:visible;-webkit-overflow-scrolling:auto;touch-action:pan-y}._episodeList_jtzlz_1::-webkit-scrollbar{width:5px}._episodeList_jtzlz_1::-webkit-scrollbar-track{background:transparent}._episodeList_jtzlz_1::-webkit-scrollbar-thumb{background:var(--glass-border);border-radius:var(--radius-full)}._episodeList_jtzlz_1::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}._episodeItem_jtzlz_108{padding:1rem 1.25rem;margin-bottom:.5rem;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_jtzlz_108:hover{background:#ffffff0d;color:var(--text-primary);transform:translate(6px);border-color:var(--glass-border)}._episodeItem_jtzlz_108._watched_jtzlz_130{color:var(--text-muted);opacity:.6}._episodeItem_jtzlz_108._active_jtzlz_68{background:#8b5cf61a;color:var(--accent-light);border:1px solid rgba(139,92,246,.3)}._episodeItem_jtzlz_108._active_jtzlz_68:hover{transform:none;background:#8b5cf626}._episodeItem_jtzlz_108 span{display:flex;align-items:center;gap:.75rem}._shell_17672_1{position:fixed;inset:0;z-index:140;display:flex;align-items:flex-end;justify-content:center}._overlay_17672_10{position:absolute;inset:0;border:0;padding:0;background:#0000008f;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}._drawer_17672_20{position:relative;z-index:1;width:min(100vw,100%);max-height:86vh;background:#0c0c0ffa;border-radius:24px 24px 0 0;border:1px solid var(--glass-border);border-bottom:none;display:flex;flex-direction:column;overflow:hidden}._handle_17672_34{width:52px;height:5px;border-radius:999px;background:#ffffff2e;margin:.7rem auto 0}._header_17672_42{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1rem 1rem .9rem;border-bottom:1px solid var(--glass-border)}._headerCopy_17672_51{display:flex;flex-direction:column;gap:.25rem}._kicker_17672_57{color:var(--text-tertiary);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.14em}._title_17672_65{margin:0;font-size:1.1rem;font-weight:800;color:var(--text-primary)}._closeBtn_17672_72{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}._body_17672_85{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y}._container_fgu26_1{display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}._titleContainer_fgu26_8{display:flex;flex-direction:column;gap:1rem}._scheduleInfo_fgu26_14{display:flex;gap:1rem;font-size:.95rem;color:var(--text-tertiary);align-items:center}._status_fgu26_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_fgu26_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_fgu26_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_fgu26_44:hover{background:#ffffff1a;border-color:var(--text-secondary);transform:translateY(-2px)}._watchlistBtn_fgu26_44._inList_fgu26_65{background:#10b9811a;border-color:#10b98166;color:var(--color-success)}._watchlistBtn_fgu26_44._inList_fgu26_65:hover{background:#10b98126;border-color:var(--color-success)}._sourceSelectionContainer_fgu26_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_fgu26_89{display:flex;flex-direction:column;gap:1rem;width:100%}._providerSelect_fgu26_89,._sourceSelect_fgu26_76{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_fgu26_89:hover,._sourceSelect_fgu26_76:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._providerSelect_fgu26_89:focus,._sourceSelect_fgu26_76:focus{outline:none;border-color:var(--accent)}._providerSelect_fgu26_89 option,._sourceSelect_fgu26_76 option{background:var(--bg-tertiary);color:var(--text-primary)}._sourceSelectionContainer_fgu26_76 h4,._providerSelectContainer_fgu26_89 h4{margin:0;color:var(--text-tertiary);font-weight:700;text-transform:uppercase;font-size:.75rem;letter-spacing:.1em}._sourceButtons_fgu26_144{display:flex;flex-wrap:wrap;gap:.75rem}._sourceButton_fgu26_144{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_fgu26_144:hover{background:#ffffff1a;border-color:var(--text-primary);color:var(--text-primary);transform:translateY(-2px)}._sourceButton_fgu26_144._active_fgu26_169{background:var(--accent);border-color:var(--accent);color:#fff}._detailsBox_fgu26_175{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_fgu26_187{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_fgu26_187:hover{background:#ffffff1a;color:var(--text-primary);border-color:var(--text-primary);transform:translateY(-2px)}._detailsToggle_fgu26_187 h3{margin:0;font-size:1.25rem;font-weight:600}._detailsGridContainer_fgu26_217{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_fgu26_1 .6s var(--ease-smooth)}@keyframes _fadeIn_fgu26_1{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}._detailItem_fgu26_241{display:flex;flex-direction:column;gap:.5rem}._detailItem_fgu26_241 strong{color:var(--text-tertiary);font-weight:700;font-size:.7rem;text-transform:uppercase;letter-spacing:.1em}._detailItem_fgu26_241 span{color:var(--text-primary);font-size:1rem;font-weight:500}._animeStatus_fgu26_261{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_fgu26_274{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.25rem}._genreTag_fgu26_281{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_fgu26_281:hover{background:#ffffff1a;color:var(--text-primary);border-color:var(--text-secondary);transform:translateY(-1px)}._loadingDetails_fgu26_299{color:var(--text-muted);font-style:italic;text-align:center;padding:2rem}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PlayerSettings-BaCVQyw6.js","assets/vendor-Bc4EraM_.js","assets/index-Ciivz6fh.js","assets/index-BzX_xmnf.css","assets/PlayerSettings-l6aLKrHh.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{N as tt,F as pt,O as ct,P as lt,H as gt,Q as _t,R as yt,S as bt,T as St,U as wt,W as kt,X as Ct,_ as ht,Y as Tt,Z as Et,$ as Nt,a0 as Bt,a1 as Rt,a2 as ye,z as ze,j as Mt,a3 as It,k as zt,l as Pt,m as jt,e as $t,a4 as Lt,a5 as xt,a6 as dt,f as At,a7 as Ze,a8 as ut,b as Dt,c as Ft,a as Wt,a9 as Ut}from"./index-Ciivz6fh.js";import{u as e,g as Ce,y as B,P as qt,z as Ot,d as z,T as Pe,$ as Qt,b as at,A as x,q as M,t as Vt,a as it,c as rt,m as Kt,f as Ht,S as st}from"./vendor-Bc4EraM_.js";import{B as et}from"./Button-lkEUHIDS.js";import{u as Jt,g as mt}from"./useIsMobile-BviODivc.js";import{Q as Gt}from"./QueueRail-Cxn5U8kE.js";import{S as Xt,A as Yt}from"./SynopsisText-C3AK-aRc.js";const Zt="_controls_1j51z_1",en="_titleContainer_1j51z_9",tn="_scheduleInfo_1j51z_15",nn="_status_1j51z_23",on="_nextEpisode_1j51z_35",rn="_watchlistBtn_1j51z_45",sn="_inList_1j51z_72",an="_queueBtn_1j51z_83",cn="_queueActive_1j51z_95",ln="_modeToggleBtn_1j51z_101",dn="_modeToggleActive_1j51z_108",un="_nativeToggleBtn_1j51z_119",mn="_nativeToggleActive_1j51z_132",pn="_markWatchedBtn_1j51z_153",hn="_markWatchedDone_1j51z_167",fn="_completeSeriesBtn_1j51z_178",vn="_providerAndEpisodeRow_1j51z_192",gn="_episodeActions_1j51z_199",_n="_desktopEpisodeActions_1j51z_206",yn="_mobileEpisodeActions_1j51z_213",bn="_episodeNavBtn_1j51z_217",Sn="_primary_1j51z_247",wn="_secondary_1j51z_257",kn="_episodePickerBtn_1j51z_261",Cn="_queueCountdown_1j51z_265",Tn="_speedBoostBadge_1j51z_280",En="_videoContainer_1j51z_311",Nn="_loadingOverlay_1j51z_323",Bn="_loadingDots_1j51z_336",Rn="_dot_1j51z_341",Mn="_bounce_1j51z_1",In="_bufferingOverlay_1j51z_370",zn="_bufferingSpinner_1j51z_379",Pn="_spin_1j51z_864",jn="_videoIframe_1j51z_394",$n="_controlsOverlay_1j51z_414",Ln="_hidden_1j51z_443",xn="_centerPlayPause_1j51z_449",An="_bottomControls_1j51z_480",Dn="_progressBarContainer_1j51z_497",Fn="_progressBar_1j51z_497",Wn="_scrubbing_1j51z_520",Un="_watchedBar_1j51z_525",qn="_bufferedBar_1j51z_526",On="_thumb_1j51z_548",Qn="_timeBubble_1j51z_569",Vn="_skipSegment_1j51z_591",Kn="_op_1j51z_605",Hn="_ed_1j51z_609",Jn="_recap_1j51z_613",Gn="_bottomControlsRow_1j51z_617",Xn="_controlBtn_1j51z_625",Yn="_timeDisplay_1j51z_649",Zn="_leftControls_1j51z_658",eo="_rightControls_1j51z_659",to="_middleControls_1j51z_660",no="_skipControls_1j51z_666",oo="_skipBtn_1j51z_672",ro="_volumeContainer_1j51z_696",so="_volumeSlider_1j51z_703",io="_settingsMenu_1j51z_781",ao="_slideUp_1j51z_1",co="_qualityListInMenu_1j51z_820",lo="_ccOptionsContainer_1j51z_821",uo="_qualityItemInMenu_1j51z_829",mo="_ccItem_1j51z_830",po="_active_1j51z_851",ho="_sourceLoader_1j51z_858",fo="_spinner_1j51z_864",vo="_skipBubble_1j51z_915",go="_skipIcon_1j51z_919",_o="_skipText_1j51z_922",yo="_watchBtn_1j51z_934",bo="_skipIndicatorContainer_1j51z_992",So="_leftSkip_1j51z_992",wo="_rightSkip_1j51z_995",ko="_sourceSelectionContainer_1j51z_1000",Co="_slideUpIn_1j51z_1",To="_providerSelectContainer_1j51z_1015",Eo="_providerSelect_1j51z_1015",No="_sourceSelect_1j51z_1000",Bo="_sourceButtons_1j51z_1071",Ro="_sourceButton_1j51z_1071",Mo="_detailsBox_1j51z_1103",Io="_detailsToggleBtn_1j51z_1116",zo="_detailsGridContainer_1j51z_1140",Po="_fadeIn_1j51z_1",jo="_detailItem_1j51z_1152",$o="_animeStatus_1j51z_1172",Lo="_genresList_1j51z_1185",xo="_genreTag_1j51z_1192",Ao="_loadingDetails_1j51z_1210",Do="_descriptionSection_1j51z_1217",Fo="_description_1j51z_1217",Wo="_epJumpControls_1j51z_1253",Uo="_epRangeButtons_1j51z_1264",qo="_metaTags_1j51z_1270",Oo="_epRangeBtn_1j51z_1277",Qo="_epJumpInputGroup_1j51z_1292",Vo="_fullscreenActive_1j51z_1324",Ko="_skipRipple_1j51z_1",Ho="_errorOverlay_1j51z_1391",Jo="_errorSubtext_1j51z_1415",Go="_retryButton_1j51z_1420",p={controls:Zt,titleContainer:en,scheduleInfo:tn,status:nn,nextEpisode:on,watchlistBtn:rn,inList:sn,queueBtn:an,queueActive:cn,modeToggleBtn:ln,modeToggleActive:dn,nativeToggleBtn:un,nativeToggleActive:mn,markWatchedBtn:pn,markWatchedDone:hn,completeSeriesBtn:fn,providerAndEpisodeRow:vn,episodeActions:gn,desktopEpisodeActions:_n,mobileEpisodeActions:yn,episodeNavBtn:bn,primary:Sn,secondary:wn,episodePickerBtn:kn,queueCountdown:Cn,speedBoostBadge:Tn,videoContainer:En,loadingOverlay:Nn,loadingDots:Bn,dot:Rn,bounce:Mn,bufferingOverlay:In,bufferingSpinner:zn,spin:Pn,videoIframe:jn,controlsOverlay:$n,hidden:Ln,centerPlayPause:xn,bottomControls:An,progressBarContainer:Dn,progressBar:Fn,scrubbing:Wn,watchedBar:Un,bufferedBar:qn,thumb:On,timeBubble:Qn,skipSegment:Vn,op:Kn,ed:Hn,recap:Jn,bottomControlsRow:Gn,controlBtn:Xn,timeDisplay:Yn,leftControls:Zn,rightControls:eo,middleControls:to,skipControls:no,skipBtn:oo,volumeContainer:ro,volumeSlider:so,settingsMenu:io,slideUp:ao,qualityListInMenu:co,ccOptionsContainer:lo,qualityItemInMenu:uo,ccItem:mo,active:po,sourceLoader:ho,spinner:fo,skipBubble:vo,skipIcon:go,skipText:_o,watchBtn:yo,skipIndicatorContainer:bo,leftSkip:So,rightSkip:wo,sourceSelectionContainer:ko,slideUpIn:Co,providerSelectContainer:To,providerSelect:Eo,sourceSelect:No,sourceButtons:Bo,sourceButton:Ro,detailsBox:Mo,detailsToggleBtn:Io,detailsGridContainer:zo,fadeIn:Po,detailItem:jo,animeStatus:$o,genresList:Lo,genreTag:xo,loadingDetails:Ao,descriptionSection:Do,description:Fo,epJumpControls:Wo,epRangeButtons:Uo,metaTags:qo,epRangeBtn:Oo,epJumpInputGroup:Qo,fullscreenActive:Vo,skipRipple:Ko,errorOverlay:Ho,errorSubtext:Jo,retryButton:Go},Xo="_playerPageLayout_1v9kl_1",Yo="_episodeSidebar_1v9kl_15",Zo="_playerMain_1v9kl_31",er="_videoPlayerWrapper_1v9kl_39",tr="_playerInfoHeader_1v9kl_50",nr="_playerAnimeCard_1v9kl_56",or="_playerInfoContainer_1v9kl_68",rr="_videoTitleSection_1v9kl_92",sr="_theaterMode_1v9kl_260",ke={playerPageLayout:Xo,episodeSidebar:Yo,playerMain:Zo,videoPlayerWrapper:er,playerInfoHeader:tr,playerAnimeCard:nr,playerInfoContainer:or,videoTitleSection:rr,theaterMode:sr};function ir({show:o,resumeTime:v,onResume:u,onStartOver:k,onNextEpisode:t,hasNextEpisode:T,isCompleted:N}){return o?N?e("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.6)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999,padding:"1rem",backdropFilter:"blur(3px)"},onClick:k,children:e("div",{style:{backgroundColor:"var(--bg-secondary)",padding:"1.5rem",borderRadius:"var(--radius-lg)",maxWidth:"420px",width:"100%",boxShadow:"var(--shadow-xl)",border:"1px solid var(--border-primary)"},onClick:c=>c.stopPropagation(),children:[e("h3",{style:{margin:"0 0 0.75rem",color:"var(--text-primary)"},children:"Episode Completed!"}),e("p",{style:{color:"var(--text-secondary)",marginBottom:"1.5rem"},children:T?"You finished this episode. Ready for the next one?":"You finished this episode. Want to watch again?"}),e("div",{style:{display:"flex",gap:"0.75rem"},children:[e(et,{variant:"secondary",onClick:k,style:{flex:1},children:T?"Replay":"Start Over"}),T&&e(et,{onClick:t,style:{flex:1},children:"Next Episode"})]})]})}):e("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.6)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999,padding:"1rem",backdropFilter:"blur(3px)"},onClick:k,children:e("div",{style:{backgroundColor:"var(--bg-secondary)",padding:"1.5rem",borderRadius:"var(--radius-lg)",maxWidth:"420px",width:"100%",boxShadow:"var(--shadow-xl)",border:"1px solid var(--border-primary)"},onClick:c=>c.stopPropagation(),children:[e("h3",{style:{margin:"0 0 0.75rem",color:"var(--text-primary)"},children:"Resume Playback?"}),e("p",{style:{color:"var(--text-secondary)",marginBottom:"1.5rem"},children:["You were watching at ",e("strong",{style:{color:"var(--accent)"},children:v}),". Would you like to continue?"]}),e("div",{style:{display:"flex",gap:"0.75rem"},children:[e(et,{variant:"secondary",onClick:k,style:{flex:1},children:"Start Over"}),e(et,{onClick:u,style:{flex:1},children:"Resume"})]})]})}):null}const ar="_controlsOverlay_5mbjm_1",cr="_hidden_5mbjm_21",lr="_topControls_5mbjm_27",dr="_bottomControls_5mbjm_31",ur="_centerControls_5mbjm_35",mr="_backBtn_5mbjm_59",pr="_videoTitleInfo_5mbjm_93",hr="_animeTitle_5mbjm_99",fr="_episodeNumber_5mbjm_107",vr="_centerSkipBtn_5mbjm_129",gr="_centerPlayPause_5mbjm_151",_r="_playIconOffset_5mbjm_172",yr="_progressBarContainer_5mbjm_195",br="_progressBar_5mbjm_195",Sr="_scrubbing_5mbjm_215",wr="_watchedBar_5mbjm_219",kr="_bufferedBar_5mbjm_220",Cr="_thumb_5mbjm_240",Tr="_timeBubble_5mbjm_258",Er="_skipSegment_5mbjm_281",Nr="_op_5mbjm_291",Br="_ed_5mbjm_294",Rr="_recap_5mbjm_297",Mr="_bottomControlsRow_5mbjm_301",Ir="_leftControls_5mbjm_309",zr="_rightControls_5mbjm_310",Pr="_controlBtn_5mbjm_316",jr="_active_5mbjm_336",$r="_timeDisplay_5mbjm_340",Lr="_skipControls_5mbjm_348",xr="_skipBtn_5mbjm_354",Ar="_nextEpisodeBtn_5mbjm_372",Dr="_volumeContainer_5mbjm_395",Fr="_volumeSlider_5mbjm_401",Wr="_playerPageLayout_5mbjm_459",Ur="_videoPlayerWrapper_5mbjm_463",qr="_playerInfoContainer_5mbjm_468",Or="_visible_5mbjm_607",Qr="_shortcuts_5mbjm_630",f={controlsOverlay:ar,hidden:cr,topControls:lr,bottomControls:dr,centerControls:ur,backBtn:mr,videoTitleInfo:pr,animeTitle:hr,episodeNumber:fr,centerSkipBtn:vr,centerPlayPause:gr,playIconOffset:_r,progressBarContainer:yr,progressBar:br,scrubbing:Sr,watchedBar:wr,bufferedBar:kr,thumb:Cr,timeBubble:Tr,skipSegment:Er,op:Nr,ed:Br,recap:Rr,bottomControlsRow:Mr,leftControls:Ir,rightControls:zr,controlBtn:Pr,active:jr,timeDisplay:$r,skipControls:Lr,skipBtn:xr,nextEpisodeBtn:Ar,volumeContainer:Dr,volumeSlider:Fr,playerPageLayout:Wr,videoPlayerWrapper:Ur,playerInfoContainer:qr,visible:Or,shortcuts:Qr};function Vr(o){return tt({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"m6 18 8.5-6L6 6v12zM16 6v12h2V6h-2z"},child:[]}]})(o)}function Kr(o){return tt({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M11.99 5V1l-5 5 5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6h-2c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z"},child:[]},{tag:"path",attr:{d:"M10.89 16h-.85v-3.26l-1.01.31v-.69l1.77-.63h.09V16zM15.17 14.24c0 .32-.03.6-.1.82s-.17.42-.29.57-.28.26-.45.33-.37.1-.59.1-.41-.03-.59-.1-.33-.18-.46-.33-.23-.34-.3-.57-.11-.5-.11-.82v-.74c0-.32.03-.6.1-.82s.17-.42.29-.57.28-.26.45-.33.37-.1.59-.1.41.03.59.1.33.18.46.33.23.34.3.57.11.5.11.82v.74zm-.85-.86c0-.19-.01-.35-.04-.48s-.07-.23-.12-.31-.11-.14-.19-.17-.16-.05-.25-.05-.18.02-.25.05-.14.09-.19.17-.09.18-.12.31-.04.29-.04.48v.97c0 .19.01.35.04.48s.07.24.12.32.11.14.19.17.16.05.25.05.18-.02.25-.05.14-.09.19-.17.09-.19.11-.32.04-.29.04-.48v-.97z"},child:[]}]})(o)}function Hr(o){return tt({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M18 13c0 3.31-2.69 6-6 6s-6-2.69-6-6 2.69-6 6-6v4l5-5-5-5v4c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8h-2z"},child:[]},{tag:"path",attr:{d:"M10.86 15.94v-4.27h-.09L9 12.3v.69l1.01-.31v3.26zM12.25 13.44v.74c0 1.9 1.31 1.82 1.44 1.82.14 0 1.44.09 1.44-1.82v-.74c0-1.9-1.31-1.82-1.44-1.82-.14 0-1.44-.09-1.44 1.82zm2.04-.12v.97c0 .77-.21 1.03-.59 1.03s-.6-.26-.6-1.03v-.97c0-.75.22-1.01.59-1.01.38-.01.6.26.6 1.01z"},child:[]}]})(o)}function Jr(o){return tt({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"m4 18 8.5-6L4 6v12zm9-12v12l8.5-6L13 6z"},child:[]}]})(o)}const Gr=Ot(()=>ht(()=>import("./PlayerSettings-BaCVQyw6.js"),__vite__mapDeps([0,1,2,3,4]))),Xr=({player:o,isAutoplayEnabled:v,onAutoplayChange:u,showNextEpisodeButton:k,onNextEpisode:t,videoSources:T,selectedSource:N,selectedLink:c,onSourceChange:H,loadingVideo:D,skipIntervals:P,animeTitle:J,episodeNumber:V,isTheaterMode:Z,onTheaterModeToggle:l})=>{const{state:s,refs:a,actions:h}=o,{showSettings:O,showVolumeSlider:G}=s,{setShowSettings:Q,setShowVolumeSlider:re}=h,ee=Ce.useRef(null),ue=Ce.useRef(null),y=Ce.useRef(null);B(()=>{const d=b=>{ee.current&&!ee.current.contains(b.target)&&ue.current&&!ue.current.contains(b.target)&&O&&Q(!1),y.current&&!y.current.contains(b.target)&&G&&re(!1)};return(O||G)&&document.addEventListener("mousedown",d),()=>{document.removeEventListener("mousedown",d)}},[O,G,Q,re]);const _=Ce.useRef(null),R=Ce.useRef(null),K=Ce.useRef(null),j=Ce.useRef(null),F=Ce.useRef(0);B(()=>{const d=a.videoRef.current;if(!d)return;const b=()=>{if(!s.isScrubbing){const C=d.currentTime;F.current=C;const U=C/s.duration*100||0;_.current&&(_.current.style.width=`${U}%`),R.current&&(R.current.style.left=`${U}%`),j.current&&(j.current.innerText=`${h.formatTime(C)} / ${h.formatTime(s.duration)}`)}},m=()=>{if(d.buffered.length>0){const U=d.buffered.end(d.buffered.length-1)/s.duration*100||0;K.current&&(K.current.style.width=`${U}%`)}};return b(),m(),d.addEventListener("timeupdate",b),d.addEventListener("progress",m),()=>{d.removeEventListener("timeupdate",b),d.removeEventListener("progress",m)}},[a.videoRef,s.isScrubbing,s.duration,h]);const se=d=>{if(!a.videoRef.current)return;const b=parseFloat(d.target.value);a.videoRef.current.volume=b,a.videoRef.current.muted=b===0,localStorage.setItem("playerVolume",b.toString())},L=d=>{if(!a.videoRef.current||!a.progressBarRef.current||isNaN(s.duration)||s.duration===0)return;const b=a.progressBarRef.current.getBoundingClientRect(),m=Math.min(1,Math.max(0,(d.clientX-b.left)/b.width));a.videoRef.current.currentTime=m*s.duration,h.sendProgressUpdate(!1,!0)},W=d=>{if(!a.progressBarRef.current||!s.duration)return;const b=a.progressBarRef.current.getBoundingClientRect(),C=Math.min(1,Math.max(0,(d.clientX-b.left)/b.width))*s.duration;h.setHoverTime({time:C,position:d.clientX-b.left})},te=d=>{d.preventDefault(),a.videoRef.current&&(h.setIsScrubbing(!0),h.wasPlayingBeforeScrub.current=!a.videoRef.current.paused,a.videoRef.current.pause())},ce=d=>{a.videoRef.current&&(h.setActiveSubtitleTrack(d),Array.from(a.videoRef.current.textTracks).forEach(b=>{b.mode=d!==null&&d!=="off"&&(b.language===d||b.label===d)?"showing":"hidden"}))},me=()=>s.isMuted?e(St,{}):s.volume===0?e(wt,{}):s.volume<.5?e(kt,{}):e(Ct,{});return B(()=>{const d=m=>{if(!s.isScrubbing||!a.videoRef.current||!a.progressBarRef.current||!s.duration)return;const C=a.progressBarRef.current.getBoundingClientRect(),pe=Math.min(1,Math.max(0,(m.clientX-C.left)/C.width))*s.duration;a.videoRef.current.currentTime=pe;const fe=pe/s.duration*100||0;_.current&&(_.current.style.width=`${fe}%`),R.current&&(R.current.style.left=`${fe}%`),j.current&&(j.current.innerText=`${h.formatTime(pe)} / ${h.formatTime(s.duration)}`),h.setHoverTime({time:pe,position:m.clientX-C.left})},b=()=>{s.isScrubbing&&(h.setIsScrubbing(!1),h.setHoverTime({time:0,position:null}),h.wasPlayingBeforeScrub.current&&a.videoRef.current?.play())};return document.addEventListener("mousemove",d),document.addEventListener("mouseup",b),()=>{document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",b)}},[s.isScrubbing,s.duration,a.videoRef,a.progressBarRef,h]),e("div",{className:`${f.controlsOverlay} ${!s.showControls&&!O&&!G&&!s.isScrubbing?f.hidden:""} `,onDoubleClick:d=>d.stopPropagation(),children:[e("div",{className:f.topControls,onClick:d=>d.stopPropagation(),children:[e("button",{className:f.backBtn,onClick:d=>{d.stopPropagation(),window.history.back()},title:"Back","aria-label":"Back",children:e(pt,{})}),e("div",{className:f.videoTitleInfo,children:[e("span",{className:f.animeTitle,children:J}),V&&e("span",{className:f.episodeNumber,children:["Episode ",V]})]})]}),e("div",{className:f.centerControls,onClick:d=>d.stopPropagation(),children:[e("button",{className:f.centerSkipBtn,onClick:()=>h.seek(-10),title:"Skip back 10s","aria-label":"Skip back 10 seconds",children:e(Kr,{})}),e("button",{className:f.centerPlayPause,"data-speed-boost-ignore":"true",onClick:h.togglePlay,"aria-label":s.isPlaying?"Pause":"Play",children:s.isPlaying?e(ct,{}):e(lt,{className:f.playIconOffset})}),e("button",{className:f.centerSkipBtn,onClick:()=>h.seek(10),title:"Skip forward 10s","aria-label":"Skip forward 10 seconds",children:e(Hr,{})})]}),e("div",{className:f.bottomControls,"data-speed-boost-ignore":"true",onClick:d=>d.stopPropagation(),children:[e("div",{className:`${f.progressBarContainer} ${s.isScrubbing?f.scrubbing:""} `,ref:a.progressBarRef,onClick:L,onMouseMove:W,onMouseLeave:()=>h.setHoverTime({time:0,position:null}),children:[s.hoverTime.position!==null&&e("div",{className:f.timeBubble,style:{left:s.hoverTime.position},children:h.formatTime(s.hoverTime.time)}),e("div",{className:f.progressBar,children:[s.duration>0&&o.state.currentSkipInterval&&e("div",{className:`${f.skipSegment} ${f[o.state.currentSkipInterval.skip_type]} `,style:{left:`${o.state.currentSkipInterval.start_time/s.duration*100}% `,width:`${(o.state.currentSkipInterval.end_time-o.state.currentSkipInterval.start_time)/s.duration*100}% `}}),e("div",{className:f.bufferedBar,ref:K}),e("div",{className:f.watchedBar,ref:_}),e("div",{className:f.thumb,ref:R,onMouseDown:te}),P.map(d=>{const b=d.start_time/s.duration*100,m=(d.end_time-d.start_time)/s.duration*100;return e("div",{className:`${f.skipSegment} ${f[d.skip_type]} `,style:{left:`${b}% `,width:`${m}% `},title:d.skip_type.toUpperCase()},d.skip_id)})]})]}),e("div",{className:f.bottomControlsRow,children:[e("div",{className:f.leftControls,children:[e("button",{className:f.controlBtn,onClick:h.togglePlay,children:s.isPlaying?e(ct,{}):e(lt,{})}),e("div",{className:`${f.volumeContainer} ${G?f.visible:""}`,ref:y,children:[e("button",{className:f.controlBtn,onClick:d=>{d.stopPropagation(),window.innerWidth<=768?re(!G):h.toggleMute()},children:me()}),e("input",{type:"range",min:"0",max:"1",step:"0.05",value:s.isMuted?0:s.volume,onChange:se,className:f.volumeSlider,style:{"--volume-percent":`${(s.isMuted?0:s.volume)*100}% `}})]}),e("span",{className:f.timeDisplay,ref:j,children:[h.formatTime(F.current)," / ",h.formatTime(s.duration)]}),s.currentSkipInterval&&!s.isAutoSkipEnabled&&e("button",{className:f.controlBtn,onClick:()=>{a.videoRef.current&&s.currentSkipInterval&&(a.videoRef.current.currentTime=s.currentSkipInterval.end_time,h.setCurrentSkipInterval(null))},children:["Skip ",s.currentSkipInterval.skip_type==="op"?"Opening":"Ending"]})]}),e("div",{className:f.rightControls,children:[e("div",{className:f.skipControls,children:k&&e("button",{className:f.nextEpisodeBtn,onClick:t,title:"Play next episode",children:"Next EP"})}),e("button",{className:`${f.controlBtn} ${s.isAutoSkipEnabled?f.active:""}`,onClick:()=>{const d=!s.isAutoSkipEnabled;h.setIsAutoSkipEnabled(d),localStorage.setItem("autoSkipEnabled",d.toString())},title:s.isAutoSkipEnabled?"Disable Auto Skip":"Enable Auto Skip","aria-label":"Auto Skip",children:e(Jr,{size:22})}),e("button",{className:`${f.controlBtn} ${v?f.active:""}`,onClick:()=>u(!v),title:v?"Disable Autoplay":"Enable Autoplay","aria-label":"Autoplay",children:e(Vr,{size:24})}),e("button",{ref:ue,className:`${f.controlBtn} ${O?f.active:""} `,onClick:()=>Q(!O),"aria-label":"Settings",children:e(gt,{})}),e("button",{className:`${f.controlBtn} ${Z?f.active:""} `,onClick:d=>{d.stopPropagation(),l()},title:Z?"Exit Theater Mode":"Theater Mode","aria-label":Z?"Exit Theater Mode":"Theater Mode",children:e(_t,{})}),e("button",{className:f.controlBtn,onClick:h.toggleFullscreen,children:s.isFullscreen?e(yt,{}):e(bt,{})})]})]})]}),e(qt,{fallback:null,children:e(Gr,{ref:ee,isOpen:O,onClose:()=>Q(!1),videoSources:T,currentSource:N,currentLink:c,onSourceChange:H,subtitles:s.availableSubtitles,activeSubtitleTrack:s.activeSubtitleTrack,onSubtitleChange:ce,subtitleSettings:{fontSize:s.subtitleFontSize,position:s.subtitlePosition},onSubtitleSettingsChange:(d,b)=>{d==="fontSize"?(h.setSubtitleFontSize(b),localStorage.setItem("subtitleFontSize",b.toString())):(h.setSubtitlePosition(b),localStorage.setItem("subtitlePosition",b.toString()))},useNativeControls:s.useNativeControls,onNativeControlsToggle:h.setUseNativeControls})})]})},Yr="_statusArea_1wdj2_1",Zr="_shortcuts_1wdj2_19",es="_shortcutGroup_1wdj2_26",ts="_shortcut_1wdj2_19",ns="_key_1wdj2_40",os="_label_1wdj2_61",$={statusArea:Yr,shortcuts:Zr,shortcutGroup:es,shortcut:ts,key:ns,label:os},rs=()=>e("div",{className:$.statusArea,children:e("div",{className:$.shortcuts,children:[e("div",{className:$.shortcutGroup,children:[e("div",{className:$.shortcut,children:[e("span",{className:$.key,children:e(Tt,{size:10})}),e("span",{className:$.key,children:e(Et,{size:10})}),e("span",{className:$.label,children:"Volume"})]}),e("div",{className:$.shortcut,children:[e("span",{className:$.key,children:e(Nt,{size:10})}),e("span",{className:$.key,children:e(Bt,{size:10})}),e("span",{className:$.label,children:"Seek"})]})]}),e("div",{className:$.shortcutGroup,children:[e("div",{className:$.shortcut,children:[e("span",{className:$.key,children:"Space"}),e("span",{className:$.label,children:"Play/Pause"})]}),e("div",{className:$.shortcut,children:[e("span",{className:$.key,children:"F"}),e("span",{className:$.label,children:"Fullscreen"})]}),e("div",{className:$.shortcut,children:[e("span",{className:$.key,children:"M"}),e("span",{className:$.label,children:"Mute"})]}),e("div",{className:$.shortcut,children:[e("span",{className:$.key,children:"T"}),e("span",{className:$.label,children:"Theater"})]}),e("div",{className:$.shortcut,children:[e("span",{className:$.key,children:"N"}),e("span",{className:$.label,children:"Next"})]})]})]})}),ss="_episodeListContainer_jtzlz_1",is="_drawerContainer_jtzlz_9",as="_episodeListHeader_jtzlz_14",cs="_drawerHeader_jtzlz_21",ls="_episodeListTitle_jtzlz_29",ds="_rangeSelector_jtzlz_44",us="_rangeButton_jtzlz_50",ms="_active_jtzlz_68",ps="_episodeList_jtzlz_1",hs="_drawerList_jtzlz_85",fs="_episodeItem_jtzlz_108",vs="_watched_jtzlz_130",ae={episodeListContainer:ss,drawerContainer:is,episodeListHeader:as,drawerHeader:cs,episodeListTitle:ls,rangeSelector:ds,rangeButton:us,active:ms,episodeList:ps,drawerList:hs,episodeItem:fs,watched:vs},ft=({episodes:o,currentEpisode:v,watchedEpisodes:u,onEpisodeClick:k,variant:t="sidebar"})=>{const[T,N]=z(0),c=Pe(()=>{if(o.length<=100)return[];const D=[];for(let P=0;P<o.length;P+=100){const J=P+1,V=Math.min(P+100,o.length);D.push(`${J}-${V}`)}return D},[o]),H=Pe(()=>{if(c.length===0)return o;const D=c[T],[P,J]=D.split("-"),V=parseInt(P,10),Z=parseInt(J,10);return o.slice(V-1,Z)},[o,c,T]);return e("div",{className:`${ae.episodeListContainer} ${t==="drawer"?ae.drawerContainer:""}`,children:[e("div",{className:`${ae.episodeListHeader} ${t==="drawer"?ae.drawerHeader:""}`,children:[e("h3",{className:ae.episodeListTitle,children:"Episodes"}),c.length>0&&e("div",{className:ae.rangeSelector,children:c.map((D,P)=>e("button",{className:`${ae.rangeButton} ${T===P?ae.active:""}`,onClick:()=>N(P),children:D},D))})]}),e("div",{className:`${ae.episodeList} ${t==="drawer"?ae.drawerList:""}`,children:H.map(D=>e("div",{className:`${ae.episodeItem} ${u.includes(D)?ae.watched:""} ${D===v?ae.active:""}`,onClick:()=>k(D),children:e("span",{children:["Episode ",D]})},D))})]})},gs="_shell_17672_1",_s="_overlay_17672_10",ys="_drawer_17672_20",bs="_handle_17672_34",Ss="_header_17672_42",ws="_headerCopy_17672_51",ks="_kicker_17672_57",Cs="_title_17672_65",Ts="_closeBtn_17672_72",Es="_body_17672_85",be={shell:gs,overlay:_s,drawer:ys,handle:bs,header:Ss,headerCopy:ws,kicker:ks,title:Cs,closeBtn:Ts,body:Es};function Ns({isOpen:o,onClose:v,episodes:u,currentEpisode:k,watchedEpisodes:t,onEpisodeClick:T}){return B(()=>{if(!o)return;const N=H=>{H.key==="Escape"&&v()},c=document.body.style.overflow;return document.body.style.overflow="hidden",document.addEventListener("keydown",N),()=>{document.body.style.overflow=c,document.removeEventListener("keydown",N)}},[o,v]),o?Qt(e("div",{className:be.shell,role:"dialog","aria-modal":"true","aria-label":"Episode picker",children:[e("button",{className:be.overlay,type:"button",onClick:v,"aria-label":"Close episodes"}),e("aside",{className:be.drawer,children:[e("div",{className:be.handle}),e("div",{className:be.header,children:[e("div",{className:be.headerCopy,children:[e("span",{className:be.kicker,children:"Episode picker"}),e("h3",{className:be.title,children:"Choose an episode"})]}),e("button",{className:be.closeBtn,type:"button",onClick:v,"aria-label":"Close",children:e(Rt,{})})]}),e("div",{className:be.body,children:e(ft,{episodes:u,currentEpisode:k,watchedEpisodes:t,onEpisodeClick:T,variant:"drawer"})})]})]}),document.body):null}const Bs="_sourceSelectionContainer_fgu26_76",Rs="_providerSelectContainer_fgu26_89",Ms="_providerSelect_fgu26_89",Is="_sourceButtons_fgu26_144",zs="_sourceButton_fgu26_144",Ps="_active_fgu26_169",Qe={sourceSelectionContainer:Bs,providerSelectContainer:Rs,providerSelect:Ms,sourceButtons:Is,sourceButton:zs,active:Ps},js=({selectedProvider:o,onProviderChange:v})=>e("div",{className:Qe.providerSelectContainer,children:[e("h4",{children:"Provider"}),e("select",{className:Qe.providerSelect,value:o,onChange:u=>v(u.target.value),children:[e("option",{value:"allanime",children:"AllAnime"}),e("option",{value:"megaplay",children:"MegaPlay"}),e("option",{value:"animeya",children:"Animeya"}),e("option",{value:"animepahe",children:"AnimePahe"}),e("option",{value:"123anime",children:"123Anime"})]})]}),$s=({videoSources:o,selectedSource:v,onSourceChange:u})=>{const k=Array.isArray(o)?o:[];return k.length===0?null:e("div",{className:Qe.sourceSelectionContainer,children:[e("h4",{children:"Source"}),e("div",{className:Qe.sourceButtons,children:k.map(t=>e("button",{className:`${Qe.sourceButton} ${v?.sourceName===t.sourceName?Qe.active:""} `,onClick:()=>u(t),children:t.sourceName},t.sourceName))})]})},Ls=Ce.memo($s,(o,v)=>o.selectedSource?.sourceName===v.selectedSource?.sourceName&&o.videoSources===v.videoSources),xs=({skipIntervals:o,showId:v,episodeNumber:u,episodeCount:k,sourceType:t,showMeta:T})=>{const N=at(),c=x(null),H=x(null),D=x(null),P=x(null),J=x(!1),V=x(null),Z=x(0),l=x(1),s=x({mouse:!1,keyboard:!1}),a=x(null),h=x(null),O=x(!1),G=x(Math.random().toString(36).substring(2)),[Q,re]=z(!1),[ee,ue]=z(()=>{try{return localStorage.getItem("playerMuted")==="true"}catch{return!1}}),[y,_]=z(()=>{try{const r=parseFloat(localStorage.getItem("playerVolume")||"");return isNaN(r)?1:Math.max(0,Math.min(1,r))}catch{return 1}}),[R,K]=z(!1),[j,F]=z(0),[se,L]=z(!0),[W,te]=z(!1),[ce,me]=z({time:0,position:null}),[d,b]=z(localStorage.getItem("autoSkipEnabled")==="true"),[m,C]=z(null),[U,pe]=z(!1),[fe,X]=z(parseFloat(localStorage.getItem("subtitleFontSize")||"1.8")),[ie,ne]=z(parseInt(localStorage.getItem("subtitlePosition")||"-4")),[je,ve]=z([]),[ge,le]=z(null),[oe,Fe]=z(!1),[Te,$e]=z(!1),[Y,We]=z(!1),[nt,Se]=z(!1),[we,Le]=z(()=>{try{return localStorage.getItem("playerUseNativeControls")==="true"}catch{return!1}}),Ee=x(!1),Ue=x(-1),xe=M(()=>{const r=c.current;return!v||!u||!T?.name?null:{showId:v,episodeNumber:u,episodeCount:k,currentTime:r?r.currentTime:0,duration:r?r.duration:0,showName:T.name,showThumbnail:T.thumbnail,nativeName:T.names?.native,englishName:T.names?.english,genres:T.genres?.map(g=>g.name),popularityScore:T.score,type:T.type,isPlaying:r?!r.paused:!0,sessionId:G.current}},[v,u,k,T]),q=M((r=!1,g=!1)=>{if(Ee.current)return!1;const E=xe();if(!E)return!1;const I=c.current;if(!I&&t!=="iframe")return!1;const w=I?I.currentTime>=I.duration*.8:!1;let A=I?I.currentTime:0;if(r&&w&&(A=I?I.duration:0),!g){if(A===0&&!w)return!1;const Ke=I?Math.abs(A-Ue.current):0;if(!r&&I&&A!==I.duration&&Ke<5)return!1}E.currentTime=A,Ue.current=A;const de=localStorage.getItem("animepahe_ua"),he=localStorage.getItem("animepahe_cookie"),Ie={"Content-Type":"application/json"};return de&&(Ie["x-animepahe-ua"]=de),he&&(Ie["x-animepahe-cookie"]=he),r?(async()=>{try{await fetch("/api/update-progress",{method:"POST",headers:Ie,body:JSON.stringify(E)}),N.invalidateQueries({queryKey:["video-sources",v,u]}),N.invalidateQueries({queryKey:["continueWatchingFast"]}),N.invalidateQueries({queryKey:["continueWatchingUpNext"]}),N.invalidateQueries({queryKey:["continueWatching"]}),N.invalidateQueries({queryKey:["allContinueWatching"]})}catch(Ke){console.error("Failed to update progress:",Ke)}})():fetch("/api/update-progress",{method:"POST",headers:Ie,body:JSON.stringify(E),keepalive:!0}).catch(Ke=>console.error("Failed to update progress:",Ke)),!0},[xe,t,N,v,u]);B(()=>{const r=c.current;r&&(r.volume=y,r.muted=ee)},[c,y,ee]),B(()=>{const r=()=>{Ee.current||q(!0)};window.addEventListener("beforeunload",r);const g=V,E=P;return()=>{window.removeEventListener("beforeunload",r),Ee.current||q(!0),g.current&&clearTimeout(g.current),E.current&&clearTimeout(E.current)}},[q]);const ot=r=>{if(isNaN(r)||r<=0)return"00:00";const g=new Date(r*1e3).toISOString().slice(11,19);return parseInt(g.slice(0,2),10)>0?g:g.slice(3)},Ae=M(()=>{H.current&&(document.fullscreenElement?document.fullscreenElement&&document.exitFullscreen():H.current.requestFullscreen().catch(r=>{console.error(`Error attempting to enable full-screen mode: ${r.message} (${r.name})`)}))},[]),Ne=M(()=>{c.current&&(c.current.paused?c.current.play().catch(()=>console.warn("Autoplay was prevented.")):(c.current.pause(),L(!0)))},[L]),Be=M(()=>{const r=c.current;if(!r)return;const g=s.current.mouse||s.current.keyboard;r.playbackRate=g?2:l.current},[]),qe=M(r=>{s.current.mouse!==r&&(s.current.mouse=r,Se(r||s.current.keyboard),Be())},[Be]),Re=M(r=>{s.current.keyboard!==r&&(s.current.keyboard=r,Se(s.current.mouse||r),Be())},[Be]),De=M(r=>{c.current&&(c.current.currentTime+=r,V.current&&clearTimeout(V.current),V.current=setTimeout(()=>{q(!1,!0)},1500),L(!0))},[q,L]),Oe=M(()=>{if(!c.current)return;const r=!c.current.muted;c.current.muted=r,ue(r),localStorage.setItem("playerMuted",String(r)),!r&&c.current.volume===0&&(c.current.volume=.5,_(.5),localStorage.setItem("playerVolume",String(.5))),L(!0)},[L]);B(()=>{const r=()=>{const g=document.fullscreenElement!==null;K(g),g&&L(!0)};return document.addEventListener("fullscreenchange",r),()=>document.removeEventListener("fullscreenchange",r)},[L]),B(()=>{const r=E=>{if(!E.target.closest('input, textarea, button, select, a, [role="button"], [contenteditable="true"]')){if(E.code==="Space"){if(E.preventDefault(),O.current)return;O.current=!0,h.current&&clearTimeout(h.current),h.current=window.setTimeout(()=>{h.current=null,O.current&&Re(!0)},180);return}switch(E.key.toLowerCase()){case"f":Ae();break;case"m":Oe();break;case"arrowright":De(10);break;case"arrowleft":De(-10);break;case"arrowup":if(E.preventDefault(),c.current){const w=Math.min(1,c.current.volume+.1);c.current.volume=w,_(w)}break;case"arrowdown":if(E.preventDefault(),c.current){const w=Math.max(0,c.current.volume-.1);c.current.volume=w,_(w)}break}}},g=E=>{if(E.code==="Space"){if(E.preventDefault(),O.current=!1,s.current.keyboard){Re(!1);return}h.current&&(clearTimeout(h.current),h.current=null,Ne())}};return document.addEventListener("keydown",r),document.addEventListener("keyup",g),()=>{document.removeEventListener("keydown",r),document.removeEventListener("keyup",g),h.current&&(clearTimeout(h.current),h.current=null),O.current=!1,Re(!1),Se(!1)}},[Re,Ne,Ae,Oe,De]),B(()=>{const r=I=>{if(I.button!==0)return;const w=I.target;if(!w||w.closest('[data-speed-boost-ignore="true"]'))return;const A=H.current;!A||!A.contains(w)||(a.current&&clearTimeout(a.current),a.current=window.setTimeout(()=>{a.current=null,qe(!0)},180))},g=()=>{a.current&&(clearTimeout(a.current),a.current=null),qe(!1)},E=()=>{a.current&&(clearTimeout(a.current),a.current=null),O.current=!1,h.current&&(clearTimeout(h.current),h.current=null),Re(!1),qe(!1),Se(!1)};return document.addEventListener("mousedown",r),document.addEventListener("mouseup",g),window.addEventListener("blur",E),()=>{document.removeEventListener("mousedown",r),document.removeEventListener("mouseup",g),window.removeEventListener("blur",E),a.current&&(clearTimeout(a.current),a.current=null)}},[Re,qe]);const He=M(()=>{re(!0),We(!1),setTimeout(()=>q(!1,!0),50)},[q]),Ve=M(()=>{We(!1)},[]),Je=M(()=>{We(!0)},[]),Me=M(()=>{re(!1),L(!0),setTimeout(()=>q(!1,!0),50)},[q]);B(()=>{Ee.current=!1,Ue.current=-1,Z.current=0,G.current=Math.random().toString(36).substring(2)},[v,u]),B(()=>{const r=G.current;return()=>{const g=JSON.stringify({sessionId:r}),E=new Blob([g],{type:"application/json"});navigator.sendBeacon("/api/discord/clear",E)}},[v,u]),B(()=>{if(t!=="iframe")return;q(!1,!0);const r=setInterval(()=>{q(!1,!0)},6e4);return()=>clearInterval(r)},[t,q]);const Ge=M(()=>{F(c.current?.duration||0),Be()},[Be]),Xe=M(()=>{if(c.current){const r=c.current.muted,g=c.current.volume;ue(r),_(g),localStorage.setItem("playerMuted",String(r)),localStorage.setItem("playerVolume",String(g))}},[]),_e=M(()=>{},[]),Ye=M(()=>{const r=c.current;if(!r)return;const g=r.currentTime||0,E=Date.now();E-Z.current>6e4&&q()&&(Z.current=E);const I=o.find(w=>g>=w.start_time&&g<w.end_time)||null;C(w=>w?.skip_id!==I?.skip_id?I:w),d&&I&&!r.paused&&(r.currentTime=I.end_time,C(null))},[o,d,q]),n=M(()=>{const r=xe();if(!r)return;r.currentTime=r.duration;const g={"Content-Type":"application/json"},E=localStorage.getItem("animepahe_ua"),I=localStorage.getItem("animepahe_cookie");E&&(g["x-animepahe-ua"]=E),I&&(g["x-animepahe-cookie"]=I),fetch("/api/update-progress",{method:"POST",headers:g,body:JSON.stringify(r)}).then(()=>{N.invalidateQueries({queryKey:["video-sources",v,u]}),N.invalidateQueries({queryKey:["continueWatchingFast"]}),N.invalidateQueries({queryKey:["continueWatchingUpNext"]}),N.invalidateQueries({queryKey:["continueWatching"]}),N.invalidateQueries({queryKey:["allContinueWatching"]})}).catch(w=>console.error("Failed to send final progress:",w))},[xe,N,v,u]),i=M(()=>{Ee.current=!0,n()},[n]);B(()=>{const r=()=>{W&&(te(!1),me({time:0,position:null}),J.current&&c.current?.play(),q(!1,!0))};return W&&document.addEventListener("mouseup",r),()=>{document.removeEventListener("mouseup",r)}},[W,q]);const S=Pe(()=>({togglePlay:Ne,seek:De,toggleMute:Oe,toggleFullscreen:Ae,onPlay:He,onPause:Me,onLoadedMetadata:Ge,formatTime:ot,onVolumeChange:Xe,onProgress:_e,onTimeUpdate:Ye,onEnded:i,setShowControls:L,setIsScrubbing:te,setHoverTime:me,setIsAutoSkipEnabled:b,setCurrentSkipInterval:C,setShowCCMenu:pe,setSubtitleFontSize:X,setSubtitlePosition:ne,setAvailableSubtitles:ve,setActiveSubtitleTrack:le,setShowSettings:Fe,setShowVolumeSlider:$e,wasPlayingBeforeScrub:J,inactivityTimer:P,setIsFullscreen:K,onWaiting:Je,onPlaying:Ve,sendProgressUpdate:q,setUseNativeControls:Le}),[Ne,De,Oe,Ae,He,Me,Ge,Xe,_e,Ye,i,K,Je,Ve,q,Le]);return{refs:{videoRef:c,playerContainerRef:H,progressBarRef:D},state:{isPlaying:Q,isMuted:ee,volume:y,isFullscreen:R,duration:j,showControls:se,isScrubbing:W,hoverTime:ce,isAutoSkipEnabled:d,currentSkipInterval:m,showCCMenu:U,subtitleFontSize:fe,subtitlePosition:ie,availableSubtitles:je,activeSubtitleTrack:ge,showSettings:oe,showVolumeSlider:Te,isBuffering:Y,isSpeedBoostActive:nt,useNativeControls:we},actions:S}},As=()=>localStorage.getItem("preferredMode")==="dub"?"dub":"sub",Ds=()=>{const o=localStorage.getItem("preferredProvider");return o&&["allanime","megaplay","animeya","animepahe","123anime"].includes(o)?o:"allanime"},vt=()=>({showMeta:{},episodes:[],watchedEpisodes:[],watchlistStatus:null,showCombinedDetails:!1,currentMode:As(),inWatchlist:!1,videoSources:[],selectedSource:null,selectedLink:null,forceNativePlayer:localStorage.getItem("forceNativePlayer")==="true",isAutoplayEnabled:localStorage.getItem("autoplayEnabled")==="true",showResumeModal:!0,resumeTime:0,resumeDuration:0,skipIntervals:[],selectedProvider:Ds(),loadingShowData:!0,loadingVideo:!1,loadingDetails:!1,error:null,detailsError:null,showCookieModal:!1,cookieProvider:null});vt();function Fs(o,v){switch(v.type){case"SET_STATE":return{...o,...v.payload};case"SET_MODE":return{...o,currentMode:v.payload,videoSources:[],selectedSource:null,selectedLink:null};case"SET_PROVIDER":return{...o,selectedProvider:v.payload};case"SET_OVERRIDE_SOURCE":return{...o,selectedSource:v.payload?.source??null,selectedLink:v.payload?.link??null};default:return o}}const Ws=(o,v)=>{const[u,k]=Vt(Fs,void 0,vt),t=at(),T=x(null),N=v||u.initialEpisode;B(()=>{o&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(o)&&u.selectedProvider!=="animepahe"&&T.current!==o&&(T.current=o,k({type:"SET_PROVIDER",payload:"animepahe"}))},[o,u.selectedProvider]);const{data:c,isLoading:H,error:D}=it({queryKey:["show-data",o,u.currentMode],queryFn:async()=>{if(!o)throw new Error("No showId");const R=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(o)?"animepahe":"allanime",K=R;try{const[j,F,se,L]=await Promise.all([ye(`/api/show-meta/${o}?provider=${R}`),ye(`/api/episodes?showId=${o}&mode=${u.currentMode}&provider=${K}`).catch(()=>null),ye(`/api/watchlist/check/${o}`).catch(()=>({inWatchlist:!1})),ye(`/api/watched-episodes/${o}`).catch(()=>[])]),W=F?.episodes?F.episodes.sort((te,ce)=>parseFloat(te)-parseFloat(ce)):[];return{showMeta:{...j,description:F?.description||j?.description,names:j?.names||{romaji:j?.name,english:j?.englishName,native:j?.nativeName}},episodes:W,inWatchlist:se.inWatchlist,watchlistStatus:se.status??null,watchedEpisodes:L}}catch(j){const F=j;throw F.message==="AUTH_REQUIRED"&&k({type:"SET_STATE",payload:{showCookieModal:!0,cookieProvider:F.provider}}),j}},enabled:!!o});B(()=>{!v&&c?.episodes&&c.episodes.length>0&&!v&&k({type:"SET_STATE",payload:{initialEpisode:c.episodes[0]}})},[c,v]);const{data:P,isLoading:J,error:V}=it({queryKey:["video-sources",o,N,u.selectedProvider,u.currentMode,c?.showMeta?.name],queryFn:async()=>{if(!o||!N)throw new Error("Missing params");try{let y=o;if(["123anime","animeya","megaplay"].includes(u.selectedProvider)){const m=c?.showMeta?.names,C=X=>{for(let ie=0;ie<X.length;ie++)if(X.charCodeAt(ie)>127)return!1;return!0},U=m?.romaji&&C(m.romaji)?m.romaji:null,pe=m?.english||c?.showMeta?.englishName||c?.showMeta?.name,fe=u.currentMode==="dub"?pe||U:U||pe;if(fe){let X;try{X=await ye(`/api/search?query=${encodeURIComponent(fe)}&provider=${u.selectedProvider}`)}catch{X=[]}if(X&&X.length>0){const ie=fe.toLowerCase().trim(),je=(le=>le.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,""))(ie);let ve=X[0],ge=-1/0;for(const le of X){const oe=(le.name||le.title||"").toLowerCase().trim(),Fe=(le.id||"").toLowerCase(),Te=oe.includes("(dub)")||oe.endsWith(" dub")||Fe.endsWith("-dub"),$e=u.currentMode==="dub";let Y=0;oe===ie?Y+=4:oe.startsWith(ie)?Y+=2:oe.includes(ie)?Y+=1:Fe.startsWith(je)&&(Y+=0),Te!==$e&&(Y-=10),Y>ge&&(ge=Y,ve=le)}y=ve.session||ve.id}}}else if(u.selectedProvider==="animepahe")if(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(o))y=o;else{let C;try{C=await ye(`/api/search?query=${encodeURIComponent(c?.showMeta?.name||o)}&provider=animepahe`)}catch{C=[]}C&&C.length>0&&(y=C[0].session||C[0].id)}const[_,R,K,j]=await Promise.all([ye(`/api/video?showId=${y}&episodeNumber=${N}&mode=${u.currentMode}&provider=${u.selectedProvider}`).catch(()=>null),ye(`/api/episode-progress/${o}/${N}`).catch(()=>null),ye("/api/settings?key=preferredSource").catch(()=>null),ye(`/api/skip-times/${o}/${N}?provider=${u.selectedProvider}`).catch(()=>[])]),F=K?.value,se=_?.filter(m=>{const C=m.sourceName.toLowerCase();return u.currentMode==="dub"?C.includes("eng")||C.includes("dub"):C.includes("jpn")||C.includes("sub")||!C.includes("eng")&&!C.includes("dub")})??[],L=se.length>0?se:_??[];let W=L.length>0?L[0]:null;if(F){const m=L.find(C=>C.sourceName===F);m&&(W=m)}const te=W&&W.links.length>0?W.links.sort((m,C)=>(parseInt(C.resolutionStr)||0)-(parseInt(m.resolutionStr)||0))[0]:null,ce=R?.currentTime||0,me=R?.duration||0,b=(Array.isArray(j)?j:j?.results||[]).map(m=>({skip_id:m.skip_id||"",skip_type:m.skip_type||"",start_time:m.interval?.start_time??m.start_time??0,end_time:m.interval?.end_time??m.end_time??0})).filter(m=>m.end_time>0);return(!_||_.length===0)&&ze.error(`No video sources found for ${u.selectedProvider}`),{videoSources:_,selectedSource:W,selectedLink:te,resumeTime:ce,resumeDuration:me,showResumeModal:ce>5&&W?.type!=="iframe",skipIntervals:b,fetchedEpisodeNumber:N}}catch(y){const _=y;if(_.message==="AUTH_REQUIRED")return k({type:"SET_STATE",payload:{showCookieModal:!0,cookieProvider:_.provider}}),{videoSources:[],selectedSource:null,selectedLink:null,resumeTime:0,resumeDuration:0,showResumeModal:!1,skipIntervals:[],fetchedEpisodeNumber:N};throw y}},enabled:!!o&&!!N&&!!c?.showMeta?.name}),Z=!1,{mutateAsync:l}=rt({mutationFn:async({wasIn:y,showMeta:_})=>{const R=y?"/api/watchlist/remove":"/api/watchlist/add",K={id:o,name:_.name||_.names?.romaji,thumbnail:_.thumbnail,nativeName:_.names?.native,englishName:_.names?.english,type:_.type};return await fetch(R,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(K)}),!y},onSuccess:y=>{ze.success(y?"Added to watchlist":"Removed from watchlist"),t.invalidateQueries({queryKey:["show-data",o]}),t.invalidateQueries({queryKey:["watchlist"]})},onError:()=>ze.error("Failed to update watchlist")}),s=M(async()=>{!o||!c?.showMeta||await l({wasIn:!!c.inWatchlist,showMeta:c.showMeta})},[o,c,l]),a=M(async y=>{try{await fetch("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:"preferredSource",value:y})})}catch(_){console.error(_)}},[]),{mutateAsync:h,isPending:O}=rt({mutationFn:async({status:y})=>{if(!o)throw new Error("Missing showId");if(!(await fetch("/api/watchlist/status",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:o,status:y})})).ok)throw new Error("Failed to update watchlist status");return y},onSuccess:y=>{k({type:"SET_STATE",payload:{inWatchlist:!0,watchlistStatus:y}}),ze.success(`Moved to ${y}`),t.invalidateQueries({queryKey:["show-data",o]}),t.invalidateQueries({queryKey:["watchlist"]}),t.invalidateQueries({queryKey:["continueWatchingFast"]}),t.invalidateQueries({queryKey:["continueWatchingUpNext"]}),t.invalidateQueries({queryKey:["allContinueWatching"]})},onError:()=>ze.error("Failed to update watchlist status")}),G=M(async()=>{await h({status:"Completed"})},[h]),{mutateAsync:Q}=rt({mutationFn:async({episodeNumber:y,duration:_,showMeta:R,episodes:K})=>{await fetch("/api/update-progress",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({showId:o,episodeNumber:y,currentTime:_,duration:_,showName:R.name,showThumbnail:R.thumbnail,nativeName:R.names?.native,englishName:R.names?.english,genres:R.genres?.map(j=>j.name),popularityScore:R.score??R.stats?.averageScore,type:R.type,status:R.status,episodeCount:K.length}),keepalive:!0})},onSuccess:(y,_)=>{ze.success(`Episode ${_.episodeNumber} marked as watched`),t.invalidateQueries({queryKey:["show-data",o]}),t.invalidateQueries({queryKey:["video-sources",o,_.episodeNumber]}),t.invalidateQueries({queryKey:["continueWatchingFast"]}),t.invalidateQueries({queryKey:["continueWatchingUpNext"]})},onError:()=>ze.error("Failed to mark episode as watched")}),re=M(async(y,_)=>{!o||!c?.showMeta||await Q({episodeNumber:y,duration:_,showMeta:c.showMeta,episodes:c.episodes})},[o,c,Q]),ee=M(async()=>{k({type:"SET_STATE",payload:{showCombinedDetails:!u.showCombinedDetails}})},[u.showCombinedDetails]);return{state:Pe(()=>{const y=D||V,_=y?y.message:null,R=_==="AUTH_REQUIRED"?null:_;return{...u,currentEpisode:N,showMeta:{...c?.showMeta||{},name:c?.showMeta?.name},episodes:c?.episodes||[],watchedEpisodes:c?.watchedEpisodes||[],inWatchlist:!!c?.inWatchlist,watchlistStatus:c?.watchlistStatus??u.watchlistStatus??null,videoSources:P?.videoSources||[],selectedSource:u.selectedSource||P?.selectedSource||null,selectedLink:u.selectedLink||P?.selectedLink||null,resumeTime:P?.resumeTime||0,resumeDuration:P?.resumeDuration||0,showResumeModal:u.showResumeModal&&(P?.showResumeModal??!1),skipIntervals:P?.skipIntervals||[],loadingShowData:H,loadingVideo:J,loadingDetails:Z,error:R,fetchedEpisodeNumber:P?.fetchedEpisodeNumber}},[u,c,P,H,J,Z,D,V,N]),dispatch:k,toggleWatchlist:s,moveToCompleted:G,setPreferredSource:a,handleToggleDetails:ee,markEpisodeWatched:re,isMarkingWatched:Q.isPending,isUpdatingWatchlistStatus:O}},Js=()=>{const{id:o,episodeNumber:v}=Kt(),u=Ht(),k=at(),{state:t,dispatch:T,toggleWatchlist:N,moveToCompleted:c,setPreferredSource:H,handleToggleDetails:D,markEpisodeWatched:P,isMarkingWatched:J,isUpdatingWatchlistStatus:V}=Ws(o,v),Z=Pe(()=>{if(t.showMeta.name)return{name:t.showMeta.name,thumbnail:t.showMeta.thumbnail,names:t.showMeta.names,genres:t.showMeta.genres,score:t.showMeta.score}},[t.showMeta.name,t.showMeta.thumbnail,t.showMeta.names,t.showMeta.genres,t.showMeta.score]),l=xs({skipIntervals:t.skipIntervals,showId:o,episodeNumber:t.currentEpisode?.toString(),episodeCount:t.episodes.length||void 0,sourceType:t.selectedSource?.type,showMeta:Z}),{refs:s,actions:a}=l,h=x(null),O=Jt(),G=x(null),Q=x(0),re=x(t.resumeTime),ee=x(t.showResumeModal);B(()=>{re.current=t.resumeTime,ee.current=t.showResumeModal},[t.resumeTime,t.showResumeModal]);const[ue,y]=z(null),[_,R]=z(!1),[K,j]=z(!1),[F,se]=z(!1),[L,W]=z(null),[te,ce]=z(null),me=x(0),d=x(null),b=x(0),{data:m=[]}=Mt(),C=It(),U=zt(),pe=Pt(),fe=jt(),[X,ie]=z(!1),[ne,je]=z(()=>{try{return localStorage.getItem("playerTheaterMode")==="true"}catch{return!1}});B(()=>{try{ne?document.body.classList.add("theater-mode"):document.body.classList.remove("theater-mode")}catch(n){console.error(n)}return()=>{try{document.body.classList.remove("theater-mode")}catch(n){console.error(n)}}},[ne]);const{data:ve}=it({queryKey:["suggestedEpisode",o],queryFn:()=>mt(o),enabled:!!o}),ge=Pe(()=>t.episodes.findIndex(n=>n===t.currentEpisode),[t.episodes,t.currentEpisode]),le=ge>0?t.episodes[ge-1]:null,oe=ge>=0&&ge<t.episodes.length-1?t.episodes[ge+1]:null,Fe=M(n=>{const i=l.state.showControls;if(a.setShowControls(!l.state.showControls),i&&(b.current=Date.now()),me.current+=1,d.current&&clearTimeout(d.current),me.current===2){a.toggleFullscreen(),me.current=0;return}d.current=setTimeout(()=>{me.current=0},250)},[a,l.state.showControls]);B(()=>{const n=s.videoRef.current;if(!n)return;for(h.current&&h.current.destroy(),(t.loadingVideo||t.selectedSource)&&(n.pause(),n.removeAttribute("src"),n.load());n.firstChild;)n.removeChild(n.firstChild);if(!t.selectedSource||!t.selectedLink)return;if(t.selectedSource.type==="iframe"){Q.current=0;return}re.current>5&&!ee.current?Q.current=re.current:ee.current&&(Q.current=0);let i=`/api/proxy?url=${encodeURIComponent(t.selectedLink.link)}`;t.selectedLink.headers?.Referer&&(i+=`&referer=${encodeURIComponent(t.selectedLink.headers.Referer)}`),t.selectedSource.subtitles&&(t.selectedSource.subtitles.forEach(w=>{const A=document.createElement("track");A.kind="subtitles",A.label=w.label,A.srclang=w.lang;const de=w.src??w.url;if(de){let he=`/api/subtitle-proxy?url=${encodeURIComponent(de)}`;t.selectedLink?.headers?.Referer&&(he+=`&referer=${encodeURIComponent(t.selectedLink.headers.Referer)}`),A.src=he}(w.lang==="en"||w.label==="English")&&(A.default=!0),n.appendChild(A)}),a.setAvailableSubtitles(t.selectedSource.subtitles));const S=Q.current;Q.current=0;const r=()=>{S>0&&(n.currentTime=S)};n.addEventListener("loadedmetadata",r,{once:!0}),t.selectedLink.hls?n.canPlayType("application/vnd.apple.mpegurl")||n.canPlayType("application/x-mpegURL")?n.src=i:ht(()=>import("./hls.light-DcbkToIY.js"),[]).then(A=>{const de=A.default;if(de.isSupported()){const he=document.body.classList.contains("low-end"),Ie=new de({maxBufferLength:he?15:30,maxMaxBufferLength:he?30:60,maxBufferSize:he?25*1e3*1e3:60*1e3*1e3,startLevel:-1,enableWorker:!0});h.current=Ie,Ie.loadSource(i),Ie.attachMedia(n)}else n.src=i}):n.src=i;const g=localStorage.getItem("playerVolume"),E=localStorage.getItem("playerMuted");return g!==null&&(n.volume=parseFloat(g)),E!==null&&(n.muted=E==="true"),!(ee.current&&re.current>5)&&n.play().catch(w=>{console.warn("Autoplay was prevented:",w),a.setShowControls(!0)}),()=>{n.removeEventListener("loadedmetadata",r),h.current&&h.current.destroy()}},[t.selectedSource,t.selectedLink,s.videoRef,a,t.loadingVideo]);const Te=M(()=>{a.onEnded();const n=m.find(i=>i.showId===o&&i.episodeNumber===t.currentEpisode);if(m.length>0){const i=m.findIndex(r=>r.showId===o&&r.episodeNumber===t.currentEpisode),S=i>=0?m[i+1]||null:m[0];ce({nextItem:S,playedItem:n||null}),W(2)}else n&&U.mutate({showId:n.showId,episodeNumber:n.episodeNumber});if(t.isAutoplayEnabled&&m.length===0){const i=t.episodes.findIndex(S=>S===t.currentEpisode);if(i>-1&&i<t.episodes.length-1){const S=t.episodes[i+1];k.invalidateQueries({queryKey:["continueWatchingFast"]}),k.invalidateQueries({queryKey:["continueWatchingUpNext"]}),k.invalidateQueries({queryKey:["continueWatching"]}),k.invalidateQueries({queryKey:["allContinueWatching"]}),u(`/watch/${o}/${S}`)}}},[a,u,m,U,o,t.currentEpisode,t.episodes,t.isAutoplayEnabled,k]),$e=M(()=>{if(m.length===0)return;a.onEnded();const n=m.find(r=>r.showId===o&&r.episodeNumber===t.currentEpisode),i=m.findIndex(r=>r.showId===o&&r.episodeNumber===t.currentEpisode),S=i>=0?m[i+1]||null:m[0];n?U.mutate({showId:n.showId,episodeNumber:n.episodeNumber}):m[0]&&U.mutate({showId:m[0].showId,episodeNumber:m[0].episodeNumber}),S&&u(`/watch/${S.showId}/${S.episodeNumber}`)},[a,u,m,U,o,t.currentEpisode]),Y=M(()=>{oe&&(k.invalidateQueries({queryKey:["continueWatchingFast"]}),k.invalidateQueries({queryKey:["continueWatchingUpNext"]}),k.invalidateQueries({queryKey:["continueWatching"]}),k.invalidateQueries({queryKey:["allContinueWatching"]}),u(`/watch/${o}/${oe}`)),T({type:"SET_STATE",payload:{showResumeModal:!1}})},[oe,u,o,T,k]),We=M(()=>{m.length>0?$e():oe?Y():ze.error("No next episode available")},[m.length,$e,Y,oe]),nt=()=>{le&&u(`/watch/${o}/${le}`)};B(()=>{const n=s.videoRef.current;if(!n)return;const i=()=>{Te()};return n.addEventListener("ended",i),()=>{n&&n.removeEventListener("ended",i)}},[Te,s.videoRef,l.state.isFullscreen]),B(()=>{const n=i=>{i.origin===window.location.origin&&t.selectedSource?.type==="iframe"&&i.data?.type==="ANI_WEB_MEDIA_ENDED"&&Te()};return window.addEventListener("message",n),()=>window.removeEventListener("message",n)},[Te,t.selectedSource?.type]),B(()=>{if(!te||L===null)return;if(L<=0){const{nextItem:i,playedItem:S}=te;ce(null),W(null),S&&U.mutate({showId:S.showId,episodeNumber:S.episodeNumber}),i&&u(`/watch/${i.showId}/${i.episodeNumber}`);return}const n=window.setTimeout(()=>{W(i=>i===null?null:i-1)},1e3);return()=>window.clearTimeout(n)},[te,L,u,U]),B(()=>{t.showResumeModal&&l.state.isFullscreen&&l.actions.toggleFullscreen()},[t.showResumeModal,l.state.isFullscreen,l.actions]),B(()=>{t.showResumeModal&&s.videoRef.current&&s.videoRef.current.pause()},[t.showResumeModal,s.videoRef]);const{titlePreference:Se}=$t(),we=Pe(()=>{if(!t.showMeta||t.loadingShowData)return"Loading...";const{name:n,names:i}=t.showMeta;return Se==="name"?n||"Loading...":Se==="nativeName"?i?.native||n||"Loading...":Se==="englishName"?i?.english||n||"Loading...":n||"Loading..."},[t.showMeta,Se,t.loadingShowData]);B(()=>{we&&we!=="Loading..."&&t.currentEpisode&&(document.title=`► ${we} #${t.currentEpisode} - ani-web`)},[we,t.currentEpisode]);const Le=M(n=>{const i=s.playerContainerRef.current;if(!i)return;const S=n.type==="touchstart"?800:500;Date.now()-b.current<S||G.current===null&&(G.current=requestAnimationFrame(()=>{!l.state.showControls&&!l.state.useNativeControls&&a.setShowControls(!0),i.style.cursor="default",l.actions.inactivityTimer.current&&clearTimeout(l.actions.inactivityTimer.current);const r=l.state.isScrubbing||l.state.showSettings||l.state.showVolumeSlider||F;l.state.isPlaying&&!r&&(l.actions.inactivityTimer.current=window.setTimeout(()=>{l.state.useNativeControls||a.setShowControls(!1),l.state.isFullscreen&&(i.style.cursor="none")},3e3)),G.current=null}))},[l.state.isPlaying,l.state.isFullscreen,l.state.showControls,l.state.isScrubbing,l.state.showSettings,l.state.showVolumeSlider,l.state.useNativeControls,F,a,l.actions,s.playerContainerRef]);B(()=>{(l.state.isScrubbing||l.state.showSettings||l.state.showVolumeSlider||F)&&(a.setShowControls(!0),l.actions.inactivityTimer.current&&clearTimeout(l.actions.inactivityTimer.current))},[l.state.isScrubbing,l.state.showSettings,l.state.showVolumeSlider,F,a,l.actions]),B(()=>{const n=s.playerContainerRef.current;if(n){n.addEventListener("mousemove",Le);const i=r=>{Le(r)};n.addEventListener("touchstart",i,{passive:!0});const S=()=>{a.setShowControls(!1)};return n.addEventListener("mouseleave",S),()=>{n.removeEventListener("mousemove",Le),n.removeEventListener("touchstart",i),n.removeEventListener("mouseleave",S)}}},[Le,s.playerContainerRef,a]),B(()=>{const n=i=>{if(!i.target.closest('input, textarea, button, select, a, [role="button"], [contenteditable="true"]')&&(["arrowup","arrowdown","arrowleft","arrowright"].includes(i.key.toLowerCase())&&(a.setShowControls(!0),l.actions.inactivityTimer.current&&clearTimeout(l.actions.inactivityTimer.current),l.actions.inactivityTimer.current=window.setTimeout(()=>{a.setShowControls(!1)},1e3)),i.key.toLowerCase()==="n"&&We(),i.key.toLowerCase()==="t")){const r=!ne;je(r),localStorage.setItem("playerTheaterMode",r.toString())}};return document.addEventListener("keydown",n),()=>{document.removeEventListener("keydown",n)}},[a,l.actions.inactivityTimer,We,ne]);const{setIsFullscreen:Ee,setAvailableSubtitles:Ue,setActiveSubtitleTrack:xe}=a;B(()=>{const n=()=>Ee(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",n),()=>document.removeEventListener("fullscreenchange",n)},[Ee]),B(()=>{const n=s.videoRef.current;if(!n)return;const i=()=>{const S=Array.from(n.textTracks).map(r=>({label:r.label,lang:r.language,src:void 0,mode:r.mode}));Ue(S)};return n.textTracks.addEventListener("addtrack",i),n.textTracks.addEventListener("removetrack",i),i(),()=>{n&&(n.textTracks.removeEventListener("addtrack",i),n.textTracks.removeEventListener("removetrack",i))}},[s.videoRef,Ue]),B(()=>{if(l.state.activeSubtitleTrack===null&&l.state.availableSubtitles.length>0){const i=l.state.availableSubtitles.find(r=>r.lang==="en"||r.label==="English")||l.state.availableSubtitles[0];xe(i.lang||i.label);const S=s.videoRef.current;S&&Array.from(S.textTracks).forEach(r=>{r.mode=r.language===i.lang||r.label===i.label?"showing":"hidden"})}},[l.state.activeSubtitleTrack,l.state.availableSubtitles,xe,s.videoRef]),B(()=>{const n="dynamic-subtitle-styles";let i=document.getElementById(n);i||(i=document.createElement("style"),i.id=n,document.head.appendChild(i));const S=`${l.state.subtitleFontSize}rem`;i.textContent=`
|
|
3
|
+
video::cue {
|
|
4
|
+
font-size: ${S} !important;
|
|
5
|
+
background-color: rgba(0, 0, 0, 0.5) !important;
|
|
6
|
+
color: white !important;
|
|
7
|
+
text-shadow: 0 0 4px black;
|
|
8
|
+
}
|
|
9
|
+
`;const r=s.videoRef.current;if(!r)return;const g=()=>{const w=Array.from(r.textTracks).find(A=>A.mode==="showing");w&&w.cues&&Array.from(w.cues).forEach(A=>{try{const de=A;de.snapToLines=!1;const he=Math.max(0,Math.min(100,100-l.state.subtitlePosition));de.line=he}catch{}})};g();const E=()=>{g()},I=Array.from(r.textTracks).find(w=>w.mode==="showing");return I&&I.addEventListener("cuechange",E),()=>{I&&I.removeEventListener("cuechange",E);const w=document.getElementById(n);w&&w.remove()}},[l.state.subtitleFontSize,l.state.subtitlePosition,l.state.activeSubtitleTrack,s.videoRef]);const q=()=>{s.videoRef.current&&(s.videoRef.current.currentTime=t.resumeTime,s.videoRef.current.play()),T({type:"SET_STATE",payload:{showResumeModal:!1}})},ot=()=>{s.videoRef.current&&(s.videoRef.current.currentTime=0,s.videoRef.current.play()),T({type:"SET_STATE",payload:{showResumeModal:!1}})},Ae=(n,i)=>e("div",{className:n,children:[e("button",{className:`${p.episodeNavBtn} ${p.secondary}`,onClick:nt,disabled:!le,type:"button",children:[e(pt,{size:12}),"Prev EP"]}),e("button",{className:`${p.episodeNavBtn} ${p.primary}`,onClick:Y,disabled:!oe,type:"button",children:["Next EP",e(Wt,{size:12})]}),i==="mobile"&&O&&e("button",{className:`${p.episodeNavBtn} ${p.episodePickerBtn}`,onClick:()=>se(!0),type:"button",children:[e(Ut,{size:12}),"Episodes"]})]}),Ne=(()=>{const n=t.episodes.findIndex(i=>i===t.currentEpisode);return n>-1&&n<t.episodes.length-1})(),Be=t.episodes.length>0&&!!t.currentEpisode&&t.episodes[t.episodes.length-1]===t.currentEpisode,qe=(t.showMeta.status||"").trim().toLowerCase(),Re=["finished","completed","complete","ended"].some(n=>qe.includes(n)),De=t.inWatchlist&&t.watchlistStatus==="Watching"&&Be&&Re&&K,Oe=t.resumeTime>0&&t.resumeDuration>0&&t.resumeTime>=t.resumeDuration*.8,He=n=>{T({type:"SET_STATE",payload:{isAutoplayEnabled:n}}),localStorage.setItem("autoplayEnabled",n.toString())},Ve=!!(t.currentEpisode&&t.watchedEpisodes.includes(t.currentEpisode)),Je=t.selectedProvider!=="allanime",Me=Pe(()=>{if(!(!o||!ve))return m.find(n=>n.showId===o&&n.episodeNumber===ve.episodeNumber)},[m,o,ve]),Ge=async()=>{if(!o||!t.showMeta?.name)return;const n=ve||await mt(o);if(Me){U.mutate({showId:o,episodeNumber:Me.episodeNumber});return}ie(!0),C.mutate({showId:o,episodeNumber:n.episodeNumber,showName:t.showMeta.name||t.showMeta.names?.romaji,showThumbnail:t.showMeta.thumbnail,nativeName:t.showMeta.names?.native,englishName:t.showMeta.names?.english,type:t.showMeta.type}),window.setTimeout(()=>ie(!1),1e3)};B(()=>{const n=s.videoRef.current;if(R(!1),j(!1),!n||t.selectedSource?.type==="iframe")return;const i=()=>{const S=n.duration,r=n.currentTime;if(!S||Number.isNaN(S)){R(!1),j(!1);return}const g=r/S;R(Ne&&g>=.8),j(r>=Math.max(S*.98,S-10))};return i(),n.addEventListener("timeupdate",i),n.addEventListener("loadedmetadata",i),()=>{n.removeEventListener("timeupdate",i),n.removeEventListener("loadedmetadata",i)}},[s.videoRef,Ne,t.currentEpisode,t.selectedSource]);const Xe=M(async()=>{if(!o||!t.currentEpisode||!t.showMeta.name||J)return;const n=s.videoRef.current?.duration,i=Math.max(n||0,t.resumeDuration||0,(t.showMeta.lengthMin||0)*60,1);await P(t.currentEpisode,i)},[o,t.currentEpisode,t.showMeta,t.resumeDuration,P,J,s.videoRef]);if(t.error)return e("p",{className:"error-message",children:["Error: ",t.error]});if(!t.loadingShowData&&!t.showMeta.name&&!t.showCookieModal)return e("p",{children:"Show not found."});const _e=t.loadingShowData||t.loadingVideo,Ye=n=>{ne&&n.target===n.currentTarget&&(je(!1),localStorage.setItem("playerTheaterMode","false"))};return e("div",{className:`${ke.playerPageLayout} ${ne?ke.theaterMode:""}`,onClick:Ye,children:[e(ir,{show:t.showResumeModal,resumeTime:l.actions.formatTime(t.resumeTime),onResume:q,onStartOver:ot,onNextEpisode:Y,hasNextEpisode:Ne,isCompleted:Oe}),e(Lt,{isOpen:!!t.showCookieModal,onClose:()=>T({type:"SET_STATE",payload:{showCookieModal:!1}}),onSuccess:()=>{k.invalidateQueries({queryKey:["video-sources",o,t.currentEpisode,t.selectedProvider,t.currentMode]})}}),!ne&&e("aside",{className:ke.episodeSidebar,children:t.loadingShowData?e("div",{style:{padding:"2rem",textAlign:"center",color:"var(--text-muted)"},children:"Loading Episodes..."}):e(ft,{episodes:t.episodes,currentEpisode:t.currentEpisode,watchedEpisodes:t.watchedEpisodes,onEpisodeClick:n=>u(`/watch/${o}/${n}`)})}),e("div",{className:ke.playerMain,children:[e("div",{ref:s.playerContainerRef,className:`${p.videoContainer} ${l.state.isFullscreen?"":ke.videoPlayerWrapper} ${l.state.isFullscreen?p.fullscreenActive:""}`,onClick:Fe,style:{...t.showResumeModal?{visibility:"hidden"}:{}},children:[ue&&e("div",{className:`${p.skipIndicatorContainer} ${ue.side==="left"?p.leftSkip:p.rightSkip} `,children:e("div",{className:p.skipBubble,children:[e("div",{className:p.skipIcon,children:ue.side==="left"?e(xt,{}):e(dt,{})}),e("div",{className:p.skipText,children:"15s"})]})}),l.state.isSpeedBoostActive&&e("div",{className:p.speedBoostBadge,"aria-hidden":"true",children:[e("span",{children:"2x"}),e(dt,{size:12})]}),_e&&e("div",{className:p.loadingOverlay,children:e("div",{className:p.loadingDots,children:[e("div",{className:p.dot}),e("div",{className:p.dot}),e("div",{className:p.dot})]})}),l.state.isBuffering&&!_e&&t.selectedSource?.type!=="iframe"&&e("div",{className:p.bufferingOverlay,children:e("div",{className:p.bufferingSpinner})}),t.selectedSource?.type==="iframe"?!_e&&e("iframe",{src:t.selectedLink?.link,className:p.videoIframe,allow:"autoplay; fullscreen; picture-in-picture",allowFullScreen:!0,sandbox:t.selectedSource.sandbox?`${t.selectedSource.sandbox} allow-fullscreen allow-popups allow-popups-to-escape-sandbox`:void 0}):e(st,{children:[!_e&&t.videoSources.length===0&&e("div",{className:p.errorOverlay,children:[e("p",{children:["No sources found for this episode with ",t.selectedProvider,"."]}),e("p",{className:p.errorSubtext,children:"Please try selecting a different provider below."}),e("button",{className:p.retryButton,onClick:()=>window.location.reload(),"data-speed-boost-ignore":"true",children:"Retry"})]}),!_e&&t.videoSources.length>0&&!l.state.useNativeControls&&e(Xr,{player:l,isAutoplayEnabled:t.isAutoplayEnabled,onAutoplayChange:He,showNextEpisodeButton:!t.showResumeModal&&_&&m.length===0,onNextEpisode:Y,videoSources:t.videoSources,selectedSource:t.selectedSource,selectedLink:t.selectedLink,onSourceChange:(n,i)=>{s.videoRef.current&&!isNaN(s.videoRef.current.currentTime)&&(Q.current=s.videoRef.current.currentTime),H(n.sourceName),T({type:"SET_STATE",payload:{selectedSource:n,selectedLink:i,showResumeModal:t.showResumeModal&&n.type!=="iframe"}})},loadingVideo:t.loadingVideo,skipIntervals:t.skipIntervals,animeTitle:we,episodeNumber:t.currentEpisode,isTheaterMode:ne,onTheaterModeToggle:()=>{const n=!ne;je(n),localStorage.setItem("playerTheaterMode",n.toString())}})," ",!_e&&t.videoSources.length>0&&e("video",{ref:s.videoRef,controls:l.state.useNativeControls,onPlay:a.onPlay,onPause:a.onPause,onLoadedMetadata:a.onLoadedMetadata,onTimeUpdate:()=>{a.onTimeUpdate(),te&&s.videoRef.current&&s.videoRef.current.currentTime<s.videoRef.current.duration-1&&(ce(null),W(null))},onProgress:a.onProgress,onVolumeChange:a.onVolumeChange,onWaiting:a.onWaiting,onPlaying:a.onPlaying})]}),L!==null&&te?.nextItem&&e("div",{className:p.queueCountdown,children:["Queue next in ",L,"s"]})]}),!ne&&e(rs,{}),!ne&&e(st,{children:[e(Gt,{title:"Queue",items:m,currentShowId:o,currentEpisode:t.currentEpisode,onNextQueue:$e,onRemove:n=>U.mutate({showId:n.showId,episodeNumber:n.episodeNumber}),onClear:()=>pe.mutate(),showClearAll:!0,onReorder:n=>fe.mutate(n.map(i=>({id:i.id,showId:i.showId,episodeNumber:i.episodeNumber})))}),e("div",{className:p.providerAndEpisodeRow,children:[e(js,{selectedProvider:t.selectedProvider,onProviderChange:n=>{T({type:"SET_STATE",payload:{selectedProvider:n,videoSources:[],selectedSource:null,selectedLink:null,loadingVideo:!0}}),localStorage.setItem("preferredProvider",n)}}),Ae(`${p.episodeActions} ${p.desktopEpisodeActions}`,"desktop")]}),_e?e("div",{className:p.sourceLoader,children:e("div",{className:p.spinner})}):e(st,{children:e(Ls,{videoSources:t.videoSources,selectedSource:t.selectedSource,onSourceChange:n=>{s.videoRef.current&&!isNaN(s.videoRef.current.currentTime)&&(Q.current=s.videoRef.current.currentTime);const S=(n.links||[]).sort((r,g)=>(parseInt(g.resolutionStr)||0)-(parseInt(r.resolutionStr)||0))[0]||null;H(n.sourceName),T({type:"SET_STATE",payload:{selectedSource:n,selectedLink:S,showResumeModal:t.showResumeModal&&n.type!=="iframe"}})}})}),e("div",{className:ke.playerInfoContainer,children:[e("div",{className:ke.playerInfoHeader,children:[e("div",{className:ke.playerAnimeCard,children:e("img",{src:At(t.showMeta.thumbnail||""),alt:we,onError:n=>{n.target.src="/placeholder.svg"}})}),e("div",{className:ke.videoTitleSection,children:[e("div",{className:p.titleContainer,children:[e("h1",{children:we}),e("div",{className:p.scheduleInfo,children:[t.showMeta.status&&e("span",{className:p.status,children:t.showMeta.status}),t.showMeta.nextEpisodeAirDate&&e("span",{className:p.nextEpisode,children:["Next episode: ",t.showMeta.nextEpisodeAirDate]})]})]}),e("div",{className:p.controls,children:[e("button",{className:`${p.watchlistBtn} ${t.inWatchlist?p.inList:""}`,onClick:N,children:[t.inWatchlist?e(Ze,{size:14}):e(ut,{size:14}),t.inWatchlist?"In Watchlist":"Add to Watchlist"]}),e("button",{className:`${p.watchlistBtn} ${p.queueBtn} ${Me||X?p.queueActive:""}`,onClick:Ge,children:[Me||X?e(Ze,{size:14}):e(ut,{size:14}),Me||X?"Queued":"Queue"]}),Je&&e("button",{className:`${p.watchlistBtn} ${p.markWatchedBtn} ${Ve?p.markWatchedDone:""}`,onClick:Xe,disabled:J||!t.currentEpisode,children:[e(Ze,{size:14}),J?"Saving...":Ve?"Watched":"Mark Watched"]}),De&&e("button",{className:`${p.watchlistBtn} ${p.completeSeriesBtn}`,onClick:c,disabled:V,children:[e(Ze,{size:14}),V?"Saving...":"Move to Completed"]}),e("button",{className:`${p.watchlistBtn} ${p.modeToggleBtn} ${t.currentMode==="dub"?p.modeToggleActive:""}`,onClick:()=>{const n=t.currentMode==="dub"?"sub":"dub";T({type:"SET_MODE",payload:n}),localStorage.setItem("preferredMode",n)},type:"button","aria-pressed":t.currentMode==="dub",children:t.currentMode==="dub"?"DUB":"SUB"}),e("button",{className:`${p.watchlistBtn} ${p.modeToggleBtn} ${l.state.useNativeControls?p.modeToggleActive:""}`,onClick:()=>{const n=!l.state.useNativeControls;l.actions.setUseNativeControls(n),localStorage.setItem("playerUseNativeControls",n.toString())},type:"button",children:l.state.useNativeControls?"NATIVE: ON":"NATIVE: OFF"})]})]})]}),Ae(`${p.episodeActions} ${p.mobileEpisodeActions}`,"mobile"),e("div",{className:p.descriptionSection,children:[e("h3",{children:"Synopsis"}),e(Xt,{text:t.showMeta.description?t.showMeta.description.replace(/<[^>]*>?/gm,""):"",emptyText:"No description available."})]}),e("button",{className:p.detailsToggleBtn,onClick:D,children:[t.showCombinedDetails?e(Dt,{}):e(Ft,{}),t.showCombinedDetails?"Hide Details":"Show Details"]}),t.showCombinedDetails&&e(Yt,{showMeta:t.showMeta,styles:p})]})]})]}),e(Ns,{isOpen:F,onClose:()=>se(!1),episodes:t.episodes,currentEpisode:t.currentEpisode,watchedEpisodes:t.watchedEpisodes,onEpisodeClick:n=>{se(!1),u(`/watch/${o}/${n}`)}})]})};export{Js as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as S,d as j,u as e}from"./vendor-Bc4EraM_.js";import{F as z,a7 as r}from"./index-Ciivz6fh.js";const P="_settingsPanel_ijpuc_1",V="_header_ijpuc_30",$="_backBtn_ijpuc_50",F="_contentWrapper_ijpuc_70",G="_menuContent_ijpuc_76",w="_menuItem_ijpuc_82",x="_selected_ijpuc_104",B="_currentValue_ijpuc_109",T="_sliderGroup_ijpuc_115",t={settingsPanel:P,header:V,backBtn:$,contentWrapper:F,menuContent:G,menuItem:w,selected:x,currentValue:B,sliderGroup:T},W=(_,C)=>{const{isOpen:o,onClose:L,videoSources:O,currentSource:d,currentLink:c,onSourceChange:g,subtitles:b,activeSubtitleTrack:i,onSubtitleChange:p,subtitleSettings:u,onSubtitleSettingsChange:h,useNativeControls:m,onNativeControlsToggle:f}=_,[l,a]=j("main");S.useEffect(()=>{if(!o){const n=setTimeout(()=>a("main"),300);return()=>clearTimeout(n)}},[o]);const N=()=>e("div",{className:t.menuContent,children:[e("button",{className:t.menuItem,onClick:()=>a("quality"),children:[e("span",{children:"Quality"}),e("span",{className:t.currentValue,children:c?.resolutionStr||"Auto"})]}),e("button",{className:t.menuItem,onClick:()=>a("subtitles"),children:[e("span",{children:"Subtitles"}),e("span",{className:t.currentValue,children:i||"Off"})]}),e("button",{className:t.menuItem,onClick:()=>a("subtitle-style"),children:e("span",{children:"Subtitle Style"})}),e("button",{className:`${t.menuItem} ${m?t.selected:""}`,onClick:()=>{const n=!m;f(n),localStorage.setItem("playerUseNativeControls",n.toString())},children:[e("span",{children:"Native Controls"}),m&&e(r,{size:12})]})]}),v=()=>{const n=d?.links.sort((s,y)=>(parseInt(y.resolutionStr)||0)-(parseInt(s.resolutionStr)||0))||[];return e("div",{className:t.menuContent,children:n.map(s=>e("button",{className:`${t.menuItem} ${c?.resolutionStr===s.resolutionStr?t.selected:""} `,onClick:()=>g(d,s),children:[e("span",{children:s.resolutionStr}),c?.resolutionStr===s.resolutionStr&&e(r,{size:12})]},s.resolutionStr))})},I=()=>e("div",{className:t.menuContent,children:[e("button",{className:`${t.menuItem} ${i==="off"?t.selected:""} `,onClick:()=>p("off"),children:[e("span",{children:"Off"}),i==="off"&&e(r,{size:12})]}),b.map(n=>e("button",{className:`${t.menuItem} ${i===(n.label||n.lang)?t.selected:""} `,onClick:()=>p(n.label||n.lang),children:[e("span",{children:n.label}),i===(n.label||n.lang)&&e(r,{size:12})]},n.label))]}),k=()=>e("div",{className:t.menuContent,children:[e("div",{className:t.sliderGroup,children:[e("label",{children:["Font Size (",u.fontSize.toFixed(1),")"]}),e("input",{type:"range",min:"0.5",max:"10",step:"0.5",value:u.fontSize,onInput:n=>h("fontSize",parseFloat(n.target.value))})]}),e("div",{className:t.sliderGroup,children:[e("label",{children:"Vertical Position (Lift)"}),e("input",{type:"range",min:"0",max:"50",step:"1",value:u.position,onInput:n=>h("position",parseInt(n.target.value))})]})]});return o?e("div",{ref:C,className:t.settingsPanel,onClick:n=>n.stopPropagation(),children:[e("div",{className:t.header,children:[l!=="main"&&e("button",{className:t.backBtn,onClick:()=>a("main"),children:e(z,{})}),e("h3",{children:l==="main"?"Settings":l.charAt(0).toUpperCase()+l.slice(1).replace("-"," ")})]}),e("div",{className:t.contentWrapper,children:[l==="main"&&N(),l==="quality"&&v(),l==="subtitles"&&I(),l==="subtitle-style"&&k()]})]}):null},Q=S.forwardRef(W);export{Q as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._settingsPanel_ijpuc_1{position:absolute;bottom:100px;right:24px;width:320px;background:var(--glass-bg);backdrop-filter:blur(25px);-webkit-backdrop-filter:blur(25px);border:1px solid var(--glass-border);border-radius:var(--radius-xl);overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--glass-shadow);z-index:60;animation:_slideUp_ijpuc_1 .3s var(--ease-smooth)}@keyframes _slideUp_ijpuc_1{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}._header_ijpuc_30{display:flex;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid var(--glass-border);position:relative;height:60px}._header_ijpuc_30 h3{margin:0;font-size:.85rem;font-weight:800;flex-grow:1;text-align:center;text-transform:uppercase;letter-spacing:.1em;color:var(--text-tertiary)}._backBtn_ijpuc_50{background:transparent;border:none;color:#fff;cursor:pointer;position:absolute;left:1rem;padding:8px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast)}._backBtn_ijpuc_50:hover{background:#ffffff1a;transform:translate(-2px)}._contentWrapper_ijpuc_70{max-height:400px;overflow-y:auto;-webkit-overflow-scrolling:touch}._menuContent_ijpuc_76{display:flex;flex-direction:column;padding:.75rem}._menuItem_ijpuc_82{background:transparent;border:none;color:var(--text-secondary);padding:.85rem 1rem;text-align:left;display:flex;justify-content:space-between;align-items:center;cursor:pointer;font-size:.95rem;font-weight:600;border-radius:var(--radius-lg);transition:all var(--transition-fast)}._menuItem_ijpuc_82:hover{background:#ffffff0d;color:var(--text-primary);transform:translate(4px)}._menuItem_ijpuc_82._selected_ijpuc_104{color:var(--accent-light);background:#8b5cf61a}._currentValue_ijpuc_109{color:var(--text-tertiary);font-size:.8rem;font-weight:500}._sliderGroup_ijpuc_115{padding:1.25rem;display:flex;flex-direction:column;gap:1rem}._sliderGroup_ijpuc_115 label{font-size:.75rem;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}._sliderGroup_ijpuc_115 input[type=range]{width:100%;cursor:pointer;accent-color:var(--accent);height:4px;border-radius:2px;background:#ffffff1a;appearance:none}._contentWrapper_ijpuc_70::-webkit-scrollbar{width:4px}._contentWrapper_ijpuc_70::-webkit-scrollbar-thumb{background:var(--glass-border);border-radius:2px}@media(max-width:768px){._settingsPanel_ijpuc_1{right:12px;bottom:80px;width:calc(100vw - 24px);max-width:220px;border-radius:var(--radius-md)}._header_ijpuc_30{height:40px;padding:.4rem .6rem}._header_ijpuc_30 h3{font-size:.65rem}._backBtn_ijpuc_50{left:.4rem;padding:3px}._menuItem_ijpuc_82{padding:.45rem .65rem;font-size:.7rem}._currentValue_ijpuc_109{font-size:.65rem}._contentWrapper_ijpuc_70{max-height:250px}._sliderGroup_ijpuc_115{padding:.5rem .65rem;gap:.25rem}._sliderGroup_ijpuc_115 label{font-size:.6rem;letter-spacing:.02em}._sliderGroup_ijpuc_115 input[type=range]{height:3px}}@media(max-width:480px){._settingsPanel_ijpuc_1{max-width:180px;right:5px;bottom:55px}._menuItem_ijpuc_82{padding:.35rem .5rem}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as l,u as t,f as M}from"./vendor-Bc4EraM_.js";import{b as H,c as X,e as Y,aa as L,f as O,a1 as j}from"./index-Ciivz6fh.js";const z="_section_kq5rv_1",G="_header_kq5rv_10",J="_headerToggle_kq5rv_20",K="_headerActions_kq5rv_34",V="_title_kq5rv_40",W="_badge_kq5rv_50",Z="_clearBtn_kq5rv_65",ee="_nextBtn_kq5rv_83",ne="_list_kq5rv_101",te="_item_kq5rv_114",re="_active_kq5rv_134",ae="_dragging_kq5rv_140",oe="_dragHandle_kq5rv_147",ce="_thumbnail_kq5rv_165",se="_meta_kq5rv_173",le="_name_kq5rv_180",ie="_episode_kq5rv_202",ue="_iconBtn_kq5rv_208",r={section:z,header:G,headerToggle:J,headerActions:K,title:V,badge:W,clearBtn:Z,nextBtn:ee,list:ne,item:te,active:re,dragging:ae,dragHandle:oe,thumbnail:ce,meta:se,name:le,episode:ie,iconBtn:ue},de=({item:a,isActive:N,index:v,onRemove:D,onTouchPointerDown:P,onTouchPointerMove:T,onTouchPointerUp:k,onTouchPointerCancel:q,shouldIgnoreClick:w,onDragStart:_,onDragEnter:s,onDragEnd:f,isDragging:o})=>{const i=M(),{titlePreference:u}=Y(),d=a[u]||a.name||"Unknown show";return t("div",{"data-queue-index":v,className:`${r.item} ${N?r.active:""} ${o?r.dragging:""}`,draggable:!0,onDragStart:_,onDragEnter:s,onDragOver:c=>c.preventDefault(),onDragEnd:f,onPointerDown:c=>P(v,c),onPointerMove:T,onPointerUp:k,onPointerCancel:q,children:[t("button",{className:r.dragHandle,type:"button","aria-label":"Drag queue item",children:t(L,{})}),t("img",{className:r.thumbnail,src:O(a.thumbnail||"",72,96),alt:d,onError:c=>{c.currentTarget.src="/placeholder.svg"}}),t("div",{className:r.meta,children:[t("button",{className:r.name,type:"button",onClick:()=>{w()||i(`/watch/${a.showId}/${a.episodeNumber}`)},children:d}),t("div",{className:r.episode,children:["Episode ",a.episodeNumber]})]}),t("button",{className:r.iconBtn,type:"button",onClick:()=>{w()||D(a)},"aria-label":`Remove ${d} episode ${a.episodeNumber} from queue`,children:t(j,{})})]})},me=({title:a="Queue",items:N,currentShowId:v,currentEpisode:D,onRemove:P,onReorder:T,onNextQueue:k,onClear:q,showClearAll:w=!1,defaultExpanded:_=!0})=>{const[s,f]=l.useState([]),[o,i]=l.useState(null),[u,d]=l.useState(_),c=l.useRef(null),b=l.useRef(null),h=l.useRef(null),g=l.useRef(!1),y=l.useRef(!1);l.useEffect(()=>{f(N)},[N]),l.useEffect(()=>{d(_)},[_]);const C=e=>{i(e)},x=e=>{if(o===null||o===e)return;const n=[...s],m=n[o];n.splice(o,1),n.splice(e,0,m),i(e),f(n)},R=()=>{o!==null&&T(s.map(e=>({id:e.id,showId:e.showId,episodeNumber:e.episodeNumber}))),i(null)},B=(e=!1)=>{h.current!==null&&(window.clearTimeout(h.current),h.current=null),e&&g.current&&(T(s.map(n=>({id:n.id,showId:n.showId,episodeNumber:n.episodeNumber}))),y.current=!0,window.setTimeout(()=>{y.current=!1},0)),c.current=null,b.current=null,g.current=!1,i(null)},E=(e,n)=>{if(n.pointerType==="mouse")return;const m=n.currentTarget,p=n.pointerId;c.current=n.pointerId,b.current={x:n.clientX,y:n.clientY},h.current!==null&&window.clearTimeout(h.current),h.current=window.setTimeout(()=>{g.current=!0,i(e);try{m.setPointerCapture(p)}catch{}},220)},$=e=>{if(e.pointerType==="mouse"||c.current!==e.pointerId)return;if(!g.current&&b.current){const U=Math.abs(e.clientX-b.current.x),F=Math.abs(e.clientY-b.current.y);(U>8||F>8)&&B(!1);return}if(!g.current)return;e.preventDefault();const m=document.elementFromPoint(e.clientX,e.clientY)?.closest?.("[data-queue-index]"),p=m?Number(m.dataset.queueIndex):NaN;if(Number.isNaN(p)||o===null||p===o)return;const I=[...s],S=I[o];I.splice(o,1),I.splice(p,0,S),i(p),f(I)},A=e=>{e.pointerType!=="mouse"&&c.current===e.pointerId&&B(g.current)},Q=e=>{e.pointerType!=="mouse"&&c.current===e.pointerId&&B(!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:()=>d(e=>!e),"aria-expanded":u,"aria-label":u?`Collapse ${a}`:`Expand ${a}`,children:[t("span",{className:r.title,children:[a,t("span",{className:r.badge,children:s.length})]}),u?t(H,{}):t(X,{})]}),w&&q&&t("div",{className:r.headerActions,children:[k&&s.length>1&&t("button",{className:r.nextBtn,type:"button",onClick:k,children:"Next"}),t("button",{className:r.clearBtn,type:"button",onClick:q,children:"Clear All"})]})]}),u&&t("div",{className:r.list,children:s.map((e,n)=>t(de,{item:e,isActive:e.showId===v&&e.episodeNumber===D,index:n,onRemove:P,onTouchPointerDown:E,onTouchPointerMove:$,onTouchPointerUp:A,onTouchPointerCancel:Q,shouldIgnoreClick:()=>y.current,onDragStart:()=>C(n),onDragEnter:()=>x(n),onDragEnd:R,isDragging:o===n},e.id))})]})};export{me as Q};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._section_kq5rv_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_kq5rv_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,rgba(255,255,255,.02),transparent);border-bottom:1px solid var(--border-primary)}._headerToggle_kq5rv_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_kq5rv_34{display:flex;align-items:center;gap:var(--space-3)}._title_kq5rv_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_kq5rv_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(--bg-elevated);color:var(--text-primary);font-size:.7rem;font-weight:900;border:1px solid var(--border-primary)}._clearBtn_kq5rv_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_kq5rv_65:hover{background:var(--bg-elevated);color:var(--color-danger);border-color:#ef44444d}._nextBtn_kq5rv_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_kq5rv_83:hover{background:var(--bg-elevated);color:var(--text-primary);transform:translateY(-1px)}._list_kq5rv_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_kq5rv_101::-webkit-scrollbar{display:none}._item_kq5rv_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_kq5rv_114:hover{background:var(--bg-elevated);border-color:var(--border-secondary);transform:translateY(-2px)}._item_kq5rv_114._active_kq5rv_134{border-color:var(--text-secondary);background:var(--bg-elevated);box-shadow:inset 0 0 0 1px var(--border-secondary)}._item_kq5rv_114._dragging_kq5rv_140{opacity:.5;background:var(--bg-tertiary);border-style:dashed;transform:scale(.95)}._dragHandle_kq5rv_147{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_kq5rv_114:hover ._dragHandle_kq5rv_147{color:var(--text-secondary)}._thumbnail_kq5rv_165{width:54px;height:72px;object-fit:cover;border-radius:var(--radius-sm);background:var(--bg-tertiary)}._meta_kq5rv_173{min-width:0;display:flex;flex-direction:column;gap:2px}._name_kq5rv_180{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_kq5rv_180:hover{color:var(--text-secondary)}._episode_kq5rv_202{color:var(--text-tertiary);font-size:.75rem;font-weight:600}._iconBtn_kq5rv_208{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_kq5rv_208:hover{color:var(--color-danger);border-color:#ef444466;background:#ef44441a}@media(max-width:768px){._section_kq5rv_1{border-radius:var(--radius-md)}._header_kq5rv_10{padding:var(--space-4) var(--space-5)}._list_kq5rv_101{padding:var(--space-4) var(--space-5);gap:var(--space-3)}._item_kq5rv_114{width:220px;flex-basis:220px;grid-template-columns:24px 50px minmax(0,1fr) 30px}._thumbnail_kq5rv_165{width:50px;height:65px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.modal-overlay{position:fixed;inset:0;background-color:#0009;display:flex;align-items:center;justify-content:center;z-index:9999;padding:var(--space-4);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:fadeIn var(--transition-base) forwards}.modal-content{background-color:var(--bg-secondary);padding:var(--space-6);border-radius:var(--radius-lg);width:100%;box-shadow:var(--shadow-xl);position:relative;border:1px solid var(--border-primary);animation:scaleIn var(--transition-base) forwards}.modal-sm{max-width:400px}.modal-md{max-width:500px}.modal-lg{max-width:700px}.modal-title{margin:0 0 var(--space-4);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--text-primary)}.modal-body{color:var(--text-secondary)}.modal-footer{display:flex;justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--border-primary)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{y,u as e,d as s}from"./vendor-Bc4EraM_.js";import{B as h}from"./Button-lkEUHIDS.js";function g({isOpen:r,onClose:o,title:c,children:l,footer:t,width:a="md"}){return y(()=>{const n=i=>{i.key==="Escape"&&o&&o()};return r&&(document.addEventListener("keydown",n),document.body.style.overflow="hidden"),()=>{document.removeEventListener("keydown",n),document.body.style.overflow=""}},[r,o]),r?e("div",{className:"modal-overlay",onClick:o,children:e("div",{className:`modal-content modal-${a}`,onClick:n=>n.stopPropagation(),children:[c&&e("h2",{className:"modal-title",children:c}),e("div",{className:"modal-body",children:l}),t&&e("div",{className:"modal-footer",children:t})]})}):null}function b({isOpen:r,onClose:o,onConfirm:c,animeName:l,scenario:t}){const[a,n]=s(!1),[i,d]=s(!1);y(()=>{r||(n(!1),d(!1))},[r]);const u=()=>{c({removeFromWatchlist:t==="continueWatching"?i:!0,rememberPreference:t==="watchlist"?a:void 0})},f=t==="continueWatching"?"Reset Progress":"Remove from Watchlist",v=t==="continueWatching"?`Are you sure you want to remove your watch progress for "${l}"?`:`Are you sure you want to remove "${l}" from your watchlist?`;return e(g,{isOpen:r,onClose:o,title:f,children:e("div",{style:{color:"var(--text-secondary)"},children:[e("p",{children:v}),t==="continueWatching"&&e("label",{style:{display:"flex",alignItems:"center",gap:"0.5rem",margin:"1rem 0",cursor:"pointer"},children:[e("input",{type:"checkbox",checked:i,onChange:m=>d(m.target.checked)}),"Also remove from my watchlist"]}),t==="watchlist"&&e("label",{style:{display:"flex",alignItems:"center",gap:"0.5rem",margin:"1rem 0",cursor:"pointer"},children:[e("input",{type:"checkbox",checked:a,onChange:m=>n(m.target.checked)}),"Remember my choice"]}),e("div",{style:{display:"flex",gap:"0.75rem",marginTop:"1.5rem"},children:[e(h,{variant:"secondary",onClick:o,style:{flex:1},children:"No"}),e(h,{variant:"danger",onClick:u,style:{flex:1},children:"Yes"})]})]})})}export{b as R};
|
|
@@ -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{s as ae,d as c,A as ne,g as re,y as le,u as e}from"./vendor-Bc4EraM_.js";import{u as ie,s as ce,ab as j,y as V,A as oe,b as de,c as ue,F as q,a as H,ac as he}from"./index-Ciivz6fh.js";import{E as ge,S as pe,a as me}from"./ErrorMessage-BXKDLzn8.js";import{B as G}from"./Button-lkEUHIDS.js";import{S as _e}from"./SearchableSelect-BzYsMz8B.js";import{T as ve}from"./ToggleSwitch-CrXim14A.js";import"./useAnimeInfoData-Dqthchpa.js";import"./useIsMobile-BviODivc.js";const fe="_header_66r0s_1",be="_fadeIn_66r0s_1",Ae="_pageTitle_66r0s_6",Le="_pageSubtitle_66r0s_14",Se="_filterContainer_66r0s_20",Ne="_slideUpIn_66r0s_1",ye="_searchBarWrapper_66r0s_32",Ie="_inputIconWrapper_66r0s_38",Ce="_searchIcon_66r0s_43",xe="_searchInput_66r0s_53",Be="_searchActions_66r0s_77",Te="_providerSelect_66r0s_82",we="_searchBtn_66r0s_106",Fe="_filterToggleBtn_66r0s_111",Re="_active_66r0s_132",Ge="_advancedFilters_66r0s_139",Pe="_show_66r0s_146",ke="_filterDivider_66r0s_152",Ee="_filterGrid_66r0s_158",Oe="_filterItem_66r0s_165",De="_genreSection_66r0s_206",We="_genreLabel_66r0s_212",ze="_genreContainer_66r0s_222",$e="_genreButton_66r0s_228",Me="_include_66r0s_245",Ue="_exclude_66r0s_251",Ye="_filterActions_66r0s_258",je="_resultsGrid_66r0s_266",Ve="_resultsHeader_66r0s_311",qe="_resultsTitle_66r0s_320",He="_pagination_66r0s_327",Je="_pageBtn_66r0s_337",Ke="_pageInfo_66r0s_366",Qe="_bottomPagination_66r0s_377",Xe="_noResults_66r0s_385",Ze="_noResultsIcon_66r0s_396",s={header:fe,fadeIn:be,pageTitle:Ae,pageSubtitle:Le,filterContainer:Se,slideUpIn:Ne,searchBarWrapper:ye,inputIconWrapper:Ie,searchIcon:Ce,searchInput:xe,searchActions:Be,providerSelect:Te,searchBtn:we,filterToggleBtn:Fe,active:Re,advancedFilters:Ge,show:Pe,filterDivider:ke,filterGrid:Ee,filterItem:Oe,genreSection:De,genreLabel:We,genreContainer:ze,genreButton:$e,include:Me,exclude:Ue,filterActions:Ye,resultsGrid:je,resultsHeader:Ve,resultsTitle:qe,pagination:He,pageBtn:Je,pageInfo:Ke,bottomPagination:Qe,noResults:Xe,noResultsIcon:Ze},et=[{value:"ALL",label:"All Types"},{value:"TV",label:"TV Series"},{value:"Movie",label:"Movie"},{value:"OVA",label:"OVA"},{value:"ONA",label:"ONA"}],tt=[{value:"ALL",label:"All Seasons"},{value:"Winter",label:"Winter"},{value:"Spring",label:"Spring"},{value:"Summer",label:"Summer"},{value:"Fall",label:"Fall"}],st=[{value:"ALL",label:"All Countries"},{value:"JP",label:"Japan"},{value:"CN",label:"China"}];function ut(){const[n,J]=ae(),[u,P]=c(n.get("query")||""),[l,k]=c(parseInt(n.get("page")||"1")),[f,b]=c(n.get("type")||"ALL"),[A,L]=c(n.get("season")||"ALL"),[S,N]=c(n.get("year")||"ALL"),[y,I]=c(n.get("country")||"ALL"),[C,x]=c(n.get("studios")||"ALL"),[h,E]=c(n.get("provider")||"allanime"),[g,K]=c(!1),{lowEndMode:Q}=ie(),B=ne(null),{data:O}=ce(),D=O?.genres||[],X=O?.studios||[],[T,w]=c(()=>{const t={},a=n.get("genres")?.split(",")||[],o=n.get("excludeGenres")?.split(",")||[];return a.forEach(r=>r&&(t[r]="include")),o.forEach(r=>r&&(t[r]="exclude")),t}),W=new URLSearchParams(n);W.delete("page");const z=W.toString(),{data:p=[],isLoading:d,isError:Z,error:ee}=j(z,l,14),{data:$}=j(z,l+1,14),[F,M]=c(!1),m=re.useMemo(()=>F?p:p.filter(t=>!(t.isAdult||t.rating==="R+"||t.rating==="Rx"||t.rating?.includes("17+"))),[p,F]);le(()=>{P(n.get("query")||""),b(n.get("type")||"ALL"),L(n.get("season")||"ALL"),N(n.get("year")||"ALL"),I(n.get("country")||"ALL"),x(n.get("studios")||"ALL"),E(n.get("provider")||"allanime"),k(parseInt(n.get("page")||"1"));const t={},a=n.get("genres")?.split(",")||[],o=n.get("excludeGenres")?.split(",")||[];a.forEach(r=>r&&(t[r]="include")),o.forEach(r=>r&&(t[r]="exclude")),w(t)},[n]);const _=(t=1)=>{he();const a=new URLSearchParams;u.trim()&&a.set("query",u.trim()),f!=="ALL"&&a.set("type",f),A!=="ALL"&&a.set("season",A),S!=="ALL"&&a.set("year",S),y!=="ALL"&&a.set("country",y),C!=="ALL"&&a.set("studios",C),h!=="allanime"&&a.set("provider",h);const o=Object.entries(T).filter(([,i])=>i==="include").map(([i])=>i),r=Object.entries(T).filter(([,i])=>i==="exclude").map(([i])=>i);o.length>0&&a.set("genres",o.join(",")),r.length>0&&a.set("excludeGenres",r.join(",")),t>1&&a.set("page",t.toString()),J(a),t!==l&&k(t)},v=t=>{if(_(t),B.current){const a=B.current.getBoundingClientRect().top+window.scrollY-100;window.scrollTo({top:a,behavior:"smooth"})}},te=t=>{w(a=>{const o=a[t],r=o==="include"?"exclude":o==="exclude"?void 0:"include",i={...a};return r?i[t]=r:delete i[t],i})},R=new Date().getFullYear(),se=[{value:"ALL",label:"All Years"},...Array.from({length:R-1980+1},(t,a)=>({value:String(R-a),label:String(R-a)}))],U=[{value:"ALL",label:"All Studios"},...X.map(t=>({value:t,label:t}))],Y=p.length>=14&&$&&$.length>0;return e("div",{className:"page-container",children:[e("div",{className:s.header,children:[e("h1",{className:s.pageTitle,children:"Search Anime"}),e("p",{className:s.pageSubtitle,children:"Search through thousands of titles and discover your next favorite"})]}),e("div",{className:s.filterContainer,children:[e("div",{className:s.searchBarWrapper,children:[e("div",{className:s.inputIconWrapper,children:[e(V,{className:s.searchIcon}),e("input",{type:"text","data-virtual-keyboard":"true",className:s.searchInput,placeholder:"Search by title, character, or studio...",value:u,onInput:t=>P(t.currentTarget.value),onKeyDown:t=>t.key==="Enter"&&_()})]}),e("div",{className:s.searchActions,children:[e("div",{className:s.filterItem,style:{marginRight:"10px"},children:e("select",{value:h,onChange:t=>E(t.currentTarget.value),className:s.providerSelect,children:[e("option",{value:"allanime",children:"AllAnime"}),e("option",{value:"animepahe",children:"AnimePahe"})]})}),e(G,{onClick:()=>_(),className:s.searchBtn,children:"Search"}),h==="allanime"&&e("button",{className:`${s.filterToggleBtn} ${g?s.active:""}`,onClick:()=>K(!g),children:[e(oe,{size:14}),e("span",{children:"Filters"}),g?e(de,{size:12}):e(ue,{size:12})]})]})]}),h==="allanime"&&e("div",{className:`${s.advancedFilters} ${g?s.show:""}`,children:[e("div",{className:s.filterDivider}),e("div",{className:s.filterGrid,children:[e("div",{className:s.filterItem,children:[e("label",{children:"Type"}),e("select",{value:f,onChange:t=>b(t.currentTarget.value),children:et.map(t=>e("option",{value:t.value,children:t.label},t.value))})]}),e("div",{className:s.filterItem,children:[e("label",{children:"Season"}),e("select",{value:A,onChange:t=>L(t.currentTarget.value),children:tt.map(t=>e("option",{value:t.value,children:t.label},t.value))})]}),e("div",{className:s.filterItem,children:[e("label",{children:"Year"}),e("select",{value:S,onChange:t=>N(t.currentTarget.value),children:se.map(t=>e("option",{value:t.value,children:t.label},t.value))})]}),e("div",{className:s.filterItem,children:[e("label",{children:"Country"}),e("select",{value:y,onChange:t=>I(t.currentTarget.value),children:st.map(t=>e("option",{value:t.value,children:t.label},t.value))})]}),U.length>1&&e("div",{className:s.filterItem,children:[e("label",{children:"Studio"}),e(_e,{options:U,value:C,onChange:x,placeholder:"All Studios"})]}),e("div",{className:s.filterItem,children:[e("label",{children:"Content"}),e("div",{style:{display:"flex",alignItems:"center",height:"40px",gap:"8px"},children:[e(ve,{isChecked:F,onChange:t=>M(t.target.checked),id:"search-mature-toggle"}),e("span",{style:{fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Show mature content"})," "]})]})]}),D.length>0&&e("div",{className:s.genreSection,children:[e("label",{className:s.genreLabel,children:"Genres"}),e("div",{className:s.genreContainer,children:D.map(t=>e("button",{className:`${s.genreButton} ${s[T[t]||""]}`,onClick:()=>te(t),children:t},t))})]}),e("div",{className:s.filterActions,children:[e(G,{variant:"secondary",onClick:()=>{w({}),b("ALL"),L("ALL"),N("ALL"),I("ALL"),x("ALL"),M(!1)},children:"Reset All"}),e(G,{onClick:()=>_(),className:s.applyBtn,children:"Apply Filters"})]})]})]}),Z&&e(ge,{message:ee?.message||"Error"}),e("div",{className:s.resultsHeader,ref:B,children:[e("h2",{className:s.resultsTitle,children:u?`Search Results for "${u}"`:"Discover Anime"}),m.length>0&&e("div",{className:s.pagination,children:[e("button",{className:s.pageBtn,onClick:()=>v(l-1),disabled:l===1||d,children:e(q,{size:14})}),e("span",{className:s.pageInfo,children:["Page ",e("strong",{children:l})]}),e("button",{className:s.pageBtn,onClick:()=>v(l+1),disabled:!Y||d,children:e(H,{size:14})})]})]}),e("div",{className:`${s.resultsGrid} ${Q?s.lowEnd:""}`,children:d?e(pe,{}):m.map(t=>e(me,{anime:t},t._id))}),!d&&m.length===0&&e("div",{className:s.noResults,children:[e(V,{size:48,className:s.noResultsIcon}),e("h3",{children:"No results found"}),e("p",{children:"Try adjusting your search or filters to find what you're looking for."})]}),m.length>0&&e("div",{className:s.bottomPagination,children:e("div",{className:s.pagination,children:[e("button",{className:s.pageBtn,onClick:()=>v(l-1),disabled:l===1||d,children:[e(q,{size:14}),e("span",{children:"Previous"})]}),e("span",{className:s.pageInfo,children:["Page ",e("strong",{children:l})]}),e("button",{className:s.pageBtn,onClick:()=>v(l+1),disabled:!Y||d,children:[e("span",{children:"Next"}),e(H,{size:14})]})]})})]})}export{ut as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._searchableSelect_1e8g9_1{position:relative;width:100%;color:var(--text-primary)}._selectHeader_1e8g9_7{padding:var(--space-3) var(--space-4);border:1px solid var(--border-primary);border-radius:var(--radius-sm);background-color:var(--bg-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;transition:var(--transition-base)}._selectHeader_1e8g9_7:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._dropdown_1e8g9_22{position:absolute;top:100%;left:0;right:0;border:1px solid var(--border-primary);border-top:none;border-radius:0 0 var(--radius-sm) var(--radius-sm);background-color:var(--bg-secondary);z-index:1000;max-height:200px;overflow-y:auto;box-shadow:var(--shadow-lg)}._searchInput_1e8g9_37{width:100%;padding:var(--space-3) var(--space-4);border:none;border-bottom:1px solid var(--border-primary);background-color:var(--bg-secondary);color:var(--text-primary);font-size:var(--font-size-sm)}._optionsList_1e8g9_47{list-style:none;margin:0;padding:0}._option_1e8g9_47{padding:var(--space-3) var(--space-4);cursor:pointer;transition:var(--transition-fast);font-size:var(--font-size-sm)}._option_1e8g9_47:hover{background-color:var(--bg-tertiary);color:var(--accent-light)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d,A as v,y as S,u as t}from"./vendor-Bc4EraM_.js";const g="_searchableSelect_1e8g9_1",w="_selectHeader_1e8g9_7",b="_dropdown_1e8g9_22",L="_searchInput_1e8g9_37",C="_optionsList_1e8g9_47",N="_option_1e8g9_47",s={searchableSelect:g,selectHeader:w,dropdown:b,searchInput:L,optionsList:C,option:N},O=({options:a,value:p,onChange:u,placeholder:h})=>{const[l,c]=d(!1),[o,r]=d(""),n=v(null),i=a.find(e=>e.value===p);S(()=>{function e(f){n.current&&!n.current.contains(f.target)&&c(!1)}return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[n]);const _=a.filter(e=>e.label.toLowerCase().includes(o.toLowerCase())),m=e=>{u(e),c(!1),r("")};return t("div",{className:s.searchableSelect,ref:n,children:[t("div",{className:s.selectHeader,onClick:()=>c(!l),children:i?i.label:h||"Select..."}),l&&t("div",{className:s.dropdown,children:[t("input",{type:"text",placeholder:"Search...",className:s.searchInput,value:o,onChange:e=>r(e.target.value)}),t("ul",{className:s.optionsList,children:_.map(e=>t("li",{className:s.option,onClick:()=>m(e.value),children:e.label},e.value))})]})]})};export{O as S};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._title-preference-container_ql0po_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_ql0po_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_ql0po_17{color:var(--danger)}._toggle-button_ql0po_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:#fff;font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);transition:var(--transition-base);box-shadow:var(--shadow-md)}._toggle-button_ql0po_21:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-lg);filter:brightness(1.1)}._toggle-button_ql0po_21:disabled{opacity:.7;cursor:not-allowed}._toggle-label_ql0po_51{position:absolute;white-space:nowrap;transition:var(--transition-base)}._settingsHeader_14vlm_1{margin-bottom:var(--space-8);animation:_fadeIn_14vlm_1 .8s var(--ease-smooth)}._pageTitle_14vlm_6{font-size:var(--font-size-xl);font-weight:800;color:var(--text-primary);margin:0 0 var(--space-2);letter-spacing:-.02em}._pageSubtitle_14vlm_14{color:var(--text-tertiary);font-size:var(--font-size-sm);margin:0}._settingsLayout_14vlm_20{display:flex;gap:var(--space-8);align-items:flex-start;animation:_slideUpIn_14vlm_1 .8s var(--ease-smooth)}._sidebar_14vlm_27{width:240px;display:flex;flex-direction:column;gap:var(--space-2);position:sticky;top:var(--space-8)}._sidebarItem_14vlm_36{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:all var(--transition-fast);text-align:left}._sidebarItem_14vlm_36:hover{background:#ffffff0d;color:var(--text-primary)}._sidebarItem_14vlm_36._active_14vlm_57{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 4px 15px var(--accent-glow)}._sidebarItem_14vlm_36 svg{font-size:1.1rem}._mainContent_14vlm_68{flex:1;min-width:0}._tabContent_14vlm_73{display:flex;flex-direction:column;gap:var(--space-6);animation:_fadeIn_14vlm_1 .4s var(--ease-smooth)}._sectionCard_14vlm_80{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_14vlm_80 h3{margin:0 0 var(--space-2);font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary)}._sectionCard_14vlm_80 p{color:var(--text-secondary);font-size:var(--font-size-sm);margin:0 0 var(--space-6);line-height:1.6}._settingItem_14vlm_104{border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._settingRow_14vlm_109{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4)}._settingRow_14vlm_109 label{font-size:var(--font-size-base);color:var(--text-secondary);font-weight:500}._controls_14vlm_122{display:flex;gap:var(--space-4);flex-wrap:wrap}._status_14vlm_128{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_14vlm_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUpIn_14vlm_1{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media(max-width:900px){._settingsLayout_14vlm_20{flex-direction:column}._sidebar_14vlm_27{width:100%;flex-direction:row;overflow-x:auto;padding-bottom:var(--space-2);position:static}._sidebarItem_14vlm_36{padding:var(--space-3) var(--space-4);white-space:nowrap;flex-shrink:0}._sidebarItem_14vlm_36 span{display:block}}@media(max-width:480px){._sidebarItem_14vlm_36 span{display:none}._sidebarItem_14vlm_36{padding:var(--space-4);justify-content:center}._sectionCard_14vlm_80{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_tv3nd_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_tv3nd_1 h3{margin:0 0 var(--space-2);font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary)}._sectionCard_tv3nd_1 p{color:var(--text-secondary);font-size:var(--font-size-sm);margin:0 0 var(--space-6);line-height:1.6}._settingItem_tv3nd_26{border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._settingRow_tv3nd_31{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as r,A as W,y as D,u as e,S as X,q as K,s as Z,g as J}from"./vendor-Bc4EraM_.js";import{B as I}from"./Button-lkEUHIDS.js";import{e as ee,C as Y,D as q,E as H,u as te,G as ne,w as ae,x as se,H as re,I as ie,J as oe,K as ce,V as le,L as de,M as ue}from"./index-Ciivz6fh.js";import{T as L}from"./ToggleSwitch-CrXim14A.js";const z={"title-preference-container":"_title-preference-container_ql0po_1","toggle-button":"_toggle-button_ql0po_21","toggle-label":"_toggle-label_ql0po_51"},U=["name","nativeName","englishName"],M={name:"Default (Romaji)",nativeName:"Native",englishName:"English"},he=()=>{const{titlePreference:i,setTitlePreference:m,loading:l}=ee(),[d,f]=r(M[i]),[y,c]=r(!1),o=W(null);D(()=>{l||f(M[i])},[i,l]);const a=async()=>{if(y)return;c(!0);const w=(U.indexOf(i)+1)%U.length,b=U[w],u=M[b];o.current&&(o.current.style.transform="translateX(-100%)",o.current.style.opacity="0"),setTimeout(async()=>{f(u),m(b),o.current&&(o.current.style.transition="none",o.current.style.transform="translateX(100%)",o.current.style.opacity="0",o.current.offsetWidth,o.current.style.transition="transform 0.3s ease-out, opacity 0.3s ease-out",o.current.style.transform="translateX(0)",o.current.style.opacity="1");try{await fetch("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:"titlePreference",value:b})})}catch(N){console.error("Error saving title preference:",N)}finally{c(!1)}},300)};return l?e("p",{children:"Loading title preference..."}):e("div",{className:z["title-preference-container"],children:[e("h4",{children:"Anime Title Display Preference"}),e("button",{onClick:a,className:z["toggle-button"],disabled:y,children:e("span",{ref:o,className:z["toggle-label"],children:d})})]})},ge="_settingsHeader_14vlm_1",me="_pageTitle_14vlm_6",fe="_pageSubtitle_14vlm_14",pe="_settingsLayout_14vlm_20",ye="_sidebar_14vlm_27",ve="_sidebarItem_14vlm_36",we="_active_14vlm_57",be="_mainContent_14vlm_68",Ce="_tabContent_14vlm_73",Se="_sectionCard_14vlm_80",_e="_settingItem_14vlm_104",Ne="_settingRow_14vlm_109",ke="_controls_14vlm_122",Ie="_status_14vlm_128",s={settingsHeader:ge,pageTitle:me,pageSubtitle:fe,settingsLayout:pe,sidebar:ye,sidebarItem:ve,active:we,mainContent:be,tabContent:Ce,sectionCard:Se,settingItem:_e,settingRow:Ne,controls:ke,status:Ie};function V({show:i,message:m,type:l,onClose:d,showConfirmButton:f=!1,onConfirm:y,confirmButtonText:c="Confirm",cancelButtonText:o="Cancel"}){return i?e("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.6)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999,padding:"1rem",backdropFilter:"blur(3px)"},onClick:d,children:e("div",{style:{backgroundColor:"var(--bg-secondary)",padding:"1.5rem",borderRadius:"var(--radius-lg)",maxWidth:"400px",width:"100%",boxShadow:"var(--shadow-xl)",border:"1px solid var(--border-primary)"},onClick:a=>a.stopPropagation(),children:[e("p",{style:{color:"var(--text-secondary)",marginBottom:"1.5rem"},children:m}),e("div",{style:{display:"flex",gap:"0.75rem",justifyContent:"flex-end"},children:f?e(X,{children:[e(I,{variant:"secondary",onClick:d,children:o}),e(I,{variant:"danger",onClick:y,children:c})]}):e(I,{onClick:d,children:"OK"})})]})}):null}const Te="_sectionCard_ljinx_12",xe="_title_ljinx_22",Re="_signIn_ljinx_29",Ee="_userInfo_ljinx_36",De="_warning_ljinx_58",Pe="_formGroup_ljinx_65",Le="_label_ljinx_69",Ge="_inputWrapper_ljinx_79",je="_input_ljinx_79",Ae="_select_ljinx_103",Oe="_iconButton_ljinx_120",Be="_actions_ljinx_140",Fe="_hr_ljinx_148",n={sectionCard:Te,title:xe,signIn:Re,userInfo:Ee,warning:De,formGroup:Pe,label:Le,inputWrapper:Ge,input:je,select:Ae,iconButton:Oe,actions:Be,hr:Fe},He=()=>{const[i,m]=r(!0),[l,d]=r(!1),[f,y]=r(!1),[c,o]=r(null),[a,h]=r({status:"idle"}),[w,b]=r(!1),u=W(null),[N,k]=r({show:!1,message:"",type:"info"}),R=()=>{u.current&&(window.clearInterval(u.current),u.current=null)},E=K(g=>{y(g.authenticated),o(g.user||g.device.user||null),h(g.device),b(g.usingDefaultClientId)},[]),T=K(async()=>{const S=await(await fetch("/api/auth/github/status")).json();E(S)},[E]),_=async()=>{try{const S=await(await fetch("/api/auth/github/poll")).json();h(S),S.status==="success"?(R(),await T(),k({show:!0,message:"GitHub authentication complete. Sync has been initialized.",type:"success"})):S.status==="error"&&(R(),k({show:!0,message:S.error||"GitHub authentication failed.",type:"error"}))}catch{R(),k({show:!0,message:"Failed to poll GitHub authentication status.",type:"error"})}},C=(g=5)=>{R(),u.current=window.setInterval(_,Math.max(g,5)*1e3)};D(()=>(T().catch(()=>{k({show:!0,message:"Failed to load GitHub sync status.",type:"error"})}).finally(()=>m(!1)),R),[T]);const G=async()=>{d(!0);try{const g=await fetch("/api/auth/github/start",{method:"POST"}),S=await g.json();if(!g.ok)throw new Error("Failed to start GitHub authentication.");h(S),C(S.verification?.interval)}catch(g){k({show:!0,message:g instanceof Error?g.message:"Failed to start GitHub authentication.",type:"error"})}finally{d(!1)}},P=async()=>{try{await fetch("/api/auth/github/logout",{method:"POST"}),y(!1),o(null),h({status:"idle"}),k({show:!0,message:"Signed out of GitHub sync.",type:"success"})}catch{k({show:!0,message:"Failed to sign out of GitHub.",type:"error"})}};return i?e("div",{style:{color:"var(--text-secondary)",padding:"1.5rem"},children:"Loading..."}):e("div",{className:n.sectionCard,children:[e("h3",{className:n.title,children:"GitHub Cloud Sync"}),e("p",{className:n.signIn,children:"Sync local data through a private GitHub repository named aniweb-sync-data."}),f&&c?e("div",{className:n.userInfo,children:[e("p",{children:["Signed in as: ",e("strong",{children:c.name||c.login})]}),e(I,{variant:"danger",onClick:P,children:"Sign Out"})]}):e("div",{className:n.signIn,children:[e(I,{onClick:G,disabled:l||a.status==="pending",children:l||a.status==="pending"?"Waiting for GitHub...":"Sign in with GitHub"}),w&&e("p",{className:n.warning,children:"Using the bundled ani-web GitHub OAuth app. Set GITHUB_CLIENT_ID in the server environment to use your own OAuth app instead."})]}),a.status==="pending"&&a.verification&&e(X,{children:[e("hr",{className:n.hr}),e("div",{className:n.formGroup,children:[e("label",{className:n.label,children:"Verification URL"}),e("div",{className:n.inputWrapper,children:[e("input",{className:n.input,value:a.verification.verification_uri,readOnly:!0}),e(I,{onClick:()=>window.open(a.verification?.verification_uri,"_blank"),children:"Open"})]})]}),e("div",{className:n.formGroup,children:[e("label",{className:n.label,children:"Device Code"}),e("input",{className:n.input,value:a.verification.user_code,readOnly:!0})]})]}),a.status==="error"&&e("p",{className:n.warning,children:a.error}),e(V,{show:N.show,message:N.message,type:N.type,onClose:()=>k(g=>({...g,show:!1}))})]})},ze=()=>{const[i,m]=r(""),[l,d]=r(""),[f,y]=r(!1),[c,o]=r(!1),[a,h]=r(!0),[w,b]=r(null),[u,N]=r(""),[k,R]=r(!1),[E,T]=r(!1),[_,C]=r({show:!1,message:"",type:"info"}),G=async()=>{try{const p=await(await fetch("/api/auth/user")).json();b(p)}catch{b(null)}},P=async()=>{try{const p=await(await fetch("/api/auth/google")).json();N(p.url)}catch(t){console.error("Failed to fetch auth URL",t)}},g=async()=>{try{const p=await(await fetch("/api/auth/config-status")).json();R(p.hasConfig)}catch(t){console.error("Failed to fetch config status",t)}};D(()=>{(async()=>(h(!0),await Promise.all([G(),g(),fetch("/api/auth/google-auth").then(v=>v.json()).then(v=>{m(v.clientId||""),d(""),T(!!v.hasClientSecret),v.clientId&&P()}).catch(v=>console.error("Failed to fetch auth config",v))]),h(!1)))();const p=v=>{v.data.type==="GOOGLE_AUTH_SUCCESS"&&(b(v.data.user),window.location.reload())};return window.addEventListener("message",p),()=>window.removeEventListener("message",p)},[]);const S=async()=>{if(!i&&!l&&!E){C({show:!0,message:"Please enter a Client ID and Client Secret to save.",type:"info"});return}try{const t={clientId:i};l&&(t.clientSecret=l);const p=await fetch("/api/auth/google-auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(p.ok)l&&(T(!0),d("")),C({show:!0,message:"Configuration saved successfully. You must restart the server for these changes to take effect.",type:"success"}),g(),i&&P();else{const v=await p.json().catch(()=>({}));C({show:!0,message:v.error||"Failed to save configuration.",type:"error"})}}catch{C({show:!0,message:"Failed to save configuration.",type:"error"})}},A=()=>{C({show:!0,message:"Are you sure you want to clear your Google authentication configuration? This will sign you out and remove all stored credentials.",type:"info",showConfirmButton:!0,onConfirm:()=>{C({show:!1,message:"",type:"info"}),O()},confirmButtonText:"Clear",cancelButtonText:"Cancel"})},O=async()=>{m(""),d(""),T(!1);try{if((await fetch("/api/auth/google-auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:"",clientSecret:""})})).ok)C({show:!0,message:"Configuration cleared successfully. You must restart the server for these changes to take effect.",type:"success"}),g();else throw new Error("Failed to clear")}catch{C({show:!0,message:"Failed to clear configuration.",type:"error"})}},B=async()=>{try{const p=await(await fetch("/api/auth/google/login",{method:"POST"})).json();if(p.authenticated){window.location.reload();return}if(p.url){const j=window.innerWidth/2-300,Q=window.innerHeight/2-700/2;window.open(p.url,"GoogleAuth",`width=600,height=700,top=${Q},left=${j}`)}else throw new Error("Auth URL not available")}catch{C({show:!0,message:"Authentication failed. Ensure server is configured correctly.",type:"error"})}},F=async()=>{try{await fetch("/api/auth/logout",{method:"POST"}),b(null),C({show:!0,message:"Successfully signed out.",type:"success"}),window.location.reload()}catch(t){console.error("Sign out failed",t),C({show:!0,message:"Failed to sign out.",type:"error"})}};return a?e("div",{style:{color:"var(--text-secondary)",padding:"1.5rem"},children:"Loading..."}):e("div",{className:n.sectionCard,children:[e("h3",{className:n.title,children:"Google Authentication"}),w?e("div",{className:n.userInfo,children:[e("p",{children:["Signed in as: ",e("strong",{children:w.name})," (",w.email,")"]}),e(I,{variant:"danger",onClick:F,children:"Sign Out"})]}):e("div",{className:n.signIn,children:[e("p",{children:"Sign in with your Google account to enable synchronization features."}),e(I,{onClick:B,disabled:!k,children:"Sign in with Google"}),!k&&e("p",{className:n.warning,children:"Google authentication is not configured. Please set up Client ID and Secret below."})]}),e("hr",{className:n.hr}),e("div",{className:n.formGroup,children:[e("label",{className:n.label,children:"Client ID"}),e("div",{className:n.inputWrapper,children:[e("input",{type:f?"text":"password",className:n.input,value:i,onChange:t=>m(t.currentTarget.value),placeholder:"Enter Google Client ID"}),e("button",{className:n.iconButton,onClick:()=>y(!f),children:f?e(Y,{}):e(q,{})})]})]}),e("div",{className:n.formGroup,children:[e("label",{className:n.label,children:"Client Secret"}),e("div",{className:n.inputWrapper,children:[e("input",{type:c?"text":"password",className:n.input,value:l,onChange:t=>d(t.currentTarget.value),placeholder:E?"Stored securely. Enter a new secret only to replace it.":"Enter Google Client Secret"}),e("button",{className:n.iconButton,onClick:()=>o(!c),children:c?e(Y,{}):e(q,{})})]})]}),E&&!l&&e("p",{className:n.warning,children:"A client secret is already stored and will be kept unless you replace or clear it."}),e("div",{className:n.actions,children:[e(I,{onClick:S,children:"Save Config"}),e(I,{variant:"secondary",onClick:A,children:"Clear Config"})]}),e(V,{show:_.show,message:_.message,type:_.type,onClose:()=>C(t=>({...t,show:!1})),showConfirmButton:_.showConfirmButton,onConfirm:_.onConfirm,confirmButtonText:_.confirmButtonText,cancelButtonText:_.cancelButtonText})]})},Ue="_sectionCard_tv3nd_1",Me="_settingItem_tv3nd_26",$e="_settingRow_tv3nd_31",$={sectionCard:Ue,settingItem:Me,settingRow:$e},We=()=>{const[i,m]=r(!1),[l,d]=r(!0),[f,y]=r(!1);D(()=>{(async()=>{try{const h=await(await fetch("/api/settings?key=skipRemoveConfirmation")).json();String(h.value)==="true"||String(h.value)==="1"?m(!0):m(!1)}catch(a){console.error("Failed to fetch setting",a)}finally{d(!1)}})()},[]);const c=async()=>{if(f)return;y(!0);const o=!i;m(o);try{await fetch("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:"skipRemoveConfirmation",value:o})})}catch(a){console.error("Error saving setting:",a),m(!o)}finally{y(!1)}};return l?e("div",{children:"Loading settings..."}):e("div",{className:$.sectionCard,children:[e("h3",{children:"Watchlist Preferences"}),e("p",{children:"Customize your experience when managing your watchlist and series entries."}),e("div",{className:$.settingItem,children:e("div",{className:$.settingRow,children:[e("label",{htmlFor:"skip-confirmation-toggle",children:"Skip confirmation when removing from watchlist"}),e(L,{isChecked:i,onChange:c,id:"skip-confirmation-toggle",disabled:f})]})})]})},Ve=()=>{const[i,m]=r(""),[l,d]=r([]),[f,y]=r(null),[c,o]=r(!0),[a,h]=r({show:!1,message:"",type:"info"}),w=async()=>{try{o(!0);const N=await(await fetch("/api/auth/settings/rclone")).json();m(N.remote||""),d(N.availableRemotes||[]),y(N.activeRemote||null)}catch(u){console.error("Failed to fetch Rclone settings",u)}finally{o(!1)}};D(()=>{w()},[]);const b=async()=>{try{if((await fetch("/api/auth/settings/rclone",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({remote:i})})).ok)h({show:!0,message:"Rclone configuration saved successfully. You must restart the server for these changes to take effect.",type:"success"}),w();else throw new Error("Failed to save")}catch{h({show:!0,message:"Failed to save Rclone configuration.",type:"error"})}};return c?e("div",{style:{color:"var(--text-secondary)",padding:"1.5rem"},children:"Loading..."}):e("div",{className:n.sectionCard,children:[e("h3",{className:n.title,children:"Rclone Cloud Sync"}),e("p",{className:n.signIn,children:"Configure which Rclone remote to use for database synchronization."}),f?e("div",{className:n.userInfo,children:e("p",{children:["Current Active Remote: ",e("strong",{children:f})]})}):e("p",{className:n.warning,style:{marginBottom:"1.5rem"},children:"Rclone sync is not currently active. Ensure rclone is installed and a remote is configured."}),e("div",{className:n.formGroup,children:[e("label",{className:n.label,children:"Remote Name"}),e("div",{className:n.inputWrapper,children:e("select",{className:n.select,value:i,onChange:u=>m(u.target.value),children:[e("option",{value:"",children:"(Disabled / None)"}),l.map(u=>e("option",{value:u,children:u},u)),i&&!l.includes(i)&&e("option",{value:i,children:[i," (Manual)"]})]})}),e("p",{className:n.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:n.actions,children:e(I,{onClick:b,children:"Save Rclone Settings"})}),e(V,{show:a.show,message:a.message,type:a.type,onClose:()=>h(u=>({...u,show:!1}))})]})},Ke=()=>{const[i,m]=r(null),[l,d]=r(!0),f=async()=>{try{const h=await(await fetch("/api/auth/settings/sync")).json();m(h)}catch(a){console.error("Failed to fetch sync settings",a)}finally{d(!1)}};D(()=>{f()},[]);const y=async a=>{const h=a.target.value;try{const w=await fetch("/api/auth/settings/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:h})});if(w.ok){const b=await w.json();m(u=>u?{...u,activeProvider:b.activeProvider}:null),await f(),H.success(`Sync provider updated to ${h==="default"?"Default Order":h}`)}else H.error("Failed to update sync provider")}catch{H.error("Error updating sync provider")}};if(l||!i)return null;const c=[{value:"default",label:"Default (Priority Based)"}];i.authenticatedProviders.github&&c.push({value:"github",label:"GitHub"}),i.authenticatedProviders.google&&c.push({value:"google",label:"Google Drive"}),i.authenticatedProviders.rclone&&c.push({value:"rclone",label:"Rclone"}),c.push({value:"none",label:"None (Local Only)"});const o=a=>a==="none"?"Local Only (No Sync)":a==="google"?"Google Drive":a==="github"?"GitHub":a==="rclone"?"Rclone":a;return e("div",{className:s.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:o(i.actualActiveProvider)})]}),e("div",{className:s.settingRow,children:[e("label",{htmlFor:"sync-provider-select",children:"Selected Preference"}),e("select",{id:"sync-provider-select",value:i.activeProvider,onChange:y,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:c.map(a=>e("option",{value:a.value,children:a.label},a.value))})]})]})},Je="2.0.7",Ye={version:Je},et=()=>{const[i,m]=Z(),l=i.get("tab"),[d,f]=r(l&&["general","sync","watchlist","database"].includes(l)?l:"general"),[y,c]=r(""),o=W(null),{lowEndMode:a,setLowEndMode:h}=te(),[w,b]=r(localStorage.getItem("telemetry_enabled")!=="false"),[u,N]=r(localStorage.getItem("installation_id")||"");D(()=>{fetch("/api/installation-id").then(t=>t.json()).then(t=>{t.id&&(N(t.id),localStorage.setItem("installation_id",t.id))}).catch(()=>{})},[]);const[k,R]=r(ne),[E,T]=r(!0),{data:_}=ae("discordRPCEnabled"),C=se();D(()=>{_!==void 0&&T(_==="true"||_===!0||_===null)},[_]);const G=t=>{T(t),C.mutate({key:"discordRPCEnabled",value:String(t)})},P=t=>{b(t),localStorage.setItem("telemetry_enabled",String(t)),t||ue()},g=t=>{R(t),localStorage.setItem(le,String(t)),window.dispatchEvent(new CustomEvent(de))};J.useEffect(()=>{document.title="Settings - ani-web"},[]),J.useEffect(()=>{const t=i.get("tab");t&&["general","sync","watchlist","database"].includes(t)&&f(t)},[i]);const S=t=>{f(t),m(t==="general"?{}:{tab:t})},A=async()=>{c("Backing up database...");try{const t=await fetch("/api/backup-db");if(t.ok){const p=await t.blob(),v=window.URL.createObjectURL(p),x=document.createElement("a");x.href=v,x.download="ani-web-backup.db",document.body.appendChild(x),x.click(),x.remove(),window.URL.revokeObjectURL(v),c("Database backup successful!")}else{const p=await t.json();c(`Backup failed: ${p.error}`)}}catch{c("Backup failed: An unexpected error occurred.")}},O=async t=>{const p=t.target.files?.[0];if(!p)return;c("Restoring database...");const v=new FormData;v.append("dbfile",p);try{const x=await fetch("/api/restore-db",{method:"POST",body:v}),j=await x.json();x.ok?(c(j.message||"Database restored successfully!"),setTimeout(()=>window.location.reload(),2e3)):c(`Restore failed: ${j.error}`)}catch{c("Restore failed: An unexpected error occurred.")}},B=()=>{o.current?.click()},F=()=>{switch(d){case"general":return e("div",{className:s.tabContent,children:e("div",{className:s.sectionCard,children:[e("h3",{children:"Appearance & Preferences"}),e("p",{children:"Configure how titles are displayed and other general preferences."}),e("div",{className:s.settingItem,children:e(he,{})}),e("div",{className:s.settingItem,style:{marginTop:"1.5rem"},children:e("div",{className:s.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(L,{isChecked:a,onChange:t=>h(t.target.checked),id:"low-end-mode"})]})}),e("div",{className:s.settingItem,style:{marginTop:"1.5rem"},children:e("div",{className:s.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(L,{isChecked:k,onChange:t=>g(t.target.checked),id:"virtual-keyboard-enabled"})]})}),e("div",{className:s.settingItem,style:{marginTop:"1.5rem"},children:e("div",{className:s.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(L,{isChecked:E,onChange:t=>G(t.target.checked),id:"discord-rpc-enabled"})]})}),e("div",{className:s.settingItem,style:{marginTop:"1.5rem"},children:[e("div",{className:s.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: Hardware-based Anonymous ID, App Version, First Seen/Last Seen timestamps, and User Agent string. No other personal information or usage habits are collected."})]}),e(L,{isChecked:w,onChange:t=>P(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:"#1a1a1a",padding:"0.5rem",borderRadius:"4px",wordBreak:"break-all",fontFamily:"monospace"},children:[e("p",{style:{margin:"0"},children:[e("strong",{children:"ID:"})," ",u||"Loading..."]}),e("p",{style:{margin:"0"},children:[e("strong",{children:"Version:"})," ",Ye.version]}),e("p",{style:{margin:"0"},children:[e("strong",{children:"Browser:"})," ",navigator.userAgent.substring(0,60),"..."]})]})]})]}),localStorage.getItem("agreedToViewMature")==="true"&&e("div",{className:s.settingItem,style:{marginTop:"1.5rem"},children:e("div",{className:s.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(L,{isChecked:!0,onChange:t=>{t.target.checked||(localStorage.removeItem("agreedToViewMature"),window.location.reload())},id:"mature-content-enabled"})]})})]})});case"sync":return e("div",{className:s.tabContent,children:[e(Ke,{}),e(He,{}),e(ze,{}),e(Ve,{})]});case"watchlist":return e("div",{className:s.tabContent,children:e(We,{})});case"database":return e("div",{className:s.tabContent,children:e("div",{className:s.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:s.controls,children:[e(I,{onClick:A,children:"Backup Database"}),e(I,{variant:"secondary",onClick:B,children:"Restore Database"})]}),e("input",{type:"file",ref:o,onChange:O,style:{display:"none"},accept:".db"}),y&&e("p",{className:s.status,children:y})]})});default:return null}};return e("div",{className:"page-container",children:[e("div",{className:s.settingsHeader,children:[e("h1",{className:s.pageTitle,children:"Settings"}),e("p",{className:s.pageSubtitle,children:"Manage your preferences and data synchronization"})]}),e("div",{className:s.settingsLayout,children:[e("aside",{className:s.sidebar,children:[e("button",{className:`${s.sidebarItem} ${d==="general"?s.active:""}`,onClick:()=>S("general"),children:[e(re,{})," ",e("span",{children:"General"})]}),e("button",{className:`${s.sidebarItem} ${d==="sync"?s.active:""}`,onClick:()=>S("sync"),children:[e(ie,{})," ",e("span",{children:"Synchronization"})]}),e("button",{className:`${s.sidebarItem} ${d==="watchlist"?s.active:""}`,onClick:()=>S("watchlist"),children:[e(oe,{})," ",e("span",{children:"Watchlist"})]}),e("button",{className:`${s.sidebarItem} ${d==="database"?s.active:""}`,onClick:()=>S("database"),children:[e(ce,{})," ",e("span",{children:"Database"})]})]}),e("main",{className:s.mainContent,children:F()})]})]})};export{et as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as s,d as p,y as f}from"./vendor-Bc4EraM_.js";import{u as g}from"./useIsMobile-BviODivc.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},b=n=>l(n?.year)!==null&&l(n?.month)!==null&&l(n?.date)!==null,m=n=>{const t=l(n?.year);if(t===null)return null;const r=l(n?.month),e=l(n?.date);return r!==null&&e!==null?new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric",timeZone:"UTC"}).format(new Date(Date.UTC(t,r,e))):r!==null?new Intl.DateTimeFormat("en-US",{month:"short",year:"numeric",timeZone:"UTC"}).format(new Date(Date.UTC(t,r,1))):String(t)},S=(n,t,r)=>{const e=m(n),i=b(t)?m(t):null;return e&&i?`${e} - ${i}`:e&&r?.toLowerCase()==="releasing"?`${e} - TBA`:e||i},C=n=>{const t=[n.availableEpisodesDetail?.sub?.length,n.availableEpisodesDetail?.dub?.length,n.availableEpisodesDetail?.raw?.length].filter(o=>typeof o=="number"),r=[n.availableEpisodes?.sub,n.availableEpisodes?.dub,n.availableEpisodes?.raw].map(l).filter(o=>o!==null),e=Math.max(0,...t,...r),i=l(n.episodeCount);return e>0&&i!==null?`${e}/${i}`:e>0?String(e):i!==null?String(i):null},D=n=>{const t=l(n.score);if(t!==null)return String(t);const r=l(n.averageScore??n.stats?.averageScore);return r!==null?(r/10).toFixed(1):null},E=n=>n?y[n]||n:null,N=n=>n&&[n.quarter||n.season||n.title,n.year].filter(Boolean).join(" ")||null,_=n=>n?.length?n.map(t=>typeof t=="string"?t:t.name).filter(Boolean).join(", "):null,T=n=>n?[["Status",n.status],["Score",D(n)],["Type",n.type],["Country",E(n.country)],["Season",N(n.season)],["Rating",n.rating],["Studios",_(n.studios)],["Aired",S(n.airedStart,n.airedEnd,n.status)],["Episodes",C(n)]].filter(r=>typeof r[1]=="string"&&r[1].trim()!=="").map(([r,e])=>({label:r,value:e})):[];function F({showMeta:n,styles:t}){const r=T(n);return s("div",{className:t.detailsGridContainer,children:r.map(e=>s("div",{className:t.detailItem,children:[s("strong",{children:e.label}),s("span",{children:e.value})]},e.label))})}const B="_synopsisBlock_q3wg6_1",v="_description_q3wg6_7",A="_clamped_q3wg6_15",x="_toggleButton_q3wg6_22",a={synopsisBlock:B,description:v,clamped:A,toggleButton:x},h=180;function R({text:n,emptyText:t="No description available.",collapsedLines:r=2}){const e=g(),i=n?.trim()||"",o=e&&i.length>h,[u,c]=p(!o);return f(()=>{c(!o)},[o]),i?s("div",{className:a.synopsisBlock,children:[s("p",{className:`${a.description} ${!u&&o?a.clamped:""}`,style:{"--synopsis-lines":String(r)},children:i}),o&&s("button",{type:"button",className:a.toggleButton,onClick:()=>c(d=>!d),"aria-expanded":u,children:u?"Show less":"Read more"})]}):s("p",{className:a.description,children:t})}export{F as A,R as S};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._synopsisBlock_q3wg6_1{display:flex;flex-direction:column;gap:.85rem}._description_q3wg6_7{font-size:var(--font-size-base);color:var(--text-secondary);line-height:1.7;margin:0;white-space:pre-wrap}._clamped_q3wg6_15{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;-webkit-line-clamp:var(--synopsis-lines, 2)}._toggleButton_q3wg6_22{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_q3wg6_22:hover{border-color:var(--accent);color:var(--accent);background:#ffffff14}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._switch_167fp_1{position:relative;display:inline-block;width:48px;height:24px;flex-shrink:0}._switch_167fp_1 input{opacity:0;width:0;height:0}._slider_167fp_15{position:absolute;cursor:pointer;inset:0;background-color:#ffffff1a;border:1px solid var(--border-primary);transition:var(--transition-base);border-radius:24px}._slider_167fp_15:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:2px;background-color:var(--text-secondary);transition:var(--transition-base);border-radius:50%;box-shadow:var(--shadow-sm)}input:checked+._slider_167fp_15{background-color:#8b5cf633;border-color:var(--accent)}input:checked+._slider_167fp_15:before{transform:translate(22px);background-color:var(--accent);box-shadow:0 0 10px var(--accent-glow)}input:focus+._slider_167fp_15{box-shadow:0 0 0 2px #8b5cf633}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as s}from"./vendor-Bc4EraM_.js";const i="_slider_167fp_15",c={switch:"_switch_167fp_1",slider:i},a=({isChecked:t,onChange:l,id:e,disabled:r=!1})=>s("label",{className:c.switch,htmlFor:e,children:[s("input",{type:"checkbox",id:e,checked:t,onChange:l,disabled:r}),s("span",{className:c.slider})]});export{a as T};
|