@serifpersia/dango 3.7.5 → 3.7.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.
Files changed (66) hide show
  1. package/README.md +1 -1
  2. package/client/dist/assets/{AnimeCard-BxhPLWBG.js → AnimeCard-aZA4-g8o.js} +1 -1
  3. package/client/dist/assets/{AnimeInfo-DcpKPBLS.js → AnimeInfo-CFGRb1OW.js} +1 -1
  4. package/client/dist/assets/{AnimeInfoPage-jKNSPHbX.js → AnimeInfoPage-CozJH4AM.js} +2 -2
  5. package/client/dist/assets/{AnimeMetaDetails-D8WIiO4b.js → AnimeMetaDetails-B3-A7O5H.js} +1 -1
  6. package/client/dist/assets/Asmr-AxjnBdsh.js +2 -0
  7. package/client/dist/assets/{AsmrResetProgressModal-DPHPLqPo.js → AsmrResetProgressModal-NKywttOY.js} +1 -1
  8. package/client/dist/assets/Home-CkdWZK2L.js +1 -0
  9. package/client/dist/assets/Home-DHAkZuDf.css +1 -0
  10. package/client/dist/assets/{Insights-C9HufjGJ.js → Insights-DgnlUFjW.js} +1 -1
  11. package/client/dist/assets/{LibraryListPage-BT_xDjEq.js → LibraryListPage-CJxNJYC3.js} +1 -1
  12. package/client/dist/assets/{ListeningList-DL1rdCRi.js → ListeningList-VZTVSt_i.js} +1 -1
  13. package/client/dist/assets/{Manga-BfFRq7eK.js → Manga-dDQAtejO.js} +1 -1
  14. package/client/dist/assets/{MangaInfoPage-wBJjn2FL.js → MangaInfoPage-DzaSKarW.js} +1 -1
  15. package/client/dist/assets/{MangaReadPage-BAgsRqxt.js → MangaReadPage-CT6THZho.js} +1 -1
  16. package/client/dist/assets/{MangaResetProgressModal-Br5zqZ-U.js → MangaResetProgressModal-DrqN7OF0.js} +1 -1
  17. package/client/dist/assets/{Mature-MO7ZwJVT.js → Mature-BGitA9fy.js} +1 -1
  18. package/client/dist/assets/{MatureConsentModal-Beq4JL0b.js → MatureConsentModal-DLVOORqW.js} +1 -1
  19. package/client/dist/assets/{MediaCard-lz7FdOe_.js → MediaCard-DJNRuWDJ.js} +1 -1
  20. package/client/dist/assets/{OptionListMenu-BSUcso28.js → OptionListMenu-CRaHF9k4.js} +1 -1
  21. package/client/dist/assets/Player-CdSjfMoO.js +56 -0
  22. package/client/dist/assets/PlayerProvider-D02-hqdz.js +1 -0
  23. package/client/dist/assets/PlayerProvider-N2pT5gty.css +1 -0
  24. package/client/dist/assets/PlayerSettings-CXmAyRJh.js +1 -0
  25. package/client/dist/assets/{QueueOptionsButton-B8xuoYlH.js → QueueOptionsButton-ByAwxtJ-.js} +1 -1
  26. package/client/dist/assets/{QueueRail-D1FmM-GR.js → QueueRail-BLf4fWOA.js} +1 -1
  27. package/client/dist/assets/{ReadingList-D8ZiOnWi.js → ReadingList-Cm5omw5j.js} +1 -1
  28. package/client/dist/assets/{ResetProgressModal-0PvvM2XJ.js → ResetProgressModal-Dq-B23o_.js} +1 -1
  29. package/client/dist/assets/{Search-D1T-PrGX.js → Search-C8rfGyYH.js} +1 -1
  30. package/client/dist/assets/{Settings-DALBQcFc.js → Settings-Do5F5e2c.js} +1 -1
  31. package/client/dist/assets/{SkeletonGrid-pA-dcLBM.js → SkeletonGrid-sA6_IQY1.js} +1 -1
  32. package/client/dist/assets/{Trackers-D68sJf1y.js → Trackers-DeJr1sbR.js} +1 -1
  33. package/client/dist/assets/Tv-BkApELpu.js +4 -0
  34. package/client/dist/assets/{TvInfo-CpPIymn8.js → TvInfo-C5cVdHka.js} +1 -1
  35. package/client/dist/assets/{TvPopup-BwGJ1Tjg.js → TvPopup-DyFUi32m.js} +1 -1
  36. package/client/dist/assets/{TvSearch-D9SrfJjK.js → TvSearch-BBYYrww5.js} +1 -1
  37. package/client/dist/assets/{TvWatchlist-25tpA8ln.js → TvWatchlist-SjHmyo2P.js} +1 -1
  38. package/client/dist/assets/{Watchlist-mlZQTcqR.js → Watchlist-BnmsAcx0.js} +1 -1
  39. package/client/dist/assets/{index-ZssheiHa.css → index-5x1mF1nD.css} +1 -1
  40. package/client/dist/assets/index-vb4WPdcb.js +178 -0
  41. package/client/dist/assets/{libraryInvalidation-DdnIPcOQ.js → libraryInvalidation-2sAPXNhJ.js} +1 -1
  42. package/client/dist/assets/{useAnimeInfoData-tcGkDs2b.js → useAnimeInfoData-Ai39I_f0.js} +1 -1
  43. package/client/dist/assets/{useAsmr-B-FYJW2L.js → useAsmr-XBCV7iDw.js} +1 -1
  44. package/client/dist/assets/{useAsmrPopup-Ct9jC6X6.js → useAsmrPopup-DViHcQnO.js} +1 -1
  45. package/client/dist/assets/useMangaLibrary-DrPp5K_1.js +1 -0
  46. package/client/dist/assets/{useMangaPopup-B_wRaMyP.js → useMangaPopup-VGTfdKEu.js} +1 -1
  47. package/client/dist/assets/usePlaybackEnd-BMf_H2dw.css +1 -0
  48. package/client/dist/assets/usePlaybackEnd-C5EyqR1L.js +10 -0
  49. package/client/dist/assets/{useProviders-D0XOHCsj.js → useProviders-Bt-p5Jxv.js} +1 -1
  50. package/client/dist/assets/{useTv-IidbSQU4.js → useTv-BpVapcT5.js} +1 -1
  51. package/client/dist/assets/{useTvLibrary-DiCSdUOj.js → useTvLibrary-BFRidauf.js} +1 -1
  52. package/client/dist/index.html +2 -2
  53. package/package.json +2 -2
  54. package/server/dist/server.js +1 -1
  55. package/server/package.json +1 -1
  56. package/client/dist/assets/Asmr-DlKBykO-.js +0 -2
  57. package/client/dist/assets/Home-C5eTe3jP.css +0 -1
  58. package/client/dist/assets/Home-D7-FNOmo.js +0 -1
  59. package/client/dist/assets/Player-CnLC-x2S.js +0 -56
  60. package/client/dist/assets/PlayerSettings-kqYmlLDl.js +0 -1
  61. package/client/dist/assets/Tv-DO-WeaMv.js +0 -4
  62. package/client/dist/assets/hls-qvAoYTJt.js +0 -1
  63. package/client/dist/assets/index-DlcgJVM6.js +0 -178
  64. package/client/dist/assets/useMangaLibrary-BacTdrw2.js +0 -1
  65. package/client/dist/assets/usePlaybackEnd-DLFOYx3Q.css +0 -1
  66. package/client/dist/assets/usePlaybackEnd-DuEfjKb8.js +0 -10
@@ -1 +0,0 @@
1
- ._section-header_2p2l1_1{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:var(--space-8);gap:var(--space-4)}._sectionWrapper_2p2l1_9{margin-bottom:2.5rem}._sectionTitleNoMargin_2p2l1_13{margin-bottom:0}._title-wrapper_2p2l1_17{display:flex;align-items:center;gap:var(--space-6);flex:1}._header-controls_2p2l1_24{display:flex;align-items:center;gap:var(--space-2)}._header-select_2p2l1_30{width:auto;min-width:120px;height:34px;padding:0 var(--space-3);padding-right:2rem;background-color:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--font-size-sm);font-weight:700;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23a1a1aa' 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 .5rem center;transition:all var(--transition-base)}._header-select_2p2l1_30:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._header-select_2p2l1_30:focus{outline:none;border-color:var(--accent)}._view-all-link_2p2l1_61{font-size:.85rem;font-weight:700;color:var(--text-secondary);text-decoration:none;white-space:nowrap;padding:8px 12px;border-radius:var(--radius-md);border:1px solid transparent;transition:all var(--transition-base)}._view-all-link_2p2l1_61:hover{color:var(--accent-light);background:var(--accent-subtle);border-color:var(--border-primary)}._collapse-button_2p2l1_79{width:40px;height:40px;border:1px solid var(--border-primary);background:var(--bg-secondary);color:var(--text-secondary);border-radius:var(--radius-md);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-base)}._collapse-button_2p2l1_79:hover{background:var(--bg-elevated);color:var(--text-primary)}._title-link_2p2l1_98{color:inherit;text-decoration:none;display:inline-flex;align-items:center;transition:all var(--transition-base)}._title-link_2p2l1_98 .section-title{position:relative;font-size:1.5rem;font-weight:800;letter-spacing:-.01em}._title-link_2p2l1_98:hover,._continue-watching_2p2l1_117 ._title-link_2p2l1_98:hover .section-title{color:var(--accent)}@media(max-width:600px){._section-header_2p2l1_1{flex-direction:column;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-6)}._title-wrapper_2p2l1_17{width:100%;justify-content:space-between}._title-link_2p2l1_98 .section-title{font-size:1.25rem}}._nav-arrows_2p2l1_139{display:flex;gap:8px;background:var(--bg-tertiary);padding:4px;border-radius:var(--radius-md);border:1px solid var(--border-primary)}._nav-button_2p2l1_148{background:transparent;border:none;color:var(--text-secondary);width:32px;height:32px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-base)}._nav-button_2p2l1_148:hover{background:var(--bg-elevated);color:var(--accent)}._nav-button_2p2l1_148:active{transform:scale(.9)}@media(hover:none),(pointer:coarse){._nav-button_2p2l1_148{width:44px;height:44px}}._carousel-container_2p2l1_178{position:relative;width:100%}._carousel_2p2l1_178{overflow:hidden}._carousel-inner_2p2l1_187{display:flex;gap:20px}._carousel-card_2p2l1_192{flex:0 0 calc((100% - (6 * 20px)) / 7);min-width:150px}@media(max-width:1400px){._carousel-card_2p2l1_192{flex:0 0 calc((100% - (5 * 20px)) / 6)}}@media(max-width:1200px){._carousel-card_2p2l1_192{flex:0 0 calc((100% - 80px)/5)}}@media(max-width:900px){._carousel-card_2p2l1_192{flex:0 0 calc((100% - 60px)/4);max-width:160px}}@media(max-width:768px){._carousel-inner_2p2l1_187{gap:12px}._carousel-card_2p2l1_192{flex:0 0 calc((100% - (2 * 12px)) / 3);min-width:0;max-width:140px}}@media(max-width:480px){._carousel-card_2p2l1_192{flex:0 0 calc((100% - (1 * 12px)) / 2.2);max-width:140px}}._sectionWrapper_xt8h9_2{margin-bottom:2.5rem}._sectionTitleNoMargin_xt8h9_6{margin-bottom:0}._section-header_xt8h9_10{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:var(--space-8);gap:var(--space-4)}._title-wrapper_xt8h9_18{display:flex;align-items:center;gap:var(--space-6);flex:1}@media(max-width:600px){._section-header_xt8h9_10{flex-direction:column;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-6)}._title-wrapper_xt8h9_18{width:100%;justify-content:space-between}}._nav-arrows_xt8h9_40{display:flex;gap:8px;background:var(--bg-tertiary);padding:4px;border-radius:var(--radius-md);border:1px solid var(--border-primary)}._nav-button_xt8h9_49{background:transparent;border:none;color:var(--text-secondary);width:32px;height:32px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-base)}._nav-button_xt8h9_49:hover{background:var(--bg-elevated);color:var(--accent)}._nav-button_xt8h9_49:active{transform:scale(.9)}@media(hover:none),(pointer:coarse){._nav-button_xt8h9_49{width:44px;height:44px}}._timeSelect_xt8h9_80{width:120px;height:34px;padding:0 var(--space-3);padding-right:2rem;background-color:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--font-size-sm);font-weight:700;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23a1a1aa' 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 .5rem center;transition:all var(--transition-base)}._timeSelect_xt8h9_80:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._timeSelect_xt8h9_80:focus{outline:none;border-color:var(--accent)}._carouselContainer_xt8h9_111{position:relative;width:100%}._carousel_xt8h9_111{overflow:hidden;padding:10px 0;margin:-10px 0}._carouselInner_xt8h9_122{display:flex;gap:15px}._carouselItem_xt8h9_127{flex:0 0 calc((100% - (6 * 15px)) / 7);min-width:120px;position:relative}@media(max-width:1200px){._carouselItem_xt8h9_127{flex:0 0 calc((100% - (5 * 15px)) / 6)}}@media(max-width:1024px){._carouselItem_xt8h9_127{flex:0 0 calc((100% - 60px)/5)}}@media(max-width:768px){._carouselItem_xt8h9_127{flex:0 0 calc((100% - (2 * 15px)) / 3)}}@media(max-width:480px){._carouselItem_xt8h9_127{flex:0 0 calc((100% - (2 * 10px)) / 3);min-width:100px}._carouselInner_xt8h9_122{gap:10px;align-items:flex-start}}._rankCard_xt8h9_164{width:100%}._rankPill_xt8h9_168{text-align:center;margin-top:4px;font-size:1.6rem;font-weight:900;line-height:1;letter-spacing:-.04em;color:var(--text-tertiary);font-variant-numeric:tabular-nums}._rankPill_xt8h9_168._rankGold_xt8h9_179{color:#d8b56b}._rankPill_xt8h9_168._rankSilver_xt8h9_183{color:#c3c9d1}._rankPill_xt8h9_168._rankBronze_xt8h9_187{color:#c08d5f}@media(max-width:768px){._rankPill_xt8h9_168{font-size:1.3rem}}._skeletonPoster_xt8h9_198,._skeletonText_xt8h9_199{position:relative;overflow:hidden;background-color:var(--bg-tertiary);border-radius:var(--radius-sm)}._skeletonPoster_xt8h9_198:after,._skeletonText_xt8h9_199:after{content:"";position:absolute;inset:0;transform:translate(-100%);background-image:linear-gradient(90deg,#fff0 0,#ffffff0d 20%,#ffffff1f 60%,#fff0);animation:_skeleton-wave_xt8h9_1 1.8s infinite ease-in-out}._skeletonPoster_xt8h9_198{width:100%;aspect-ratio:3 / 4}._skeletonText_xt8h9_199{width:80%;height:12px;margin-top:var(--space-2)}._header-actions_xt8h9_236{width:100%;display:flex;justify-content:flex-end}._scheduleSection_10dfe_1{margin-bottom:2.5rem}._sectionTitleRow_10dfe_5{display:flex;align-items:center;gap:1rem}._sectionTitleNoMargin_10dfe_11{margin-bottom:0}._sectionHeader_10dfe_15{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6);gap:var(--space-4);flex-wrap:wrap;row-gap:var(--space-3)}._headerActions_10dfe_25{display:flex;align-items:center;gap:var(--space-3)}._timeSelect_10dfe_31{width:120px;height:34px;padding:0 var(--space-3);padding-right:2rem;background-color:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--font-size-sm);font-weight:700;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23a1a1aa' 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 .5rem center;transition:all var(--transition-base)}._timeSelect_10dfe_31:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._timeSelect_10dfe_31:focus{outline:none;border-color:var(--accent)}._daySelectorContainer_10dfe_62{margin-bottom:var(--space-8);width:100%;position:relative}._daySelector_10dfe_62{display:flex;overflow-x:auto;padding:var(--space-2) var(--space-8);scrollbar-width:none;-webkit-overflow-scrolling:touch;width:100%;scroll-behavior:smooth;overscroll-behavior-x:contain}._daySelectorInner_10dfe_79{display:flex;gap:var(--space-2);justify-content:flex-start;margin:0 auto}._daySelector_10dfe_62::-webkit-scrollbar{display:none}._dayBtn_10dfe_90{background:#ffffff08;border:1px solid var(--border-primary);color:var(--text-secondary);padding:var(--space-2) var(--space-4);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-base);min-width:70px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;flex-shrink:0}._dayBtn_10dfe_90:hover{background:#ffffff14;border-color:var(--border-secondary);transform:translateY(-2px)}._dayBtn_10dfe_90._active_10dfe_113{background:var(--accent);border-color:var(--accent);color:var(--accent-text);box-shadow:0 8px 20px var(--accent-glow);transform:translateY(-4px)}._dayMonth_10dfe_121{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;opacity:.8}._dayNum_10dfe_129{font-size:1.25rem;font-weight:800;line-height:1}._dayName_10dfe_135{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.02em}._dayBtn_10dfe_90._active_10dfe_113 ._dayMonth_10dfe_121,._dayBtn_10dfe_90._active_10dfe_113 ._dayName_10dfe_135{opacity:1}._navArrows_10dfe_148{display:flex;gap:8px;background:var(--bg-tertiary);padding:4px;border-radius:var(--radius-md);border:1px solid var(--border-primary)}._navButton_10dfe_157{background:transparent;border:none;color:var(--text-secondary);width:32px;height:32px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-base)}._navButton_10dfe_157:hover{background:var(--bg-elevated);color:var(--accent)}._navButton_10dfe_157:active{transform:scale(.9)}._carouselContainer_10dfe_181{position:relative;width:100%;min-height:280px}._carousel_10dfe_181{overflow:hidden;padding-bottom:10px;min-height:260px}._carouselInner_10dfe_193{display:flex;gap:15px}._carouselCard_10dfe_198{flex:0 0 calc((100% - (6 * 15px)) / 7);min-width:150px}@media(max-width:1200px){._carouselCard_10dfe_198{flex:0 0 calc((100% - (5 * 15px)) / 6)}}@media(max-width:1024px){._carouselCard_10dfe_198{flex:0 0 calc((100% - 60px)/5)}}@media(max-width:768px){._carouselCard_10dfe_198{flex:0 0 calc((100% - (2 * 15px)) / 3);min-width:0}._daySelector_10dfe_62{justify-content:flex-start;padding-left:var(--space-4);padding-right:var(--space-4)}._dayBtn_10dfe_90{min-width:60px;padding:var(--space-2) var(--space-3)}}@media(max-width:480px){._carouselCard_10dfe_198{flex:0 0 calc((100% - (2 * 10px)) / 3);min-width:0}._carouselInner_10dfe_193{gap:10px;align-items:flex-start}}@media(max-width:600px){._daySelector_10dfe_62{display:flex;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:0;padding:var(--space-1) var(--space-4);scroll-behavior:smooth;overscroll-behavior-x:contain}._daySelectorInner_10dfe_79{gap:0;margin:0;justify-content:flex-start}._dayBtn_10dfe_90{flex:0 0 14.2857%;min-width:0!important;padding:var(--space-1) 0!important;border-radius:var(--radius-md)!important}._dayMonth_10dfe_121{font-size:10px!important}._dayNum_10dfe_129{font-size:1rem!important}._dayName_10dfe_135{font-size:10px!important}._dayBtn_10dfe_90._active_10dfe_113{transform:translateY(-2px)!important}}._bannerContainer_1l49p_1{width:100vw;max-width:100vw;position:relative;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw;margin-top:calc(-1 * var(--header-height));margin-bottom:2.5rem;overflow:hidden;background-color:var(--bg-main);z-index:2}@media(max-width:1024px){._bannerContainer_1l49p_1{margin-top:calc(-1 * (var(--header-height) + 52px))}}@media(max-width:848px){._bannerContainer_1l49p_1{margin-top:-116px}}._hero_1l49p_28{position:relative;width:100%;height:clamp(480px,72svh,660px);overflow:hidden;background-color:var(--bg-main)}._ambient_1l49p_37{position:absolute;inset:-60px;width:calc(100% + 120px);height:calc(100% + 120px);object-fit:cover;object-position:center 22%;filter:blur(55px) brightness(.3) saturate(1.15);opacity:0;transition:opacity .6s ease}._ambientShow_1l49p_49{opacity:1}._scrim_1l49p_53{position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,#050508c7,#0505086b 42%,#0505080f 70%),linear-gradient(0deg,var(--bg-main) 0%,rgba(12,13,18,.82) 16%,transparent 46%),linear-gradient(180deg,transparent 0%,transparent 72px,rgba(5,5,8,.22) 100%)}._progressLine_1l49p_69{position:absolute;left:0;right:0;bottom:0;height:2px;z-index:6;background:#ffffff1a;overflow:hidden}._progressLine_1l49p_69:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--accent),var(--accent-light));transform-origin:left;animation:_progressFill_1l49p_1 8s linear forwards}._paused_1l49p_89 ._progressLine_1l49p_69:after{animation-play-state:paused}@keyframes _progressFill_1l49p_1{0%{transform:scaleX(0)}to{transform:scaleX(1)}}._dots_1l49p_103{position:absolute;left:50%;transform:translate(-50%);bottom:.6rem;z-index:5;display:flex;align-items:center;gap:.5rem;padding:10px 16px}._dot_1l49p_103{width:10px;height:10px;padding:0;border-radius:var(--radius-full);border:none;background:#ffffff4d;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1)}._dot_1l49p_103:not(._dotActive_1l49p_126):hover{background:#ffffffa6}._dotActive_1l49p_126{width:32px;background:var(--accent);box-shadow:0 0 10px var(--accent-glow)}._viewport_1l49p_137{position:absolute;inset:0;z-index:2;overflow:hidden}._track_1l49p_144{display:flex;height:100%;transition:transform .45s cubic-bezier(.22,1,.36,1)}._slide_1l49p_150{flex:0 0 100%;height:100%;display:flex;align-items:center;justify-content:center}._slideInner_1l49p_158{width:100%;max-width:var(--max-width);margin:0 auto;padding:4rem var(--space-8) 3.5rem;display:flex;align-items:center;gap:3rem}._poster_1l49p_168{width:clamp(110px,18vw,230px);height:auto;aspect-ratio:2 / 3;object-fit:cover;border-radius:var(--radius-lg);flex-shrink:0;border:1px solid rgba(255,255,255,.14);box-shadow:0 30px 80px #0009}._posterLandscape_1l49p_179{width:min(400px,38vw);aspect-ratio:16 / 9;height:auto;object-fit:cover;border-radius:var(--radius-lg);flex-shrink:0;border:1px solid rgba(255,255,255,.14);box-shadow:0 30px 80px #0009}@media(max-width:1024px){._posterLandscape_1l49p_179{width:min(320px,36vw)}}@media(max-width:768px)and (pointer:coarse){._posterLandscape_1l49p_179{width:100%;max-width:420px}}._info_1l49p_203{min-width:0;max-width:620px}._kicker_1l49p_208{display:flex;align-items:center;gap:.75rem;margin-bottom:.9rem}._featureLabel_1l49p_215{padding:.3rem .75rem;background:var(--accent-subtle);border:1px solid var(--border-accent);color:var(--accent-light);font-size:.75rem;font-weight:700;text-transform:uppercase;border-radius:var(--radius-full);letter-spacing:.08em}._scoreChip_1l49p_227{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .7rem;background:#00000073;border:1px solid var(--border-strong);border-radius:var(--radius-full);color:var(--accent-lighter);font-size:.8rem;font-weight:700;font-variant-numeric:tabular-nums;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}._slide_1l49p_150 ._rise_1l49p_245{opacity:1}._slide_1l49p_150._active_1l49p_249 ._rise_1l49p_245{animation:_riseIn_1l49p_1 .45s cubic-bezier(.22,1,.36,1) both}._slide_1l49p_150._active_1l49p_249 ._rise_1l49p_245:nth-child(1){animation-delay:.03s}._slide_1l49p_150._active_1l49p_249 ._rise_1l49p_245:nth-child(2){animation-delay:.07s}._slide_1l49p_150._active_1l49p_249 ._rise_1l49p_245:nth-child(3){animation-delay:.11s}._slide_1l49p_150._active_1l49p_249 ._rise_1l49p_245:nth-child(4){animation-delay:.15s}._slide_1l49p_150._active_1l49p_249 ._rise_1l49p_245:nth-child(5){animation-delay:.19s}._slide_1l49p_150._active_1l49p_249 ._rise_1l49p_245:nth-child(6){animation-delay:.23s}@keyframes _riseIn_1l49p_1{0%{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}._slide_1l49p_150._active_1l49p_249 ._poster_1l49p_168{animation:_posterIn_1l49p_1 .5s cubic-bezier(.22,1,.36,1)}@keyframes _posterIn_1l49p_1{0%{opacity:0;transform:translate(-30px) scale(.97)}to{opacity:1;transform:none}}._metaRow_1l49p_305{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;color:#ffffffb3;font-size:.9rem;font-weight:600;margin-bottom:.8rem}._metaItem_1l49p_316{display:flex;align-items:center;gap:4px}._metaDivider_1l49p_322{width:4px;height:4px;background:#ffffff4d;border-radius:50%}._title_1l49p_329{display:block;font-size:clamp(1.6rem,4.6vw,3rem);line-height:1.04;cursor:pointer;max-width:800px;margin-bottom:.9rem;text-shadow:0 2px 26px rgba(0,0,0,.75),0 1px 3px rgba(0,0,0,.9)}._title_1l49p_329:hover{color:var(--accent-light)}._genres_1l49p_345{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.9rem}._genreTag_1l49p_353{color:#fffc;border:1px solid rgba(255,255,255,.28);padding:.32rem .75rem;border-radius:var(--radius-full);font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}._summary_1l49p_364{font-size:.96rem;line-height:1.65;margin:0 0 1.6rem;color:#fffc;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-width:750px}._actions_1l49p_376{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap}._watchBtn_1l49p_383{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;padding:.85rem 2.1rem;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dark) 100%);color:var(--accent-text);font-size:.94rem;font-weight:700;border:none;border-radius:var(--radius-md);cursor:pointer;box-shadow:0 6px 24px var(--accent-glow);transition:transform .2s cubic-bezier(.22,1,.36,1);letter-spacing:.02em}._watchBtn_1l49p_383:hover{transform:translateY(-2px)}._detailsBtn_1l49p_405{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;padding:.85rem 1.8rem;background:#ffffff14;color:var(--text-primary);font-size:.94rem;font-weight:600;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-md);cursor:pointer;transition:background .2s ease}._detailsBtn_1l49p_405:hover{background:#ffffff29;color:#fff}._navArrow_1l49p_426{position:absolute;top:50%;transform:translateY(-50%);z-index:6;width:46px;height:46px;border-radius:50%;background:#0006;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.2);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .3s ease,border-color .2s ease,color .2s ease}._hero_1l49p_28:hover ._navArrow_1l49p_426{opacity:.9}._navArrow_1l49p_426:hover{border-color:var(--accent);color:var(--accent-light)}._prevArrow_1l49p_459{left:1.2rem}._nextArrow_1l49p_463{right:1.2rem}@media(max-width:768px)and (pointer:coarse){._hero_1l49p_28{min-height:92svh}._scrim_1l49p_53{background:linear-gradient(0deg,#050508e6,#05050859 55%,#05050873)}._slideInner_1l49p_158{flex-direction:column;justify-content:center;text-align:center;gap:1.3rem;padding:4.2rem var(--space-4) 2.4rem}._poster_1l49p_168{width:min(46vw,172px)}._slide_1l49p_150._active_1l49p_249 ._poster_1l49p_168{animation-name:_posterUp_1l49p_1}@keyframes _posterUp_1l49p_1{0%{opacity:0;transform:translateY(24px) scale(.97)}to{opacity:1;transform:none}}._kicker_1l49p_208{justify-content:center}._title_1l49p_329{font-size:1.6rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}._metaRow_1l49p_305{justify-content:center;font-size:.8rem}._genres_1l49p_345{justify-content:center}._genreTag_1l49p_353{font-size:.66rem}._summary_1l49p_364{display:none}._actions_1l49p_376{width:100%}._watchBtn_1l49p_383,._detailsBtn_1l49p_405{flex:1;justify-content:center;padding:.85rem .5rem;font-size:.87rem}._navArrow_1l49p_426{display:none}}@media(max-width:1024px){._slideInner_1l49p_158{gap:2rem}}@media(max-height:500px)and (orientation:landscape){._hero_1l49p_28{min-height:360px}._slideInner_1l49p_158{gap:1.5rem;padding:3.5rem var(--space-8) 3rem}._poster_1l49p_168{width:140px}._title_1l49p_329{font-size:1.5rem}._summary_1l49p_364{display:none}}._emptyState_19tmt_1{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-16) var(--space-8);background:linear-gradient(to bottom,var(--bg-tertiary),var(--bg-main));border-radius:var(--radius-lg);border:1px solid var(--border-primary);text-align:center;gap:var(--space-4);width:100%;min-height:320px}._emptyStateIcon_19tmt_16{color:var(--accent);opacity:.4;margin-bottom:var(--space-2);filter:drop-shadow(0 0 20px var(--accent-glow))}._emptyStateTitle_19tmt_23{font-size:1.5rem;font-weight:800;margin:0;color:var(--text-primary)}._emptyStateText_19tmt_30{font-size:1rem;color:var(--text-secondary);max-width:340px;line-height:1.6}._select_1dw63_1{height:34px;padding:0 8px;padding-right:1.5rem;background-color:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--font-size-sm);font-weight:700;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23a1a1aa' 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 .5rem center}._tabBar_irwbm_1{display:flex;align-items:center;gap:6px;margin-bottom:2.5rem;padding:6px;background:#ffffff0a;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-primary);border-radius:var(--radius-full);width:fit-content;max-width:100%;overflow-x:auto;scrollbar-width:none;box-shadow:0 4px 20px #0003;position:relative}._tabBar_irwbm_1::-webkit-scrollbar{display:none}._tabIndicator_irwbm_24{position:absolute;top:6px;bottom:6px;border-radius:var(--radius-full);background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dark) 100%);box-shadow:0 4px 15px var(--accent-glow);transition:left .22s cubic-bezier(.2,1.2,.3,1),width .22s cubic-bezier(.2,1.2,.3,1);z-index:0;pointer-events:none}._tabButton_irwbm_38{border-radius:var(--radius-full)!important;font-weight:700!important;font-size:.85rem!important;padding:.65rem 1.4rem!important;letter-spacing:.02em;transition:color .25s ease!important;border:none!important;background:transparent!important;color:var(--text-muted)!important;position:relative;z-index:1;flex-shrink:0}._tabButton_irwbm_38:hover:not(:disabled){background:transparent!important;color:var(--text-muted)!important;box-shadow:none!important;transform:none!important}._tabButton_irwbm_38:active{transform:scale(.96)}._tabActive_irwbm_64{color:var(--accent-text)!important}._tabActive_irwbm_64:hover:not(:disabled){color:var(--accent-text)!important;transform:none!important}@media(max-width:600px){._tabBar_irwbm_1{width:100%;justify-content:flex-start}._tabButton_irwbm_38{flex:1;justify-content:center!important;padding:.65rem .5rem!important;text-align:center;font-size:.78rem!important}}._section-header_knq79_1{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-8)}._title-wrapper_knq79_8{display:flex;align-items:center;gap:var(--space-6)}._pagination-controls_knq79_14{display:flex;gap:8px;align-items:center;background:var(--bg-tertiary);padding:4px;border-radius:var(--radius-md);border:1px solid var(--border-primary)}._seasonGrid_knq79_24{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-4)}._emptyState_bpz5x_1{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-16) var(--space-8);background:linear-gradient(to bottom,var(--bg-tertiary),var(--bg-main));border-radius:var(--radius-lg);border:1px solid var(--border-primary);text-align:center;gap:var(--space-4);width:100%;min-height:320px}
@@ -1 +0,0 @@
1
- import{d as E,A as q,h as O,q as P,g as G,u as e,L as Ee,T as Q,S as se,a as J,_ as je}from"./vendor-core-DfaOB3Rn.js";import{b as Ze,u as Je,a as et}from"./vendor-query-BBT5_sHx.js";import{M as me,P as tt}from"./MediaCard-lz7FdOe_.js";import{A as le}from"./AnimeCard-BxhPLWBG.js";import{S as De,A as We}from"./SkeletonGrid-pA-dcLBM.js";import{I as V}from"./vendor-icons-DrybRNxP.js";import{u as Se,a as oe,b as at,c as nt,q as Oe,t as rt,d as Ve,s as ot,f as Te,B as Fe,e as st,g as ne,h as we,i as lt,j as Le,k as it,l as ct,m as dt,n as ut,o as ht,p as pt,r as mt,v as gt,w as vt}from"./index-DlcgJVM6.js";import{u as _t}from"./vendor-ui-3qrARCPr.js";import{E as ke}from"./ErrorMessage-DAxegITP.js";import{R as qe}from"./ResetProgressModal-0PvvM2XJ.js";import{Q as ft}from"./QueueRail-D1FmM-GR.js";import{u as ze,M as Ge}from"./useMangaPopup-B_wRaMyP.js";import{M as bt}from"./MangaResetProgressModal-Br5zqZ-U.js";import{u as Ue,a as yt,m as Ne,i as Qe,b as Ce,c as Ye,d as Tt,e as Nt}from"./useMangaLibrary-BacTdrw2.js";import{u as St}from"./useProviders-D0XOHCsj.js";import{u as He,a as $e,T as wt}from"./useTv-IidbSQU4.js";import{T as kt}from"./TvPopup-BwGJ1Tjg.js";import{u as Ct,a as It,b as At,t as Rt,i as Lt,c as $t,M as Mt,T as xt}from"./useTvLibrary-DiCSdUOj.js";import{A as Bt}from"./AsmrResetProgressModal-DPHPLqPo.js";import{u as Pt,a as Et,b as Dt}from"./useAsmr-B-FYJW2L.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-Beq4JL0b.js";import"./useAnimeInfoData-tcGkDs2b.js";import"./QueueOptionsButton-B8xuoYlH.js";import"./playbackCompletion-IPHm9fp5.js";import"./usePopup-DS9jMzp6.js";import"./libraryInvalidation-DdnIPcOQ.js";const Wt="_sectionWrapper_2p2l1_9",Ot="_sectionTitleNoMargin_2p2l1_13",Vt="_carousel_2p2l1_178",B={"section-header":"_section-header_2p2l1_1",sectionWrapper:Wt,sectionTitleNoMargin:Ot,"title-wrapper":"_title-wrapper_2p2l1_17","header-controls":"_header-controls_2p2l1_24","header-select":"_header-select_2p2l1_30","collapse-button":"_collapse-button_2p2l1_79","title-link":"_title-link_2p2l1_98","continue-watching":"_continue-watching_2p2l1_117","nav-arrows":"_nav-arrows_2p2l1_139","nav-button":"_nav-button_2p2l1_148","carousel-container":"_carousel-container_2p2l1_178",carousel:Vt,"carousel-inner":"_carousel-inner_2p2l1_187","carousel-card":"_carousel-card_2p2l1_192"};function ge({align:n="start",containScroll:s="trimSnaps",scrollFraction:h=.8,threshold:t=.6,onReachThreshold:o}={}){const[l,i]=_t({align:n,containScroll:s,dragFree:!0}),[d,T]=E(!1),_=q({scrollFraction:h,threshold:t,onReachThreshold:o}),m=q(!1);O(()=>{_.current={scrollFraction:h,threshold:t,onReachThreshold:o}});const p=P(u=>{T(u.canScrollPrev()||u.canScrollNext())},[]);O(()=>{if(!i)return;const u=()=>{const c=i.scrollProgress();c>=_.current.threshold&&!m.current?(m.current=!0,_.current.onReachThreshold?.()):c<_.current.threshold&&(m.current=!1),p(i)};return i.on("init",u),i.on("reInit",u),i.on("scroll",u),i.on("resize",u),()=>{i.off("init",u),i.off("reInit",u),i.off("scroll",u),i.off("resize",u)}},[i,p]);const N=P(u=>{const c=u.containerNode().firstElementChild;if(!c)return 1;const g=u.rootNode().getBoundingClientRect().width,k=c.getBoundingClientRect().width;return k?Math.max(1,Math.round(g/k)):1},[]),r=P((u,c=!1)=>{if(!i)return;const g=Math.max(1,Math.round(N(i)*_.current.scrollFraction)),k=i.selectedScrollSnap()+(u==="left"?-g:g);i.scrollTo(k,c)},[i,N]),w=P((u=!1)=>{i?.scrollTo(0,u)},[i]);return{emblaRef:l,api:i,canScroll:d,stepBy:r,scrollToStart:w}}const Z=({title:n,eyebrow:s,titleLink:h,loading:t,emptyState:o,carousel:l,layout:i,collapsible:d,defaultExpanded:T=!0,onReachThreshold:_,scrollThreshold:m,isFetchingNextPage:p,resetScrollOnShrink:N,itemCount:r=0,highlight:w,headerActions:u,loadingSkeleton:c,skeletonCount:g=7,children:k})=>{const{lowEndMode:S}=Se(),{emblaRef:A,stepBy:$,scrollToStart:R}=ge({onReachThreshold:_,threshold:m}),[C,U]=G.useState(T);G.useEffect(()=>{U(T)},[T]);const x=G.useRef(0);return G.useEffect(()=>{N&&r>0&&C&&(r<=x.current||x.current===0)&&R(),r>0&&(x.current=r)},[r,N,C,R]),!t&&r===0&&!o&&!d?null:e("section",{className:`${B.sectionWrapper} ${w?B["continue-watching"]:""}`,children:[e("div",{className:B["section-header"],children:[e("div",{className:B["title-wrapper"],children:[e("div",{className:"title-stack",children:[s&&e("div",{className:"section-eyebrow",children:s}),h?e(Ee,{to:h,className:B["title-link"],children:e("div",{className:`section-title ${B.sectionTitleNoMargin}`,children:n})}):e("div",{className:`section-title ${B.sectionTitleNoMargin}`,children:n})]}),l&&r>0&&C&&e("div",{className:B["nav-arrows"],children:[e("button",{className:B["nav-button"],type:"button","aria-label":"Scroll left",onClick:I=>{I.preventDefault(),$("left",S)},children:e(V,{name:"chevron-left"})}),e("button",{className:B["nav-button"],type:"button","aria-label":"Scroll right",onClick:I=>{I.preventDefault(),$("right",S)},children:e(V,{name:"chevron-right"})})]})]}),e("div",{className:B["header-controls"],children:[u,d&&e("button",{className:B["collapse-button"],type:"button",onClick:()=>U(I=>!I),"aria-expanded":C,"aria-label":C?`Collapse ${n}`:`Expand ${n}`,children:C?e(V,{name:"chevron-up"}):e(V,{name:"chevron-down"})})]})]}),C&&(l?!t&&r===0&&o?e("div",{children:o}):e("div",{className:B["carousel-container"],children:e("div",{className:B.carousel,ref:A,children:e("div",{className:B["carousel-inner"],children:[t&&r===0?Array.from({length:g}).map((I,F)=>e("div",{className:B["carousel-card"],children:c},F)):G.Children.map(k,(I,F)=>e("div",{className:B["carousel-card"],children:I},G.isValidElement(I)&&I.key!=null?I.key:`slide-${F}`)),p&&c&&e("div",{className:B["carousel-card"],children:c})]})})}):e("div",{className:"grid-container",children:t&&r===0?e(De,{count:6,layout:i}):r>0?k:t?null:e("div",{style:{gridColumn:"1 / -1"},children:o})}))]})},Ft=({title:n,eyebrow:s,animeList:h,continueWatching:t,titleLink:o,onRemove:l,loading:i,emptyState:d,carousel:T,cardConfig:_,layout:m,onReachThreshold:p,scrollThreshold:N,isFetchingNextPage:r,collapsible:w,defaultExpanded:u=!0})=>{const c=m||"vertical";return e(Z,{title:n,eyebrow:s,titleLink:o,loading:i,emptyState:d,carousel:T,layout:c,collapsible:w,defaultExpanded:u,onReachThreshold:p,scrollThreshold:N,isFetchingNextPage:r,resetScrollOnShrink:t,highlight:t,itemCount:h.length,loadingSkeleton:e(We,{layout:c}),skeletonCount:7,children:h.map(g=>e(le,{anime:g,continueWatching:t,onRemove:l,config:_,layout:c},g._id))})},Me=G.memo(Ft),qt="_sectionWrapper_xt8h9_2",zt="_sectionTitleNoMargin_xt8h9_6",Gt="_timeSelect_xt8h9_80",Ut="_carouselContainer_xt8h9_111",Qt="_carousel_xt8h9_111",Yt="_carouselInner_xt8h9_122",Ht="_carouselItem_xt8h9_127",Xt="_rankCard_xt8h9_164",Kt="_rankPill_xt8h9_168",jt="_rankGold_xt8h9_179",Zt="_rankSilver_xt8h9_183",Jt="_rankBronze_xt8h9_187",ea="_skeletonPoster_xt8h9_198",ta="_skeletonText_xt8h9_199",v={sectionWrapper:qt,sectionTitleNoMargin:zt,"section-header":"_section-header_xt8h9_10","title-wrapper":"_title-wrapper_xt8h9_18","nav-arrows":"_nav-arrows_xt8h9_40","nav-button":"_nav-button_xt8h9_49",timeSelect:Gt,carouselContainer:Ut,carousel:Qt,carouselInner:Yt,carouselItem:Ht,rankCard:Xt,rankPill:Kt,rankGold:jt,rankSilver:Zt,rankBronze:Jt,skeletonPoster:ea,skeletonText:ta,"header-actions":"_header-actions_xt8h9_236"},xe="TRENDING_DESC",aa="POPULARITY_DESC",na=10;function ra({title:n,eyebrow:s}){const{lowEndMode:h}=Se(),[t,o]=oe("trending_sort",xe),l=[{value:xe,label:"Trending"},{value:aa,label:"All Time"}],{data:i,fetchNextPage:d,hasNextPage:T,isFetchingNextPage:_,isLoading:m,isError:p,error:N}=at(t,na),r=Q(()=>i?.pages.flatMap(g=>g)||[],[i]),w=P(()=>{T&&!_&&!m&&d()},[T,_,m,d]),{emblaRef:u,stepBy:c}=ge({onReachThreshold:w});return e("section",{className:v.sectionWrapper,children:[e("div",{className:v["section-header"],children:[e("div",{className:v["title-wrapper"],children:[e("div",{className:"title-stack",children:[s&&e("div",{className:"section-eyebrow",children:s}),e("div",{className:`section-title ${v.sectionTitleNoMargin}`,children:n})]}),e("div",{className:v["nav-arrows"],children:[e("button",{className:v["nav-button"],type:"button",onClick:g=>{g.preventDefault(),c("left",h)},"aria-label":"Scroll left",children:e(V,{name:"chevron-left"})}),e("button",{className:v["nav-button"],type:"button",onClick:g=>{g.preventDefault(),c("right",h)},"aria-label":"Scroll right",children:e(V,{name:"chevron-right"})})]})]}),e("div",{className:v["header-actions"],children:e("select",{className:v.timeSelect,value:t,onChange:g=>o(g.currentTarget.value),children:l.map(g=>e("option",{value:g.value,children:g.label},g.value))})})]}),m?e("div",{className:v.carouselContainer,children:e("div",{className:v.carousel,children:e("div",{className:v.carouselInner,children:Array.from({length:7}).map((g,k)=>e("div",{className:v.carouselItem,children:[e("div",{className:v.skeletonPoster}),e("div",{className:v.skeletonText})]},k))})})}):p?e(ke,{message:N instanceof Error?N.message:"An unknown error occurred"}):e("div",{className:v.carouselContainer,children:e("div",{className:v.carousel,ref:u,children:e("div",{className:v.carouselInner,children:[r.map((g,k)=>e("div",{className:v.carouselItem,children:[e("div",{className:v.rankCard,children:e(le,{anime:g})}),e("div",{className:`${v.rankPill} ${k===0?v.rankGold:k===1?v.rankSilver:k===2?v.rankBronze:""}`,children:k+1})]},g._id)),_&&e("div",{className:v.carouselItem,style:{minWidth:"150px",display:"flex",alignItems:"center",justifyContent:"center"},children:e("div",{className:v.skeletonPoster})})]})})})]})}const oa=[{value:"TV",label:"TV"},{value:"ONA",label:"ONA"},{value:"OVA",label:"OVA"},{value:"MOVIE",label:"Movie"},{value:"ALL",label:"All"},{value:"ADULT",label:"Mature"}],sa=10;function la({eyebrow:n}){const{lowEndMode:s}=Se(),[h,t]=oe("latest_releases_format","TV"),{data:o,fetchNextPage:l,hasNextPage:i,isFetchingNextPage:d,isLoading:T,isError:_,error:m}=nt(h,sa),p=Q(()=>o?.pages.flatMap(u=>u)||[],[o]),N=P(()=>{i&&!d&&!T&&l()},[i,d,T,l]),{emblaRef:r,stepBy:w}=ge({onReachThreshold:N});return e("section",{className:v.sectionWrapper,children:[e("div",{className:v["section-header"],children:[e("div",{className:v["title-wrapper"],children:[e("div",{className:"title-stack",children:[n&&e("div",{className:"section-eyebrow",children:n}),e("div",{className:`section-title ${v.sectionTitleNoMargin}`,children:"Latest Releases"})]}),e("div",{className:v["nav-arrows"],children:[e("button",{className:v["nav-button"],type:"button",onClick:u=>{u.preventDefault(),w("left",s)},"aria-label":"Scroll left",children:e(V,{name:"chevron-left"})}),e("button",{className:v["nav-button"],type:"button",onClick:u=>{u.preventDefault(),w("right",s)},"aria-label":"Scroll right",children:e(V,{name:"chevron-right"})})]})]}),e("div",{className:v["header-actions"],children:e("select",{className:v.timeSelect,value:h,onChange:u=>t(u.currentTarget.value),children:oa.map(u=>e("option",{value:u.value,children:u.label},u.value))})})]}),T?e("div",{className:v.carouselContainer,children:e("div",{className:v.carousel,children:e("div",{className:v.carouselInner,children:Array.from({length:7}).map((u,c)=>e("div",{className:v.carouselItem,children:[e("div",{className:v.skeletonPoster}),e("div",{className:v.skeletonText})]},c))})})}):_?e(ke,{message:m instanceof Error?m.message:"An unknown error occurred"}):e("div",{className:v.carouselContainer,children:e("div",{className:v.carousel,ref:r,children:e("div",{className:v.carouselInner,children:[p.map(u=>e("div",{className:v.carouselItem,children:e(le,{anime:u})},u._id)),d&&e("div",{className:v.carouselItem,style:{minWidth:"150px",display:"flex",alignItems:"center",justifyContent:"center"},children:e("div",{className:v.skeletonPoster})})]})})})]})}const ia="_scheduleSection_10dfe_1",ca="_sectionTitleRow_10dfe_5",da="_sectionTitleNoMargin_10dfe_11",ua="_sectionHeader_10dfe_15",ha="_headerActions_10dfe_25",pa="_timeSelect_10dfe_31",ma="_daySelectorContainer_10dfe_62",ga="_daySelector_10dfe_62",va="_daySelectorInner_10dfe_79",_a="_dayBtn_10dfe_90",fa="_active_10dfe_113",ba="_dayMonth_10dfe_121",ya="_dayNum_10dfe_129",Ta="_dayName_10dfe_135",Na="_navArrows_10dfe_148",Sa="_navButton_10dfe_157",wa="_carouselContainer_10dfe_181",ka="_carousel_10dfe_181",Ca="_carouselInner_10dfe_193",Ia="_carouselCard_10dfe_198",L={scheduleSection:ia,sectionTitleRow:ca,sectionTitleNoMargin:da,sectionHeader:ua,headerActions:ha,timeSelect:pa,daySelectorContainer:ma,daySelector:ga,daySelectorInner:va,dayBtn:_a,active:fa,dayMonth:ba,dayNum:ya,dayName:Ta,navArrows:Na,navButton:Sa,carouselContainer:wa,carousel:ka,carouselInner:Ca,carouselCard:Ia},ie=n=>{const s=n.getFullYear(),h=String(n.getMonth()+1).padStart(2,"0"),t=String(n.getDate()).padStart(2,"0");return`${s}-${h}-${t}`},Aa=async(n,s)=>await rt.data.schedule.query({date:n,format:s}),Ra=({eyebrow:n})=>{const[s,h]=E(()=>ie(new Date)),[t,o]=oe("schedule_format","TV"),{emblaRef:l,canScroll:i,stepBy:d,scrollToStart:T}=ge(),_=q(null),m=q(!0),{data:p=[],isLoading:N,error:r}=Ze({queryKey:[Oe.schedule,s,t],queryFn:()=>Aa(s,t),staleTime:1e3*60*5}),w=Q(()=>{const c=[],g=new Date,k=ie(g),S=new Date(g);S.setDate(g.getDate()-1);const A=ie(S),$=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];for(let R=-6;R<=6;R++){const C=new Date(g);C.setDate(g.getDate()+R),c.push(C)}return c.map(R=>{const C=ie(R),I=C===k?"Today":C===A?"Yest":$[R.getDay()],F=R.getDate(),M=new Intl.DateTimeFormat("en-US",{month:"short"}).format(R);return{dateString:C,dayLabel:I,dayNum:F,monthName:M}})},[]);O(()=>{if(m.current){m.current=!1;return}if(_.current){const c=_.current.querySelector(`[data-date="${s}"]`);c&&c.scrollIntoView({behavior:"smooth",inline:"center",block:"nearest"})}},[s]),O(()=>{T(!0)},[s,T]);const u=[{value:"TV",label:"TV"},{value:"ONA",label:"ONA"},{value:"OVA",label:"OVA"},{value:"MOVIE",label:"Movie"},{value:"ALL",label:"All"},{value:"ADULT",label:"Mature"}];return e("div",{className:L.scheduleSection,children:[e("div",{className:L.sectionHeader,children:[e("div",{className:L.sectionTitleRow,children:[e("div",{className:"title-stack",children:[n&&e("div",{className:"section-eyebrow",children:n}),e("h2",{className:`section-title ${L.sectionTitleNoMargin}`,children:"Episode Schedule"})]}),p.length>0&&i&&e("div",{className:L.navArrows,children:[e("button",{className:L.navButton,onClick:()=>d("left"),"aria-label":"Scroll left",children:e(V,{name:"chevron-left"})}),e("button",{className:L.navButton,onClick:()=>d("right"),"aria-label":"Scroll right",children:e(V,{name:"chevron-right"})})]})]}),e("div",{className:L.headerActions,children:e("select",{className:L.timeSelect,value:t,onChange:c=>o(c.currentTarget.value),children:u.map(c=>e("option",{value:c.value,children:c.label},c.value))})})]}),e("div",{className:L.daySelectorContainer,children:e("div",{className:L.daySelector,ref:_,children:e("div",{className:L.daySelectorInner,children:w.map(c=>e("button",{type:"button","data-date":c.dateString,className:`${L.dayBtn} ${s===c.dateString?L.active:""}`,onClick:()=>h(c.dateString),children:[e("span",{className:L.dayMonth,children:c.monthName}),e("span",{className:L.dayNum,children:c.dayNum}),e("span",{className:L.dayName,children:c.dayLabel})]},c.dateString))})})}),e("div",{className:L.carouselContainer,children:e("div",{className:L.carousel,ref:l,children:e("div",{className:L.carouselInner,children:N?Array.from({length:7}).map((c,g)=>e("div",{className:L.carouselCard,children:e(We,{layout:"vertical"})},g)):r?e("div",{style:{width:"100%"},children:e(ke,{message:r instanceof Error?r.message:"An unknown error occurred"})}):p.length===0?e("p",{style:{textAlign:"center",marginTop:"1rem",width:"100%"},children:"No episodes scheduled for this day."}):p.map(c=>e("div",{className:L.carouselCard,children:e(le,{anime:c,continueWatching:!1,layout:"vertical"},c._id)},c._id))})})})]})},La="_bannerContainer_1l49p_1",$a="_hero_1l49p_28",Ma="_ambient_1l49p_37",xa="_ambientShow_1l49p_49",Ba="_scrim_1l49p_53",Pa="_progressLine_1l49p_69",Ea="_paused_1l49p_89",Da="_dots_1l49p_103",Wa="_dot_1l49p_103",Oa="_dotActive_1l49p_126",Va="_viewport_1l49p_137",Fa="_track_1l49p_144",qa="_slide_1l49p_150",za="_slideInner_1l49p_158",Ga="_poster_1l49p_168",Ua="_posterLandscape_1l49p_179",Qa="_info_1l49p_203",Ya="_kicker_1l49p_208",Ha="_featureLabel_1l49p_215",Xa="_scoreChip_1l49p_227",Ka="_rise_1l49p_245",ja="_active_1l49p_249",Za="_metaRow_1l49p_305",Ja="_metaItem_1l49p_316",en="_metaDivider_1l49p_322",tn="_title_1l49p_329",an="_genres_1l49p_345",nn="_genreTag_1l49p_353",rn="_summary_1l49p_364",on="_actions_1l49p_376",sn="_watchBtn_1l49p_383",ln="_detailsBtn_1l49p_405",cn="_navArrow_1l49p_426",dn="_prevArrow_1l49p_459",un="_nextArrow_1l49p_463",b={bannerContainer:La,hero:$a,ambient:Ma,ambientShow:xa,scrim:Ba,progressLine:Pa,paused:Ea,dots:Da,dot:Wa,dotActive:Oa,viewport:Va,track:Fa,slide:qa,slideInner:za,poster:Ga,posterLandscape:Ua,info:Qa,kicker:Ya,featureLabel:Ha,scoreChip:Xa,rise:Ka,active:ja,metaRow:Za,metaItem:Ja,metaDivider:en,title:tn,genres:an,genreTag:nn,summary:rn,actions:on,watchBtn:sn,detailsBtn:ln,navArrow:cn,prevArrow:dn,nextArrow:un},hn=8e3,ce=()=>e("div",{className:"skeleton",style:{width:"100vw",maxWidth:"100vw",position:"relative",left:"50%",right:"50%",marginLeft:"-50vw",marginRight:"-50vw",height:"clamp(480px, 72vh, 660px)",marginTop:"calc(-1 * var(--header-height))",marginBottom:"2.5rem"}}),ve=({slides:n,posterAspect:s="portrait",eyebrow:h="Spotlight"})=>{const[t,o]=E(0),[l,i]=E(0),[d,T]=E(!1),[_,m]=E(null),[p,N]=E(0),[r,w]=E({front:"",back:"",flip:!1}),u=q(0),c=q(0),g=q(new Set),k=q(null),S=q(0),A=P(a=>a.bannerSrc,[]),$=P(()=>{i(a=>a+1)},[]),R=P(a=>{k.current!==null&&(window.clearTimeout(k.current),k.current=null),m(null),$();const f=A(n[a]);w(y=>y.flip?{front:f,back:y.back,flip:!1}:{front:y.front,back:f,flip:!0}),o(a)},[$,n,A]),C=P(a=>{if(n.length===0)return;const f=(a%n.length+n.length)%n.length;g.current.has(A(n[f]))?R(f):m(f)},[n,A,R]);O(()=>{let a=!1;return n.forEach(f=>{const y=A(f);if(!y||g.current.has(y))return;const D=new Image;D.src=y;const K=()=>{a||g.current.has(y)||(g.current.add(y),N(z=>z+1))};D.onload=K,D.onerror=K}),()=>{a=!0}},[n,A]),O(()=>{if(n.length!==0&&!r.front){const a=A(n[0]);w({front:a,back:"",flip:!1})}},[n,r.front,A]),O(()=>{if(_!==null){if(_<0||_>=n.length){m(null);return}g.current.has(A(n[_]))&&R(_)}},[_,p,n,A,R]),O(()=>{if(_===null)return;k.current!==null&&window.clearTimeout(k.current);const a=_;return k.current=window.setTimeout(()=>{k.current=null,R(a)},2500),()=>{k.current!==null&&(window.clearTimeout(k.current),k.current=null)}},[_,R]);const U=P(a=>{C(a)},[C]),x=P(()=>{C(S.current+1)},[C]),I=P(()=>{C(S.current-1)},[C]),F=q(null);if(O(()=>{const a=F.current;if(!a)return;const f=y=>{if(Math.abs(y.deltaY)>Math.abs(y.deltaX)&&Math.abs(y.deltaY)>5){y.preventDefault(),y.stopPropagation();const D=Date.now();if(D-u.current<300)return;u.current=D,$(),y.deltaY>0?x():I()}};return a.addEventListener("wheel",f,{passive:!1}),()=>a.removeEventListener("wheel",f)},[n.length,x,I,$]),O(()=>{if(n.length===0||d)return;const a=setTimeout(x,hn);return()=>clearTimeout(a)},[t,x,n.length,l,d]),O(()=>{const a=f=>{const y=f.target;y&&(y.tagName==="INPUT"||y.tagName==="TEXTAREA"||y.tagName==="SELECT"||y.isContentEditable)||(f.key==="ArrowRight"?(f.preventDefault(),x()):f.key==="ArrowLeft"&&(f.preventDefault(),I()))};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[x,I]),O(()=>{t>=n.length&&o(0)},[n.length,t]),n.length===0)return null;const M=t>=n.length?0:t;S.current=M;const ee=a=>{c.current=a.touches[0].clientX},H=a=>{const y=a.changedTouches[0].clientX-c.current;Math.abs(y)>50&&($(),y>0?I():x())};return e("div",{className:b.bannerContainer,onMouseEnter:()=>T(!0),onMouseLeave:()=>T(!1),children:e("div",{className:`${b.hero} ${d?b.paused:""}`,onTouchStart:ee,onTouchEnd:H,children:[r.front&&e("img",{src:r.front,alt:"","aria-hidden":"true",className:`${b.ambient} ${r.flip?"":b.ambientShow}`}),r.back&&e("img",{src:r.back,alt:"","aria-hidden":"true",className:`${b.ambient} ${r.flip?b.ambientShow:""}`}),e("div",{className:b.scrim,"aria-hidden":"true"}),n.length>1&&e("div",{className:b.progressLine,"aria-hidden":"true"},`progress-${l}-${M}`),n.length>1&&e("div",{className:b.dots,ref:F,role:"tablist","aria-label":"Spotlight slides",children:n.map((a,f)=>e("button",{role:"tab","aria-selected":f===M,"aria-label":`Go to slide ${f+1}: ${a.title}`,className:`${b.dot} ${f===M?b.dotActive:""}`,onClick:()=>U(f),tabIndex:f===M?0:-1},a.key))}),e("div",{className:b.viewport,children:e("div",{className:b.track,style:{transform:`translateX(-${M*100}%)`},children:n.map((a,f)=>e("div",{className:`${b.slide} ${f===M?b.active:""}`,"aria-hidden":f!==M,children:e("div",{className:b.slideInner,children:[e("img",{src:a.posterSrc,alt:a.posterAlt,className:s==="landscape"?b.posterLandscape:b.poster,decoding:"async"}),e("div",{className:b.info,children:[e("div",{className:`${b.kicker} ${b.rise}`,children:[e("span",{className:b.featureLabel,children:h}),a.score!==void 0&&a.score!==null&&a.score!==""&&e("span",{className:b.scoreChip,children:[e(V,{name:"star",size:12}),e("span",{children:a.score})]})]}),e(Ee,{to:a.detailTo,className:`${b.title} ${b.rise}`,"aria-label":`View details for ${a.title}`,tabIndex:f===M?0:-1,children:a.title}),a.metaItems.length>0&&e("div",{className:`${b.metaRow} ${b.rise}`,children:a.metaItems.map((y,D)=>e(G.Fragment,{children:[e("span",{className:b.metaItem,children:y}),D<a.metaItems.length-1&&e("div",{className:b.metaDivider})]},D))}),a.tags.length>0&&e("div",{className:`${b.genres} ${b.rise}`,children:a.tags.slice(0,3).map(y=>e("span",{className:b.genreTag,children:y},y))}),a.synopsis&&e("p",{className:`${b.summary} ${b.rise}`,children:a.synopsis}),e("div",{className:`${b.actions} ${b.rise}`,children:[e("button",{className:b.watchBtn,onClick:a.onPrimary,tabIndex:f===M?0:-1,children:[e(V,{name:a.primaryIcon,size:14}),e("span",{children:a.primaryLabel})]}),e("button",{className:b.detailsBtn,onClick:a.onDetails,tabIndex:f===M?0:-1,children:[e(V,{name:"info-circle",size:15}),e("span",{children:"Details"})]})]})]})]})},a.key))})}),n.length>1&&e(se,{children:[e("button",{className:`${b.navArrow} ${b.prevArrow}`,onClick:()=>{$(),I()},"aria-label":"Previous slide",children:e(V,{name:"chevron-left",size:20})}),e("button",{className:`${b.navArrow} ${b.nextArrow}`,onClick:()=>{$(),x()},"aria-label":"Next slide",children:e(V,{name:"chevron-right",size:20})})]})]})})},pn=({animeList:n})=>{const{titlePreference:s}=Ve(),h=J(),t=Q(()=>n.slice(0,6).map(o=>{const l=s==="nativeName"?o.nativeName||o.name:s==="englishName"&&o.englishName||o.name;return{key:o._id,bannerSrc:o.bannerImage?Te(o.bannerImage,1280,560):Te(o.thumbnail,1280,450),posterSrc:Te(o.thumbnail,460,650),posterAlt:l,title:l,detailTo:`/anime/${o._id}`,score:o.score,metaItems:[o.type||"Anime",o.status,o.episodeCount?`${o.episodeCount} Episodes`:void 0,o.rating].filter(i=>!!i),tags:(o.genres??[]).slice(0,3).map(i=>typeof i=="string"?i:i?.name).filter(i=>!!i),synopsis:ot(o.description??""),primaryLabel:"Watch Now",primaryIcon:"play",onPrimary:()=>h(`/watch/${o._id}`),onDetails:()=>h(`/anime/${o._id}`)}}),[n,s,h]);return e(ve,{slides:t})},mn="_emptyState_19tmt_1",gn="_emptyStateIcon_19tmt_16",vn="_emptyStateTitle_19tmt_23",_n="_emptyStateText_19tmt_30",de={emptyState:mn,emptyStateIcon:gn,emptyStateTitle:vn,emptyStateText:_n},_e=({icon:n,text:s,actionLabel:h,onAction:t,title:o="Nothing is here..."})=>e("div",{className:de.emptyState,children:[e(V,{name:n,size:48,className:de.emptyStateIcon}),e("div",{children:[e("h3",{className:de.emptyStateTitle,children:o}),e("p",{className:de.emptyStateText,children:s})]}),e(Fe,{variant:"primary",size:"sm",onClick:t,style:{marginTop:"1rem"},children:h})]}),fn="_select_1dw63_1",bn={select:fn},he=({value:n,options:s,onChange:h,ariaLabel:t,width:o})=>e("select",{className:bn.select,style:o!==void 0?{width:o}:void 0,value:n,"aria-label":t,onChange:l=>h(l.currentTarget.value),children:s.map(l=>e("option",{value:l.value,children:l.label},l.value))}),yn="_tabBar_irwbm_1",Tn="_tabIndicator_irwbm_24",Nn="_tabButton_irwbm_38",Sn="_tabActive_irwbm_64",ue={tabBar:yn,tabIndicator:Tn,tabButton:Nn,tabActive:Sn};function wn({options:n,value:s,onChange:h,ariaLabel:t},o){const l=q(null),i=q(new Map),d=q(null),[T,_]=E({left:0,width:0}),m=P((p,N)=>{const r=i.current.get(p),w=l.current;if(r&&w){const u=w.getBoundingClientRect(),c=r.getBoundingClientRect();_({left:c.left-u.left+w.scrollLeft,width:c.width}),N&&r.scrollIntoView({block:"nearest",inline:"nearest"})}},[]);return je(()=>{const p=d.current!==null&&d.current!==s;d.current=s,m(s,p)},[s,n.length,m]),O(()=>{if(m(s,!1),typeof ResizeObserver>"u")return;let p=0;const N=l.current;if(!N)return;const r=new ResizeObserver(()=>{cancelAnimationFrame(p),p=requestAnimationFrame(()=>m(s,!1))});r.observe(N);let w=!1;return document.fonts?.ready&&document.fonts.ready.then(()=>{w||m(s,!1)}),()=>{w=!0,cancelAnimationFrame(p),r.disconnect()}},[s,n.length,m]),e("div",{className:ue.tabBar,ref:p=>{l.current=p,typeof o=="function"?o(p):o&&(o.current=p)},"aria-label":t,children:[e("div",{className:ue.tabIndicator,style:{left:T.left,width:T.width}}),n.map(p=>e(Fe,{ref:N=>{N&&i.current.set(p.value,N)},variant:"secondary",size:"sm",className:`${ue.tabButton} ${s===p.value?ue.tabActive:""}`,onClick:()=>h(p.value),children:p.label},p.value))]})}const pe=G.forwardRef(wn),kn=[{value:"popular",label:"Popular"},{value:"followed",label:"Most Followed"},{value:"rating",label:"Top Rated"}],Be=({title:n,eyebrow:s,sort:h,mature:t,headerActions:o})=>{const{toggle:l,bookmarkedIds:i}=Ue(),{popup:d,openPopup:T,scheduleClose:_,cancelClose:m,closePopup:p}=ze(),{data:N,isLoading:r,fetchNextPage:w,hasNextPage:u,isFetchingNextPage:c}=yt({provider:"",query:"",sort:h,status:"",type:"",rating:t?"safe,suggestive,erotica,pornographic":"safe",mature:t}),g=Q(()=>N?.pages.flatMap(S=>S.items)??[],[N]),k=P(()=>{u&&!c&&!r&&w()},[u,c,r,w]);return e(se,{children:[e(Z,{title:n,eyebrow:s,loading:r,carousel:!0,itemCount:g.length,headerActions:o,onReachThreshold:k,isFetchingNextPage:c,loadingSkeleton:e("div",{className:"skeleton",style:{aspectRatio:"3 / 4"}}),skeletonCount:7,children:g.map(S=>{const A=Ne(S.provider,S.id);return e(me,{item:{id:A,title:S.title,...Ye(S),thumbnail:Ce(S.provider,S.cover),typeBadge:S.type||void 0,chapterBadge:S.latestChapter?`Ch. ${S.latestChapter}`:null,isAdult:Qe(S)},linkTo:`/manga/${S.provider}/${encodeURIComponent(S.id)}`,hoverIcon:"info",showInfoButton:!0,display:{elements:{poster:{typeBadge:!0,chapterBadge:!0,adultBadge:!0},info:{title:!0,mobileBadges:!0,progress:!1,meta:!1}}},onOpenDetails:$=>T($,{provider:S.provider,mangaId:S.id,title:S.title,altTitle:S.altTitle,cover:S.cover,contentRating:S.contentRating,readTarget:`/manga/${S.provider}/${encodeURIComponent(S.id)}`,mature:t}),onPopupHoverIntent:$=>$?m():_(),rawThumbnail:!0},`${S.provider}-${S.id}`)})}),d&&e(Ge,{data:d.data,anchorRect:d.rect,bookmarked:i.has(Ne(d.data.provider,d.data.mangaId)),onToggleBookmark:()=>l({id:d.data.mangaId,provider:d.data.provider,title:d.data.title,cover:d.data.cover,altTitle:d.data.altTitle??void 0,contentRating:d.data.contentRating}),onMouseEnter:m,onMouseLeave:_,onRequestClose:p})]})},Cn=()=>{const{options:n}=St(),s=Q(()=>n.some(d=>d.kind==="manga"),[n]),{hasConsent:h}=st(),[t,o]=oe("manga_discover_tab","latest"),[l,i]=oe("manga_trending_sort","popular");return s?e(se,{children:[e(pe,{ariaLabel:"Discover manga",options:[{value:"latest",label:"Latest Releases"},{value:"trending",label:"Trending"}],value:t,onChange:o}),t==="latest"?e(Be,{title:"Latest Releases",eyebrow:"Fresh chapters",sort:"latest",mature:h}):e(Be,{title:"Trending",eyebrow:"Discover",sort:l,mature:h,headerActions:e("select",{className:B["header-select"],value:l,onChange:d=>i(d.currentTarget.value),"aria-label":"Trending sort",children:kn.map(d=>e("option",{value:d.value,children:d.label},d.value))})})]}):null},In=()=>{const n=J(),{data:s,isLoading:h}=Tt(24),[t,o]=E(null),{popup:l,openPopup:i,scheduleClose:d,cancelClose:T,closePopup:_}=ze(),{toggle:m,bookmarkedIds:p}=Ue(),N=s?.data??[];return e("div",{style:{paddingBottom:"2rem"},children:[e(Z,{title:"Continue Reading",eyebrow:"Pick up where you left off",titleLink:"/reading-list/Continue Reading",loading:h,carousel:!0,collapsible:!0,defaultExpanded:N.length>0,highlight:!0,itemCount:N.length,loadingSkeleton:e("div",{className:"skeleton",style:{aspectRatio:"3 / 4"}}),skeletonCount:7,emptyState:e(_e,{icon:"book",text:"You haven't read anything yet. Browse manga and open a chapter to start tracking.",actionLabel:"Browse Manga",onAction:()=>n("/manga")}),children:N.map(r=>{const w=r.page??0,u=r.pageCount??0,c=r.chapterId&&r.provider?`/manga/${r.provider}/${encodeURIComponent(r.mangaId)}/read?chapter=${encodeURIComponent(r.chapterId)}`:r.provider?`/manga/${r.provider}/${encodeURIComponent(r.mangaId)}`:"#";return e(me,{item:{id:r.id,title:r.title||"",...Ye({title:r.title||"",altTitle:r.altTitle}),thumbnail:r.provider?Ce(r.provider,r.cover||""):r.cover||"",chapterBadge:r.chapterNumber?`Ch. ${r.chapterNumber}`:null,isAdult:Qe(r)},linkTo:c,hoverIcon:"book",progress:u>0?{percent:w/u*100,label:`Ch. ${r.chapterNumber} · p. ${w}/${u}`}:void 0,showProgress:!0,display:{elements:{poster:{typeBadge:!1,chapterBadge:!0,adultBadge:!0,removeButton:!0},info:{title:!0,mobileBadges:!0,progress:!0,meta:!1}}},onRemove:()=>o({libId:r.id,title:r.title||""}),onOpenDetails:g=>i(g,{provider:r.provider||"",mangaId:r.mangaId||"",title:r.title||"",altTitle:r.altTitle,cover:r.cover||"",contentRating:r.contentRating||void 0,readTarget:c}),onPopupHoverIntent:g=>g?T():d(),rawThumbnail:!0},r.id)})}),e(bt,{mangaId:t?t.libId:null,title:t?.title,onClose:()=>o(null)}),l&&l.data.provider&&e(Ge,{data:l.data,anchorRect:l.rect,bookmarked:p.has(Ne(l.data.provider,l.data.mangaId)),onToggleBookmark:()=>m({id:l.data.mangaId,provider:l.data.provider,title:l.data.title,cover:l.data.cover,altTitle:l.data.altTitle??void 0,contentRating:l.data.contentRating}),onMouseEnter:T,onMouseLeave:d,onRequestClose:_}),e(Cn,{})]})},An="_seasonGrid_knq79_24",X={"section-header":"_section-header_knq79_1","title-wrapper":"_title-wrapper_knq79_8","pagination-controls":"_pagination-controls_knq79_14",seasonGrid:An},Rn="_emptyState_bpz5x_1",Pe={emptyState:Rn},Ln=[{value:"latest",label:"Latest Releases"},{value:"trending",label:"Trending"}],$n=[{value:"trending_week",label:"Trending Now"},{value:"trending_day",label:"Trending Today"},{value:"popular",label:"Popular All Time"},{value:"top_rated",label:"Top Rated"}],Mn=()=>{const n=J(),{data:s,isLoading:h}=Ct(24),t=It(),o=At(),[l,i]=E(null),[d,T]=E(()=>localStorage.getItem("tv_home_activeTab")||"latest"),[_,m]=E("tv"),[p,N]=E("trending_week"),[r,w]=E("multi"),u=s?.data??[];G.useEffect(()=>{localStorage.setItem("tv_home_activeTab",d)},[d]);const c=p.startsWith("trending_"),g=p==="trending_day"?"day":"week",k={popular:"popularity.desc",top_rated:"vote_average.desc"},{data:S,isLoading:A}=He(r==="multi"?"all":r,g,1,c&&d==="trending"),{data:$,isLoading:R}=$e({type:r,sort_by:k[p]||"popularity.desc",page:1}),C=c?S?.results||[]:$?.results||[],U=c?A:R,{data:x,isLoading:I}=$e({type:_,sort_by:"primary_release_date.desc",page:1}),F=x?.results||[],M=a=>{l&&(o.mutate({mediaId:l.libId}),a&&t.mutate(l.libId))},ee=P(a=>e(wt,{item:{id:a.id,title:a.title,year:a.year,type:a.type,image:a.image,vote_average:a.vote_average,adult:a.adult}},`${a.type}-${a.id}`),[]),H=()=>{switch(d){case"latest":return e("section",{children:[e("div",{className:X["section-header"],children:[e("div",{className:X["title-wrapper"],children:e("div",{className:"title-stack",children:[e("div",{className:"section-eyebrow",children:"Fresh picks"}),e("div",{className:"section-title",style:{marginBottom:0},children:"Latest Releases"})]})}),e("div",{style:{display:"flex",gap:"8px",alignItems:"center"},children:e(he,{ariaLabel:"Latest type",value:_,onChange:a=>m(a),options:[{value:"tv",label:"TV Shows"},{value:"movie",label:"Movies"}]})})]}),I?e("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(150px, 1fr))",gap:"var(--space-6)"},children:Array.from({length:7}).map((a,f)=>e("div",{className:"skeleton",style:{aspectRatio:"3 / 4",borderRadius:"var(--radius-lg)"}},f))}):F.length>0?e(Z,{carousel:!0,itemCount:F.length,children:F.map(ee)}):e("div",{className:Pe.emptyState,children:e("p",{children:"No latest releases available right now."})})]});case"trending":return e("section",{children:[e("div",{className:X["section-header"],children:[e("div",{className:X["title-wrapper"],children:e("div",{className:"title-stack",children:[e("div",{className:"section-eyebrow",children:"Discover"}),e("div",{className:"section-title",style:{marginBottom:0},children:"Trending"})]})}),e("div",{style:{display:"flex",gap:"8px",alignItems:"center"},children:[e(he,{ariaLabel:"Trending sort",value:p,onChange:N,options:$n.map(a=>({value:a.value,label:a.label}))}),e(he,{ariaLabel:"Trending type",value:r,onChange:a=>w(a),options:[{value:"multi",label:"All"},{value:"tv",label:"TV Shows"},{value:"movie",label:"Movies"}]})]})]}),U?e("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(150px, 1fr))",gap:"var(--space-6)"},children:Array.from({length:7}).map((a,f)=>e("div",{className:"skeleton",style:{aspectRatio:"3 / 4",borderRadius:"var(--radius-lg)"}},f))}):C.length>0?e(Z,{carousel:!0,itemCount:C.length,children:C.map(ee)}):e("div",{className:Pe.emptyState,children:e("p",{children:"No trending content available right now."})})]})}};return e("div",{style:{paddingBottom:"2rem"},children:[e(Z,{title:"Continue Watching",eyebrow:"Pick up where you left off",titleLink:"/tv-watchlist/Continue Watching",loading:h,carousel:!0,collapsible:!0,defaultExpanded:u.length>0,highlight:!0,itemCount:u.length,loadingSkeleton:e("div",{className:"skeleton",style:{aspectRatio:"3 / 4"}}),skeletonCount:7,emptyState:e(_e,{icon:"tv",text:"You haven't watched anything yet. Search TV & Movies and start watching to track progress.",actionLabel:"Browse TV & Movies",onAction:()=>n("/tv-search")}),children:u.map(a=>{const f=a.currentTime??0,y=a.duration??0,D=a.season??1,K=a.episode??1,z=a.mediaType==="movie",j=z?"Movie":`S${D} E${K}`,te=a.completed===1||y>0&&f>=y*.8,ae=te?100:y>0&&f>0?f/y*100:0,fe=te?"Watched":y>0?z?`${ne(f)} / ${ne(y)}`:`${j} · ${ne(f)} / ${ne(y)}`:j;return e(me,{item:{id:a.id,title:a.title||"",thumbnail:a.poster||"",typeBadge:z?"Movie":"TV",chapterBadge:j,isAdult:Lt({adult:a.adult===1})},linkTo:Rt(a.mediaType,a.tmdbId??0,z?void 0:D,z?void 0:K),hoverIcon:"play",progress:(y>0||te)&&ae>0?{percent:ae,label:fe}:void 0,showProgress:!0,metaRow:a.year?e("span",{style:{opacity:.75},children:a.year}):void 0,onRemove:()=>i({libId:a.id,title:a.title||""}),renderPopup:(be,re)=>e(kt,{item:{id:a.tmdbId??0,title:a.title||"",year:a.year||"",type:a.mediaType||"tv",image:a.poster||""},anchorRect:be,onMouseEnter:re.onMouseEnter,onMouseLeave:re.onMouseLeave,onRequestClose:re.close})},a.id)})}),e(pe,{ariaLabel:"Browse TV",options:Ln,value:d,onChange:T}),e("div",{children:H()}),e(qe,{isOpen:!!l,itemName:l?.title,progressKind:"watch",listLabel:"my TV watchlist",onClose:()=>{i(null)},onConfirm:M})]})};function xn(n){const s=n.currentTime??0,h=n.duration??0,t=(n.trackIndex??0)+1;return h>0?`Track ${t} · ${ne(s)} / ${ne(h)}`:n.trackLabel?`Track ${t} · ${n.trackLabel}`:`Track ${t}`}const Bn=({title:n="Continue Listening",limit:s=24,titleLink:h,showEmptyState:t=!0})=>{const o=J(),{data:l,isLoading:i}=Pt(s),[d,T]=E(null),_=l?.data??[];return e(se,{children:[e(Z,{title:n,eyebrow:"Pick up where you left off",titleLink:h??"/listening-list/Continue Listening",loading:i,carousel:!0,collapsible:!0,defaultExpanded:_.length>0,highlight:!0,itemCount:_.length,loadingSkeleton:e("div",{className:"skeleton",style:{aspectRatio:"16 / 9"}}),skeletonCount:7,emptyState:t?e(_e,{icon:"headphones",text:"You haven't listened to anything yet. Browse ASMR and play a track to start tracking.",actionLabel:"Browse ASMR",onAction:()=>o("/asmr")}):void 0,children:_.map(m=>{const p=m.currentTime??0,N=m.duration??0,r=m.rjCode||m.id;return e(me,{item:{id:m.id,title:m.title||"",thumbnail:m.thumbnail||"",chapterBadge:`Track ${(m.trackIndex??0)+1}`,isAdult:!!m.isAdult},linkTo:`/asmr/${encodeURIComponent(r)}`,hoverIcon:"play",layout:"horizontal",progress:N>0?{percent:Math.min(100,p/N*100),label:xn(m)??""}:void 0,showProgress:!0,display:{elements:{poster:{typeBadge:!1,chapterBadge:!0,adultBadge:!0,removeButton:!0},info:{title:!0,mobileBadges:!0,progress:!0,meta:!1}}},onRemove:()=>T({workId:m.id,title:m.title||""}),rawThumbnail:!0},m.id)})}),e(Bt,{workId:d?d.workId:null,title:d?.title,onClose:()=>T(null)})]})},Pn=()=>e("div",{style:{paddingBottom:"2rem"},children:e(Bn,{})}),En=({items:n})=>{const s=J(),h=Q(()=>n.slice(0,6).map(t=>{const o=$t(t.type,t.id);return{key:String(t.id),bannerSrc:t.backdrop?t.backdrop:t.image,posterSrc:t.image,posterAlt:t.title,title:t.title,detailTo:o,score:t.vote_average>0?Number(t.vote_average).toFixed(1):null,metaItems:[t.type==="tv"?"TV Show":"Movie",t.year].filter(Boolean),tags:t.genre_ids.slice(0,3).map(l=>Mt[l]??xt[l]).filter(Boolean),synopsis:we(t.overview,200),primaryLabel:"Watch Now",primaryIcon:"play",onPrimary:()=>s(o),onDetails:()=>s(o)}}),[n,s]);return e(ve,{slides:h,eyebrow:"TV Spotlight"})},Dn=({mangaList:n})=>{const s=J(),h=Q(()=>n.slice(0,6).map(t=>{const o=`/manga/${t.provider||"mangadex"}/${t.id}`,l=Ce(t.provider||"mangadex",t.cover||"");return{key:`${t.provider}-${t.id}`,bannerSrc:l,posterSrc:l,posterAlt:t.title,title:t.title,detailTo:o,metaItems:[t.year?String(t.year):void 0,t.status??void 0].filter(i=>!!i),tags:t.tags.slice(0,3),synopsis:we(t.description,200,""),primaryLabel:"Read Now",primaryIcon:"book",onPrimary:()=>s(o),onDetails:()=>s(o)}}),[n,s]);return e(ve,{slides:h,eyebrow:"Manga Spotlight"})};function Wn(n){const s=n.availableEpisodes?.sub;if(typeof s=="number"&&s>0)return s;const h=n.availableEpisodesDetail?.sub,t=n.availableEpisodesDetail?.dub,o=(Array.isArray(h)?h.length:0)+(Array.isArray(t)?t.length:0);return o>0?o:null}const On=({works:n})=>{const s=J(),h=Q(()=>n.slice(0,6).map((t,o)=>{const l=Et(t),i=`/asmr/${encodeURIComponent(l)}`,d=Wn(t);return{key:l||t._id||String(o),bannerSrc:t.thumbnail||"",posterSrc:t.thumbnail||"",posterAlt:t.name,title:t.name,detailTo:i,metaItems:[t.rating?t.rating.toUpperCase():void 0,d?`${d} track${d===1?"":"s"}`:void 0].filter(T=>!!T),tags:[],synopsis:we(t.description,160,""),primaryLabel:"Listen Now",primaryIcon:"play",onPrimary:()=>s(i),onDetails:()=>s(i)}}),[n,s]);return e(ve,{slides:h,eyebrow:"ASMR Spotlight",posterAspect:"landscape"})},Vn=[{value:"anime",label:"Anime"},{value:"manga",label:"Manga"},{value:"tv",label:"TV & Movies"},{value:"asmr",label:"ASMR"}],mr=()=>{const n=Je(),s=lt(),[h,t]=G.useState(1),[o,l]=E(()=>localStorage.getItem("home_activeTab")||"latest"),[i,d]=E(()=>localStorage.getItem("season_format")||"TV"),T=q(null),{data:_}=Le(h+1,i,o==="season"),{titlePreference:m}=Ve(),{contentType:p,setContentType:N}=it(),[r,w]=G.useState(null),u=ct(),{data:c=[]}=dt(),g=ut(),k=ht(),S=pt();O(()=>{document.title="Home - dango"},[]);const{data:A,isLoading:$}=mt();O(()=>{localStorage.setItem("home_activeTab",o)},[o]),O(()=>{localStorage.setItem("season_format",i),t(1)},[i]),O(()=>{A!==void 0&&A.length===0&&o==="week"&&l("latest")},[A,o]);const{data:R,isLoading:C,fetchNextPage:U,hasNextPage:x,isFetchingNextPage:I}=gt(),F=P(()=>{x&&!I&&!C&&U()},[x,I,C,U]),{data:M,isLoading:ee}=vt(),{data:H,isLoading:a}=He("all","week",1,p==="tv"),{data:f,isLoading:y}=Dt(p==="asmr"),{data:D,isLoading:K}=Nt(),z=Q(()=>R?.pages||[],[R]),{data:j,isLoading:te}=Le(h,i,o==="season"),ae=14,fe=j&&j.length>=ae&&_&&_.length>0,be=et(s.continueWatching.remove.mutationOptions({onSuccess:async()=>{n.invalidateQueries(s.continueWatching.pathFilter()),await n.invalidateQueries({queryKey:[Oe.continueWatching]}),x&&z.length-1<14&&U()}})),re=P(W=>{const Y=z?.find(ye=>String(ye.id)===String(W));if(Y){const ye=Y[m]||Y.name;w({id:W,name:ye})}},[z,m]),Ie=[{key:"latest",label:"Latest Releases"},{key:"season",label:"Current Season"},{key:"popular",label:"Trending"}],Ae=A!==void 0&&A.length>0,Xe=Ae?[{key:"week",label:"This Week"},...Ie]:Ie,Re=o==="week"&&!Ae?"latest":o,Ke=()=>{switch(Re){case"latest":return e(la,{eyebrow:"Fresh episodes"});case"season":return e("section",{style:{marginBottom:"2.5rem"},children:[e("div",{className:X["section-header"],ref:T,children:[e("div",{className:X["title-wrapper"],children:e("div",{className:"title-stack",children:[e("div",{className:"section-eyebrow",children:"This season"}),e("div",{className:"section-title",style:{marginBottom:0},children:"Current Season"})]})}),e("div",{style:{display:"flex",gap:"8px",alignItems:"center"},children:[e(he,{ariaLabel:"Season format",width:90,value:i,onChange:d,options:[{value:"TV",label:"TV"},{value:"ONA",label:"ONA"},{value:"OVA",label:"OVA"},{value:"MOVIE",label:"Movie"},{value:"ALL",label:"All"},{value:"ADULT",label:"Mature"}]}),e("div",{className:X["pagination-controls"],children:e(tt,{page:h,canGoNext:fe,onChange:W=>{if(t(W),T.current){const Y=T.current.getBoundingClientRect().top+window.scrollY-120;window.scrollTo({top:Y,behavior:"smooth"})}},isLoading:te})})]})]}),e("div",{className:`grid-container ${X.seasonGrid}`,style:{minHeight:"300px",alignContent:"start"},children:te?e(De,{count:ae}):j?.slice(0,ae).map(W=>e(le,{anime:W},W._id))})]});case"popular":return e(ra,{title:"Trending",eyebrow:"Discover"});case"week":return e(Me,{title:"This Week",eyebrow:"Aired this week",animeList:A||[],continueWatching:!1,carousel:!0,loading:$});default:return null}};return e("div",{style:{paddingBottom:"2rem"},children:[p==="anime"&&(ee&&!M?.length?e(ce,{}):M&&M.length>0&&e(pn,{animeList:M})),p==="tv"&&(a&&!H?.results?.length?e(ce,{}):H?.results&&H.results.length>0&&e(En,{items:H.results})),p==="manga"&&(K&&!D?.length?e(ce,{}):D&&D.length>0&&e(Dn,{mangaList:D})),p==="asmr"&&(y&&!f?.length?e(ce,{}):f&&f.length>0&&e(On,{works:f})),e(pe,{ariaLabel:"Content type",options:Vn,value:p,onChange:N}),p==="manga"?e(In,{}):p==="tv"?e(Mn,{}):p==="asmr"?e(Pn,{}):e(se,{children:[e(Me,{title:"Continue Watching",eyebrow:"Pick up where you left off",titleLink:"/watchlist/Continue Watching",animeList:z,continueWatching:!0,carousel:!0,collapsible:!0,defaultExpanded:z.length>0,onRemove:re,loading:C,onReachThreshold:F,scrollThreshold:.7,isFetchingNextPage:I,emptyState:e(_e,{icon:"history",text:"You haven't watched anything yet. Start exploring and watch something first!",actionLabel:"Explore Trending",onAction:()=>l("popular")})}),e(ft,{title:"Queue",eyebrow:"Up next",items:c,onRemove:W=>g.mutate({showId:W.showId,episodeNumber:W.episodeNumber}),showClearAll:!0,onClear:()=>k.mutate(),onReorder:W=>S.mutate(W.map(Y=>({id:Y.id,showId:Y.showId,episodeNumber:Y.episodeNumber})))}),e(pe,{ariaLabel:"Browse anime",options:Xe.map(W=>({value:W.key,label:W.label})),value:Re,onChange:l}),e("div",{children:Ke()}),e(Ra,{eyebrow:"Never miss an episode"}),e(qe,{isOpen:!!r,itemName:r?.name,progressKind:"watch",listLabel:"my watchlist",onClose:()=>{w(null)},onConfirm:W=>{r&&(be.mutate({showId:r.id}),W&&u.mutate({id:r.id}))}})]})]})};export{mr as default};
@@ -1,56 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PlayerSettings-kqYmlLDl.js","assets/vendor-core-DfaOB3Rn.js","assets/vendor-icons-DrybRNxP.js","assets/OptionListMenu-BSUcso28.js","assets/usePlaybackEnd-DuEfjKb8.js","assets/index-DlcgJVM6.js","assets/vendor-query-BBT5_sHx.js","assets/index-ZssheiHa.css","assets/playbackCompletion-IPHm9fp5.js","assets/usePlaybackEnd-DLFOYx3Q.css","assets/PlayerSettings-BXGe3F5k.css"])))=>i.map(i=>d[i]);
2
- import{u as t,g as dt,h as V,P as zt,z as jt,d as ie,A as N,q as Q,y as Ht,T as Me,o as Yt,a as Xt,c as Jt,_ as Zt,S as ct}from"./vendor-core-DfaOB3Rn.js";import{u as Rt,b as Tt,a as yt}from"./vendor-query-BBT5_sHx.js";import{S as er,U as tr,p as St,s as rr,C as nr,a as or,b as sr,c as Ie,d as Ct,f as Nt,e as ar,g as ir,h as lr,r as cr,u as ur,i as dr,j as mr,k as fr,l as hr,m as pr,n as vr,o as be,A as gr,q as yr,R as br,E as Sr,t as Er,v as C,w as wr,x as kr,P as Tr,y as Cr}from"./usePlaybackEnd-DuEfjKb8.js";import{I as Y}from"./vendor-icons-DrybRNxP.js";import{_ as Pt,S as Ye,i as Mr,q as ae,t as me,A as we,O as Rr,P as Ve,M as mt,e as Nr,m as Pr,n as Ar,o as _r,p as xr,d as Br,u as Lr,B as ut,Q as Dr,f as $r}from"./index-DlcgJVM6.js";import{l as Ir,i as Fr,s as Or}from"./playbackCompletion-IPHm9fp5.js";import{M as Wr}from"./MatureConsentModal-Beq4JL0b.js";import{u as Ur}from"./useIsMobile-Dvx1uJ82.js";import{s as Ee,Q as Vr}from"./QueueRail-D1FmM-GR.js";import{u as Qr,Q as Gr}from"./QueueOptionsButton-B8xuoYlH.js";import{u as At}from"./useProviders-D0XOHCsj.js";import{l as qr}from"./hls-qvAoYTJt.js";import{A as Kr}from"./AnimeMetaDetails-D8WIiO4b.js";import{S as zr}from"./SynopsisText-B3Sa5pRv.js";import"./vendor-ui-3qrARCPr.js";const jr="_controlsOverlay_cejny_1",Hr="_hidden_cejny_21",Yr="_topControls_cejny_27",Xr="_backBtn_cejny_47",Jr="_videoTitleInfo_cejny_67",Zr="_animeTitle_cejny_73",en="_episodeNumber_cejny_83",tn="_bottomControls_cejny_91",rn="_progressBarContainer_cejny_110",nn="_progressBar_cejny_110",on="_thumb_cejny_129",sn="_scrubbing_cejny_144",an="_watchedBar_cejny_148",ln="_bufferedBar_cejny_149",cn="_timeBubble_cejny_187",un="_skipSegment_cejny_221",dn="_bottomControlsRow_cejny_231",mn="_leftControls_cejny_239",fn="_rightControls_cejny_240",hn="_controlBtn_cejny_247",pn="_theaterBtn_cejny_288",vn="_nextEpisodeBtn_cejny_292",gn="_active_cejny_313",yn="_timeDisplay_cejny_317",bn="_skipControls_cejny_325",D={controlsOverlay:jr,hidden:Hr,topControls:Yr,backBtn:Xr,videoTitleInfo:Jr,animeTitle:Zr,episodeNumber:en,bottomControls:tn,progressBarContainer:rn,progressBar:nn,thumb:on,scrubbing:sn,watchedBar:an,bufferedBar:ln,timeBubble:cn,skipSegment:un,bottomControlsRow:dn,leftControls:mn,rightControls:fn,controlBtn:hn,theaterBtn:pn,nextEpisodeBtn:vn,active:gn,timeDisplay:yn,skipControls:bn},Sn=({player:r,handlers:n,visible:a,skipIntervals:u,showNextEpisodeButton:l,onNextEpisode:i,isTheaterMode:s,onTheaterModeToggle:d,settingsBtnRef:c,timeDisplayRef:g})=>{const{state:b,refs:e,actions:o}=r,{showSettings:R}=b,p=()=>b.isMuted||b.volume===0?t(Y,{name:"volume-mute"}):b.volume<.5?t(Y,{name:"volume-down"}):t(Y,{name:"volume-up"});return t("div",{className:`${D.controlsOverlay} ${a?"":D.hidden} `,"data-speed-boost-ignore":"true",style:{pointerEvents:"none",background:"none",justifyContent:"flex-end"},children:t("div",{className:D.bottomControls,"data-speed-boost-ignore":"true",onClick:w=>w.stopPropagation(),children:[t(er,{classes:{container:D.progressBarContainer,scrubbing:D.scrubbing,timeBubble:D.timeBubble,bar:D.progressBar,buffered:D.bufferedBar,watched:D.watchedBar,thumb:D.thumb},videoRef:e.videoRef,duration:b.duration,formatTime:o.formatTime,isScrubbing:b.isScrubbing,onSeek:n.handleSeek,onScrubStart:n.handleScrubStart,onScrubMove:n.handleScrubMove,onScrubEnd:n.handleScrubEnd,timeLabelRef:g,children:[b.duration>0&&r.state.currentSkipInterval&&t("div",{className:`${D.skipSegment} ${D[r.state.currentSkipInterval.skip_type]} `,style:{left:`${r.state.currentSkipInterval.start_time/b.duration*100}% `,width:`${(r.state.currentSkipInterval.end_time-r.state.currentSkipInterval.start_time)/b.duration*100}% `}}),u.map(w=>{const P=w.start_time/b.duration*100,k=(w.end_time-w.start_time)/b.duration*100;return t("div",{className:`${D.skipSegment} ${D[w.skip_type]} `,style:{left:`${P}% `,width:`${k}% `},title:w.skip_type.toUpperCase()},w.skip_id)})]}),t("div",{className:D.bottomControlsRow,children:[t("div",{className:D.leftControls,children:[t("button",{className:D.controlBtn,onClick:o.togglePlay,"aria-label":b.isPlaying?"Pause":"Play",children:b.isPlaying?t(Y,{name:"pause"}):t(Y,{name:"play"})}),t(tr,{muted:b.isMuted,volume:b.volume,volumeIcon:p(),buttonClassName:D.controlBtn,onToggleMute:o.toggleMute,onVolumeChange:n.handleVolumeChange,onExpandedChange:w=>o.setShowVolumeSlider(w)}),t("span",{className:D.timeDisplay,ref:g,children:[o.formatTime(0)," / ",o.formatTime(b.duration)]}),b.currentSkipInterval&&!b.isAutoSkipEnabled&&t("button",{className:D.controlBtn,onClick:()=>{e.videoRef.current&&b.currentSkipInterval&&(e.videoRef.current.currentTime=b.currentSkipInterval.end_time,o.setCurrentSkipInterval(null))},children:["Skip ",b.currentSkipInterval.skip_type==="op"?"Opening":"Ending"]})]}),t("div",{className:D.rightControls,children:[t("div",{className:D.skipControls,children:l&&t("button",{className:D.nextEpisodeBtn,onClick:i,title:"Play next episode",children:"Next EP"})}),t("button",{className:`${D.controlBtn} ${n.isSubtitleActive?D.active:""}`,onClick:n.handleCCToggle,title:n.isSubtitleActive?"Disable Subtitles":"Enable Subtitles","aria-label":"Toggle Subtitles",children:t(Y,{name:"closed-captioning",size:22})}),t("button",{ref:c,className:`${D.controlBtn} ${R?D.active:""} `,onClick:()=>o.setShowSettings(!R),"aria-label":"Settings",children:t(Y,{name:"cog"})}),t("button",{className:`${D.controlBtn} ${D.theaterBtn} ${s?D.active:""} `,onClick:w=>{w.stopPropagation(),d()},title:s?"Exit Theater Mode":"Theater Mode","aria-label":s?"Exit Theater Mode":"Theater Mode",children:t(Y,{name:"tv"})}),t("button",{className:D.controlBtn,onClick:o.toggleFullscreen,"aria-label":b.isFullscreen?"Exit Fullscreen":"Fullscreen",children:b.isFullscreen?t(Y,{name:"compress"}):t(Y,{name:"expand"})})]})]})]})})};function En(r){const{state:n,refs:a,actions:u}=r,l=o=>{a.videoRef.current&&(a.videoRef.current.volume=o,a.videoRef.current.muted=o===0)},i=o=>{!a.videoRef.current||isNaN(n.duration)||n.duration===0||(a.videoRef.current.currentTime=o*n.duration,u.sendProgressUpdate(!1,!0))},s=()=>{a.videoRef.current&&(u.setIsScrubbing(!0),u.wasPlayingBeforeScrub.current=!a.videoRef.current.paused,a.videoRef.current.pause())},d=o=>{!a.videoRef.current||!n.duration||(a.videoRef.current.currentTime=o*n.duration)},c=()=>{u.setIsScrubbing(!1),u.wasPlayingBeforeScrub.current&&a.videoRef.current?.play()},g=o=>{if(!a.videoRef.current)return;u.setActiveSubtitleTrack(o);try{if(o===null||o==="off")localStorage.setItem("playerSubtitlesEnabled","false");else{localStorage.setItem("playerSubtitlesEnabled","true");const p=n.availableSubtitles.find(w=>w.label===o||w.lang===o);p?localStorage.setItem("playerLastSubtitle",rr(p)):localStorage.setItem("playerLastSubtitle",o)}}catch{}let R=!1;Array.from(a.videoRef.current.textTracks).forEach(p=>{const P=o!==null&&o!=="off"&&(p.language===o||p.label===o)&&!R;p.mode=P?"showing":"hidden",P&&(R=!0)})},b=n.activeSubtitleTrack!==null&&n.activeSubtitleTrack!=="off";return{handleVolumeChange:l,handleSeek:i,handleScrubStart:s,handleScrubMove:d,handleScrubEnd:c,handleSubtitleSelection:g,isSubtitleActive:b,handleCCToggle:()=>{if(!a.videoRef.current)return;if(b){g("off");return}if(n.availableSubtitles.length===0)return;let o=null;try{o=localStorage.getItem("playerLastSubtitle")}catch{}const R=St(n.availableSubtitles,{lastKey:o,enabled:!0});if(R<0)return;const p=n.availableSubtitles[R];g(p.label||p.lang)}}}const wn=jt(()=>Pt(()=>import("./PlayerSettings-kqYmlLDl.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]))),kn=({player:r,isAutoplayEnabled:n,onAutoplayChange:a,showNextEpisodeButton:u,onNextEpisode:l,videoSources:i,selectedSource:s,selectedLink:d,onSourceChange:c,loadingVideo:g,skipIntervals:b,animeTitle:e,episodeNumber:o,isTheaterMode:R,onTheaterModeToggle:p,anime4kEnabled:w,onAnime4kToggle:P,anime4kSupported:k,anime4kProfile:B,onAnime4kProfileChange:y,anime4kInitializing:v,anime4kError:_,videoDelayEnabled:f,onVideoDelayToggle:E,videoDelayMs:x,onVideoDelayChange:X,onCalibrateAvSync:$,fallbackChoice:G,onFallbackChoiceChange:I,ambientSettings:L,onAmbientChange:A,children:F,overlays:O,isInteractingExtra:S=!1,className:m,hideChrome:M=!1})=>{const{state:T,actions:q}=r,{showSettings:J}=T,{setShowSettings:H}=q,K=En(r),ee=dt.useRef(null),Se=dt.useRef(null),Ae=dt.useRef(null);V(()=>{const j=ve=>{ee.current&&!ee.current.contains(ve.target)&&Se.current&&!Se.current.contains(ve.target)&&J&&H(!1)};return J&&document.addEventListener("mousedown",j),()=>{document.removeEventListener("mousedown",j)}},[J,H]);const Re=T.showControls||J||T.isScrubbing,te=t(sr,{visible:Re,title:e,episode:o?`Episode ${o}`:void 0,onBack:()=>window.history.back(),classes:{overlay:D.controlsOverlay,hidden:D.hidden,top:D.topControls,backBtn:D.backBtn,titleInfo:D.videoTitleInfo,title:D.animeTitle,episode:D.episodeNumber}}),z=!g&&!T.isBuffering&&T.duration>0?t(nr,{isPlaying:T.isPlaying,onTogglePlay:q.togglePlay,onSkipBack:()=>q.seek(-10),onSkipForward:()=>q.seek(10)}):null,ke=t(Sn,{player:r,handlers:K,visible:Re,skipIntervals:b,showNextEpisodeButton:u,onNextEpisode:l,isTheaterMode:R,onTheaterModeToggle:p,settingsBtnRef:Se,timeDisplayRef:Ae}),_e=t(zt,{fallback:null,children:t(wn,{ref:ee,isOpen:J,onClose:()=>H(!1),videoSources:i,currentSource:s,currentLink:d,onSourceChange:c,subtitles:T.availableSubtitles,activeSubtitleTrack:T.activeSubtitleTrack,onSubtitleChange:K.handleSubtitleSelection,subtitleSettings:{fontSize:T.subtitleFontSize,position:T.subtitlePosition,bgOpacity:T.subtitleBgOpacity,bgColor:T.subtitleBgColor,textColor:T.subtitleTextColor,edge:T.subtitleEdge,bold:T.subtitleBold},onSubtitleSettingsChange:q.setSubtitleStyle,useNativeControls:T.useNativeControls,onNativeControlsToggle:q.setUseNativeControls,anime4kEnabled:w,onAnime4kToggle:P,anime4kSupported:k,anime4kProfile:B,onAnime4kProfileChange:y,anime4kInitializing:v,anime4kError:_,videoDelayEnabled:f,onVideoDelayToggle:E,videoDelayMs:x,onVideoDelayChange:X,onCalibrateAvSync:$,isAutoSkipEnabled:T.isAutoSkipEnabled,onAutoSkipChange:j=>{q.setIsAutoSkipEnabled(j);try{localStorage.setItem("autoSkipEnabled",j.toString())}catch{}},isAutoplayEnabled:n,onAutoplayChange:a,fallbackChoice:G,onFallbackChoiceChange:I,isTheaterMode:R,ambientSettings:L,onAmbientChange:A})}),re=J?t("div",{"data-speed-boost-ignore":"true",onClick:j=>j.stopPropagation(),children:_e}):null;return t(or,{player:r,topBar:te,centerControls:z,bottomBar:!g&&T.duration>0?ke:null,settingsPanel:re,overlays:O,isInteracting:S,className:m,chromeDisabled:M,children:F})},Tn=({count:r=3})=>t("section",{className:Ee.section,children:[t("div",{className:Ee.header,children:t("button",{className:Ee.headerToggle,disabled:!0,children:[t("span",{className:Ee.title,children:t(Ye,{width:"60px",height:"1.2rem",variant:"text"})}),t(Y,{name:"chevron-down",style:{opacity:.3}})]})}),t("div",{className:Ee.list,children:Array.from({length:r}).map((n,a)=>t("div",{className:Ee.item,style:{pointerEvents:"none"},children:[t("div",{className:Ee.dragHandle,style:{opacity:.2},children:t(Ye,{width:"16px",height:"16px",variant:"rectangular"})}),t("div",{className:Ee.thumbnail,style:{overflow:"hidden",background:"transparent"},children:t(Ye,{width:"100%",height:"100%",variant:"rectangular"})}),t("div",{className:Ee.meta,children:[t(Ye,{width:"80%",height:"1.2rem",variant:"text",className:Ee.metaGap}),t(Ye,{width:"40%",height:"0.8rem",variant:"rectangular",style:{borderRadius:"var(--radius-sm)"}})]})]},a))})]}),Cn={soft:"Softsub",hard:"Hardsub",mixed:"Mixed"},Mn={direct:"Direct",embed:"Embed",cookie:"Needs cookie"},Rn=["direct","cookie","embed"],Nn=({selectedProvider:r,onProviderChange:n,isAdult:a,options:u})=>{const i=(u&&u.length>0?u:[]).filter(s=>s.mature===(a===!0));return t("div",{className:Ie.providerSelectContainer,children:[t("h4",{children:"Provider"}),t("select",{className:Ie.providerSelect,value:r,onChange:s=>n(s.currentTarget.value),children:Rn.map(s=>{const d=i.filter(c=>(c.tier??"direct")===s);return d.length===0?null:t("optgroup",{label:Mn[s],children:d.map(c=>t("option",{value:c.id,children:c.sub?`${c.label} (${Cn[c.sub]})`:c.label},c.id))},s)})})]})},Pn=({videoSources:r,selectedSource:n,selectedLink:a,onSourceChange:u,onLinkChange:l})=>{const i=Array.isArray(r)?r:[];if(i.length===0)return null;const s=n?.type==="iframe"&&(n.links?.length??0)>1;return t("div",{className:Ie.sourceSelectionContainer,children:[t("h4",{children:"Source"}),t("div",{className:Ie.sourceButtons,children:i.map((d,c)=>t("button",{className:`${Ie.sourceButton} ${n?.sourceName===d.sourceName?Ie.active:""} `,onClick:()=>u(d),children:d.sourceName},`${d.sourceName}-${c}`))}),s&&t("select",{className:Ie.sourceSelect,"aria-label":"Fallback embed quality",value:a?.link??n.links[0]?.link??"",onChange:d=>{const c=n.links.find(g=>g.link===d.currentTarget.value);c&&l(c)},children:n.links.map(d=>t("option",{value:d.link,children:d.resolutionStr},d.link))})]})},An=dt.memo(Pn,(r,n)=>r.selectedSource?.sourceName===n.selectedSource?.sourceName&&r.selectedLink?.link===n.selectedLink?.link&&r.videoSources===n.videoSources),_n={low:{sd:1.5,hd:1.3,fhd:1.25},balanced:{sd:2,hd:1.5,fhd:1.25},high:{sd:2.5,hd:2,fhd:1.5},denoise:{sd:1.5,hd:1.5,fhd:1.5}},xn={low:"ModeB",balanced:"ModeA",high:"ModeAA",denoise:"ModeC"},Bn=5,Ln=15e3,Dn=`
3
- @group(0) @binding(0) var extTex: texture_external;
4
- @group(0) @binding(1) var extSamp: sampler;
5
- struct VSOut {
6
- @builtin(position) pos: vec4f,
7
- @location(0) uv: vec2f,
8
- };
9
- @vertex
10
- fn vs(@builtin(vertex_index) idx: u32) -> VSOut {
11
- var positions = array<vec2f, 6>(
12
- vec2f(-1.0, -1.0), vec2f(1.0, -1.0), vec2f(-1.0, 1.0),
13
- vec2f(-1.0, 1.0), vec2f(1.0, -1.0), vec2f(1.0, 1.0)
14
- );
15
- var uvs = array<vec2f, 6>(
16
- vec2f(0.0, 1.0), vec2f(1.0, 1.0), vec2f(0.0, 0.0),
17
- vec2f(0.0, 0.0), vec2f(1.0, 1.0), vec2f(1.0, 0.0)
18
- );
19
- var out: VSOut;
20
- out.pos = vec4f(positions[idx], 0.0, 1.0);
21
- out.uv = uvs[idx];
22
- return out;
23
- }
24
- @fragment
25
- fn fs(@location(0) uv: vec2f) -> @location(0) vec4f {
26
- return textureSampleBaseClampToEdge(extTex, extSamp, uv);
27
- }
28
- `;function $n({videoRef:r,canvasRef:n,profile:a="balanced",delayMs:u=0}){const[l,i]=ie(!1),[s,d]=ie(()=>{try{return localStorage.getItem("anime4kEnabled")==="true"}catch{return!1}}),[c,g]=ie(!1),[b,e]=ie(null),[o,R]=ie(0),p=N(0),w=N(null),P=N(null),k=N(null),B=N(null),y=N(null),v=N(null),_=N(null),f=N(null),E=N(null),x=N(!1),X=N(-1),$=N(0),G=N(u);G.current=u;const I=N([]),L=N(!1),A=N(!1),F=N(!1),O=N(null),S=N(-1),m=N(-1),M=N(!1),T=N(0);V(()=>{async function H(){if(typeof navigator>"u"||!navigator.gpu){i(!1);return}try{const K=await navigator.gpu.requestAdapter();i(!!K)}catch{i(!1)}}H()},[]),V(()=>{if(!s||!l)return;let H=!1;const K=++p.current,ee=z=>{if(z)try{z.close()}catch{}},Se=()=>{for(const z of I.current)ee(z.bitmap);I.current=[]},Ae=z=>Math.max(8,Math.min(40,Math.ceil(z/16.7)+4));function Re(){E.current!==null&&(cancelAnimationFrame(E.current),E.current=null)}async function te(){let z=r.current;const ke=n.current;if(!z||!ke||p.current!==K)return;const _e=performance.now()+Ln;for(;(!z||z.videoWidth===0)&&performance.now()<_e;){if(await new Promise(ce=>requestAnimationFrame(ce)),H||p.current!==K)return;z=r.current}if(!z||z.videoWidth===0){!H&&p.current===K&&(e("Timed out waiting for video metadata"),g(!1),d(!1));return}const re=z.videoWidth,j=z.videoHeight,ve=Math.max(re,j),ft=window.innerWidth,xe=window.innerHeight,Je=Math.max(ft,xe),Ze=ve<Je?Je/ve:1,Qe=_n[a],ht=ve<=480?Qe.sd:ve<=720?Qe.hd:ve<=1080?Qe.fhd:1,le=Math.min(ht,Ze);ke.width=Math.round(re*le),ke.height=Math.round(j*le),g(!0),e(null),$.current=0,X.current=-1,S.current=-1,m.current=-1,M.current=!1,T.current=0,Se(),x.current=!1;try{let ce=function(){H||p.current!==K||(Re(),E.current=requestAnimationFrame(()=>{at()}))};const{ModeA:pt,ModeB:Te,ModeC:et,ModeAA:Ge}=await Pt(async()=>{const{ModeA:U,ModeB:ne,ModeC:he,ModeAA:ue}=await import("./index-BOKlZEHq.js").then(de=>de.i);return{ModeA:U,ModeB:ne,ModeC:he,ModeAA:ue}},[]);if(!navigator.gpu)throw new Error("WebGPU not available");const tt=await navigator.gpu.requestAdapter();if(!tt)throw new Error("No GPU adapter found");const W=await tt.requestDevice();if(!W)throw new Error("Failed to get GPU device");const Ne=ke.getContext("webgpu");if(!Ne)throw new Error("Failed to get WebGPU context");const qe=navigator.gpu.getPreferredCanvasFormat();Ne.configure({device:W,format:qe,alphaMode:"premultiplied"});const fe=W.createTexture({size:[re,j],format:"rgba16float",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),rt=xn[a],Fe=Math.round(re*le),Oe=Math.round(j*le),Ke=(()=>{switch(rt){case"ModeB":return new Te({device:W,inputTexture:fe,nativeDimensions:{width:re,height:j},targetDimensions:{width:Fe,height:Oe}});case"ModeC":return new et({device:W,inputTexture:fe,nativeDimensions:{width:re,height:j},targetDimensions:{width:Fe,height:Oe}});case"ModeAA":return new Ge({device:W,inputTexture:fe,nativeDimensions:{width:re,height:j},targetDimensions:{width:Fe,height:Oe}});default:return new pt({device:W,inputTexture:fe,nativeDimensions:{width:re,height:j},targetDimensions:{width:Fe,height:Oe}})}})(),Be=Ke.getOutputTexture(),ze=W.createSampler({magFilter:"linear",minFilter:"linear"}),nt=W.createShaderModule({code:`
29
- @group(0) @binding(0) var tex: texture_2d<f32>;
30
- @group(0) @binding(1) var samp: sampler;
31
- struct VertexOutput {
32
- @builtin(position) pos: vec4f,
33
- @location(0) uv: vec2f,
34
- }
35
- @vertex
36
- fn vs(@builtin(vertex_index) idx: u32) -> VertexOutput {
37
- var positions = array<vec2f, 6>(
38
- vec2f(-1.0, -1.0), vec2f(1.0, -1.0), vec2f(-1.0, 1.0),
39
- vec2f(-1.0, 1.0), vec2f(1.0, -1.0), vec2f(1.0, 1.0)
40
- );
41
- var uvs = array<vec2f, 6>(
42
- vec2f(0.0, 1.0), vec2f(1.0, 1.0), vec2f(0.0, 0.0),
43
- vec2f(0.0, 0.0), vec2f(1.0, 1.0), vec2f(1.0, 0.0)
44
- );
45
- var out: VertexOutput;
46
- out.pos = vec4f(positions[idx], 0.0, 1.0);
47
- out.uv = uvs[idx];
48
- return out;
49
- }
50
- @fragment
51
- fn fs(@location(0) uv: vec2f) -> @location(0) vec4f {
52
- return textureSample(tex, samp, uv);
53
- }
54
- `}),Le=W.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),De=W.createRenderPipeline({layout:W.createPipelineLayout({bindGroupLayouts:[Le]}),vertex:{module:nt,entryPoint:"vs"},fragment:{module:nt,entryPoint:"fs",targets:[{format:qe}]},primitive:{topology:"triangle-list"}}),ot=W.createBindGroup({layout:Le,entries:[{binding:0,resource:Be.createView()},{binding:1,resource:ze}]});try{const U=W.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,externalTexture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),ne=W.createShaderModule({code:Dn}),he=W.createRenderPipeline({layout:W.createPipelineLayout({bindGroupLayouts:[U]}),vertex:{module:ne,entryPoint:"vs"},fragment:{module:ne,entryPoint:"fs",targets:[{format:"rgba16float"}]},primitive:{topology:"triangle-list"}});O.current={pipeline:he,layout:U,inputView:fe.createView()}}catch{O.current=null}if(p.current!==K){fe.destroy(),W.destroy();return}w.current=W,P.current=Ne,k.current=Ke,B.current=fe,y.current=Be,v.current=De,_.current=ze,f.current=Le,A.current=!1,F.current=!1;async function st(){const U=O.current;if(!U||A.current)return!1;const ne=r.current;if(!ne)return!1;const he=!F.current;he&&W.pushErrorScope("validation");try{const ue=W.importExternalTexture({source:ne}),de=W.createBindGroup({layout:U.layout,entries:[{binding:0,resource:ue},{binding:1,resource:ze}]}),pe=W.createCommandEncoder(),ge=pe.beginRenderPass({colorAttachments:[{view:U.inputView,loadOp:"load",storeOp:"store"}]});ge.setPipeline(U.pipeline),ge.setBindGroup(0,de),ge.draw(6),ge.end(),W.queue.submit([pe.finish()])}catch{return A.current=!0,O.current=null,!1}if(he){const ue=await W.popErrorScope().catch(()=>null);if(ue)return console.warn("[anime4k] blit probe failed:",ue.message),A.current=!0,O.current=null,!1;F.current=!0}return!0}g(!1);async function at(){if(H||p.current!==K||!Ne)return;const U=r.current;if(!U||U.videoWidth===0){ce();return}if(U!==z||U.videoWidth!==re||U.videoHeight!==j){R(de=>de+1);return}if(U.paused||U.ended||document.hidden||U.readyState<HTMLMediaElement.HAVE_CURRENT_DATA){ce();return}const ne=U.getVideoPlaybackQuality().totalVideoFrames;if(ne===m.current){ce();return}if(x.current){ce();return}const he=U.currentTime;(U.seeking||S.current>=0&&Math.abs(he-S.current)>.5)&&(Se(),M.current=!1,T.current=0,m.current=-1),S.current=he;const ue=Math.max(0,G.current||0);ue>T.current&&(M.current=!1),x.current=!0;try{const de=performance.now();let pe=null,ge=!1;if(ue<=0){I.current.length>0&&Se(),M.current=!1,T.current=0;let ye=!1;if(!L.current)try{W.queue.copyExternalImageToTexture({source:U},{texture:fe},[re,j]),m.current=ne,ye=!0}catch(oe){if(oe instanceof TypeError)L.current=!0;else throw oe}if(!ye&&!A.current&&O.current&&await st()&&(m.current=ne,ye=!0),!ye){const oe=await createImageBitmap(U);m.current=ne,W.queue.copyExternalImageToTexture({source:oe},{texture:fe},[re,j]),ee(oe)}}else{const ye=await createImageBitmap(U);m.current=ne;const oe=I.current;oe.push({bitmap:ye,capture:de});const it=Ae(ue);for(;oe.length>it;)ee(oe.shift()?.bitmap);let Ue=-1;for(let se=oe.length-1;se>=0;se--)if(de-oe[se].capture>=ue){Ue=se;break}if(Ue!==-1){for(let He=0;He<Ue;He++)ee(oe.shift()?.bitmap);const se=oe.shift();se?(pe=se.bitmap,M.current=!0,T.current=ue):(pe=ye,ge=!0)}else if(!M.current)pe=ye,ge=!0;else{const se=oe.shift();pe=se?se.bitmap:ye,se||(ge=!0)}if(!pe){x.current=!1,ce();return}W.queue.copyExternalImageToTexture({source:pe},{texture:fe},[re,j]),ge||ee(pe)}const je=W.createCommandEncoder();await Ke.pass(je);const We=je.beginRenderPass({colorAttachments:[{view:Ne.getCurrentTexture().createView(),clearValue:{r:0,g:0,b:0,a:1},loadOp:"clear",storeOp:"store"}]});We.setPipeline(De),We.setBindGroup(0,ot),We.draw(6),We.end(),W.queue.submit([je.finish()]),X.current=ne,$.current=0,W.queue.onSubmittedWorkDone().then(()=>{p.current===K&&(x.current=!1)})}catch(de){if(x.current=!1,$.current+=1,$.current>=Bn&&!H&&p.current===K){console.error(de),e(de instanceof Error?de.message:"Render error"),d(!1);return}}ce()}ce()}catch(ce){!H&&p.current===K&&(e(ce instanceof Error?ce.message:"Failed to initialize upscaler"),g(!1),d(!1))}}return te(),()=>{H=!0,p.current+=1,Re(),Se(),B.current&&(B.current.destroy(),B.current=null),y.current&&(y.current.destroy(),y.current=null),w.current&&(w.current.destroy(),w.current=null),k.current=null,v.current=null,_.current=null,f.current=null,O.current=null,P.current=null,x.current=!1}},[s,l,r,n,a,o]);const q=Q(H=>{d(H);try{localStorage.setItem("anime4kEnabled",String(H))}catch{}},[]),J=Q(()=>{d(H=>{const K=!H;try{localStorage.setItem("anime4kEnabled",String(K))}catch{}return K})},[]);return{isWebGPUSupported:l,isEnabled:s,isInitializing:c,error:b,toggle:J,setEnabled:q}}function In({videoRef:r,episodeKey:n,isEnabled:a,isSupported:u,mediaReady:l,isIframeSource:i,setEnabled:s}){const d=N(null),c=N(!1),g=N(!1),b=N(s);b.current=s,V(()=>{const e=d.current;d.current=n,!(e===null||e===n)&&(!a||!u||(c.current=!0,g.current=!1,b.current(!1)))},[n,a,u]),V(()=>{if(!c.current)return;if(a){g.current&&(c.current=!1);return}if(g.current=!0,!l)return;if(i){c.current=!1,b.current(!0);return}const e=r.current;if(!e)return;let o,R=!1;const p=()=>{R||(R=!0,c.current=!1,b.current(!0))};if(e.readyState>=2)return o=window.setTimeout(p,500),()=>window.clearTimeout(o);const w=()=>{window.setTimeout(p,500)};return e.addEventListener("canplay",w,{once:!0}),e.addEventListener("playing",w,{once:!0}),o=window.setTimeout(p,5e3),()=>{window.clearTimeout(o),e.removeEventListener("canplay",w),e.removeEventListener("playing",w)}},[a,l,i,r])}const Fn=()=>localStorage.getItem("preferredMode")==="dub"?"dub":"sub",On=/^[a-z0-9-]+$/i,_t=r=>r?"preferredProviderMature":"preferredProvider",xt=r=>{const n=localStorage.getItem(_t(r));return n&&On.test(n)?n:null},Bt=(r,n)=>{localStorage.setItem(_t(n),r)},Wn=()=>xt(!1)??"megaplay",Un=()=>({showMeta:{},episodes:[],watchedEpisodes:[],watchlistStatus:null,showCombinedDetails:!1,currentMode:Fn(),inWatchlist:!1,videoSources:[],selectedSource:null,selectedLink:null,isAutoplayEnabled:Ir(),showResumeModal:!0,resumeTime:0,resumeDuration:0,skipIntervals:[],selectedProvider:Wn(),loadingShowData:!0,loadingVideo:!1,error:null,showCookieModal:!1,cookieProvider:null});function Vn(r,n){switch(n.type){case"SET_STATE":return{...r,...n.payload};case"SET_MODE":return{...r,currentMode:n.payload,videoSources:[],selectedSource:null,selectedLink:null};case"SET_PROVIDER":return{...r,selectedProvider:n.payload};default:return r}}async function Mt(r,n,a,u,l=!1){if(!r||!n)throw new Error("Missing params");try{const[i,s,d,c]=await Promise.all([me.data.video.query({showId:r,episodeNumber:n,mode:a.currentMode,provider:a.selectedProvider}).catch(y=>{const v=y.data?.cause;return y.message==="AUTH_REQUIRED"&&v?.provider==="mkissa"&&u({type:"SET_STATE",payload:{showCookieModal:!0,cookieProvider:"mkissa"}}),null}),me.progress.getEpisode.query({showId:r,episodeNumber:n}).catch(()=>null),me.settings.getByKey.query({key:"preferredSource"}).catch(()=>null),me.data.skipTimes.query({showId:r,episodeNumber:n}).catch(()=>[])]),g=d?.value,b=i?.filter(y=>{const v=y.sourceName.toLowerCase();return a.currentMode==="dub"?v.includes("eng")||v.includes("dub"):v.includes("jpn")||v.includes("sub")||!v.includes("eng")&&!v.includes("dub")})??[],e=b.length>0?b:i??[];let o=e.length>0?e[0]:null;if(g){const y=e.find(v=>v.sourceName===g);y&&(o=y)}const R=o&&o.links.length>0?o.links.sort((y,v)=>(parseInt(v.resolutionStr)||0)-(parseInt(y.resolutionStr)||0))[0]:null,p=s?.currentTime||0,w=s?.duration||0,P=p,B=(Array.isArray(c)?c:c?.results||[]).map(y=>({skip_id:y.skip_id||"",skip_type:y.skip_type||"",start_time:y.interval?.start_time??y.start_time??0,end_time:y.interval?.end_time??y.end_time??0})).filter(y=>y.end_time>0);return(!i||i.length===0)&&(l||we.error(`No video sources found for ${a.selectedProvider}`)),{videoSources:i,selectedSource:o,selectedLink:R,resumeTime:P,resumeDuration:w,showResumeModal:P>5&&o?.type!=="iframe",skipIntervals:B,fetchedEpisodeNumber:n}}catch(i){const s=i;if(s.message==="AUTH_REQUIRED")return u({type:"SET_STATE",payload:{showCookieModal:!0,cookieProvider:s.provider}}),{videoSources:[],selectedSource:null,selectedLink:null,resumeTime:0,resumeDuration:0,showResumeModal:!1,skipIntervals:[],fetchedEpisodeNumber:n};throw i}}const Qn=(r,n,a,u)=>{const[l,i]=Ht(Vn,a,S=>({...Un(),showMeta:S?.name?{name:S.name,thumbnail:S.thumbnail,nativeName:S.nativeName,englishName:S.englishName,names:{romaji:S.name||S.englishName,english:S.englishName||S.name,native:S.nativeName}}:{}})),s=Rt(),d=Mr(),c=N(null),g=N(null),{options:b}=At(),e=Me(()=>b.filter(S=>(S.kind??"anime")==="anime"),[b]),o=n||l.initialEpisode,R=N(o);V(()=>{R.current!==o&&(R.current=o,i({type:"SET_STATE",payload:{selectedSource:null,selectedLink:null}}))},[o,i]),V(()=>{r&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r)&&l.selectedProvider!=="animepahe"&&c.current!==r&&(c.current=r,i({type:"SET_PROVIDER",payload:"animepahe"}))},[r,l.selectedProvider]);const{data:p,isLoading:w,error:P}=Qr(r),{data:k}=Tt({queryKey:[ae.playerData,r,l.currentMode,l.selectedProvider],queryFn:async()=>{if(!r)throw new Error("No showId");const S=async()=>{try{const J=await me.data.episodes.query({showId:r,mode:l.currentMode,provider:l.selectedProvider}).catch(()=>null);if(J?.episodes?.length)return J}catch{}return null},[m,M,T]=await Promise.all([S(),me.watchlist.check.query({showId:r}).catch(()=>({inWatchlist:!1,status:null})),me.progress.getWatchedEpisodes.query({showId:r}).catch(()=>[])]),q=m?.episodes?m.episodes.sort((J,H)=>parseFloat(J)-parseFloat(H)):[];return{description:m?.description||"",episodes:q,inWatchlist:M.inWatchlist,watchlistStatus:M.status??null,watchedEpisodes:T}},enabled:!!r});V(()=>{!n&&k?.episodes&&k.episodes.length>0&&!n&&i({type:"SET_STATE",payload:{initialEpisode:k.episodes[0]}})},[k,n]),V(()=>{if(p?.isAdult===void 0||g.current===r)return;const S=p.isAdult===!0,m=e.filter(T=>T.mature===S);if(m.length===0||e.find(T=>T.id===l.selectedProvider)?.mature===S)return;const M=xt(S);g.current=r??null,i({type:"SET_PROVIDER",payload:m.find(T=>T.id===M)?.id??m[0].id})},[p?.isAdult,l.selectedProvider,r,e]),V(()=>{if(!r||!/^dango-mt-\d+$/.test(r)||g.current===`temp:${r}`)return;const S=p?.provider;S&&(g.current=`temp:${r}`,S!==l.selectedProvider&&i({type:"SET_PROVIDER",payload:S}))},[r,p,l.selectedProvider]);const{data:B,isLoading:y,error:v}=Tt({queryKey:[ae.videoSources,r,o,l.selectedProvider,l.currentMode],queryFn:()=>Mt(r,o,l,i),enabled:!!r&&!!o&&!(l.showMeta?.isAdult===!0&&!u?.hasMatureConsent)}),{mutateAsync:_}=yt({mutationFn:async({wasIn:S,showMeta:m})=>{if(!r)throw new Error("Missing showId");if(S)await me.watchlist.remove.mutate({id:r});else{const M=m.name||m.names?.romaji;if(!M)throw new Error("Missing show name");await me.watchlist.add.mutate({id:r,name:M,thumbnail:m.thumbnail,nativeName:m.names?.native,englishName:m.names?.english,type:m.type,isAdult:m.isAdult})}return!S},onSuccess:S=>{we.success(S?"Added to watchlist":"Removed from watchlist"),s.invalidateQueries({queryKey:[ae.playerData,r]}),s.invalidateQueries({queryKey:[ae.showData,r]}),s.invalidateQueries({queryKey:[ae.watchlist]})},onError:S=>we.error(S instanceof Error?S.message:"Failed to update watchlist")}),f=Q(async()=>{!r||!p||await _({wasIn:!!k?.inWatchlist,showMeta:p})},[r,p,k?.inWatchlist,_]),E=Q(async S=>{try{await me.settings.set.mutate({key:"preferredSource",value:S})}catch(m){console.error(m)}},[]),{mutateAsync:x,isPending:X}=yt({mutationFn:async({status:S})=>{if(!r)throw new Error("Missing showId");if(k?.inWatchlist)return await me.watchlist.setStatus.mutate({id:r,status:S}),S;const m=p,M=m?.name||m?.names?.romaji;if(!m||!M)throw new Error("Missing show name");return await me.watchlist.add.mutate({id:r,name:M,thumbnail:m.thumbnail,nativeName:m.names?.native,englishName:m.names?.english,type:m.type,isAdult:m.isAdult,status:S}),S},onSuccess:S=>{i({type:"SET_STATE",payload:{inWatchlist:!0,watchlistStatus:S}}),we.success(`Moved to ${S}`),s.invalidateQueries({queryKey:[ae.showData,r]}),s.invalidateQueries({queryKey:[ae.watchlist]}),s.invalidateQueries({queryKey:[ae.continueWatching]})},onError:()=>we.error("Failed to update watchlist status")}),$=Q(async()=>{await x({status:"Completed"})},[x]),{mutateAsync:G,isPending:I}=yt({mutationFn:async({episodeNumber:S,duration:m,showMeta:M,episodes:T})=>{await me.progress.updateProgress.mutate({showId:r??"",episodeNumber:S,currentTime:m,duration:m,showName:M.name,showThumbnail:M.thumbnail,nativeName:M.names?.native,englishName:M.names?.english,genres:M.genres?.map(q=>q.name),popularityScore:Rr(M.score)??void 0,type:M.type,status:M.status,episodeCount:T.length,isAdult:M.isAdult})},onSuccess:(S,m)=>{we.success(`Episode ${m.episodeNumber} marked as watched`),s.invalidateQueries({queryKey:[ae.playerData,r]}),s.invalidateQueries({queryKey:[ae.showMeta,r]}),s.invalidateQueries({queryKey:[ae.videoSources,r,m.episodeNumber]}),s.invalidateQueries({queryKey:[ae.continueWatching]}),s.invalidateQueries({queryKey:[ae.thisWeekSchedule]}),s.invalidateQueries(d.continueWatching.pathFilter())},onError:()=>we.error("Failed to mark episode as watched")}),L=Q(async(S,m)=>{!r||!p||await G({episodeNumber:S,duration:m,showMeta:p,episodes:k?.episodes||[]})},[r,p,k?.episodes,G]),A=Q(async()=>{i({type:"SET_STATE",payload:{showCombinedDetails:!l.showCombinedDetails}})},[l.showCombinedDetails]),F=Me(()=>{const S=P||v,m=S?S.message:null,M=m==="AUTH_REQUIRED"?null:m,T=B&&B.fetchedEpisodeNumber===o?B:null,q=!!B&&!T;return{...l,currentEpisode:o,showMeta:{...l.showMeta||{},...p||{}},episodes:k?.episodes||[],watchedEpisodes:k?.watchedEpisodes||[],inWatchlist:!!k?.inWatchlist,watchlistStatus:k?.watchlistStatus??l.watchlistStatus??null,videoSources:T?.videoSources||[],selectedSource:l.selectedSource||T?.selectedSource||null,selectedLink:l.selectedLink||T?.selectedLink||null,resumeTime:T?.resumeTime||0,resumeDuration:T?.resumeDuration||0,showResumeModal:l.showResumeModal&&(T?.showResumeModal??!1),skipIntervals:T?.skipIntervals||[],loadingShowData:w,loadingVideo:y||q,error:M,fetchedEpisodeNumber:T?.fetchedEpisodeNumber}},[l,p,k,B,w,y,P,v,o]),O=Q((S,m)=>{const M=m||r;if(!M||!S||M===r&&S===o)return;const q=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(M)&&l.selectedProvider!=="animepahe"?"animepahe":l.selectedProvider,J=["video-sources",M,S,q,l.currentMode];s.getQueryState(J)?.status!=="success"&&s.prefetchQuery({queryKey:J,queryFn:()=>Mt(M,S,{selectedProvider:q,currentMode:l.currentMode},i,!0),staleTime:300*1e3,gcTime:1800*1e3})},[r,o,s,l,i]);return{state:F,dispatch:i,toggleWatchlist:f,moveToCompleted:$,setPreferredSource:E,handleToggleDetails:A,markEpisodeWatched:L,prefetchEpisodeSources:O,isMarkingWatched:I,isUpdatingWatchlistStatus:X}};function Gn({onNext:r,onToggleTheater:n,flashControls:a}){V(()=>{const u=l=>{l.target.closest('input, textarea, button, select, a, [role="button"], [contenteditable="true"]')||(["arrowup","arrowdown","arrowleft","arrowright"].includes(l.key.toLowerCase())&&a(),l.key.toLowerCase()==="n"&&r(),l.key.toLowerCase()==="t"&&n())};return document.addEventListener("keydown",u),()=>{document.removeEventListener("keydown",u)}},[a,r,n])}const Xe=(r,n,a)=>r.showId===n||!!a&&r.showId===a;function qn({testClipActive:r,selectedSourceType:n,onEnded:a,queue:u,removeFromQueue:l,showId:i,showMetaId:s,currentEpisode:d,isAutoplayEnabled:c,nextEpisode:g,previousEpisode:b,navigate:e,invalidateContinueWatching:o,dispatch:R}){const[p,w]=ie(!1),[P,k]=ie(null),[B,y]=ie(null),v=N(l);v.current=l;const _=N(!1);V(()=>{_.current=!1,w(!1)},[i,d]);const f=Q(()=>{if(r||_.current)return;_.current=!0,a();const L=u.find(A=>Xe(A,i,s)&&A.episodeNumber===d);if(u.length>0){const A=u.findIndex(O=>Xe(O,i,s)&&O.episodeNumber===d),F=A>=0?u[A+1]||null:u[0];y({nextItem:F,playedItem:L||null}),k(2);return}if(L&&v.current({showId:L.showId,episodeNumber:L.episodeNumber}),c&&g){o(),e(`/watch/${i}/${g}`);return}g||w(!0)},[a,e,u,i,s,d,g,c,o,r]),E=Q(()=>{if(u.length===0)return;a();const L=u.find(O=>Xe(O,i,s)&&O.episodeNumber===d),A=u.findIndex(O=>Xe(O,i,s)&&O.episodeNumber===d),F=A>=0?u[A+1]||null:u[0];L&&l({showId:L.showId,episodeNumber:L.episodeNumber}),F?e(`/watch/${F.showId}/${F.episodeNumber}`):g||w(!0)},[a,e,u,l,i,s,d,g]),x=Q(()=>{g&&(o(),e(`/watch/${i}/${g}`)),w(!1),R({type:"SET_STATE",payload:{showResumeModal:!1}})},[g,e,i,R,o]),X=Q(()=>{u.length>0?E():g?x():we.error("No next episode available")},[u.length,E,x,g]),$=Q(()=>w(!1),[]),G=Q(()=>{y(null),k(null)},[]),I=Q(()=>{b&&e(`/watch/${i}/${b}`)},[b,e,i]);return V(()=>{const L=A=>{A.origin===window.location.origin&&n==="iframe"&&A.data?.type==="ANI_WEB_MEDIA_ENDED"&&f()};return window.addEventListener("message",L),()=>window.removeEventListener("message",L)},[f,n]),V(()=>{if(!B||P===null)return;if(P<=0){const{nextItem:A,playedItem:F}=B;y(null),k(null),F&&v.current({showId:F.showId,episodeNumber:F.episodeNumber}),A?e(`/watch/${A.showId}/${A.episodeNumber}`):g||w(!0);return}const L=window.setTimeout(()=>{k(A=>A===null?null:A-1)},1e3);return()=>window.clearTimeout(L)},[B,P,e,g]),{showCompleteModal:p,queueCountdown:P,pendingQueueTransition:B,handleQueueTransition:E,handleNextEpisode:x,handleNShortcut:X,handlePreviousEpisode:I,handlePlaybackFinished:f,closeCompleteModal:$,cancelQueueTransition:G}}function Kn({videoRef:r,queue:n,showId:a,showMetaId:u,currentEpisode:l,selectedSource:i,hasNextEpisode:s,nextEpisode:d,prefetchEpisodeSources:c,matchesQueueItem:g}){const[b,e]=ie(!1),o=N(c);o.current=c;const R=N("");V(()=>{e(!1)},[l]);const p=Q(()=>{const w=r.current;if(!w||i?.type==="iframe")return;const P=w.duration,k=w.currentTime;if(!P||Number.isNaN(P)){e(!1);return}if(P-k<=60){const B=n.findIndex(_=>g(_,a,u)&&_.episodeNumber===l),y=n.length>0?B>=0?n[B+1]||null:n[0]:null,v=y?`${y.showId}:${y.episodeNumber}`:s?`${a}:${d}`:"";v&&R.current!==v&&(R.current=v,y?o.current(y.episodeNumber,y.showId):o.current(d??""))}e(s&&Fr(k,P))},[r,i,n,a,u,l,s,d,g]);return{showNextEpisodePrompt:b,handleThresholds:p}}const bt="fallbackChoice";function zn(){try{const r=localStorage.getItem(bt);return r==="iframe"||r==="retry"?r:null}catch{return null}}function jn(r){try{r===null?localStorage.removeItem(bt):localStorage.setItem(bt,r)}catch{}}function Hn({showId:r,episodeNumber:n,currentMode:a,selectedProvider:u,selectedSourceType:l,videoSources:i,isAdult:s,providerOrder:d,matureProviders:c,setPreferredSource:g,dispatch:b,showControls:e}){const o=N(!1),R=N([]),p=N(!1),[w,P]=ie(null),[k,B]=ie(!1),[y,v]=ie(!1),[_,f]=ie(()=>zn()??"ask"),E=Q(m=>{f(m),jn(m==="ask"?null:m)},[]),x=N(_);V(()=>{x.current=_},[_]);const X=N(i);X.current=i;const $=Q(()=>{o.current=!1,R.current=[],p.current=!1,P(null),B(!1)},[]);V(()=>{$()},[$,r,n]);const G=Q(m=>{if(o.current)return;o.current=!0;const M=m.links[0];g(m.sourceName),b({type:"SET_STATE",payload:{selectedSource:m,selectedLink:M}}),P(null)},[b,g]),I=Q(()=>{const M=X.current.find(T=>T.type==="iframe");return M?.links?.length?M:null},[]),L=Q(async()=>{const m=d.filter(M=>{if(R.current.includes(M))return!1;const T=c.has(M);return s===void 0?!0:T===s});B(!0);try{for(const M of m){R.current.push(M);let T=null;try{T=await me.data.video.query({showId:r,episodeNumber:n,mode:a,provider:M})}catch{continue}const q=(T??[]).filter(K=>{const ee=K.sourceName.toLowerCase();return a==="dub"?ee.includes("eng")||ee.includes("dub"):ee.includes("jpn")||ee.includes("sub")||!ee.includes("eng")&&!ee.includes("dub")});if((q.length>0?q:T??[]).find(K=>K.type!=="iframe"&&K.links?.length)){R.current=[u],p.current=!1,b({type:"SET_STATE",payload:{selectedProvider:M,videoSources:[],selectedSource:null,selectedLink:null,loadingVideo:!0}}),Bt(M,s===!0),P(null),we.success(`Switched to ${M} (direct stream)`);return}}P({retryFailed:!0}),we.error("No working direct stream found on other providers")}finally{B(!1)}},[r,n,a,s,u,b,d,c]),A=Q(()=>{if(o.current||p.current||l!=="player")return;const m=I();if(!m)return;R.current.includes(u)||R.current.push(u);const M=x.current;if(M==="iframe"){G(m);return}if(M==="retry"){L();return}e(!0),P({retryFailed:!1})},[l,u,I,G,L,e]),F=Q(()=>{p.current=!0,P(null),v(!1)},[]),O=Q(()=>{y&&E("iframe");const m=I();m?G(m):P(null)},[y,E,I,G]),S=Q(()=>{y&&E("retry"),L()},[y,E,L]);return{fallbackPrompt:w,isRetryingProvider:k,rememberFallbackChoice:y,setRememberFallbackChoice:v,fallbackChoice:_,updateFallbackChoice:E,dismissFallbackPrompt:F,chooseIframeFallback:O,chooseProviderRetry:S,handleVideoSourceError:A,resetFallback:$}}function Yn({videoRef:r,selectedSource:n,selectedLink:a,loadingVideo:u,testClipActive:l,resumeTime:i,showResumeModal:s,calibReturnRef:d,setAvailableSubtitles:c,setActiveSubtitleTrack:g,showControls:b,onFatalError:e}){const o=N(null),R=N(0),p=N(i),w=N(s),P=N(e);return P.current=e,V(()=>{p.current=i,w.current=s},[i,s]),V(()=>{const k=r.current;if(!k)return;let B=!1;for(o.current&&(o.current.destroy(),o.current=null),(u||n)&&(k.pause(),k.removeAttribute("src"),k.load());k.firstChild;)k.removeChild(k.firstChild);if(l)return k.src="/av-sync-test.mp4",k.play().catch(()=>{b(!0)}),()=>{B=!0};if(!n||!a)return;if(n.type==="iframe"){R.current=0;return}d.current!=null?(R.current=d.current,d.current=null):p.current>5&&!w.current?R.current=p.current:w.current&&(R.current=0);let y=a.link;if(y.startsWith("/api/proxy")||(y=`/api/proxy?url=${encodeURIComponent(y)}`,a.headers?.Referer&&(y+=`&referer=${encodeURIComponent(a.headers.Referer)}`)),n.subtitles){const $=localStorage.getItem("playerSubtitlesEnabled")!=="false";let G=null;try{G=localStorage.getItem("playerLastSubtitle")}catch{}const I=St(n.subtitles,{lastKey:G,enabled:$}),L=I>=0?n.subtitles[I]:null;n.subtitles.forEach(A=>{const F=document.createElement("track");F.kind="subtitles",F.label=A.label,F.srclang=A.lang;const O=A.src??A.url;if(O){let S=`/api/subtitle-proxy?url=${encodeURIComponent(O)}`;const m=a.headers?.Referer;m&&(S+=`&referer=${encodeURIComponent(m)}`),F.src=S}L&&A.label===L.label&&A.lang===L.lang&&(F.default=!0),k.appendChild(F)}),$||g("off"),c(n.subtitles)}const v=R.current;R.current=0;const _=()=>{v>0&&(k.currentTime=v)};k.addEventListener("loadedmetadata",_,{once:!0});const f=!(w.current&&p.current>5),E=()=>{f&&k.play().catch(()=>{b(!0)})};a.hls?(async()=>{const $=await qr();if(B)return;if(!$||!$.isSupported()){k.src=y,E();return}const G=document.body.classList.contains("low-end"),I=new $({maxBufferLength:G?15:30,maxMaxBufferLength:G?30:60,maxBufferSize:G?25*1e3*1e3:60*1e3*1e3,startLevel:-1,enableWorker:!0});o.current=I,I.on($.Events.ERROR,(F,O)=>{O.fatal&&P.current()});const L=(n.subtitles?.length??0)>0,A=()=>{try{L&&typeof I.subtitleTrack=="number"&&I.subtitleTrack!==-1&&(I.subtitleTrack=-1)}catch{}};I.on($.Events.SUBTITLE_TRACK_SWITCH,(F,O)=>{O?.id!==-1&&A()}),A(),I.loadSource(y),I.attachMedia(k),I.once($.Events.MANIFEST_PARSED,()=>{B||E()})})():(k.src=y,E());const x=localStorage.getItem("playerVolume"),X=localStorage.getItem("playerMuted");return x!==null&&(k.volume=parseFloat(x)),X!==null&&(k.muted=X==="true"),()=>{B=!0,k.removeEventListener("loadedmetadata",_),o.current&&(o.current.destroy(),o.current=null)}},[n,a,r,d,u,l,g,c,b]),{seekToTimeRef:R}}function Xn({videoRef:r,availableSubtitles:n,activeSubtitleTrack:a,setAvailableSubtitles:u,setActiveSubtitleTrack:l}){V(()=>{const i=r.current;if(!i)return;const s=()=>{const d=Array.from(i.textTracks).map(c=>({label:c.label,lang:c.language,src:void 0,mode:c.mode}));u(d)};return i.textTracks.addEventListener("addtrack",s),i.textTracks.addEventListener("removetrack",s),s(),()=>{i.textTracks.removeEventListener("addtrack",s),i.textTracks.removeEventListener("removetrack",s)}},[r,u]),V(()=>{if(a===null&&n.length>0&&localStorage.getItem("playerSubtitlesEnabled")!=="false"){let i=null;try{i=localStorage.getItem("playerLastSubtitle")}catch{}const s=St(n,{lastKey:i,enabled:!0});if(s<0){l("off");return}const d=n[s];l(d.lang||d.label)}},[a,n,l]),V(()=>{const i=r.current;if(!i||n.length===0)return;const s=a;if(!(localStorage.getItem("playerSubtitlesEnabled")!=="false")||s==="off"||s===null){Array.from(i.textTracks).forEach(g=>{g.mode="hidden"});return}let c=!1;if(Array.from(i.textTracks).forEach(g=>{const e=(g.language===s||g.label===s)&&!c;g.mode=e?"showing":"hidden",e&&(c=!0)}),!c&&i.textTracks.length>0){const g=Array.from(i.textTracks).find(b=>b.language==="en"||b.label==="English")||i.textTracks[0];g&&(g.mode="showing")}},[a,n,r])}function Jn({videoRef:r,videoBoxH:n,style:a,sourceKey:u,activeSubtitleTrack:l,availableSubtitles:i}){V(()=>{const s="dynamic-subtitle-styles";let d=document.getElementById(s);d||(d=document.createElement("style"),d.id=s,document.head.appendChild(d)),d.textContent=Ct(a);const c=r.current;if(!c)return;const g=Nt(a.fontSize,n||c.clientHeight||720);d.textContent=Ct({...a,fontSize:g});const b=()=>{const v=Number(a.position),_=isNaN(v)?0:Math.max(0,Math.min(100,v));return Math.max(0,Math.min(100,100-_))},e=(v,_)=>{try{const f=v;f.snapToLines=!1,f.line=_}catch{}},o=()=>{const v=g*16,_=c.videoHeight||c.clientHeight||720,f=c.videoWidth||c.clientWidth||1280;return{step:v*1.3/_*100,chars:Math.max(20,Math.floor(f/(v*.55)))}},R=v=>{const _=b(),f=Array.from(v.activeCues??[]);if(f.length<=1){f.forEach($=>e($,_));return}const{step:E,chars:x}=o();let X=_;for(let $=f.length-1;$>=0;$--){const I=String(f[$].text??"").replace(/<[^>]*>/g,"").split(`
55
- `).reduce((A,F)=>A+Math.max(1,Math.ceil(F.length/x)),0),L=X-I*E;e(f[$],Math.max(0,L)),X=L-E*.4}},p=v=>{if(!v.cues)return;const _=b();Array.from(v.cues).forEach(f=>e(f,_)),v.mode==="showing"&&R(v)},w=()=>{Array.from(c.textTracks).forEach(p)};w();const P=v=>{const _=v.target;_.mode==="showing"&&R(_)};Array.from(c.textTracks).forEach(v=>{v.addEventListener("cuechange",P)});const k=()=>{Array.from(c.textTracks).forEach(v=>{v.removeEventListener("cuechange",P),v.addEventListener("cuechange",P)}),w()};c.textTracks.addEventListener("addtrack",k),c.textTracks.addEventListener("removetrack",k);const B=Array.from(c.querySelectorAll("track")),y=()=>{w()};return B.forEach(v=>{v.addEventListener("load",y)}),()=>{Array.from(c.textTracks).forEach(v=>{v.removeEventListener("cuechange",P)}),c.textTracks.removeEventListener("addtrack",k),c.textTracks.removeEventListener("removetrack",k),B.forEach(v=>{v.removeEventListener("load",y)})}},[a,n,r,u,l,i])}function Zn({videoRef:r,overlayRef:n,style:a,activeSubtitleTrack:u,delayMs:l,enabled:i}){V(()=>{if(!i)return;const s=r.current,d=n.current;if(!s||!d)return;const c=localStorage.getItem("playerSubtitlesEnabled")!=="false",g=()=>{if(d.innerHTML="",!c||u==="off"||u===null)return;const o=Array.from(s.textTracks).find(y=>y.language===u||y.label===u);if(!o||o.mode!=="showing")return;const R=l/1e3;let p;if(R>0&&o.cues){const y=s.currentTime-R;p=Array.from(o.cues).filter(v=>v.startTime<=y&&y<=v.endTime)}else p=Array.from(o.activeCues??[]);if(p.length===0)return;const w={...a,fontSize:Nt(a.fontSize,s.clientHeight||0)},P=ar(w),k=ir(s,w.position),B=Array.from(p);B.forEach((y,v)=>{const _=String(y.text??"");if(!lr(_).trim())return;const f=document.createElement("div"),E=(B.length-1-v)*1.7;f.style.cssText=`${P}
56
- bottom: calc(${k}px + ${E}em);`,f.innerHTML=cr(_),d.appendChild(f)})},b=()=>g(),e=()=>g();return Array.from(s.textTracks).forEach(o=>{o.addEventListener("cuechange",b)}),s.addEventListener("timeupdate",e),g(),()=>{Array.from(s.textTracks).forEach(o=>{o.removeEventListener("cuechange",b)}),s.removeEventListener("timeupdate",e),d.innerHTML=""}},[u,l,i,n,a,r])}const eo=({isOpen:r,onClose:n,onSuccess:a})=>{const u=()=>{a?.(),n()};return t(mt,{isOpen:r,onClose:n,title:"MKissa Browser Verification",children:t("div",{className:Ve.container,children:[t("p",{children:"Open MKissa in this browser, play an anime episode, and complete any Cloudflare verification it shows. Once playback works there, return to Dango and click Refresh."}),t("div",{className:Ve.actions,children:t("a",{className:Ve.link,href:"https://mkissa.to/anime",target:"_blank",rel:"noreferrer",children:"Open MKissa anime"})}),t("div",{className:Ve.actions,children:[t("button",{className:Ve.secondaryButton,onClick:n,children:"Cancel"}),t("button",{className:Ve.button,onClick:u,children:"Refresh Dango"})]})]})})},yo=()=>{const{id:r,episodeNumber:n}=Yt(),a=Xt(),u=Rt(),l=Jt(),{hasConsent:i,grant:s}=Nr(),{options:d}=At(),c=Me(()=>d.filter(h=>(h.kind??"anime")==="anime"),[d]),g=Me(()=>c.map(h=>h.id),[c]),b=Me(()=>new Set(c.filter(h=>h.mature).map(h=>h.id)),[c]),{state:e,dispatch:o,toggleWatchlist:R,moveToCompleted:p,setPreferredSource:w,handleToggleDetails:P,markEpisodeWatched:k,prefetchEpisodeSources:B,isMarkingWatched:y,isUpdatingWatchlistStatus:v}=Qn(r,n,l.state||null,{hasMatureConsent:i});V(()=>{if(r&&e.showMeta?.id&&e.showMeta.id!==r){const h=n?`/watch/${e.showMeta.id}/${n}${window.location.search}`:`/watch/${e.showMeta.id}${window.location.search}`;a(h,{replace:!0})}},[r,e.showMeta?.id,n,a]);const _=Me(()=>{if(e.showMeta.name)return{name:e.showMeta.name,thumbnail:e.showMeta.thumbnail,names:e.showMeta.names,genres:e.showMeta.genres,score:e.showMeta.score,isAdult:e.showMeta.isAdult}},[e.showMeta.name,e.showMeta.thumbnail,e.showMeta.names,e.showMeta.genres,e.showMeta.score,e.showMeta.isAdult]),f=ur({skipIntervals:e.skipIntervals,showId:r,episodeNumber:e.currentEpisode?.toString(),episodeCount:e.episodes.length||void 0,sourceType:e.selectedSource?.type,showMeta:_}),{refs:E,actions:x}=f,X=Ur(),$=N(null),G=N(null),I=N(null),[L,A]=ie(()=>{try{const h=localStorage.getItem("anime4kProfile");return["low","balanced","high","denoise"].includes(h)?h:"balanced"}catch{return"balanced"}}),{videoDelayMs:F,videoDelayEnabled:O,setDelayEnabled:S,handleVideoDelayChange:m,isCalibrating:M,testClipActive:T,stopCalibration:q,openAvSyncCalibrator:J,cancelAvSyncCalibrator:H,applyAvSyncCalibrator:K,toggleTestClip:ee,calibReturnRef:Se,effectiveVideoDelayMs:Ae}=dr(E.videoRef,()=>x.setShowSettings(!1)),Re=N(null),te=$n({videoRef:E.videoRef,canvasRef:G,profile:L,delayMs:Ae}),z=te.isEnabled&&te.isWebGPUSupported;In({videoRef:E.videoRef,episodeKey:`${r??""}:${e.currentEpisode??""}`,isEnabled:te.isEnabled,isSupported:te.isWebGPUSupported,mediaReady:!e.loadingVideo&&!!e.selectedLink,isIframeSource:e.selectedSource?.type==="iframe",setEnabled:te.setEnabled}),mr({videoRef:E.videoRef,canvasRef:Re,delayMs:Ae,enabled:O&&!z});const ke=O&&!z,_e=z||ke,[re,j]=ie(!1),ve=N(n);V(()=>{ve.current!==n&&(ve.current=n,q())},[n,q]);const ft=Q(()=>{u.invalidateQueries({queryKey:[ae.continueWatching]})},[u]),{data:xe=[],isLoading:Je}=Pr(),Ze=Ar(),Qe=_r(),ht=xr(),{isTheaterMode:le,toggleTheaterMode:ce,handleLayoutClick:pt}=fr();Zt(()=>{if(f.state.isFullscreen||le)return;const h=E.playerContainerRef.current,Z=$.current;if(!h||!Z)return;const $e=()=>{const gt=h.getBoundingClientRect().height;Z.style.height=`${gt}px`};$e();const lt=new ResizeObserver($e);return lt.observe(h),()=>lt.disconnect()},[f.state.isFullscreen,le,E.playerContainerRef]);const Te=Me(()=>e.episodes.findIndex(h=>h===e.currentEpisode),[e.episodes,e.currentEpisode]),et=Te>0?e.episodes[Te-1]:null,Ge=Te>=0&&Te<e.episodes.length-1?e.episodes[Te+1]:null,tt=Te>-1&&Te<e.episodes.length-1,{showCompleteModal:W,queueCountdown:Ne,pendingQueueTransition:qe,handleQueueTransition:fe,handleNextEpisode:rt,handleNShortcut:Fe,handlePreviousEpisode:Oe,handlePlaybackFinished:Ke,closeCompleteModal:Be,cancelQueueTransition:ze}=qn({testClipActive:T,selectedSourceType:e.selectedSource?.type,onEnded:x.onEnded,queue:xe,removeFromQueue:Ze.mutate,showId:r,showMetaId:e.showMeta?.id,currentEpisode:e.currentEpisode,isAutoplayEnabled:e.isAutoplayEnabled,nextEpisode:Ge,previousEpisode:et,navigate:a,invalidateContinueWatching:ft,dispatch:o}),{showNextEpisodePrompt:nt,handleThresholds:Le}=Kn({videoRef:E.videoRef,queue:xe,showId:r,showMetaId:e.showMeta?.id,currentEpisode:e.currentEpisode,selectedSource:e.selectedSource,hasNextEpisode:tt,nextEpisode:Ge,prefetchEpisodeSources:B,matchesQueueItem:Xe}),{checkEnd:De,logDuration:ot}=hr({videoRef:E.videoRef,sourceType:e.selectedSource?.type,resetKey:`${r}:${e.currentEpisode}`,onEnd:Ke}),st=e.showResumeModal,at=W,U=st||at;pr(f,!!e.selectedLink&&!le&&!U);const{fallbackPrompt:ne,isRetryingProvider:he,rememberFallbackChoice:ue,setRememberFallbackChoice:de,fallbackChoice:pe,updateFallbackChoice:ge,dismissFallbackPrompt:je,chooseIframeFallback:We,chooseProviderRetry:ye,handleVideoSourceError:oe,resetFallback:it}=Hn({showId:r,episodeNumber:e.currentEpisode??void 0,currentMode:e.currentMode,selectedProvider:e.selectedProvider,selectedSourceType:e.selectedSource?.type,videoSources:e.videoSources,isAdult:e.showMeta?.isAdult,providerOrder:g,matureProviders:b,setPreferredSource:w,dispatch:o,showControls:x.setShowControls}),{seekToTimeRef:Ue}=Yn({videoRef:E.videoRef,selectedSource:e.selectedSource,selectedLink:e.selectedLink,loadingVideo:e.loadingVideo,testClipActive:T,resumeTime:e.resumeTime,showResumeModal:e.showResumeModal,calibReturnRef:Se,setAvailableSubtitles:x.setAvailableSubtitles,setActiveSubtitleTrack:x.setActiveSubtitleTrack,showControls:x.setShowControls,onFatalError:oe});V(()=>{U&&f.state.isFullscreen&&f.actions.toggleFullscreen()},[U,f.state.isFullscreen,f.actions]),V(()=>{U&&E.videoRef.current&&E.videoRef.current.pause()},[U,E.videoRef]);const{titlePreference:se}=Br(),{lowEndMode:He}=Lr(),{settings:vt,update:Lt}=vr(),Dt=le&&vt.enabled&&!He&&e.selectedSource?.type!=="iframe"&&!!e.selectedLink,Pe=Me(()=>{if(!e.showMeta||e.loadingShowData)return"Loading...";const{name:h,names:Z}=e.showMeta;return se==="name"?h||"Loading...":se==="nativeName"?Z?.native||h||"Loading...":se==="englishName"?Z?.english||h||"Loading...":h||"Loading..."},[e.showMeta,se,e.loadingShowData]);V(()=>{Pe&&Pe!=="Loading..."&&e.currentEpisode&&(document.title=`► ${Pe} Episode ${e.currentEpisode} - dango`)},[Pe,e.currentEpisode]),Gn({onNext:Fe,onToggleTheater:ce,flashControls:f.actions.flashControls});const{setAvailableSubtitles:$t,setActiveSubtitleTrack:It}=x,Et=Me(()=>({fontSize:f.state.subtitleFontSize,position:f.state.subtitlePosition,bgOpacity:f.state.subtitleBgOpacity,bgColor:f.state.subtitleBgColor,textColor:f.state.subtitleTextColor,edge:f.state.subtitleEdge,bold:f.state.subtitleBold}),[f.state.subtitleFontSize,f.state.subtitlePosition,f.state.subtitleBgOpacity,f.state.subtitleBgColor,f.state.subtitleTextColor,f.state.subtitleEdge,f.state.subtitleBold]);Xn({videoRef:E.videoRef,availableSubtitles:f.state.availableSubtitles,activeSubtitleTrack:f.state.activeSubtitleTrack,setAvailableSubtitles:$t,setActiveSubtitleTrack:It});const[Ft,Ot]=ie(0);V(()=>{const h=E.videoRef.current;if(!h)return;const Z=()=>Ot(h.clientHeight||0);Z();const $e=new ResizeObserver(Z);return $e.observe(h),()=>$e.disconnect()},[E.videoRef,e.selectedSource,e.selectedLink]),Jn({videoRef:E.videoRef,videoBoxH:Ft,style:Et,sourceKey:`${e.selectedSource?.sourceName??""}:${e.selectedLink?.link??""}`,activeSubtitleTrack:f.state.activeSubtitleTrack,availableSubtitles:f.state.availableSubtitles}),Zn({videoRef:E.videoRef,overlayRef:I,style:Et,activeSubtitleTrack:f.state.activeSubtitleTrack,delayMs:Ae,enabled:_e}),V(()=>{try{localStorage.setItem("anime4kProfile",L)}catch{}},[L]);const Wt=()=>{E.videoRef.current&&(E.videoRef.current.currentTime=e.resumeTime,E.videoRef.current.play()),o({type:"SET_STATE",payload:{showResumeModal:!1}})},Ut=()=>{E.videoRef.current&&(E.videoRef.current.currentTime=0,E.videoRef.current.play()),o({type:"SET_STATE",payload:{showResumeModal:!1}})},Vt=Q(()=>{o({type:"SET_STATE",payload:{showResumeModal:!1}})},[o]),Qt=Q(async()=>{try{await p(),Be(),o({type:"SET_STATE",payload:{showResumeModal:!1}}),a("/")}catch{}},[p,Be,o,a]),wt=(h,Z)=>t("div",{className:h,children:[t("button",{className:`${C.episodeNavBtn} ${C.secondary}`,onClick:Oe,disabled:!et,type:"button",children:[t(Y,{name:"chevron-left",size:12}),"Prev EP"]}),t("button",{className:`${C.episodeNavBtn} ${C.primary}`,onClick:rt,disabled:!Ge,type:"button",children:["Next EP",t(Y,{name:"chevron-right",size:12})]}),Z==="mobile"&&X&&t("button",{className:`${C.episodeNavBtn} ${C.episodePickerBtn}`,onClick:()=>j(!0),type:"button",children:[t(Y,{name:"list-ul",size:12}),"Episodes"]})]}),Gt=h=>{o({type:"SET_STATE",payload:{isAutoplayEnabled:h}}),Or(h)},kt=!!(e.currentEpisode&&e.watchedEpisodes.includes(e.currentEpisode)),qt=e.selectedProvider!=="megaplay"||e.selectedSource?.type==="iframe",Kt=Q(async()=>{if(!r||!e.currentEpisode||!e.showMeta.name||y)return;const h=E.videoRef.current?.duration,Z=Math.max(h||0,e.resumeDuration||0,Number(e.showMeta.episodeDuration||0)*60,1);await k(e.currentEpisode,Z)},[r,e.currentEpisode,e.showMeta,e.resumeDuration,k,y,E.videoRef]);if(e.error&&!e.showMeta.name&&e.videoSources.length===0&&e.episodes.length===0)return t("p",{className:"error-message",children:["Error: ",e.error]});const Ce=e.loadingShowData||e.loadingVideo;return e.showMeta?.isAdult===!0&&!i?t("div",{className:be.playerPageLayout,children:t(Wr,{isOpen:!0,onClose:()=>a("/home"),onGrant:s})}):t("div",{className:`${be.playerPageLayout} ${le?be.theaterMode:""}`,onClick:pt,children:[le&&t(gr,{videoRef:E.videoRef,active:Dt,settings:vt}),t(yr,{isOpen:at,onClose:Be,title:"Show Completed!",heading:Pe,message:"Congratulations! You finished all available episodes.",children:[t(ut,{variant:"secondary",onClick:Be,children:"Close"}),t(ut,{onClick:Qt,disabled:v,children:v?"Saving...":"Move to Completed"})]}),t(br,{isOpen:st,onClose:Vt,title:"Resume Playback?",message:t(ct,{children:["You were watching at ",t("strong",{children:f.actions.formatTime(e.resumeTime)}),". Would you like to continue?"]}),onResume:Wt,onRestart:Ut}),t(mt,{isOpen:!!ne,onClose:je,title:"Direct stream failed",width:"sm",children:[t(mt.Body,{children:[t("p",{children:[t("strong",{children:e.selectedProvider}),"'s direct stream failed for this episode."]}),ne?.retryFailed&&t("p",{children:"No working direct stream was found on the other providers either."}),t("p",{children:["You can continue with the embedded (iframe) player, but embedded players may show"," ",t("strong",{children:"ads and pop-ups"}),"."]}),t("label",{style:{display:"flex",alignItems:"center",gap:"8px",marginTop:"0.75rem",cursor:"pointer"},children:[t("input",{type:"checkbox",checked:ue,onChange:h=>de(h.currentTarget.checked)}),"Remember my choice"]})]}),t(mt.Actions,{children:[t(ut,{variant:"secondary",onClick:We,children:"Continue with iframe"}),t(ut,{onClick:ye,disabled:he,children:he?"Searching…":"Try another provider"})]})]}),t(Dr,{isOpen:!!e.showCookieModal&&e.cookieProvider!=="mkissa",onClose:()=>o({type:"SET_STATE",payload:{showCookieModal:!1}}),onSuccess:()=>{u.invalidateQueries({queryKey:[ae.videoSources,r,e.currentEpisode,e.selectedProvider,e.currentMode]})}}),t(eo,{isOpen:!!e.showCookieModal&&e.cookieProvider==="mkissa",onClose:()=>o({type:"SET_STATE",payload:{showCookieModal:!1}}),onSuccess:()=>{u.invalidateQueries({queryKey:[ae.videoSources,r,e.currentEpisode,e.selectedProvider,e.currentMode]})}}),!le&&t("aside",{ref:$,className:be.episodeSidebar,children:e.loadingShowData?t(Sr,{variant:"sidebar"}):t(Er,{episodes:e.episodes,currentEpisode:e.currentEpisode??void 0,watchedEpisodes:e.watchedEpisodes,onEpisodeClick:h=>a(`/watch/${r}/${h}`)})}),t("div",{className:be.playerMain,children:[t("div",{className:`${C.videoContainer} ${f.state.isFullscreen?"":be.videoPlayerWrapper} ${f.state.isFullscreen?C.fullscreenActive:""}`,style:{...U?{visibility:"hidden"}:{}},onContextMenu:h=>h.preventDefault(),children:t(kn,{player:f,isAutoplayEnabled:e.isAutoplayEnabled,onAutoplayChange:Gt,fallbackChoice:pe,onFallbackChoiceChange:ge,ambientSettings:vt,onAmbientChange:Lt,showNextEpisodeButton:!U&&nt&&xe.length===0,onNextEpisode:rt,videoSources:e.videoSources,selectedSource:e.selectedSource,selectedLink:e.selectedLink,onSourceChange:(h,Z)=>{E.videoRef.current&&!isNaN(E.videoRef.current.currentTime)&&(Ue.current=E.videoRef.current.currentTime),w(h.sourceName),o({type:"SET_STATE",payload:{selectedSource:h,selectedLink:Z,showResumeModal:e.showResumeModal&&h.type!=="iframe"}})},loadingVideo:Ce,skipIntervals:e.skipIntervals,animeTitle:Pe,episodeNumber:e.currentEpisode??void 0,isTheaterMode:le,onTheaterModeToggle:ce,anime4kEnabled:te.isEnabled,onAnime4kToggle:te.toggle,anime4kSupported:te.isWebGPUSupported,anime4kProfile:L,onAnime4kProfileChange:A,anime4kInitializing:te.isInitializing,anime4kError:te.error,videoDelayEnabled:O,onVideoDelayToggle:S,videoDelayMs:F,onVideoDelayChange:m,onCalibrateAvSync:J,isInteractingExtra:re||M,className:wr.shellFill,hideChrome:e.selectedSource?.type==="iframe",overlays:t(ct,{children:[f.state.isSpeedBoostActive&&t("div",{className:C.speedBoostBadge,"aria-hidden":"true",children:[t("span",{children:"2x"}),t(Y,{name:"forward",size:12})]}),Ne!==null&&qe?.nextItem&&t("div",{className:C.queueCountdown,children:["Queue next in ",Ne,"s"]})]}),children:[Ce&&t("div",{className:C.loadingOverlay,children:t("div",{className:C.loadingDots,children:[t("div",{className:C.dot}),t("div",{className:C.dot}),t("div",{className:C.dot})]})}),f.state.isBuffering&&!Ce&&e.selectedSource?.type!=="iframe"&&t("div",{className:C.bufferingOverlay,children:t("div",{className:C.bufferingSpinner})}),e.selectedSource?.type==="iframe"?!Ce&&t("iframe",{src:e.selectedLink?.link,className:C.videoIframe,allow:"autoplay; fullscreen; picture-in-picture",allowFullScreen:!0,sandbox:e.selectedSource.sandbox?`${e.selectedSource.sandbox} allow-fullscreen allow-popups allow-popups-to-escape-sandbox`:void 0}):t(ct,{children:[!Ce&&e.videoSources.length===0&&t("div",{className:C.errorOverlay,children:[t("p",{children:["No sources found for this episode with ",e.selectedProvider,"."]}),t("p",{className:C.errorSubtext,children:"Please try selecting a different provider below."}),t("button",{className:C.retryButton,onClick:()=>window.location.reload(),"data-speed-boost-ignore":"true",style:{marginTop:8},children:"Retry"})]}),!Ce&&e.videoSources.length>0&&t("video",{ref:E.videoRef,controls:f.state.useNativeControls,playsInline:!0,"webkit-playsinline":"true",disablePictureInPicture:!0,disableRemotePlayback:!0,onPlay:x.onPlay,onPause:x.onPause,onEnded:()=>{T||De(!0)},onDurationChange:()=>{x.onDurationChange(),ot()},onSeeked:()=>{T||(Le(),De())},onLoadedMetadata:()=>{x.onLoadedMetadata(),Le(),ot(),T||De()},onTimeUpdate:()=>{T||(x.onTimeUpdate(),Le(),De(),qe&&E.videoRef.current&&E.videoRef.current.currentTime<E.videoRef.current.duration-1&&ze())},onVolumeChange:x.onVolumeChange,onWaiting:x.onWaiting,onPlaying:x.onPlaying,onCanPlay:x.onCanPlay,onError:oe,onContextMenu:h=>h.preventDefault(),className:_e?C.videoElementHidden:""}),te.isWebGPUSupported&&!Ce&&e.videoSources.length>0&&t("canvas",{ref:G,className:`${C.upscalerCanvas} ${z?C.upscalerActive:""}`}),!z&&!Ce&&e.videoSources.length>0&&t("canvas",{ref:Re,className:`${C.upscalerCanvas} ${ke?C.upscalerActive:""}`}),te.isEnabled&&te.isWebGPUSupported&&te.isInitializing&&t("div",{className:C.upscalerStatusBadge,children:"Preparing upscaler…"}),_e&&t("div",{ref:I,className:C.subtitleOverlay}),t(kr,{isOpen:M,ms:F,onChange:m,onApply:K,onClose:H,testClipActive:T,onTestClip:ee})]})]})}),!le&&t(Tr,{}),!le&&t(ct,{children:[Je&&xe.length===0?t(Tn,{count:3}):t(Vr,{title:"Queue",items:xe,currentShowId:r,currentEpisode:e.currentEpisode??void 0,onNextQueue:fe,onRemove:h=>Ze.mutate({showId:h.showId,episodeNumber:h.episodeNumber}),onClear:()=>Qe.mutate(),showClearAll:!0,onReorder:h=>ht.mutate(h.map(Z=>({id:Z.id,showId:Z.showId,episodeNumber:Z.episodeNumber})))}),t("div",{className:C.streamPanel,children:[t(Nn,{selectedProvider:e.selectedProvider,isAdult:e.showMeta?.isAdult,options:c,onProviderChange:h=>{it(),o({type:"SET_STATE",payload:{selectedProvider:h,videoSources:[],selectedSource:null,selectedLink:null,loadingVideo:!0}}),Bt(h,e.showMeta?.isAdult===!0)}}),wt(`${C.episodeActions} ${C.desktopEpisodeActions}`,"desktop"),Ce?t("div",{className:C.sourceLoader,children:t("div",{className:C.spinner})}):t(An,{videoSources:e.videoSources,selectedSource:e.selectedSource,selectedLink:e.selectedLink,onSourceChange:h=>{E.videoRef.current&&!isNaN(E.videoRef.current.currentTime)&&(Ue.current=E.videoRef.current.currentTime);const $e=(h.links||[]).sort((lt,gt)=>(parseInt(gt.resolutionStr)||0)-(parseInt(lt.resolutionStr)||0))[0]||null;w(h.sourceName),o({type:"SET_STATE",payload:{selectedSource:h,selectedLink:$e,showResumeModal:e.showResumeModal&&h.type!=="iframe"}})},onLinkChange:h=>{e.selectedSource&&(w(e.selectedSource.sourceName),o({type:"SET_STATE",payload:{selectedLink:h}}))}})]}),t("div",{className:be.playerInfoContainer,children:[t("div",{className:be.playerInfoHeader,children:[t("div",{className:be.playerAnimeCard,children:t("img",{src:$r(e.showMeta.thumbnail||""),alt:Pe,loading:"lazy",decoding:"async",onError:h=>{h.target.src="/placeholder.svg"}})}),t("div",{className:be.videoTitleSection,children:[t("div",{className:C.titleContainer,children:[t("h1",{children:Pe}),t("div",{className:C.scheduleInfo,children:[e.showMeta.status&&t("span",{className:C.status,children:e.showMeta.status}),e.showMeta.nextEpisodeAirDate&&t("span",{className:C.nextEpisode,children:["Next episode: ",e.showMeta.nextEpisodeAirDate]})]})]}),t("div",{className:C.controls,children:[t("button",{className:`${C.watchlistBtn} ${e.inWatchlist?C.inList:""}`,onClick:R,children:[e.inWatchlist?t(Y,{name:"check",size:14}):t(Y,{name:"plus",size:14}),e.inWatchlist?"In Watchlist":"Add to Watchlist"]}),t(Gr,{showId:r,showName:e.showMeta.name||e.showMeta.names?.romaji,showThumbnail:e.showMeta.thumbnail,nativeName:e.showMeta.names?.native,englishName:e.showMeta.names?.english,showType:e.showMeta.type,className:`${C.watchlistBtn} ${C.queueBtn}`,activeClassName:C.queueActive}),qt&&t("button",{className:`${C.watchlistBtn} ${C.markWatchedBtn} ${kt?C.markWatchedDone:""}`,onClick:Kt,disabled:y||!e.currentEpisode,children:[t(Y,{name:"check",size:14}),y?"Saving...":kt?"Watched":"Mark Watched"]}),t("button",{className:`${C.watchlistBtn} ${C.modeToggleBtn} ${e.currentMode==="dub"?C.modeToggleActive:""}`,onClick:()=>{const h=e.currentMode==="dub"?"sub":"dub";it(),o({type:"SET_MODE",payload:h}),localStorage.setItem("preferredMode",h)},type:"button","aria-pressed":e.currentMode==="dub",children:e.currentMode==="dub"?"DUB":"SUB"}),He&&t("button",{className:`${C.watchlistBtn} ${C.modeToggleBtn} ${f.state.useNativeControls?C.modeToggleActive:""}`,onClick:()=>{const h=!f.state.useNativeControls;f.actions.setUseNativeControls(h),localStorage.setItem("playerUseNativeControls",h.toString())},type:"button",children:f.state.useNativeControls?"NATIVE: ON":"NATIVE: OFF"})]})]})]}),wt(`${C.episodeActions} ${C.mobileEpisodeActions}`,"mobile"),t("div",{className:be.infoColumns,children:[t("div",{className:`${C.descriptionSection} ${C.synopsisFlat}`,children:[t("h3",{children:"Synopsis"}),t(zr,{text:e.showMeta.description?e.showMeta.description.replace(/<[^>]*>?/gm,""):"",emptyText:"No description available."}),t("button",{className:C.detailsToggleBtn,onClick:P,children:[e.showCombinedDetails?t(Y,{name:"chevron-up"}):t(Y,{name:"chevron-down"}),e.showCombinedDetails?"Hide Details":"Show Details"]})]}),e.showCombinedDetails&&t(Kr,{showMeta:e.showMeta,styles:C})]})]})]})]}),t(Cr,{isOpen:re,onClose:()=>j(!1),episodes:e.episodes,currentEpisode:e.currentEpisode??void 0,watchedEpisodes:e.watchedEpisodes,onEpisodeClick:h=>{j(!1),a(`/watch/${r}/${h}`)}})]})};export{yo as default};
@@ -1 +0,0 @@
1
- import{g as w,d as ne,T as te,u as e}from"./vendor-core-DfaOB3Rn.js";import{I as o}from"./vendor-icons-DrybRNxP.js";import{S as ae,O as A,a as se,A as le,b as ie}from"./OptionListMenu-BSUcso28.js";import{u as re}from"./index-DlcgJVM6.js";import"./usePlaybackEnd-DuEfjKb8.js";import"./vendor-query-BBT5_sHx.js";import"./playbackCompletion-IPHm9fp5.js";const ce="_settingsPanel_1dymm_1",oe="_header_1dymm_33",me="_backBtn_1dymm_56",de="_contentWrapper_1dymm_76",ue="_menuContent_1dymm_82",he="_menuItem_1dymm_89",pe="_selected_1dymm_114",be="_currentValue_1dymm_134",ye="_menuNote_1dymm_141",ge="_menuError_1dymm_150",n={settingsPanel:ce,header:oe,backBtn:me,contentWrapper:de,menuContent:ue,menuItem:he,selected:pe,currentValue:be,menuNote:ye,menuError:ge},ve=($,P)=>{const{isOpen:y,onClose:ke,videoSources:Ce,currentSource:C,currentLink:N,onSourceChange:V,subtitles:O,activeSubtitleTrack:g,onSubtitleChange:E,subtitleSettings:z,onSubtitleSettingsChange:T,useNativeControls:v,onNativeControlsToggle:U,anime4kEnabled:u,onAnime4kToggle:B,anime4kSupported:f,anime4kProfile:r,onAnime4kProfileChange:h,anime4kInitializing:L,anime4kError:S,videoDelayEnabled:_,onVideoDelayToggle:M,videoDelayMs:I,onVideoDelayChange:D,onCalibrateAvSync:x,isAutoSkipEnabled:m,onAutoSkipChange:W,isAutoplayEnabled:d,onAutoplayChange:G,fallbackChoice:p,onFallbackChoiceChange:j,isTheaterMode:q,ambientSettings:b,onAmbientChange:k}=$,{lowEndMode:F}=re(),[a,i]=ne("main");w.useEffect(()=>{if(!y){const t=setTimeout(()=>i("main"),300);return()=>clearTimeout(t)}},[y]);const Q=()=>e("div",{className:n.menuContent,children:[e("button",{className:n.menuItem,onClick:()=>i("quality"),children:[e("span",{children:"Quality"}),e("span",{className:n.currentValue,children:N?.resolutionStr||"Auto"})]}),e("button",{className:n.menuItem,onClick:()=>i("subtitles"),children:[e("span",{children:"Subtitles"}),e("span",{className:n.currentValue,children:g||"Off"})]}),e("button",{className:n.menuItem,onClick:()=>i("subtitle-style"),children:e("span",{children:"Subtitle Style"})}),F&&e("button",{className:`${n.menuItem} ${v?n.selected:""}`,onClick:()=>{const t=!v;U(t),localStorage.setItem("playerUseNativeControls",t.toString())},children:[e("span",{children:"Native Controls"}),v&&e(o,{name:"check",size:12})]}),f&&e("button",{className:`${n.menuItem} ${u?n.selected:""}`,onClick:()=>{B(!u)},children:[e("span",{children:"Anime4K Upscaler"}),u&&e(o,{name:"check",size:12})]}),f&&u&&e("button",{className:n.menuItem,onClick:()=>i("upscaler"),children:e("span",{children:"Upscaler Settings"})}),e("button",{className:n.menuItem,onClick:()=>i("av-sync"),children:[e("span",{children:"A/V Sync"}),e("span",{className:n.currentValue,children:_?`${I}ms`:"Off"})]}),e("button",{className:n.menuItem,onClick:()=>i("playback"),children:[e("span",{children:"Playback"}),e("span",{className:n.currentValue,children:[m?"Auto-skip On":null,d?"Autoplay On":null].filter(Boolean).join(" • ")||"Off"})]}),q&&b&&k&&e("button",{className:n.menuItem,onClick:()=>i("ambient"),children:[e("span",{children:"Ambient Light"}),e("span",{className:n.currentValue,children:b.enabled?"On":"Off"})]})]}),R=()=>{const t=C?.links.sort((s,c)=>(parseInt(c.resolutionStr)||0)-(parseInt(s.resolutionStr)||0))||[];return e("div",{className:n.menuContent,children:e(A,{classes:{item:n.menuItem,active:n.selected},options:t.map(s=>({key:s.resolutionStr,label:s.resolutionStr,selected:N?.resolutionStr===s.resolutionStr})),onSelect:s=>{const c=t.find(l=>l.resolutionStr===s);c&&V(C,c)}})})},H=()=>e("div",{className:n.menuContent,children:e(A,{classes:{item:n.menuItem,active:n.selected},options:[{key:"off",label:"Off",selected:g==="off"},...O.map(t=>({key:t.label||t.lang,label:t.label,selected:g===(t.label||t.lang)}))],onSelect:t=>E(t)})}),K=()=>e("div",{className:n.menuContent,children:e(se,{classes:{item:n.menuItem,active:n.selected},values:z,onChange:T})}),J=te(()=>{try{const s=navigator.userAgentData?.brands?.map(l=>l.brand.toLowerCase())??[];if(s.length>0)return s.some(l=>l.includes("chromium")||l.includes("chrome")||l.includes("edge")||l.includes("opera")||l.includes("brave")||l.includes("vivaldi"));const c=navigator.userAgent.toLowerCase();return c.includes("chrome")||c.includes("chromium")||c.includes("edg")}catch{return!0}},[]),X=()=>e("div",{className:n.menuContent,children:[L&&e("div",{className:n.menuNote,role:"status",children:"Preparing GPU, this can take a few seconds…"}),S&&e("div",{className:n.menuError,role:"alert",children:["Upscaler failed: ",S]}),!J&&e("div",{className:n.menuNote,children:"Upscaling performs best in Chrome-based browsers."}),e("button",{className:`${n.menuItem} ${r==="low"?n.selected:""}`,onClick:()=>h("low"),children:[e("div",{children:[e("div",{children:"Low"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Lightest, best for weaker GPUs"})]}),r==="low"&&e(o,{name:"check",size:12})]}),e("button",{className:`${n.menuItem} ${r==="balanced"?n.selected:""}`,onClick:()=>h("balanced"),children:[e("div",{children:[e("div",{children:"Balanced"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Source + display aware"})]}),r==="balanced"&&e(o,{name:"check",size:12})]}),e("button",{className:`${n.menuItem} ${r==="high"?n.selected:""}`,onClick:()=>h("high"),children:[e("div",{children:[e("div",{children:"High"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Aggressive, needs strong GPU"})]}),r==="high"&&e(o,{name:"check",size:12})]}),e("button",{className:`${n.menuItem} ${r==="denoise"?n.selected:""}`,onClick:()=>h("denoise"),children:[e("div",{children:[e("div",{children:"Denoise"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Denoise + upscale noisy, compressed sources"})]}),r==="denoise"&&e(o,{name:"check",size:12})]})]}),Y=()=>e("div",{className:n.menuContent,children:[e("button",{type:"button",className:`${n.menuItem} ${m?n.selected:""}`,onClick:()=>W(!m),"aria-pressed":m,children:[e("span",{children:"Auto-skip openings and endings"}),e("span",{className:n.currentValue,children:m?"On":"Off"})]}),e("div",{className:n.menuNote,children:"Automatically jump past opening, ending and recap segments when detected."}),e("button",{type:"button",className:`${n.menuItem} ${d?n.selected:""}`,onClick:()=>G(!d),"aria-pressed":d,children:[e("span",{children:"Autoplay next episode"}),e("span",{className:n.currentValue,children:d?"On":"Off"})]}),e("div",{className:n.menuNote,children:"Automatically start the next episode when this one ends."}),e("button",{type:"button",className:n.menuItem,onClick:()=>j(p==="ask"?"iframe":p==="iframe"?"retry":"ask"),children:[e("span",{children:"Failed direct stream"}),e("span",{className:n.currentValue,children:p==="iframe"?"Use iframe":p==="retry"?"Try provider":"Ask me"})]}),e("div",{className:n.menuNote,children:"When a direct stream fails: ask each time, go straight to the embedded player (may show ads), or automatically try another provider."})]}),Z=()=>e("div",{className:n.menuContent,children:e(le,{classes:{item:n.menuItem,active:n.selected,note:n.menuNote},enabled:_,delayMs:I,onToggle:M,onDelayChange:D,onCalibrate:x})}),ee=()=>b&&k?e("div",{className:n.menuContent,children:e(ie,{classes:{item:n.menuItem,active:n.selected,note:n.menuNote},values:b,onChange:k})}):null;return y?e(ae,{classes:{panel:n.settingsPanel,header:n.header,backBtn:n.backBtn,title:"",content:n.contentWrapper},title:a==="main"?"Settings":a==="ambient"?"Ambient Light":a.charAt(0).toUpperCase()+a.slice(1).replace("-"," "),titleTag:"h3",showBack:a!=="main",onBack:()=>i("main"),panelRef:P,onPanelClick:t=>t.stopPropagation(),children:[a==="main"&&Q(),a==="quality"&&R(),a==="subtitles"&&H(),a==="subtitle-style"&&K(),a==="upscaler"&&X(),a==="av-sync"&&Z(),a==="playback"&&Y(),a==="ambient"&&ee()]}):null},$e=w.forwardRef(ve);export{$e as default};
@@ -1,4 +0,0 @@
1
- import{u as t,d as _,A as O,h as y,S as We,g as Vr,q as k,o as Fr,p as qr,a as Ur,T as Se}from"./vendor-core-DfaOB3Rn.js";import{u as Hr}from"./vendor-query-BBT5_sHx.js";import{g as en,t as dt,W as Wr,J as An,e as Kr,A as Zn,B as Xt}from"./index-DlcgJVM6.js";import{I as K}from"./vendor-icons-DrybRNxP.js";import{S as Yr,U as jr,p as wn,M as Gr,z as sr,f as Pn,d as Qr,C as Xr,a as Jr,b as Zr,c as Jt,u as es,i as ts,j as ns,n as rs,k as ss,m as as,l as os,s as Bn,e as is,g as ls,h as cs,r as us,o as Ne,A as ds,t as ms,E as bs,x as hs,P as fs,v as de,y as gs,R as ps,q as vs}from"./usePlaybackEnd-DuEfjKb8.js";import{S as ys,O as Ln,a as Ss,A as _s,b as Ts}from"./OptionListMenu-BSUcso28.js";import{M as Cs}from"./MatureConsentModal-Beq4JL0b.js";import{u as ks}from"./useProviders-D0XOHCsj.js";import{d as Es,g as Ns,h as Is,j as xs,f as As,e as Bs,k as Ls,l as Ms}from"./useTvLibrary-DiCSdUOj.js";import{l as ws,s as Ps,i as er,h as tr}from"./playbackCompletion-IPHm9fp5.js";import{l as Rs,c as zs}from"./hls-qvAoYTJt.js";import{u as $s}from"./useIsMobile-Dvx1uJ82.js";import{S as Ds}from"./SynopsisText-B3Sa5pRv.js";import"./libraryInvalidation-DdnIPcOQ.js";const Os="_fullscreenFlat_10bzs_1",Vs="_timeDisplay_10bzs_12",Fs="_bottomControls_10bzs_16",qs="_leftControls_10bzs_20",Us="_rightControls_10bzs_21",Hs="_controlBtn_10bzs_25",Ws="_controlsOverlay_10bzs_32",Ks="_hidden_10bzs_52",Ys="_topControls_10bzs_58",js="_backBtn_10bzs_78",Gs="_videoTitleInfo_10bzs_98",Qs="_animeTitle_10bzs_104",Xs="_episodeLabel_10bzs_112",Js="_speedBoostBadge_10bzs_119",Zs="_progressBarContainer_10bzs_165",ea="_progressBar_10bzs_165",ta="_thumb_10bzs_184",na="_bufferedBar_10bzs_202",ra="_watchedBar_10bzs_212",sa="_scrubbing_10bzs_237",aa="_timeBubble_10bzs_241",oa="_bottomControlsRow_10bzs_255",ia="_nextEpisodeBtn_10bzs_278",la="_active_10bzs_340",ca="_settingsPanel_10bzs_352",ua="_settingsHeader_10bzs_371",da="_settingsBackBtn_10bzs_379",ma="_settingsTitle_10bzs_397",ba="_settingsContent_10bzs_408",ha="_currentValue_10bzs_417",fa="_menuItem_10bzs_423",ga="_menuNote_10bzs_456",pa="_loadingOverlay_10bzs_465",va="_loadingDots_10bzs_476",ya="_dot_10bzs_481",Sa="_bufferingOverlay_10bzs_510",_a="_bufferingSpinner_10bzs_519",o={fullscreenFlat:Os,timeDisplay:Vs,bottomControls:Fs,leftControls:qs,rightControls:Us,controlBtn:Hs,controlsOverlay:Ws,hidden:Ks,topControls:Ys,backBtn:js,videoTitleInfo:Gs,animeTitle:Qs,episodeLabel:Xs,speedBoostBadge:Js,progressBarContainer:Zs,progressBar:ea,thumb:ta,bufferedBar:na,watchedBar:ra,scrubbing:sa,timeBubble:aa,bottomControlsRow:oa,nextEpisodeBtn:ia,active:la,settingsPanel:ca,settingsHeader:ua,settingsBackBtn:da,settingsTitle:ma,settingsContent:ba,currentValue:ha,menuItem:fa,menuNote:ga,loadingOverlay:pa,loadingDots:va,dot:ya,bufferingOverlay:Sa,bufferingSpinner:_a},Ta=({player:s,visible:m,settingsOpen:D,onOpenSettings:L,onCloseSettings:w,hasSubtitles:E,isSubtitleActive:n,subtitles:S,onSubtitleChange:a,showNextEpisodeButton:T,onNextEpisode:U,isTheaterMode:P,onTheaterModeToggle:h,timeLabelRef:Y})=>{const{state:d,refs:Re,actions:$}=s,X=Re.videoRef,Ie=N=>{const ne=X.current;!ne||isNaN(d.duration)||d.duration===0||(ne.currentTime=N*d.duration)},xe=()=>{X.current&&($.setIsScrubbing(!0),$.wasPlayingBeforeScrub.current=!X.current.paused,X.current.pause())},ze=N=>{const ne=X.current;ne&&d.duration&&(ne.currentTime=N*d.duration)},$e=()=>{$.setIsScrubbing(!1),$.wasPlayingBeforeScrub.current&&X.current?.play().catch(()=>{})},Ke=N=>{const ne=X.current;ne&&(ne.volume=N,ne.muted=N===0)},ie=()=>{if(n){a(-1);return}let N=null;try{N=localStorage.getItem("tvLastSubtitle")}catch{}a(wn(S,{lastKey:N,enabled:!0}))},j=d.isMuted?t(K,{name:"volume-mute"}):d.volume<.5?t(K,{name:"volume-down"}):t(K,{name:"volume-up"});return t("div",{className:`${o.controlsOverlay} ${m?"":o.hidden}`,"data-speed-boost-ignore":"true",style:{pointerEvents:"none",background:"none",justifyContent:"flex-end"},children:t("div",{className:o.bottomControls,onClick:N=>N.stopPropagation(),children:[t(Yr,{classes:{container:o.progressBarContainer,scrubbing:o.scrubbing,timeBubble:o.timeBubble,bar:o.progressBar,buffered:o.bufferedBar,watched:o.watchedBar,thumb:o.thumb},videoRef:X,duration:d.duration,formatTime:en,isScrubbing:d.isScrubbing,buffered:"full",onSeek:Ie,onScrubStart:xe,onScrubMove:ze,onScrubEnd:$e,timeLabelRef:Y}),t("div",{className:o.bottomControlsRow,children:[t("div",{className:o.leftControls,children:[t("button",{className:o.controlBtn,onClick:$.togglePlay,"aria-label":d.isPlaying?"Pause":"Play",children:d.isPlaying?t(K,{name:"pause"}):t(K,{name:"play"})}),t(jr,{muted:d.isMuted,volume:d.volume,volumeIcon:j,buttonClassName:o.controlBtn,onToggleMute:$.toggleMute,onVolumeChange:Ke,onExpandedChange:N=>$.setShowVolumeSlider(N)}),t("span",{className:o.timeDisplay,ref:Y,children:[en(0)," / ",en(d.duration)]})]}),t("div",{className:o.rightControls,children:[T&&t("button",{className:o.nextEpisodeBtn,onClick:U,title:"Play next episode",children:"Next EP"}),E&&t("button",{className:`${o.controlBtn} ${n?o.active:""}`,onClick:ie,"aria-label":n?"Turn subtitles off":"Turn subtitles on",children:t(K,{name:"closed-captioning"})}),t("button",{className:`${o.controlBtn} ${D?o.active:""}`,onClick:()=>D?w():L(),"aria-label":"Settings",children:t(K,{name:"cog"})}),t("button",{className:`${o.controlBtn} ${P?o.active:""}`,onClick:N=>{N.stopPropagation(),h()},title:P?"Exit Theater Mode":"Theater Mode","aria-label":P?"Exit Theater Mode":"Theater Mode",children:t(K,{name:"tv"})}),t("button",{className:o.controlBtn,onClick:$.toggleFullscreen,"aria-label":d.isFullscreen?"Exit Fullscreen":"Fullscreen",children:d.isFullscreen?t(K,{name:"compress"}):t(K,{name:"expand"})})]})]})]})})},Zt=-6e4,Mn=6e4,nr=500,Ca=({classes:s,delayMs:m,onDelayChange:D})=>{const[L,w]=_(null),E=L??m,n=O(D);n.current=D;const S=O(m);S.current=m;const a=O(null);a.current=L,y(()=>{w(null)},[m]),y(()=>()=>{const P=a.current;P!==null&&P!==S.current&&n.current(P)},[]);const T=P=>{S.current=P,a.current=null,n.current(P),w(null)},U=P=>{const h=a.current??S.current,Y=Math.max(Zt,Math.min(Mn,h+P));T(Y)};return t(We,{children:[t("div",{style:{display:"flex",gap:6,padding:"0.5rem 0.75rem 0.25rem"},children:[t("button",{type:"button",className:s.item,onClick:()=>U(-nr),"aria-label":"Show subtitles 0.5 seconds earlier",style:{flex:1,justifyContent:"center"},children:t("span",{children:"-0.5s"})}),t("button",{type:"button",className:s.item,onClick:()=>U(nr),"aria-label":"Show subtitles 0.5 seconds later",style:{flex:1,justifyContent:"center"},children:t("span",{children:"+0.5s"})}),t("button",{type:"button",className:s.item,onClick:()=>T(0),disabled:E===0,"aria-label":"Reset subtitle timing",style:{flex:1,justifyContent:"center"},children:t("span",{children:"Reset"})})]}),t(Gr,{label:"Subtitle timing",display:sr(E),min:Zt,max:Mn,step:100,value:E,percent:(E-Zt)/(Mn-Zt)*100,onChange:P=>{const h=Math.round(P);a.current=h,w(h)},onCommit:()=>{const P=a.current;P!==null&&T(P)}}),t("div",{className:s.note,children:"Positive delays subtitles (show later). Negative shows them earlier. 0.0s is default."})]})},ka=({view:s,onSelectView:m,onClose:D,player:L,onSubtitleStyleChange:w,streams:E,resolutionIdx:n,onResolutionChange:S,hasSubtitles:a,subtitles:T,selectedSubtitle:U,isSubtitleActive:P,onSubtitleChange:h,audioTracks:Y,selectedAudioTrack:d,onAudioTrackChange:Re,videoDelayEnabled:$,onVideoDelayToggle:X,videoDelayMs:Ie,onVideoDelayChange:xe,onCalibrate:ze,subtitleDelayMs:$e,onSubtitleDelayChange:Ke,ambientSettings:ie,onAmbientChange:j})=>{const{state:N}=L,ne=()=>t(We,{children:[E.length>1&&t("button",{className:o.menuItem,onClick:()=>m("resolution"),children:[t("span",{children:"Resolution"}),t("span",{className:o.currentValue,children:E[n]?.quality||"Auto"})]}),a&&t("button",{className:o.menuItem,onClick:()=>m("subtitles"),children:[t("span",{children:"Subtitles"}),t("span",{className:o.currentValue,children:P?T[U]?.label||T[U]?.language:"Off"})]}),a&&t("button",{className:o.menuItem,onClick:()=>m("subtitle-style"),children:[t("span",{children:"Subtitle Style"}),t("span",{className:o.currentValue,children:[N.subtitleFontSize.toFixed(1),"x · ",N.subtitlePosition]})]}),a&&t("button",{className:o.menuItem,onClick:()=>m("subtitle-timing"),children:[t("span",{children:"Subtitle Timing"}),t("span",{className:o.currentValue,children:sr($e)})]}),Y.length>0&&t("button",{className:o.menuItem,onClick:()=>m("audio"),children:[t("span",{children:"Audio Track"}),t("span",{className:o.currentValue,children:Y[d]?.label||Y[d]?.language})]}),t("button",{className:o.menuItem,onClick:()=>m("av-sync"),children:[t("span",{children:"A/V Sync"}),t("span",{className:o.currentValue,children:$?`${Ie}ms`:"Off"})]}),ie&&j&&t("button",{className:o.menuItem,onClick:()=>m("ambient"),children:[t("span",{children:"Ambient Light"}),t("span",{className:o.currentValue,children:ie.enabled?"On":"Off"})]})]}),_e=()=>t(Ln,{classes:{item:o.menuItem,active:o.active},options:E.map((x,W)=>({key:String(W),label:x.quality,selected:W===n})),onSelect:x=>S(Number(x))}),G=()=>t(Ln,{classes:{item:o.menuItem,active:o.active},options:[{key:"off",label:"Off",selected:!P},...T.map((x,W)=>({key:String(W),label:x.label||x.language,selected:W===U}))],onSelect:x=>h(x==="off"?-1:Number(x))}),Te=()=>t(Ss,{classes:{item:o.menuItem,active:o.active},values:{fontSize:N.subtitleFontSize,position:N.subtitlePosition,bgOpacity:N.subtitleBgOpacity,bgColor:N.subtitleBgColor,textColor:N.subtitleTextColor,edge:N.subtitleEdge,bold:N.subtitleBold},onChange:w}),H=()=>t(Ca,{classes:{item:o.menuItem,active:o.active,note:o.menuNote},delayMs:$e,onDelayChange:x=>Ke?.(x)}),Ae=()=>t(Ln,{classes:{item:o.menuItem,active:o.active},options:Y.map((x,W)=>({key:String(W),label:x.label||x.language,selected:W===d})),onSelect:x=>Re(Number(x))}),De=()=>t(_s,{classes:{item:o.menuItem,active:o.active,note:o.menuNote},enabled:$,delayMs:Ie,onToggle:x=>X?.(x),onDelayChange:x=>xe?.(x),onCalibrate:ze}),ge=()=>ie&&j?t(Ts,{classes:{item:o.menuItem,active:o.active,note:o.menuNote},values:ie,onChange:j}):null;return t("div",{"data-speed-boost-ignore":"true",onClick:x=>x.stopPropagation(),children:t(ys,{classes:{panel:o.settingsPanel,header:o.settingsHeader,backBtn:o.settingsBackBtn,title:o.settingsTitle,content:o.settingsContent},title:s==="main"?"Settings":s==="subtitle-style"?"Subtitle Style":s==="subtitle-timing"?"Subtitle Timing":s==="audio"?"Audio Track":s==="resolution"?"Resolution":s==="av-sync"?"A/V Sync":s==="ambient"?"Ambient Light":s.charAt(0).toUpperCase()+s.slice(1),onBack:()=>s==="main"?D():m("main"),children:[s==="main"&&ne(),s==="resolution"&&_e(),s==="subtitles"&&G(),s==="subtitle-style"&&Te(),s==="subtitle-timing"&&H(),s==="audio"&&Ae(),s==="av-sync"&&De(),s==="ambient"&&ge()]})})},Ea=({player:s,title:m,episodeLabel:D,audioTracks:L,selectedAudioTrack:w,onAudioTrackChange:E,subtitles:n,selectedSubtitle:S,onSubtitleChange:a,streams:T,resolutionIdx:U,onResolutionChange:P,onBack:h,children:Y,videoDelayEnabled:d=!1,onVideoDelayToggle:Re,videoDelayMs:$=0,onVideoDelayChange:X,onCalibrateAvSync:Ie,subtitleDelayMs:xe=0,onSubtitleDelayChange:ze,showNextEpisodeButton:$e=!1,onNextEpisode:Ke,isLoading:ie=!1,isTheaterMode:j,onTheaterModeToggle:N,ambientSettings:ne,onAmbientChange:_e})=>{const{state:G,refs:Te,actions:H}=s,Ae=Te.videoRef,{subtitleFontSize:De,subtitlePosition:ge,subtitleBgOpacity:x,subtitleBgColor:W,subtitleTextColor:Je,subtitleEdge:le,subtitleBold:Be}=G,[Ce,Le]=_(null),Ze=O(null),[It,mt]=_(0);y(()=>{const we=Ae.current;if(!we)return;const pe=()=>mt(we.clientHeight||0);pe();const J=new ResizeObserver(pe);return J.observe(we),()=>J.disconnect()},[Ae]);const Ye=H.setSubtitleStyle;y(()=>{const we="tv-player-subtitle-style";let pe=document.getElementById(we);pe||(pe=document.createElement("style"),pe.id=we,document.head.appendChild(pe));const J={fontSize:De,position:ge,bgOpacity:x,bgColor:W,textColor:Je,edge:le,bold:Be},ae=Ae.current,je=Pn(De,It||ae?.clientHeight||720);if(pe.textContent=Qr({...J,fontSize:je}),ae){const gt=()=>{const M=Number(ge);return isNaN(M)?0:Math.max(0,Math.min(100,M))},tt=(M,Z)=>{try{const re=M;re.snapToLines=!1,re.line=Z}catch{}},Bt=()=>{const M=je*16,Z=ae.videoHeight||ae.clientHeight||720,re=ae.videoWidth||ae.clientWidth||1280;return{step:M*1.3/Z*100,chars:Math.max(20,Math.floor(re/(M*.55)))}},nt=M=>{const Z=Math.max(0,Math.min(100,100-gt())),re=Array.from(M.activeCues??[]);if(re.length<=1){re.forEach(ee=>tt(ee,Z));return}const{step:Lt,chars:Mt}=Bt();let wt=Z;for(let ee=re.length-1;ee>=0;ee--){const rn=String(re[ee].text??"").replace(/<[^>]*>/g,"").split(`
2
- `).reduce((sn,an)=>sn+Math.max(1,Math.ceil(an.length/Mt)),0),Pt=wt-rn*Lt;tt(re[ee],Math.max(0,Pt)),wt=Pt-Lt*.4}},f=()=>{const M=Math.max(0,Math.min(100,100-gt()));Array.from(ae.textTracks).forEach(Z=>{Z.cues&&(Array.from(Z.cues).forEach(re=>tt(re,M)),Z.mode==="showing"&&nt(Z))})};f();const c=M=>{const Z=M.target;Z.mode==="showing"&&nt(Z)},ce=()=>{Array.from(ae.textTracks).forEach(M=>{M.removeEventListener("cuechange",c),M.addEventListener("cuechange",c)}),f()};Array.from(ae.textTracks).forEach(M=>{M.addEventListener("cuechange",c)}),ae.textTracks.addEventListener("addtrack",ce);const ue=Array.from(ae.querySelectorAll("track")),pt=()=>f();return ue.forEach(M=>M.addEventListener("load",pt)),()=>{Array.from(ae.textTracks).forEach(M=>{M.removeEventListener("cuechange",c)}),ae.textTracks.removeEventListener("addtrack",ce),ue.forEach(M=>M.removeEventListener("load",pt))}}},[De,ge,x,W,Je,le,Be,S,n,Ae,It]);const me=n.length>0,bt=S>=0,ht=()=>{Le("main"),H.setShowControls(!0)},B=()=>{Le(null)},et=G.showControls||!!Ce,xt=t(Zr,{visible:et,title:m,episode:D,onBack:h,classes:{overlay:o.controlsOverlay,hidden:o.hidden,top:o.topControls,backBtn:o.backBtn,titleInfo:o.videoTitleInfo,title:o.animeTitle,episode:o.episodeLabel}}),Me=!ie&&!G.isBuffering&&G.duration>0?t(Xr,{isPlaying:G.isPlaying,onTogglePlay:H.togglePlay,onSkipBack:()=>H.seek(-10),onSkipForward:()=>H.seek(10)}):null,At=t(Ta,{player:s,visible:et,settingsOpen:!!Ce,onOpenSettings:ht,onCloseSettings:B,hasSubtitles:me,isSubtitleActive:bt,subtitles:n,onSubtitleChange:a,showNextEpisodeButton:$e,onNextEpisode:Ke,isTheaterMode:j,onTheaterModeToggle:N,timeLabelRef:Ze}),tn=Ce?t(ka,{view:Ce,onSelectView:Le,onClose:B,player:s,onSubtitleStyleChange:Ye,streams:T,resolutionIdx:U,onResolutionChange:P,hasSubtitles:me,subtitles:n,selectedSubtitle:S,isSubtitleActive:bt,onSubtitleChange:a,audioTracks:L,selectedAudioTrack:w,onAudioTrackChange:E,videoDelayEnabled:d,onVideoDelayToggle:Re,videoDelayMs:$,onVideoDelayChange:X,onCalibrate:()=>{Le(null),Ie?.()},subtitleDelayMs:xe,onSubtitleDelayChange:ze,ambientSettings:ne,onAmbientChange:_e}):null,ft=t(We,{children:[ie&&t("div",{className:o.loadingOverlay,"aria-hidden":"true",children:t("div",{className:o.loadingDots,children:[t("div",{className:o.dot}),t("div",{className:o.dot}),t("div",{className:o.dot})]})}),G.isBuffering&&!ie&&t("div",{className:o.bufferingOverlay,"aria-hidden":"true",children:t("div",{className:o.bufferingSpinner})}),G.isSpeedBoostActive&&t("div",{className:o.speedBoostBadge,"aria-hidden":"true",children:[t("span",{children:"2x"}),t(K,{name:"forward",size:12})]})]});return t(Jr,{player:s,topBar:xt,centerControls:Me,bottomBar:!ie&&G.duration>0?At:null,settingsPanel:tn,overlays:ft,isInteracting:!!Ce,onStageClick:B,className:G.isFullscreen?o.fullscreenFlat:"",children:Y})},Na=({servers:s,selectedServer:m,onServerSelect:D})=>s.length===0?null:t("div",{className:Jt.sourceSelectionContainer,children:[t("h4",{children:"Source"}),t("div",{className:Jt.sourceButtons,children:s.map(L=>t("button",{className:`${Jt.sourceButton} ${m===L?Jt.active:""}`,onClick:()=>D(L),children:L},L))})]}),Ia=Vr.memo(Na);function xa({details:s,isMovie:m,season:D,episode:L,videoRef:w,active:E}){const n=O("");n.current||(n.current=`tv-${Date.now()}-${Math.random().toString(36).slice(2)}`);const S=k(()=>{if(!s)return;const a=w.current,T=m?"":`S${String(D).padStart(2,"0")}E${String(L).padStart(2,"0")}`;dt.discord.tvPresence.mutate({title:s.title,episodeLabel:T,isPlaying:a?!a.paused&&!a.ended:!0,thumbnail:s.poster,currentTime:a?a.currentTime:0,duration:a&&a.duration||0,isAdult:s.adult===!0,sessionId:n.current}).catch(()=>{}),dt.discord.heartbeat.mutate({sessionId:n.current}).catch(()=>{})},[s,m,D,L,w]);return y(()=>{if(!s)return;S();const a=window.setInterval(()=>{const T=w.current;(!T||!T.paused)&&S()},15e3);return()=>window.clearInterval(a)},[S,s,w]),y(()=>{if(!s||!E)return;const a=w.current;if(!a)return;const T=()=>S();return a.addEventListener("play",T),a.addEventListener("pause",T),a.addEventListener("seeked",T),()=>{a.removeEventListener("play",T),a.removeEventListener("pause",T),a.removeEventListener("seeked",T)}},[s,E,S,w]),y(()=>{const a=n.current,T=()=>Wr(a),U=()=>T();return window.addEventListener("pagehide",U),window.addEventListener("beforeunload",U),()=>{window.removeEventListener("pagehide",U),window.removeEventListener("beforeunload",U),T()}},[]),{sendPresence:S}}function Aa(s,m,D){const L=()=>{const E=Array.isArray(s.audioTracks)?s.audioTracks.length:0,n=D.getWant(),S=E>0?Math.min(Math.max(0,n),E-1):n;s.audioTrack=S,S!==n&&D.onResolve(S)},w=(E,n)=>{const S=D.getWant(),a=Array.isArray(s.audioTracks)?s.audioTracks.length:0;if(n.id!==S&&S>=0&&S<a){s.audioTrack!==S&&(s.audioTrack=S);return}D.onResolve(n.id)};return s.on(m.MANIFEST_PARSED,L),s.on(m.AUDIO_TRACK_SWITCHED,w),()=>{s.off(m.MANIFEST_PARSED,L),s.off(m.AUDIO_TRACK_SWITCHED,w)}}const Ba=/\b(SmartTV|SMART-TV|Tizen|Web0S|webOS|NetCast|HbbTV|AppleTV|CrKey|BRAVIA|AFT[A-Za-z]|Fire\s?TV|GoogleTV|Roku|VIDAA|DTV|PlayStation|Xbox|Opera TV|POV_TV)\b/i;function La(){try{if(Ba.test(navigator.userAgent||""))return!0;const s=navigator.deviceMemory;if(typeof s=="number"&&s>0&&s<2)return!0}catch{}return!1}const Ma="_statusMsg_zqb8u_1",wa="_error_zqb8u_7",Pa="_spinner_zqb8u_11",Ra="_spin_zqb8u_11",za="_sourceLoader_zqb8u_16",$a="_ringSpinner_zqb8u_22",Da="_meta_zqb8u_40",Oa="_year_zqb8u_48",Va="_rating_zqb8u_53",Fa="_typeBadge_zqb8u_62",qa="_tv_zqb8u_70",Ua="_movie_zqb8u_75",Ha="_controlLabel_zqb8u_80",Wa="_select_zqb8u_90",Ka="_playerSection_zqb8u_102",Ya="_video_zqb8u_106",ja="_videoHidden_zqb8u_128",Ga="_delayCanvas_zqb8u_133",Qa="_delayCanvasActive_zqb8u_146",Xa="_subtitleOverlay_zqb8u_150",Ja="_videoIframe_zqb8u_169",Za="_retryButton_zqb8u_177",eo="_sidebarSeason_zqb8u_192",to="_mobileSeasonRow_zqb8u_208",no="_providerSelectWrap_zqb8u_222",ro="_genreRow_zqb8u_230",so="_genreChip_zqb8u_237",ao="_metaRow_zqb8u_247",oo="_detailGrid_zqb8u_256",io="_detailItem_zqb8u_264",lo="_imdbLink_zqb8u_286",g={statusMsg:Ma,error:wa,spinner:Pa,spin:Ra,sourceLoader:za,ringSpinner:$a,meta:Da,year:Oa,rating:Va,typeBadge:Fa,tv:qa,movie:Ua,controlLabel:Ha,select:Wa,playerSection:Ka,video:Ya,videoHidden:ja,delayCanvas:Ga,delayCanvasActive:Qa,subtitleOverlay:Xa,videoIframe:Ja,retryButton:Za,sidebarSeason:eo,mobileSeasonRow:to,providerSelectWrap:no,genreRow:ro,genreChip:so,metaRow:ao,detailGrid:oo,detailItem:io,imdbLink:lo},co=[],uo=[];function rr({error:s,onRetry:m}){return t("div",{className:`${g.statusMsg} ${g.error}`,style:{flexDirection:"column",alignItems:"stretch",gap:8},children:t("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"},children:[t("span",{style:{flex:1},children:s}),t("button",{className:g.retryButton,onClick:m,children:"Retry"})]})})}const No=()=>{const{id:s}=Fr(),[m]=qr(),D=O(m);D.current=m;const L=Ur(),w=Hr(),E=m.get("type"),[n,S]=_(null),[a,T]=_(()=>parseInt(m.get("s")||"1",10)||1),[U,P]=_([]),[h,Y]=_(()=>parseInt(m.get("e")||"1",10)||1),[d,Re]=_(()=>{try{return localStorage.getItem("tvProvider")||""}catch{return""}}),[$,X]=_([]),[Ie,xe]=_(""),{options:ze,isFallback:$e,isLoading:Ke}=ks(),ie=Se(()=>ze.filter(e=>(e.kind??"tv")==="tv").map(e=>({id:e.id,label:e.label,tier:e.tier==="embed"?"embed":"direct",servers:e.servers})),[ze]),j=$e||ie.length===0?co:ie,N=j.filter(e=>e.tier==="direct"),ne=j.filter(e=>e.tier==="embed"),[_e,G]=_(!1),[Te,H]=_(""),[Ae,De]=_([]),[ge,x]=_(0),[W,Je]=_([]),[le,Be]=_(-1),[Ce,Le]=_(0),[Ze,It]=_(""),[mt,Ye]=_(""),[me,bt]=_(()=>{try{return localStorage.getItem("tvServer")||""}catch{return""}}),ht=Se(()=>j.find(e=>e.id===d),[j,d]),B=ht?.tier==="embed",[et,xt]=_([]),[Me,At]=_(""),[tn,ft]=_(""),[we,pe]=_(!1),J=Se(()=>et.length>0?et:ht?.servers??[],[et,ht]),ae=Se(()=>Me?["Embed",...J]:J,[J,Me]),je=we&&!!Me,gt=je?tn||Me:"";y(()=>{if(!Me){ft("");return}let e=!1;return An(`/api/resolve?url=${encodeURIComponent(Me)}`).then(r=>{!e&&r.finalUrl&&ft(r.finalUrl)}).catch(()=>{}),()=>{e=!0}},[Me]);const tt=O([]);y(()=>{tt.current=$},[$]);const Bt=O(ge);y(()=>{Bt.current=ge},[ge]);const nt=O(le);y(()=>{nt.current=le},[le]);const f=es({skipIntervals:uo}),c=f.refs.videoRef,ce=O(null),ue=O([]),pt=O(null),M=O(null),{videoDelayMs:Z,videoDelayEnabled:re,setDelayEnabled:Lt,handleVideoDelayChange:Mt,isCalibrating:wt,testClipActive:ee,stopCalibration:nn,openAvSyncCalibrator:rn,cancelAvSyncCalibrator:Pt,applyAvSyncCalibrator:sn,toggleTestClip:an,calibReturnRef:Rt,effectiveVideoDelayMs:on}=ts(c),[rt,ar]=_(()=>{try{const e=Number(localStorage.getItem("tvSubtitleDelayMs"));if(Number.isFinite(e)&&e>=-6e4&&e<=6e4)return Math.round(e)}catch{}return 0}),ln=O(rt);ln.current=rt;const or=k(e=>{const r=Math.max(-6e4,Math.min(6e4,Math.round(e)));if(ln.current!==r){ln.current=r,ar(r);try{localStorage.setItem("tvSubtitleDelayMs",String(r))}catch{}}},[]);ns({videoRef:c,canvasRef:pt,delayMs:on,enabled:re});const cn=re,ve=cn||rt!==0,{settings:un,update:ir}=rs(),dn=O(ve);dn.current=ve;const mn=k(()=>{if(!dn.current)return;const e=c.current;e&&Array.from(e.textTracks).forEach(r=>{r.mode!=="hidden"&&(r.mode="hidden")})},[c]),{hasConsent:vt,grant:lr}=Kr(),p=E==="movie";xa({details:n,isMovie:p,season:a,episode:h,videoRef:c,active:!B&&!_e&&!Te&&$.length>0});const zt=s?Es(E||"tv",s):"",Q=zt,Rn=Ns(),$t=Is(),Dt=xs(),{toggle:zn,bookmarkedIds:cr,pending:ur}=As(),{data:$n}=Bs(n?zt:void 0),yt=$n?!!$n.inLibrary:zt?cr.has(zt):!1,dr=k(()=>{!n||!s||zn({tmdbId:Number(s),mediaType:E||"tv",title:n.title,poster:n.poster,year:n.year,adult:n.adult})},[n,s,E,zn]),{data:Ot,isFetched:Dn}=Ls(Q||void 0,a,h),Vt=Se(()=>U.map(e=>e.episode_number).sort((e,r)=>e-r),[U]),St=Vt.indexOf(h),bn=St>0?Vt[St-1]:null,V=St>=0&&St<Vt.length-1?Vt[St+1]:null,Ft=Se(()=>(n?.seasons??[]).map(e=>e.season_number).filter(e=>Number.isFinite(e)).sort((e,r)=>e-r),[n]),Oe=Se(()=>{if(p||V!=null)return null;const e=Ft.indexOf(a);return e>=0&&e<Ft.length-1?Ft[e+1]:(n?.number_of_seasons??0)>a?a+1:null},[p,V,Ft,a,n?.number_of_seasons]),mr=Ot?.currentTime??0,hn=O(null),[Ve,qt]=_(!1),[st,On]=_(0),[_t,Vn]=_(!1),[at,ot]=_(!1),[br,fn]=_(!1),[hr,fr]=_(""),[Ut,gr]=_(!1),[pr,gn]=_(!1),{isTheaterMode:Pe,toggleTheaterMode:pn,handleLayoutClick:vr}=ss();y(()=>{const e=r=>{r.target.closest('input, textarea, button, select, a, [role="button"], [contenteditable="true"]')||r.key.toLowerCase()==="t"&&pn()};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[pn]),as(f,($.length>0||mt!=="")&&!Pe&&!Ve&&!at);const yr=$s(),[it,Sr]=_(ws),_r=k(e=>{Sr(e),Ps(e)},[]),Fe=O(!1),Ge=O(null),vn=O(0),te=O(null),Tt=O(""),Tr=tr(mr),Ct=!Fe.current&&(Ve||at||Tr),lt=O(Ct);lt.current=Ct;const ct=O(!1);y(()=>{ct.current=_t},[_t]);const qe=k((e,r)=>{if(!Q||!r||r<30)return;const i=er(e,r);Math.abs(e-vn.current)<10&&!i||(vn.current=e,Rn.mutate({mediaId:Q,season:a,episode:h,currentTime:Math.floor(e),duration:Math.floor(r),completed:i,title:n?.title??null,poster:n?.poster??null,backdrop:n?.backdrop??null,year:n?.year??null,overview:n?.overview??null,tmdbId:n?.id??null,mediaType:E||"tv",adult:n?.adult?1:0}))},[Q,a,h,Rn,n,E]),ke=k((e,r)=>{nn();const i=new URLSearchParams(m);i.set("type",m.get("type")||"tv"),i.set("s",String(e)),i.set("e",String(r)),L(`${window.location.pathname}?${i.toString()}`)},[m,L,nn]),kt=k(()=>{const e=c.current;if(!e||p||V==null){fn(!1);return}const r=e.duration||0,i=e.currentTime||0;fn(r>0&&i/r>=.8)},[p,V,c]),Ht=k((e,r)=>["tv-sources",d,p?"movie":"tv",s,e,r,me],[d,p,s,me]),Wt=k(async(e,r)=>{if(!n||!s||!d)return{valid:!1,sources:[]};const i=p?"movie":"tv",u=await dt.tv.sources.query({provider:d,type:i,tmdbId:String(s),season:e,episode:r,title:n.title||"",year:n.year||"",totalSeasons:String(n.number_of_seasons||1),imdbId:n.imdb_id||"",...J.length>0&&me?{server:me}:{}});return{valid:"valid"in u?u.valid:!1,error:"error"in u?u.error:void 0,sources:u.sources,referer:"referer"in u?u.referer:void 0,audioTracks:u.audioTracks,subtitles:"subtitles"in u?u.subtitles:void 0,servers:"servers"in u?u.servers:void 0,embedUrl:"embedUrl"in u?u.embedUrl:void 0}},[n,s,d,p,J,me]),Fn=k(()=>{if(p||!n||!s||!d||B||V==null)return;const e=Ht(a,V);w.getQueryState(e)?.status!=="success"&&w.prefetchQuery({queryKey:e,queryFn:()=>Wt(a,V),staleTime:300*1e3,gcTime:1800*1e3})},[p,n,s,d,B,V,a,w,Ht,Wt]),Cr=k(()=>{if(ee)return;kt();const e=c.current;!e||e.paused||e.ended||(e.duration>0&&e.duration-e.currentTime<=60&&Fn(),Ge.current&&clearTimeout(Ge.current),Ge.current=setTimeout(()=>{qe(e.currentTime,e.duration||0)},5e3))},[qe,c,ee,kt,Fn]),kr=k(()=>{const e=c.current;if(!(!e||!n)){if(Ge.current&&clearTimeout(Ge.current),qe(e.currentTime,e.duration||0),V!=null){it&&(Y(V),ke(a,V));return}fr(p?n.title:`${n.title} - Season ${a}`),ot(!0),Fe.current=!0}},[p,n,a,V,it,qe,ke,c]),{checkEnd:Kt,logDuration:qn}=os({videoRef:c,sourceType:B?"iframe":void 0,resetKey:`${Q}:${a}:${h}`,onEnd:kr}),Er=k(()=>{f.actions.onPlay()},[f.actions]),Nr=k(()=>{f.actions.onPause();const e=c.current;e&&!e.ended&&qe(e.currentTime,e.duration||0)},[f.actions,qe,c]),Ir=k(()=>{f.actions.onLoadedMetadata();const e=c.current;if(e){try{const r=parseFloat(localStorage.getItem("playerVolume")||"");isNaN(r)||(e.volume=Math.max(0,Math.min(1,r))),e.muted=localStorage.getItem("playerMuted")==="true"}catch{}if(te.current!=null&&te.current>0){try{e.currentTime=te.current}catch{}te.current=null}kt()}},[f.actions,c,kt]),yn=k(()=>{const e=c.current;if(e&&te.current!=null&&te.current>0){try{e.currentTime=te.current}catch{}te.current=null}},[c]),xr=k(()=>{st>0&&(te.current=st);const e=c.current;if(e&&st>0){try{e.currentTime=st,te.current=null}catch{}e.play().catch(()=>{})}qt(!1),Fe.current=!0},[st,c]),Un=k(()=>{te.current=null;const e=c.current;e&&(e.currentTime=0,e.play().catch(()=>{})),qt(!1),Fe.current=!0},[c]),Ar=k(()=>{V!=null&&(Fe.current=!0,Y(V),ke(a,V))},[V,a,ke]),Br=k(()=>{Oe!=null&&(ot(!1),Fe.current=!0,T(Oe),Y(1),ke(Oe,1))},[Oe,ke]),Lr=k(async()=>{if(Q)try{yt?await $t.mutateAsync({id:Q,status:"Completed"}):n&&s&&(await Dt.mutateAsync({tmdbId:Number(s),mediaType:E||"tv",title:n.title,poster:n.poster,backdrop:n.backdrop,year:n.year,overview:n.overview,adult:n.adult,status:"Completed",silent:!0}),Zn.success("Moved to Completed")),ot(!1),L("/")}catch{}},[Q,yt,$t,Dt,n,s,E,L]);y(()=>{Fe.current=!1,hn.current=null,qt(!1),fn(!1),On(0),Vn(!1),ct.current=!1,te.current=null,Tt.current=`${Q}:${a}:${h}`,vn.current=0},[Q,a,h]),y(()=>{Dn&&(Vn(!0),ct.current=!0)},[Dn,Q,a,h]),y(()=>{if(!Ot||Fe.current)return;const e=`${Q}:${a}:${h}`;if(hn.current===e)return;hn.current=e;const i=Ot.currentTime??0;tr(i)&&(On(i),qt(!0))},[Ot,Q,a,h]),y(()=>{Ve&&c.current&&c.current.pause()},[Ve,c]),y(()=>{const e=c.current;return()=>{Ge.current&&clearTimeout(Ge.current),e&&!e.ended&&qe(e.currentTime,e.duration||0)}},[qe,c]);const Sn=k(e=>{let r=null,i=!0;try{r=localStorage.getItem("tvLastSubtitle"),i=localStorage.getItem("tvSubtitlesEnabled")!=="false"}catch{}return wn(e,{lastKey:r,enabled:i})},[]),_n=k(e=>{if(!(e<0))try{localStorage.setItem("tvSubtitlesEnabled","true"),localStorage.setItem("tvSelectedSubtitle",String(e))}catch{}},[]),Hn=k(e=>{if(e.length===0)return 0;let r=null;try{r=localStorage.getItem("tvLastAudio")}catch{}if(r){const i=e.findIndex(b=>Bn(b)===r);if(i>=0)return i;const u=r.indexOf("|||"),l=u>=0?r.slice(0,u):r,A=u>=0?r.slice(u+3):r,R=e.findIndex(b=>b.language===l||b.label===A);if(R>=0)return R}return wn(e,{lastKey:null,enabled:!0})},[]),{data:Wn}=Ms(Q||void 0),Kn=Se(()=>(Wn?.progress??[]).filter(r=>r.season===a&&(r.completed===1||r.completed===1||er(r.currentTime,r.duration))).map(r=>String(r.episode)),[Wn,a]),Yn=Se(()=>U.map(e=>({id:String(e.episode_number),label:`Episode ${e.episode_number}`,sublabel:e.name||void 0,thumbnail:e.still_path?`https://image.tmdb.org/t/p/w185${e.still_path}`:void 0})),[U]),jn=Se(()=>(n?.genres??[]).map(e=>e.name).slice(0,5),[n]),Tn=Se(()=>[n?.year,n?.status,n?.number_of_seasons?`${n.number_of_seasons} Season${n.number_of_seasons>1?"s":""}`:null,n?.number_of_episodes?`${n.number_of_episodes} Episodes`:null].filter(Boolean),[n]);y(()=>{if(j.length!==0&&!j.some(e=>e.id===d)){const e=j.find(r=>r.tier==="direct")?.id??j[0].id;Re(e);try{localStorage.setItem("tvProvider",e)}catch{}}},[j,d]),y(()=>{xt([]),At(""),ft(""),pe(!1)},[d]),y(()=>{if(J.length!==0&&!J.includes(me)){bt(J[0]);try{localStorage.setItem("tvServer",J[0])}catch{}}},[J,me]),y(()=>{if(!s){S(null),X([]),xe(""),H(""),Ye("");return}const e=Number(s),r=E||"tv";S(null),X([]),xe(""),H(""),Ye("");const i=parseInt(D.current.get("s")||"",10),u=parseInt(D.current.get("e")||"",10);T(isNaN(i)?1:i),Y(isNaN(u)?1:u),Le(0),dt.tv.details.query({type:r,id:String(e)}).then(l=>{const A={id:l.id,title:l.title||"",overview:l.overview||"",vote_average:l.vote_average,year:l.year,poster:l.poster,backdrop:l.backdrop,imdb_id:l.imdb_id||void 0,adult:l.adult,seasons:l.seasons,number_of_seasons:l.number_of_seasons};S(A),A.seasons&&A.seasons.length>0&&isNaN(i)&&T(A.seasons[0].season_number)}).catch(()=>{})},[s,E]),y(()=>{if(!n||!s)return;if(!(n.seasons!==void 0||n.number_of_seasons!==void 0)){P([]);return}const r=parseInt(m.get("e")||"",10);dt.tv.episodes.query({id:String(s),season:String(a)}).then(i=>{const u=(i.episodes||[]).map(l=>({episode_number:l.episode_number,name:l.name||"",vote_average:l.vote_average,overview:l.overview||"",still_path:l.still_path||""}));P(u),u.length!==0&&Y(l=>!isNaN(r)&&u.some(A=>A.episode_number===r)?r:u.some(A=>A.episode_number===l)?l:u[0].episode_number)}).catch(()=>{})},[n,s,a,m]),y(()=>{if(!B||!n||!s)return;An(`/api/tv/embed/${d}/${p?"movie":"tv"}/${s}?season=${a}&episode=${h}`).then(r=>{if(r.url)return Ye(r.url),An(`/api/resolve?url=${encodeURIComponent(r.url)}`).then(i=>{i.finalUrl&&Ye(i.finalUrl)})}).catch(()=>{})},[d,n,s,a,h,p,B]);const Yt=k(async()=>{if(!n||!s||!d||B||n.adult&&!vt)return;const e=`${Q}:${a}:${h}`;G(!0),H(""),tt.current.length===0&&(X([]),Le(0),De([]),Je([]));try{const r=await w.fetchQuery({queryKey:Ht(a,h),queryFn:()=>Wt(a,h),staleTime:3e5,gcTime:18e5});if(Tt.current!==e){G(!1);return}if(G(!1),!r.valid||!r.sources?.length){H(r.error?`${r.error}`:J.length>0?`No streams from ${me}. Try another server.`:"No streams available.");return}X(r.sources),xe(e),r.servers?.length&&xt(r.servers),r.embedUrl&&At(r.embedUrl),Le(0),r.referer&&It(r.referer);const i=r.audioTracks||[];De(i),x(i.length>0?Hn(i):0);const u=r.subtitles||[];if(Je(u),u.length>0){const R=Sn(u);Be(R),_n(R)}else Be(-1);const l=p?"movie":"tv",A=s;dt.tv.subtitles.query({type:l,tmdbId:String(A),season:String(a),episode:String(h)}).then(R=>{if(Tt.current!==e)return;const b=Array.isArray(R.subtitles)?R.subtitles:[];b.length!==0&&Je(se=>{const be=[...se,...b.filter(v=>!se.some(he=>he.url===v.url))];if(se.length===0){const v=Sn(be);Be(v),_n(v)}return be})}).catch(()=>{}),H("")}catch(r){if(Tt.current!==e)return;G(!1),H(r instanceof Error?r.message:"Failed to load streams.")}},[n,s,d,a,h,p,B,vt,J,me,Sn,_n,Hn,Q,w,Ht,Wt]),Cn=k(()=>{const e=c.current;e&&!isNaN(e.currentTime)&&(te.current=e.currentTime)},[c]),Mr=k(e=>{if(e==="Embed"){pe(!0);return}Cn(),pe(!1),bt(e);try{localStorage.setItem("tvServer",e)}catch{}H("")},[Cn]),wr=k(e=>{Re(e);try{localStorage.setItem("tvProvider",e)}catch{}},[]);y(()=>{d&&n&&!B&&Yt()},[d,n,Yt,B]),y(()=>{if(!c.current)return;if(ce.current&&(ce.current.destroy(),ce.current=null),B||je){const b=c.current;b&&(b.pause(),b.removeAttribute("src"),b.load());return}let e=!1;if(ee){const b=c.current;return b&&(b.pause(),b.removeAttribute("src"),b.load(),b.src="/av-sync-test.mp4",lt.current||b.play().catch(()=>{})),()=>{e=!0}}if(Rt.current!=null&&(te.current=Rt.current,Rt.current=null),Tt.current===`${Q}:${a}:${h}`&&te.current==null&&!lt.current)try{const b=c.current;b&&!b.ended&&b.currentTime>1&&(te.current=b.currentTime)}catch{}const i=te.current??0,u=!_e&&Ie===`${Q}:${a}:${h}`?je?"":$[Ce]?.url||"":"";if(!u){try{c.current?.pause(),c.current?.removeAttribute("src"),c.current?.load()}catch{}return}const l=c.current;l.pause(),l.removeAttribute("src"),l.load(),f.actions.resetMediaState();const A=`/api/tv/stream-proxy?url=${encodeURIComponent(u)}&referer=${encodeURIComponent(Ze)}&provider=${encodeURIComponent(d)}`;$[Ce]?.type==="hls"?(async()=>{const b=await Rs();if(!e)if(b&&b.isSupported()){const se=La()||document.body.classList.contains("low-end"),be=se?60:180,v=new b({enableWorker:!0,lowLatencyMode:!1,startPosition:i>0?i:-1,maxBufferLength:be,maxMaxBufferLength:be+(se?30:60),backBufferLength:se?30:60,maxBufferSize:(se?120:360)*1e3*1e3,fragLoadPolicy:{default:{maxTimeToFirstByteMs:15e3,maxLoadTimeMs:45e3,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:3,retryDelayMs:800,maxRetryDelayMs:6e3}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:25e3,timeoutRetry:{maxNumRetry:1,retryDelayMs:500,maxRetryDelayMs:2e3},errorRetry:{maxNumRetry:2,retryDelayMs:800,maxRetryDelayMs:4e3}}}});ce.current=v,v.on(b.Events.ERROR,(z,I)=>{I.fatal&&(H(`Stream failed (${I.details}). Try another source or reload.`),G(!1),v.destroy(),ce.current=null)}),v.loadSource(A),v.attachMedia(l);const he=()=>{let z=!1,I=0;try{z=localStorage.getItem("tvSubtitlesEnabled")==="true";const C=parseInt(localStorage.getItem("tvSelectedSubtitle")||"0",10);!isNaN(C)&&C>=0&&(I=C)}catch{}return{enabled:z,index:I}},F=()=>{if(typeof v.subtitleTrack!="number")return;if(ue.current.length>0){v.subtitleTrack=-1;return}const z=Array.isArray(v.subtitleTracks)?v.subtitleTracks:[];if(z.length===0){v.subtitleTrack=-1;return}const I=he();if(I.enabled){const C=I.index<z.length?I.index:0;v.subtitleTrack=C,Be(C),mn()}else v.subtitleTrack=-1};Aa(v,b.Events,{getWant:()=>Bt.current,onResolve:z=>x(z)}),v.on(b.Events.MANIFEST_PARSED,()=>{F(),(i>0||!lt.current&&ct.current)&&l.play().catch(()=>f.actions.setShowControls(!0))}),v.on(b.Events.SUBTITLE_TRACKS_UPDATED,()=>{F()}),v.on(b.Events.SUBTITLE_TRACK_SWITCH,(z,I)=>{if(ue.current.length>0){if(I.id!==-1)try{v.subtitleTrack=-1}catch{}return}const C=Array.isArray(v.subtitleTracks)?v.subtitleTracks:[];if(C.length!==0){if(I.id===-1){const ye=he();if(ye.enabled){const oe=ye.index<C.length?ye.index:0;v.subtitleTrack=oe;return}}Be(I.id),mn()}})}else zs(l)&&(l.src=A,(i>0||!lt.current&&ct.current)&&l.play().catch(()=>{H("Failed to play stream. Try another source.")}))})():(l.src=A,(i>0||!lt.current&&ct.current)&&l.play().catch(()=>{H("Failed to play stream. Try another source.")}));const R=()=>{const be=l.error?.code===4?"Video source not supported or not found":"Failed to load video stream";H(`${be}. The source may be invalid or expired. Try switching source or reloading.`),G(!1)};return l.addEventListener("error",R),()=>{e=!0,l.removeEventListener("error",R)}},[$,Ie,_e,Ce,d,Ze,B,je,c,Rt,ee,Q,a,h,yn,mn,f.actions]),y(()=>{if(!_t||Ve||at||Ct||B||ee)return;const e=c.current;!e||!e.paused||e.ended||e.readyState<1||(yn(),e.play().catch(()=>{}))},[_t,Ve,at,Ct,B,ee,yn,c]),y(()=>{const e=ce.current;!e||typeof e.audioTrack!="number"||(e.audioTrack=ge)},[ge]),y(()=>{const e=ce.current;!e||typeof e.subtitleTrack!="number"||!Array.isArray(e.subtitleTracks)||e.subtitleTracks.length===0||ue.current.length>0||(le>=0?e.subtitleTrack=le:e.subtitleTrack=-1)},[le]),y(()=>{const e=c.current;if(!(!e||B)&&(e.querySelectorAll("track").forEach(r=>r.remove()),ue.current=[],W.length!==0&&(W.forEach(r=>{const i=document.createElement("track");i.kind="subtitles",i.label=r.label||r.language||"Unknown",i.srclang=r.language||r.label||"en";const u=`/api/subtitle-proxy?url=${encodeURIComponent(r.url)}&referer=${encodeURIComponent(Ze)}`;i.src=u,i.addEventListener("load",()=>{const l=ue.current.indexOf(i),A=i.track;if(A&&l>=0){const R=l===nt.current;A.mode=R&&!dn.current?"showing":"hidden"}}),e.appendChild(i),ue.current.push(i)}),W.length>0)))try{const r=ce.current;r&&typeof r.subtitleTrack=="number"&&r.subtitleTrack!==-1&&(r.subtitleTrack=-1)}catch{}},[W,Ze,B,d,c]),y(()=>{const e=c.current;if(!e||B)return;const r=ce.current;ue.current.length>0&&r&&typeof r.subtitleTrack=="number"&&Array.isArray(r.subtitleTracks)&&r.subtitleTracks.length>0&&(r.subtitleTrack=-1);const i=()=>{const A=Pn(f.state.subtitleFontSize,e.clientHeight||720),R=Math.max(0,Math.min(100,100-f.state.subtitlePosition)),b=()=>{const F=A*16,z=e.videoHeight||e.clientHeight||720,I=e.videoWidth||e.clientWidth||1280;return{step:F*1.3/z*100,chars:Math.max(20,Math.floor(I/(F*.55)))}},se=(F,z)=>{const I=F;I.snapToLines=!1,I.line=z},be=F=>{if(!F.cues)return;Array.from(F.cues).forEach(oe=>se(oe,R));const z=Array.from(F.activeCues??[]);if(z.length<=1){z.forEach(oe=>se(oe,R));return}const{step:I,chars:C}=b();let ye=R;for(let oe=z.length-1;oe>=0;oe--){const Ue=String(z[oe].text??"").replace(/<[^>]*>/g,"").split(`
3
- `).reduce((Gt,Et)=>Gt+Math.max(1,Math.ceil(Et.length/C)),0);ye=Math.max(0,ye-Ue*I),se(z[oe],ye),ye-=I*.4}},v=ue.current;if(v.length>0){v.forEach((F,z)=>{const I=F.track;if(!I)return;const C=z===le;I.mode=C&&!ve?"showing":"hidden",C&&!ve&&be(I)});return}const he=Array.from(e.textTracks);he.length!==0&&he.forEach((F,z)=>{const I=z===le;F.mode=I&&!ve?"showing":"hidden",I&&!ve&&be(F)})};i();const u=()=>i();e.textTracks.addEventListener("addtrack",u),e.addEventListener("loadedmetadata",i,{once:!0});const l=window.setTimeout(i,600);return()=>{e.textTracks.removeEventListener("addtrack",u),e.removeEventListener("loadedmetadata",i),window.clearTimeout(l)}},[le,W,B,d,c,ve,f.state.subtitleFontSize,f.state.subtitlePosition]),y(()=>{if(!ve)return;const e=c.current,r=M.current;if(!e||!r)return;const i=rt/1e3,u=on/1e3,l=new Set;let A=[],R=-1,b=-1,se=-1,be=-1,v=0,he=0,F=!1;const z=()=>{const q=nt.current;if(q<0)return null;const He=ue.current;return He.length>0?He[q]?.track??null:Array.from(e.textTracks)[q]??null},I=(q,He)=>{const fe=q.cues;if(!fe||fe.length===0)return Array.from(q.activeCues??[]);let Qe=0,Xe=fe.length;for(;Qe<Xe;){const Ee=Qe+Xe>>>1;fe[Ee].endTime+i<He?Qe=Ee+1:Xe=Ee}const Nt=[];for(let Ee=Qe;Ee<fe.length;Ee++){const Qt=fe[Ee];if(Qt.startTime+i>He)break;Qt.endTime+i>=He&&Nt.push(Qt)}return Nt},C=()=>{const q=z(),He=e.currentTime-u,fe=q?I(q,He):[],Qe=e.clientWidth,Xe=e.clientHeight,Nt=e.videoWidth,Ee=e.videoHeight;if(fe.length===A.length&&fe.every((Nn,In)=>Nn===A[In])&&Qe===R&&Xe===b&&Nt===se&&Ee===be||(A=fe,R=Qe,b=Xe,se=Nt,be=Ee,r.textContent="",fe.length===0))return;const Xn={fontSize:Pn(f.state.subtitleFontSize,Xe),position:f.state.subtitlePosition,bgOpacity:f.state.subtitleBgOpacity,bgColor:f.state.subtitleBgColor,textColor:f.state.subtitleTextColor,edge:f.state.subtitleEdge,bold:f.state.subtitleBold},$r=is(Xn),Dr=ls(e,Xn.position);fe.forEach((Nn,In)=>{const Jn=String(Nn.text??"");if(!cs(Jn).trim())return;const xn=document.createElement("div"),Or=(fe.length-1-In)*1.7;xn.style.cssText=`${$r}
4
- bottom: calc(${Dr}px + ${Or}em);`,xn.innerHTML=us(Jn),r.appendChild(xn)})},ye=()=>{Array.from(e.textTracks).forEach(q=>{l.has(q)||(l.add(q),q.addEventListener("cuechange",C))})},oe=()=>{ye(),C()},En=()=>{if(F||he)return;const q=()=>{he=0,!(F||e.paused||e.ended)&&(C(),En())};he=window.requestAnimationFrame(q)},Ue=e,Gt=()=>{v=0,C(),!F&&Ue.requestVideoFrameCallback&&(v=Ue.requestVideoFrameCallback(Gt))},Et=()=>{C(),Ue.requestVideoFrameCallback?v||(v=Ue.requestVideoFrameCallback(Gt)):En()};ye(),e.textTracks.addEventListener("addtrack",oe),e.textTracks.addEventListener("removetrack",oe),e.addEventListener("timeupdate",C),e.addEventListener("seeked",C),e.addEventListener("loadedmetadata",C),e.addEventListener("play",Et);const Gn=Array.from(e.querySelectorAll("track"));Gn.forEach(q=>q.addEventListener("load",C));const Qn=typeof ResizeObserver>"u"?null:new ResizeObserver(()=>C());return Qn?.observe(e),C(),Et(),()=>{F=!0,l.forEach(q=>q.removeEventListener("cuechange",C)),e.textTracks.removeEventListener("addtrack",oe),e.textTracks.removeEventListener("removetrack",oe),e.removeEventListener("timeupdate",C),e.removeEventListener("seeked",C),e.removeEventListener("loadedmetadata",C),e.removeEventListener("play",Et),Gn.forEach(q=>q.removeEventListener("load",C)),Qn?.disconnect(),he&&window.cancelAnimationFrame(he),v&&Ue.cancelVideoFrameCallback&&Ue.cancelVideoFrameCallback(v),r.textContent=""}},[ve,rt,le,W,on,c,f.state.subtitleFontSize,f.state.subtitlePosition,f.state.subtitleBgOpacity,f.state.subtitleBgColor,f.state.subtitleTextColor,f.state.subtitleEdge,f.state.subtitleBold]);const kn=()=>{S(null),X([]),Ye(""),L(-1)},Pr=k(e=>{T(e),Y(1),ke(e,1)},[ke]),jt=!p&&n?.seasons&&n.seasons.length>1?t("label",{className:g.sidebarSeason,children:[t("span",{children:"Season"}),t("select",{value:a,onChange:e=>Pr(parseInt(e.currentTarget.value,10)||1),className:g.select,children:n.seasons.map(e=>t("option",{value:e.season_number,children:["Season ",e.season_number," (",e.episode_count," ep)"]},e.season_number))})]}):null,ut=k(e=>{const r=parseInt(e,10);if(!isNaN(r)){try{c.current?.pause()}catch{}Y(r),ke(a,r)}gn(!1)},[a,ke,c]);y(()=>{if(p)return;const e=r=>{r.target.closest('input, textarea, button, select, a, [role="button"], [contenteditable="true"]')||r.key.toLowerCase()==="n"&&(V!=null?ut(String(V)):Zn.error("No next episode available"))};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[p,V,ut]);const Rr=e=>{x(e);try{const i=Ae[e];i&&localStorage.setItem("tvLastAudio",Bn(i))}catch{}const r=ce.current;r&&r.audioTrack!==void 0&&(r.audioTrack=e)},zr=e=>{Be(e);try{if(e===-1)localStorage.setItem("tvSubtitlesEnabled","false");else{localStorage.setItem("tvSubtitlesEnabled","true"),localStorage.setItem("tvSelectedSubtitle",String(e));const l=W[e];l&&localStorage.setItem("tvLastSubtitle",Bn(l))}}catch{}const r=c.current,i=ce.current;if(i&&typeof i.subtitleTrack=="number"&&Array.isArray(i.subtitleTracks)&&i.subtitleTracks.length>0&&(i.subtitleTrack=ue.current.length>0||e<0?-1:e),!r)return;const u=ue.current;if(u.length>0){u.forEach((l,A)=>{const R=l.track;if(!R)return;const b=A===e;R.mode=b&&!ve?"showing":"hidden"});return}Array.from(r.textTracks).forEach((l,A)=>{const R=A===e;l.mode=R&&!ve?"showing":"hidden"})};return y(()=>{if(!n){document.title="TV & Movies - dango";return}document.title=p?`${n.title} - dango`:`${n.title} - Season ${a} Episode ${h} - dango`},[n,p,a,h]),y(()=>{if(!n||p)return;const e=new URLSearchParams(m),r=e.get("s"),i=e.get("e"),u=String(a),l=String(h);r===u&&i===l||(e.set("type",m.get("type")||"tv"),e.set("s",u),e.set("e",l),L(`${window.location.pathname}?${e.toString()}`,{replace:!0}))},[n,p,a,h,m,L]),t("div",{className:`${Ne.playerPageLayout} ${Pe?Ne.theaterMode:""} ${p?Ne.noSidebar:""}`,onClick:vr,children:[Pe&&t(ds,{videoRef:c,active:un.enabled&&!B&&$.length>0&&!Te&&!(n?.adult&&!vt),settings:un}),!Pe&&!p&&t("aside",{className:Ne.episodeSidebar,children:n?t(ms,{episodes:Yn,currentEpisode:String(h),watchedEpisodes:Kn,onEpisodeClick:ut,header:jt}):t(bs,{variant:"sidebar"})}),t("div",{className:Ne.playerMain,children:[n&&t("div",{className:g.playerSection,onContextMenu:e=>e.preventDefault(),style:n.adult&&!vt?{filter:"blur(14px)",pointerEvents:"none",userSelect:"none"}:void 0,children:B&&mt?t("iframe",{src:mt,className:g.videoIframe,allow:"autoplay; fullscreen",allowFullScreen:!0}):!B&&gt?t("iframe",{src:gt,className:g.videoIframe,allow:"autoplay; fullscreen",allowFullScreen:!0}):!B&&($.length>0||_e)?t(We,{children:[Te&&t(rr,{error:Te,onRetry:Yt}),t(Ea,{player:f,title:n.title,episodeLabel:p?void 0:`S${a} E${h}`,audioTracks:Ae,selectedAudioTrack:ge,onAudioTrackChange:Rr,subtitles:W,selectedSubtitle:le,onSubtitleChange:zr,streams:$,resolutionIdx:Ce,onResolutionChange:e=>{Cn(),Le(e)},onBack:kn,videoDelayEnabled:re,onVideoDelayToggle:Lt,videoDelayMs:Z,onVideoDelayChange:Mt,onCalibrateAvSync:rn,subtitleDelayMs:rt,onSubtitleDelayChange:or,showNextEpisodeButton:br&&!Ve&&!at,onNextEpisode:Ar,isLoading:_e,isTheaterMode:Pe,onTheaterModeToggle:pn,ambientSettings:un,onAmbientChange:ir,children:[t("video",{ref:c,autoPlay:_t&&!Ct,playsInline:!0,disablePictureInPicture:!0,className:`${g.video} ${cn?g.videoHidden:""}`,onTimeUpdate:()=>{ee||(Cr(),Kt())},onEnded:()=>{ee||Kt(!0)},onPlay:Er,onPause:Nr,onSeeked:()=>{ee||(kt(),Kt())},onLoadedMetadata:()=>{Ir(),qn(),Kt()},onDurationChange:()=>{f.actions.onDurationChange(),qn()},onVolumeChange:f.actions.onVolumeChange,onWaiting:f.actions.onWaiting,onPlaying:f.actions.onPlaying,onCanPlay:f.actions.onCanPlay,onContextMenu:e=>e.preventDefault(),onError:()=>{H("Video failed to load. Try another server or reload."),G(!1)}}),t("canvas",{ref:pt,className:`${g.delayCanvas} ${cn?g.delayCanvasActive:""}`}),ve&&t("div",{ref:M,className:g.subtitleOverlay}),t(hs,{isOpen:wt,ms:Z,onChange:Mt,onApply:sn,onClose:Pt,testClipActive:ee,onTestClip:an})]})]}):Te&&!B?t(rr,{error:Te,onRetry:Yt}):null}),!Pe&&n&&t(fs,{}),!Pe&&jt&&t("div",{className:g.mobileSeasonRow,children:jt}),!Pe&&n&&t("div",{className:de.streamPanel,children:[t("div",{className:g.providerSelectWrap,children:t("label",{className:g.controlLabel,children:["Provider",t("select",{value:d,onChange:e=>wr(e.currentTarget.value),className:g.select,disabled:j.length===0,children:Ke?t("option",{value:"",children:"Loading..."}):j.length===0?t("option",{value:"",children:"No providers available"}):t(We,{children:[N.length>0&&t("optgroup",{label:"Direct HLS",children:N.map(e=>t("option",{value:e.id,children:e.label},e.id))}),ne.length>0&&t("optgroup",{label:"Embeds",children:ne.map(e=>t("option",{value:e.id,children:e.label},e.id))})]})})]})}),!B&&(_e?t("div",{className:g.sourceLoader,children:t("div",{className:g.ringSpinner})}):t(Ia,{servers:ae,selectedServer:we?"Embed":me,onServerSelect:Mr}))]}),!Pe&&n&&t("div",{className:Ne.playerInfoContainer,children:[t("div",{className:Ne.playerInfoHeader,children:[t("div",{className:Ne.playerAnimeCard,children:n.poster&&t("img",{src:`https://image.tmdb.org/t/p/w342${n.poster}`,alt:n.title,loading:"lazy",decoding:"async"})}),t("div",{className:Ne.videoTitleSection,children:[t("div",{className:de.titleContainer,children:[t("h1",{children:n.title}),t("div",{className:g.meta,children:[t("span",{className:g.year,children:n.year}),n.vote_average!=null&&n.vote_average>0&&t("span",{className:g.rating,children:[t(K,{name:"star",size:12}),Number(n.vote_average).toFixed(1)]}),t("span",{className:`${g.typeBadge} ${g[p?"movie":"tv"]}`,children:p?"Movie":"TV Show"})]}),jn.length>0&&t("div",{className:g.genreRow,children:jn.map(e=>t("span",{className:g.genreChip,children:e},e))}),Tn.length>0&&t("div",{className:g.metaRow,children:Tn.map((e,r)=>t("span",{children:[e,r<Tn.length-1?" · ":""]},`${e}-${r}`))})]}),t("div",{className:de.controls,children:[t("button",{className:`${de.watchlistBtn} ${yt?de.inList:""}`,onClick:dr,disabled:ur,type:"button",children:[yt?t(K,{name:"check",size:14}):t(K,{name:"plus",size:14}),yt?"In Watchlist":"Add to Watchlist"]}),!p&&t(We,{children:[t("button",{className:`${de.watchlistBtn}`,onClick:()=>bn!=null&&ut(String(bn)),disabled:bn==null,type:"button",children:[t(K,{name:"chevron-left",size:14}),"Prev EP"]}),t("button",{className:`${de.watchlistBtn}`,onClick:()=>V!=null&&ut(String(V)),disabled:V==null,type:"button",children:["Next EP",t(K,{name:"chevron-right",size:14})]}),!p&&t("button",{className:`${de.watchlistBtn} ${de.modeToggleBtn} ${it?de.modeToggleActive:""}`,onClick:()=>_r(!it),type:"button","aria-pressed":it,children:it?"AUTOPLAY: ON":"AUTOPLAY: OFF"}),yr&&t("button",{className:`${de.watchlistBtn}`,onClick:()=>gn(!0),type:"button",children:[t(K,{name:"list-ul",size:14}),"Episodes"]})]})]})]})]}),t("div",{className:Ne.infoColumns,children:[t("div",{className:`${de.descriptionSection} ${de.synopsisFlat}`,children:[t("h3",{children:"Synopsis"}),t(Ds,{text:n.overview,emptyText:"No description available."}),t("button",{className:de.detailsToggleBtn,onClick:()=>gr(!Ut),type:"button",children:[Ut?t(K,{name:"chevron-up"}):t(K,{name:"chevron-down"}),Ut?"Hide Details":"Show Details"]})]}),Ut&&t("div",{className:g.detailGrid,children:[n.first_air_date&&t("div",{className:g.detailItem,children:[t("strong",{children:p?"Release Date":"First Air Date"}),t("span",{children:n.first_air_date})]}),n.last_air_date&&t("div",{className:g.detailItem,children:[t("strong",{children:"Last Air Date"}),t("span",{children:n.last_air_date})]}),n.networks&&n.networks.length>0&&t("div",{className:g.detailItem,children:[t("strong",{children:"Networks"}),t("span",{children:n.networks.map(e=>e.name).join(", ")})]}),n.created_by&&n.created_by.length>0&&t("div",{className:g.detailItem,children:[t("strong",{children:"Created By"}),t("span",{children:n.created_by.map(e=>e.name).join(", ")})]}),n.episode_run_time&&n.episode_run_time.length>0&&t("div",{className:g.detailItem,children:[t("strong",{children:"Episode Runtime"}),t("span",{children:[n.episode_run_time[0]," min"]})]}),n.imdb_id&&t("div",{className:g.detailItem,children:[t("strong",{children:"IMDb"}),t("a",{href:`https://www.imdb.com/title/${n.imdb_id}`,target:"_blank",rel:"noopener noreferrer",className:g.imdbLink,children:"View on IMDb"})]})]})]})]}),!p&&t(gs,{isOpen:pr,onClose:()=>gn(!1),episodes:Yn,currentEpisode:String(h),watchedEpisodes:Kn,onEpisodeClick:ut,header:jt}),n?.adult&&!vt&&t(Cs,{isOpen:!0,onClose:kn,onGrant:lr}),t(ps,{isOpen:Ve,onClose:Un,title:"Resume Watching",message:t(We,{children:["You were at ",t("strong",{children:en(st)})]}),restartLabel:"Start from Beginning",onResume:xr,onRestart:Un}),t(vs,{isOpen:at,onClose:()=>ot(!1),title:p?"Movie Completed!":Oe!=null?"Season Complete!":"Show Completed!",heading:hr,message:p?"You finished this movie!":Oe!=null?`You finished Season ${a}.`:"Congratulations! You finished all available episodes.",children:[t(Xt,{variant:"secondary",onClick:()=>ot(!1),children:"Close"}),Oe!=null?t(Xt,{onClick:Br,children:["Start Season ",Oe]}):t(We,{children:[t(Xt,{onClick:()=>{ot(!1),kn()},children:"Back to Details"}),t(Xt,{onClick:Lr,disabled:$t.isPending||Dt.isPending,children:$t.isPending||Dt.isPending?"Saving...":"Move to Completed"})]})]}),!n&&t("div",{className:g.statusMsg,children:[t(K,{name:"spinner",className:g.spinner})," Loading..."]})]})]})};export{No as default};
@@ -1 +0,0 @@
1
- import{_ as n}from"./index-DlcgJVM6.js";let a=null,e=null;async function r(){return a||(e||(e=n(()=>import("./hls-BOLXTnjL.js"),[]).then(l=>(a=l.default,a)).catch(()=>null)),e)}function c(l){return l.canPlayType("application/vnd.apple.mpegurl")!==""||l.canPlayType("application/x-mpegURL")!==""}export{c,r as l};