From 9d1d9bc74166709c2bf6ee55791b7e731a62bff7 Mon Sep 17 00:00:00 2001 From: "Khoa.vo" Date: Wed, 24 Dec 2025 20:59:56 +0700 Subject: [PATCH] v1.0.10: Android TV D-pad navigation + new app icons - Added tabindex to video cards for D-pad focus - Auto-detect TV mode and auto-focus first card - Enhanced red glow focus styles for TV viewing distance - Regenerated Android launcher icons with StreamFlix branding --- ...icon.svg => apple-touch-icon-CmxMqamG.svg} | 0 backend/static/assets/download-m6ZKmHFf.css | 1 + .../{favicon.svg => favicon-D7BKdTu2.svg} | 0 backend/static/assets/icon.svg | 18 - ...v-CZ5sEhKF.js => keyboard-nav-CjQOo0Sk.js} | 26 +- .../assets/{logo.svg => logo-DuxtXB_R.svg} | 0 .../{main-xeQDVOBN.js => main-BGz66_54.js} | 120 +- .../{watch-CsORLc4P.js => watch-C4cPirDv.js} | 2 +- backend/static/assets/web-Bp6c6Vk9.js | 1 - backend/static/download.html | 6 +- backend/static/index.html | 34 +- backend/static/scripts/api.js | 431 --- backend/static/scripts/category-system.js | 101 - .../static/scripts/components/HeroSection.js | 399 -- .../static/scripts/components/InfoModal.js | 205 -- .../static/scripts/components/NewAndHot.js | 77 - .../static/scripts/components/SearchBar.js | 149 - backend/static/scripts/components/Toast.js | 60 - .../static/scripts/components/VideoCard.js | 242 -- .../static/scripts/components/VideoPlayer.js | 249 -- backend/static/scripts/haptics.js | 34 - backend/static/scripts/info.js | 145 - backend/static/scripts/keyboard-nav.js | 205 -- backend/static/scripts/main.js | 3219 ----------------- backend/static/scripts/search.js | 196 - backend/static/scripts/services/imageCache.js | 203 -- backend/static/scripts/watch.js | 1149 ------ backend/static/styles/base.css | 196 - backend/static/styles/components/buttons.css | 112 - backend/static/styles/components/cards.css | 502 --- backend/static/styles/components/forms.css | 132 - backend/static/styles/components/loading.css | 50 - backend/static/styles/components/modals.css | 413 --- backend/static/styles/grid-patch.css | 45 - backend/static/styles/index.css | 41 - backend/static/styles/layout.css | 266 -- backend/static/styles/responsive-patch.css | 33 - backend/static/styles/responsive.css | 513 --- backend/static/styles/search-modal.css | 149 - backend/static/styles/sections/feed.css | 514 --- backend/static/styles/sections/hero.css | 464 --- backend/static/styles/sections/sliders.css | 305 -- backend/static/styles/variables.css | 109 - backend/static/styles/watch.css | 1060 ------ backend/static/watch.html | 25 +- frontend/js/capacitor-mock.js | 25 + frontend/scripts/components/VideoCard.js | 1 + frontend/scripts/keyboard-nav.js | 20 +- frontend/styles/components/cards.css | 29 +- 49 files changed, 174 insertions(+), 12102 deletions(-) rename backend/static/assets/{apple-touch-icon.svg => apple-touch-icon-CmxMqamG.svg} (100%) create mode 100644 backend/static/assets/download-m6ZKmHFf.css rename backend/static/assets/{favicon.svg => favicon-D7BKdTu2.svg} (100%) delete mode 100644 backend/static/assets/icon.svg rename backend/static/assets/{keyboard-nav-CZ5sEhKF.js => keyboard-nav-CjQOo0Sk.js} (50%) rename backend/static/assets/{logo.svg => logo-DuxtXB_R.svg} (100%) rename backend/static/assets/{main-xeQDVOBN.js => main-BGz66_54.js} (52%) rename backend/static/assets/{watch-CsORLc4P.js => watch-C4cPirDv.js} (99%) delete mode 100644 backend/static/assets/web-Bp6c6Vk9.js delete mode 100644 backend/static/scripts/api.js delete mode 100644 backend/static/scripts/category-system.js delete mode 100644 backend/static/scripts/components/HeroSection.js delete mode 100644 backend/static/scripts/components/InfoModal.js delete mode 100644 backend/static/scripts/components/NewAndHot.js delete mode 100644 backend/static/scripts/components/SearchBar.js delete mode 100644 backend/static/scripts/components/Toast.js delete mode 100644 backend/static/scripts/components/VideoCard.js delete mode 100644 backend/static/scripts/components/VideoPlayer.js delete mode 100644 backend/static/scripts/haptics.js delete mode 100644 backend/static/scripts/info.js delete mode 100644 backend/static/scripts/keyboard-nav.js delete mode 100644 backend/static/scripts/main.js delete mode 100644 backend/static/scripts/search.js delete mode 100644 backend/static/scripts/services/imageCache.js delete mode 100644 backend/static/scripts/watch.js delete mode 100644 backend/static/styles/base.css delete mode 100644 backend/static/styles/components/buttons.css delete mode 100644 backend/static/styles/components/cards.css delete mode 100644 backend/static/styles/components/forms.css delete mode 100644 backend/static/styles/components/loading.css delete mode 100644 backend/static/styles/components/modals.css delete mode 100644 backend/static/styles/grid-patch.css delete mode 100644 backend/static/styles/index.css delete mode 100644 backend/static/styles/layout.css delete mode 100644 backend/static/styles/responsive-patch.css delete mode 100644 backend/static/styles/responsive.css delete mode 100644 backend/static/styles/search-modal.css delete mode 100644 backend/static/styles/sections/feed.css delete mode 100644 backend/static/styles/sections/hero.css delete mode 100644 backend/static/styles/sections/sliders.css delete mode 100644 backend/static/styles/variables.css delete mode 100644 backend/static/styles/watch.css create mode 100644 frontend/js/capacitor-mock.js diff --git a/backend/static/assets/apple-touch-icon.svg b/backend/static/assets/apple-touch-icon-CmxMqamG.svg similarity index 100% rename from backend/static/assets/apple-touch-icon.svg rename to backend/static/assets/apple-touch-icon-CmxMqamG.svg diff --git a/backend/static/assets/download-m6ZKmHFf.css b/backend/static/assets/download-m6ZKmHFf.css new file mode 100644 index 0000000..f3c2e87 --- /dev/null +++ b/backend/static/assets/download-m6ZKmHFf.css @@ -0,0 +1 @@ +:root{--netflix-bg: #141414;--netflix-bg-card: #181818;--netflix-bg-elevated: #232323;--netflix-bg-header: rgba(20, 20, 20, 0);--netflix-bg-header-scrolled: rgba(20, 20, 20, .95);--netflix-red: #e50914;--netflix-red-hover: #f40612;--netflix-red-dark: #b20710;--netflix-text: #ffffff;--netflix-text-secondary: #b3b3b3;--netflix-text-muted: #8c8c8c;--netflix-text-dim: #666666;--netflix-green: #46d369;--netflix-border: rgba(255, 255, 255, .1);--color-bg-primary: var(--netflix-bg);--color-bg-secondary: var(--netflix-bg-card);--color-bg-tertiary: var(--netflix-bg-elevated);--color-bg-elevated: var(--netflix-bg-elevated);--color-bg-card: var(--netflix-bg-card);--color-text-primary: var(--netflix-text);--color-text-secondary: var(--netflix-text-secondary);--color-text-tertiary: var(--netflix-text-muted);--color-accent: var(--netflix-red);--color-border: var(--netflix-border);--apple-bg-primary: var(--netflix-bg);--apple-text-primary: var(--netflix-text);--apple-accent: var(--netflix-red);--card-width-desktop: 200px;--card-width-tablet: 160px;--card-width-mobile: 110px;--card-aspect-ratio: 2 / 3;--card-gap: 8px;--card-radius: 4px;--card-hover-scale: 1.3;--card-hover-delay: .3s;--header-height: 68px;--header-height-mobile: 48px;--row-padding: 4%;--row-margin: 3vw;--mobile-nav-height: 56px;--font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;--font-heading: "Helvetica Neue", Helvetica, Arial, sans-serif;--font-size-xs: 11px;--font-size-sm: 13px;--font-size-base: 14px;--font-size-lg: 16px;--font-size-xl: 18px;--font-size-2xl: 20px;--font-size-3xl: 24px;--font-size-4xl: 32px;--font-size-hero: clamp(2rem, 4vw, 3.5rem);--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.1;--line-height-normal: 1.4;--line-height-relaxed: 1.6;--btn-height: 42px;--btn-height-sm: 32px;--btn-radius: 4px;--btn-padding: 0 24px;--shadow-card: 0 4px 16px rgba(0, 0, 0, .5);--shadow-card-hover: 0 8px 32px rgba(0, 0, 0, .7);--shadow-dropdown: 0 2px 10px rgba(0, 0, 0, .8);--shadow-header: 0 0 10px rgba(0, 0, 0, .5);--transition-fast: .15s ease;--transition-base: .25s ease;--transition-card: .3s cubic-bezier(.2, 0, .2, 1);--transition-hover-delay: .3s;--z-base: 0;--z-card: 10;--z-card-hover: 50;--z-row: 20;--z-header: 100;--z-dropdown: 150;--z-modal: 1000;--z-mobile-nav: 200}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none}html::-webkit-scrollbar{display:none}body{font-family:var(--font-family);font-size:var(--font-size-base);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);color:var(--netflix-text);background-color:var(--netflix-bg);min-height:100vh;overflow-x:hidden}::-webkit-scrollbar{display:none;width:0;height:0;background:transparent}::selection{background:var(--netflix-red);color:var(--netflix-text)}a{color:inherit;text-decoration:none}a:hover{color:var(--netflix-text-secondary)}img{max-width:100%;height:auto;display:block}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.shimmer{background:linear-gradient(90deg,var(--netflix-bg-card) 25%,var(--netflix-bg-elevated) 50%,var(--netflix-bg-card) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;gap:16px;color:var(--netflix-text-secondary)}.loading__spinner{width:48px;height:48px;border:3px solid var(--netflix-bg-elevated);border-top-color:var(--netflix-red);border-radius:50%;animation:spin .8s linear infinite}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 20px;text-align:center;color:var(--netflix-text-secondary)}.empty-state svg{opacity:.3;margin-bottom:16px}.empty-state h2{font-size:var(--font-size-xl);color:var(--netflix-text);margin-bottom:8px}.empty-state p{font-size:var(--font-size-base)}.text-match{color:var(--netflix-green)!important}.text-muted{color:var(--netflix-text-secondary)!important}.text-red{color:var(--netflix-red)!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:2px solid var(--netflix-red);outline-offset:2px}button:focus:not(:focus-visible),a:focus:not(:focus-visible){outline:none}.netflix-header{position:fixed;top:0;left:0;right:0;height:var(--header-height);background:var(--netflix-bg-header);z-index:var(--z-header);display:flex;align-items:center;padding:0 var(--row-padding);transition:background .4s ease}.netflix-header.scrolled{background:var(--netflix-bg-header-scrolled);box-shadow:var(--shadow-header)}.netflix-header__logo{display:flex;align-items:center;margin-right:40px}.netflix-header__logo svg,.netflix-header__logo img{height:28px;width:auto}.netflix-header__nav{display:flex;align-items:center;gap:20px;flex:1}.netflix-header__nav-link{color:var(--netflix-text-secondary);font-size:var(--font-size-base);font-weight:var(--font-weight-regular);transition:color var(--transition-fast);white-space:nowrap;text-decoration:none}.netflix-header__nav-link:hover{color:var(--netflix-text-muted)}.netflix-header__nav-link.active{color:var(--netflix-text);font-weight:var(--font-weight-bold)}.netflix-header__right{display:flex;align-items:center;gap:20px;margin-left:auto}.netflix-header__search{background:none;border:none;color:var(--netflix-text);cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center}.netflix-header__search svg{width:24px;height:24px}.netflix-header__profile{width:32px;height:32px;border-radius:var(--card-radius);overflow:hidden;cursor:pointer;transition:border-color var(--transition-fast);border:1px solid transparent}.netflix-header__profile:hover{border-color:var(--netflix-text)}.netflix-header__profile img{width:100%;height:100%;object-fit:cover}.sidebar{display:none}.app-layout{display:flex;flex-direction:column;min-height:100vh;background:var(--netflix-bg)}.main-content{flex:1;padding-top:var(--header-height);background:var(--netflix-bg);min-height:100vh}.main{padding:0;max-width:100%}.netflix-row-section{position:relative;margin:var(--row-margin) 0;z-index:var(--z-row)}.netflix-row-section:hover{z-index:calc(var(--z-row) + 1)}.netflix-row-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-medium);color:var(--netflix-text-secondary);margin:0 0 12px var(--row-padding);transition:color var(--transition-fast)}.netflix-row-section:hover .netflix-row-title{color:var(--netflix-text)}.view-tabs{display:flex;gap:16px;margin-bottom:24px;padding:0 var(--row-padding)}.view-tab{background:transparent;border:1px solid var(--netflix-text-muted);color:var(--netflix-text-secondary);padding:8px 20px;border-radius:var(--btn-radius);font-family:inherit;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast)}.view-tab:hover{border-color:var(--netflix-text);color:var(--netflix-text)}.view-tab.active{background:var(--netflix-text);color:var(--netflix-bg);border-color:var(--netflix-text)}.floating-search-btn{position:fixed;top:20px;right:20px;width:48px;height:48px;background:var(--netflix-red);border:none;border-radius:50%;color:var(--netflix-text);cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:calc(var(--z-header) + 1);box-shadow:var(--shadow-card);transition:all var(--transition-base)}.floating-search-btn:hover{transform:scale(1.1);background:var(--netflix-red-hover)}.floating-search-btn svg{width:20px;height:20px}.back-to-top{position:fixed;bottom:80px;right:20px;width:48px;height:48px;background:var(--netflix-bg-card);border:1px solid var(--netflix-border);border-radius:50%;color:var(--netflix-text);cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transform:translateY(20px);transition:all var(--transition-base);z-index:99}.back-to-top.visible{opacity:1;visibility:visible;transform:translateY(0)}.back-to-top:hover{background:var(--netflix-red);border-color:var(--netflix-red)}.back-to-top svg{width:24px;height:24px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:var(--btn-height);padding:var(--btn-padding);font-family:inherit;font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);border-radius:var(--btn-radius);border:none;cursor:pointer;transition:all var(--transition-base);white-space:nowrap}.btn svg{width:20px;height:20px}.btn--primary{background:var(--netflix-text);color:var(--netflix-bg)}.btn--primary:hover{background:#ffffffd9}.btn--secondary{background:#6d6d6eb3;color:var(--netflix-text)}.btn--secondary:hover{background:#6d6d6e80}.btn--red{background:var(--netflix-red);color:var(--netflix-text)}.btn--red:hover{background:var(--netflix-red-hover)}.btn--ghost{background:transparent;color:var(--netflix-text);border:1px solid var(--netflix-text-muted)}.btn--ghost:hover{border-color:var(--netflix-text);background:#ffffff1a}.btn--icon{width:40px;height:40px;padding:0;border-radius:50%;background:#2a2a2a99;border:2px solid rgba(255,255,255,.5);color:var(--netflix-text)}.btn--icon:hover{background:#2a2a2ae6;border-color:var(--netflix-text);transform:scale(1.1)}.btn--sm{height:var(--btn-height-sm);padding:0 16px;font-size:var(--font-size-sm)}.btn--sm svg{width:16px;height:16px}.video-card{position:relative;flex:0 0 var(--card-width-desktop);width:var(--card-width-desktop);aspect-ratio:var(--card-aspect-ratio);cursor:pointer;z-index:var(--z-card);transition:z-index 0s var(--transition-card);scroll-snap-align:start}.video-card:hover{z-index:var(--z-card-hover);transition:z-index 0s 0s}.video-card__container{width:100%;height:100%;position:relative;border-radius:var(--card-radius);overflow:visible;background:var(--netflix-bg-card);transition:transform var(--transition-card),box-shadow var(--transition-card)}.video-card:hover .video-card__container{transform:scale(var(--card-hover-scale));box-shadow:var(--shadow-card-hover);border-radius:var(--card-radius) var(--card-radius) 0 0}.video-card:first-child:hover .video-card__container{transform:scale(var(--card-hover-scale));transform-origin:left center}.video-card:last-child:hover .video-card__container{transform:scale(var(--card-hover-scale));transform-origin:right center}.video-card__thumbnail{width:100%;height:100%;overflow:hidden;border-radius:var(--card-radius);transition:border-radius var(--transition-card)}.video-card:hover .video-card__thumbnail{border-radius:var(--card-radius) var(--card-radius) 0 0}.video-card__poster{position:relative;width:100%;height:100%;overflow:hidden}.video-card__poster img,.video-card__img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease}.video-card:hover .video-card__poster img,.video-card:hover .video-card__img{transform:scale(1.05)}.video-card__info{position:absolute;top:100%;left:0;right:0;padding:12px;background:var(--netflix-bg-card);border-radius:0 0 var(--card-radius) var(--card-radius);box-shadow:var(--shadow-dropdown);opacity:0;pointer-events:none;transform:translateY(-10px);transition:all var(--transition-card);z-index:51}.video-card:hover .video-card__info{opacity:1;pointer-events:auto;transform:translateY(0)}.video-card__controls{display:flex;align-items:center;justify-content:flex-start;gap:6px;margin-bottom:8px}.video-card__controls-left{display:flex;align-items:center;gap:6px}.circle-btn{width:32px;height:32px;min-width:32px;min-height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast);border:2px solid rgba(255,255,255,.5);background:#2a2a2a99;color:var(--netflix-text)}.circle-btn--primary{background:var(--netflix-text);color:var(--netflix-bg);border-color:var(--netflix-text)}.circle-btn--primary:hover{background:#ffffffd9}.circle-btn--outline:hover{border-color:var(--netflix-text);background:#2a2a2ae6}.circle-btn svg{width:16px;height:16px}.circle-btn--expand{margin-left:auto}.video-card__metadata{display:flex;align-items:center;gap:6px;font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);margin-bottom:6px}.video-card__metadata .match{color:var(--netflix-green)}.video-card__metadata .age,.video-card__metadata .hd{border:1px solid rgba(255,255,255,.4);padding:0 4px;font-size:9px;border-radius:2px}.video-card__metadata .hd{border-color:#ffffff80}.video-card__genres{display:flex;align-items:center;flex-wrap:wrap;gap:4px;font-size:var(--font-size-xs);color:var(--netflix-text-secondary)}.video-card__genres span:after{content:"•";margin-left:4px;color:var(--netflix-text-muted)}.video-card__genres span:last-child:after{content:none}.video-card__video-wrapper{position:absolute;top:0;left:0;width:100%;height:100%;background:#000;opacity:0;transition:opacity .3s ease;border-radius:var(--card-radius);overflow:hidden}.video-card:hover .video-card__video-wrapper{opacity:1}.video-card__preview-video{width:100%;height:100%;object-fit:cover}.video-card__overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0000004d;opacity:0;transition:opacity var(--transition-base);border-radius:var(--card-radius)}.video-card:hover .video-card__overlay{opacity:1}.video-card__play-btn{width:48px;height:48px;border-radius:50%;background:#ffffffe6;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#000;transition:transform var(--transition-fast);box-shadow:var(--shadow-card)}.video-card__play-btn:hover{transform:scale(1.1)}.video-card__play-btn svg{width:20px;height:20px;margin-left:3px}.video-card__progress{position:absolute;bottom:0;left:0;width:100%;height:4px;background:#fff3;z-index:15;border-radius:0 0 var(--card-radius) var(--card-radius)}.video-card__progress-fill{height:100%;background:var(--netflix-red)}.video-tags{position:absolute;top:6px;left:6px;display:flex;flex-direction:column;gap:4px;z-index:10}.video-tag{padding:2px 6px;border-radius:2px;font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:.5px;color:var(--netflix-text)}.video-tag--new{background:var(--netflix-red)}.video-tag--series{background:#00a8e1}.video-tag--trailer{background:#ff9500;color:#000}.poster-badge{padding:2px 6px;background:#000000bf;border:1px solid rgba(255,255,255,.2);border-radius:2px;font-size:10px;font-weight:var(--font-weight-bold);color:var(--netflix-text);text-transform:uppercase}.episode-badge{padding:2px 6px;background:#000c;border:1px solid rgba(255,255,255,.15);border-radius:2px;font-size:10px;font-weight:var(--font-weight-semibold);color:var(--netflix-green)}.year-badge{padding:2px 6px;background:#000000bf;border:1px solid rgba(255,255,255,.2);border-radius:2px;font-size:10px;font-weight:var(--font-weight-bold);color:var(--netflix-text)}.tomato-badge{display:flex;align-items:center;gap:4px;padding:2px 6px;border-radius:2px;font-size:10px;font-weight:var(--font-weight-bold)}.tomato-badge--fresh{background:#e50914;color:#fff}.tomato-badge--rotten{background:#333;color:#fff}.numeric-rating{padding:2px 6px;background:#ffffffe6;color:#000;border-radius:2px;font-size:10px;font-weight:var(--font-weight-black)}.card-meta-bottom-right{position:absolute;bottom:6px;right:6px;display:flex;align-items:center;gap:4px;z-index:10}.card-meta-bottom-left{position:absolute;bottom:6px;left:6px;display:flex;flex-direction:column;gap:4px;z-index:10}.video-card__title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);line-height:1.2;margin-bottom:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--netflix-text)}.video-card__meta{font-size:var(--font-size-xs);color:var(--netflix-text-secondary);display:flex;align-items:center;gap:6px}.video-card__duration{position:absolute;bottom:6px;right:6px;padding:2px 6px;background:#000c;border-radius:2px;font-size:var(--font-size-xs)}.video-card__resolution{position:absolute;top:6px;left:6px;padding:2px 6px;background:var(--netflix-red);border-radius:2px;font-size:9px;font-weight:var(--font-weight-bold);color:var(--netflix-text);text-transform:uppercase}.video-card.keyboard-focused,.video-card:focus{z-index:var(--z-card-hover);outline:none}.video-card.keyboard-focused .video-card__container,.video-card:focus .video-card__container{transform:scale(1.08);box-shadow:0 0 0 4px var(--netflix-red),0 0 30px #e5091480,var(--shadow-card-hover);border-radius:var(--card-radius)}@media (min-width: 1280px){.video-card.keyboard-focused .video-card__container,.video-card:focus .video-card__container{transform:scale(1.1);box-shadow:0 0 0 6px var(--netflix-red),0 0 50px #e5091499,var(--shadow-card-hover)}}.search{flex:1;max-width:600px;position:relative}.search__input{width:100%;height:44px;padding:0 var(--spacing-lg);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-full);color:var(--color-text-primary);font-size:var(--font-size-base);transition:all var(--transition-base)}.search__input::placeholder{color:var(--color-text-tertiary)}.search__input:focus{outline:none;border-color:var(--color-accent);box-shadow:var(--shadow-glow)}.search__results{position:absolute;top:calc(100% + 8px);left:0;right:0;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);max-height:400px;overflow-y:auto;display:none;z-index:var(--z-elevated)}.search__results.active{display:block}.search__result{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md);cursor:pointer;transition:background var(--transition-fast)}.search__result:hover{background:var(--color-surface-hover)}.search__result-thumb{width:80px;height:45px;border-radius:var(--radius-sm);object-fit:cover;background:var(--color-bg-tertiary)}.search__result-info{flex:1;min-width:0}.search__result-title{font-weight:var(--font-weight-medium);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search__result-meta{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.categories{display:flex;gap:var(--spacing-sm);margin-bottom:var(--spacing-xl);overflow-x:auto;padding-bottom:var(--spacing-sm);-webkit-overflow-scrolling:touch;scrollbar-width:none}.categories::-webkit-scrollbar{display:none}.category{padding:8px 16px;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-full);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-base);white-space:nowrap}.category:hover{background:var(--color-surface-hover);color:var(--color-text-primary);border-color:var(--color-border-hover)}.category--active{background:var(--color-accent);border-color:var(--color-accent);color:#fff;font-weight:var(--font-weight-semibold);box-shadow:0 0 15px var(--color-accent-glow)}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-md);padding:var(--spacing-3xl);color:var(--color-text-secondary)}.loading__spinner{width:40px;height:40px;border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin .8s linear infinite}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-md);padding:var(--spacing-3xl);text-align:center;color:var(--color-text-secondary)}.empty-state svg{color:var(--color-text-tertiary)}.empty-state h2{font-size:var(--font-size-xl);color:var(--color-text-primary)}.player-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);display:none}.player-modal.active{display:flex;align-items:center;justify-content:center}.player-modal__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#000000e6;animation:fadeIn .2s ease}.player-modal__content{position:relative;width:100%;max-width:1100px;max-height:90vh;margin:40px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;background:var(--netflix-bg-card);border-radius:6px;animation:slideUp .3s ease;scrollbar-width:none}.player-modal__content::-webkit-scrollbar{display:none}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.player-modal__close{position:absolute;top:16px;right:16px;width:36px;height:36px;background:var(--netflix-bg);border:none;color:var(--netflix-text);cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:50%;z-index:10;transition:all var(--transition-base)}.player-modal__close:hover{background:var(--netflix-text);color:var(--netflix-bg)}.player-modal__close svg{width:18px;height:18px}.player-modal__info{padding:20px 24px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;background:linear-gradient(to top,var(--netflix-bg-card),transparent)}.player-modal__title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);margin-bottom:4px;color:var(--netflix-text)}.player-modal__meta{font-size:var(--font-size-sm);color:var(--netflix-text-secondary);display:flex;align-items:center;gap:8px}.player-modal__meta span:after{content:"•";margin-left:8px;color:var(--netflix-text-muted)}.player-modal__meta span:last-child:after{content:none}.player-modal__quality{display:flex;gap:6px}.quality-btn{padding:6px 14px;background:#2a2a2acc;border:1px solid rgba(255,255,255,.1);border-radius:var(--btn-radius);color:var(--netflix-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast)}.quality-btn:hover{background:#3c3c3ce6;border-color:#fff3;color:var(--netflix-text)}.quality-btn.active{background:var(--netflix-red);border-color:var(--netflix-red);color:var(--netflix-text)}.player-container{aspect-ratio:16 / 9;background:#000;overflow:hidden}.player-modal__episodes{margin-top:0;padding:20px 24px;background:var(--netflix-bg-card)}.player-modal__episodes-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin-bottom:16px;color:var(--netflix-text);display:flex;align-items:center;gap:8px}.player-modal__episodes-title:before{content:"";width:3px;height:16px;background:var(--netflix-red);border-radius:2px}.episode-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(50px,1fr));gap:8px}.episode-btn{padding:10px 8px;background:var(--netflix-bg-elevated);border:1px solid var(--netflix-border);border-radius:var(--btn-radius);color:var(--netflix-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast);text-align:center}.episode-btn:hover{background:#ffffff1a;border-color:var(--netflix-red);color:var(--netflix-text)}.episode-btn.active{background:var(--netflix-red);border-color:var(--netflix-red);color:var(--netflix-text);font-weight:var(--font-weight-bold)}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);display:none}.modal.active{display:flex;align-items:center;justify-content:center}.modal__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#000000d9}.modal__content{position:relative;width:100%;max-width:450px;margin:24px;padding:24px;background:var(--netflix-bg-card);border-radius:6px;animation:slideUp .3s ease}.modal__title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);margin-bottom:20px;color:var(--netflix-text)}.modal__actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.form-group{margin-bottom:20px}.form-group label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--netflix-text-secondary);margin-bottom:8px}.input{width:100%;padding:12px 16px;background:var(--netflix-bg-elevated);border:1px solid var(--netflix-border);border-radius:var(--btn-radius);color:var(--netflix-text);font-family:inherit;font-size:var(--font-size-base);transition:all var(--transition-fast)}.input::placeholder{color:var(--netflix-text-muted)}.input:focus{outline:none;border-color:var(--netflix-text);background:var(--netflix-bg)}select.input{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%238c8c8c' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:40px}.toast-container{position:fixed;bottom:80px;right:24px;z-index:calc(var(--z-modal) + 100);display:flex;flex-direction:column;gap:10px}.toast{padding:14px 20px;background:var(--netflix-bg-card);border-radius:var(--btn-radius);box-shadow:var(--shadow-dropdown);display:flex;align-items:center;gap:12px;animation:slideIn .3s ease;min-width:260px;color:var(--netflix-text)}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.toast--success{border-left:3px solid var(--netflix-green)}.toast--error{border-left:3px solid var(--netflix-red)}.toast--info{border-left:3px solid #00a8e1}.player-skeleton{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--netflix-bg-elevated);position:relative}.player-skeleton__play{width:70px;height:70px;background:var(--netflix-text);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-base);box-shadow:var(--shadow-card)}.player-skeleton__play:hover{transform:scale(1.1)}.player-skeleton__play svg{width:28px;height:28px;color:var(--netflix-bg);margin-left:4px}.hero-container{margin-bottom:-100px}.hero{position:relative;width:100%;height:80vh;min-height:500px;max-height:800px;background:var(--netflix-bg);overflow:hidden}.hero__video-container{position:absolute;top:0;right:0;bottom:0;left:0}.hero__backdrop{width:100%;height:100%;background-size:cover;background-position:center 20%}.hero__backdrop img{width:100%;height:100%;object-fit:cover;object-position:center 20%}.hero__gradient-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;background:linear-gradient(to right,rgba(20,20,20,.9) 0%,rgba(20,20,20,.5) 30%,transparent 60%),linear-gradient(to top,#141414 0%,rgba(20,20,20,.7) 15%,transparent 40%)}.hero__vignette{position:absolute;left:0;right:0;pointer-events:none;z-index:1}.hero__vignette--top{top:0;height:150px;background:linear-gradient(180deg,rgba(20,20,20,.5) 0%,transparent 100%)}.hero__vignette--bottom{bottom:0;height:50%;background:linear-gradient(to top,#141414 0%,rgba(20,20,20,.8) 20%,transparent 100%)}.hero__content{position:absolute;bottom:30%;left:var(--row-padding);z-index:2;max-width:45%;display:flex;flex-direction:column;gap:16px}.hero__info-layer{display:flex;flex-direction:column;gap:16px;animation:fadeSlideUp .8s ease-out}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.hero__title{font-family:var(--font-heading);font-size:var(--font-size-hero);font-weight:var(--font-weight-bold);line-height:1.1;letter-spacing:-.02em;color:var(--netflix-text);text-shadow:2px 2px 8px rgba(0,0,0,.8);margin:0}.hero__metadata{display:flex;align-items:center;gap:10px;font-size:var(--font-size-base);font-weight:var(--font-weight-bold)}.hero__match{color:var(--netflix-green)}.hero__age,.hero__quality{border:1px solid rgba(255,255,255,.4);padding:0 4px;font-size:var(--font-size-xs);border-radius:2px}.hero__description{font-size:var(--font-size-lg);line-height:1.4;color:var(--netflix-text);text-shadow:1px 1px 4px rgba(0,0,0,.7);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.hero__actions{display:flex;align-items:center;gap:12px;margin-top:8px}.hero__btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 28px;border-radius:var(--btn-radius);border:none;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-base);white-space:nowrap}.hero__btn svg{width:24px;height:24px}.hero__btn--primary{background:var(--netflix-text);color:var(--netflix-bg)}.hero__btn--primary:hover{background:#ffffffd9}.hero__btn--secondary{background:#6d6d6eb3;color:var(--netflix-text)}.hero__btn--secondary:hover{background:#6d6d6e80}.hero-slider-track{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.hero-slide{position:absolute;top:0;right:0;bottom:0;left:0}.hero-controls{position:absolute;bottom:15%;right:var(--row-padding);display:flex;gap:4px;z-index:10}.hero-indicator{width:12px;height:2px;border-radius:0;background:#ffffff4d;border:none;padding:0;cursor:pointer;transition:all var(--transition-base)}.hero-indicator.active{background:var(--netflix-text);width:20px}.hero-indicator:hover{background:#fff9}.hero-arrow{position:absolute;top:50%;transform:translateY(-50%);width:50px;height:100px;background:#0000004d;border:none;color:var(--netflix-text);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:10;opacity:0;transition:all var(--transition-base)}.hero:hover .hero-arrow{opacity:1}.hero-arrow:hover{background:#0009}.hero-arrow svg{width:32px;height:32px}.hero-arrow--prev{left:0}.hero-arrow--next{right:0}.section-banner{position:relative;height:180px;margin:24px var(--row-padding);border-radius:var(--card-radius);background:var(--netflix-bg-card);overflow:hidden;display:flex;align-items:flex-end;cursor:pointer;transition:transform var(--transition-base)}.section-banner:hover{transform:scale(1.01)}.section-banner__bg{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;transition:transform .6s ease}.section-banner:hover .section-banner__bg{transform:scale(1.05)}.section-banner__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top,rgba(0,0,0,.85),transparent)}.section-banner__content{position:relative;z-index:2;padding:20px 24px;width:100%}.section-banner__title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);margin:0;color:var(--netflix-text)}.section-banner__subtitle{font-size:var(--font-size-sm);color:var(--netflix-text-secondary);text-transform:uppercase;letter-spacing:1px}.category-shortcuts-section{width:100%;margin-bottom:24px;overflow-x:auto;display:flex;scrollbar-width:none}.category-shortcuts-section::-webkit-scrollbar{display:none}.category-shortcuts-track{display:inline-flex;gap:16px;padding:0 var(--row-padding)}.shortcut-card{min-width:240px;height:130px;background:linear-gradient(135deg,#2a2a2a,#1a1a1a);border-radius:var(--card-radius);display:flex;flex-direction:column;justify-content:flex-end;padding:20px;cursor:pointer;transition:transform var(--transition-base),background var(--transition-base);border:1px solid rgba(255,255,255,.05)}.shortcut-card:hover{transform:translateY(-4px);background:linear-gradient(135deg,#333,#222);border-color:#ffffff26}.shortcut-card h3{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--netflix-text);margin:0 0 4px}.shortcut-card span{font-size:var(--font-size-sm);color:var(--netflix-text-muted);text-transform:uppercase;letter-spacing:1px}.shortcut-icon{position:absolute;top:16px;right:16px;font-size:20px;color:#fff3;transition:all var(--transition-base)}.shortcut-card:hover .shortcut-icon{transform:translate(4px);color:var(--netflix-red)}.hero--small{height:50vh!important;min-height:350px!important;max-height:450px!important}.hero__poster-float{position:absolute;right:8%;bottom:15%;height:65%;aspect-ratio:2/3;z-index:5;display:none;animation:posterFloat 1s ease-out}@keyframes posterFloat{0%{opacity:0;transform:translateY(40px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.hero__poster-float img{width:100%;height:100%;object-fit:cover;border-radius:var(--card-radius);box-shadow:0 20px 50px #000000b3}.hero--portrait-mode .hero__poster-float{display:block}.hero--portrait-mode .hero__content{max-width:40%}.slider-section{position:relative;margin:var(--row-margin) 0;z-index:var(--z-row)}.slider-section:hover{z-index:calc(var(--z-row) + 5)}.slider-section__title{font-family:var(--font-heading);font-size:var(--font-size-lg);font-weight:var(--font-weight-medium);color:var(--netflix-text-secondary);margin:0 0 12px var(--row-padding);transition:color var(--transition-fast);display:flex;align-items:center}.slider-section:hover .slider-section__title{color:var(--netflix-text)}.slider-section__title:after{content:"Explore All ›";font-size:var(--font-size-xs);color:var(--netflix-red);margin-left:12px;opacity:0;transform:translate(-10px);transition:all var(--transition-base)}.slider-section:hover .slider-section__title:after{opacity:1;transform:translate(0)}.slider-container{position:relative}.slider-track{display:flex;gap:var(--card-gap);padding:0 var(--row-padding);padding-bottom:40px;margin-bottom:-40px;overflow-x:auto;overflow-y:visible;scroll-behavior:smooth;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none}.slider-track::-webkit-scrollbar{display:none}.slider-btn{position:absolute;top:0;bottom:40px;width:55px;background:#14141480;border:none;color:var(--netflix-text);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:30;opacity:0;transition:all var(--transition-base)}.slider-container:hover .slider-btn{opacity:1}.slider-btn:hover{background:#141414e6}.slider-btn svg{width:40px;height:40px;transition:transform var(--transition-fast)}.slider-btn:hover svg{transform:scale(1.25)}.slider-btn--left{left:0;border-radius:0 var(--card-radius) var(--card-radius) 0}.slider-btn--right{right:0;border-radius:var(--card-radius) 0 0 var(--card-radius)}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;padding:0 var(--row-padding)}.section-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--netflix-text);display:flex;align-items:center;gap:8px}.section-title:before{content:"";width:4px;height:20px;background:var(--netflix-red);border-radius:2px}.section-link{font-size:var(--font-size-sm);color:var(--netflix-text-secondary);transition:color var(--transition-fast);text-decoration:none}.section-link:hover{color:var(--netflix-text)}.video-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--card-width-desktop),1fr));gap:var(--card-gap);padding:0 var(--row-padding)}.interest-section{padding:24px var(--row-padding)}.interest-cards{display:flex;gap:12px;overflow-x:auto;scrollbar-width:none}.interest-cards::-webkit-scrollbar{display:none}.interest-card{flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 20px;border:1px solid var(--netflix-border);border-radius:20px;background:transparent;color:var(--netflix-text);cursor:pointer;transition:all var(--transition-base);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.interest-card:hover{background:var(--netflix-text);color:var(--netflix-bg);border-color:var(--netflix-text)}.interest-card__icon{font-size:18px}.top10-section{margin:var(--row-margin) 0;position:relative}.top10-track{display:flex;gap:12px;padding:0 var(--row-padding);padding-bottom:40px;margin-bottom:-40px;overflow-x:auto;scrollbar-width:none}.top10-track::-webkit-scrollbar{display:none}.top10-item{position:relative;flex:0 0 auto;display:flex;align-items:flex-end}.top10-number{font-size:120px;font-weight:900;line-height:.8;color:var(--netflix-bg);-webkit-text-stroke:3px var(--netflix-text-muted);margin-right:-30px;z-index:0;-webkit-user-select:none;user-select:none}.top10-item .video-card{z-index:1}.section-title-apple{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--netflix-text);margin-bottom:16px;padding-left:var(--row-padding)}.section-more{color:var(--netflix-text-secondary);text-decoration:none;font-size:var(--font-size-sm);transition:color var(--transition-fast)}.section-more:hover{color:var(--netflix-text)}.movie-section{padding:0 var(--row-padding) 24px}.movie-row{display:flex;gap:var(--card-gap);overflow-x:auto;padding:16px var(--row-padding);scroll-behavior:smooth;scrollbar-width:none}.movie-row::-webkit-scrollbar{display:none}.movie-row .video-card{flex:0 0 auto;width:var(--card-width-desktop)}.new-hot-view{padding:20px 0 100px}.new-hot-header{position:sticky;top:0;background:var(--color-bg-primary);z-index:100;padding:10px 0;margin-bottom:20px}.new-hot-tabs{display:flex;gap:12px;padding:0 4%;overflow-x:auto;scrollbar-width:none}.new-hot-tabs::-webkit-scrollbar{display:none}.new-hot-tab{background:#232323;color:#bcbcbc;border:none;padding:8px 16px;border-radius:20px;font-weight:700;white-space:nowrap;cursor:pointer;font-size:14px}.new-hot-tab.active{background:#fff;color:#000}.new-hot-feed{padding:0 4%;max-width:800px;margin:0 auto}.new-hot-item{display:flex;gap:15px;margin-bottom:40px}.new-hot-item__sidebar{display:flex;flex-direction:column;align-items:center;width:45px;flex-shrink:0}.new-hot-item__month{font-size:12px;font-weight:800;color:#bcbcbc}.new-hot-item__day{font-size:24px;font-weight:900;color:#fff}.new-hot-item__content{flex:1}.new-hot-item__card{background:#181818;border-radius:8px;overflow:hidden;box-shadow:0 4px 15px #0006}.new-hot-item__img-wrapper{position:relative;aspect-ratio:16 / 9}.new-hot-item__img-wrapper img{width:100%;height:100%;object-fit:cover}.new-hot-item__play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#00000080;border:1px solid white;border-radius:50%;width:48px;height:48px;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.new-hot-item__details{padding:20px}.new-hot-item__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.new-hot-item__title{font-size:1.4rem;font-weight:800;color:#fff;font-family:Outfit,sans-serif}.new-hot-item__actions{display:flex;gap:15px}.new-hot-item__btn{display:flex;flex-direction:column;align-items:center;background:none;border:none;color:#fff;font-size:10px;font-weight:700;cursor:pointer;gap:4px}.new-hot-item__desc{color:#bcbcbc;font-size:.95rem;line-height:1.4;margin-bottom:15px}.new-hot-item__tags{display:flex;flex-wrap:wrap;gap:8px}.new-hot-item__tag{font-size:11px;color:#fff;font-weight:700}.new-hot-item__tag:not(:last-child):after{content:"•";margin-left:8px;color:#e50914}.side-menu{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);visibility:hidden;opacity:0;transition:var(--transition-base)}.side-menu.active{visibility:visible;opacity:1}.side-menu__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#000000b3}.side-menu__content{position:absolute;left:0;top:0;bottom:0;width:280px;max-width:80vw;background:var(--color-bg-secondary);transform:translate(-100%);transition:var(--transition-base);overflow-y:auto}.side-menu.active .side-menu__content{transform:translate(0)}.side-menu__header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg);border-bottom:1px solid var(--color-border)}.side-menu__title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.side-menu__close{background:none;border:none;color:var(--color-text-secondary);cursor:pointer;padding:var(--spacing-sm);border-radius:var(--radius-md)}.side-menu__item{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);color:var(--color-text-primary);text-decoration:none;border-bottom:1px solid var(--color-border);transition:var(--transition-fast)}.side-menu__item:hover{background:var(--color-bg-hover);color:var(--color-accent)}.badge--new{background:var(--color-error);color:#fff;font-size:10px;padding:2px 6px;border-radius:var(--radius-full);font-weight:var(--font-weight-bold)}.search-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);background:var(--color-bg-primary);visibility:hidden;opacity:0;transition:var(--transition-base);padding:var(--spacing-lg)}.search-overlay.active{visibility:visible;opacity:1}.search-overlay__container{display:flex;align-items:center;gap:var(--spacing-md);max-width:600px;margin:0 auto}.search-overlay__input{flex:1;padding:var(--spacing-md) var(--spacing-lg);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-full);color:var(--color-text-primary);font-size:var(--font-size-lg)}.search-overlay__input:focus{outline:none;border-color:var(--color-accent)}.search-overlay__close{background:none;border:none;color:var(--color-text-secondary);cursor:pointer;padding:var(--spacing-sm)}.footer{background:var(--color-bg-secondary);border-top:1px solid var(--color-border);padding:var(--spacing-3xl) 0 var(--spacing-lg);margin-top:var(--spacing-3xl)}.footer__container{max-width:var(--container-max);margin:0 auto;padding:0 var(--spacing-xl);display:grid;grid-template-columns:1fr 2fr;gap:var(--spacing-3xl)}.footer__brand{display:flex;flex-direction:column;gap:var(--spacing-md)}.footer__logo{display:flex;align-items:center;gap:var(--spacing-sm)}.footer__logo-icon{font-size:32px}.footer__logo-text{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.footer__logo-accent{color:var(--color-accent)}.footer__tagline{color:var(--color-text-secondary);font-size:var(--font-size-sm);line-height:var(--line-height-relaxed)}.footer__social{display:flex;gap:var(--spacing-sm);margin-top:var(--spacing-md)}.footer__social-link{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--color-bg-hover);border-radius:var(--radius-full);color:var(--color-text-secondary);transition:var(--transition-base)}.footer__social-link:hover{background:var(--color-accent);color:#fff}.recommendations-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.recommendation-card{background:#2f2f2f;border-radius:5px;overflow:hidden;cursor:pointer;transition:background .2s,transform .2s}.recommendation-card:hover{background:#3a3a3a;transform:translateY(-5px)}.recommendation-card__img-wrapper{position:relative;aspect-ratio:16 / 9}.recommendation-card img{width:100%;height:100%;object-fit:cover}.recommendation-card__play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s;background:#1e1e1e80;border-radius:50%;width:50px;height:50px;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.recommendation-card:hover .recommendation-card__play{opacity:1}.recommendation-card__content{padding:16px}.recommendation-card__meta{display:flex;justify-content:flex-start;align-items:center;gap:10px;margin-bottom:12px;font-size:.9rem}.recommendation-card__desc{font-size:.85rem;color:#d2d2d2;line-height:1.5;display:-webkit-box;-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.modal__episodes{margin-top:3rem;border-top:1px solid #404040;padding-top:2rem}.modal__section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.header__menu-btn{background:none;border:none;color:var(--color-text-primary);cursor:pointer;padding:var(--spacing-sm);border-radius:var(--radius-md);transition:var(--transition-fast)}.header__menu-btn:hover{background:var(--color-bg-hover)}.header__search-btn{background:none;border:none;color:var(--color-text-primary);cursor:pointer;padding:var(--spacing-sm);border-radius:var(--radius-md);transition:var(--transition-fast)}.header__search-btn:hover{background:var(--color-bg-hover)}.header__logo-accent{color:var(--color-accent)}.header__tagline{display:block;font-size:var(--font-size-xs);color:var(--color-text-secondary);font-weight:var(--font-weight-regular)}@media (min-width: 1400px){:root{--card-width-desktop: 220px}.video-card{flex:0 0 var(--card-width-desktop);width:var(--card-width-desktop)}}@media (min-width: 1200px) and (max-width: 1399px){:root{--card-width-desktop: 200px}}@media (min-width: 1024px) and (max-width: 1199px){:root{--card-width-desktop: 180px;--card-hover-scale: 1.25}.hero__content{max-width:50%}}@media (min-width: 768px) and (max-width: 1023px){:root{--card-width-desktop: 160px;--header-height: 56px;--card-hover-scale: 1.2}.hero{height:70vh}.hero__content{max-width:60%;bottom:25%}.hero__title{font-size:clamp(1.8rem,4vw,2.5rem)}.hero__description{-webkit-line-clamp:2}.netflix-header__nav{display:none}.hero__poster-float{display:none!important}.slider-btn{width:45px}}@media (max-width: 767px){:root{--card-width-desktop: 110px;--card-gap: 6px;--row-padding: 3%;--row-margin: 20px;--header-height: 48px;--card-hover-scale: 1}.app-layout{padding-bottom:var(--mobile-nav-height)}.main-content{padding-top:0;margin-bottom:calc(var(--mobile-nav-height) + env(safe-area-inset-bottom))}.netflix-header{height:var(--header-height);background:linear-gradient(180deg,rgba(0,0,0,.8) 0%,transparent 100%)}.netflix-header.scrolled{background:#141414fa}.netflix-header__logo svg,.netflix-header__logo img{height:22px}.netflix-header__nav{display:none}.netflix-header__right{gap:12px}.floating-search-btn{display:none}.sidebar{display:flex!important;position:fixed;top:auto;left:0;right:0;bottom:0;width:100%;height:var(--mobile-nav-height);flex-direction:row;justify-content:space-around;align-items:center;padding:0 8px;padding-bottom:env(safe-area-inset-bottom);background:#121212;border-top:1px solid rgba(51,51,51,.8);border-right:none;z-index:var(--z-mobile-nav)}.sidebar__logo{display:none}.sidebar__nav{display:flex;flex-direction:row;flex:1;justify-content:space-around;align-items:center;gap:0}.sidebar__nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:auto;height:auto;padding:6px 12px;border-radius:0;color:var(--netflix-text-muted)}.sidebar__nav-item svg{width:20px;height:20px}.sidebar__nav-item.active{color:var(--netflix-text);background:transparent}.sidebar__nav-item.active:before{display:none}.sidebar__profile{display:none}.hero{height:75vh;min-height:450px;margin-bottom:-60px}.hero__gradient-overlay{background:linear-gradient(to top,#141414 0%,rgba(20,20,20,.6) 30%,transparent 60%)}.hero__content{max-width:100%;bottom:15%;left:var(--row-padding);right:var(--row-padding);text-align:center;align-items:center}.hero__title{font-size:clamp(1.5rem,6vw,2rem);text-align:center}.hero__description{font-size:var(--font-size-base);-webkit-line-clamp:2;text-align:center}.hero__metadata{justify-content:center}.hero__actions{flex-direction:row;width:100%;justify-content:center;gap:8px}.hero__btn{flex:1;max-width:160px;padding:10px 16px;font-size:var(--font-size-base)}.hero__btn svg{width:20px;height:20px}.hero-controls{bottom:10%;right:50%;transform:translate(50%)}.hero-arrow{display:none}.hero__poster-float{display:none!important}.video-card{flex:0 0 var(--card-width-desktop);width:var(--card-width-desktop)}.video-card:hover .video-card__container,.video-card:focus .video-card__container{transform:none;box-shadow:none;border-radius:var(--card-radius)}.video-card__info{display:none!important}.video-card__overlay{opacity:0!important}.video-card__play-btn{width:40px;height:40px}.slider-section{margin:var(--row-margin) 0}.slider-section__title{font-size:var(--font-size-base);margin-bottom:10px}.slider-section__title:after{display:none}.slider-track{gap:var(--card-gap);padding-bottom:10px;margin-bottom:-10px}.slider-btn{display:none}.video-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:0 var(--row-padding)}.video-grid .video-card{flex:auto;width:100%}.modal{align-items:flex-end}.modal__container{width:100%;max-width:none;border-radius:12px 12px 0 0;max-height:90vh}.player-modal__content{margin:0;max-height:100vh;border-radius:0}.section-banner{height:140px;margin:16px var(--row-padding)}.section-banner__title{font-size:var(--font-size-lg)}.shortcut-card{min-width:160px;height:100px;padding:16px}.shortcut-card h3{font-size:var(--font-size-base)}.view-tabs{padding:0 var(--row-padding);gap:8px}.view-tab{padding:6px 16px;font-size:var(--font-size-sm)}.back-to-top{bottom:calc(var(--mobile-nav-height) + 20px);right:16px;width:40px;height:40px}}@media (max-width: 480px){:root{--card-width-desktop: 100px}.video-grid{grid-template-columns:repeat(3,1fr);gap:6px}.hero__title{font-size:1.5rem}.hero__btn{padding:8px 12px;font-size:var(--font-size-sm)}.sidebar__nav-item{padding:6px 8px}.sidebar__nav-item svg{width:18px;height:18px}}@media (max-width: 767px) and (orientation: landscape){.hero{height:90vh;min-height:280px}.hero__content{bottom:10%}.hero__title{font-size:1.5rem}.hero__description{display:none}}@media (hover: hover) and (pointer: fine){.video-card:hover .video-card__container{transform:scale(var(--card-hover-scale))}.video-card:hover .video-card__info{opacity:1;transform:translateY(0)}.video-card:hover .video-card__overlay{opacity:1}}@media (hover: none){.video-card:hover .video-card__container,.video-card:active .video-card__container{transform:none}.video-card__info{display:none!important}.slider-btn{opacity:1}}@media print{.netflix-header,.sidebar,.hero,.floating-search-btn,.back-to-top{display:none!important}.main-content{padding:0;margin:0}}.video-grid{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))!important;gap:var(--spacing-lg)!important;padding:var(--spacing-lg) 4%;width:100%}.video-grid .video-card{width:100%;flex:none;aspect-ratio:2/3;min-width:160px}@media (max-width: 1200px){.video-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}}@media (max-width: 768px){.video-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:16px;padding:var(--spacing-md) 3%}}@media (max-width: 480px){.video-grid{grid-template-columns:repeat(2,1fr);gap:12px;padding:var(--spacing-sm) 16px}}@media (max-width: 600px){.video-grid{grid-template-columns:repeat(2,1fr)!important;gap:12px!important;padding:16px 12px!important}.video-grid .video-card{aspect-ratio:2/3!important}}@media (min-width: 601px) and (max-width: 1024px){.video-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))!important;gap:16px!important;padding:20px 16px!important}}@media (min-width: 1025px){.video-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))!important;gap:24px!important}}.search-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);display:none;align-items:flex-start;justify-content:center;padding-top:80px}.search-modal.active{display:flex}.search-modal__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#000000d9;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.search-modal__content{position:relative;width:90%;max-width:900px;background:var(--apple-bg-secondary);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);border:1px solid var(--apple-border);max-height:80vh;display:flex;flex-direction:column}.search-modal__header{display:flex;align-items:center;gap:16px;padding:24px;border-bottom:1px solid var(--apple-border)}.search-modal__input{flex:1;background:var(--apple-bg-tertiary);border:1px solid var(--apple-border);border-radius:var(--radius-md);padding:14px 20px;font-size:17px;color:var(--apple-text-primary);outline:none;transition:all var(--transition-base)}.search-modal__input:focus{border-color:var(--apple-accent);box-shadow:0 0 0 3px var(--apple-accent-glow)}.search-modal__input::placeholder{color:var(--apple-text-tertiary)}.search-modal__close{background:transparent;border:none;color:var(--apple-text-secondary);cursor:pointer;padding:8px;border-radius:var(--radius-sm);transition:all var(--transition-base)}.search-modal__close:hover{background:var(--apple-bg-elevated);color:var(--apple-text-primary)}.search-modal__results{flex:1;overflow-y:auto;padding:24px}.search-empty,.search-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--apple-text-tertiary)}.search-empty svg,.search-loading svg{margin-bottom:16px;opacity:.5}.search-empty p{font-size:15px}.search-loading .loading__spinner{width:40px;height:40px;border:3px solid var(--apple-bg-elevated);border-top-color:var(--apple-accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.search-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:20px}.search-grid .video-card{flex:1}@media (max-width: 768px){.search-modal{padding-top:20px}.search-modal__content{width:95%;max-height:90vh}.search-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}} diff --git a/backend/static/assets/favicon.svg b/backend/static/assets/favicon-D7BKdTu2.svg similarity index 100% rename from backend/static/assets/favicon.svg rename to backend/static/assets/favicon-D7BKdTu2.svg diff --git a/backend/static/assets/icon.svg b/backend/static/assets/icon.svg deleted file mode 100644 index cede46d..0000000 --- a/backend/static/assets/icon.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/backend/static/assets/keyboard-nav-CZ5sEhKF.js b/backend/static/assets/keyboard-nav-CjQOo0Sk.js similarity index 50% rename from backend/static/assets/keyboard-nav-CZ5sEhKF.js rename to backend/static/assets/keyboard-nav-CjQOo0Sk.js index 65bc152..5352a65 100644 --- a/backend/static/assets/keyboard-nav-CZ5sEhKF.js +++ b/backend/static/assets/keyboard-nav-CjQOo0Sk.js @@ -1,4 +1,4 @@ -(function(){const u=document.createElement("link").relList;if(u&&u.supports&&u.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))h(e);new MutationObserver(e=>{for(const t of e)if(t.type==="childList")for(const c of t.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&h(c)}).observe(document,{childList:!0,subtree:!0});function o(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?t.credentials="include":e.crossOrigin==="anonymous"?t.credentials="omit":t.credentials="same-origin",t}function h(e){if(e.ep)return;e.ep=!0;const t=o(e);fetch(e.href,t)}})();const _=window.location.origin.includes("localhost")||window.location.origin.includes("127.0.0.1")?"/api":"https://nf.khoavo.myds.me/api",Yt=[121,111,117,114,45,115,117,112,101,114,45,115,101,99,114,101,116,45,107,101,121,45,99,104,97,110,103,101,45,116,104,105,115],Gt=String.fromCharCode(...Yt);class Zt{async signRequest(u,o="GET"){const h=Math.floor(Date.now()/1e3).toString(),e=u.startsWith("/api")?u:`/api${u}`,t=`${h}${e}${o.toUpperCase()}`,c=new TextEncoder,r=c.encode(Gt),i=c.encode(t),n=await crypto.subtle.importKey("raw",r,{name:"HMAC",hash:"SHA-256"},!1,["sign"]),l=await crypto.subtle.sign("HMAC",n,i);return{"X-Signature":Array.from(new Uint8Array(l)).map(f=>f.toString(16).padStart(2,"0")).join(""),"X-Timestamp":h}}getProxyUrl(u,o=200){return u?`${_}/images/proxy?url=${encodeURIComponent(u)}&width=${o}`:""}async extractVideo(u,o=null){const e=await this.signRequest("/api/extract","POST"),t=await fetch(`${_}/extract`,{method:"POST",headers:{"Content-Type":"application/json",...e},body:JSON.stringify({url:u,quality:o})});if(!t.ok){const c=await t.json();throw new Error(c.detail||"Extraction failed")}return t.json()}async updateHeaders(u={},o,h="GET"){const e=await this.signRequest(o,h);return{...u,headers:{...u.headers,...e}}}async getQualities(u){const h=await this.signRequest("/api/qualities","GET"),e=await fetch(`${_}/qualities?url=${encodeURIComponent(u)}`,{headers:h});if(!e.ok)throw new Error("Failed to get qualities");return(await e.json()).qualities}async listVideos({skip:u=0,limit:o=50,category:h=null}={}){let e=`${_}/videos?skip=${u}&limit=${o}`;h&&h!=="all"&&(e+=`&category=${encodeURIComponent(h)}`);const c=await this.signRequest("/api/videos","GET"),r=await fetch(e,{headers:c});if(!r.ok)throw new Error("Failed to fetch videos");return r.json()}async addVideo(u){const h=await this.signRequest("/api/videos","POST"),e=await fetch(`${_}/videos`,{method:"POST",headers:{"Content-Type":"application/json",...h},body:JSON.stringify(u)});if(!e.ok){const t=await e.json();throw new Error(t.detail||"Failed to add video")}return e.json()}async deleteVideo(u){const o=`/api/videos/${u}`,h=await this.signRequest(o,"DELETE");if(!(await fetch(`${_}/videos/${u}`,{method:"DELETE",headers:h})).ok)throw new Error("Failed to delete video")}async searchVideos(u,o=20){const h=`${_}/search?q=${encodeURIComponent(u)}&limit=${o}`,t=await this.signRequest("/api/search","GET"),c=await fetch(h,{headers:t});if(!c.ok)throw new Error("Search failed");return c.json()}async health(){return(await fetch(`${_}/health`)).json()}async getRophimCatalog({category:u=null,country:o=null,genre:h=null,page:e=1,limit:t=24,sort:c="modified"}={}){let r=`${_}/rophim/catalog?page=${e}&limit=${t}&sort=${c}`;u&&(r+=`&category=${encodeURIComponent(u)}`),o&&(r+=`&country=${encodeURIComponent(o)}`),h&&(r+=`&genre=${encodeURIComponent(h)}`);const n=await this.signRequest("/api/rophim/catalog","GET"),l=await fetch(r,{headers:n});if(!l.ok)throw new Error("Failed to fetch RoPhim catalog");return l.json()}async getCuratedSections(){const o=await this.signRequest("/api/rophim/home/curated","GET"),h=await fetch(`${_}/rophim/home/curated`,{headers:o});if(!h.ok)throw new Error("Failed to fetch curated sections");return h.json()}async searchRophim(u,o=20){const h=`${_}/rophim/search?q=${encodeURIComponent(u)}&limit=${o}`,t=await this.signRequest("/api/rophim/search","GET"),c=await fetch(h,{headers:t});if(!c.ok)throw new Error("RoPhim search failed");return c.json()}async getHomeSections(u=2,o="home"){const e=await this.signRequest("/api/rophim/home/sections","GET"),t=await fetch(`${_}/rophim/home/sections?page=${u}&view=${o}`,{headers:e});if(!t.ok)throw new Error("Failed to fetch home sections");return t.json()}async getRophimMovie(u){const o=`/api/rophim/movie/${encodeURIComponent(u)}`,h=await this.signRequest(o,"GET"),e=await fetch(`${_}/rophim/movie/${encodeURIComponent(u)}`,{headers:h});if(!e.ok)throw new Error("Failed to fetch movie details");return e.json()}async getRophimStream(u,o=1){const h=`/api/rophim/stream/${encodeURIComponent(u)}`,e=await this.signRequest(h,"GET"),t=await fetch(`${_}/rophim/stream/${encodeURIComponent(u)}?episode=${o}`,{headers:e});if(!t.ok)throw new Error("Failed to get stream");return t.json()}async getRophimStreamByUrl(u,o="",h=1,e=0){const c=await this.signRequest("/api/rophim/stream","POST"),r=await fetch(`${_}/rophim/stream`,{method:"POST",headers:{"Content-Type":"application/json",...c},body:JSON.stringify({source_url:u,slug:o||"",episode:h,server:e})});if(!r.ok){const i=await r.json();throw new Error(i.detail||"Failed to get stream")}return r.json()}async discoverCategories(){const o=await this.signRequest("/api/rophim/categories/discover","GET"),h=await fetch(`${_}/rophim/categories/discover`,{headers:o});if(!h.ok)throw new Error("Failed to discover categories");return h.json()}async getMoviesByCategory(u,o=1,h=24){const t=await this.signRequest("/api/rophim/category","GET"),c=await fetch(`${_}/rophim/category?slug=${encodeURIComponent(u)}&page=${o}&limit=${h}`,{headers:t});if(!c.ok)throw new Error("Failed to fetch category");return c.json()}async getHotMovies(u=24){const h=await this.signRequest("/api/rophim/categories/hot","GET"),e=await fetch(`${_}/rophim/categories/hot?limit=${u}`,{headers:h});if(!e.ok)throw new Error("Failed to fetch hot movies");return e.json()}async getNewReleases(u=24){const h=await this.signRequest("/api/rophim/categories/new-releases","GET"),e=await fetch(`${_}/rophim/categories/new-releases?limit=${u}`,{headers:h});if(!e.ok)throw new Error("Failed to fetch new releases");return e.json()}async getTop10(){const o=await this.signRequest("/api/rophim/categories/top10","GET"),h=await fetch(`${_}/rophim/categories/top10`,{headers:o});if(!h.ok)throw new Error("Failed to fetch top 10");return h.json()}async getCinemaReleases(u=24){const h=await this.signRequest("/api/rophim/categories/cinema","GET"),e=await fetch(`${_}/rophim/categories/cinema?limit=${u}`,{headers:h});if(!e.ok)throw new Error("Failed to fetch cinema releases");return e.json()}}const Kt=new Zt;let yt=null;const Jt=300,Et=document.getElementById("searchModal"),St=document.getElementById("searchBackdrop"),Z=document.getElementById("searchInput"),Tt=document.getElementById("closeSearch"),pt=document.getElementById("searchLoading"),ft=document.getElementById("searchGrid");document.querySelector('[data-view="search"]');function bt(){Et.classList.add("active"),setTimeout(()=>Z.focus(),100)}function wt(){Et.classList.remove("active"),Z.value="",ft.innerHTML="",pt.style.display="none"}async function xt(a){if(!a||a.trim().length<2){ft.innerHTML="",pt.style.display="none";return}pt.style.display="flex";try{const u=await Kt.searchRophim(a);pt.style.display="none",u&&u.movies&&u.movies.length>0?ft.innerHTML=u.movies.map(o=>` +(function(){const p=document.createElement("link").relList;if(p&&p.supports&&p.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))m(e);new MutationObserver(e=>{for(const t of e)if(t.type==="childList")for(const c of t.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&m(c)}).observe(document,{childList:!0,subtree:!0});function o(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?t.credentials="include":e.crossOrigin==="anonymous"?t.credentials="omit":t.credentials="same-origin",t}function m(e){if(e.ep)return;e.ep=!0;const t=o(e);fetch(e.href,t)}})();const _="https://nf.khoavo.myds.me/api",Bt=[121,111,117,114,45,115,117,112,101,114,45,115,101,99,114,101,116,45,107,101,121,45,99,104,97,110,103,101,45,116,104,105,115],Pt=String.fromCharCode(...Bt);class Ot{async signRequest(p,o="GET"){const m=Math.floor(Date.now()/1e3).toString(),e=p.startsWith("/api")?p:`/api${p}`,t=`${m}${e}${o.toUpperCase()}`,c=new TextEncoder,r=c.encode(Pt),i=c.encode(t),n=await crypto.subtle.importKey("raw",r,{name:"HMAC",hash:"SHA-256"},!1,["sign"]),s=await crypto.subtle.sign("HMAC",n,i);return{"X-Signature":Array.from(new Uint8Array(s)).map(d=>d.toString(16).padStart(2,"0")).join(""),"X-Timestamp":m}}getProxyUrl(p,o=200){return p?`${_}/images/proxy?url=${encodeURIComponent(p)}&width=${o}`:""}async extractVideo(p,o=null){const e=await this.signRequest("/api/extract","POST"),t=await fetch(`${_}/extract`,{method:"POST",headers:{"Content-Type":"application/json",...e},body:JSON.stringify({url:p,quality:o})});if(!t.ok){const c=await t.json();throw new Error(c.detail||"Extraction failed")}return t.json()}async updateHeaders(p={},o,m="GET"){const e=await this.signRequest(o,m);return{...p,headers:{...p.headers,...e}}}async getQualities(p){const m=await this.signRequest("/api/qualities","GET"),e=await fetch(`${_}/qualities?url=${encodeURIComponent(p)}`,{headers:m});if(!e.ok)throw new Error("Failed to get qualities");return(await e.json()).qualities}async listVideos({skip:p=0,limit:o=50,category:m=null}={}){let e=`${_}/videos?skip=${p}&limit=${o}`;m&&m!=="all"&&(e+=`&category=${encodeURIComponent(m)}`);const c=await this.signRequest("/api/videos","GET"),r=await fetch(e,{headers:c});if(!r.ok)throw new Error("Failed to fetch videos");return r.json()}async addVideo(p){const m=await this.signRequest("/api/videos","POST"),e=await fetch(`${_}/videos`,{method:"POST",headers:{"Content-Type":"application/json",...m},body:JSON.stringify(p)});if(!e.ok){const t=await e.json();throw new Error(t.detail||"Failed to add video")}return e.json()}async deleteVideo(p){const o=`/api/videos/${p}`,m=await this.signRequest(o,"DELETE");if(!(await fetch(`${_}/videos/${p}`,{method:"DELETE",headers:m})).ok)throw new Error("Failed to delete video")}async searchVideos(p,o=20){const m=`${_}/search?q=${encodeURIComponent(p)}&limit=${o}`,t=await this.signRequest("/api/search","GET"),c=await fetch(m,{headers:t});if(!c.ok)throw new Error("Search failed");return c.json()}async health(){return(await fetch(`${_}/health`)).json()}async getRophimCatalog({category:p=null,country:o=null,genre:m=null,page:e=1,limit:t=24,sort:c="modified"}={}){let r=`${_}/rophim/catalog?page=${e}&limit=${t}&sort=${c}`;p&&(r+=`&category=${encodeURIComponent(p)}`),o&&(r+=`&country=${encodeURIComponent(o)}`),m&&(r+=`&genre=${encodeURIComponent(m)}`);const n=await this.signRequest("/api/rophim/catalog","GET"),s=await fetch(r,{headers:n});if(!s.ok)throw new Error("Failed to fetch RoPhim catalog");return s.json()}async getCuratedSections(){const o=await this.signRequest("/api/rophim/home/curated","GET"),m=await fetch(`${_}/rophim/home/curated`,{headers:o});if(!m.ok)throw new Error("Failed to fetch curated sections");return m.json()}async searchRophim(p,o=20){const m=`${_}/rophim/search?q=${encodeURIComponent(p)}&limit=${o}`,t=await this.signRequest("/api/rophim/search","GET"),c=await fetch(m,{headers:t});if(!c.ok)throw new Error("RoPhim search failed");return c.json()}async getHomeSections(p=2,o="home"){const e=await this.signRequest("/api/rophim/home/sections","GET"),t=await fetch(`${_}/rophim/home/sections?page=${p}&view=${o}`,{headers:e});if(!t.ok)throw new Error("Failed to fetch home sections");return t.json()}async getRophimMovie(p){const o=`/api/rophim/movie/${encodeURIComponent(p)}`,m=await this.signRequest(o,"GET"),e=await fetch(`${_}/rophim/movie/${encodeURIComponent(p)}`,{headers:m});if(!e.ok)throw new Error("Failed to fetch movie details");return e.json()}async getRophimStream(p,o=1){const m=`/api/rophim/stream/${encodeURIComponent(p)}`,e=await this.signRequest(m,"GET"),t=await fetch(`${_}/rophim/stream/${encodeURIComponent(p)}?episode=${o}`,{headers:e});if(!t.ok)throw new Error("Failed to get stream");return t.json()}async getRophimStreamByUrl(p,o="",m=1,e=0){const c=await this.signRequest("/api/rophim/stream","POST"),r=await fetch(`${_}/rophim/stream`,{method:"POST",headers:{"Content-Type":"application/json",...c},body:JSON.stringify({source_url:p,slug:o||"",episode:m,server:e})});if(!r.ok){const i=await r.json();throw new Error(i.detail||"Failed to get stream")}return r.json()}async discoverCategories(){const o=await this.signRequest("/api/rophim/categories/discover","GET"),m=await fetch(`${_}/rophim/categories/discover`,{headers:o});if(!m.ok)throw new Error("Failed to discover categories");return m.json()}async getMoviesByCategory(p,o=1,m=24){const t=await this.signRequest("/api/rophim/category","GET"),c=await fetch(`${_}/rophim/category?slug=${encodeURIComponent(p)}&page=${o}&limit=${m}`,{headers:t});if(!c.ok)throw new Error("Failed to fetch category");return c.json()}async getHotMovies(p=24){const m=await this.signRequest("/api/rophim/categories/hot","GET"),e=await fetch(`${_}/rophim/categories/hot?limit=${p}`,{headers:m});if(!e.ok)throw new Error("Failed to fetch hot movies");return e.json()}async getNewReleases(p=24){const m=await this.signRequest("/api/rophim/categories/new-releases","GET"),e=await fetch(`${_}/rophim/categories/new-releases?limit=${p}`,{headers:m});if(!e.ok)throw new Error("Failed to fetch new releases");return e.json()}async getTop10(){const o=await this.signRequest("/api/rophim/categories/top10","GET"),m=await fetch(`${_}/rophim/categories/top10`,{headers:o});if(!m.ok)throw new Error("Failed to fetch top 10");return m.json()}async getCinemaReleases(p=24){const m=await this.signRequest("/api/rophim/categories/cinema","GET"),e=await fetch(`${_}/rophim/categories/cinema?limit=${p}`,{headers:m});if(!e.ok)throw new Error("Failed to fetch cinema releases");return e.json()}}const Ht=new Ot;let mt=null;const _t=300,bt=document.getElementById("searchModal"),xt=document.getElementById("searchBackdrop"),Z=document.getElementById("searchInput"),wt=document.getElementById("closeSearch"),dt=document.getElementById("searchLoading"),pt=document.getElementById("searchGrid");document.querySelector('[data-view="search"]');function gt(){bt.classList.add("active"),setTimeout(()=>Z.focus(),100)}function vt(){bt.classList.remove("active"),Z.value="",pt.innerHTML="",dt.style.display="none"}async function yt(a){if(!a||a.trim().length<2){pt.innerHTML="",dt.style.display="none";return}dt.style.display="flex";try{const p=await Ht.searchRophim(a);dt.style.display="none",p&&p.movies&&p.movies.length>0?pt.innerHTML=p.movies.map(o=>`
@@ -15,33 +15,33 @@
- `).join(""):ft.innerHTML=` + `).join(""):pt.innerHTML=`

No results found for "${a}"

- `}catch(u){console.error("Search failed:",u),pt.style.display="none",ft.innerHTML=` + `}catch(p){console.error("Search failed:",p),dt.style.display="none",pt.innerHTML=`

Search failed. Please try again.

- `}}function It(){[document.getElementById("headerSearchBtn"),document.getElementById("mobileSearchBtn"),document.querySelector('[data-view="search"]'),document.querySelector('button[data-view="search"]')].forEach(h=>{h&&h.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),bt()})}),Tt&&Tt.addEventListener("click",wt),St&&St.addEventListener("click",wt),Z&&(Z.addEventListener("input",h=>{clearTimeout(yt);const e=h.target.value;yt=setTimeout(()=>{xt(e)},Jt)}),Z.addEventListener("keydown",h=>{h.key==="Enter"&&(clearTimeout(yt),xt(h.target.value))})),document.addEventListener("keydown",h=>{(h.metaKey||h.ctrlKey)&&h.key==="k"&&(h.preventDefault(),bt()),h.key==="Escape"&&Et.classList.contains("active")&&wt()});const o=new URLSearchParams(window.location.search).get("search");o&&o.trim()&&setTimeout(()=>{bt(),Z&&(Z.value=o),xt(o);const h=window.location.pathname;window.history.replaceState({},"",h)},300)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",It):It();/*! + `}}function jt(){[document.getElementById("headerSearchBtn"),document.getElementById("mobileSearchBtn"),document.querySelector('[data-view="search"]'),document.querySelector('button[data-view="search"]')].forEach(m=>{m&&m.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),gt()})}),wt&&wt.addEventListener("click",vt),xt&&xt.addEventListener("click",vt),Z&&(Z.addEventListener("input",m=>{clearTimeout(mt);const e=m.target.value;mt=setTimeout(()=>{yt(e)},_t)}),Z.addEventListener("keydown",m=>{m.key==="Enter"&&(clearTimeout(mt),yt(m.target.value))})),document.addEventListener("keydown",m=>{(m.metaKey||m.ctrlKey)&&m.key==="k"&&(m.preventDefault(),gt()),m.key==="Escape"&&bt.classList.contains("active")&&vt()});const o=new URLSearchParams(window.location.search).get("search");o&&o.trim()&&setTimeout(()=>{gt(),Z&&(Z.value=o),yt(o);const m=window.location.pathname;window.history.replaceState({},"",m)},300)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",jt):jt();/*! * artplayer.js v5.3.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2025 Harvey Zack * Released under the MIT License. - */(function(a,u,o,h,e,t,c,r){var i=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{},n=typeof i[h]=="function"&&i[h],l=n.i||{},s=n.cache||{},d=typeof module<"u"&&typeof module.require=="function"&&module.require.bind(module);function f(v,x){if(!s[v]){if(!a[v]){if(e[v])return e[v];var m=typeof i[h]=="function"&&i[h];if(!x&&m)return m(v,!0);if(n)return n(v,!0);if(d&&typeof v=="string")return d(v);var y=Error("Cannot find module '"+v+"'");throw y.code="MODULE_NOT_FOUND",y}k.resolve=function($){var S=a[v][1][$];return S??$},k.cache={};var j=s[v]=new f.Module(v);a[v][0].call(j.exports,k,j,j.exports,i)}return s[v].exports;function k($){var S=k.resolve($);return S===!1?{}:f(S)}}f.isParcelRequire=!0,f.Module=function(v){this.id=v,this.bundle=f,this.require=d,this.exports={}},f.modules=a,f.cache=s,f.parent=n,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=l,f.register=function(v,x){a[v]=[function(m,y){y.exports=x},{}]},Object.defineProperty(f,"root",{get:function(){return i[h]}}),i[h]=f;for(var p=0;pQ.call(this,this)),A.DEBUG){let et=N=>console.log(`[ART.${this.id}] -> ${N}`);et(`Version@${A.version}`);for(let N=0;Net(`Event@${ut.type}`))}Y.push(this)}static get instances(){return Y}static get version(){return n.version}static get config(){return s.default}static get utils(){return X}static get scheme(){return z.default}static get Emitter(){return J.default}static get validator(){return i.default}static get kindOf(){return i.default.kindOf}static get html(){return K.default.html}static get option(){return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:U=>U},moreVideoAttr:{controls:!1,preload:X.isSafari?"auto":"metadata"},i18n:{},icons:{},cssVar:{},customType:{},lang:navigator==null?void 0:navigator.language.toLowerCase()}}get proxy(){return this.events.proxy}get query(){return this.template.query}get video(){return this.template.$video}destroy(U=!0){A.REMOVE_SRC_WHEN_DESTROY&&this.video.removeAttribute("src"),this.events.destroy(),this.template.destroy(U),Y.splice(Y.indexOf(this),1),this.isDestroy=!0,this.emit("destroy")}}o.default=A,A.STYLE=c.default,A.DEBUG=!1,A.CONTEXTMENU=!0,A.NOTICE_TIME=2e3,A.SETTING_WIDTH=250,A.SETTING_ITEM_WIDTH=200,A.SETTING_ITEM_HEIGHT=35,A.RESIZE_TIME=200,A.SCROLL_TIME=200,A.SCROLL_GAP=50,A.AUTO_PLAYBACK_MAX=10,A.AUTO_PLAYBACK_MIN=5,A.AUTO_PLAYBACK_TIMEOUT=3e3,A.RECONNECT_TIME_MAX=5,A.RECONNECT_SLEEP_TIME=1e3,A.CONTROL_HIDE_TIME=3e3,A.DBCLICK_TIME=300,A.DBCLICK_FULLSCREEN=!0,A.MOBILE_DBCLICK_PLAY=!0,A.MOBILE_CLICK_PLAY=!1,A.AUTO_ORIENTATION_TIME=200,A.INFO_LOOP_TIME=1e3,A.FAST_FORWARD_VALUE=3,A.FAST_FORWARD_TIME=1e3,A.TOUCH_MOVE_RATIO=.5,A.VOLUME_STEP=.1,A.SEEK_STEP=5,A.PLAYBACK_RATE=[.5,.75,1,1.25,1.5,2],A.ASPECT_RATIO=["default","4:3","16:9"],A.FLIP=["normal","horizontal","vertical"],A.FULLSCREEN_WEB_IN_BODY=!1,A.LOG_VERSION=!0,A.USE_RAF=!1,A.REMOVE_SRC_WHEN_DESTROY=!0,X.isBrowser&&(window.Artplayer=A,X.setStyleText("artplayer-style",c.default),setTimeout(()=>{A.LOG_VERSION&&console.log(`%c ArtPlayer %c ${A.version} %c https://artplayer.org`,"color: #fff; background: #5f5f5f","color: #fff; background: #4bc729","")},100))},{"bundle-text:./style/index.less":"2wh8D","option-validator":"g7VGh","../package.json":"lh3R5","./config":"eJfh8","./contextmenu":"9zso8","./control":"dp1yk","./events":"jmVSD","./hotkey":"dswts","./i18n":"d9ktO","./icons":"fFHY0","./info":"kZ0F8","./layer":"j9lbi","./loading":"bMjWd","./mask":"k1nkQ","./notice":"fPVaU","./player":"uR0Sw","./plugins":"cjxJL","./scheme":"biLjm","./setting":"bwLGT","./storage":"kwqbK","./subtitle":"k5613","./template":"fwOA1","./utils":"aBlEo","./utils/emitter":"4NM7P","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"2wh8D":[function(a,u,o,h){u.exports='.art-video-player{--art-theme:red;--art-font-color:#fff;--art-background-color:#000;--art-text-shadow-color:#00000080;--art-transition-duration:.2s;--art-padding:10px;--art-border-radius:3px;--art-progress-height:6px;--art-progress-color:#ffffff40;--art-hover-color:#ffffff40;--art-loaded-color:#ffffff40;--art-state-size:80px;--art-state-opacity:.8;--art-bottom-height:100px;--art-bottom-offset:20px;--art-bottom-gap:5px;--art-highlight-width:8px;--art-highlight-color:#ffffff80;--art-control-height:46px;--art-control-opacity:.75;--art-control-icon-size:36px;--art-control-icon-scale:1.1;--art-volume-height:120px;--art-volume-handle-size:14px;--art-lock-size:36px;--art-indicator-scale:0;--art-indicator-size:16px;--art-fullscreen-web-index:9999;--art-settings-icon-size:24px;--art-settings-max-height:300px;--art-selector-max-height:300px;--art-contextmenus-min-width:250px;--art-subtitle-font-size:20px;--art-subtitle-gap:5px;--art-subtitle-bottom:15px;--art-subtitle-border:#000;--art-widget-background:#000000d9;--art-tip-background:#000000b3;--art-scrollbar-size:4px;--art-scrollbar-background:#ffffff40;--art-scrollbar-background-hover:#ffffff80;--art-mini-progress-height:2px}.art-bg-cover{background-position:50%;background-repeat:no-repeat;background-size:cover}.art-bottom-gradient{background-image:linear-gradient(#0000,#0006,#000);background-position:bottom;background-repeat:repeat-x}.art-backdrop-filter{backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.art-video-player{zoom:1;text-align:left;user-select:none;box-sizing:border-box;width:100%;height:100%;color:var(--art-font-color);background-color:var(--art-background-color);text-shadow:0 0 2px var(--art-text-shadow-color);-webkit-tap-highlight-color:#0000;-ms-touch-action:manipulation;touch-action:manipulation;-ms-high-contrast-adjust:none;direction:ltr;outline:0;margin:0 auto;padding:0;font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,Roboto,Arial,sans-serif;font-size:14px;line-height:1.3;position:relative}.art-video-player *,.art-video-player :before,.art-video-player :after{box-sizing:border-box}.art-video-player ::-webkit-scrollbar{width:var(--art-scrollbar-size);height:var(--art-scrollbar-size)}.art-video-player ::-webkit-scrollbar-thumb{background-color:var(--art-scrollbar-background)}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:var(--art-scrollbar-background-hover)}.art-video-player img{vertical-align:top;max-width:100%}.art-video-player svg{fill:var(--art-font-color)}.art-video-player a{color:var(--art-font-color);text-decoration:none}.art-icon{justify-content:center;align-items:center;line-height:1;display:flex}.art-video-player.art-backdrop .art-contextmenus,.art-video-player.art-backdrop .art-info,.art-video-player.art-backdrop .art-settings,.art-video-player.art-backdrop .art-layer-auto-playback,.art-video-player.art-backdrop .art-selector-list,.art-video-player.art-backdrop .art-volume-inner{backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-video{z-index:10;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.art-poster{z-index:11;pointer-events:none;background-position:50%;background-repeat:no-repeat;background-size:cover;width:100%;height:100%;position:absolute;inset:0}.art-video-player .art-subtitle{z-index:20;text-align:center;pointer-events:none;justify-content:center;align-items:center;gap:var(--art-subtitle-gap);width:100%;bottom:var(--art-subtitle-bottom);font-size:var(--art-subtitle-font-size);transition:bottom var(--art-transition-duration)ease;text-shadow:var(--art-subtitle-border)1px 0 1px,var(--art-subtitle-border)0 1px 1px,var(--art-subtitle-border)-1px 0 1px,var(--art-subtitle-border)0 -1px 1px,var(--art-subtitle-border)1px 1px 1px,var(--art-subtitle-border)-1px -1px 1px,var(--art-subtitle-border)1px -1px 1px,var(--art-subtitle-border)-1px 1px 1px;flex-direction:column;padding:0 5%;display:none;position:absolute}.art-video-player.art-subtitle-show .art-subtitle{display:flex}.art-video-player.art-control-show .art-subtitle{bottom:calc(var(--art-control-height) + var(--art-subtitle-bottom))}.art-danmuku{z-index:30;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.art-video-player .art-layers{z-index:40;pointer-events:none;width:100%;height:100%;display:none;position:absolute;inset:0}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:flex}.art-video-player .art-mask{z-index:50;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;inset:0}.art-video-player .art-mask .art-state{opacity:0;width:var(--art-state-size);height:var(--art-state-size);transition:all var(--art-transition-duration)ease;justify-content:center;align-items:center;display:flex;transform:scale(2)}.art-video-player.art-mask-show .art-state{cursor:pointer;pointer-events:auto;opacity:var(--art-state-opacity);transform:scale(1)}.art-video-player.art-loading-show .art-state{display:none}.art-video-player .art-loading{z-index:70;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:none;position:absolute;inset:0}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player .art-bottom{z-index:60;opacity:0;pointer-events:none;width:100%;height:100%;padding:0 var(--art-padding);transition:all var(--art-transition-duration)ease;background-size:100% var(--art-bottom-height);background-image:linear-gradient(#0000,#0006,#000);background-position:bottom;background-repeat:repeat-x;flex-direction:column;justify-content:flex-end;display:flex;position:absolute;inset:0;overflow:hidden}.art-video-player .art-bottom .art-controls,.art-video-player .art-bottom .art-progress{transform:translateY(var(--art-bottom-offset));transition:transform var(--art-transition-duration)ease}.art-video-player.art-control-show .art-bottom,.art-video-player.art-hover .art-bottom{opacity:1}.art-video-player.art-control-show .art-bottom .art-controls,.art-video-player.art-hover .art-bottom .art-controls,.art-video-player.art-control-show .art-bottom .art-progress,.art-video-player.art-hover .art-bottom .art-progress{transform:translateY(0)}.art-bottom .art-progress{z-index:0;pointer-events:auto;padding-bottom:var(--art-bottom-gap);position:relative}.art-bottom .art-progress .art-control-progress{cursor:pointer;height:var(--art-progress-height);justify-content:center;align-items:center;display:flex;position:relative}.art-bottom .art-progress .art-control-progress .art-control-progress-inner{width:100%;height:50%;transition:height var(--art-transition-duration)ease;background-color:var(--art-progress-color);align-items:center;display:flex;position:relative}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover{z-index:0;background-color:var(--art-hover-color);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{z-index:10;background-color:var(--art-loaded-color);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{z-index:20;background-color:var(--art-theme);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{z-index:30;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{z-index:0;pointer-events:auto;width:100%;height:100%;transform:translateX(calc(var(--art-highlight-width)/-2));background-color:var(--art-highlight-color);position:absolute;inset:0 auto 0 0;width:var(--art-highlight-width)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{z-index:40;width:var(--art-indicator-size);height:var(--art-indicator-size);transform:scale(var(--art-indicator-scale));margin-left:calc(var(--art-indicator-size)/-2);transition:transform var(--art-transition-duration)ease;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;left:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon{pointer-events:none;width:100%;height:100%}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover{transform:scale(1.2)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active{transform:scale(1)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip{z-index:50;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);padding:3px 5px;font-size:12px;line-height:1;display:none;position:absolute;top:-25px;left:0}.art-bottom .art-progress .art-control-progress:hover .art-control-progress-inner{height:100%}.art-bottom .art-progress .art-control-thumbnails{bottom:calc(var(--art-bottom-gap) + 10px);border-radius:var(--art-border-radius);pointer-events:none;background-color:var(--art-widget-background);display:none;position:absolute;left:0;box-shadow:0 1px 3px #0003,0 1px 2px -1px #0003}.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{transform:scale(1)}.art-controls{z-index:10;pointer-events:auto;height:var(--art-control-height);justify-content:space-between;align-items:center;display:flex;position:relative}.art-controls .art-controls-left,.art-controls .art-controls-right{height:100%;display:flex}.art-controls .art-controls-center{flex:1;justify-content:center;align-items:center;height:100%;padding:0 10px;display:none}.art-controls .art-controls-right{justify-content:flex-end}.art-controls .art-control{cursor:pointer;white-space:nowrap;opacity:var(--art-control-opacity);min-height:var(--art-control-height);min-width:var(--art-control-height);transition:opacity var(--art-transition-duration)ease;flex-shrink:0;justify-content:center;align-items:center;display:flex}.art-controls .art-control .art-icon{height:var(--art-control-icon-size);width:var(--art-control-icon-size);transform:scale(var(--art-control-icon-scale));transition:transform var(--art-transition-duration)ease}.art-controls .art-control .art-icon:active{transform:scale(calc(var(--art-control-icon-scale)*.8))}.art-controls .art-control:hover{opacity:1}.art-control-volume{position:relative}.art-control-volume .art-volume-panel{text-align:center;cursor:default;opacity:0;pointer-events:none;left:0;right:0;bottom:var(--art-control-height);width:var(--art-control-height);height:var(--art-volume-height);transition:all var(--art-transition-duration)ease;justify-content:center;align-items:center;padding:0 5px;font-size:12px;display:flex;position:absolute;transform:translateY(10px)}.art-control-volume .art-volume-panel .art-volume-inner{border-radius:var(--art-border-radius);background-color:var(--art-widget-background);flex-direction:column;align-items:center;gap:10px;width:100%;height:100%;padding:10px 0 12px;display:flex}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{cursor:pointer;flex:1;justify-content:center;width:100%;display:flex;position:relative}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{border-radius:var(--art-border-radius);background-color:#ffffff40;justify-content:center;width:2px;display:flex;position:relative;overflow:hidden}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded{z-index:0;background-color:var(--art-theme);width:100%;height:100%;position:absolute;inset:0}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator{width:var(--art-volume-handle-size);height:var(--art-volume-handle-size);margin-top:calc(var(--art-volume-handle-size)/-2);background-color:var(--art-theme);transition:transform var(--art-transition-duration)ease;border-radius:100%;flex-shrink:0;position:absolute;transform:scale(1)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator{transform:scale(.9)}.art-control-volume:hover .art-volume-panel{opacity:1;pointer-events:auto;transform:translateY(0)}.art-video-player .art-notice{z-index:80;width:100%;height:auto;padding:var(--art-padding);pointer-events:none;display:none;position:absolute;inset:0 0 auto}.art-video-player .art-notice .art-notice-inner{border-radius:var(--art-border-radius);background-color:var(--art-tip-background);padding:5px;line-height:1;display:inline-flex}.art-video-player.art-notice-show .art-notice{display:flex}.art-video-player .art-contextmenus{z-index:120;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);min-width:var(--art-contextmenus-min-width);flex-direction:column;padding:5px 0;font-size:12px;display:none;position:absolute}.art-video-player .art-contextmenus .art-contextmenu{cursor:pointer;border-bottom:1px solid #ffffff1a;padding:10px 15px;display:flex}.art-video-player .art-contextmenus .art-contextmenu span{padding:0 8px}.art-video-player .art-contextmenus .art-contextmenu span:hover,.art-video-player .art-contextmenus .art-contextmenu span.art-current{color:var(--art-theme)}.art-video-player .art-contextmenus .art-contextmenu:hover{background-color:#ffffff1a}.art-video-player .art-contextmenus .art-contextmenu:last-child{border-bottom:none}.art-video-player.art-contextmenu-show .art-contextmenus{display:flex}.art-video-player .art-settings{z-index:90;border-radius:var(--art-border-radius);max-height:var(--art-settings-max-height);left:auto;right:var(--art-padding);bottom:var(--art-control-height);transition:all var(--art-transition-duration)ease;background-color:var(--art-widget-background);flex-direction:column;display:none;position:absolute;overflow:hidden auto}.art-video-player .art-settings .art-setting-panel{flex-direction:column;display:none}.art-video-player .art-settings .art-setting-panel.art-current{display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item{cursor:pointer;transition:background-color var(--art-transition-duration)ease;justify-content:space-between;align-items:center;padding:0 5px;display:flex;overflow:hidden}.art-video-player .art-settings .art-setting-panel .art-setting-item:hover{background-color:#ffffff1a}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current{color:var(--art-theme)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check{visibility:hidden;height:15px}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check{visibility:visible}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left{flex-shrink:0;justify-content:center;align-items:center;gap:5px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon{height:var(--art-settings-icon-size);width:var(--art-settings-icon-size);justify-content:center;align-items:center;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right{justify-content:center;align-items:center;gap:5px;font-size:12px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip{white-space:nowrap;color:#ffffff80}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon{justify-content:center;align-items:center;min-width:32px;height:24px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{appearance:none;background-color:#fff3;outline:none;width:80px;height:3px}.art-video-player .art-settings .art-setting-panel .art-setting-item-back{border-bottom:1px solid #ffffff1a}.art-video-player.art-setting-show .art-settings{display:flex}.art-video-player .art-info{left:var(--art-padding);top:var(--art-padding);z-index:100;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);padding:10px;font-size:12px;display:none;position:absolute}.art-video-player .art-info .art-info-panel{flex-direction:column;gap:5px;display:flex}.art-video-player .art-info .art-info-panel .art-info-item{align-items:center;gap:5px;display:flex}.art-video-player .art-info .art-info-panel .art-info-item .art-info-title{text-align:right;width:100px}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{text-overflow:ellipsis;white-space:nowrap;user-select:all;width:250px;overflow:hidden}.art-video-player .art-info .art-info-close{cursor:pointer;position:absolute;top:5px;right:5px}.art-video-player.art-info-show .art-info{display:flex}.art-hide-cursor *{cursor:none!important}.art-video-player[data-aspect-ratio]{overflow:hidden}.art-video-player[data-aspect-ratio] .art-video{object-fit:fill;box-sizing:content-box}.art-fullscreen{--art-progress-height:8px;--art-indicator-size:20px;--art-control-height:60px;--art-control-icon-scale:1.3}.art-fullscreen-web{--art-progress-height:8px;--art-indicator-size:20px;--art-control-height:60px;--art-control-icon-scale:1.3;z-index:var(--art-fullscreen-web-index);width:100%;height:100%;position:fixed;inset:0}.art-mini-popup{z-index:9999;border-radius:var(--art-border-radius);cursor:move;user-select:none;background:#000;width:320px;height:180px;transition:opacity .2s;position:fixed;overflow:hidden;box-shadow:0 0 5px #00000080}.art-mini-popup svg{fill:#fff}.art-mini-popup .art-video{pointer-events:none}.art-mini-popup .art-mini-close{z-index:20;cursor:pointer;opacity:0;transition:opacity .2s;position:absolute;top:10px;right:10px}.art-mini-popup .art-mini-state{z-index:30;pointer-events:none;opacity:0;background-color:#00000040;justify-content:center;align-items:center;width:100%;height:100%;transition:opacity .2s;display:flex;position:absolute;inset:0}.art-mini-popup .art-mini-state .art-icon{opacity:.75;cursor:pointer;pointer-events:auto;transition:transform .2s;transform:scale(3)}.art-mini-popup .art-mini-state .art-icon:active{transform:scale(2.5)}.art-mini-popup.art-mini-dragging{opacity:.9}.art-mini-popup:hover .art-mini-close,.art-mini-popup:hover .art-mini-state{opacity:1}.art-video-player[data-flip=horizontal] .art-video{transform:scaleX(-1)}.art-video-player[data-flip=vertical] .art-video{transform:scaleY(-1)}.art-video-player .art-layer-lock{height:var(--art-lock-size);width:var(--art-lock-size);top:50%;left:var(--art-padding);background-color:var(--art-tip-background);border-radius:50%;justify-content:center;align-items:center;display:none;position:absolute;transform:translateY(-50%)}.art-video-player .art-layer-auto-playback{border-radius:var(--art-border-radius);left:var(--art-padding);bottom:calc(var(--art-control-height) + var(--art-bottom-gap) + 10px);background-color:var(--art-widget-background);align-items:center;gap:10px;padding:10px;line-height:1;display:none;position:absolute}.art-video-player .art-layer-auto-playback .art-auto-playback-close{cursor:pointer;justify-content:center;align-items:center;display:flex}.art-video-player .art-layer-auto-playback .art-auto-playback-close svg{width:15px;height:15px;fill:var(--art-theme)}.art-video-player .art-layer-auto-playback .art-auto-playback-jump{color:var(--art-theme);cursor:pointer}.art-video-player.art-lock .art-subtitle{bottom:var(--art-subtitle-bottom)!important}.art-video-player.art-mini-progress-bar .art-bottom,.art-video-player.art-lock .art-bottom{opacity:1;background-image:none;padding:0}.art-video-player.art-mini-progress-bar .art-bottom .art-controls,.art-video-player.art-lock .art-bottom .art-controls,.art-video-player.art-mini-progress-bar .art-bottom .art-progress,.art-video-player.art-lock .art-bottom .art-progress{transform:translateY(calc(var(--art-control-height) + var(--art-bottom-gap) + var(--art-progress-height)/4))}.art-video-player.art-mini-progress-bar .art-bottom .art-progress-indicator,.art-video-player.art-lock .art-bottom .art-progress-indicator{display:none!important}.art-video-player.art-control-show .art-layer-lock{display:flex}.art-control-selector{justify-content:center;display:flex;position:relative}.art-control-selector .art-selector-list{text-align:center;border-radius:var(--art-border-radius);opacity:0;pointer-events:none;bottom:var(--art-control-height);max-height:var(--art-selector-max-height);background-color:var(--art-widget-background);transition:all var(--art-transition-duration)ease;flex-direction:column;align-items:center;display:flex;position:absolute;overflow:hidden auto;transform:translateY(10px)}.art-control-selector .art-selector-list .art-selector-item{flex-shrink:0;justify-content:center;align-items:center;width:100%;padding:10px 15px;line-height:1;display:flex}.art-control-selector .art-selector-list .art-selector-item:hover{background-color:#ffffff1a}.art-control-selector .art-selector-list .art-selector-item:hover,.art-control-selector .art-selector-list .art-selector-item.art-current{color:var(--art-theme)}.art-control-selector:hover .art-selector-list{opacity:1;pointer-events:auto;transform:translateY(0)}[class*=hint--]{font-style:normal;display:inline-block;position:relative}[class*=hint--]:before,[class*=hint--]:after{visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;transition:all .3s;position:absolute;transform:translate(0,0)}[class*=hint--]:hover:before,[class*=hint--]:hover:after{visibility:visible;opacity:1;transition-delay:.1s}[class*=hint--]:before{content:"";z-index:1000001;background:0 0;border:6px solid #0000;position:absolute}[class*=hint--]:after{color:#fff;white-space:nowrap;background:#000;padding:8px 10px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;line-height:12px}[class*=hint--][aria-label]:after{content:attr(aria-label)}[class*=hint--][data-hint]:after{content:attr(data-hint)}[aria-label=""]:before,[aria-label=""]:after,[data-hint=""]:before,[data-hint=""]:after{display:none!important}.hint--top-left:before,.hint--top-right:before,.hint--top:before{border-top-color:#000}.hint--bottom-left:before,.hint--bottom-right:before,.hint--bottom:before{border-bottom-color:#000}.hint--left:before{border-left-color:#000}.hint--right:before{border-right-color:#000}.hint--top:before{margin-bottom:-11px}.hint--top:before,.hint--top:after{bottom:100%;left:50%}.hint--top:before{left:calc(50% - 6px)}.hint--top:after{transform:translate(-50%)}.hint--top:hover:before{transform:translateY(-8px)}.hint--top:hover:after{transform:translate(-50%)translateY(-8px)}.hint--bottom:before{margin-top:-11px}.hint--bottom:before,.hint--bottom:after{top:100%;left:50%}.hint--bottom:before{left:calc(50% - 6px)}.hint--bottom:after{transform:translate(-50%)}.hint--bottom:hover:before{transform:translateY(8px)}.hint--bottom:hover:after{transform:translate(-50%)translateY(8px)}.hint--right:before{margin-bottom:-6px;margin-left:-11px}.hint--right:after{margin-bottom:-14px}.hint--right:before,.hint--right:after{bottom:50%;left:100%}.hint--right:hover:before,.hint--right:hover:after{transform:translate(8px)}.hint--left:before{margin-bottom:-6px;margin-right:-11px}.hint--left:after{margin-bottom:-14px}.hint--left:before,.hint--left:after{bottom:50%;right:100%}.hint--left:hover:before,.hint--left:hover:after{transform:translate(-8px)}.hint--top-left:before{margin-bottom:-11px}.hint--top-left:before,.hint--top-left:after{bottom:100%;left:50%}.hint--top-left:before{left:calc(50% - 6px)}.hint--top-left:after{margin-left:12px;transform:translate(-100%)}.hint--top-left:hover:before{transform:translateY(-8px)}.hint--top-left:hover:after{transform:translate(-100%)translateY(-8px)}.hint--top-right:before{margin-bottom:-11px}.hint--top-right:before,.hint--top-right:after{bottom:100%;left:50%}.hint--top-right:before{left:calc(50% - 6px)}.hint--top-right:after{margin-left:-12px;transform:translate(0)}.hint--top-right:hover:before,.hint--top-right:hover:after{transform:translateY(-8px)}.hint--bottom-left:before{margin-top:-11px}.hint--bottom-left:before,.hint--bottom-left:after{top:100%;left:50%}.hint--bottom-left:before{left:calc(50% - 6px)}.hint--bottom-left:after{margin-left:12px;transform:translate(-100%)}.hint--bottom-left:hover:before{transform:translateY(8px)}.hint--bottom-left:hover:after{transform:translate(-100%)translateY(8px)}.hint--bottom-right:before{margin-top:-11px}.hint--bottom-right:before,.hint--bottom-right:after{top:100%;left:50%}.hint--bottom-right:before{left:calc(50% - 6px)}.hint--bottom-right:after{margin-left:-12px;transform:translate(0)}.hint--bottom-right:hover:before,.hint--bottom-right:hover:after{transform:translateY(8px)}.hint--small:after,.hint--medium:after,.hint--large:after{white-space:normal;word-wrap:break-word;line-height:1.4em}.hint--small:after{width:80px}.hint--medium:after{width:150px}.hint--large:after{width:300px}[class*=hint--]:after{text-shadow:0 -1px #000;box-shadow:4px 4px 8px #0000004d}.hint--error:after{text-shadow:0 -1px #592726;background-color:#b34e4d}.hint--error.hint--top-left:before,.hint--error.hint--top-right:before,.hint--error.hint--top:before{border-top-color:#b34e4d}.hint--error.hint--bottom-left:before,.hint--error.hint--bottom-right:before,.hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.hint--error.hint--left:before{border-left-color:#b34e4d}.hint--error.hint--right:before{border-right-color:#b34e4d}.hint--warning:after{text-shadow:0 -1px #6c5328;background-color:#c09854}.hint--warning.hint--top-left:before,.hint--warning.hint--top-right:before,.hint--warning.hint--top:before{border-top-color:#c09854}.hint--warning.hint--bottom-left:before,.hint--warning.hint--bottom-right:before,.hint--warning.hint--bottom:before{border-bottom-color:#c09854}.hint--warning.hint--left:before{border-left-color:#c09854}.hint--warning.hint--right:before{border-right-color:#c09854}.hint--info:after{text-shadow:0 -1px #1a3c4d;background-color:#3986ac}.hint--info.hint--top-left:before,.hint--info.hint--top-right:before,.hint--info.hint--top:before{border-top-color:#3986ac}.hint--info.hint--bottom-left:before,.hint--info.hint--bottom-right:before,.hint--info.hint--bottom:before{border-bottom-color:#3986ac}.hint--info.hint--left:before{border-left-color:#3986ac}.hint--info.hint--right:before{border-right-color:#3986ac}.hint--success:after{text-shadow:0 -1px #1a321a;background-color:#458746}.hint--success.hint--top-left:before,.hint--success.hint--top-right:before,.hint--success.hint--top:before{border-top-color:#458746}.hint--success.hint--bottom-left:before,.hint--success.hint--bottom-right:before,.hint--success.hint--bottom:before{border-bottom-color:#458746}.hint--success.hint--left:before{border-left-color:#458746}.hint--success.hint--right:before{border-right-color:#458746}.hint--always:after,.hint--always:before{opacity:1;visibility:visible}.hint--always.hint--top:before{transform:translateY(-8px)}.hint--always.hint--top:after{transform:translate(-50%)translateY(-8px)}.hint--always.hint--top-left:before{transform:translateY(-8px)}.hint--always.hint--top-left:after{transform:translate(-100%)translateY(-8px)}.hint--always.hint--top-right:before,.hint--always.hint--top-right:after{transform:translateY(-8px)}.hint--always.hint--bottom:before{transform:translateY(8px)}.hint--always.hint--bottom:after{transform:translate(-50%)translateY(8px)}.hint--always.hint--bottom-left:before{transform:translateY(8px)}.hint--always.hint--bottom-left:after{transform:translate(-100%)translateY(8px)}.hint--always.hint--bottom-right:before,.hint--always.hint--bottom-right:after{transform:translateY(8px)}.hint--always.hint--left:before,.hint--always.hint--left:after{transform:translate(-8px)}.hint--always.hint--right:before,.hint--always.hint--right:after{transform:translate(8px)}.hint--rounded:after{border-radius:4px}.hint--no-animate:before,.hint--no-animate:after{transition-duration:0s}.hint--bounce:before,.hint--bounce:after{-webkit-transition:opacity .3s,visibility .3s,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s,visibility .3s,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s,visibility .3s,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.hint--no-shadow:before,.hint--no-shadow:after{text-shadow:initial;box-shadow:initial}.hint--no-arrow:before{display:none}.art-video-player.art-mobile{--art-bottom-gap:10px;--art-control-height:38px;--art-control-icon-scale:1;--art-state-size:60px;--art-settings-max-height:180px;--art-selector-max-height:180px;--art-indicator-scale:1;--art-control-opacity:1}.art-video-player.art-mobile .art-controls-left{margin-left:calc(var(--art-padding)/-1)}.art-video-player.art-mobile .art-controls-right{margin-right:calc(var(--art-padding)/-1)}'},{}],g7VGh:[function(a,u,o,h){u.exports=function(){function e(s){return(e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(d){return typeof d}:function(d){return d&&typeof Symbol=="function"&&d.constructor===Symbol&&d!==Symbol.prototype?"symbol":typeof d})(s)}var t=Object.prototype.toString,c=function(s){if(s===void 0)return"undefined";if(s===null)return"null";var d=e(s);if(d==="boolean")return"boolean";if(d==="string")return"string";if(d==="number")return"number";if(d==="symbol")return"symbol";if(d==="function")return r(s)==="GeneratorFunction"?"generatorfunction":"function";if(Array.isArray?Array.isArray(s):s instanceof Array)return"array";if(s.constructor&&typeof s.constructor.isBuffer=="function"&&s.constructor.isBuffer(s))return"buffer";if(function(f){try{if(typeof f.length=="number"&&typeof f.callee=="function")return!0}catch(p){if(p.message.indexOf("callee")!==-1)return!0}return!1}(s))return"arguments";if(s instanceof Date||typeof s.toDateString=="function"&&typeof s.getDate=="function"&&typeof s.setDate=="function")return"date";if(s instanceof Error||typeof s.message=="string"&&s.constructor&&typeof s.constructor.stackTraceLimit=="number")return"error";if(s instanceof RegExp||typeof s.flags=="string"&&typeof s.ignoreCase=="boolean"&&typeof s.multiline=="boolean"&&typeof s.global=="boolean")return"regexp";switch(r(s)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(typeof s.throw=="function"&&typeof s.return=="function"&&typeof s.next=="function")return"generator";switch(d=t.call(s)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return d.slice(8,-1).toLowerCase().replace(/\s/g,"")};function r(s){return s.constructor?s.constructor.name:null}function i(s,d){var f=2","license":"MIT","homepage":"https://artplayer.org","repository":{"type":"git","url":"git+https://github.com/zhw2590582/ArtPlayer.git"},"bugs":{"url":"https://github.com/zhw2590582/ArtPlayer/issues"},"keywords":["html5","video","player"],"exports":{".":{"types":"./types/artplayer.d.ts","import":"./dist/artplayer.mjs","require":"./dist/artplayer.js"},"./legacy":{"types":"./types/artplayer.d.ts","import":"./dist/artplayer.legacy.js","require":"./dist/artplayer.legacy.js"},"./i18n/*":{"types":"./types/i18n.d.ts","import":"./dist/i18n/*.mjs","require":"./dist/i18n/*.js"}},"main":"./dist/artplayer.js","module":"./dist/artplayer.mjs","types":"./types/artplayer.d.ts","typesVersions":{"*":{"i18n/*":["types/i18n.d.ts"],"legacy":["types/artplayer.d.ts"]}},"legacy":"./dist/artplayer.legacy.js","browserslist":"last 1 Chrome version","dependencies":{"option-validator":"^2.0.6"}}')},{}],eJfh8:[function(a,u,o,h){a("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o),o.default={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webkitSupportsFullscreen","webkitDisplayingFullscreen","onenterpictureinpicture","onleavepictureinpicture","disablePictureInPicture","cancelVideoFrameCallback","requestVideoFrameCallback","getVideoPlaybackQuality","requestPictureInPicture","webkitEnterFullScreen","webkitEnterFullscreen","webkitExitFullScreen","webkitExitFullscreen"]}},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],loqXi:[function(a,u,o,h){o.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},o.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},o.exportAll=function(e,t){return Object.keys(e).forEach(function(c){c==="default"||c==="__esModule"||Object.prototype.hasOwnProperty.call(t,c)||Object.defineProperty(t,c,{enumerable:!0,get:function(){return e[c]}})}),t},o.export=function(e,t,c){Object.defineProperty(e,t,{enumerable:!0,get:c})}},{}],"9zso8":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("../utils"),c=a("../utils/component"),r=e.interopDefault(c),i=a("./aspectRatio"),n=e.interopDefault(i),l=a("./close"),s=e.interopDefault(l),d=a("./flip"),f=e.interopDefault(d),p=a("./info"),g=e.interopDefault(p),v=a("./playbackRate"),x=e.interopDefault(v),m=a("./version"),y=e.interopDefault(m);class j extends r.default{constructor($){super($),this.name="contextmenu",this.$parent=$.template.$contextmenu,t.isMobile||this.init()}init(){let{option:$,proxy:S,template:{$player:E,$contextmenu:C}}=this.art;$.playbackRate&&this.add((0,x.default)({name:"playbackRate",index:10})),$.aspectRatio&&this.add((0,n.default)({name:"aspectRatio",index:20})),$.flip&&this.add((0,f.default)({name:"flip",index:30})),this.add((0,g.default)({name:"info",index:40})),this.add((0,y.default)({name:"version",index:50})),this.add((0,s.default)({name:"close",index:60}));for(let I=0;I<$.contextmenu.length;I++)this.add($.contextmenu[I]);S(E,"contextmenu",I=>{if(!this.art.constructor.CONTEXTMENU)return;I.preventDefault(),this.show=!0;let L=I.clientX,R=I.clientY,{height:w,width:b,left:T,top:F}=(0,t.getRect)(E),{height:P,width:M}=(0,t.getRect)(C),q=L-T,O=R-F;L+M>T+b&&(q=b-M),R+P>F+w&&(O=w-P),(0,t.setStyles)(C,{top:`${O}px`,left:`${q}px`})}),S(E,"click",I=>{(0,t.includeFromEvent)(I,C)||(this.show=!1)}),this.art.on("blur",()=>{this.show=!1})}}o.default=j},{"../utils":"aBlEo","../utils/component":"idCEj","./aspectRatio":"6XHP2","./close":"eF6AX","./flip":"7Wg1P","./info":"fjRnU","./playbackRate":"hm1DY","./version":"aJBeL","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],aBlEo:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("./compatibility");e.exportAll(t,o);var c=a("./dom");e.exportAll(c,o);var r=a("./error");e.exportAll(r,o);var i=a("./file");e.exportAll(i,o);var n=a("./format");e.exportAll(n,o);var l=a("./property");e.exportAll(l,o);var s=a("./subtitle");e.exportAll(s,o);var d=a("./time");e.exportAll(d,o)},{"./compatibility":"jg0yq","./dom":"eANXw","./error":"4FwTI","./file":"i2JbS","./format":"dy9GH","./property":"jY49c","./subtitle":"ke7ox","./time":"f7gsx","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jg0yq:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"userAgent",()=>t),e.export(o,"isSafari",()=>c),e.export(o,"isIOS",()=>r),e.export(o,"isIOS13",()=>i),e.export(o,"isMobile",()=>n),e.export(o,"isBrowser",()=>l);let t=(globalThis==null?void 0:globalThis.CUSTOM_USER_AGENT)??(typeof navigator<"u"?navigator.userAgent:""),c=/^(?:(?!chrome|android).)*safari/i.test(t),r=/iPad|iPhone|iPod/i.test(t)&&!window.MSStream,i=r||t.includes("Macintosh")&&navigator.maxTouchPoints>=1,n=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(t)||i,l=typeof window<"u"&&typeof document<"u"},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],eANXw:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"query",()=>c),e.export(o,"queryAll",()=>r),e.export(o,"addClass",()=>i),e.export(o,"removeClass",()=>n),e.export(o,"hasClass",()=>l),e.export(o,"append",()=>s),e.export(o,"remove",()=>d),e.export(o,"setStyle",()=>f),e.export(o,"setStyles",()=>p),e.export(o,"getStyle",()=>g),e.export(o,"siblings",()=>v),e.export(o,"inverseClass",()=>x),e.export(o,"tooltip",()=>m),e.export(o,"isInViewport",()=>y),e.export(o,"includeFromEvent",()=>j),e.export(o,"replaceElement",()=>k),e.export(o,"createElement",()=>$),e.export(o,"getIcon",()=>S),e.export(o,"setStyleText",()=>E),e.export(o,"supportsFlex",()=>C),e.export(o,"getRect",()=>I),e.export(o,"loadImg",()=>L),e.export(o,"getComposedPath",()=>R);var t=a("./compatibility");function c(w,b=document){return b.querySelector(w)}function r(w,b=document){return Array.from(b.querySelectorAll(w))}function i(w,b){return w.classList.add(b)}function n(w,b){return w.classList.remove(b)}function l(w,b){return w.classList.contains(b)}function s(w,b){return b instanceof Element?w.appendChild(b):w.insertAdjacentHTML("beforeend",String(b)),w.lastElementChild||w.lastChild}function d(w){return w.parentNode.removeChild(w)}function f(w,b,T){return w.style[b]=T,w}function p(w,b){for(let T in b)f(w,T,b[T]);return w}function g(w,b,T=!0){let F=window.getComputedStyle(w,null).getPropertyValue(b);return T?Number.parseFloat(F):F}function v(w){return Array.from(w.parentElement.children).filter(b=>b!==w)}function x(w,b){v(w).forEach(T=>n(T,b)),i(w,b)}function m(w,b,T="top"){t.isMobile||(w.setAttribute("aria-label",b),i(w,"hint--rounded"),i(w,`hint--${T}`))}function y(w,b=0){let T=w.getBoundingClientRect(),F=window.innerHeight||document.documentElement.clientHeight,P=window.innerWidth||document.documentElement.clientWidth,M=T.top-b<=F&&T.top+T.height+b>=0,q=T.left-b<=P+b&&T.left+T.width+b>=0;return M&&q}function j(w,b){return R(w).includes(b)}function k(w,b){return b.parentNode.replaceChild(w,b),w}function $(w){return document.createElement(w)}function S(w="",b=""){let T=$("i");return i(T,"art-icon"),i(T,`art-icon-${w}`),s(T,b),T}function E(w,b){let T=document.getElementById(w);T||((T=document.createElement("style")).id=w,document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(T)}):(document.head||document.documentElement).appendChild(T)),T.textContent=b}function C(){let w=document.createElement("div");return w.style.display="flex",w.style.display==="flex"}function I(w){return w.getBoundingClientRect()}function L(w,b){return new Promise((T,F)=>{let P=new Image;P.onload=function(){if(b&&b!==1){let M=document.createElement("canvas"),q=M.getContext("2d");M.width=P.width*b,M.height=P.height*b,q.drawImage(P,0,0,M.width,M.height),M.toBlob(O=>{let B=URL.createObjectURL(O),H=new Image;H.onload=function(){T(H)},H.onerror=function(){URL.revokeObjectURL(B),F(Error(`Image load failed: ${w}`))},H.src=B})}else T(P)},P.onerror=function(){F(Error(`Image load failed: ${w}`))},P.src=w})}function R(w){if(w.composedPath)return w.composedPath();let b=[],T=w.target;for(;T;)b.push(T),T=T.parentNode;return b.includes(window)||window===void 0||b.push(window),b}},{"./compatibility":"jg0yq","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"4FwTI":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"ArtPlayerError",()=>t),e.export(o,"errorHandle",()=>c);class t extends Error{constructor(i,n){super(i),typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,n||this.constructor),this.name="ArtPlayerError"}}function c(r,i){if(!r)throw new t(i);return r}},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],i2JbS:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(c,r){let i=document.createElement("a");i.style.display="none",i.href=c,i.download=r,document.body.appendChild(i),i.click(),document.body.removeChild(i)}e.defineInteropFlag(o),e.export(o,"getExt",()=>function c(r){return r.includes("?")?c(r.split("?")[0]):r.includes("#")?c(r.split("#")[0]):r.trim().toLowerCase().split(".").pop()}),e.export(o,"download",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],dy9GH:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(l,s,d){return Math.max(Math.min(l,Math.max(s,d)),Math.min(s,d))}function c(l){return l.charAt(0).toUpperCase()+l.slice(1)}function r(l){if(!l)return"00:00";let s=Math.floor(l/3600),d=Math.floor((l-3600*s)/60),f=Math.floor(l-3600*s-60*d);return(s>0?[s,d,f]:[d,f]).map(p=>p<10?`0${p}`:String(p)).join(":")}function i(l){return l.replace(/[&<>'"]/g,s=>({"&":"&","<":"<",">":">","'":"'",'"':"""})[s]||s)}function n(l){let s={"&":"&","<":"<",">":">","'":"'",""":'"'},d=RegExp(`(${Object.keys(s).join("|")})`,"g");return l.replace(d,f=>s[f]||f)}e.defineInteropFlag(o),e.export(o,"clamp",()=>t),e.export(o,"capitalize",()=>c),e.export(o,"secondToTime",()=>r),e.export(o,"escape",()=>i),e.export(o,"unescape",()=>n)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jY49c:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"def",()=>t),e.export(o,"has",()=>r),e.export(o,"get",()=>i),e.export(o,"mergeDeep",()=>function n(...l){let s=d=>d&&typeof d=="object"&&!Array.isArray(d);return l.reduce((d,f)=>(Object.keys(f).forEach(p=>{let g=d[p],v=f[p];Array.isArray(g)&&Array.isArray(v)?d[p]=g.concat(...v):s(g)&&s(v)?d[p]=n(g,v):d[p]=v}),d),{})});let t=Object.defineProperty,{hasOwnProperty:c}=Object.prototype;function r(n,l){return c.call(n,l)}function i(n,l){return Object.getOwnPropertyDescriptor(n,l)}},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],ke7ox:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(i){return`WEBVTT \r + */(function(a,p,o,m,e,t,c,r){var i=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{},n=typeof i[m]=="function"&&i[m],s=n.i||{},l=n.cache||{},u=typeof module<"u"&&typeof module.require=="function"&&module.require.bind(module);function d(y,x){if(!l[y]){if(!a[y]){if(e[y])return e[y];var h=typeof i[m]=="function"&&i[m];if(!x&&h)return h(y,!0);if(n)return n(y,!0);if(u&&typeof y=="string")return u(y);var v=Error("Cannot find module '"+y+"'");throw v.code="MODULE_NOT_FOUND",v}j.resolve=function(E){var S=a[y][1][E];return S??E},j.cache={};var w=l[y]=new d.Module(y);a[y][0].call(w.exports,j,w,w.exports,i)}return l[y].exports;function j(E){var S=j.resolve(E);return S===!1?{}:d(S)}}d.isParcelRequire=!0,d.Module=function(y){this.id=y,this.bundle=d,this.require=u,this.exports={}},d.modules=a,d.cache=l,d.parent=n,d.distDir=void 0,d.publicUrl=void 0,d.devServer=void 0,d.i=s,d.register=function(y,x){a[y]=[function(h,v){v.exports=x},{}]},Object.defineProperty(d,"root",{get:function(){return i[m]}}),i[m]=d;for(var f=0;fQ.call(this,this)),R.DEBUG){let et=U=>console.log(`[ART.${this.id}] -> ${U}`);et(`Version@${R.version}`);for(let U=0;Uet(`Event@${ct.type}`))}Y.push(this)}static get instances(){return Y}static get version(){return n.version}static get config(){return l.default}static get utils(){return N}static get scheme(){return z.default}static get Emitter(){return J.default}static get validator(){return i.default}static get kindOf(){return i.default.kindOf}static get html(){return K.default.html}static get option(){return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:X=>X},moreVideoAttr:{controls:!1,preload:N.isSafari?"auto":"metadata"},i18n:{},icons:{},cssVar:{},customType:{},lang:navigator==null?void 0:navigator.language.toLowerCase()}}get proxy(){return this.events.proxy}get query(){return this.template.query}get video(){return this.template.$video}destroy(X=!0){R.REMOVE_SRC_WHEN_DESTROY&&this.video.removeAttribute("src"),this.events.destroy(),this.template.destroy(X),Y.splice(Y.indexOf(this),1),this.isDestroy=!0,this.emit("destroy")}}o.default=R,R.STYLE=c.default,R.DEBUG=!1,R.CONTEXTMENU=!0,R.NOTICE_TIME=2e3,R.SETTING_WIDTH=250,R.SETTING_ITEM_WIDTH=200,R.SETTING_ITEM_HEIGHT=35,R.RESIZE_TIME=200,R.SCROLL_TIME=200,R.SCROLL_GAP=50,R.AUTO_PLAYBACK_MAX=10,R.AUTO_PLAYBACK_MIN=5,R.AUTO_PLAYBACK_TIMEOUT=3e3,R.RECONNECT_TIME_MAX=5,R.RECONNECT_SLEEP_TIME=1e3,R.CONTROL_HIDE_TIME=3e3,R.DBCLICK_TIME=300,R.DBCLICK_FULLSCREEN=!0,R.MOBILE_DBCLICK_PLAY=!0,R.MOBILE_CLICK_PLAY=!1,R.AUTO_ORIENTATION_TIME=200,R.INFO_LOOP_TIME=1e3,R.FAST_FORWARD_VALUE=3,R.FAST_FORWARD_TIME=1e3,R.TOUCH_MOVE_RATIO=.5,R.VOLUME_STEP=.1,R.SEEK_STEP=5,R.PLAYBACK_RATE=[.5,.75,1,1.25,1.5,2],R.ASPECT_RATIO=["default","4:3","16:9"],R.FLIP=["normal","horizontal","vertical"],R.FULLSCREEN_WEB_IN_BODY=!1,R.LOG_VERSION=!0,R.USE_RAF=!1,R.REMOVE_SRC_WHEN_DESTROY=!0,N.isBrowser&&(window.Artplayer=R,N.setStyleText("artplayer-style",c.default),setTimeout(()=>{R.LOG_VERSION&&console.log(`%c ArtPlayer %c ${R.version} %c https://artplayer.org`,"color: #fff; background: #5f5f5f","color: #fff; background: #4bc729","")},100))},{"bundle-text:./style/index.less":"2wh8D","option-validator":"g7VGh","../package.json":"lh3R5","./config":"eJfh8","./contextmenu":"9zso8","./control":"dp1yk","./events":"jmVSD","./hotkey":"dswts","./i18n":"d9ktO","./icons":"fFHY0","./info":"kZ0F8","./layer":"j9lbi","./loading":"bMjWd","./mask":"k1nkQ","./notice":"fPVaU","./player":"uR0Sw","./plugins":"cjxJL","./scheme":"biLjm","./setting":"bwLGT","./storage":"kwqbK","./subtitle":"k5613","./template":"fwOA1","./utils":"aBlEo","./utils/emitter":"4NM7P","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"2wh8D":[function(a,p,o,m){p.exports='.art-video-player{--art-theme:red;--art-font-color:#fff;--art-background-color:#000;--art-text-shadow-color:#00000080;--art-transition-duration:.2s;--art-padding:10px;--art-border-radius:3px;--art-progress-height:6px;--art-progress-color:#ffffff40;--art-hover-color:#ffffff40;--art-loaded-color:#ffffff40;--art-state-size:80px;--art-state-opacity:.8;--art-bottom-height:100px;--art-bottom-offset:20px;--art-bottom-gap:5px;--art-highlight-width:8px;--art-highlight-color:#ffffff80;--art-control-height:46px;--art-control-opacity:.75;--art-control-icon-size:36px;--art-control-icon-scale:1.1;--art-volume-height:120px;--art-volume-handle-size:14px;--art-lock-size:36px;--art-indicator-scale:0;--art-indicator-size:16px;--art-fullscreen-web-index:9999;--art-settings-icon-size:24px;--art-settings-max-height:300px;--art-selector-max-height:300px;--art-contextmenus-min-width:250px;--art-subtitle-font-size:20px;--art-subtitle-gap:5px;--art-subtitle-bottom:15px;--art-subtitle-border:#000;--art-widget-background:#000000d9;--art-tip-background:#000000b3;--art-scrollbar-size:4px;--art-scrollbar-background:#ffffff40;--art-scrollbar-background-hover:#ffffff80;--art-mini-progress-height:2px}.art-bg-cover{background-position:50%;background-repeat:no-repeat;background-size:cover}.art-bottom-gradient{background-image:linear-gradient(#0000,#0006,#000);background-position:bottom;background-repeat:repeat-x}.art-backdrop-filter{backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.art-video-player{zoom:1;text-align:left;user-select:none;box-sizing:border-box;width:100%;height:100%;color:var(--art-font-color);background-color:var(--art-background-color);text-shadow:0 0 2px var(--art-text-shadow-color);-webkit-tap-highlight-color:#0000;-ms-touch-action:manipulation;touch-action:manipulation;-ms-high-contrast-adjust:none;direction:ltr;outline:0;margin:0 auto;padding:0;font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,Roboto,Arial,sans-serif;font-size:14px;line-height:1.3;position:relative}.art-video-player *,.art-video-player :before,.art-video-player :after{box-sizing:border-box}.art-video-player ::-webkit-scrollbar{width:var(--art-scrollbar-size);height:var(--art-scrollbar-size)}.art-video-player ::-webkit-scrollbar-thumb{background-color:var(--art-scrollbar-background)}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:var(--art-scrollbar-background-hover)}.art-video-player img{vertical-align:top;max-width:100%}.art-video-player svg{fill:var(--art-font-color)}.art-video-player a{color:var(--art-font-color);text-decoration:none}.art-icon{justify-content:center;align-items:center;line-height:1;display:flex}.art-video-player.art-backdrop .art-contextmenus,.art-video-player.art-backdrop .art-info,.art-video-player.art-backdrop .art-settings,.art-video-player.art-backdrop .art-layer-auto-playback,.art-video-player.art-backdrop .art-selector-list,.art-video-player.art-backdrop .art-volume-inner{backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-video{z-index:10;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.art-poster{z-index:11;pointer-events:none;background-position:50%;background-repeat:no-repeat;background-size:cover;width:100%;height:100%;position:absolute;inset:0}.art-video-player .art-subtitle{z-index:20;text-align:center;pointer-events:none;justify-content:center;align-items:center;gap:var(--art-subtitle-gap);width:100%;bottom:var(--art-subtitle-bottom);font-size:var(--art-subtitle-font-size);transition:bottom var(--art-transition-duration)ease;text-shadow:var(--art-subtitle-border)1px 0 1px,var(--art-subtitle-border)0 1px 1px,var(--art-subtitle-border)-1px 0 1px,var(--art-subtitle-border)0 -1px 1px,var(--art-subtitle-border)1px 1px 1px,var(--art-subtitle-border)-1px -1px 1px,var(--art-subtitle-border)1px -1px 1px,var(--art-subtitle-border)-1px 1px 1px;flex-direction:column;padding:0 5%;display:none;position:absolute}.art-video-player.art-subtitle-show .art-subtitle{display:flex}.art-video-player.art-control-show .art-subtitle{bottom:calc(var(--art-control-height) + var(--art-subtitle-bottom))}.art-danmuku{z-index:30;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.art-video-player .art-layers{z-index:40;pointer-events:none;width:100%;height:100%;display:none;position:absolute;inset:0}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:flex}.art-video-player .art-mask{z-index:50;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;inset:0}.art-video-player .art-mask .art-state{opacity:0;width:var(--art-state-size);height:var(--art-state-size);transition:all var(--art-transition-duration)ease;justify-content:center;align-items:center;display:flex;transform:scale(2)}.art-video-player.art-mask-show .art-state{cursor:pointer;pointer-events:auto;opacity:var(--art-state-opacity);transform:scale(1)}.art-video-player.art-loading-show .art-state{display:none}.art-video-player .art-loading{z-index:70;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:none;position:absolute;inset:0}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player .art-bottom{z-index:60;opacity:0;pointer-events:none;width:100%;height:100%;padding:0 var(--art-padding);transition:all var(--art-transition-duration)ease;background-size:100% var(--art-bottom-height);background-image:linear-gradient(#0000,#0006,#000);background-position:bottom;background-repeat:repeat-x;flex-direction:column;justify-content:flex-end;display:flex;position:absolute;inset:0;overflow:hidden}.art-video-player .art-bottom .art-controls,.art-video-player .art-bottom .art-progress{transform:translateY(var(--art-bottom-offset));transition:transform var(--art-transition-duration)ease}.art-video-player.art-control-show .art-bottom,.art-video-player.art-hover .art-bottom{opacity:1}.art-video-player.art-control-show .art-bottom .art-controls,.art-video-player.art-hover .art-bottom .art-controls,.art-video-player.art-control-show .art-bottom .art-progress,.art-video-player.art-hover .art-bottom .art-progress{transform:translateY(0)}.art-bottom .art-progress{z-index:0;pointer-events:auto;padding-bottom:var(--art-bottom-gap);position:relative}.art-bottom .art-progress .art-control-progress{cursor:pointer;height:var(--art-progress-height);justify-content:center;align-items:center;display:flex;position:relative}.art-bottom .art-progress .art-control-progress .art-control-progress-inner{width:100%;height:50%;transition:height var(--art-transition-duration)ease;background-color:var(--art-progress-color);align-items:center;display:flex;position:relative}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover{z-index:0;background-color:var(--art-hover-color);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{z-index:10;background-color:var(--art-loaded-color);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{z-index:20;background-color:var(--art-theme);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{z-index:30;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{z-index:0;pointer-events:auto;width:100%;height:100%;transform:translateX(calc(var(--art-highlight-width)/-2));background-color:var(--art-highlight-color);position:absolute;inset:0 auto 0 0;width:var(--art-highlight-width)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{z-index:40;width:var(--art-indicator-size);height:var(--art-indicator-size);transform:scale(var(--art-indicator-scale));margin-left:calc(var(--art-indicator-size)/-2);transition:transform var(--art-transition-duration)ease;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;left:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon{pointer-events:none;width:100%;height:100%}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover{transform:scale(1.2)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active{transform:scale(1)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip{z-index:50;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);padding:3px 5px;font-size:12px;line-height:1;display:none;position:absolute;top:-25px;left:0}.art-bottom .art-progress .art-control-progress:hover .art-control-progress-inner{height:100%}.art-bottom .art-progress .art-control-thumbnails{bottom:calc(var(--art-bottom-gap) + 10px);border-radius:var(--art-border-radius);pointer-events:none;background-color:var(--art-widget-background);display:none;position:absolute;left:0;box-shadow:0 1px 3px #0003,0 1px 2px -1px #0003}.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{transform:scale(1)}.art-controls{z-index:10;pointer-events:auto;height:var(--art-control-height);justify-content:space-between;align-items:center;display:flex;position:relative}.art-controls .art-controls-left,.art-controls .art-controls-right{height:100%;display:flex}.art-controls .art-controls-center{flex:1;justify-content:center;align-items:center;height:100%;padding:0 10px;display:none}.art-controls .art-controls-right{justify-content:flex-end}.art-controls .art-control{cursor:pointer;white-space:nowrap;opacity:var(--art-control-opacity);min-height:var(--art-control-height);min-width:var(--art-control-height);transition:opacity var(--art-transition-duration)ease;flex-shrink:0;justify-content:center;align-items:center;display:flex}.art-controls .art-control .art-icon{height:var(--art-control-icon-size);width:var(--art-control-icon-size);transform:scale(var(--art-control-icon-scale));transition:transform var(--art-transition-duration)ease}.art-controls .art-control .art-icon:active{transform:scale(calc(var(--art-control-icon-scale)*.8))}.art-controls .art-control:hover{opacity:1}.art-control-volume{position:relative}.art-control-volume .art-volume-panel{text-align:center;cursor:default;opacity:0;pointer-events:none;left:0;right:0;bottom:var(--art-control-height);width:var(--art-control-height);height:var(--art-volume-height);transition:all var(--art-transition-duration)ease;justify-content:center;align-items:center;padding:0 5px;font-size:12px;display:flex;position:absolute;transform:translateY(10px)}.art-control-volume .art-volume-panel .art-volume-inner{border-radius:var(--art-border-radius);background-color:var(--art-widget-background);flex-direction:column;align-items:center;gap:10px;width:100%;height:100%;padding:10px 0 12px;display:flex}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{cursor:pointer;flex:1;justify-content:center;width:100%;display:flex;position:relative}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{border-radius:var(--art-border-radius);background-color:#ffffff40;justify-content:center;width:2px;display:flex;position:relative;overflow:hidden}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded{z-index:0;background-color:var(--art-theme);width:100%;height:100%;position:absolute;inset:0}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator{width:var(--art-volume-handle-size);height:var(--art-volume-handle-size);margin-top:calc(var(--art-volume-handle-size)/-2);background-color:var(--art-theme);transition:transform var(--art-transition-duration)ease;border-radius:100%;flex-shrink:0;position:absolute;transform:scale(1)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator{transform:scale(.9)}.art-control-volume:hover .art-volume-panel{opacity:1;pointer-events:auto;transform:translateY(0)}.art-video-player .art-notice{z-index:80;width:100%;height:auto;padding:var(--art-padding);pointer-events:none;display:none;position:absolute;inset:0 0 auto}.art-video-player .art-notice .art-notice-inner{border-radius:var(--art-border-radius);background-color:var(--art-tip-background);padding:5px;line-height:1;display:inline-flex}.art-video-player.art-notice-show .art-notice{display:flex}.art-video-player .art-contextmenus{z-index:120;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);min-width:var(--art-contextmenus-min-width);flex-direction:column;padding:5px 0;font-size:12px;display:none;position:absolute}.art-video-player .art-contextmenus .art-contextmenu{cursor:pointer;border-bottom:1px solid #ffffff1a;padding:10px 15px;display:flex}.art-video-player .art-contextmenus .art-contextmenu span{padding:0 8px}.art-video-player .art-contextmenus .art-contextmenu span:hover,.art-video-player .art-contextmenus .art-contextmenu span.art-current{color:var(--art-theme)}.art-video-player .art-contextmenus .art-contextmenu:hover{background-color:#ffffff1a}.art-video-player .art-contextmenus .art-contextmenu:last-child{border-bottom:none}.art-video-player.art-contextmenu-show .art-contextmenus{display:flex}.art-video-player .art-settings{z-index:90;border-radius:var(--art-border-radius);max-height:var(--art-settings-max-height);left:auto;right:var(--art-padding);bottom:var(--art-control-height);transition:all var(--art-transition-duration)ease;background-color:var(--art-widget-background);flex-direction:column;display:none;position:absolute;overflow:hidden auto}.art-video-player .art-settings .art-setting-panel{flex-direction:column;display:none}.art-video-player .art-settings .art-setting-panel.art-current{display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item{cursor:pointer;transition:background-color var(--art-transition-duration)ease;justify-content:space-between;align-items:center;padding:0 5px;display:flex;overflow:hidden}.art-video-player .art-settings .art-setting-panel .art-setting-item:hover{background-color:#ffffff1a}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current{color:var(--art-theme)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check{visibility:hidden;height:15px}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check{visibility:visible}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left{flex-shrink:0;justify-content:center;align-items:center;gap:5px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon{height:var(--art-settings-icon-size);width:var(--art-settings-icon-size);justify-content:center;align-items:center;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right{justify-content:center;align-items:center;gap:5px;font-size:12px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip{white-space:nowrap;color:#ffffff80}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon{justify-content:center;align-items:center;min-width:32px;height:24px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{appearance:none;background-color:#fff3;outline:none;width:80px;height:3px}.art-video-player .art-settings .art-setting-panel .art-setting-item-back{border-bottom:1px solid #ffffff1a}.art-video-player.art-setting-show .art-settings{display:flex}.art-video-player .art-info{left:var(--art-padding);top:var(--art-padding);z-index:100;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);padding:10px;font-size:12px;display:none;position:absolute}.art-video-player .art-info .art-info-panel{flex-direction:column;gap:5px;display:flex}.art-video-player .art-info .art-info-panel .art-info-item{align-items:center;gap:5px;display:flex}.art-video-player .art-info .art-info-panel .art-info-item .art-info-title{text-align:right;width:100px}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{text-overflow:ellipsis;white-space:nowrap;user-select:all;width:250px;overflow:hidden}.art-video-player .art-info .art-info-close{cursor:pointer;position:absolute;top:5px;right:5px}.art-video-player.art-info-show .art-info{display:flex}.art-hide-cursor *{cursor:none!important}.art-video-player[data-aspect-ratio]{overflow:hidden}.art-video-player[data-aspect-ratio] .art-video{object-fit:fill;box-sizing:content-box}.art-fullscreen{--art-progress-height:8px;--art-indicator-size:20px;--art-control-height:60px;--art-control-icon-scale:1.3}.art-fullscreen-web{--art-progress-height:8px;--art-indicator-size:20px;--art-control-height:60px;--art-control-icon-scale:1.3;z-index:var(--art-fullscreen-web-index);width:100%;height:100%;position:fixed;inset:0}.art-mini-popup{z-index:9999;border-radius:var(--art-border-radius);cursor:move;user-select:none;background:#000;width:320px;height:180px;transition:opacity .2s;position:fixed;overflow:hidden;box-shadow:0 0 5px #00000080}.art-mini-popup svg{fill:#fff}.art-mini-popup .art-video{pointer-events:none}.art-mini-popup .art-mini-close{z-index:20;cursor:pointer;opacity:0;transition:opacity .2s;position:absolute;top:10px;right:10px}.art-mini-popup .art-mini-state{z-index:30;pointer-events:none;opacity:0;background-color:#00000040;justify-content:center;align-items:center;width:100%;height:100%;transition:opacity .2s;display:flex;position:absolute;inset:0}.art-mini-popup .art-mini-state .art-icon{opacity:.75;cursor:pointer;pointer-events:auto;transition:transform .2s;transform:scale(3)}.art-mini-popup .art-mini-state .art-icon:active{transform:scale(2.5)}.art-mini-popup.art-mini-dragging{opacity:.9}.art-mini-popup:hover .art-mini-close,.art-mini-popup:hover .art-mini-state{opacity:1}.art-video-player[data-flip=horizontal] .art-video{transform:scaleX(-1)}.art-video-player[data-flip=vertical] .art-video{transform:scaleY(-1)}.art-video-player .art-layer-lock{height:var(--art-lock-size);width:var(--art-lock-size);top:50%;left:var(--art-padding);background-color:var(--art-tip-background);border-radius:50%;justify-content:center;align-items:center;display:none;position:absolute;transform:translateY(-50%)}.art-video-player .art-layer-auto-playback{border-radius:var(--art-border-radius);left:var(--art-padding);bottom:calc(var(--art-control-height) + var(--art-bottom-gap) + 10px);background-color:var(--art-widget-background);align-items:center;gap:10px;padding:10px;line-height:1;display:none;position:absolute}.art-video-player .art-layer-auto-playback .art-auto-playback-close{cursor:pointer;justify-content:center;align-items:center;display:flex}.art-video-player .art-layer-auto-playback .art-auto-playback-close svg{width:15px;height:15px;fill:var(--art-theme)}.art-video-player .art-layer-auto-playback .art-auto-playback-jump{color:var(--art-theme);cursor:pointer}.art-video-player.art-lock .art-subtitle{bottom:var(--art-subtitle-bottom)!important}.art-video-player.art-mini-progress-bar .art-bottom,.art-video-player.art-lock .art-bottom{opacity:1;background-image:none;padding:0}.art-video-player.art-mini-progress-bar .art-bottom .art-controls,.art-video-player.art-lock .art-bottom .art-controls,.art-video-player.art-mini-progress-bar .art-bottom .art-progress,.art-video-player.art-lock .art-bottom .art-progress{transform:translateY(calc(var(--art-control-height) + var(--art-bottom-gap) + var(--art-progress-height)/4))}.art-video-player.art-mini-progress-bar .art-bottom .art-progress-indicator,.art-video-player.art-lock .art-bottom .art-progress-indicator{display:none!important}.art-video-player.art-control-show .art-layer-lock{display:flex}.art-control-selector{justify-content:center;display:flex;position:relative}.art-control-selector .art-selector-list{text-align:center;border-radius:var(--art-border-radius);opacity:0;pointer-events:none;bottom:var(--art-control-height);max-height:var(--art-selector-max-height);background-color:var(--art-widget-background);transition:all var(--art-transition-duration)ease;flex-direction:column;align-items:center;display:flex;position:absolute;overflow:hidden auto;transform:translateY(10px)}.art-control-selector .art-selector-list .art-selector-item{flex-shrink:0;justify-content:center;align-items:center;width:100%;padding:10px 15px;line-height:1;display:flex}.art-control-selector .art-selector-list .art-selector-item:hover{background-color:#ffffff1a}.art-control-selector .art-selector-list .art-selector-item:hover,.art-control-selector .art-selector-list .art-selector-item.art-current{color:var(--art-theme)}.art-control-selector:hover .art-selector-list{opacity:1;pointer-events:auto;transform:translateY(0)}[class*=hint--]{font-style:normal;display:inline-block;position:relative}[class*=hint--]:before,[class*=hint--]:after{visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;transition:all .3s;position:absolute;transform:translate(0,0)}[class*=hint--]:hover:before,[class*=hint--]:hover:after{visibility:visible;opacity:1;transition-delay:.1s}[class*=hint--]:before{content:"";z-index:1000001;background:0 0;border:6px solid #0000;position:absolute}[class*=hint--]:after{color:#fff;white-space:nowrap;background:#000;padding:8px 10px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;line-height:12px}[class*=hint--][aria-label]:after{content:attr(aria-label)}[class*=hint--][data-hint]:after{content:attr(data-hint)}[aria-label=""]:before,[aria-label=""]:after,[data-hint=""]:before,[data-hint=""]:after{display:none!important}.hint--top-left:before,.hint--top-right:before,.hint--top:before{border-top-color:#000}.hint--bottom-left:before,.hint--bottom-right:before,.hint--bottom:before{border-bottom-color:#000}.hint--left:before{border-left-color:#000}.hint--right:before{border-right-color:#000}.hint--top:before{margin-bottom:-11px}.hint--top:before,.hint--top:after{bottom:100%;left:50%}.hint--top:before{left:calc(50% - 6px)}.hint--top:after{transform:translate(-50%)}.hint--top:hover:before{transform:translateY(-8px)}.hint--top:hover:after{transform:translate(-50%)translateY(-8px)}.hint--bottom:before{margin-top:-11px}.hint--bottom:before,.hint--bottom:after{top:100%;left:50%}.hint--bottom:before{left:calc(50% - 6px)}.hint--bottom:after{transform:translate(-50%)}.hint--bottom:hover:before{transform:translateY(8px)}.hint--bottom:hover:after{transform:translate(-50%)translateY(8px)}.hint--right:before{margin-bottom:-6px;margin-left:-11px}.hint--right:after{margin-bottom:-14px}.hint--right:before,.hint--right:after{bottom:50%;left:100%}.hint--right:hover:before,.hint--right:hover:after{transform:translate(8px)}.hint--left:before{margin-bottom:-6px;margin-right:-11px}.hint--left:after{margin-bottom:-14px}.hint--left:before,.hint--left:after{bottom:50%;right:100%}.hint--left:hover:before,.hint--left:hover:after{transform:translate(-8px)}.hint--top-left:before{margin-bottom:-11px}.hint--top-left:before,.hint--top-left:after{bottom:100%;left:50%}.hint--top-left:before{left:calc(50% - 6px)}.hint--top-left:after{margin-left:12px;transform:translate(-100%)}.hint--top-left:hover:before{transform:translateY(-8px)}.hint--top-left:hover:after{transform:translate(-100%)translateY(-8px)}.hint--top-right:before{margin-bottom:-11px}.hint--top-right:before,.hint--top-right:after{bottom:100%;left:50%}.hint--top-right:before{left:calc(50% - 6px)}.hint--top-right:after{margin-left:-12px;transform:translate(0)}.hint--top-right:hover:before,.hint--top-right:hover:after{transform:translateY(-8px)}.hint--bottom-left:before{margin-top:-11px}.hint--bottom-left:before,.hint--bottom-left:after{top:100%;left:50%}.hint--bottom-left:before{left:calc(50% - 6px)}.hint--bottom-left:after{margin-left:12px;transform:translate(-100%)}.hint--bottom-left:hover:before{transform:translateY(8px)}.hint--bottom-left:hover:after{transform:translate(-100%)translateY(8px)}.hint--bottom-right:before{margin-top:-11px}.hint--bottom-right:before,.hint--bottom-right:after{top:100%;left:50%}.hint--bottom-right:before{left:calc(50% - 6px)}.hint--bottom-right:after{margin-left:-12px;transform:translate(0)}.hint--bottom-right:hover:before,.hint--bottom-right:hover:after{transform:translateY(8px)}.hint--small:after,.hint--medium:after,.hint--large:after{white-space:normal;word-wrap:break-word;line-height:1.4em}.hint--small:after{width:80px}.hint--medium:after{width:150px}.hint--large:after{width:300px}[class*=hint--]:after{text-shadow:0 -1px #000;box-shadow:4px 4px 8px #0000004d}.hint--error:after{text-shadow:0 -1px #592726;background-color:#b34e4d}.hint--error.hint--top-left:before,.hint--error.hint--top-right:before,.hint--error.hint--top:before{border-top-color:#b34e4d}.hint--error.hint--bottom-left:before,.hint--error.hint--bottom-right:before,.hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.hint--error.hint--left:before{border-left-color:#b34e4d}.hint--error.hint--right:before{border-right-color:#b34e4d}.hint--warning:after{text-shadow:0 -1px #6c5328;background-color:#c09854}.hint--warning.hint--top-left:before,.hint--warning.hint--top-right:before,.hint--warning.hint--top:before{border-top-color:#c09854}.hint--warning.hint--bottom-left:before,.hint--warning.hint--bottom-right:before,.hint--warning.hint--bottom:before{border-bottom-color:#c09854}.hint--warning.hint--left:before{border-left-color:#c09854}.hint--warning.hint--right:before{border-right-color:#c09854}.hint--info:after{text-shadow:0 -1px #1a3c4d;background-color:#3986ac}.hint--info.hint--top-left:before,.hint--info.hint--top-right:before,.hint--info.hint--top:before{border-top-color:#3986ac}.hint--info.hint--bottom-left:before,.hint--info.hint--bottom-right:before,.hint--info.hint--bottom:before{border-bottom-color:#3986ac}.hint--info.hint--left:before{border-left-color:#3986ac}.hint--info.hint--right:before{border-right-color:#3986ac}.hint--success:after{text-shadow:0 -1px #1a321a;background-color:#458746}.hint--success.hint--top-left:before,.hint--success.hint--top-right:before,.hint--success.hint--top:before{border-top-color:#458746}.hint--success.hint--bottom-left:before,.hint--success.hint--bottom-right:before,.hint--success.hint--bottom:before{border-bottom-color:#458746}.hint--success.hint--left:before{border-left-color:#458746}.hint--success.hint--right:before{border-right-color:#458746}.hint--always:after,.hint--always:before{opacity:1;visibility:visible}.hint--always.hint--top:before{transform:translateY(-8px)}.hint--always.hint--top:after{transform:translate(-50%)translateY(-8px)}.hint--always.hint--top-left:before{transform:translateY(-8px)}.hint--always.hint--top-left:after{transform:translate(-100%)translateY(-8px)}.hint--always.hint--top-right:before,.hint--always.hint--top-right:after{transform:translateY(-8px)}.hint--always.hint--bottom:before{transform:translateY(8px)}.hint--always.hint--bottom:after{transform:translate(-50%)translateY(8px)}.hint--always.hint--bottom-left:before{transform:translateY(8px)}.hint--always.hint--bottom-left:after{transform:translate(-100%)translateY(8px)}.hint--always.hint--bottom-right:before,.hint--always.hint--bottom-right:after{transform:translateY(8px)}.hint--always.hint--left:before,.hint--always.hint--left:after{transform:translate(-8px)}.hint--always.hint--right:before,.hint--always.hint--right:after{transform:translate(8px)}.hint--rounded:after{border-radius:4px}.hint--no-animate:before,.hint--no-animate:after{transition-duration:0s}.hint--bounce:before,.hint--bounce:after{-webkit-transition:opacity .3s,visibility .3s,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s,visibility .3s,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s,visibility .3s,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.hint--no-shadow:before,.hint--no-shadow:after{text-shadow:initial;box-shadow:initial}.hint--no-arrow:before{display:none}.art-video-player.art-mobile{--art-bottom-gap:10px;--art-control-height:38px;--art-control-icon-scale:1;--art-state-size:60px;--art-settings-max-height:180px;--art-selector-max-height:180px;--art-indicator-scale:1;--art-control-opacity:1}.art-video-player.art-mobile .art-controls-left{margin-left:calc(var(--art-padding)/-1)}.art-video-player.art-mobile .art-controls-right{margin-right:calc(var(--art-padding)/-1)}'},{}],g7VGh:[function(a,p,o,m){p.exports=function(){function e(l){return(e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(u){return typeof u}:function(u){return u&&typeof Symbol=="function"&&u.constructor===Symbol&&u!==Symbol.prototype?"symbol":typeof u})(l)}var t=Object.prototype.toString,c=function(l){if(l===void 0)return"undefined";if(l===null)return"null";var u=e(l);if(u==="boolean")return"boolean";if(u==="string")return"string";if(u==="number")return"number";if(u==="symbol")return"symbol";if(u==="function")return r(l)==="GeneratorFunction"?"generatorfunction":"function";if(Array.isArray?Array.isArray(l):l instanceof Array)return"array";if(l.constructor&&typeof l.constructor.isBuffer=="function"&&l.constructor.isBuffer(l))return"buffer";if(function(d){try{if(typeof d.length=="number"&&typeof d.callee=="function")return!0}catch(f){if(f.message.indexOf("callee")!==-1)return!0}return!1}(l))return"arguments";if(l instanceof Date||typeof l.toDateString=="function"&&typeof l.getDate=="function"&&typeof l.setDate=="function")return"date";if(l instanceof Error||typeof l.message=="string"&&l.constructor&&typeof l.constructor.stackTraceLimit=="number")return"error";if(l instanceof RegExp||typeof l.flags=="string"&&typeof l.ignoreCase=="boolean"&&typeof l.multiline=="boolean"&&typeof l.global=="boolean")return"regexp";switch(r(l)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(typeof l.throw=="function"&&typeof l.return=="function"&&typeof l.next=="function")return"generator";switch(u=t.call(l)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return u.slice(8,-1).toLowerCase().replace(/\s/g,"")};function r(l){return l.constructor?l.constructor.name:null}function i(l,u){var d=2","license":"MIT","homepage":"https://artplayer.org","repository":{"type":"git","url":"git+https://github.com/zhw2590582/ArtPlayer.git"},"bugs":{"url":"https://github.com/zhw2590582/ArtPlayer/issues"},"keywords":["html5","video","player"],"exports":{".":{"types":"./types/artplayer.d.ts","import":"./dist/artplayer.mjs","require":"./dist/artplayer.js"},"./legacy":{"types":"./types/artplayer.d.ts","import":"./dist/artplayer.legacy.js","require":"./dist/artplayer.legacy.js"},"./i18n/*":{"types":"./types/i18n.d.ts","import":"./dist/i18n/*.mjs","require":"./dist/i18n/*.js"}},"main":"./dist/artplayer.js","module":"./dist/artplayer.mjs","types":"./types/artplayer.d.ts","typesVersions":{"*":{"i18n/*":["types/i18n.d.ts"],"legacy":["types/artplayer.d.ts"]}},"legacy":"./dist/artplayer.legacy.js","browserslist":"last 1 Chrome version","dependencies":{"option-validator":"^2.0.6"}}')},{}],eJfh8:[function(a,p,o,m){a("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o),o.default={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webkitSupportsFullscreen","webkitDisplayingFullscreen","onenterpictureinpicture","onleavepictureinpicture","disablePictureInPicture","cancelVideoFrameCallback","requestVideoFrameCallback","getVideoPlaybackQuality","requestPictureInPicture","webkitEnterFullScreen","webkitEnterFullscreen","webkitExitFullScreen","webkitExitFullscreen"]}},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],loqXi:[function(a,p,o,m){o.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},o.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},o.exportAll=function(e,t){return Object.keys(e).forEach(function(c){c==="default"||c==="__esModule"||Object.prototype.hasOwnProperty.call(t,c)||Object.defineProperty(t,c,{enumerable:!0,get:function(){return e[c]}})}),t},o.export=function(e,t,c){Object.defineProperty(e,t,{enumerable:!0,get:c})}},{}],"9zso8":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("../utils"),c=a("../utils/component"),r=e.interopDefault(c),i=a("./aspectRatio"),n=e.interopDefault(i),s=a("./close"),l=e.interopDefault(s),u=a("./flip"),d=e.interopDefault(u),f=a("./info"),g=e.interopDefault(f),y=a("./playbackRate"),x=e.interopDefault(y),h=a("./version"),v=e.interopDefault(h);class w extends r.default{constructor(E){super(E),this.name="contextmenu",this.$parent=E.template.$contextmenu,t.isMobile||this.init()}init(){let{option:E,proxy:S,template:{$player:$,$contextmenu:C}}=this.art;E.playbackRate&&this.add((0,x.default)({name:"playbackRate",index:10})),E.aspectRatio&&this.add((0,n.default)({name:"aspectRatio",index:20})),E.flip&&this.add((0,d.default)({name:"flip",index:30})),this.add((0,g.default)({name:"info",index:40})),this.add((0,v.default)({name:"version",index:50})),this.add((0,l.default)({name:"close",index:60}));for(let I=0;I{if(!this.art.constructor.CONTEXTMENU)return;I.preventDefault(),this.show=!0;let L=I.clientX,A=I.clientY,{height:k,width:b,left:T,top:F}=(0,t.getRect)($),{height:D,width:M}=(0,t.getRect)(C),q=L-T,O=A-F;L+M>T+b&&(q=b-M),A+D>F+k&&(O=k-D),(0,t.setStyles)(C,{top:`${O}px`,left:`${q}px`})}),S($,"click",I=>{(0,t.includeFromEvent)(I,C)||(this.show=!1)}),this.art.on("blur",()=>{this.show=!1})}}o.default=w},{"../utils":"aBlEo","../utils/component":"idCEj","./aspectRatio":"6XHP2","./close":"eF6AX","./flip":"7Wg1P","./info":"fjRnU","./playbackRate":"hm1DY","./version":"aJBeL","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],aBlEo:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("./compatibility");e.exportAll(t,o);var c=a("./dom");e.exportAll(c,o);var r=a("./error");e.exportAll(r,o);var i=a("./file");e.exportAll(i,o);var n=a("./format");e.exportAll(n,o);var s=a("./property");e.exportAll(s,o);var l=a("./subtitle");e.exportAll(l,o);var u=a("./time");e.exportAll(u,o)},{"./compatibility":"jg0yq","./dom":"eANXw","./error":"4FwTI","./file":"i2JbS","./format":"dy9GH","./property":"jY49c","./subtitle":"ke7ox","./time":"f7gsx","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jg0yq:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"userAgent",()=>t),e.export(o,"isSafari",()=>c),e.export(o,"isIOS",()=>r),e.export(o,"isIOS13",()=>i),e.export(o,"isMobile",()=>n),e.export(o,"isBrowser",()=>s);let t=(globalThis==null?void 0:globalThis.CUSTOM_USER_AGENT)??(typeof navigator<"u"?navigator.userAgent:""),c=/^(?:(?!chrome|android).)*safari/i.test(t),r=/iPad|iPhone|iPod/i.test(t)&&!window.MSStream,i=r||t.includes("Macintosh")&&navigator.maxTouchPoints>=1,n=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(t)||i,s=typeof window<"u"&&typeof document<"u"},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],eANXw:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"query",()=>c),e.export(o,"queryAll",()=>r),e.export(o,"addClass",()=>i),e.export(o,"removeClass",()=>n),e.export(o,"hasClass",()=>s),e.export(o,"append",()=>l),e.export(o,"remove",()=>u),e.export(o,"setStyle",()=>d),e.export(o,"setStyles",()=>f),e.export(o,"getStyle",()=>g),e.export(o,"siblings",()=>y),e.export(o,"inverseClass",()=>x),e.export(o,"tooltip",()=>h),e.export(o,"isInViewport",()=>v),e.export(o,"includeFromEvent",()=>w),e.export(o,"replaceElement",()=>j),e.export(o,"createElement",()=>E),e.export(o,"getIcon",()=>S),e.export(o,"setStyleText",()=>$),e.export(o,"supportsFlex",()=>C),e.export(o,"getRect",()=>I),e.export(o,"loadImg",()=>L),e.export(o,"getComposedPath",()=>A);var t=a("./compatibility");function c(k,b=document){return b.querySelector(k)}function r(k,b=document){return Array.from(b.querySelectorAll(k))}function i(k,b){return k.classList.add(b)}function n(k,b){return k.classList.remove(b)}function s(k,b){return k.classList.contains(b)}function l(k,b){return b instanceof Element?k.appendChild(b):k.insertAdjacentHTML("beforeend",String(b)),k.lastElementChild||k.lastChild}function u(k){return k.parentNode.removeChild(k)}function d(k,b,T){return k.style[b]=T,k}function f(k,b){for(let T in b)d(k,T,b[T]);return k}function g(k,b,T=!0){let F=window.getComputedStyle(k,null).getPropertyValue(b);return T?Number.parseFloat(F):F}function y(k){return Array.from(k.parentElement.children).filter(b=>b!==k)}function x(k,b){y(k).forEach(T=>n(T,b)),i(k,b)}function h(k,b,T="top"){t.isMobile||(k.setAttribute("aria-label",b),i(k,"hint--rounded"),i(k,`hint--${T}`))}function v(k,b=0){let T=k.getBoundingClientRect(),F=window.innerHeight||document.documentElement.clientHeight,D=window.innerWidth||document.documentElement.clientWidth,M=T.top-b<=F&&T.top+T.height+b>=0,q=T.left-b<=D+b&&T.left+T.width+b>=0;return M&&q}function w(k,b){return A(k).includes(b)}function j(k,b){return b.parentNode.replaceChild(k,b),k}function E(k){return document.createElement(k)}function S(k="",b=""){let T=E("i");return i(T,"art-icon"),i(T,`art-icon-${k}`),l(T,b),T}function $(k,b){let T=document.getElementById(k);T||((T=document.createElement("style")).id=k,document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(T)}):(document.head||document.documentElement).appendChild(T)),T.textContent=b}function C(){let k=document.createElement("div");return k.style.display="flex",k.style.display==="flex"}function I(k){return k.getBoundingClientRect()}function L(k,b){return new Promise((T,F)=>{let D=new Image;D.onload=function(){if(b&&b!==1){let M=document.createElement("canvas"),q=M.getContext("2d");M.width=D.width*b,M.height=D.height*b,q.drawImage(D,0,0,M.width,M.height),M.toBlob(O=>{let P=URL.createObjectURL(O),H=new Image;H.onload=function(){T(H)},H.onerror=function(){URL.revokeObjectURL(P),F(Error(`Image load failed: ${k}`))},H.src=P})}else T(D)},D.onerror=function(){F(Error(`Image load failed: ${k}`))},D.src=k})}function A(k){if(k.composedPath)return k.composedPath();let b=[],T=k.target;for(;T;)b.push(T),T=T.parentNode;return b.includes(window)||window===void 0||b.push(window),b}},{"./compatibility":"jg0yq","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"4FwTI":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"ArtPlayerError",()=>t),e.export(o,"errorHandle",()=>c);class t extends Error{constructor(i,n){super(i),typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,n||this.constructor),this.name="ArtPlayerError"}}function c(r,i){if(!r)throw new t(i);return r}},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],i2JbS:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(c,r){let i=document.createElement("a");i.style.display="none",i.href=c,i.download=r,document.body.appendChild(i),i.click(),document.body.removeChild(i)}e.defineInteropFlag(o),e.export(o,"getExt",()=>function c(r){return r.includes("?")?c(r.split("?")[0]):r.includes("#")?c(r.split("#")[0]):r.trim().toLowerCase().split(".").pop()}),e.export(o,"download",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],dy9GH:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(s,l,u){return Math.max(Math.min(s,Math.max(l,u)),Math.min(l,u))}function c(s){return s.charAt(0).toUpperCase()+s.slice(1)}function r(s){if(!s)return"00:00";let l=Math.floor(s/3600),u=Math.floor((s-3600*l)/60),d=Math.floor(s-3600*l-60*u);return(l>0?[l,u,d]:[u,d]).map(f=>f<10?`0${f}`:String(f)).join(":")}function i(s){return s.replace(/[&<>'"]/g,l=>({"&":"&","<":"<",">":">","'":"'",'"':"""})[l]||l)}function n(s){let l={"&":"&","<":"<",">":">","'":"'",""":'"'},u=RegExp(`(${Object.keys(l).join("|")})`,"g");return s.replace(u,d=>l[d]||d)}e.defineInteropFlag(o),e.export(o,"clamp",()=>t),e.export(o,"capitalize",()=>c),e.export(o,"secondToTime",()=>r),e.export(o,"escape",()=>i),e.export(o,"unescape",()=>n)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jY49c:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"def",()=>t),e.export(o,"has",()=>r),e.export(o,"get",()=>i),e.export(o,"mergeDeep",()=>function n(...s){let l=u=>u&&typeof u=="object"&&!Array.isArray(u);return s.reduce((u,d)=>(Object.keys(d).forEach(f=>{let g=u[f],y=d[f];Array.isArray(g)&&Array.isArray(y)?u[f]=g.concat(...y):l(g)&&l(y)?u[f]=n(g,y):u[f]=y}),u),{})});let t=Object.defineProperty,{hasOwnProperty:c}=Object.prototype;function r(n,s){return c.call(n,s)}function i(n,s){return Object.getOwnPropertyDescriptor(n,s)}},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],ke7ox:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(i){return`WEBVTT \r \r -`.concat(i.replace(/(\d\d:\d\d:\d\d)[,.](\d+)/g,(n,l,s)=>{let d=s.slice(0,3);return s.length===1&&(d=`${s}00`),s.length===2&&(d=`${s}0`),`${l},${d}`}).replace(/\{\\([ibu])\}/g,"").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").replace(/\{[\s\S]*?\}/g,"").concat(`\r +`.concat(i.replace(/(\d\d:\d\d:\d\d)[,.](\d+)/g,(n,s,l)=>{let u=l.slice(0,3);return l.length===1&&(u=`${l}00`),l.length===2&&(u=`${l}0`),`${s},${u}`}).replace(/\{\\([ibu])\}/g,"").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").replace(/\{[\s\S]*?\}/g,"").concat(`\r \r -`))}function c(i){return URL.createObjectURL(new Blob([i],{type:"text/vtt"}))}function r(i){let n=RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i");function l(s=""){return s.split(/[:.]/).map((d,f,p)=>{if(f===p.length-1){if(d.length===1)return`.${d}00`;if(d.length===2)return`.${d}0`}else if(d.length===1)return(f===0?"0":":0")+d;return f===0?d:f===p.length-1?`.${d}`:`:${d}`}).join("")}return`WEBVTT ${i.split(/\r?\n/).map(s=>{let d=s.match(n);return d?{start:l(d[1].trim()),end:l(d[2].trim()),text:d[5].replace(/\{[\s\S]*?\}/g,"").replace(/(\\N)/g,` -`).trim().split(/\r?\n/).map(f=>f.trim()).join(` -`)}:null}).filter(s=>s).map((s,d)=>s?`${d+1} ${s.start} --> ${s.end} ${s.text}`:"").filter(s=>s.trim()).join(` +`))}function c(i){return URL.createObjectURL(new Blob([i],{type:"text/vtt"}))}function r(i){let n=RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i");function s(l=""){return l.split(/[:.]/).map((u,d,f)=>{if(d===f.length-1){if(u.length===1)return`.${u}00`;if(u.length===2)return`.${u}0`}else if(u.length===1)return(d===0?"0":":0")+u;return d===0?u:d===f.length-1?`.${u}`:`:${u}`}).join("")}return`WEBVTT ${i.split(/\r?\n/).map(l=>{let u=l.match(n);return u?{start:s(u[1].trim()),end:s(u[2].trim()),text:u[5].replace(/\{[\s\S]*?\}/g,"").replace(/(\\N)/g,` +`).trim().split(/\r?\n/).map(d=>d.trim()).join(` +`)}:null}).filter(l=>l).map((l,u)=>l?`${u+1} ${l.start} --> ${l.end} ${l.text}`:"").filter(l=>l.trim()).join(` -`)}`}e.defineInteropFlag(o),e.export(o,"srtToVtt",()=>t),e.export(o,"vttToBlob",()=>c),e.export(o,"assToVtt",()=>r)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],f7gsx:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(i=0){return new Promise(n=>setTimeout(n,i))}function c(i,n){let l;return function(...s){let d=()=>(l=null,i.apply(this,s));clearTimeout(l),l=setTimeout(d,n)}}function r(i,n){let l=!1;return function(...s){l||(i.apply(this,s),l=!0,setTimeout(()=>{l=!1},n))}}e.defineInteropFlag(o),e.export(o,"sleep",()=>t),e.export(o,"debounce",()=>c),e.export(o,"throttle",()=>r)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],idCEj:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("option-validator"),c=e.interopDefault(t),r=a("../scheme"),i=a("./dom"),n=a("./error");o.default=class{constructor(l){this.id=0,this.art=l,this.cache=new Map,this.add=this.add.bind(this),this.remove=this.remove.bind(this),this.update=this.update.bind(this)}get show(){return(0,i.hasClass)(this.art.template.$player,`art-${this.name}-show`)}set show(l){let{$player:s}=this.art.template,d=`art-${this.name}-show`;l?(0,i.addClass)(s,d):(0,i.removeClass)(s,d),this.art.emit(this.name,l)}toggle(){this.show=!this.show}add(l){let s=typeof l=="function"?l(this.art):l;if(s.html=s.html||"",(0,c.default)(s,r.ComponentOption),!this.$parent||!this.name||s.disable)return;let d=s.name||`${this.name}${this.id}`,f=this.cache.get(d);(0,n.errorHandle)(!f,`Can't add an existing [${d}] to the [${this.name}]`),this.id+=1;let p=(0,i.createElement)("div");(0,i.addClass)(p,`art-${this.name}`),(0,i.addClass)(p,`art-${this.name}-${d}`);let g=Array.from(this.$parent.children);p.dataset.index=s.index||this.id;let v=g.find(m=>Number(m.dataset.index)>=Number(p.dataset.index));v?v.insertAdjacentElement("beforebegin",p):(0,i.append)(this.$parent,p),s.html&&(0,i.append)(p,s.html),s.style&&(0,i.setStyles)(p,s.style),s.tooltip&&(0,i.tooltip)(p,s.tooltip);let x=[];if(s.click){let m=this.art.events.proxy(p,"click",y=>{y.preventDefault(),s.click.call(this.art,this,y)});x.push(m)}return s.selector&&["left","right"].includes(s.position)&&this.selector(s,p,x),this[d]=p,this.cache.set(d,{$ref:p,events:x,option:s}),s.mounted&&s.mounted.call(this.art,p),p}remove(l){let s=this.cache.get(l);(0,n.errorHandle)(s,`Can't find [${l}] from the [${this.name}]`),s.option.beforeUnmount&&s.option.beforeUnmount.call(this.art,s.$ref);for(let d=0;df);var t=a("../utils");let c="array",r="boolean",i="string",n="number",l="object",s="function";function d(p,g,v){return(0,t.errorHandle)(g===i||g===n||p instanceof Element,`${v.join(".")} require '${i}' or 'Element' type`)}let f={html:d,disable:`?${r}`,name:`?${i}`,index:`?${n}`,style:`?${l}`,click:`?${s}`,mounted:`?${s}`,tooltip:`?${i}|${n}`,width:`?${n}`,selector:`?${c}`,onSelect:`?${s}`,switch:`?${r}`,onSwitch:`?${s}`,range:`?${c}`,onRange:`?${s}`,onChange:`?${s}`};o.default={id:i,container:d,url:i,poster:i,type:i,theme:i,lang:i,volume:n,isLive:r,muted:r,autoplay:r,autoSize:r,autoMini:r,loop:r,flip:r,playbackRate:r,aspectRatio:r,screenshot:r,setting:r,hotkey:r,pip:r,mutex:r,backdrop:r,fullscreen:r,fullscreenWeb:r,subtitleOffset:r,miniProgressBar:r,useSSR:r,playsInline:r,lock:r,gesture:r,fastForward:r,autoPlayback:r,autoOrientation:r,airplay:r,proxy:`?${s}`,plugins:[s],layers:[f],contextmenu:[f],settings:[f],controls:[{...f,position:(p,g,v)=>{let x=["top","left","right"];return(0,t.errorHandle)(x.includes(p),`${v.join(".")} only accept ${x.toString()} as parameters`)}}],quality:[{default:`?${r}`,html:i,url:i}],highlight:[{time:n,text:i}],thumbnails:{url:i,number:n,column:n,width:n,height:n,scale:n},subtitle:{url:i,name:i,type:i,style:l,escape:r,encoding:i,onVttLoad:s},moreVideoAttr:l,i18n:l,icons:l,cssVar:l,customType:l}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"6XHP2":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>{let{i18n:n,constructor:{ASPECT_RATIO:l}}=i,s=l.map(d=>`${d==="default"?n.get("Default"):d}`).join("");return{...r,html:`${n.get("Aspect Ratio")}: ${s}`,click:(d,f)=>{let{value:p}=f.target.dataset;p&&(i.aspectRatio=p,d.show=!1)},mounted:d=>{let f=(0,t.query)('[data-value="default"]',d);f&&(0,t.inverseClass)(f,"art-current"),i.on("aspectRatio",p=>{let g=(0,t.queryAll)("span",d).find(v=>v.dataset.value===p);g&&(0,t.inverseClass)(g,"art-current")})}}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],eF6AX:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(c){return r=>({...c,html:r.i18n.get("Close"),click:i=>{i.show=!1}})}e.defineInteropFlag(o),e.export(o,"default",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"7Wg1P":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>{let{i18n:n,constructor:{FLIP:l}}=i,s=l.map(d=>`${n.get((0,t.capitalize)(d))}`).join("");return{...r,html:`${n.get("Video Flip")}: ${s}`,click:(d,f)=>{let{value:p}=f.target.dataset;p&&(i.flip=p.toLowerCase(),d.show=!1)},mounted:d=>{let f=(0,t.query)('[data-value="normal"]',d);f&&(0,t.inverseClass)(f,"art-current"),i.on("flip",p=>{let g=(0,t.queryAll)("span",d).find(v=>v.dataset.value===p);g&&(0,t.inverseClass)(g,"art-current")})}}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],fjRnU:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(c){return r=>({...c,html:r.i18n.get("Video Info"),click:i=>{r.info.show=!0,i.show=!1}})}e.defineInteropFlag(o),e.export(o,"default",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],hm1DY:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>{let{i18n:n,constructor:{PLAYBACK_RATE:l}}=i,s=l.map(d=>`${d===1?n.get("Normal"):d.toFixed(1)}`).join("");return{...r,html:`${n.get("Play Speed")}: ${s}`,click:(d,f)=>{let{value:p}=f.target.dataset;p&&(i.playbackRate=Number(p),d.show=!1)},mounted:d=>{let f=(0,t.query)('[data-value="1"]',d);f&&(0,t.inverseClass)(f,"art-current"),i.on("video:ratechange",()=>{let p=(0,t.queryAll)("span",d).find(g=>Number(g.dataset.value)===i.playbackRate);p&&(0,t.inverseClass)(p,"art-current")})}}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],aJBeL:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>function(c){return{...c,html:`ArtPlayer ${t.version}`}});var t=a("../../package.json")},{"../../package.json":"lh3R5","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],dp1yk:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("../utils"),c=a("../utils/component"),r=e.interopDefault(c),i=a("./airplay"),n=e.interopDefault(i),l=a("./fullscreen"),s=e.interopDefault(l),d=a("./fullscreenWeb"),f=e.interopDefault(d),p=a("./pip"),g=e.interopDefault(p),v=a("./playAndPause"),x=e.interopDefault(v),m=a("./progress"),y=e.interopDefault(m),j=a("./screenshot"),k=e.interopDefault(j),$=a("./setting"),S=e.interopDefault($),E=a("./time"),C=e.interopDefault(E),I=a("./volume"),L=e.interopDefault(I);class R extends r.default{constructor(b){super(b),this.isHover=!1,this.name="control",this.timer=Date.now();let{constructor:T}=b,{$player:F,$bottom:P}=this.art.template;b.on("mousemove",()=>{t.isMobile||(this.show=!0)}),b.on("click",()=>{t.isMobile?this.toggle():this.show=!0}),b.on("document:mousemove",M=>{this.isHover=(0,t.includeFromEvent)(M,P)}),b.on("video:timeupdate",()=>{!b.setting.show&&!this.isHover&&!b.isInput&&b.playing&&this.show&&Date.now()-this.timer>=T.CONTROL_HIDE_TIME&&(this.show=!1)}),b.on("control",M=>{M?((0,t.removeClass)(F,"art-hide-cursor"),(0,t.addClass)(F,"art-hover"),this.timer=Date.now()):((0,t.addClass)(F,"art-hide-cursor"),(0,t.removeClass)(F,"art-hover"))}),this.init()}init(){let{option:b}=this.art;b.isLive||this.add((0,y.default)({name:"progress",position:"top",index:10})),this.add({name:"thumbnails",position:"top",index:20}),this.add((0,x.default)({name:"playAndPause",position:"left",index:10})),this.add((0,L.default)({name:"volume",position:"left",index:20})),b.isLive||this.add((0,C.default)({name:"time",position:"left",index:30})),b.quality.length&&(0,t.sleep)().then(()=>{this.art.quality=b.quality}),b.screenshot&&!t.isMobile&&this.add((0,k.default)({name:"screenshot",position:"right",index:20})),b.setting&&this.add((0,S.default)({name:"setting",position:"right",index:30})),b.pip&&this.add((0,g.default)({name:"pip",position:"right",index:40})),b.airplay&&window.WebKitPlaybackTargetAvailabilityEvent&&this.add((0,n.default)({name:"airplay",position:"right",index:50})),b.fullscreenWeb&&this.add((0,f.default)({name:"fullscreenWeb",position:"right",index:60})),b.fullscreen&&this.add((0,s.default)({name:"fullscreen",position:"right",index:70}));for(let T=0;Tb.selector}),(0,t.def)(H,"$control_item",{get:()=>z}),(0,t.def)(H,"$control_value",{get:()=>M})}let O=P(q,"click",async B=>{let H=(0,t.getComposedPath)(B),z=b.selector.find(W=>W.$control_item===H.find(G=>W.$control_item===G));this.check(z),b.onSelect&&(M.innerHTML=await b.onSelect.call(this.art,z,z.$control_item,B))});F.push(O)}}o.default=R},{"../utils":"aBlEo","../utils/component":"idCEj","./airplay":"amOzz","./fullscreen":"3GuBU","./fullscreenWeb":"jj1KV","./pip":"jMeHN","./playAndPause":"u3h8M","./progress":"1XZSS","./screenshot":"dIscA","./setting":"aqA0g","./time":"ihweO","./volume":"fJVWn","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],amOzz:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>({...r,tooltip:i.i18n.get("AirPlay"),mounted:n=>{let{proxy:l,icons:s}=i;(0,t.append)(n,s.airplay),l(n,"click",()=>i.airplay())}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"3GuBU":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>({...r,tooltip:i.i18n.get("Fullscreen"),mounted:n=>{let{proxy:l,icons:s,i18n:d}=i,f=(0,t.append)(n,s.fullscreenOn),p=(0,t.append)(n,s.fullscreenOff);(0,t.setStyle)(p,"display","none"),l(n,"click",()=>{i.fullscreen=!i.fullscreen}),i.on("fullscreen",g=>{g?((0,t.tooltip)(n,d.get("Exit Fullscreen")),(0,t.setStyle)(f,"display","none"),(0,t.setStyle)(p,"display","inline-flex")):((0,t.tooltip)(n,d.get("Fullscreen")),(0,t.setStyle)(f,"display","inline-flex"),(0,t.setStyle)(p,"display","none"))})}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jj1KV:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>({...r,tooltip:i.i18n.get("Web Fullscreen"),mounted:n=>{let{proxy:l,icons:s,i18n:d}=i,f=(0,t.append)(n,s.fullscreenWebOn),p=(0,t.append)(n,s.fullscreenWebOff);(0,t.setStyle)(p,"display","none"),l(n,"click",()=>{i.fullscreenWeb=!i.fullscreenWeb}),i.on("fullscreenWeb",g=>{g?((0,t.tooltip)(n,d.get("Exit Web Fullscreen")),(0,t.setStyle)(f,"display","none"),(0,t.setStyle)(p,"display","inline-flex")):((0,t.tooltip)(n,d.get("Web Fullscreen")),(0,t.setStyle)(f,"display","inline-flex"),(0,t.setStyle)(p,"display","none"))})}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jMeHN:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>({...r,tooltip:i.i18n.get("PIP Mode"),mounted:n=>{let{proxy:l,icons:s,i18n:d}=i;(0,t.append)(n,s.pip),l(n,"click",()=>{i.pip=!i.pip}),i.on("pip",f=>{(0,t.tooltip)(n,d.get(f?"Exit PIP Mode":"PIP Mode"))})}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],u3h8M:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>({...r,mounted:n=>{let{proxy:l,icons:s,i18n:d}=i,f=(0,t.append)(n,s.play),p=(0,t.append)(n,s.pause);function g(){(0,t.setStyle)(f,"display","flex"),(0,t.setStyle)(p,"display","none")}function v(){(0,t.setStyle)(f,"display","none"),(0,t.setStyle)(p,"display","flex")}(0,t.tooltip)(f,d.get("Play")),(0,t.tooltip)(p,d.get("Pause")),l(f,"click",()=>{i.play()}),l(p,"click",()=>{i.pause()}),i.playing?v():g(),i.on("video:playing",()=>{v()}),i.on("video:pause",()=>{g()})}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"1XZSS":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"getPosFromEvent",()=>c),e.export(o,"setCurrentTime",()=>r),e.export(o,"default",()=>i);var t=a("../utils");function c(n,l){let{$progress:s}=n.template,{left:d}=(0,t.getRect)(s),f=t.isMobile?l.touches[0].clientX:l.clientX,p=(0,t.clamp)(f-d,0,s.clientWidth),g=p/s.clientWidth*n.duration,v=(0,t.secondToTime)(g),x=(0,t.clamp)(p/s.clientWidth,0,1);return{second:g,time:v,width:p,percentage:x}}function r(n,l){if(n.isRotate){let s=l.touches[0].clientY/n.height,d=s*n.duration;n.emit("setBar","played",s,l),n.seek=d}else{let{second:s,percentage:d}=c(n,l);n.emit("setBar","played",d,l),n.seek=s}}function i(n){return l=>{let{icons:s,option:d,proxy:f}=l;return{...n,html:'
',mounted:p=>{let g=null,v=!1,x=(0,t.query)(".art-progress-hover",p),m=(0,t.query)(".art-progress-loaded",p),y=(0,t.query)(".art-progress-played",p),j=(0,t.query)(".art-progress-highlight",p),k=(0,t.query)(".art-progress-indicator",p),$=(0,t.query)(".art-progress-tip",p);function S(E,C){let{width:I,time:L}=C||c(l,E);$.textContent=L;let R=$.clientWidth;I<=R/2?(0,t.setStyle)($,"left",0):I>p.clientWidth-R/2?(0,t.setStyle)($,"left",`${p.clientWidth-R}px`):(0,t.setStyle)($,"left",`${I-R/2}px`)}s.indicator?(0,t.append)(k,s.indicator):(0,t.setStyle)(k,"backgroundColor","var(--art-theme)"),l.on("setBar",function(E,C,I){let L=E==="played"&&I&&t.isMobile;E==="loaded"&&(0,t.setStyle)(m,"width",`${100*C}%`),E==="hover"&&(0,t.setStyle)(x,"width",`${100*C}%`),E==="played"&&((0,t.setStyle)(y,"width",`${100*C}%`),(0,t.setStyle)(k,"left",`${100*C}%`)),L&&((0,t.setStyle)($,"display","flex"),S(I,{width:p.clientWidth*C,time:(0,t.secondToTime)(C*l.duration)}),clearTimeout(g),g=setTimeout(()=>{(0,t.setStyle)($,"display","none")},500))}),l.on("video:loadedmetadata",function(){j.textContent="";for(let E=0;E`;(0,t.append)(j,L)}}),l.constructor.USE_RAF?l.on("raf",()=>{l.emit("setBar","played",l.played),l.emit("setBar","loaded",l.loaded)}):(l.on("video:timeupdate",()=>{l.emit("setBar","played",l.played)}),l.on("video:progress",()=>{l.emit("setBar","loaded",l.loaded)}),l.on("video:ended",()=>{l.emit("setBar","played",1)})),l.emit("setBar","loaded",l.loaded||0),t.isMobile||(f(p,"click",E=>{E.target!==k&&r(l,E)}),f(p,"mousemove",E=>{let{percentage:C}=c(l,E);if(l.emit("setBar","hover",C,E),(0,t.setStyle)($,"display","flex"),(0,t.includeFromEvent)(E,j)){let{width:I}=c(l,E),{text:L}=E.target.dataset;$.textContent=L;let R=$.clientWidth;I<=R/2?(0,t.setStyle)($,"left",0):I>p.clientWidth-R/2?(0,t.setStyle)($,"left",`${p.clientWidth-R}px`):(0,t.setStyle)($,"left",`${I-R/2}px`)}else S(E)}),f(p,"mouseleave",E=>{(0,t.setStyle)($,"display","none"),l.emit("setBar","hover",0,E)}),f(p,"mousedown",E=>{v=E.button===0}),l.on("document:mousemove",E=>{if(v){let{second:C,percentage:I}=c(l,E);l.emit("setBar","played",I,E),l.seek=C}}),l.on("document:mouseup",()=>{v&&(v=!1)}))}}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],dIscA:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>({...r,tooltip:i.i18n.get("Screenshot"),mounted:n=>{let{proxy:l,icons:s}=i;(0,t.append)(n,s.screenshot),l(n,"click",()=>{i.screenshot()})}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],aqA0g:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>({...r,tooltip:i.i18n.get("Show Setting"),mounted:n=>{let{proxy:l,icons:s,i18n:d}=i;(0,t.append)(n,s.setting),l(n,"click",()=>{i.setting.toggle(),i.setting.resize()}),i.on("setting",f=>{(0,t.tooltip)(n,d.get(f?"Hide Setting":"Show Setting"))})}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],ihweO:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>({...r,style:t.isMobile?{fontSize:"12px",padding:"0 5px"}:{cursor:"auto",padding:"0 10px"},mounted:n=>{function l(){let d=`${(0,t.secondToTime)(i.currentTime)} / ${(0,t.secondToTime)(i.duration)}`;d!==n.textContent&&(n.textContent=d)}l();let s=["video:loadedmetadata","video:timeupdate","video:progress"];for(let d=0;dc);var t=a("../utils");function c(r){return i=>({...r,mounted:n=>{let{proxy:l,icons:s}=i,d=(0,t.append)(n,s.volume),f=(0,t.append)(n,s.volumeClose),p=(0,t.append)(n,'
'),g=(0,t.append)(p,'
'),v=(0,t.append)(g,'
'),x=(0,t.append)(g,'
'),m=(0,t.append)(x,'
'),y=(0,t.append)(m,'
'),j=(0,t.append)(x,'
');function k(S){let{top:E,height:C}=(0,t.getRect)(x);return 1-(S.clientY-E)/C}function $(){if(i.muted||i.volume===0)(0,t.setStyle)(d,"display","none"),(0,t.setStyle)(f,"display","flex"),(0,t.setStyle)(j,"top","100%"),(0,t.setStyle)(y,"top","100%"),v.textContent=0;else{let S=100*i.volume;(0,t.setStyle)(d,"display","flex"),(0,t.setStyle)(f,"display","none"),(0,t.setStyle)(j,"top",`${100-S}%`),(0,t.setStyle)(y,"top",`${100-S}%`),v.textContent=Math.floor(S)}}if($(),i.on("video:volumechange",$),l(d,"click",()=>{i.muted=!0}),l(f,"click",()=>{i.muted=!1}),t.isMobile)(0,t.setStyle)(p,"display","none");else{let S=!1;l(x,"mousedown",E=>{S=E.button===0,i.volume=k(E)}),i.on("document:mousemove",E=>{S&&(i.muted=!1,i.volume=k(E))}),i.on("document:mouseup",()=>{S&&(S=!1)})}}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jmVSD:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("./clickInit"),c=e.interopDefault(t),r=a("./gestureInit"),i=e.interopDefault(r),n=a("./globalInit"),l=e.interopDefault(n),s=a("./hoverInit"),d=e.interopDefault(s),f=a("./moveInit"),p=e.interopDefault(f),g=a("./resizeInit"),v=e.interopDefault(g),x=a("./updateInit"),m=e.interopDefault(x),y=a("./viewInit"),j=e.interopDefault(y);o.default=class{constructor(k){this.destroyEvents=[],this.proxy=this.proxy.bind(this),this.hover=this.hover.bind(this),(0,c.default)(k,this),(0,d.default)(k,this),(0,p.default)(k,this),(0,v.default)(k,this),(0,i.default)(k,this),(0,j.default)(k,this),(0,l.default)(k,this),(0,m.default)(k,this)}proxy(k,$,S,E={}){if(Array.isArray($))return $.map(I=>this.proxy(k,I,S,E));k.addEventListener($,S,E);let C=()=>k.removeEventListener($,S,E);return this.destroyEvents.push(C),C}hover(k,$,S){$&&this.proxy(k,"mouseenter",$),S&&this.proxy(k,"mouseleave",S)}remove(k){let $=this.destroyEvents.indexOf(k);$>-1&&(k(),this.destroyEvents.splice($,1))}destroy(){for(let k=0;kc);var t=a("../utils");function c(r,i){let{constructor:n,template:{$player:l,$video:s}}=r;function d(p){(0,t.includeFromEvent)(p,l)?(r.isInput=p.target.tagName==="INPUT",r.isFocus=!0,r.emit("focus",p)):(r.isInput=!1,r.isFocus=!1,r.emit("blur",p))}r.on("document:click",d),r.on("document:contextmenu",d);let f=[];i.proxy(s,"click",p=>{let g=Date.now();f.push(g);let{MOBILE_CLICK_PLAY:v,DBCLICK_TIME:x,MOBILE_DBCLICK_PLAY:m,DBCLICK_FULLSCREEN:y}=n,j=f.filter(k=>g-k<=x);switch(j.length){case 1:r.emit("click",p),t.isMobile?!r.isLock&&v&&r.toggle():r.toggle(),f=j;break;case 2:r.emit("dblclick",p),t.isMobile?!r.isLock&&m&&r.toggle():y&&(r.fullscreen=!r.fullscreen),f=[];break;default:f=[]}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"9wEzB":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>r);var t=a("../control/progress"),c=a("../utils");function r(i,n){if(c.isMobile&&!i.option.isLive){let{$video:l,$progress:s}=i.template,d=null,f=!1,p=0,g=0,v=0,x=y=>{if(y.touches.length===1&&!i.isLock){d===s&&(0,t.setCurrentTime)(i,y),f=!0;let{pageX:j,pageY:k}=y.touches[0];p=j,g=k,v=i.currentTime}},m=y=>{if(y.touches.length===1&&f&&i.duration){let{pageX:j,pageY:k}=y.touches[0],$=function(C,I,L,R){let w=I-R,b=L-C,T=0;if(2>Math.abs(b)&&2>Math.abs(w))return T;let F=180*Math.atan2(w,b)/Math.PI;return F>=-45&&F<45?T=4:F>=45&&F<135?T=1:F>=-135&&F<-45?T=2:(F>=135&&F<=180||F>=-180&&F<-135)&&(T=3),T}(p,g,j,k),S=[3,4].includes($),E=[1,2].includes($);if(S&&!i.isRotate||E&&i.isRotate){let C=(0,c.clamp)((j-p)/i.width,-1,1),I=(0,c.clamp)((k-g)/i.height,-1,1),L=i.isRotate?I:C,R=d===l?i.constructor.TOUCH_MOVE_RATIO:1,w=(0,c.clamp)(v+i.duration*L*R,0,i.duration);i.seek=w,i.emit("setBar","played",(0,c.clamp)(w/i.duration,0,1),y),i.notice.show=`${(0,c.secondToTime)(w)} / ${(0,c.secondToTime)(i.duration)}`}}};i.option.gesture&&(n.proxy(l,"touchstart",y=>{d=l,x(y)}),n.proxy(l,"touchmove",m)),n.proxy(s,"touchstart",y=>{d=s,x(y)}),n.proxy(s,"touchmove",m),i.on("document:touchend",()=>{f&&(p=0,g=0,v=0,f=!1,d=null)})}}},{"../control/progress":"1XZSS","../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],ikBrS:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(c,r){let i=["click","mouseup","keydown","touchend","touchmove","mousemove","pointerup","contextmenu","pointermove","visibilitychange","webkitfullscreenchange"],n=["resize","scroll","orientationchange"],l=[];function s(d={}){for(let p=0;p{let g=d.document||f.ownerDocument||document,v=r.proxy(g,p,x=>{c.emit(`document:${p}`,x)});l.push(v)}),n.forEach(p=>{var x;let g=d.window||((x=f.ownerDocument)==null?void 0:x.defaultView)||window,v=r.proxy(g,p,m=>{c.emit(`window:${p}`,m)});l.push(v)})}s(),r.bindGlobalEvents=s}e.defineInteropFlag(o),e.export(o,"default",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jwNq0:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r,i){let{$player:n}=r.template;i.hover(n,l=>{(0,t.addClass)(n,"art-hover"),r.emit("hover",!0,l)},l=>{(0,t.removeClass)(n,"art-hover"),r.emit("hover",!1,l)})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],eqSsP:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(c,r){let{$player:i}=c.template;r.proxy(i,"mousemove",n=>{c.emit("mousemove",n)})}e.defineInteropFlag(o),e.export(o,"default",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"42JNz":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r,i){let{option:n,constructor:l}=r;r.on("resize",()=>{let{aspectRatio:d,notice:f}=r;r.state==="standard"&&n.autoSize&&r.autoSize(),r.aspectRatio=d,f.show=""});let s=(0,t.debounce)(()=>r.emit("resize"),l.RESIZE_TIME);r.on("window:orientationchange",()=>s()),r.on("window:resize",()=>s()),screen&&screen.orientation&&screen.orientation.onchange&&i.proxy(screen.orientation,"change",()=>s())}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"7kM1M":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(c){if(c.constructor.USE_RAF){let r=null;(function i(){c.playing&&c.emit("raf"),c.isDestroy||(r=requestAnimationFrame(i))})(),c.on("destroy",()=>{cancelAnimationFrame(r)})}}e.defineInteropFlag(o),e.export(o,"default",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"2IW9m":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{option:i,constructor:n,template:{$container:l}}=r,s=(0,t.throttle)(()=>{r.emit("view",(0,t.isInViewport)(l,n.SCROLL_GAP))},n.SCROLL_TIME);r.on("window:scroll",()=>s()),r.on("view",d=>{i.autoMini&&(r.mini=!d)})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],dswts:[function(a,u,o,h){a("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o);var e=a("./utils");o.default=class{constructor(t){this.art=t,this.keys={},t.option.hotkey&&!e.isMobile&&this.init()}init(){let{constructor:t}=this.art;this.add("Escape",()=>{this.art.fullscreenWeb&&(this.art.fullscreenWeb=!1)}),this.add("Space",()=>{this.art.toggle()}),this.add("ArrowLeft",()=>{this.art.backward=t.SEEK_STEP}),this.add("ArrowUp",()=>{this.art.volume+=t.VOLUME_STEP}),this.add("ArrowRight",()=>{this.art.forward=t.SEEK_STEP}),this.add("ArrowDown",()=>{this.art.volume-=t.VOLUME_STEP}),this.art.on("document:keydown",c=>{if(this.art.isFocus){let r=document.activeElement.tagName.toUpperCase(),i=document.activeElement.getAttribute("contenteditable");if(r!=="INPUT"&&r!=="TEXTAREA"&&i!==""&&i!=="true"&&!c.altKey&&!c.ctrlKey&&!c.metaKey&&!c.shiftKey){let n=this.keys[c.code];if(n){c.preventDefault();for(let l=0;l(0,N.getIcon)(dt,ht[dt])})}}},{"bundle-text:./airplay.svg":"gkZgZ","bundle-text:./arrow-left.svg":"kQyD4","bundle-text:./arrow-right.svg":"64ztm","bundle-text:./aspect-ratio.svg":"72LvA","bundle-text:./check.svg":"4QmBo","bundle-text:./close.svg":"j1hoe","bundle-text:./config.svg":"hNZaT","bundle-text:./error.svg":"dKh4l","bundle-text:./flip.svg":"lIEIE","bundle-text:./fullscreen-off.svg":"1533e","bundle-text:./fullscreen-on.svg":"76ut3","bundle-text:./fullscreen-web-off.svg":"3NzMk","bundle-text:./fullscreen-web-on.svg":"12xHc","bundle-text:./loading.svg":"iVcUF","bundle-text:./lock.svg":"1J4so","bundle-text:./pause.svg":"1KgkK","bundle-text:./pip.svg":"4h4tM","bundle-text:./play.svg":"jecAY","bundle-text:./playback-rate.svg":"anPe9","bundle-text:./screenshot.svg":"9BPYQ","bundle-text:./setting.svg":"hsI9k","bundle-text:./state.svg":"gr1ZU","bundle-text:./switch-off.svg":"6kdAr","bundle-text:./switch-on.svg":"ksdMo","bundle-text:./unlock.svg":"iz5Qc","bundle-text:./volume-close.svg":"3OZoa","bundle-text:./volume.svg":"hRYA4","../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],gkZgZ:[function(a,u,o,h){u.exports=''},{}],kQyD4:[function(a,u,o,h){u.exports=''},{}],"64ztm":[function(a,u,o,h){u.exports=''},{}],"72LvA":[function(a,u,o,h){u.exports=''},{}],"4QmBo":[function(a,u,o,h){u.exports=''},{}],j1hoe:[function(a,u,o,h){u.exports=''},{}],hNZaT:[function(a,u,o,h){u.exports=''},{}],dKh4l:[function(a,u,o,h){u.exports=''},{}],lIEIE:[function(a,u,o,h){u.exports=''},{}],"1533e":[function(a,u,o,h){u.exports=''},{}],"76ut3":[function(a,u,o,h){u.exports=''},{}],"3NzMk":[function(a,u,o,h){u.exports=''},{}],"12xHc":[function(a,u,o,h){u.exports=''},{}],iVcUF:[function(a,u,o,h){u.exports=''},{}],"1J4so":[function(a,u,o,h){u.exports=''},{}],"1KgkK":[function(a,u,o,h){u.exports=''},{}],"4h4tM":[function(a,u,o,h){u.exports=''},{}],jecAY:[function(a,u,o,h){u.exports=''},{}],anPe9:[function(a,u,o,h){u.exports=''},{}],"9BPYQ":[function(a,u,o,h){u.exports=''},{}],hsI9k:[function(a,u,o,h){u.exports=''},{}],gr1ZU:[function(a,u,o,h){u.exports=''},{}],"6kdAr":[function(a,u,o,h){u.exports=''},{}],ksdMo:[function(a,u,o,h){u.exports=''},{}],iz5Qc:[function(a,u,o,h){u.exports=''},{}],"3OZoa":[function(a,u,o,h){u.exports=''},{}],hRYA4:[function(a,u,o,h){u.exports=''},{}],kZ0F8:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("./utils"),c=a("./utils/component"),r=e.interopDefault(c);class i extends r.default{constructor(l){super(l),this.name="info",t.isMobile||this.init()}init(){let{proxy:l,constructor:s,template:{$infoPanel:d,$infoClose:f,$video:p}}=this.art;l(f,"click",()=>{this.show=!1});let g=null,v=(0,t.queryAll)("[data-video]",d)||[];this.art.on("destroy",()=>clearTimeout(g)),function x(){for(let m=0;m{(0,t.setStyle)(p,"display","none"),(0,t.setStyle)(g,"display",null)}),f.proxy(s.$state,"click",()=>l.play())}}o.default=i},{"./utils":"aBlEo","./utils/component":"idCEj","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],fPVaU:[function(a,u,o,h){a("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o);var e=a("./utils");o.default=class{constructor(t){this.art=t,this.timer=null}set show(t){let{constructor:c,template:{$player:r,$noticeInner:i}}=this.art;t?(i.textContent=t instanceof Error?t.message.trim():t,(0,e.addClass)(r,"art-notice-show"),clearTimeout(this.timer),this.timer=setTimeout(()=>{i.textContent="",(0,e.removeClass)(r,"art-notice-show")},c.NOTICE_TIME)):(0,e.removeClass)(r,"art-notice-show")}get show(){let{template:{$player:t}}=this.art;return t.classList.contains("art-notice-show")}}},{"./utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],uR0Sw:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("./airplayMix"),c=e.interopDefault(t),r=a("./aspectRatioMix"),i=e.interopDefault(r),n=a("./attrMix"),l=e.interopDefault(n),s=a("./autoHeightMix"),d=e.interopDefault(s),f=a("./autoSizeMix"),p=e.interopDefault(f),g=a("./cssVarMix"),v=e.interopDefault(g),x=a("./currentTimeMix"),m=e.interopDefault(x),y=a("./durationMix"),j=e.interopDefault(y),k=a("./eventInit"),$=e.interopDefault(k),S=a("./flipMix"),E=e.interopDefault(S),C=a("./fullscreenMix"),I=e.interopDefault(C),L=a("./fullscreenWebMix"),R=e.interopDefault(L),w=a("./loadedMix"),b=e.interopDefault(w),T=a("./miniMix"),F=e.interopDefault(T),P=a("./optionInit"),M=e.interopDefault(P),q=a("./pauseMix"),O=e.interopDefault(q),B=a("./pipMix"),H=e.interopDefault(B),z=a("./playbackRateMix"),W=e.interopDefault(z),G=a("./playedMix"),at=e.interopDefault(G),ot=a("./playingMix"),it=e.interopDefault(ot),nt=a("./playMix"),st=e.interopDefault(nt),K=a("./posterMix"),X=e.interopDefault(K),lt=a("./qualityMix"),J=e.interopDefault(lt),ct=a("./rectMix"),Y=e.interopDefault(ct),A=a("./screenshotMix"),vt=e.interopDefault(A),U=a("./seekMix"),Q=e.interopDefault(U),tt=a("./stateMix"),et=e.interopDefault(tt),N=a("./subtitleOffsetMix"),ut=e.interopDefault(N),ht=a("./switchMix"),dt=e.interopDefault(ht),Pt=a("./themeMix"),Dt=e.interopDefault(Pt),Bt=a("./thumbnailsMix"),Ot=e.interopDefault(Bt),Ht=a("./toggleMix"),_t=e.interopDefault(Ht),zt=a("./typeMix"),Vt=e.interopDefault(zt),Xt=a("./urlMix"),Ut=e.interopDefault(Xt),Nt=a("./volumeMix"),Wt=e.interopDefault(Nt);o.default=class{constructor(D){(0,Ut.default)(D),(0,l.default)(D),(0,st.default)(D),(0,O.default)(D),(0,_t.default)(D),(0,Q.default)(D),(0,Wt.default)(D),(0,m.default)(D),(0,j.default)(D),(0,dt.default)(D),(0,W.default)(D),(0,i.default)(D),(0,vt.default)(D),(0,I.default)(D),(0,R.default)(D),(0,H.default)(D),(0,b.default)(D),(0,at.default)(D),(0,it.default)(D),(0,p.default)(D),(0,Y.default)(D),(0,E.default)(D),(0,F.default)(D),(0,X.default)(D),(0,d.default)(D),(0,v.default)(D),(0,Dt.default)(D),(0,Vt.default)(D),(0,et.default)(D),(0,ut.default)(D),(0,c.default)(D),(0,J.default)(D),(0,Ot.default)(D),(0,$.default)(D),(0,M.default)(D)}}},{"./airplayMix":"d8BTB","./aspectRatioMix":"aQNJl","./attrMix":"5DA9e","./autoHeightMix":"1swKn","./autoSizeMix":"lSbiD","./cssVarMix":"32Hp1","./currentTimeMix":"kfZbu","./durationMix":"eV1ag","./eventInit":"f8NQq","./flipMix":"ea3Qm","./fullscreenMix":"ffXE3","./fullscreenWebMix":"8tarF","./loadedMix":"f9syH","./miniMix":"dLuS7","./optionInit":"d1F69","./pauseMix":"kewk9","./pipMix":"4XzDs","./playbackRateMix":"jphfi","./playedMix":"iNpeS","./playingMix":"aBIWL","./playMix":"hRBri","./posterMix":"fgfXC","./qualityMix":"17rUP","./rectMix":"55qzI","./screenshotMix":"bC6TG","./seekMix":"j8GRO","./stateMix":"cn7iR","./subtitleOffsetMix":"2k4nP","./switchMix":"6SU6j","./themeMix":"7iMuh","./thumbnailsMix":"6P0RS","./toggleMix":"eNi78","./typeMix":"7AUBD","./urlMix":"cnlLL","./volumeMix":"iX66j","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],d8BTB:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{i18n:i,notice:n,proxy:l,template:{$video:s}}=r,d=!0;window.WebKitPlaybackTargetAvailabilityEvent&&s.webkitShowPlaybackTargetPicker?l(s,"webkitplaybacktargetavailabilitychanged",f=>{switch(f.availability){case"available":d=!0;break;case"not-available":d=!1}}):d=!1,(0,t.def)(r,"airplay",{value(){d?(s.webkitShowPlaybackTargetPicker(),r.emit("airplay")):n.show=i.get("AirPlay Not Available")}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],aQNJl:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{i18n:i,notice:n,template:{$video:l,$player:s}}=r;(0,t.def)(r,"aspectRatio",{get:()=>s.dataset.aspectRatio||"default",set(d){if(d||(d="default"),d==="default")(0,t.setStyle)(l,"width",null),(0,t.setStyle)(l,"height",null),(0,t.setStyle)(l,"margin",null),delete s.dataset.aspectRatio;else{let f=d.split(":").map(Number),{clientWidth:p,clientHeight:g}=s,v=f[0]/f[1];p/g>v?((0,t.setStyle)(l,"width",`${v*g}px`),(0,t.setStyle)(l,"height","100%"),(0,t.setStyle)(l,"margin","0 auto")):((0,t.setStyle)(l,"width","100%"),(0,t.setStyle)(l,"height",`${p/v}px`),(0,t.setStyle)(l,"margin","auto 0")),s.dataset.aspectRatio=d}n.show=`${i.get("Aspect Ratio")}: ${d==="default"?i.get("Default"):d}`,r.emit("aspectRatio",d)}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"5DA9e":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{template:{$video:i}}=r;(0,t.def)(r,"attr",{value(n,l){if(l===void 0)return i[n];i[n]=l}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"1swKn":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{template:{$container:i,$video:n}}=r;(0,t.def)(r,"autoHeight",{value(){let{clientWidth:l}=i,{videoHeight:s,videoWidth:d}=n,f=l/d*s;(0,t.setStyle)(i,"height",`${f}px`),r.emit("autoHeight",f)}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],lSbiD:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{$container:i,$player:n,$video:l}=r.template;(0,t.def)(r,"autoSize",{value(){let{videoWidth:s,videoHeight:d}=l,{width:f,height:p}=(0,t.getRect)(i),g=s/d;f/p>g?((0,t.setStyle)(n,"width",`${p*g/f*100}%`),(0,t.setStyle)(n,"height","100%")):((0,t.setStyle)(n,"width","100%"),(0,t.setStyle)(n,"height",`${f/g/p*100}%`)),r.emit("autoSize",{width:r.width,height:r.height})}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"32Hp1":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{$player:i}=r.template;(0,t.def)(r,"cssVar",{value:(n,l)=>l?i.style.setProperty(n,l):getComputedStyle(i).getPropertyValue(n)})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],kfZbu:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{$video:i}=r.template;(0,t.def)(r,"currentTime",{get:()=>i.currentTime||0,set:n=>{Number.isNaN(n=Number.parseFloat(n))||(i.currentTime=(0,t.clamp)(n,0,r.duration))}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],eV1ag:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){(0,t.def)(r,"duration",{get:()=>{let{duration:i}=r.template.$video;return i===1/0?0:i||0}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],f8NQq:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>i);var t=a("../config"),c=e.interopDefault(t),r=a("../utils");function i(n){let{i18n:l,notice:s,option:d,constructor:f,proxy:p,template:{$player:g,$video:v,$poster:x}}=n,m=0;for(let y=0;y{n.emit(`video:${j.type}`,j)});n.on("video:canplay",()=>{m=0,n.loading.show=!1}),n.once("video:canplay",()=>{n.loading.show=!1,n.controls.show=!0,n.mask.show=!0,n.isReady=!0,n.emit("ready")}),n.on("video:ended",()=>{d.loop?(n.seek=0,n.play(),n.controls.show=!1,n.mask.show=!1):(n.controls.show=!0,n.mask.show=!0)}),n.on("video:error",async y=>{m{n.emit("resize"),r.isMobile&&(n.loading.show=!1,n.controls.show=!0,n.mask.show=!0)}),n.on("video:loadstart",()=>{n.loading.show=!0,n.mask.show=!1,n.controls.show=!0}),n.on("video:pause",()=>{n.controls.show=!0,n.mask.show=!0}),n.on("video:play",()=>{n.mask.show=!1,(0,r.setStyle)(x,"display","none")}),n.on("video:playing",()=>{n.mask.show=!1}),n.on("video:progress",()=>{n.playing&&(n.loading.show=!1)}),n.on("video:seeked",()=>{n.loading.show=!1,n.mask.show=!0}),n.on("video:seeking",()=>{n.loading.show=!0,n.mask.show=!1}),n.on("video:timeupdate",()=>{n.mask.show=!1}),n.on("video:waiting",()=>{n.loading.show=!0,n.mask.show=!1})}},{"../config":"eJfh8","../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],ea3Qm:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{template:{$player:i},i18n:n,notice:l}=r;(0,t.def)(r,"flip",{get:()=>i.dataset.flip||"normal",set(s){s||(s="normal"),s==="normal"?delete i.dataset.flip:i.dataset.flip=s,l.show=`${n.get("Video Flip")}: ${n.get((0,t.capitalize)(s))}`,r.emit("flip",s)}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],ffXE3:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>i);var t=a("../libs/screenfull"),c=e.interopDefault(t),r=a("../utils");function i(n){let{i18n:l,notice:s,template:{$video:d,$player:f}}=n;n.once("video:loadedmetadata",()=>{c.default.isEnabled?(c.default.on("change",()=>{n.emit("fullscreen",c.default.isFullscreen),c.default.isFullscreen?(n.state="fullscreen",(0,r.addClass)(f,"art-fullscreen")):(0,r.removeClass)(f,"art-fullscreen"),n.emit("resize")}),c.default.on("error",p=>{n.emit("fullscreenError",p)}),(0,r.def)(n,"fullscreen",{get:()=>c.default.isFullscreen,async set(p){p?await c.default.request(f):await c.default.exit()}})):d.webkitSupportsFullscreen?(n.on("document:webkitfullscreenchange",()=>{n.emit("fullscreen",n.fullscreen),n.emit("resize")}),(0,r.def)(n,"fullscreen",{get:()=>document.fullscreenElement===d,set(p){p?(n.state="fullscreen",d.webkitEnterFullscreen()):d.webkitExitFullscreen()}})):(0,r.def)(n,"fullscreen",{get:()=>!1,set(){s.show=l.get("Fullscreen Not Supported")}}),(0,r.def)(n,"fullscreen",(0,r.get)(n,"fullscreen"))})}},{"../libs/screenfull":"iSPAQ","../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],iSPAQ:[function(a,u,o,h){a("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o);let e=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],t=(()=>{if(typeof document>"u")return!1;let i=e[0],n={};for(let l of e)if(l[1]in document){for(let[s,d]of l.entries())n[i[s]]=d;return n}return!1})(),c={change:t.fullscreenchange,error:t.fullscreenerror},r={request:(i=document.documentElement,n)=>new Promise((l,s)=>{let d=()=>{r.off("change",d),l()};r.on("change",d);let f=i[t.requestFullscreen](n);f instanceof Promise&&f.then(d).catch(s)}),exit:()=>new Promise((i,n)=>{if(!r.isFullscreen)return void i();let l=()=>{r.off("change",l),i()};r.on("change",l);let s=document[t.exitFullscreen]();s instanceof Promise&&s.then(l).catch(n)}),toggle:(i,n)=>r.isFullscreen?r.exit():r.request(i,n),onchange(i){r.on("change",i)},onerror(i){r.on("error",i)},on(i,n){let l=c[i];l&&document.addEventListener(l,n,!1)},off(i,n){let l=c[i];l&&document.removeEventListener(l,n,!1)},raw:t};Object.defineProperties(r,{isFullscreen:{get:()=>!!document[t.fullscreenElement]},element:{enumerable:!0,get:()=>document[t.fullscreenElement]},isEnabled:{enumerable:!0,get:()=>!!document[t.fullscreenEnabled]}}),o.default=r},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"8tarF":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{constructor:i,template:{$container:n,$player:l}}=r,s="";(0,t.def)(r,"fullscreenWeb",{get:()=>(0,t.hasClass)(l,"art-fullscreen-web"),set(d){d?(s=l.style.cssText,i.FULLSCREEN_WEB_IN_BODY&&(0,t.append)(document.body,l),r.state="fullscreenWeb",(0,t.setStyle)(l,"width","100%"),(0,t.setStyle)(l,"height","100%"),(0,t.addClass)(l,"art-fullscreen-web"),r.emit("fullscreenWeb",!0)):(i.FULLSCREEN_WEB_IN_BODY&&(0,t.append)(n,l),s&&(l.style.cssText=s,s=""),(0,t.removeClass)(l,"art-fullscreen-web"),r.emit("fullscreenWeb",!1)),r.emit("resize")}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],f9syH:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{$video:i}=r.template;(0,t.def)(r,"loaded",{get:()=>r.loadedTime/i.duration}),(0,t.def)(r,"loadedTime",{get:()=>i.buffered.length?i.buffered.end(i.buffered.length-1):0})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],dLuS7:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{icons:i,proxy:n,storage:l,template:{$player:s,$video:d}}=r,f=!1,p=0,g=0;function v(){let{$mini:y}=r.template;y&&((0,t.removeClass)(s,"art-mini"),(0,t.setStyle)(y,"display","none"),s.prepend(d),r.emit("mini",!1))}function x(y,j){r.playing?((0,t.setStyle)(y,"display","none"),(0,t.setStyle)(j,"display","flex")):((0,t.setStyle)(y,"display","flex"),(0,t.setStyle)(j,"display","none"))}function m(){let{$mini:y}=r.template,j=(0,t.getRect)(y),k=window.innerHeight-j.height-50,$=window.innerWidth-j.width-50;l.set("top",k),l.set("left",$),(0,t.setStyle)(y,"top",`${k}px`),(0,t.setStyle)(y,"left",`${$}px`)}(0,t.def)(r,"mini",{get:()=>(0,t.hasClass)(s,"art-mini"),set(y){if(y){r.state="mini",(0,t.addClass)(s,"art-mini");let j=function(){let{$mini:S}=r.template;if(S)return(0,t.append)(S,d),(0,t.setStyle)(S,"display","flex");{let E=(0,t.createElement)("div");(0,t.addClass)(E,"art-mini-popup"),(0,t.append)(document.body,E),r.template.$mini=E,(0,t.append)(E,d);let C=(0,t.append)(E,'
');(0,t.append)(C,i.close),n(C,"click",v);let I=(0,t.append)(E,'
'),L=(0,t.append)(I,i.play),R=(0,t.append)(I,i.pause);return n(L,"click",()=>r.play()),n(R,"click",()=>r.pause()),x(L,R),r.on("video:playing",()=>x(L,R)),r.on("video:pause",()=>x(L,R)),r.on("video:timeupdate",()=>x(L,R)),n(E,"mousedown",w=>{f=w.button===0,p=w.pageX,g=w.pageY}),r.on("document:mousemove",w=>{if(f){(0,t.addClass)(E,"art-mini-dragging");let b=w.pageX-p,T=w.pageY-g;(0,t.setStyle)(E,"transform",`translate(${b}px, ${T}px)`)}}),r.on("document:mouseup",()=>{if(f){f=!1,(0,t.removeClass)(E,"art-mini-dragging");let w=(0,t.getRect)(E);l.set("left",w.left),l.set("top",w.top),(0,t.setStyle)(E,"left",`${w.left}px`),(0,t.setStyle)(E,"top",`${w.top}px`),(0,t.setStyle)(E,"transform",null)}}),E}}(),k=l.get("top"),$=l.get("left");typeof k=="number"&&typeof $=="number"?((0,t.setStyle)(j,"top",`${k}px`),(0,t.setStyle)(j,"left",`${$}px`),(0,t.isInViewport)(j)||m()):m(),r.emit("mini",!0)}else v()}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],d1F69:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{option:i,storage:n,template:{$video:l,$poster:s}}=r;for(let f in i.moreVideoAttr)r.attr(f,i.moreVideoAttr[f]);i.muted&&(r.muted=i.muted),i.volume&&(l.volume=(0,t.clamp)(i.volume,0,1));let d=n.get("volume");for(let f in typeof d=="number"&&(l.volume=(0,t.clamp)(d,0,1)),i.poster&&(0,t.setStyle)(s,"backgroundImage",`url(${i.poster})`),i.autoplay&&(l.autoplay=i.autoplay),i.playsInline&&(l.playsInline=!0,l["webkit-playsinline"]=!0),i.theme&&(i.cssVar["--art-theme"]=i.theme),i.cssVar)r.cssVar(f,i.cssVar[f]);r.url=i.url}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],kewk9:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{template:{$video:i},i18n:n,notice:l}=r;(0,t.def)(r,"pause",{value(){let s=i.pause();return l.show=n.get("Pause"),r.emit("pause"),s}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"4XzDs":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{i18n:i,notice:n,template:{$video:l}}=r;if(document.pictureInPictureEnabled){let{template:{$video:s},proxy:d,notice:f}=r;s.disablePictureInPicture=!1,(0,t.def)(r,"pip",{get:()=>document.pictureInPictureElement,set(p){p?(r.state="pip",s.requestPictureInPicture().catch(g=>{throw f.show=g,g})):document.exitPictureInPicture().catch(g=>{throw f.show=g,g})}}),d(s,"enterpictureinpicture",()=>{r.emit("pip",!0)}),d(s,"leavepictureinpicture",()=>{r.emit("pip",!1)})}else if(l.webkitSupportsPresentationMode){let{$video:s}=r.template;s.webkitSetPresentationMode("inline"),(0,t.def)(r,"pip",{get:()=>s.webkitPresentationMode==="picture-in-picture",set(d){d?(r.state="pip",s.webkitSetPresentationMode("picture-in-picture"),r.emit("pip",!0)):(s.webkitSetPresentationMode("inline"),r.emit("pip",!1))}})}else(0,t.def)(r,"pip",{get:()=>!1,set(){n.show=i.get("PIP Not Supported")}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jphfi:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{template:{$video:i},i18n:n,notice:l}=r;(0,t.def)(r,"playbackRate",{get:()=>i.playbackRate,set(s){s?s!==i.playbackRate&&(i.playbackRate=s,l.show=`${n.get("Rate")}: ${s===1?n.get("Normal"):`${s}x`}`):r.playbackRate=1}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],iNpeS:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){(0,t.def)(r,"played",{get:()=>r.currentTime/r.duration})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],aBIWL:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{$video:i}=r.template;(0,t.def)(r,"playing",{get:()=>typeof i.playing=="boolean"?i.playing:i.currentTime>0&&!i.paused&&!i.ended&&i.readyState>2})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],hRBri:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{i18n:i,notice:n,option:l,constructor:{instances:s},template:{$video:d}}=r;(0,t.def)(r,"play",{async value(){let f=await d.play();if(n.show=i.get("Play"),r.emit("play"),l.mutex)for(let p=0;pc);var t=a("../utils");function c(r){let{template:{$poster:i}}=r;(0,t.def)(r,"poster",{get:()=>{try{return i.style.backgroundImage.match(/"(.*)"/)[1]}catch{return""}},set(n){(0,t.setStyle)(i,"backgroundImage",`url(${n})`)}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"17rUP":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){(0,t.def)(r,"quality",{set(i){let{controls:n,notice:l,i18n:s}=r,d=i.find(f=>f.default)||i[0];n.update({name:"quality",position:"right",index:10,style:{marginRight:"10px"},html:(d==null?void 0:d.html)||"",selector:i,onSelect:async f=>(await r.switchQuality(f.url),l.show=`${s.get("Switch Video")}: ${f.html}`,f.html)})}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"55qzI":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){(0,t.def)(r,"rect",{get:()=>(0,t.getRect)(r.template.$player)});let i=["bottom","height","left","right","top","width"];for(let n=0;nr.rect[l]})}(0,t.def)(r,"x",{get:()=>r.left+window.pageXOffset}),(0,t.def)(r,"y",{get:()=>r.top+window.pageYOffset})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],bC6TG:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{notice:i,template:{$video:n}}=r,l=(0,t.createElement)("canvas");(0,t.def)(r,"getDataURL",{value:()=>new Promise((s,d)=>{try{l.width=n.videoWidth,l.height=n.videoHeight,l.getContext("2d").drawImage(n,0,0),s(l.toDataURL("image/png"))}catch(f){i.show=f,d(f)}})}),(0,t.def)(r,"getBlobUrl",{value:()=>new Promise((s,d)=>{try{l.width=n.videoWidth,l.height=n.videoHeight,l.getContext("2d").drawImage(n,0,0),l.toBlob(f=>{s(URL.createObjectURL(f))})}catch(f){i.show=f,d(f)}})}),(0,t.def)(r,"screenshot",{value:async s=>{let d=await r.getDataURL(),f=s||`artplayer_${(0,t.secondToTime)(n.currentTime)}`;return(0,t.download)(d,`${f}.png`),r.emit("screenshot",d),d}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],j8GRO:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{notice:i}=r;(0,t.def)(r,"seek",{set(n){r.currentTime=n,r.duration&&(i.show=`${(0,t.secondToTime)(r.currentTime)} / ${(0,t.secondToTime)(r.duration)}`),r.emit("seek",r.currentTime)}}),(0,t.def)(r,"forward",{set(n){r.seek=r.currentTime+n}}),(0,t.def)(r,"backward",{set(n){r.seek=r.currentTime-n}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],cn7iR:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let i=["mini","pip","fullscreen","fullscreenWeb"];(0,t.def)(r,"state",{get:()=>i.find(n=>r[n])||"standard",set(n){for(let l=0;lc);var t=a("../utils");function c(r){let{notice:i,i18n:n,template:l}=r;(0,t.def)(r,"subtitleOffset",{get:()=>{var s;return((s=l.$track)==null?void 0:s.offset)||0},set(s){let{cues:d}=r.subtitle;if(!l.$track||d.length===0)return;let f=(0,t.clamp)(s,-10,10);l.$track.offset=f;for(let p=0;pc);var t=a("../utils");function c(r){function i(n,l){return new Promise((s,d)=>{if(n===r.url)return;let{playing:f,aspectRatio:p,playbackRate:g}=r;r.pause(),r.url=n,r.notice.show="",r.once("video:error",d),r.once("video:loadedmetadata",()=>{r.currentTime=l}),r.once("video:canplay",async()=>{r.playbackRate=g,r.aspectRatio=p,f&&await r.play(),r.notice.show="",s()})})}(0,t.def)(r,"switchQuality",{value:n=>i(n,r.currentTime)}),(0,t.def)(r,"switchUrl",{value:n=>i(n,0)}),(0,t.def)(r,"switch",{set:r.switchUrl})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"7iMuh":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){(0,t.def)(r,"theme",{get:()=>r.cssVar("--art-theme"),set(i){r.cssVar("--art-theme",i)}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"6P0RS":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{events:i,option:n,template:{$progress:l,$video:s}}=r,d=null,f=null,p=!1,g=!1,v=!1;i.hover(l,()=>{v=!0},()=>{v=!1}),r.on("setBar",async(x,m,y)=>{var E;let j=(E=r.controls)==null?void 0:E.thumbnails,{url:k,scale:$}=n.thumbnails;if(!j||!k)return;let S=x==="played"&&y&&t.isMobile;if(x==="hover"||S){if(p||(p=!0,f=await(0,t.loadImg)(k,$),g=!0),!g||!v)return;let C=l.clientWidth*m;(0,t.setStyle)(j,"display","flex"),C>0&&Cl.clientWidth-P/2?(0,t.setStyle)(L,"left",`${l.clientWidth-P}px`):(0,t.setStyle)(L,"left",`${I-P/2}px`)}(C):t.isMobile||(0,t.setStyle)(j,"display","none"),S&&(clearTimeout(d),d=setTimeout(()=>{(0,t.setStyle)(j,"display","none")},500))}}),(0,t.def)(r,"thumbnails",{get:()=>r.option.thumbnails,set(x){x.url&&!r.option.isLive&&(r.option.thumbnails=x,clearTimeout(d),d=null,f=null,p=!1,g=!1)}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],eNi78:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){(0,t.def)(r,"toggle",{value:()=>r.playing?r.pause():r.play()})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"7AUBD":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){(0,t.def)(r,"type",{get:()=>r.option.type,set(i){r.option.type=i}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],cnlLL:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{option:i,template:{$video:n}}=r;(0,t.def)(r,"url",{get:()=>n.src,async set(l){if(l){let s=r.url,d=i.type||(0,t.getExt)(l),f=i.customType[d];d&&f?(await(0,t.sleep)(),r.loading.show=!0,f.call(r,n,l,r)):(URL.revokeObjectURL(s),n.src=l),s!==r.url&&(r.option.url=l,r.isReady&&s&&r.once("video:canplay",()=>{r.emit("restart",l)}))}else await(0,t.sleep)(),r.loading.show=!0}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],iX66j:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{template:{$video:i},i18n:n,notice:l,storage:s}=r;(0,t.def)(r,"volume",{get:()=>i.volume||0,set:d=>{i.volume=(0,t.clamp)(d,0,1),l.show=`${n.get("Volume")}: ${Number.parseInt(100*i.volume,10)}`,i.volume!==0&&s.set("volume",i.volume)}}),(0,t.def)(r,"muted",{get:()=>i.muted,set:d=>{i.muted=d,r.emit("muted",d)}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],cjxJL:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("../utils"),c=a("./autoOrientation"),r=e.interopDefault(c),i=a("./autoPlayback"),n=e.interopDefault(i),l=a("./fastForward"),s=e.interopDefault(l),d=a("./lock"),f=e.interopDefault(d),p=a("./miniProgressBar"),g=e.interopDefault(p);o.default=class{constructor(v){this.art=v,this.id=0;let{option:x}=v;x.miniProgressBar&&!x.isLive&&this.add(g.default),x.lock&&t.isMobile&&this.add(f.default),x.autoPlayback&&!x.isLive&&this.add(n.default),x.autoOrientation&&t.isMobile&&this.add(r.default),x.fastForward&&t.isMobile&&!x.isLive&&this.add(s.default);for(let m=0;mthis.next(v,m)):this.next(v,x)}next(v,x){let m=x&&x.name||v.name||`plugin${this.id}`;return(0,t.errorHandle)(!(0,t.has)(this,m),`Cannot add a plugin that already has the same name: ${m}`),(0,t.def)(this,m,{value:x}),this}}},{"../utils":"aBlEo","./autoOrientation":"jb9jb","./autoPlayback":"21HWM","./fastForward":"4sxBO","./lock":"fjy9V","./miniProgressBar":"d0xRp","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jb9jb:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{notice:i,constructor:n,template:{$player:l,$video:s}}=r,d="art-auto-orientation",f="art-auto-orientation-fullscreen",p=!1;function g(){let{videoWidth:v,videoHeight:x}=s,m=document.documentElement.clientWidth,y=document.documentElement.clientHeight;return v>x&&my}return r.on("fullscreenWeb",v=>{v?g()&&setTimeout(()=>{r.fullscreenWeb&&!(0,t.hasClass)(l,d)&&function(){let x=document.documentElement.clientWidth,m=document.documentElement.clientHeight;(0,t.setStyle)(l,"width",`${m}px`),(0,t.setStyle)(l,"height",`${x}px`),(0,t.setStyle)(l,"transform-origin","0 0"),(0,t.setStyle)(l,"transform",`rotate(90deg) translate(0, -${x}px)`),(0,t.addClass)(l,d),r.isRotate=!0,r.emit("resize")}()},Number(n.AUTO_ORIENTATION_TIME??0)):(0,t.hasClass)(l,d)&&((0,t.setStyle)(l,"width",""),(0,t.setStyle)(l,"height",""),(0,t.setStyle)(l,"transform-origin",""),(0,t.setStyle)(l,"transform",""),(0,t.removeClass)(l,d),r.isRotate=!1,r.emit("resize"))}),r.on("fullscreen",async v=>{var m;let x=!!((m=screen==null?void 0:screen.orientation)!=null&&m.lock);if(v){if(x&&g())try{let y=screen.orientation.type.startsWith("portrait")?"landscape":"portrait";await screen.orientation.lock(y),p=!0,(0,t.addClass)(l,f)}catch(y){p=!1,i.show=y}}else if((0,t.hasClass)(l,f)&&(0,t.removeClass)(l,f),x&&p){try{screen.orientation.unlock()}catch{}p=!1}}),{name:"autoOrientation",get state(){return(0,t.hasClass)(l,d)}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"21HWM":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{i18n:i,icons:n,storage:l,constructor:s,proxy:d,template:{$poster:f}}=r,p=r.layers.add({name:"auto-playback",html:'
'}),g=(0,t.query)(".art-auto-playback-last",p),v=(0,t.query)(".art-auto-playback-jump",p),x=(0,t.query)(".art-auto-playback-close",p);(0,t.append)(x,n.close);let m=null;function y(){let j=(l.get("times")||{})[r.option.id||r.option.url];clearTimeout(m),(0,t.setStyle)(p,"display","none"),j&&j>=s.AUTO_PLAYBACK_MIN&&((0,t.setStyle)(p,"display","flex"),g.textContent=`${i.get("Last Seen")} ${(0,t.secondToTime)(j)}`,v.textContent=i.get("Jump Play"),d(x,"click",()=>{(0,t.setStyle)(p,"display","none")}),d(v,"click",()=>{r.seek=j,r.play(),(0,t.setStyle)(f,"display","none"),(0,t.setStyle)(p,"display","none")}),r.once("video:timeupdate",()=>{m=setTimeout(()=>{(0,t.setStyle)(p,"display","none")},s.AUTO_PLAYBACK_TIMEOUT)}))}return r.on("video:timeupdate",()=>{if(r.playing){let j=l.get("times")||{},k=Object.keys(j);k.length>s.AUTO_PLAYBACK_MAX&&delete j[k[0]],j[r.option.id||r.option.url]=r.currentTime,l.set("times",j)}}),r.on("ready",y),r.on("restart",y),{name:"auto-playback",get times(){return l.get("times")||{}},clear:()=>l.del("times"),delete(j){let k=l.get("times")||{};return delete k[j],l.set("times",k),k}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"4sxBO":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{constructor:i,proxy:n,template:{$player:l,$video:s}}=r,d=null,f=!1,p=1,g=()=>{clearTimeout(d),f&&(f=!1,r.playbackRate=p,(0,t.removeClass)(l,"art-fast-forward"))};return n(s,"touchstart",v=>{v.touches.length===1&&r.playing&&!r.isLock&&(d=setTimeout(()=>{f=!0,p=r.playbackRate,r.playbackRate=i.FAST_FORWARD_VALUE,(0,t.addClass)(l,"art-fast-forward")},i.FAST_FORWARD_TIME))}),r.on("document:touchmove",g),r.on("document:touchend",g),{name:"fastForward",get state(){return(0,t.hasClass)(l,"art-fast-forward")}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],fjy9V:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{layers:i,icons:n,template:{$player:l}}=r;function s(){return(0,t.hasClass)(l,"art-lock")}function d(){(0,t.addClass)(l,"art-lock"),r.isLock=!0,r.emit("lock",!0)}function f(){(0,t.removeClass)(l,"art-lock"),r.isLock=!1,r.emit("lock",!1)}return i.add({name:"lock",mounted(p){let g=(0,t.append)(p,n.lock),v=(0,t.append)(p,n.unlock);(0,t.setStyle)(g,"display","none"),r.on("lock",x=>{x?((0,t.setStyle)(g,"display","inline-flex"),(0,t.setStyle)(v,"display","none")):((0,t.setStyle)(g,"display","none"),(0,t.setStyle)(v,"display","inline-flex"))})},click(){s()?f():d()}}),{name:"lock",get state(){return s()},set state(p){p?d():f()}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],d0xRp:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return r.on("control",i=>{i?(0,t.removeClass)(r.template.$player,"art-mini-progress-bar"):(0,t.addClass)(r.template.$player,"art-mini-progress-bar")}),{name:"mini-progress-bar"}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],bwLGT:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("../utils"),c=a("../utils/component"),r=e.interopDefault(c),i=a("./aspectRatio"),n=e.interopDefault(i),l=a("./flip"),s=e.interopDefault(l),d=a("./playbackRate"),f=e.interopDefault(d),p=a("./subtitleOffset"),g=e.interopDefault(p);class v extends r.default{constructor(m){super(m);let{option:y,controls:j,template:{$setting:k}}=m;this.name="setting",this.$parent=k,this.id=0,this.active=null,this.cache=new Map,this.option=[...this.builtin,...y.settings],y.setting&&(this.format(),this.render(),m.on("blur",()=>{this.show&&(this.show=!1,this.render())}),m.on("focus",$=>{let S=(0,t.includeFromEvent)($,j.setting),E=(0,t.includeFromEvent)($,this.$parent);!this.show||S||E||(this.show=!1,this.render())}),m.on("resize",()=>this.resize()))}get builtin(){let m=[],{option:y}=this.art;return y.playbackRate&&m.push((0,f.default)(this.art)),y.aspectRatio&&m.push((0,n.default)(this.art)),y.flip&&m.push((0,s.default)(this.art)),y.subtitleOffset&&m.push((0,g.default)(this.art)),m}traverse(m,y=this.option){var j;for(let k=0;k{y.default=y===m,y.default&&y.$item&&(0,t.inverseClass)(y.$item,"art-current")},m.$option),this.render(m.$parents)}format(m=this.option,y,j,k=[]){for(let $=0;$y}),(0,t.def)(S,"$parents",{get:()=>j}),(0,t.def)(S,"$option",{get:()=>m});let E=[];(0,t.def)(S,"$events",{get:()=>E}),(0,t.def)(S,"$formatted",{get:()=>!0})}this.format(S.selector||[],S,m,k)}this.option=m}find(m=""){let y=null;return this.traverse(j=>{j.name===m&&(y=j)}),y}resize(){var S,E;let{controls:m,constructor:{SETTING_WIDTH:y,SETTING_ITEM_HEIGHT:j},template:{$player:k,$setting:$}}=this.art;if(m.setting&&this.show){let C=((E=(S=this.active[0])==null?void 0:S.$parent)==null?void 0:E.width)||y,{left:I,width:L}=(0,t.getRect)(m.setting),{left:R,width:w}=(0,t.getRect)(k),b=I-R+L/2-C/2,T=this.active===this.option?this.active.length*j:(this.active.length+1)*j;if((0,t.setStyle)($,"height",`${T}px`),(0,t.setStyle)($,"width",`${C}px`),this.art.isRotate||t.isMobile)return;b+C>w?((0,t.setStyle)($,"left",null),(0,t.setStyle)($,"right",null)):((0,t.setStyle)($,"left",`${b}px`),(0,t.setStyle)($,"right","auto"))}}inactivate(m){for(let y=0;y'),C=(0,t.createElement)("div");(0,t.addClass)(C,"art-setting-item-left-icon"),(0,t.append)(C,k),(0,t.append)(E,C),(0,t.append)(E,m.$parent.html);let I=j(S,"click",()=>this.render(m.$parents));m.$parent.$events.push(I),(0,t.append)(y,S)}createItem(m,y=!1){var F,P;if(!this.cache.has(m.$option))return;let j=this.cache.get(m.$option),k=m.$item,$="selector";(0,t.has)(m,"switch")&&($="switch"),(0,t.has)(m,"range")&&($="range"),(0,t.has)(m,"onClick")&&($="button");let{icons:S,proxy:E,constructor:C}=this.art,I=(0,t.createElement)("div");(0,t.addClass)(I,"art-setting-item"),(0,t.setStyle)(I,"height",`${C.SETTING_ITEM_HEIGHT}px`),I.dataset.name=m.name||"",I.dataset.value=m.value||"";let L=(0,t.append)(I,'
'),R=(0,t.append)(I,'
'),w=(0,t.createElement)("div");switch((0,t.addClass)(w,"art-setting-item-left-icon"),$){case"button":case"switch":case"range":(0,t.append)(w,m.icon||S.config);break;case"selector":(F=m.selector)!=null&&F.length?(0,t.append)(w,m.icon||S.config):(0,t.append)(w,S.check)}(0,t.append)(L,w),(0,t.def)(m,"$icon",{configurable:!0,get:()=>w}),(0,t.def)(m,"icon",{configurable:!0,get:()=>w.innerHTML,set(M){w.innerHTML="",(0,t.append)(w,M)}});let b=(0,t.createElement)("div");(0,t.addClass)(b,"art-setting-item-left-text"),(0,t.append)(b,m.html||""),(0,t.append)(L,b),(0,t.def)(m,"$html",{configurable:!0,get:()=>b}),(0,t.def)(m,"html",{configurable:!0,get:()=>b.innerHTML,set(M){b.innerHTML="",(0,t.append)(b,M)}});let T=(0,t.createElement)("div");switch((0,t.addClass)(T,"art-setting-item-right-tooltip"),(0,t.append)(T,m.tooltip||""),(0,t.append)(R,T),(0,t.def)(m,"$tooltip",{configurable:!0,get:()=>T}),(0,t.def)(m,"tooltip",{configurable:!0,get:()=>T.innerHTML,set(M){T.innerHTML="",(0,t.append)(T,M)}}),$){case"switch":{let M=(0,t.createElement)("div");(0,t.addClass)(M,"art-setting-item-right-icon");let q=(0,t.append)(M,S.switchOn),O=(0,t.append)(M,S.switchOff);(0,t.setStyle)(m.switch?O:q,"display","none"),(0,t.append)(R,M),(0,t.def)(m,"$switch",{configurable:!0,get:()=>M});let B=m.switch;(0,t.def)(m,"switch",{configurable:!0,get:()=>B,set(H){B=H,H?((0,t.setStyle)(O,"display","none"),(0,t.setStyle)(q,"display",null)):((0,t.setStyle)(O,"display",null),(0,t.setStyle)(q,"display","none"))}});break}case"range":{let M=(0,t.createElement)("div");(0,t.addClass)(M,"art-setting-item-right-icon");let q=(0,t.append)(M,'');q.value=m.range[0],q.min=m.range[1],q.max=m.range[2],q.step=m.range[3],(0,t.addClass)(q,"art-setting-range"),(0,t.append)(R,M),(0,t.def)(m,"$range",{configurable:!0,get:()=>q});let O=[...m.range];(0,t.def)(m,"range",{configurable:!0,get:()=>O,set(B){O=[...B],q.value=B[0],q.min=B[1],q.max=B[2],q.step=B[3]}})}break;case"selector":if((P=m.selector)!=null&&P.length){let M=(0,t.createElement)("div");(0,t.addClass)(M,"art-setting-item-right-icon"),(0,t.append)(M,S.arrowRight),(0,t.append)(R,M)}}switch($){case"switch":if(m.onSwitch){let M=E(I,"click",async q=>{m.switch=await m.onSwitch.call(this.art,m,I,q)});m.$events.push(M)}break;case"range":if(m.$range){if(m.onRange){let M=E(m.$range,"change",async q=>{m.range[0]=m.$range.valueAsNumber,m.tooltip=await m.onRange.call(this.art,m,I,q)});m.$events.push(M)}if(m.onChange){let M=E(m.$range,"input",async q=>{m.range[0]=m.$range.valueAsNumber,m.tooltip=await m.onChange.call(this.art,m,I,q)});m.$events.push(M)}}break;case"selector":{let M=E(I,"click",async q=>{var O;(O=m.selector)!=null&&O.length?this.render(m.selector):(this.check(m),m.$parent.onSelect&&(m.$parent.tooltip=await m.$parent.onSelect.call(this.art,m,I,q)))});m.$events.push(M),m.default&&(0,t.addClass)(I,"art-current")}break;case"button":if(m.onClick){let M=E(I,"click",async q=>{m.tooltip=await m.onClick.call(this.art,m,I,q)});m.$events.push(M)}}(0,t.def)(m,"$item",{configurable:!0,get:()=>I}),y?(0,t.replaceElement)(I,k):(0,t.append)(j,I),m.mounted&&setTimeout(()=>m.mounted.call(this.art,m.$item,m),0)}render(m=this.option){var y;if(this.active=m,this.cache.has(m)){let j=this.cache.get(m);(0,t.inverseClass)(j,"art-current")}else{let j=(0,t.createElement)("div");this.cache.set(m,j),(0,t.addClass)(j,"art-setting-panel"),(0,t.append)(this.$parent,j),(0,t.inverseClass)(j,"art-current"),(y=m[0])!=null&&y.$parent&&this.createHeader(m[0]);for(let k=0;k({value:f,name:`aspect-ratio-${f}`,default:f===c.aspectRatio,html:s(f)})),onSelect:f=>(c.aspectRatio=f.value,f.html),mounted:()=>{d(),c.on("aspectRatio",()=>d())}}}e.defineInteropFlag(o),e.export(o,"default",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],ljJTO:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{i18n:i,icons:n,constructor:{SETTING_ITEM_WIDTH:l,FLIP:s}}=r;function d(p){return i.get((0,t.capitalize)(p))}function f(){let p=r.setting.find(`flip-${r.flip}`);r.setting.check(p)}return{width:l,name:"flip",html:i.get("Video Flip"),tooltip:d(r.flip),icon:n.flip,selector:s.map(p=>({value:p,name:`flip-${p}`,default:p===r.flip,html:d(p)})),onSelect:p=>(r.flip=p.value,p.html),mounted:()=>{f(),r.on("flip",()=>f())}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"3QcSQ":[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(c){let{i18n:r,icons:i,constructor:{SETTING_ITEM_WIDTH:n,PLAYBACK_RATE:l}}=c;function s(f){return f===1?r.get("Normal"):f.toFixed(1)}function d(){let f=c.setting.find(`playback-rate-${c.playbackRate}`);c.setting.check(f)}return{width:n,name:"playback-rate",html:r.get("Play Speed"),tooltip:s(c.playbackRate),icon:i.playbackRate,selector:l.map(f=>({value:f,name:`playback-rate-${f}`,default:f===c.playbackRate,html:s(f)})),onSelect:f=>(c.playbackRate=f.value,f.html),mounted:()=>{d(),c.on("video:ratechange",()=>d())}}}e.defineInteropFlag(o),e.export(o,"default",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],eB5hg:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(c){let{i18n:r,icons:i,constructor:n}=c;return{width:n.SETTING_ITEM_WIDTH,name:"subtitle-offset",html:r.get("Subtitle Offset"),icon:i.subtitle,tooltip:"0s",range:[0,-10,10,.1],onChange:l=>(c.subtitleOffset=l.range[0],`${l.range[0]}s`),mounted:(l,s)=>{c.on("subtitleOffset",d=>{s.$range.value=d,s.tooltip=`${d}s`})}}}e.defineInteropFlag(o),e.export(o,"default",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],kwqbK:[function(a,u,o,h){a("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o),o.default=class{constructor(){this.name="artplayer_settings",this.settings={}}get(e){try{let t=JSON.parse(window.localStorage.getItem(this.name))||{};return e?t[e]:t}catch{return e?this.settings[e]:this.settings}}set(e,t){try{let c=Object.assign({},this.get(),{[e]:t});window.localStorage.setItem(this.name,JSON.stringify(c))}catch{this.settings[e]=t}}del(e){try{let t=this.get();delete t[e],window.localStorage.setItem(this.name,JSON.stringify(t))}catch{delete this.settings[e]}}clear(){try{window.localStorage.removeItem(this.name)}catch{this.settings={}}}}},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],k5613:[function(a,u,o,h){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("option-validator"),c=e.interopDefault(t),r=a("./scheme"),i=e.interopDefault(r),n=a("./utils"),l=a("./utils/component"),s=e.interopDefault(l);class d extends s.default{constructor(p){super(p),this.name="subtitle",this.option=null,this.destroyEvent=()=>null,this.init(p.option.subtitle);let g=!1;p.on("video:timeupdate",()=>{if(!this.url)return;let v=this.art.template.$video.webkitDisplayingFullscreen;typeof v=="boolean"&&v!==g&&(g=v,this.createTrack(v?"subtitles":"metadata",this.url))})}get url(){return this.art.template.$track.src}set url(p){this.switch(p)}get textTrack(){var p,g;return(g=(p=this.art.template.$video)==null?void 0:p.textTracks)==null?void 0:g[0]}get activeCues(){return this.textTrack?Array.from(this.textTrack.activeCues):[]}get cues(){return this.textTrack?Array.from(this.textTrack.cues):[]}style(p,g){let{$subtitle:v}=this.art.template;return typeof p=="object"?(0,n.setStyles)(v,p):(0,n.setStyle)(v,p,g)}update(){let{option:{subtitle:p},template:{$subtitle:g}}=this.art;g.innerHTML="",this.activeCues.length&&(this.art.emit("subtitleBeforeUpdate",this.activeCues),g.innerHTML=this.activeCues.map((v,x)=>v.text.split(/\r?\n/).filter(m=>m.trim()).map(m=>`
${p.escape?(0,n.escape)(m):m}
`).join("")).join(""),this.art.emit("subtitleAfterUpdate",this.activeCues))}async switch(p,g={}){let{i18n:v,notice:x,option:m}=this.art,y={...m.subtitle,...g,url:p},j=await this.init(y);return g.name&&(x.show=`${v.get("Switch Subtitle")}: ${g.name}`),j}createTrack(p,g){let{template:v,proxy:x,option:m}=this.art,{$video:y,$track:j}=v,k=(0,n.createElement)("track");k.default=!0,k.kind=p,k.src=g,k.label=m.subtitle.name||"Artplayer",k.track.mode="hidden",k.onload=()=>{this.art.emit("subtitleLoad",this.cues,this.option)},this.art.events.remove(this.destroyEvent),j.onload=null,(0,n.remove)(j),(0,n.append)(y,k),v.$track=k,this.destroyEvent=x(this.textTrack,"cuechange",()=>this.update())}async init(p){let{notice:g,template:{$subtitle:v}}=this.art;return this.textTrack?((0,c.default)(p,i.default.subtitle),p.url?(this.option=p,this.style(p.style),fetch(p.url).then(x=>x.arrayBuffer()).then(x=>{let m=new TextDecoder(p.encoding).decode(x);switch(p.type||(0,n.getExt)(p.url)){case"srt":{let y=(0,n.srtToVtt)(m),j=p.onVttLoad(y);return(0,n.vttToBlob)(j)}case"ass":{let y=(0,n.assToVtt)(m),j=p.onVttLoad(y);return(0,n.vttToBlob)(j)}case"vtt":{let y=p.onVttLoad(m);return(0,n.vttToBlob)(y)}default:return p.url}}).then(x=>(v.innerHTML="",this.url===x||(URL.revokeObjectURL(this.url),this.createTrack("metadata",x)),x)).catch(x=>{throw v.innerHTML="",g.show=x,x})):void 0):null}}o.default=d},{"option-validator":"g7VGh","./scheme":"biLjm","./utils":"aBlEo","./utils/component":"idCEj","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],fwOA1:[function(a,u,o,h){a("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o);var e=a("../package.json"),t=a("./utils");class c{constructor(i){this.art=i;let{option:n,constructor:l}=i;n.container instanceof Element?this.$container=n.container:(this.$container=(0,t.query)(n.container),(0,t.errorHandle)(this.$container,`No container element found by ${n.container}`)),(0,t.errorHandle)((0,t.supportsFlex)(),"The current browser does not support flex layout");let s=this.$container.tagName.toLowerCase();(0,t.errorHandle)(s==="div",`Unsupported container element type, only support 'div' but got '${s}'`),(0,t.errorHandle)(l.instances.every(d=>d.template.$container!==this.$container),"Cannot mount multiple instances on the same dom element"),this.query=this.query.bind(this),this.$container.dataset.artId=i.id,this.init()}static get html(){return`
Player version:
${e.version}
Video url:
Video volume:
Video time:
Video duration:
Video resolution:
x
[x]
`}query(i){return(0,t.query)(i,this.$container)}init(){let{option:i}=this.art;if(i.useSSR||(this.$container.innerHTML=c.html),this.$player=this.query(".art-video-player"),this.$video=this.query(".art-video"),this.$track=this.query("track"),this.$poster=this.query(".art-poster"),this.$subtitle=this.query(".art-subtitle"),this.$danmuku=this.query(".art-danmuku"),this.$bottom=this.query(".art-bottom"),this.$progress=this.query(".art-progress"),this.$controls=this.query(".art-controls"),this.$controlsLeft=this.query(".art-controls-left"),this.$controlsCenter=this.query(".art-controls-center"),this.$controlsRight=this.query(".art-controls-right"),this.$layer=this.query(".art-layers"),this.$loading=this.query(".art-loading"),this.$notice=this.query(".art-notice"),this.$noticeInner=this.query(".art-notice-inner"),this.$mask=this.query(".art-mask"),this.$state=this.query(".art-state"),this.$setting=this.query(".art-settings"),this.$info=this.query(".art-info"),this.$infoPanel=this.query(".art-info-panel"),this.$infoClose=this.query(".art-info-close"),this.$contextmenu=this.query(".art-contextmenus"),i.proxy){let n=i.proxy.call(this.art,this.art);(0,t.errorHandle)(n instanceof HTMLVideoElement||n instanceof HTMLCanvasElement,"Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'"),(0,t.replaceElement)(n,this.$video),n.className="art-video",this.$video=n}i.backdrop&&(0,t.addClass)(this.$player,"art-backdrop"),t.isMobile&&(0,t.addClass)(this.$player,"art-mobile")}destroy(i){i?this.$container.innerHTML="":(0,t.addClass)(this.$player,"art-destroy")}}o.default=c},{"../package.json":"lh3R5","./utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"4NM7P":[function(a,u,o,h){a("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o),o.default=class{on(e,t,c){let r=this.e||(this.e={});return(r[e]||(r[e]=[])).push({fn:t,ctx:c}),this}once(e,t,c){let r=this;function i(...n){r.off(e,i),t.apply(c,n)}return i._=t,this.on(e,i,c)}emit(e,...t){let c=((this.e||(this.e={}))[e]||[]).slice();for(let r=0;rd.destroy()),d.on(Hls.Events.ERROR,(f,p)=>{if(p.fatal)switch(p.type){case Hls.ErrorTypes.NETWORK_ERROR:console.warn("HLS network error, trying to recover..."),d.startLoad();break;case Hls.ErrorTypes.MEDIA_ERROR:console.warn("HLS media error, trying to recover..."),d.recoverMediaError();break;default:console.error("Fatal HLS error");break}})}else n.canPlayType("application/vnd.apple.mpegurl")&&(n.src=l)}},settings:[{html:"Speed",selector:[{html:"0.5x",value:.5},{html:"0.75x",value:.75},{html:"Normal",value:1,default:!0},{html:"1.25x",value:1.25},{html:"1.5x",value:1.5},{html:"2x",value:2}],onSelect(i){return V&&(V.playbackRate=i.value),i.html}}],icons:{loading:'
',state:''},cssVar:{"--art-theme":"#f5c518","--art-background-color":"#0f0f0f","--art-progress-color":"#f5c518","--art-control-background-color":"rgba(0, 0, 0, 0.8)","--art-control-height":"48px","--art-bottom-gap":"12px"}};return c.length>0&&(r.quality=c.map((i,n)=>({default:n===0,html:i,url:o}))),V=new Qt(r),V.on("ready",()=>{console.log("Player ready"),V.video&&(V.video.preload="auto")}),V.on("video:waiting",()=>{console.log("Buffering...")}),V.on("video:canplay",()=>{console.log("Can play")}),V.on("error",i=>{console.error("Player error:",i)}),V}function te(){V&&(V.destroy(),V=null)}const ee=4e3;function ye(a,u="info"){const o=document.getElementById("toastContainer");if(!o)return;const h=document.createElement("div");h.className=`toast toast--${u}`,h.innerHTML=` +`)}`}e.defineInteropFlag(o),e.export(o,"srtToVtt",()=>t),e.export(o,"vttToBlob",()=>c),e.export(o,"assToVtt",()=>r)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],f7gsx:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(i=0){return new Promise(n=>setTimeout(n,i))}function c(i,n){let s;return function(...l){let u=()=>(s=null,i.apply(this,l));clearTimeout(s),s=setTimeout(u,n)}}function r(i,n){let s=!1;return function(...l){s||(i.apply(this,l),s=!0,setTimeout(()=>{s=!1},n))}}e.defineInteropFlag(o),e.export(o,"sleep",()=>t),e.export(o,"debounce",()=>c),e.export(o,"throttle",()=>r)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],idCEj:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("option-validator"),c=e.interopDefault(t),r=a("../scheme"),i=a("./dom"),n=a("./error");o.default=class{constructor(s){this.id=0,this.art=s,this.cache=new Map,this.add=this.add.bind(this),this.remove=this.remove.bind(this),this.update=this.update.bind(this)}get show(){return(0,i.hasClass)(this.art.template.$player,`art-${this.name}-show`)}set show(s){let{$player:l}=this.art.template,u=`art-${this.name}-show`;s?(0,i.addClass)(l,u):(0,i.removeClass)(l,u),this.art.emit(this.name,s)}toggle(){this.show=!this.show}add(s){let l=typeof s=="function"?s(this.art):s;if(l.html=l.html||"",(0,c.default)(l,r.ComponentOption),!this.$parent||!this.name||l.disable)return;let u=l.name||`${this.name}${this.id}`,d=this.cache.get(u);(0,n.errorHandle)(!d,`Can't add an existing [${u}] to the [${this.name}]`),this.id+=1;let f=(0,i.createElement)("div");(0,i.addClass)(f,`art-${this.name}`),(0,i.addClass)(f,`art-${this.name}-${u}`);let g=Array.from(this.$parent.children);f.dataset.index=l.index||this.id;let y=g.find(h=>Number(h.dataset.index)>=Number(f.dataset.index));y?y.insertAdjacentElement("beforebegin",f):(0,i.append)(this.$parent,f),l.html&&(0,i.append)(f,l.html),l.style&&(0,i.setStyles)(f,l.style),l.tooltip&&(0,i.tooltip)(f,l.tooltip);let x=[];if(l.click){let h=this.art.events.proxy(f,"click",v=>{v.preventDefault(),l.click.call(this.art,this,v)});x.push(h)}return l.selector&&["left","right"].includes(l.position)&&this.selector(l,f,x),this[u]=f,this.cache.set(u,{$ref:f,events:x,option:l}),l.mounted&&l.mounted.call(this.art,f),f}remove(s){let l=this.cache.get(s);(0,n.errorHandle)(l,`Can't find [${s}] from the [${this.name}]`),l.option.beforeUnmount&&l.option.beforeUnmount.call(this.art,l.$ref);for(let u=0;ud);var t=a("../utils");let c="array",r="boolean",i="string",n="number",s="object",l="function";function u(f,g,y){return(0,t.errorHandle)(g===i||g===n||f instanceof Element,`${y.join(".")} require '${i}' or 'Element' type`)}let d={html:u,disable:`?${r}`,name:`?${i}`,index:`?${n}`,style:`?${s}`,click:`?${l}`,mounted:`?${l}`,tooltip:`?${i}|${n}`,width:`?${n}`,selector:`?${c}`,onSelect:`?${l}`,switch:`?${r}`,onSwitch:`?${l}`,range:`?${c}`,onRange:`?${l}`,onChange:`?${l}`};o.default={id:i,container:u,url:i,poster:i,type:i,theme:i,lang:i,volume:n,isLive:r,muted:r,autoplay:r,autoSize:r,autoMini:r,loop:r,flip:r,playbackRate:r,aspectRatio:r,screenshot:r,setting:r,hotkey:r,pip:r,mutex:r,backdrop:r,fullscreen:r,fullscreenWeb:r,subtitleOffset:r,miniProgressBar:r,useSSR:r,playsInline:r,lock:r,gesture:r,fastForward:r,autoPlayback:r,autoOrientation:r,airplay:r,proxy:`?${l}`,plugins:[l],layers:[d],contextmenu:[d],settings:[d],controls:[{...d,position:(f,g,y)=>{let x=["top","left","right"];return(0,t.errorHandle)(x.includes(f),`${y.join(".")} only accept ${x.toString()} as parameters`)}}],quality:[{default:`?${r}`,html:i,url:i}],highlight:[{time:n,text:i}],thumbnails:{url:i,number:n,column:n,width:n,height:n,scale:n},subtitle:{url:i,name:i,type:i,style:s,escape:r,encoding:i,onVttLoad:l},moreVideoAttr:s,i18n:s,icons:s,cssVar:s,customType:s}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"6XHP2":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>{let{i18n:n,constructor:{ASPECT_RATIO:s}}=i,l=s.map(u=>`${u==="default"?n.get("Default"):u}`).join("");return{...r,html:`${n.get("Aspect Ratio")}: ${l}`,click:(u,d)=>{let{value:f}=d.target.dataset;f&&(i.aspectRatio=f,u.show=!1)},mounted:u=>{let d=(0,t.query)('[data-value="default"]',u);d&&(0,t.inverseClass)(d,"art-current"),i.on("aspectRatio",f=>{let g=(0,t.queryAll)("span",u).find(y=>y.dataset.value===f);g&&(0,t.inverseClass)(g,"art-current")})}}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],eF6AX:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(c){return r=>({...c,html:r.i18n.get("Close"),click:i=>{i.show=!1}})}e.defineInteropFlag(o),e.export(o,"default",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"7Wg1P":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>{let{i18n:n,constructor:{FLIP:s}}=i,l=s.map(u=>`${n.get((0,t.capitalize)(u))}`).join("");return{...r,html:`${n.get("Video Flip")}: ${l}`,click:(u,d)=>{let{value:f}=d.target.dataset;f&&(i.flip=f.toLowerCase(),u.show=!1)},mounted:u=>{let d=(0,t.query)('[data-value="normal"]',u);d&&(0,t.inverseClass)(d,"art-current"),i.on("flip",f=>{let g=(0,t.queryAll)("span",u).find(y=>y.dataset.value===f);g&&(0,t.inverseClass)(g,"art-current")})}}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],fjRnU:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(c){return r=>({...c,html:r.i18n.get("Video Info"),click:i=>{r.info.show=!0,i.show=!1}})}e.defineInteropFlag(o),e.export(o,"default",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],hm1DY:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>{let{i18n:n,constructor:{PLAYBACK_RATE:s}}=i,l=s.map(u=>`${u===1?n.get("Normal"):u.toFixed(1)}`).join("");return{...r,html:`${n.get("Play Speed")}: ${l}`,click:(u,d)=>{let{value:f}=d.target.dataset;f&&(i.playbackRate=Number(f),u.show=!1)},mounted:u=>{let d=(0,t.query)('[data-value="1"]',u);d&&(0,t.inverseClass)(d,"art-current"),i.on("video:ratechange",()=>{let f=(0,t.queryAll)("span",u).find(g=>Number(g.dataset.value)===i.playbackRate);f&&(0,t.inverseClass)(f,"art-current")})}}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],aJBeL:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>function(c){return{...c,html:`ArtPlayer ${t.version}`}});var t=a("../../package.json")},{"../../package.json":"lh3R5","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],dp1yk:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("../utils"),c=a("../utils/component"),r=e.interopDefault(c),i=a("./airplay"),n=e.interopDefault(i),s=a("./fullscreen"),l=e.interopDefault(s),u=a("./fullscreenWeb"),d=e.interopDefault(u),f=a("./pip"),g=e.interopDefault(f),y=a("./playAndPause"),x=e.interopDefault(y),h=a("./progress"),v=e.interopDefault(h),w=a("./screenshot"),j=e.interopDefault(w),E=a("./setting"),S=e.interopDefault(E),$=a("./time"),C=e.interopDefault($),I=a("./volume"),L=e.interopDefault(I);class A extends r.default{constructor(b){super(b),this.isHover=!1,this.name="control",this.timer=Date.now();let{constructor:T}=b,{$player:F,$bottom:D}=this.art.template;b.on("mousemove",()=>{t.isMobile||(this.show=!0)}),b.on("click",()=>{t.isMobile?this.toggle():this.show=!0}),b.on("document:mousemove",M=>{this.isHover=(0,t.includeFromEvent)(M,D)}),b.on("video:timeupdate",()=>{!b.setting.show&&!this.isHover&&!b.isInput&&b.playing&&this.show&&Date.now()-this.timer>=T.CONTROL_HIDE_TIME&&(this.show=!1)}),b.on("control",M=>{M?((0,t.removeClass)(F,"art-hide-cursor"),(0,t.addClass)(F,"art-hover"),this.timer=Date.now()):((0,t.addClass)(F,"art-hide-cursor"),(0,t.removeClass)(F,"art-hover"))}),this.init()}init(){let{option:b}=this.art;b.isLive||this.add((0,v.default)({name:"progress",position:"top",index:10})),this.add({name:"thumbnails",position:"top",index:20}),this.add((0,x.default)({name:"playAndPause",position:"left",index:10})),this.add((0,L.default)({name:"volume",position:"left",index:20})),b.isLive||this.add((0,C.default)({name:"time",position:"left",index:30})),b.quality.length&&(0,t.sleep)().then(()=>{this.art.quality=b.quality}),b.screenshot&&!t.isMobile&&this.add((0,j.default)({name:"screenshot",position:"right",index:20})),b.setting&&this.add((0,S.default)({name:"setting",position:"right",index:30})),b.pip&&this.add((0,g.default)({name:"pip",position:"right",index:40})),b.airplay&&window.WebKitPlaybackTargetAvailabilityEvent&&this.add((0,n.default)({name:"airplay",position:"right",index:50})),b.fullscreenWeb&&this.add((0,d.default)({name:"fullscreenWeb",position:"right",index:60})),b.fullscreen&&this.add((0,l.default)({name:"fullscreen",position:"right",index:70}));for(let T=0;Tb.selector}),(0,t.def)(H,"$control_item",{get:()=>z}),(0,t.def)(H,"$control_value",{get:()=>M})}let O=D(q,"click",async P=>{let H=(0,t.getComposedPath)(P),z=b.selector.find(W=>W.$control_item===H.find(G=>W.$control_item===G));this.check(z),b.onSelect&&(M.innerHTML=await b.onSelect.call(this.art,z,z.$control_item,P))});F.push(O)}}o.default=A},{"../utils":"aBlEo","../utils/component":"idCEj","./airplay":"amOzz","./fullscreen":"3GuBU","./fullscreenWeb":"jj1KV","./pip":"jMeHN","./playAndPause":"u3h8M","./progress":"1XZSS","./screenshot":"dIscA","./setting":"aqA0g","./time":"ihweO","./volume":"fJVWn","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],amOzz:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>({...r,tooltip:i.i18n.get("AirPlay"),mounted:n=>{let{proxy:s,icons:l}=i;(0,t.append)(n,l.airplay),s(n,"click",()=>i.airplay())}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"3GuBU":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>({...r,tooltip:i.i18n.get("Fullscreen"),mounted:n=>{let{proxy:s,icons:l,i18n:u}=i,d=(0,t.append)(n,l.fullscreenOn),f=(0,t.append)(n,l.fullscreenOff);(0,t.setStyle)(f,"display","none"),s(n,"click",()=>{i.fullscreen=!i.fullscreen}),i.on("fullscreen",g=>{g?((0,t.tooltip)(n,u.get("Exit Fullscreen")),(0,t.setStyle)(d,"display","none"),(0,t.setStyle)(f,"display","inline-flex")):((0,t.tooltip)(n,u.get("Fullscreen")),(0,t.setStyle)(d,"display","inline-flex"),(0,t.setStyle)(f,"display","none"))})}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jj1KV:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>({...r,tooltip:i.i18n.get("Web Fullscreen"),mounted:n=>{let{proxy:s,icons:l,i18n:u}=i,d=(0,t.append)(n,l.fullscreenWebOn),f=(0,t.append)(n,l.fullscreenWebOff);(0,t.setStyle)(f,"display","none"),s(n,"click",()=>{i.fullscreenWeb=!i.fullscreenWeb}),i.on("fullscreenWeb",g=>{g?((0,t.tooltip)(n,u.get("Exit Web Fullscreen")),(0,t.setStyle)(d,"display","none"),(0,t.setStyle)(f,"display","inline-flex")):((0,t.tooltip)(n,u.get("Web Fullscreen")),(0,t.setStyle)(d,"display","inline-flex"),(0,t.setStyle)(f,"display","none"))})}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jMeHN:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>({...r,tooltip:i.i18n.get("PIP Mode"),mounted:n=>{let{proxy:s,icons:l,i18n:u}=i;(0,t.append)(n,l.pip),s(n,"click",()=>{i.pip=!i.pip}),i.on("pip",d=>{(0,t.tooltip)(n,u.get(d?"Exit PIP Mode":"PIP Mode"))})}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],u3h8M:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>({...r,mounted:n=>{let{proxy:s,icons:l,i18n:u}=i,d=(0,t.append)(n,l.play),f=(0,t.append)(n,l.pause);function g(){(0,t.setStyle)(d,"display","flex"),(0,t.setStyle)(f,"display","none")}function y(){(0,t.setStyle)(d,"display","none"),(0,t.setStyle)(f,"display","flex")}(0,t.tooltip)(d,u.get("Play")),(0,t.tooltip)(f,u.get("Pause")),s(d,"click",()=>{i.play()}),s(f,"click",()=>{i.pause()}),i.playing?y():g(),i.on("video:playing",()=>{y()}),i.on("video:pause",()=>{g()})}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"1XZSS":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"getPosFromEvent",()=>c),e.export(o,"setCurrentTime",()=>r),e.export(o,"default",()=>i);var t=a("../utils");function c(n,s){let{$progress:l}=n.template,{left:u}=(0,t.getRect)(l),d=t.isMobile?s.touches[0].clientX:s.clientX,f=(0,t.clamp)(d-u,0,l.clientWidth),g=f/l.clientWidth*n.duration,y=(0,t.secondToTime)(g),x=(0,t.clamp)(f/l.clientWidth,0,1);return{second:g,time:y,width:f,percentage:x}}function r(n,s){if(n.isRotate){let l=s.touches[0].clientY/n.height,u=l*n.duration;n.emit("setBar","played",l,s),n.seek=u}else{let{second:l,percentage:u}=c(n,s);n.emit("setBar","played",u,s),n.seek=l}}function i(n){return s=>{let{icons:l,option:u,proxy:d}=s;return{...n,html:'
',mounted:f=>{let g=null,y=!1,x=(0,t.query)(".art-progress-hover",f),h=(0,t.query)(".art-progress-loaded",f),v=(0,t.query)(".art-progress-played",f),w=(0,t.query)(".art-progress-highlight",f),j=(0,t.query)(".art-progress-indicator",f),E=(0,t.query)(".art-progress-tip",f);function S($,C){let{width:I,time:L}=C||c(s,$);E.textContent=L;let A=E.clientWidth;I<=A/2?(0,t.setStyle)(E,"left",0):I>f.clientWidth-A/2?(0,t.setStyle)(E,"left",`${f.clientWidth-A}px`):(0,t.setStyle)(E,"left",`${I-A/2}px`)}l.indicator?(0,t.append)(j,l.indicator):(0,t.setStyle)(j,"backgroundColor","var(--art-theme)"),s.on("setBar",function($,C,I){let L=$==="played"&&I&&t.isMobile;$==="loaded"&&(0,t.setStyle)(h,"width",`${100*C}%`),$==="hover"&&(0,t.setStyle)(x,"width",`${100*C}%`),$==="played"&&((0,t.setStyle)(v,"width",`${100*C}%`),(0,t.setStyle)(j,"left",`${100*C}%`)),L&&((0,t.setStyle)(E,"display","flex"),S(I,{width:f.clientWidth*C,time:(0,t.secondToTime)(C*s.duration)}),clearTimeout(g),g=setTimeout(()=>{(0,t.setStyle)(E,"display","none")},500))}),s.on("video:loadedmetadata",function(){w.textContent="";for(let $=0;$`;(0,t.append)(w,L)}}),s.constructor.USE_RAF?s.on("raf",()=>{s.emit("setBar","played",s.played),s.emit("setBar","loaded",s.loaded)}):(s.on("video:timeupdate",()=>{s.emit("setBar","played",s.played)}),s.on("video:progress",()=>{s.emit("setBar","loaded",s.loaded)}),s.on("video:ended",()=>{s.emit("setBar","played",1)})),s.emit("setBar","loaded",s.loaded||0),t.isMobile||(d(f,"click",$=>{$.target!==j&&r(s,$)}),d(f,"mousemove",$=>{let{percentage:C}=c(s,$);if(s.emit("setBar","hover",C,$),(0,t.setStyle)(E,"display","flex"),(0,t.includeFromEvent)($,w)){let{width:I}=c(s,$),{text:L}=$.target.dataset;E.textContent=L;let A=E.clientWidth;I<=A/2?(0,t.setStyle)(E,"left",0):I>f.clientWidth-A/2?(0,t.setStyle)(E,"left",`${f.clientWidth-A}px`):(0,t.setStyle)(E,"left",`${I-A/2}px`)}else S($)}),d(f,"mouseleave",$=>{(0,t.setStyle)(E,"display","none"),s.emit("setBar","hover",0,$)}),d(f,"mousedown",$=>{y=$.button===0}),s.on("document:mousemove",$=>{if(y){let{second:C,percentage:I}=c(s,$);s.emit("setBar","played",I,$),s.seek=C}}),s.on("document:mouseup",()=>{y&&(y=!1)}))}}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],dIscA:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>({...r,tooltip:i.i18n.get("Screenshot"),mounted:n=>{let{proxy:s,icons:l}=i;(0,t.append)(n,l.screenshot),s(n,"click",()=>{i.screenshot()})}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],aqA0g:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>({...r,tooltip:i.i18n.get("Show Setting"),mounted:n=>{let{proxy:s,icons:l,i18n:u}=i;(0,t.append)(n,l.setting),s(n,"click",()=>{i.setting.toggle(),i.setting.resize()}),i.on("setting",d=>{(0,t.tooltip)(n,u.get(d?"Hide Setting":"Show Setting"))})}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],ihweO:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return i=>({...r,style:t.isMobile?{fontSize:"12px",padding:"0 5px"}:{cursor:"auto",padding:"0 10px"},mounted:n=>{function s(){let u=`${(0,t.secondToTime)(i.currentTime)} / ${(0,t.secondToTime)(i.duration)}`;u!==n.textContent&&(n.textContent=u)}s();let l=["video:loadedmetadata","video:timeupdate","video:progress"];for(let u=0;uc);var t=a("../utils");function c(r){return i=>({...r,mounted:n=>{let{proxy:s,icons:l}=i,u=(0,t.append)(n,l.volume),d=(0,t.append)(n,l.volumeClose),f=(0,t.append)(n,'
'),g=(0,t.append)(f,'
'),y=(0,t.append)(g,'
'),x=(0,t.append)(g,'
'),h=(0,t.append)(x,'
'),v=(0,t.append)(h,'
'),w=(0,t.append)(x,'
');function j(S){let{top:$,height:C}=(0,t.getRect)(x);return 1-(S.clientY-$)/C}function E(){if(i.muted||i.volume===0)(0,t.setStyle)(u,"display","none"),(0,t.setStyle)(d,"display","flex"),(0,t.setStyle)(w,"top","100%"),(0,t.setStyle)(v,"top","100%"),y.textContent=0;else{let S=100*i.volume;(0,t.setStyle)(u,"display","flex"),(0,t.setStyle)(d,"display","none"),(0,t.setStyle)(w,"top",`${100-S}%`),(0,t.setStyle)(v,"top",`${100-S}%`),y.textContent=Math.floor(S)}}if(E(),i.on("video:volumechange",E),s(u,"click",()=>{i.muted=!0}),s(d,"click",()=>{i.muted=!1}),t.isMobile)(0,t.setStyle)(f,"display","none");else{let S=!1;s(x,"mousedown",$=>{S=$.button===0,i.volume=j($)}),i.on("document:mousemove",$=>{S&&(i.muted=!1,i.volume=j($))}),i.on("document:mouseup",()=>{S&&(S=!1)})}}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jmVSD:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("./clickInit"),c=e.interopDefault(t),r=a("./gestureInit"),i=e.interopDefault(r),n=a("./globalInit"),s=e.interopDefault(n),l=a("./hoverInit"),u=e.interopDefault(l),d=a("./moveInit"),f=e.interopDefault(d),g=a("./resizeInit"),y=e.interopDefault(g),x=a("./updateInit"),h=e.interopDefault(x),v=a("./viewInit"),w=e.interopDefault(v);o.default=class{constructor(j){this.destroyEvents=[],this.proxy=this.proxy.bind(this),this.hover=this.hover.bind(this),(0,c.default)(j,this),(0,u.default)(j,this),(0,f.default)(j,this),(0,y.default)(j,this),(0,i.default)(j,this),(0,w.default)(j,this),(0,s.default)(j,this),(0,h.default)(j,this)}proxy(j,E,S,$={}){if(Array.isArray(E))return E.map(I=>this.proxy(j,I,S,$));j.addEventListener(E,S,$);let C=()=>j.removeEventListener(E,S,$);return this.destroyEvents.push(C),C}hover(j,E,S){E&&this.proxy(j,"mouseenter",E),S&&this.proxy(j,"mouseleave",S)}remove(j){let E=this.destroyEvents.indexOf(j);E>-1&&(j(),this.destroyEvents.splice(E,1))}destroy(){for(let j=0;jc);var t=a("../utils");function c(r,i){let{constructor:n,template:{$player:s,$video:l}}=r;function u(f){(0,t.includeFromEvent)(f,s)?(r.isInput=f.target.tagName==="INPUT",r.isFocus=!0,r.emit("focus",f)):(r.isInput=!1,r.isFocus=!1,r.emit("blur",f))}r.on("document:click",u),r.on("document:contextmenu",u);let d=[];i.proxy(l,"click",f=>{let g=Date.now();d.push(g);let{MOBILE_CLICK_PLAY:y,DBCLICK_TIME:x,MOBILE_DBCLICK_PLAY:h,DBCLICK_FULLSCREEN:v}=n,w=d.filter(j=>g-j<=x);switch(w.length){case 1:r.emit("click",f),t.isMobile?!r.isLock&&y&&r.toggle():r.toggle(),d=w;break;case 2:r.emit("dblclick",f),t.isMobile?!r.isLock&&h&&r.toggle():v&&(r.fullscreen=!r.fullscreen),d=[];break;default:d=[]}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"9wEzB":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>r);var t=a("../control/progress"),c=a("../utils");function r(i,n){if(c.isMobile&&!i.option.isLive){let{$video:s,$progress:l}=i.template,u=null,d=!1,f=0,g=0,y=0,x=v=>{if(v.touches.length===1&&!i.isLock){u===l&&(0,t.setCurrentTime)(i,v),d=!0;let{pageX:w,pageY:j}=v.touches[0];f=w,g=j,y=i.currentTime}},h=v=>{if(v.touches.length===1&&d&&i.duration){let{pageX:w,pageY:j}=v.touches[0],E=function(C,I,L,A){let k=I-A,b=L-C,T=0;if(2>Math.abs(b)&&2>Math.abs(k))return T;let F=180*Math.atan2(k,b)/Math.PI;return F>=-45&&F<45?T=4:F>=45&&F<135?T=1:F>=-135&&F<-45?T=2:(F>=135&&F<=180||F>=-180&&F<-135)&&(T=3),T}(f,g,w,j),S=[3,4].includes(E),$=[1,2].includes(E);if(S&&!i.isRotate||$&&i.isRotate){let C=(0,c.clamp)((w-f)/i.width,-1,1),I=(0,c.clamp)((j-g)/i.height,-1,1),L=i.isRotate?I:C,A=u===s?i.constructor.TOUCH_MOVE_RATIO:1,k=(0,c.clamp)(y+i.duration*L*A,0,i.duration);i.seek=k,i.emit("setBar","played",(0,c.clamp)(k/i.duration,0,1),v),i.notice.show=`${(0,c.secondToTime)(k)} / ${(0,c.secondToTime)(i.duration)}`}}};i.option.gesture&&(n.proxy(s,"touchstart",v=>{u=s,x(v)}),n.proxy(s,"touchmove",h)),n.proxy(l,"touchstart",v=>{u=l,x(v)}),n.proxy(l,"touchmove",h),i.on("document:touchend",()=>{d&&(f=0,g=0,y=0,d=!1,u=null)})}}},{"../control/progress":"1XZSS","../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],ikBrS:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(c,r){let i=["click","mouseup","keydown","touchend","touchmove","mousemove","pointerup","contextmenu","pointermove","visibilitychange","webkitfullscreenchange"],n=["resize","scroll","orientationchange"],s=[];function l(u={}){for(let f=0;f{let g=u.document||d.ownerDocument||document,y=r.proxy(g,f,x=>{c.emit(`document:${f}`,x)});s.push(y)}),n.forEach(f=>{var x;let g=u.window||((x=d.ownerDocument)==null?void 0:x.defaultView)||window,y=r.proxy(g,f,h=>{c.emit(`window:${f}`,h)});s.push(y)})}l(),r.bindGlobalEvents=l}e.defineInteropFlag(o),e.export(o,"default",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jwNq0:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r,i){let{$player:n}=r.template;i.hover(n,s=>{(0,t.addClass)(n,"art-hover"),r.emit("hover",!0,s)},s=>{(0,t.removeClass)(n,"art-hover"),r.emit("hover",!1,s)})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],eqSsP:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(c,r){let{$player:i}=c.template;r.proxy(i,"mousemove",n=>{c.emit("mousemove",n)})}e.defineInteropFlag(o),e.export(o,"default",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"42JNz":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r,i){let{option:n,constructor:s}=r;r.on("resize",()=>{let{aspectRatio:u,notice:d}=r;r.state==="standard"&&n.autoSize&&r.autoSize(),r.aspectRatio=u,d.show=""});let l=(0,t.debounce)(()=>r.emit("resize"),s.RESIZE_TIME);r.on("window:orientationchange",()=>l()),r.on("window:resize",()=>l()),screen&&screen.orientation&&screen.orientation.onchange&&i.proxy(screen.orientation,"change",()=>l())}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"7kM1M":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(c){if(c.constructor.USE_RAF){let r=null;(function i(){c.playing&&c.emit("raf"),c.isDestroy||(r=requestAnimationFrame(i))})(),c.on("destroy",()=>{cancelAnimationFrame(r)})}}e.defineInteropFlag(o),e.export(o,"default",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"2IW9m":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{option:i,constructor:n,template:{$container:s}}=r,l=(0,t.throttle)(()=>{r.emit("view",(0,t.isInViewport)(s,n.SCROLL_GAP))},n.SCROLL_TIME);r.on("window:scroll",()=>l()),r.on("view",u=>{i.autoMini&&(r.mini=!u)})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],dswts:[function(a,p,o,m){a("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o);var e=a("./utils");o.default=class{constructor(t){this.art=t,this.keys={},t.option.hotkey&&!e.isMobile&&this.init()}init(){let{constructor:t}=this.art;this.add("Escape",()=>{this.art.fullscreenWeb&&(this.art.fullscreenWeb=!1)}),this.add("Space",()=>{this.art.toggle()}),this.add("ArrowLeft",()=>{this.art.backward=t.SEEK_STEP}),this.add("ArrowUp",()=>{this.art.volume+=t.VOLUME_STEP}),this.add("ArrowRight",()=>{this.art.forward=t.SEEK_STEP}),this.add("ArrowDown",()=>{this.art.volume-=t.VOLUME_STEP}),this.art.on("document:keydown",c=>{if(this.art.isFocus){let r=document.activeElement.tagName.toUpperCase(),i=document.activeElement.getAttribute("contenteditable");if(r!=="INPUT"&&r!=="TEXTAREA"&&i!==""&&i!=="true"&&!c.altKey&&!c.ctrlKey&&!c.metaKey&&!c.shiftKey){let n=this.keys[c.code];if(n){c.preventDefault();for(let s=0;s(0,U.getIcon)(ut,ft[ut])})}}},{"bundle-text:./airplay.svg":"gkZgZ","bundle-text:./arrow-left.svg":"kQyD4","bundle-text:./arrow-right.svg":"64ztm","bundle-text:./aspect-ratio.svg":"72LvA","bundle-text:./check.svg":"4QmBo","bundle-text:./close.svg":"j1hoe","bundle-text:./config.svg":"hNZaT","bundle-text:./error.svg":"dKh4l","bundle-text:./flip.svg":"lIEIE","bundle-text:./fullscreen-off.svg":"1533e","bundle-text:./fullscreen-on.svg":"76ut3","bundle-text:./fullscreen-web-off.svg":"3NzMk","bundle-text:./fullscreen-web-on.svg":"12xHc","bundle-text:./loading.svg":"iVcUF","bundle-text:./lock.svg":"1J4so","bundle-text:./pause.svg":"1KgkK","bundle-text:./pip.svg":"4h4tM","bundle-text:./play.svg":"jecAY","bundle-text:./playback-rate.svg":"anPe9","bundle-text:./screenshot.svg":"9BPYQ","bundle-text:./setting.svg":"hsI9k","bundle-text:./state.svg":"gr1ZU","bundle-text:./switch-off.svg":"6kdAr","bundle-text:./switch-on.svg":"ksdMo","bundle-text:./unlock.svg":"iz5Qc","bundle-text:./volume-close.svg":"3OZoa","bundle-text:./volume.svg":"hRYA4","../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],gkZgZ:[function(a,p,o,m){p.exports=''},{}],kQyD4:[function(a,p,o,m){p.exports=''},{}],"64ztm":[function(a,p,o,m){p.exports=''},{}],"72LvA":[function(a,p,o,m){p.exports=''},{}],"4QmBo":[function(a,p,o,m){p.exports=''},{}],j1hoe:[function(a,p,o,m){p.exports=''},{}],hNZaT:[function(a,p,o,m){p.exports=''},{}],dKh4l:[function(a,p,o,m){p.exports=''},{}],lIEIE:[function(a,p,o,m){p.exports=''},{}],"1533e":[function(a,p,o,m){p.exports=''},{}],"76ut3":[function(a,p,o,m){p.exports=''},{}],"3NzMk":[function(a,p,o,m){p.exports=''},{}],"12xHc":[function(a,p,o,m){p.exports=''},{}],iVcUF:[function(a,p,o,m){p.exports=''},{}],"1J4so":[function(a,p,o,m){p.exports=''},{}],"1KgkK":[function(a,p,o,m){p.exports=''},{}],"4h4tM":[function(a,p,o,m){p.exports=''},{}],jecAY:[function(a,p,o,m){p.exports=''},{}],anPe9:[function(a,p,o,m){p.exports=''},{}],"9BPYQ":[function(a,p,o,m){p.exports=''},{}],hsI9k:[function(a,p,o,m){p.exports=''},{}],gr1ZU:[function(a,p,o,m){p.exports=''},{}],"6kdAr":[function(a,p,o,m){p.exports=''},{}],ksdMo:[function(a,p,o,m){p.exports=''},{}],iz5Qc:[function(a,p,o,m){p.exports=''},{}],"3OZoa":[function(a,p,o,m){p.exports=''},{}],hRYA4:[function(a,p,o,m){p.exports=''},{}],kZ0F8:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("./utils"),c=a("./utils/component"),r=e.interopDefault(c);class i extends r.default{constructor(s){super(s),this.name="info",t.isMobile||this.init()}init(){let{proxy:s,constructor:l,template:{$infoPanel:u,$infoClose:d,$video:f}}=this.art;s(d,"click",()=>{this.show=!1});let g=null,y=(0,t.queryAll)("[data-video]",u)||[];this.art.on("destroy",()=>clearTimeout(g)),function x(){for(let h=0;h{(0,t.setStyle)(f,"display","none"),(0,t.setStyle)(g,"display",null)}),d.proxy(l.$state,"click",()=>s.play())}}o.default=i},{"./utils":"aBlEo","./utils/component":"idCEj","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],fPVaU:[function(a,p,o,m){a("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o);var e=a("./utils");o.default=class{constructor(t){this.art=t,this.timer=null}set show(t){let{constructor:c,template:{$player:r,$noticeInner:i}}=this.art;t?(i.textContent=t instanceof Error?t.message.trim():t,(0,e.addClass)(r,"art-notice-show"),clearTimeout(this.timer),this.timer=setTimeout(()=>{i.textContent="",(0,e.removeClass)(r,"art-notice-show")},c.NOTICE_TIME)):(0,e.removeClass)(r,"art-notice-show")}get show(){let{template:{$player:t}}=this.art;return t.classList.contains("art-notice-show")}}},{"./utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],uR0Sw:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("./airplayMix"),c=e.interopDefault(t),r=a("./aspectRatioMix"),i=e.interopDefault(r),n=a("./attrMix"),s=e.interopDefault(n),l=a("./autoHeightMix"),u=e.interopDefault(l),d=a("./autoSizeMix"),f=e.interopDefault(d),g=a("./cssVarMix"),y=e.interopDefault(g),x=a("./currentTimeMix"),h=e.interopDefault(x),v=a("./durationMix"),w=e.interopDefault(v),j=a("./eventInit"),E=e.interopDefault(j),S=a("./flipMix"),$=e.interopDefault(S),C=a("./fullscreenMix"),I=e.interopDefault(C),L=a("./fullscreenWebMix"),A=e.interopDefault(L),k=a("./loadedMix"),b=e.interopDefault(k),T=a("./miniMix"),F=e.interopDefault(T),D=a("./optionInit"),M=e.interopDefault(D),q=a("./pauseMix"),O=e.interopDefault(q),P=a("./pipMix"),H=e.interopDefault(P),z=a("./playbackRateMix"),W=e.interopDefault(z),G=a("./playedMix"),rt=e.interopDefault(G),at=a("./playingMix"),ot=e.interopDefault(at),it=a("./playMix"),nt=e.interopDefault(it),K=a("./posterMix"),N=e.interopDefault(K),st=a("./qualityMix"),J=e.interopDefault(st),lt=a("./rectMix"),Y=e.interopDefault(lt),R=a("./screenshotMix"),ht=e.interopDefault(R),X=a("./seekMix"),Q=e.interopDefault(X),tt=a("./stateMix"),et=e.interopDefault(tt),U=a("./subtitleOffsetMix"),ct=e.interopDefault(U),ft=a("./switchMix"),ut=e.interopDefault(ft),$t=a("./themeMix"),St=e.interopDefault($t),Tt=a("./thumbnailsMix"),It=e.interopDefault(Tt),Mt=a("./toggleMix"),Ct=e.interopDefault(Mt),Ft=a("./typeMix"),Rt=e.interopDefault(Ft),qt=a("./urlMix"),Lt=e.interopDefault(qt),At=a("./volumeMix"),Dt=e.interopDefault(At);o.default=class{constructor(B){(0,Lt.default)(B),(0,s.default)(B),(0,nt.default)(B),(0,O.default)(B),(0,Ct.default)(B),(0,Q.default)(B),(0,Dt.default)(B),(0,h.default)(B),(0,w.default)(B),(0,ut.default)(B),(0,W.default)(B),(0,i.default)(B),(0,ht.default)(B),(0,I.default)(B),(0,A.default)(B),(0,H.default)(B),(0,b.default)(B),(0,rt.default)(B),(0,ot.default)(B),(0,f.default)(B),(0,Y.default)(B),(0,$.default)(B),(0,F.default)(B),(0,N.default)(B),(0,u.default)(B),(0,y.default)(B),(0,St.default)(B),(0,Rt.default)(B),(0,et.default)(B),(0,ct.default)(B),(0,c.default)(B),(0,J.default)(B),(0,It.default)(B),(0,E.default)(B),(0,M.default)(B)}}},{"./airplayMix":"d8BTB","./aspectRatioMix":"aQNJl","./attrMix":"5DA9e","./autoHeightMix":"1swKn","./autoSizeMix":"lSbiD","./cssVarMix":"32Hp1","./currentTimeMix":"kfZbu","./durationMix":"eV1ag","./eventInit":"f8NQq","./flipMix":"ea3Qm","./fullscreenMix":"ffXE3","./fullscreenWebMix":"8tarF","./loadedMix":"f9syH","./miniMix":"dLuS7","./optionInit":"d1F69","./pauseMix":"kewk9","./pipMix":"4XzDs","./playbackRateMix":"jphfi","./playedMix":"iNpeS","./playingMix":"aBIWL","./playMix":"hRBri","./posterMix":"fgfXC","./qualityMix":"17rUP","./rectMix":"55qzI","./screenshotMix":"bC6TG","./seekMix":"j8GRO","./stateMix":"cn7iR","./subtitleOffsetMix":"2k4nP","./switchMix":"6SU6j","./themeMix":"7iMuh","./thumbnailsMix":"6P0RS","./toggleMix":"eNi78","./typeMix":"7AUBD","./urlMix":"cnlLL","./volumeMix":"iX66j","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],d8BTB:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{i18n:i,notice:n,proxy:s,template:{$video:l}}=r,u=!0;window.WebKitPlaybackTargetAvailabilityEvent&&l.webkitShowPlaybackTargetPicker?s(l,"webkitplaybacktargetavailabilitychanged",d=>{switch(d.availability){case"available":u=!0;break;case"not-available":u=!1}}):u=!1,(0,t.def)(r,"airplay",{value(){u?(l.webkitShowPlaybackTargetPicker(),r.emit("airplay")):n.show=i.get("AirPlay Not Available")}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],aQNJl:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{i18n:i,notice:n,template:{$video:s,$player:l}}=r;(0,t.def)(r,"aspectRatio",{get:()=>l.dataset.aspectRatio||"default",set(u){if(u||(u="default"),u==="default")(0,t.setStyle)(s,"width",null),(0,t.setStyle)(s,"height",null),(0,t.setStyle)(s,"margin",null),delete l.dataset.aspectRatio;else{let d=u.split(":").map(Number),{clientWidth:f,clientHeight:g}=l,y=d[0]/d[1];f/g>y?((0,t.setStyle)(s,"width",`${y*g}px`),(0,t.setStyle)(s,"height","100%"),(0,t.setStyle)(s,"margin","0 auto")):((0,t.setStyle)(s,"width","100%"),(0,t.setStyle)(s,"height",`${f/y}px`),(0,t.setStyle)(s,"margin","auto 0")),l.dataset.aspectRatio=u}n.show=`${i.get("Aspect Ratio")}: ${u==="default"?i.get("Default"):u}`,r.emit("aspectRatio",u)}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"5DA9e":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{template:{$video:i}}=r;(0,t.def)(r,"attr",{value(n,s){if(s===void 0)return i[n];i[n]=s}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"1swKn":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{template:{$container:i,$video:n}}=r;(0,t.def)(r,"autoHeight",{value(){let{clientWidth:s}=i,{videoHeight:l,videoWidth:u}=n,d=s/u*l;(0,t.setStyle)(i,"height",`${d}px`),r.emit("autoHeight",d)}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],lSbiD:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{$container:i,$player:n,$video:s}=r.template;(0,t.def)(r,"autoSize",{value(){let{videoWidth:l,videoHeight:u}=s,{width:d,height:f}=(0,t.getRect)(i),g=l/u;d/f>g?((0,t.setStyle)(n,"width",`${f*g/d*100}%`),(0,t.setStyle)(n,"height","100%")):((0,t.setStyle)(n,"width","100%"),(0,t.setStyle)(n,"height",`${d/g/f*100}%`)),r.emit("autoSize",{width:r.width,height:r.height})}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"32Hp1":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{$player:i}=r.template;(0,t.def)(r,"cssVar",{value:(n,s)=>s?i.style.setProperty(n,s):getComputedStyle(i).getPropertyValue(n)})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],kfZbu:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{$video:i}=r.template;(0,t.def)(r,"currentTime",{get:()=>i.currentTime||0,set:n=>{Number.isNaN(n=Number.parseFloat(n))||(i.currentTime=(0,t.clamp)(n,0,r.duration))}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],eV1ag:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){(0,t.def)(r,"duration",{get:()=>{let{duration:i}=r.template.$video;return i===1/0?0:i||0}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],f8NQq:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>i);var t=a("../config"),c=e.interopDefault(t),r=a("../utils");function i(n){let{i18n:s,notice:l,option:u,constructor:d,proxy:f,template:{$player:g,$video:y,$poster:x}}=n,h=0;for(let v=0;v{n.emit(`video:${w.type}`,w)});n.on("video:canplay",()=>{h=0,n.loading.show=!1}),n.once("video:canplay",()=>{n.loading.show=!1,n.controls.show=!0,n.mask.show=!0,n.isReady=!0,n.emit("ready")}),n.on("video:ended",()=>{u.loop?(n.seek=0,n.play(),n.controls.show=!1,n.mask.show=!1):(n.controls.show=!0,n.mask.show=!0)}),n.on("video:error",async v=>{h{n.emit("resize"),r.isMobile&&(n.loading.show=!1,n.controls.show=!0,n.mask.show=!0)}),n.on("video:loadstart",()=>{n.loading.show=!0,n.mask.show=!1,n.controls.show=!0}),n.on("video:pause",()=>{n.controls.show=!0,n.mask.show=!0}),n.on("video:play",()=>{n.mask.show=!1,(0,r.setStyle)(x,"display","none")}),n.on("video:playing",()=>{n.mask.show=!1}),n.on("video:progress",()=>{n.playing&&(n.loading.show=!1)}),n.on("video:seeked",()=>{n.loading.show=!1,n.mask.show=!0}),n.on("video:seeking",()=>{n.loading.show=!0,n.mask.show=!1}),n.on("video:timeupdate",()=>{n.mask.show=!1}),n.on("video:waiting",()=>{n.loading.show=!0,n.mask.show=!1})}},{"../config":"eJfh8","../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],ea3Qm:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{template:{$player:i},i18n:n,notice:s}=r;(0,t.def)(r,"flip",{get:()=>i.dataset.flip||"normal",set(l){l||(l="normal"),l==="normal"?delete i.dataset.flip:i.dataset.flip=l,s.show=`${n.get("Video Flip")}: ${n.get((0,t.capitalize)(l))}`,r.emit("flip",l)}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],ffXE3:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>i);var t=a("../libs/screenfull"),c=e.interopDefault(t),r=a("../utils");function i(n){let{i18n:s,notice:l,template:{$video:u,$player:d}}=n;n.once("video:loadedmetadata",()=>{c.default.isEnabled?(c.default.on("change",()=>{n.emit("fullscreen",c.default.isFullscreen),c.default.isFullscreen?(n.state="fullscreen",(0,r.addClass)(d,"art-fullscreen")):(0,r.removeClass)(d,"art-fullscreen"),n.emit("resize")}),c.default.on("error",f=>{n.emit("fullscreenError",f)}),(0,r.def)(n,"fullscreen",{get:()=>c.default.isFullscreen,async set(f){f?await c.default.request(d):await c.default.exit()}})):u.webkitSupportsFullscreen?(n.on("document:webkitfullscreenchange",()=>{n.emit("fullscreen",n.fullscreen),n.emit("resize")}),(0,r.def)(n,"fullscreen",{get:()=>document.fullscreenElement===u,set(f){f?(n.state="fullscreen",u.webkitEnterFullscreen()):u.webkitExitFullscreen()}})):(0,r.def)(n,"fullscreen",{get:()=>!1,set(){l.show=s.get("Fullscreen Not Supported")}}),(0,r.def)(n,"fullscreen",(0,r.get)(n,"fullscreen"))})}},{"../libs/screenfull":"iSPAQ","../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],iSPAQ:[function(a,p,o,m){a("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o);let e=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],t=(()=>{if(typeof document>"u")return!1;let i=e[0],n={};for(let s of e)if(s[1]in document){for(let[l,u]of s.entries())n[i[l]]=u;return n}return!1})(),c={change:t.fullscreenchange,error:t.fullscreenerror},r={request:(i=document.documentElement,n)=>new Promise((s,l)=>{let u=()=>{r.off("change",u),s()};r.on("change",u);let d=i[t.requestFullscreen](n);d instanceof Promise&&d.then(u).catch(l)}),exit:()=>new Promise((i,n)=>{if(!r.isFullscreen)return void i();let s=()=>{r.off("change",s),i()};r.on("change",s);let l=document[t.exitFullscreen]();l instanceof Promise&&l.then(s).catch(n)}),toggle:(i,n)=>r.isFullscreen?r.exit():r.request(i,n),onchange(i){r.on("change",i)},onerror(i){r.on("error",i)},on(i,n){let s=c[i];s&&document.addEventListener(s,n,!1)},off(i,n){let s=c[i];s&&document.removeEventListener(s,n,!1)},raw:t};Object.defineProperties(r,{isFullscreen:{get:()=>!!document[t.fullscreenElement]},element:{enumerable:!0,get:()=>document[t.fullscreenElement]},isEnabled:{enumerable:!0,get:()=>!!document[t.fullscreenEnabled]}}),o.default=r},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"8tarF":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{constructor:i,template:{$container:n,$player:s}}=r,l="";(0,t.def)(r,"fullscreenWeb",{get:()=>(0,t.hasClass)(s,"art-fullscreen-web"),set(u){u?(l=s.style.cssText,i.FULLSCREEN_WEB_IN_BODY&&(0,t.append)(document.body,s),r.state="fullscreenWeb",(0,t.setStyle)(s,"width","100%"),(0,t.setStyle)(s,"height","100%"),(0,t.addClass)(s,"art-fullscreen-web"),r.emit("fullscreenWeb",!0)):(i.FULLSCREEN_WEB_IN_BODY&&(0,t.append)(n,s),l&&(s.style.cssText=l,l=""),(0,t.removeClass)(s,"art-fullscreen-web"),r.emit("fullscreenWeb",!1)),r.emit("resize")}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],f9syH:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{$video:i}=r.template;(0,t.def)(r,"loaded",{get:()=>r.loadedTime/i.duration}),(0,t.def)(r,"loadedTime",{get:()=>i.buffered.length?i.buffered.end(i.buffered.length-1):0})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],dLuS7:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{icons:i,proxy:n,storage:s,template:{$player:l,$video:u}}=r,d=!1,f=0,g=0;function y(){let{$mini:v}=r.template;v&&((0,t.removeClass)(l,"art-mini"),(0,t.setStyle)(v,"display","none"),l.prepend(u),r.emit("mini",!1))}function x(v,w){r.playing?((0,t.setStyle)(v,"display","none"),(0,t.setStyle)(w,"display","flex")):((0,t.setStyle)(v,"display","flex"),(0,t.setStyle)(w,"display","none"))}function h(){let{$mini:v}=r.template,w=(0,t.getRect)(v),j=window.innerHeight-w.height-50,E=window.innerWidth-w.width-50;s.set("top",j),s.set("left",E),(0,t.setStyle)(v,"top",`${j}px`),(0,t.setStyle)(v,"left",`${E}px`)}(0,t.def)(r,"mini",{get:()=>(0,t.hasClass)(l,"art-mini"),set(v){if(v){r.state="mini",(0,t.addClass)(l,"art-mini");let w=function(){let{$mini:S}=r.template;if(S)return(0,t.append)(S,u),(0,t.setStyle)(S,"display","flex");{let $=(0,t.createElement)("div");(0,t.addClass)($,"art-mini-popup"),(0,t.append)(document.body,$),r.template.$mini=$,(0,t.append)($,u);let C=(0,t.append)($,'
');(0,t.append)(C,i.close),n(C,"click",y);let I=(0,t.append)($,'
'),L=(0,t.append)(I,i.play),A=(0,t.append)(I,i.pause);return n(L,"click",()=>r.play()),n(A,"click",()=>r.pause()),x(L,A),r.on("video:playing",()=>x(L,A)),r.on("video:pause",()=>x(L,A)),r.on("video:timeupdate",()=>x(L,A)),n($,"mousedown",k=>{d=k.button===0,f=k.pageX,g=k.pageY}),r.on("document:mousemove",k=>{if(d){(0,t.addClass)($,"art-mini-dragging");let b=k.pageX-f,T=k.pageY-g;(0,t.setStyle)($,"transform",`translate(${b}px, ${T}px)`)}}),r.on("document:mouseup",()=>{if(d){d=!1,(0,t.removeClass)($,"art-mini-dragging");let k=(0,t.getRect)($);s.set("left",k.left),s.set("top",k.top),(0,t.setStyle)($,"left",`${k.left}px`),(0,t.setStyle)($,"top",`${k.top}px`),(0,t.setStyle)($,"transform",null)}}),$}}(),j=s.get("top"),E=s.get("left");typeof j=="number"&&typeof E=="number"?((0,t.setStyle)(w,"top",`${j}px`),(0,t.setStyle)(w,"left",`${E}px`),(0,t.isInViewport)(w)||h()):h(),r.emit("mini",!0)}else y()}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],d1F69:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{option:i,storage:n,template:{$video:s,$poster:l}}=r;for(let d in i.moreVideoAttr)r.attr(d,i.moreVideoAttr[d]);i.muted&&(r.muted=i.muted),i.volume&&(s.volume=(0,t.clamp)(i.volume,0,1));let u=n.get("volume");for(let d in typeof u=="number"&&(s.volume=(0,t.clamp)(u,0,1)),i.poster&&(0,t.setStyle)(l,"backgroundImage",`url(${i.poster})`),i.autoplay&&(s.autoplay=i.autoplay),i.playsInline&&(s.playsInline=!0,s["webkit-playsinline"]=!0),i.theme&&(i.cssVar["--art-theme"]=i.theme),i.cssVar)r.cssVar(d,i.cssVar[d]);r.url=i.url}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],kewk9:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{template:{$video:i},i18n:n,notice:s}=r;(0,t.def)(r,"pause",{value(){let l=i.pause();return s.show=n.get("Pause"),r.emit("pause"),l}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"4XzDs":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{i18n:i,notice:n,template:{$video:s}}=r;if(document.pictureInPictureEnabled){let{template:{$video:l},proxy:u,notice:d}=r;l.disablePictureInPicture=!1,(0,t.def)(r,"pip",{get:()=>document.pictureInPictureElement,set(f){f?(r.state="pip",l.requestPictureInPicture().catch(g=>{throw d.show=g,g})):document.exitPictureInPicture().catch(g=>{throw d.show=g,g})}}),u(l,"enterpictureinpicture",()=>{r.emit("pip",!0)}),u(l,"leavepictureinpicture",()=>{r.emit("pip",!1)})}else if(s.webkitSupportsPresentationMode){let{$video:l}=r.template;l.webkitSetPresentationMode("inline"),(0,t.def)(r,"pip",{get:()=>l.webkitPresentationMode==="picture-in-picture",set(u){u?(r.state="pip",l.webkitSetPresentationMode("picture-in-picture"),r.emit("pip",!0)):(l.webkitSetPresentationMode("inline"),r.emit("pip",!1))}})}else(0,t.def)(r,"pip",{get:()=>!1,set(){n.show=i.get("PIP Not Supported")}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jphfi:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{template:{$video:i},i18n:n,notice:s}=r;(0,t.def)(r,"playbackRate",{get:()=>i.playbackRate,set(l){l?l!==i.playbackRate&&(i.playbackRate=l,s.show=`${n.get("Rate")}: ${l===1?n.get("Normal"):`${l}x`}`):r.playbackRate=1}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],iNpeS:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){(0,t.def)(r,"played",{get:()=>r.currentTime/r.duration})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],aBIWL:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{$video:i}=r.template;(0,t.def)(r,"playing",{get:()=>typeof i.playing=="boolean"?i.playing:i.currentTime>0&&!i.paused&&!i.ended&&i.readyState>2})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],hRBri:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{i18n:i,notice:n,option:s,constructor:{instances:l},template:{$video:u}}=r;(0,t.def)(r,"play",{async value(){let d=await u.play();if(n.show=i.get("Play"),r.emit("play"),s.mutex)for(let f=0;fc);var t=a("../utils");function c(r){let{template:{$poster:i}}=r;(0,t.def)(r,"poster",{get:()=>{try{return i.style.backgroundImage.match(/"(.*)"/)[1]}catch{return""}},set(n){(0,t.setStyle)(i,"backgroundImage",`url(${n})`)}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"17rUP":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){(0,t.def)(r,"quality",{set(i){let{controls:n,notice:s,i18n:l}=r,u=i.find(d=>d.default)||i[0];n.update({name:"quality",position:"right",index:10,style:{marginRight:"10px"},html:(u==null?void 0:u.html)||"",selector:i,onSelect:async d=>(await r.switchQuality(d.url),s.show=`${l.get("Switch Video")}: ${d.html}`,d.html)})}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"55qzI":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){(0,t.def)(r,"rect",{get:()=>(0,t.getRect)(r.template.$player)});let i=["bottom","height","left","right","top","width"];for(let n=0;nr.rect[s]})}(0,t.def)(r,"x",{get:()=>r.left+window.pageXOffset}),(0,t.def)(r,"y",{get:()=>r.top+window.pageYOffset})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],bC6TG:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{notice:i,template:{$video:n}}=r,s=(0,t.createElement)("canvas");(0,t.def)(r,"getDataURL",{value:()=>new Promise((l,u)=>{try{s.width=n.videoWidth,s.height=n.videoHeight,s.getContext("2d").drawImage(n,0,0),l(s.toDataURL("image/png"))}catch(d){i.show=d,u(d)}})}),(0,t.def)(r,"getBlobUrl",{value:()=>new Promise((l,u)=>{try{s.width=n.videoWidth,s.height=n.videoHeight,s.getContext("2d").drawImage(n,0,0),s.toBlob(d=>{l(URL.createObjectURL(d))})}catch(d){i.show=d,u(d)}})}),(0,t.def)(r,"screenshot",{value:async l=>{let u=await r.getDataURL(),d=l||`artplayer_${(0,t.secondToTime)(n.currentTime)}`;return(0,t.download)(u,`${d}.png`),r.emit("screenshot",u),u}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],j8GRO:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{notice:i}=r;(0,t.def)(r,"seek",{set(n){r.currentTime=n,r.duration&&(i.show=`${(0,t.secondToTime)(r.currentTime)} / ${(0,t.secondToTime)(r.duration)}`),r.emit("seek",r.currentTime)}}),(0,t.def)(r,"forward",{set(n){r.seek=r.currentTime+n}}),(0,t.def)(r,"backward",{set(n){r.seek=r.currentTime-n}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],cn7iR:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let i=["mini","pip","fullscreen","fullscreenWeb"];(0,t.def)(r,"state",{get:()=>i.find(n=>r[n])||"standard",set(n){for(let s=0;sc);var t=a("../utils");function c(r){let{notice:i,i18n:n,template:s}=r;(0,t.def)(r,"subtitleOffset",{get:()=>{var l;return((l=s.$track)==null?void 0:l.offset)||0},set(l){let{cues:u}=r.subtitle;if(!s.$track||u.length===0)return;let d=(0,t.clamp)(l,-10,10);s.$track.offset=d;for(let f=0;fc);var t=a("../utils");function c(r){function i(n,s){return new Promise((l,u)=>{if(n===r.url)return;let{playing:d,aspectRatio:f,playbackRate:g}=r;r.pause(),r.url=n,r.notice.show="",r.once("video:error",u),r.once("video:loadedmetadata",()=>{r.currentTime=s}),r.once("video:canplay",async()=>{r.playbackRate=g,r.aspectRatio=f,d&&await r.play(),r.notice.show="",l()})})}(0,t.def)(r,"switchQuality",{value:n=>i(n,r.currentTime)}),(0,t.def)(r,"switchUrl",{value:n=>i(n,0)}),(0,t.def)(r,"switch",{set:r.switchUrl})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"7iMuh":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){(0,t.def)(r,"theme",{get:()=>r.cssVar("--art-theme"),set(i){r.cssVar("--art-theme",i)}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"6P0RS":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{events:i,option:n,template:{$progress:s,$video:l}}=r,u=null,d=null,f=!1,g=!1,y=!1;i.hover(s,()=>{y=!0},()=>{y=!1}),r.on("setBar",async(x,h,v)=>{var $;let w=($=r.controls)==null?void 0:$.thumbnails,{url:j,scale:E}=n.thumbnails;if(!w||!j)return;let S=x==="played"&&v&&t.isMobile;if(x==="hover"||S){if(f||(f=!0,d=await(0,t.loadImg)(j,E),g=!0),!g||!y)return;let C=s.clientWidth*h;(0,t.setStyle)(w,"display","flex"),C>0&&Cs.clientWidth-D/2?(0,t.setStyle)(L,"left",`${s.clientWidth-D}px`):(0,t.setStyle)(L,"left",`${I-D/2}px`)}(C):t.isMobile||(0,t.setStyle)(w,"display","none"),S&&(clearTimeout(u),u=setTimeout(()=>{(0,t.setStyle)(w,"display","none")},500))}}),(0,t.def)(r,"thumbnails",{get:()=>r.option.thumbnails,set(x){x.url&&!r.option.isLive&&(r.option.thumbnails=x,clearTimeout(u),u=null,d=null,f=!1,g=!1)}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],eNi78:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){(0,t.def)(r,"toggle",{value:()=>r.playing?r.pause():r.play()})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"7AUBD":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){(0,t.def)(r,"type",{get:()=>r.option.type,set(i){r.option.type=i}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],cnlLL:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{option:i,template:{$video:n}}=r;(0,t.def)(r,"url",{get:()=>n.src,async set(s){if(s){let l=r.url,u=i.type||(0,t.getExt)(s),d=i.customType[u];u&&d?(await(0,t.sleep)(),r.loading.show=!0,d.call(r,n,s,r)):(URL.revokeObjectURL(l),n.src=s),l!==r.url&&(r.option.url=s,r.isReady&&l&&r.once("video:canplay",()=>{r.emit("restart",s)}))}else await(0,t.sleep)(),r.loading.show=!0}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],iX66j:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{template:{$video:i},i18n:n,notice:s,storage:l}=r;(0,t.def)(r,"volume",{get:()=>i.volume||0,set:u=>{i.volume=(0,t.clamp)(u,0,1),s.show=`${n.get("Volume")}: ${Number.parseInt(100*i.volume,10)}`,i.volume!==0&&l.set("volume",i.volume)}}),(0,t.def)(r,"muted",{get:()=>i.muted,set:u=>{i.muted=u,r.emit("muted",u)}})}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],cjxJL:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("../utils"),c=a("./autoOrientation"),r=e.interopDefault(c),i=a("./autoPlayback"),n=e.interopDefault(i),s=a("./fastForward"),l=e.interopDefault(s),u=a("./lock"),d=e.interopDefault(u),f=a("./miniProgressBar"),g=e.interopDefault(f);o.default=class{constructor(y){this.art=y,this.id=0;let{option:x}=y;x.miniProgressBar&&!x.isLive&&this.add(g.default),x.lock&&t.isMobile&&this.add(d.default),x.autoPlayback&&!x.isLive&&this.add(n.default),x.autoOrientation&&t.isMobile&&this.add(r.default),x.fastForward&&t.isMobile&&!x.isLive&&this.add(l.default);for(let h=0;hthis.next(y,h)):this.next(y,x)}next(y,x){let h=x&&x.name||y.name||`plugin${this.id}`;return(0,t.errorHandle)(!(0,t.has)(this,h),`Cannot add a plugin that already has the same name: ${h}`),(0,t.def)(this,h,{value:x}),this}}},{"../utils":"aBlEo","./autoOrientation":"jb9jb","./autoPlayback":"21HWM","./fastForward":"4sxBO","./lock":"fjy9V","./miniProgressBar":"d0xRp","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jb9jb:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{notice:i,constructor:n,template:{$player:s,$video:l}}=r,u="art-auto-orientation",d="art-auto-orientation-fullscreen",f=!1;function g(){let{videoWidth:y,videoHeight:x}=l,h=document.documentElement.clientWidth,v=document.documentElement.clientHeight;return y>x&&hv}return r.on("fullscreenWeb",y=>{y?g()&&setTimeout(()=>{r.fullscreenWeb&&!(0,t.hasClass)(s,u)&&function(){let x=document.documentElement.clientWidth,h=document.documentElement.clientHeight;(0,t.setStyle)(s,"width",`${h}px`),(0,t.setStyle)(s,"height",`${x}px`),(0,t.setStyle)(s,"transform-origin","0 0"),(0,t.setStyle)(s,"transform",`rotate(90deg) translate(0, -${x}px)`),(0,t.addClass)(s,u),r.isRotate=!0,r.emit("resize")}()},Number(n.AUTO_ORIENTATION_TIME??0)):(0,t.hasClass)(s,u)&&((0,t.setStyle)(s,"width",""),(0,t.setStyle)(s,"height",""),(0,t.setStyle)(s,"transform-origin",""),(0,t.setStyle)(s,"transform",""),(0,t.removeClass)(s,u),r.isRotate=!1,r.emit("resize"))}),r.on("fullscreen",async y=>{var h;let x=!!((h=screen==null?void 0:screen.orientation)!=null&&h.lock);if(y){if(x&&g())try{let v=screen.orientation.type.startsWith("portrait")?"landscape":"portrait";await screen.orientation.lock(v),f=!0,(0,t.addClass)(s,d)}catch(v){f=!1,i.show=v}}else if((0,t.hasClass)(s,d)&&(0,t.removeClass)(s,d),x&&f){try{screen.orientation.unlock()}catch{}f=!1}}),{name:"autoOrientation",get state(){return(0,t.hasClass)(s,u)}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"21HWM":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{i18n:i,icons:n,storage:s,constructor:l,proxy:u,template:{$poster:d}}=r,f=r.layers.add({name:"auto-playback",html:'
'}),g=(0,t.query)(".art-auto-playback-last",f),y=(0,t.query)(".art-auto-playback-jump",f),x=(0,t.query)(".art-auto-playback-close",f);(0,t.append)(x,n.close);let h=null;function v(){let w=(s.get("times")||{})[r.option.id||r.option.url];clearTimeout(h),(0,t.setStyle)(f,"display","none"),w&&w>=l.AUTO_PLAYBACK_MIN&&((0,t.setStyle)(f,"display","flex"),g.textContent=`${i.get("Last Seen")} ${(0,t.secondToTime)(w)}`,y.textContent=i.get("Jump Play"),u(x,"click",()=>{(0,t.setStyle)(f,"display","none")}),u(y,"click",()=>{r.seek=w,r.play(),(0,t.setStyle)(d,"display","none"),(0,t.setStyle)(f,"display","none")}),r.once("video:timeupdate",()=>{h=setTimeout(()=>{(0,t.setStyle)(f,"display","none")},l.AUTO_PLAYBACK_TIMEOUT)}))}return r.on("video:timeupdate",()=>{if(r.playing){let w=s.get("times")||{},j=Object.keys(w);j.length>l.AUTO_PLAYBACK_MAX&&delete w[j[0]],w[r.option.id||r.option.url]=r.currentTime,s.set("times",w)}}),r.on("ready",v),r.on("restart",v),{name:"auto-playback",get times(){return s.get("times")||{}},clear:()=>s.del("times"),delete(w){let j=s.get("times")||{};return delete j[w],s.set("times",j),j}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"4sxBO":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{constructor:i,proxy:n,template:{$player:s,$video:l}}=r,u=null,d=!1,f=1,g=()=>{clearTimeout(u),d&&(d=!1,r.playbackRate=f,(0,t.removeClass)(s,"art-fast-forward"))};return n(l,"touchstart",y=>{y.touches.length===1&&r.playing&&!r.isLock&&(u=setTimeout(()=>{d=!0,f=r.playbackRate,r.playbackRate=i.FAST_FORWARD_VALUE,(0,t.addClass)(s,"art-fast-forward")},i.FAST_FORWARD_TIME))}),r.on("document:touchmove",g),r.on("document:touchend",g),{name:"fastForward",get state(){return(0,t.hasClass)(s,"art-fast-forward")}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],fjy9V:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{layers:i,icons:n,template:{$player:s}}=r;function l(){return(0,t.hasClass)(s,"art-lock")}function u(){(0,t.addClass)(s,"art-lock"),r.isLock=!0,r.emit("lock",!0)}function d(){(0,t.removeClass)(s,"art-lock"),r.isLock=!1,r.emit("lock",!1)}return i.add({name:"lock",mounted(f){let g=(0,t.append)(f,n.lock),y=(0,t.append)(f,n.unlock);(0,t.setStyle)(g,"display","none"),r.on("lock",x=>{x?((0,t.setStyle)(g,"display","inline-flex"),(0,t.setStyle)(y,"display","none")):((0,t.setStyle)(g,"display","none"),(0,t.setStyle)(y,"display","inline-flex"))})},click(){l()?d():u()}}),{name:"lock",get state(){return l()},set state(f){f?u():d()}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],d0xRp:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){return r.on("control",i=>{i?(0,t.removeClass)(r.template.$player,"art-mini-progress-bar"):(0,t.addClass)(r.template.$player,"art-mini-progress-bar")}),{name:"mini-progress-bar"}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],bwLGT:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("../utils"),c=a("../utils/component"),r=e.interopDefault(c),i=a("./aspectRatio"),n=e.interopDefault(i),s=a("./flip"),l=e.interopDefault(s),u=a("./playbackRate"),d=e.interopDefault(u),f=a("./subtitleOffset"),g=e.interopDefault(f);class y extends r.default{constructor(h){super(h);let{option:v,controls:w,template:{$setting:j}}=h;this.name="setting",this.$parent=j,this.id=0,this.active=null,this.cache=new Map,this.option=[...this.builtin,...v.settings],v.setting&&(this.format(),this.render(),h.on("blur",()=>{this.show&&(this.show=!1,this.render())}),h.on("focus",E=>{let S=(0,t.includeFromEvent)(E,w.setting),$=(0,t.includeFromEvent)(E,this.$parent);!this.show||S||$||(this.show=!1,this.render())}),h.on("resize",()=>this.resize()))}get builtin(){let h=[],{option:v}=this.art;return v.playbackRate&&h.push((0,d.default)(this.art)),v.aspectRatio&&h.push((0,n.default)(this.art)),v.flip&&h.push((0,l.default)(this.art)),v.subtitleOffset&&h.push((0,g.default)(this.art)),h}traverse(h,v=this.option){var w;for(let j=0;j{v.default=v===h,v.default&&v.$item&&(0,t.inverseClass)(v.$item,"art-current")},h.$option),this.render(h.$parents)}format(h=this.option,v,w,j=[]){for(let E=0;Ev}),(0,t.def)(S,"$parents",{get:()=>w}),(0,t.def)(S,"$option",{get:()=>h});let $=[];(0,t.def)(S,"$events",{get:()=>$}),(0,t.def)(S,"$formatted",{get:()=>!0})}this.format(S.selector||[],S,h,j)}this.option=h}find(h=""){let v=null;return this.traverse(w=>{w.name===h&&(v=w)}),v}resize(){var S,$;let{controls:h,constructor:{SETTING_WIDTH:v,SETTING_ITEM_HEIGHT:w},template:{$player:j,$setting:E}}=this.art;if(h.setting&&this.show){let C=(($=(S=this.active[0])==null?void 0:S.$parent)==null?void 0:$.width)||v,{left:I,width:L}=(0,t.getRect)(h.setting),{left:A,width:k}=(0,t.getRect)(j),b=I-A+L/2-C/2,T=this.active===this.option?this.active.length*w:(this.active.length+1)*w;if((0,t.setStyle)(E,"height",`${T}px`),(0,t.setStyle)(E,"width",`${C}px`),this.art.isRotate||t.isMobile)return;b+C>k?((0,t.setStyle)(E,"left",null),(0,t.setStyle)(E,"right",null)):((0,t.setStyle)(E,"left",`${b}px`),(0,t.setStyle)(E,"right","auto"))}}inactivate(h){for(let v=0;v'),C=(0,t.createElement)("div");(0,t.addClass)(C,"art-setting-item-left-icon"),(0,t.append)(C,j),(0,t.append)($,C),(0,t.append)($,h.$parent.html);let I=w(S,"click",()=>this.render(h.$parents));h.$parent.$events.push(I),(0,t.append)(v,S)}createItem(h,v=!1){var F,D;if(!this.cache.has(h.$option))return;let w=this.cache.get(h.$option),j=h.$item,E="selector";(0,t.has)(h,"switch")&&(E="switch"),(0,t.has)(h,"range")&&(E="range"),(0,t.has)(h,"onClick")&&(E="button");let{icons:S,proxy:$,constructor:C}=this.art,I=(0,t.createElement)("div");(0,t.addClass)(I,"art-setting-item"),(0,t.setStyle)(I,"height",`${C.SETTING_ITEM_HEIGHT}px`),I.dataset.name=h.name||"",I.dataset.value=h.value||"";let L=(0,t.append)(I,'
'),A=(0,t.append)(I,'
'),k=(0,t.createElement)("div");switch((0,t.addClass)(k,"art-setting-item-left-icon"),E){case"button":case"switch":case"range":(0,t.append)(k,h.icon||S.config);break;case"selector":(F=h.selector)!=null&&F.length?(0,t.append)(k,h.icon||S.config):(0,t.append)(k,S.check)}(0,t.append)(L,k),(0,t.def)(h,"$icon",{configurable:!0,get:()=>k}),(0,t.def)(h,"icon",{configurable:!0,get:()=>k.innerHTML,set(M){k.innerHTML="",(0,t.append)(k,M)}});let b=(0,t.createElement)("div");(0,t.addClass)(b,"art-setting-item-left-text"),(0,t.append)(b,h.html||""),(0,t.append)(L,b),(0,t.def)(h,"$html",{configurable:!0,get:()=>b}),(0,t.def)(h,"html",{configurable:!0,get:()=>b.innerHTML,set(M){b.innerHTML="",(0,t.append)(b,M)}});let T=(0,t.createElement)("div");switch((0,t.addClass)(T,"art-setting-item-right-tooltip"),(0,t.append)(T,h.tooltip||""),(0,t.append)(A,T),(0,t.def)(h,"$tooltip",{configurable:!0,get:()=>T}),(0,t.def)(h,"tooltip",{configurable:!0,get:()=>T.innerHTML,set(M){T.innerHTML="",(0,t.append)(T,M)}}),E){case"switch":{let M=(0,t.createElement)("div");(0,t.addClass)(M,"art-setting-item-right-icon");let q=(0,t.append)(M,S.switchOn),O=(0,t.append)(M,S.switchOff);(0,t.setStyle)(h.switch?O:q,"display","none"),(0,t.append)(A,M),(0,t.def)(h,"$switch",{configurable:!0,get:()=>M});let P=h.switch;(0,t.def)(h,"switch",{configurable:!0,get:()=>P,set(H){P=H,H?((0,t.setStyle)(O,"display","none"),(0,t.setStyle)(q,"display",null)):((0,t.setStyle)(O,"display",null),(0,t.setStyle)(q,"display","none"))}});break}case"range":{let M=(0,t.createElement)("div");(0,t.addClass)(M,"art-setting-item-right-icon");let q=(0,t.append)(M,'');q.value=h.range[0],q.min=h.range[1],q.max=h.range[2],q.step=h.range[3],(0,t.addClass)(q,"art-setting-range"),(0,t.append)(A,M),(0,t.def)(h,"$range",{configurable:!0,get:()=>q});let O=[...h.range];(0,t.def)(h,"range",{configurable:!0,get:()=>O,set(P){O=[...P],q.value=P[0],q.min=P[1],q.max=P[2],q.step=P[3]}})}break;case"selector":if((D=h.selector)!=null&&D.length){let M=(0,t.createElement)("div");(0,t.addClass)(M,"art-setting-item-right-icon"),(0,t.append)(M,S.arrowRight),(0,t.append)(A,M)}}switch(E){case"switch":if(h.onSwitch){let M=$(I,"click",async q=>{h.switch=await h.onSwitch.call(this.art,h,I,q)});h.$events.push(M)}break;case"range":if(h.$range){if(h.onRange){let M=$(h.$range,"change",async q=>{h.range[0]=h.$range.valueAsNumber,h.tooltip=await h.onRange.call(this.art,h,I,q)});h.$events.push(M)}if(h.onChange){let M=$(h.$range,"input",async q=>{h.range[0]=h.$range.valueAsNumber,h.tooltip=await h.onChange.call(this.art,h,I,q)});h.$events.push(M)}}break;case"selector":{let M=$(I,"click",async q=>{var O;(O=h.selector)!=null&&O.length?this.render(h.selector):(this.check(h),h.$parent.onSelect&&(h.$parent.tooltip=await h.$parent.onSelect.call(this.art,h,I,q)))});h.$events.push(M),h.default&&(0,t.addClass)(I,"art-current")}break;case"button":if(h.onClick){let M=$(I,"click",async q=>{h.tooltip=await h.onClick.call(this.art,h,I,q)});h.$events.push(M)}}(0,t.def)(h,"$item",{configurable:!0,get:()=>I}),v?(0,t.replaceElement)(I,j):(0,t.append)(w,I),h.mounted&&setTimeout(()=>h.mounted.call(this.art,h.$item,h),0)}render(h=this.option){var v;if(this.active=h,this.cache.has(h)){let w=this.cache.get(h);(0,t.inverseClass)(w,"art-current")}else{let w=(0,t.createElement)("div");this.cache.set(h,w),(0,t.addClass)(w,"art-setting-panel"),(0,t.append)(this.$parent,w),(0,t.inverseClass)(w,"art-current"),(v=h[0])!=null&&v.$parent&&this.createHeader(h[0]);for(let j=0;j({value:d,name:`aspect-ratio-${d}`,default:d===c.aspectRatio,html:l(d)})),onSelect:d=>(c.aspectRatio=d.value,d.html),mounted:()=>{u(),c.on("aspectRatio",()=>u())}}}e.defineInteropFlag(o),e.export(o,"default",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],ljJTO:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o),e.export(o,"default",()=>c);var t=a("../utils");function c(r){let{i18n:i,icons:n,constructor:{SETTING_ITEM_WIDTH:s,FLIP:l}}=r;function u(f){return i.get((0,t.capitalize)(f))}function d(){let f=r.setting.find(`flip-${r.flip}`);r.setting.check(f)}return{width:s,name:"flip",html:i.get("Video Flip"),tooltip:u(r.flip),icon:n.flip,selector:l.map(f=>({value:f,name:`flip-${f}`,default:f===r.flip,html:u(f)})),onSelect:f=>(r.flip=f.value,f.html),mounted:()=>{d(),r.on("flip",()=>d())}}}},{"../utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"3QcSQ":[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(c){let{i18n:r,icons:i,constructor:{SETTING_ITEM_WIDTH:n,PLAYBACK_RATE:s}}=c;function l(d){return d===1?r.get("Normal"):d.toFixed(1)}function u(){let d=c.setting.find(`playback-rate-${c.playbackRate}`);c.setting.check(d)}return{width:n,name:"playback-rate",html:r.get("Play Speed"),tooltip:l(c.playbackRate),icon:i.playbackRate,selector:s.map(d=>({value:d,name:`playback-rate-${d}`,default:d===c.playbackRate,html:l(d)})),onSelect:d=>(c.playbackRate=d.value,d.html),mounted:()=>{u(),c.on("video:ratechange",()=>u())}}}e.defineInteropFlag(o),e.export(o,"default",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],eB5hg:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");function t(c){let{i18n:r,icons:i,constructor:n}=c;return{width:n.SETTING_ITEM_WIDTH,name:"subtitle-offset",html:r.get("Subtitle Offset"),icon:i.subtitle,tooltip:"0s",range:[0,-10,10,.1],onChange:s=>(c.subtitleOffset=s.range[0],`${s.range[0]}s`),mounted:(s,l)=>{c.on("subtitleOffset",u=>{l.$range.value=u,l.tooltip=`${u}s`})}}}e.defineInteropFlag(o),e.export(o,"default",()=>t)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],kwqbK:[function(a,p,o,m){a("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o),o.default=class{constructor(){this.name="artplayer_settings",this.settings={}}get(e){try{let t=JSON.parse(window.localStorage.getItem(this.name))||{};return e?t[e]:t}catch{return e?this.settings[e]:this.settings}}set(e,t){try{let c=Object.assign({},this.get(),{[e]:t});window.localStorage.setItem(this.name,JSON.stringify(c))}catch{this.settings[e]=t}}del(e){try{let t=this.get();delete t[e],window.localStorage.setItem(this.name,JSON.stringify(t))}catch{delete this.settings[e]}}clear(){try{window.localStorage.removeItem(this.name)}catch{this.settings={}}}}},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],k5613:[function(a,p,o,m){var e=a("@parcel/transformer-js/src/esmodule-helpers.js");e.defineInteropFlag(o);var t=a("option-validator"),c=e.interopDefault(t),r=a("./scheme"),i=e.interopDefault(r),n=a("./utils"),s=a("./utils/component"),l=e.interopDefault(s);class u extends l.default{constructor(f){super(f),this.name="subtitle",this.option=null,this.destroyEvent=()=>null,this.init(f.option.subtitle);let g=!1;f.on("video:timeupdate",()=>{if(!this.url)return;let y=this.art.template.$video.webkitDisplayingFullscreen;typeof y=="boolean"&&y!==g&&(g=y,this.createTrack(y?"subtitles":"metadata",this.url))})}get url(){return this.art.template.$track.src}set url(f){this.switch(f)}get textTrack(){var f,g;return(g=(f=this.art.template.$video)==null?void 0:f.textTracks)==null?void 0:g[0]}get activeCues(){return this.textTrack?Array.from(this.textTrack.activeCues):[]}get cues(){return this.textTrack?Array.from(this.textTrack.cues):[]}style(f,g){let{$subtitle:y}=this.art.template;return typeof f=="object"?(0,n.setStyles)(y,f):(0,n.setStyle)(y,f,g)}update(){let{option:{subtitle:f},template:{$subtitle:g}}=this.art;g.innerHTML="",this.activeCues.length&&(this.art.emit("subtitleBeforeUpdate",this.activeCues),g.innerHTML=this.activeCues.map((y,x)=>y.text.split(/\r?\n/).filter(h=>h.trim()).map(h=>`
${f.escape?(0,n.escape)(h):h}
`).join("")).join(""),this.art.emit("subtitleAfterUpdate",this.activeCues))}async switch(f,g={}){let{i18n:y,notice:x,option:h}=this.art,v={...h.subtitle,...g,url:f},w=await this.init(v);return g.name&&(x.show=`${y.get("Switch Subtitle")}: ${g.name}`),w}createTrack(f,g){let{template:y,proxy:x,option:h}=this.art,{$video:v,$track:w}=y,j=(0,n.createElement)("track");j.default=!0,j.kind=f,j.src=g,j.label=h.subtitle.name||"Artplayer",j.track.mode="hidden",j.onload=()=>{this.art.emit("subtitleLoad",this.cues,this.option)},this.art.events.remove(this.destroyEvent),w.onload=null,(0,n.remove)(w),(0,n.append)(v,j),y.$track=j,this.destroyEvent=x(this.textTrack,"cuechange",()=>this.update())}async init(f){let{notice:g,template:{$subtitle:y}}=this.art;return this.textTrack?((0,c.default)(f,i.default.subtitle),f.url?(this.option=f,this.style(f.style),fetch(f.url).then(x=>x.arrayBuffer()).then(x=>{let h=new TextDecoder(f.encoding).decode(x);switch(f.type||(0,n.getExt)(f.url)){case"srt":{let v=(0,n.srtToVtt)(h),w=f.onVttLoad(v);return(0,n.vttToBlob)(w)}case"ass":{let v=(0,n.assToVtt)(h),w=f.onVttLoad(v);return(0,n.vttToBlob)(w)}case"vtt":{let v=f.onVttLoad(h);return(0,n.vttToBlob)(v)}default:return f.url}}).then(x=>(y.innerHTML="",this.url===x||(URL.revokeObjectURL(this.url),this.createTrack("metadata",x)),x)).catch(x=>{throw y.innerHTML="",g.show=x,x})):void 0):null}}o.default=u},{"option-validator":"g7VGh","./scheme":"biLjm","./utils":"aBlEo","./utils/component":"idCEj","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],fwOA1:[function(a,p,o,m){a("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o);var e=a("../package.json"),t=a("./utils");class c{constructor(i){this.art=i;let{option:n,constructor:s}=i;n.container instanceof Element?this.$container=n.container:(this.$container=(0,t.query)(n.container),(0,t.errorHandle)(this.$container,`No container element found by ${n.container}`)),(0,t.errorHandle)((0,t.supportsFlex)(),"The current browser does not support flex layout");let l=this.$container.tagName.toLowerCase();(0,t.errorHandle)(l==="div",`Unsupported container element type, only support 'div' but got '${l}'`),(0,t.errorHandle)(s.instances.every(u=>u.template.$container!==this.$container),"Cannot mount multiple instances on the same dom element"),this.query=this.query.bind(this),this.$container.dataset.artId=i.id,this.init()}static get html(){return`
Player version:
${e.version}
Video url:
Video volume:
Video time:
Video duration:
Video resolution:
x
[x]
`}query(i){return(0,t.query)(i,this.$container)}init(){let{option:i}=this.art;if(i.useSSR||(this.$container.innerHTML=c.html),this.$player=this.query(".art-video-player"),this.$video=this.query(".art-video"),this.$track=this.query("track"),this.$poster=this.query(".art-poster"),this.$subtitle=this.query(".art-subtitle"),this.$danmuku=this.query(".art-danmuku"),this.$bottom=this.query(".art-bottom"),this.$progress=this.query(".art-progress"),this.$controls=this.query(".art-controls"),this.$controlsLeft=this.query(".art-controls-left"),this.$controlsCenter=this.query(".art-controls-center"),this.$controlsRight=this.query(".art-controls-right"),this.$layer=this.query(".art-layers"),this.$loading=this.query(".art-loading"),this.$notice=this.query(".art-notice"),this.$noticeInner=this.query(".art-notice-inner"),this.$mask=this.query(".art-mask"),this.$state=this.query(".art-state"),this.$setting=this.query(".art-settings"),this.$info=this.query(".art-info"),this.$infoPanel=this.query(".art-info-panel"),this.$infoClose=this.query(".art-info-close"),this.$contextmenu=this.query(".art-contextmenus"),i.proxy){let n=i.proxy.call(this.art,this.art);(0,t.errorHandle)(n instanceof HTMLVideoElement||n instanceof HTMLCanvasElement,"Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'"),(0,t.replaceElement)(n,this.$video),n.className="art-video",this.$video=n}i.backdrop&&(0,t.addClass)(this.$player,"art-backdrop"),t.isMobile&&(0,t.addClass)(this.$player,"art-mobile")}destroy(i){i?this.$container.innerHTML="":(0,t.addClass)(this.$player,"art-destroy")}}o.default=c},{"../package.json":"lh3R5","./utils":"aBlEo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"4NM7P":[function(a,p,o,m){a("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o),o.default=class{on(e,t,c){let r=this.e||(this.e={});return(r[e]||(r[e]=[])).push({fn:t,ctx:c}),this}once(e,t,c){let r=this;function i(...n){r.off(e,i),t.apply(c,n)}return i._=t,this.on(e,i,c)}emit(e,...t){let c=((this.e||(this.e={}))[e]||[]).slice();for(let r=0;rd.destroy()),d.on(Hls.Events.ERROR,(f,g)=>{if(g.fatal)switch(g.type){case Hls.ErrorTypes.NETWORK_ERROR:console.warn("HLS network error, trying to recover..."),d.startLoad();break;case Hls.ErrorTypes.MEDIA_ERROR:console.warn("HLS media error, trying to recover..."),d.recoverMediaError();break;default:console.error("Fatal HLS error");break}})}else n.canPlayType("application/vnd.apple.mpegurl")&&(n.src=s)}},settings:[{html:"Speed",selector:[{html:"0.5x",value:.5},{html:"0.75x",value:.75},{html:"Normal",value:1,default:!0},{html:"1.25x",value:1.25},{html:"1.5x",value:1.5},{html:"2x",value:2}],onSelect(i){return V&&(V.playbackRate=i.value),i.html}}],icons:{loading:'
',state:''},cssVar:{"--art-theme":"#f5c518","--art-background-color":"#0f0f0f","--art-progress-color":"#f5c518","--art-control-background-color":"rgba(0, 0, 0, 0.8)","--art-control-height":"48px","--art-bottom-gap":"12px"}};return c.length>0&&(r.quality=c.map((i,n)=>({default:n===0,html:i,url:o}))),V=new zt(r),V.on("ready",()=>{console.log("Player ready"),V.video&&(V.video.preload="auto")}),V.on("video:waiting",()=>{console.log("Buffering...")}),V.on("video:canplay",()=>{console.log("Can play")}),V.on("error",i=>{console.error("Player error:",i)}),V}function Vt(){V&&(V.destroy(),V=null)}const Nt=4e3;function Yt(a,p="info"){const o=document.getElementById("toastContainer");if(!o)return;const m=document.createElement("div");m.className=`toast toast--${p}`,m.innerHTML=` - ${re(u)} + ${Xt(p)} - ${ae(a)} - `,o.appendChild(h),setTimeout(()=>{h.style.animation="slideIn 0.3s ease reverse",setTimeout(()=>h.remove(),300)},ee)}function re(a){switch(a){case"success":return'';case"error":return'';default:return''}}function ae(a){if(!a)return"";const u=document.createElement("div");return u.textContent=a,u.innerHTML}const oe="modulepreload",ie=function(a){return"/"+a},Ct={},ne=function(u,o,h){let e=Promise.resolve();if(o&&o.length>0){document.getElementsByTagName("link");const c=document.querySelector("meta[property=csp-nonce]"),r=(c==null?void 0:c.nonce)||(c==null?void 0:c.getAttribute("nonce"));e=Promise.allSettled(o.map(i=>{if(i=ie(i),i in Ct)return;Ct[i]=!0;const n=i.endsWith(".css"),l=n?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${i}"]${l}`))return;const s=document.createElement("link");if(s.rel=n?"stylesheet":oe,n||(s.as="script"),s.crossOrigin="",s.href=i,r&&s.setAttribute("nonce",r),document.head.appendChild(s),n)return new Promise((d,f)=>{s.addEventListener("load",d),s.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${i}`)))})}))}function t(c){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=c,window.dispatchEvent(r),!r.defaultPrevented)throw c}return e.then(c=>{for(const r of c||[])r.status==="rejected"&&t(r.reason);return u().catch(t)})};/*! Capacitor: https://capacitorjs.com/ - MIT License */var rt;(function(a){a.Unimplemented="UNIMPLEMENTED",a.Unavailable="UNAVAILABLE"})(rt||(rt={}));class jt extends Error{constructor(u,o,h){super(u),this.message=u,this.code=o,this.data=h}}const se=a=>{var u,o;return a!=null&&a.androidBridge?"android":!((o=(u=a==null?void 0:a.webkit)===null||u===void 0?void 0:u.messageHandlers)===null||o===void 0)&&o.bridge?"ios":"web"},le=a=>{const u=a.CapacitorCustomPlatform||null,o=a.Capacitor||{},h=o.Plugins=o.Plugins||{},e=()=>u!==null?u.name:se(a),t=()=>e()!=="web",c=s=>{const d=n.get(s);return!!(d!=null&&d.platforms.has(e())||r(s))},r=s=>{var d;return(d=o.PluginHeaders)===null||d===void 0?void 0:d.find(f=>f.name===s)},i=s=>a.console.error(s),n=new Map,l=(s,d={})=>{const f=n.get(s);if(f)return console.warn(`Capacitor plugin "${s}" already registered. Cannot register plugins twice.`),f.proxy;const p=e(),g=r(s);let v;const x=async()=>(!v&&p in d?v=typeof d[p]=="function"?v=await d[p]():v=d[p]:u!==null&&!v&&"web"in d&&(v=typeof d.web=="function"?v=await d.web():v=d.web),v),m=(E,C)=>{var I,L;if(g){const R=g==null?void 0:g.methods.find(w=>C===w.name);if(R)return R.rtype==="promise"?w=>o.nativePromise(s,C.toString(),w):(w,b)=>o.nativeCallback(s,C.toString(),w,b);if(E)return(I=E[C])===null||I===void 0?void 0:I.bind(E)}else{if(E)return(L=E[C])===null||L===void 0?void 0:L.bind(E);throw new jt(`"${s}" plugin is not implemented on ${p}`,rt.Unimplemented)}},y=E=>{let C;const I=(...L)=>{const R=x().then(w=>{const b=m(w,E);if(b){const T=b(...L);return C=T==null?void 0:T.remove,T}else throw new jt(`"${s}.${E}()" is not implemented on ${p}`,rt.Unimplemented)});return E==="addListener"&&(R.remove=async()=>C()),R};return I.toString=()=>`${E.toString()}() { [capacitor code] }`,Object.defineProperty(I,"name",{value:E,writable:!1,configurable:!1}),I},j=y("addListener"),k=y("removeListener"),$=(E,C)=>{const I=j({eventName:E},C),L=async()=>{const w=await I;k({eventName:E,callbackId:w},C)},R=new Promise(w=>I.then(()=>w({remove:L})));return R.remove=async()=>{console.warn("Using addListener() without 'await' is deprecated."),await L()},R},S=new Proxy({},{get(E,C){switch(C){case"$$typeof":return;case"toJSON":return()=>({});case"addListener":return g?$:j;case"removeListener":return k;default:return y(C)}}});return h[s]=S,n.set(s,{name:s,proxy:S,platforms:new Set([...Object.keys(d),...g?[p]:[]])}),S};return o.convertFileSrc||(o.convertFileSrc=s=>s),o.getPlatform=e,o.handleError=i,o.isNativePlatform=t,o.isPluginAvailable=c,o.registerPlugin=l,o.Exception=jt,o.DEBUG=!!o.DEBUG,o.isLoggingEnabled=!!o.isLoggingEnabled,o},ce=a=>a.Capacitor=le(a),kt=ce(typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}),gt=kt.registerPlugin;class $t{constructor(){this.listeners={},this.retainedEventArguments={},this.windowListeners={}}addListener(u,o){let h=!1;this.listeners[u]||(this.listeners[u]=[],h=!0),this.listeners[u].push(o);const t=this.windowListeners[u];t&&!t.registered&&this.addWindowListener(t),h&&this.sendRetainedArgumentsForEvent(u);const c=async()=>this.removeListener(u,o);return Promise.resolve({remove:c})}async removeAllListeners(){this.listeners={};for(const u in this.windowListeners)this.removeWindowListener(this.windowListeners[u]);this.windowListeners={}}notifyListeners(u,o,h){const e=this.listeners[u];if(!e){if(h){let t=this.retainedEventArguments[u];t||(t=[]),t.push(o),this.retainedEventArguments[u]=t}return}e.forEach(t=>t(o))}hasListeners(u){var o;return!!(!((o=this.listeners[u])===null||o===void 0)&&o.length)}registerWindowListener(u,o){this.windowListeners[o]={registered:!1,windowEventName:u,pluginEventName:o,handler:h=>{this.notifyListeners(o,h)}}}unimplemented(u="not implemented"){return new kt.Exception(u,rt.Unimplemented)}unavailable(u="not available"){return new kt.Exception(u,rt.Unavailable)}async removeListener(u,o){const h=this.listeners[u];if(!h)return;const e=h.indexOf(o);this.listeners[u].splice(e,1),this.listeners[u].length||this.removeWindowListener(this.windowListeners[u])}addWindowListener(u){window.addEventListener(u.windowEventName,u.handler),u.registered=!0}removeWindowListener(u){u&&(window.removeEventListener(u.windowEventName,u.handler),u.registered=!1)}sendRetainedArgumentsForEvent(u){const o=this.retainedEventArguments[u];o&&(delete this.retainedEventArguments[u],o.forEach(h=>{this.notifyListeners(u,h)}))}}const Mt=a=>encodeURIComponent(a).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape),Lt=a=>a.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent);class ue extends $t{async getCookies(){const u=document.cookie,o={};return u.split(";").forEach(h=>{if(h.length<=0)return;let[e,t]=h.replace(/=/,"CAP_COOKIE").split("CAP_COOKIE");e=Lt(e).trim(),t=Lt(t).trim(),o[e]=t}),o}async setCookie(u){try{const o=Mt(u.key),h=Mt(u.value),e=`; expires=${(u.expires||"").replace("expires=","")}`,t=(u.path||"/").replace("path=",""),c=u.url!=null&&u.url.length>0?`domain=${u.url}`:"";document.cookie=`${o}=${h||""}${e}; path=${t}; ${c};`}catch(o){return Promise.reject(o)}}async deleteCookie(u){try{document.cookie=`${u.key}=; Max-Age=0`}catch(o){return Promise.reject(o)}}async clearCookies(){try{const u=document.cookie.split(";")||[];for(const o of u)document.cookie=o.replace(/^ +/,"").replace(/=.*/,`=;expires=${new Date().toUTCString()};path=/`)}catch(u){return Promise.reject(u)}}async clearAllCookies(){try{await this.clearCookies()}catch(u){return Promise.reject(u)}}}gt("CapacitorCookies",{web:()=>new ue});const de=async a=>new Promise((u,o)=>{const h=new FileReader;h.onload=()=>{const e=h.result;u(e.indexOf(",")>=0?e.split(",")[1]:e)},h.onerror=e=>o(e),h.readAsDataURL(a)}),pe=(a={})=>{const u=Object.keys(a);return Object.keys(a).map(e=>e.toLocaleLowerCase()).reduce((e,t,c)=>(e[t]=a[u[c]],e),{})},fe=(a,u=!0)=>a?Object.entries(a).reduce((h,e)=>{const[t,c]=e;let r,i;return Array.isArray(c)?(i="",c.forEach(n=>{r=u?encodeURIComponent(n):n,i+=`${t}=${r}&`}),i.slice(0,-1)):(r=u?encodeURIComponent(c):c,i=`${t}=${r}`),`${h}&${i}`},"").substr(1):null,he=(a,u={})=>{const o=Object.assign({method:a.method||"GET",headers:a.headers},u),e=pe(a.headers)["content-type"]||"";if(typeof a.data=="string")o.body=a.data;else if(e.includes("application/x-www-form-urlencoded")){const t=new URLSearchParams;for(const[c,r]of Object.entries(a.data||{}))t.set(c,r);o.body=t.toString()}else if(e.includes("multipart/form-data")||a.data instanceof FormData){const t=new FormData;if(a.data instanceof FormData)a.data.forEach((r,i)=>{t.append(i,r)});else for(const r of Object.keys(a.data))t.append(r,a.data[r]);o.body=t;const c=new Headers(o.headers);c.delete("content-type"),o.headers=c}else(e.includes("application/json")||typeof a.data=="object")&&(o.body=JSON.stringify(a.data));return o};class me extends $t{async request(u){const o=he(u,u.webFetchExtra),h=fe(u.params,u.shouldEncodeUrlParams),e=h?`${u.url}?${h}`:u.url,t=await fetch(e,o),c=t.headers.get("content-type")||"";let{responseType:r="text"}=t.ok?u:{};c.includes("application/json")&&(r="json");let i,n;switch(r){case"arraybuffer":case"blob":n=await t.blob(),i=await de(n);break;case"json":i=await t.json();break;case"document":case"text":default:i=await t.text()}const l={};return t.headers.forEach((s,d)=>{l[d]=s}),{data:i,headers:l,status:t.status,url:t.url}}async get(u){return this.request(Object.assign(Object.assign({},u),{method:"GET"}))}async post(u){return this.request(Object.assign(Object.assign({},u),{method:"POST"}))}async put(u){return this.request(Object.assign(Object.assign({},u),{method:"PUT"}))}async patch(u){return this.request(Object.assign(Object.assign({},u),{method:"PATCH"}))}async delete(u){return this.request(Object.assign(Object.assign({},u),{method:"DELETE"}))}}gt("CapacitorHttp",{web:()=>new me});var Rt;(function(a){a.Dark="DARK",a.Light="LIGHT",a.Default="DEFAULT"})(Rt||(Rt={}));var Ft;(function(a){a.StatusBar="StatusBar",a.NavigationBar="NavigationBar"})(Ft||(Ft={}));class ge extends $t{async setStyle(){this.unavailable("not available for web")}async setAnimation(){this.unavailable("not available for web")}async show(){this.unavailable("not available for web")}async hide(){this.unavailable("not available for web")}}gt("SystemBars",{web:()=>new ge});var mt;(function(a){a.Heavy="HEAVY",a.Medium="MEDIUM",a.Light="LIGHT"})(mt||(mt={}));var At;(function(a){a.Success="SUCCESS",a.Warning="WARNING",a.Error="ERROR"})(At||(At={}));const qt=gt("Haptics",{web:()=>ne(()=>import("./web-Bp6c6Vk9.js"),[]).then(a=>new a.HapticsWeb)}),be=async()=>{try{await qt.impact({style:mt.Light})}catch{}},we=async()=>{try{await qt.impact({style:mt.Medium})}catch{}};class xe{constructor(){this.currentFocus=null,this.isEnabled=!1,this.selectors=[".video-card",".hero__btn",".slider-btn","#topSearchBtn",".nav-item",".category-card",".tab-btn",".episode-row",".recommendation-card"]}init(){this.isEnabled=!0,document.addEventListener("keydown",this.handleKey.bind(this)),document.addEventListener("mousemove",this.handleMouseMove.bind(this))}handleMouseMove(){this.currentFocus&&(this.currentFocus.blur(),this.currentFocus.classList.remove("keyboard-focused"),this.currentFocus=null)}handleKey(u){if(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(u.key)){if(u.preventDefault(),!this.currentFocus){this.focusFirstVisible();return}let o=null;switch(u.key){case"ArrowRight":o=this.moveHorizontal(1);break;case"ArrowLeft":o=this.moveHorizontal(-1);break;case"ArrowUp":o=this.moveVertical(-1);break;case"ArrowDown":o=this.moveVertical(1);break}o&&this.setFocus(o)}else u.key==="Enter"&&this.currentFocus&&this.currentFocus.click()}focusFirstVisible(){const u=document.querySelectorAll(".video-card");u.length>0&&this.setFocus(u[0])}setFocus(u){this.currentFocus&&this.currentFocus.classList.remove("keyboard-focused"),this.currentFocus=u,u.classList.add("keyboard-focused"),u.focus({preventScroll:!0}),u.scrollIntoView({behavior:"smooth",block:"center",inline:"center"})}moveHorizontal(u){if(!this.currentFocus)return null;const o=Array.from(document.querySelectorAll(this.selectors.join(","))),h=o.indexOf(this.currentFocus);if(h===-1)return null;const e=h+u;if(e>=0&&et.height*.5,c}return null}moveVertical(u){if(!this.currentFocus)return null;const o=this.currentFocus.getBoundingClientRect(),h=o.left+o.width/2,t=Array.from(document.querySelectorAll(this.selectors.join(","))).filter(i=>{if(i===this.currentFocus)return!1;const n=i.getBoundingClientRect();return u===1?n.top>=o.bottom-o.height*.2:n.bottom<=o.top+o.height*.2});if(t.length===0)return null;let c=null,r=1/0;return t.forEach(i=>{const n=i.getBoundingClientRect(),l=n.left+n.width/2;n.top+n.height/2;const s=Math.abs(n.top-o.top),d=Math.abs(l-h),f=Math.sqrt(Math.pow(s,2)+Math.pow(d,2));f${Ut(a)} + `,o.appendChild(m),setTimeout(()=>{m.style.animation="slideIn 0.3s ease reverse",setTimeout(()=>m.remove(),300)},Nt)}function Xt(a){switch(a){case"success":return'';case"error":return'';default:return''}}function Ut(a){if(!a)return"";const p=document.createElement("div");return p.textContent=a,p.innerHTML}const Gt={setStyle:async()=>{},setBackgroundColor:async()=>{},show:async()=>{},hide:async()=>{},Style:{Dark:"DARK",Light:"LIGHT"}},Zt={Dark:"DARK",Light:"LIGHT"},kt={impact:async()=>{},vibrate:async()=>{},notification:async()=>{},selectionStart:async()=>{},selectionChanged:async()=>{},selectionEnd:async()=>{}},Et={Heavy:"HEAVY",Medium:"MEDIUM",Light:"LIGHT"},Kt=async()=>{try{await kt.impact({style:Et.Light})}catch{}},Jt=async()=>{try{await kt.impact({style:Et.Medium})}catch{}};class Qt{constructor(){this.currentFocus=null,this.isEnabled=!1,this.isTVMode=this.detectTVMode(),this.selectors=[".video-card",".hero__btn",".slider-btn","#topSearchBtn",".nav-item",".category-card",".tab-btn",".episode-row",".recommendation-card"]}detectTVMode(){const p=navigator.userAgent.toLowerCase();return p.includes("android")&&(p.includes("tv")||p.includes("aftm")||p.includes("aftt"))}init(){this.isEnabled=!0,document.addEventListener("keydown",this.handleKey.bind(this)),this.isTVMode||document.addEventListener("mousemove",this.handleMouseMove.bind(this)),this.isTVMode&&setTimeout(()=>this.focusFirstVisible(),500)}handleMouseMove(){this.currentFocus&&(this.currentFocus.blur(),this.currentFocus.classList.remove("keyboard-focused"),this.currentFocus=null)}handleKey(p){if(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(p.key)){if(p.preventDefault(),!this.currentFocus){this.focusFirstVisible();return}let o=null;switch(p.key){case"ArrowRight":o=this.moveHorizontal(1);break;case"ArrowLeft":o=this.moveHorizontal(-1);break;case"ArrowUp":o=this.moveVertical(-1);break;case"ArrowDown":o=this.moveVertical(1);break}o&&this.setFocus(o)}else p.key==="Enter"&&this.currentFocus&&this.currentFocus.click()}focusFirstVisible(){const p=document.querySelectorAll(".video-card");p.length>0&&this.setFocus(p[0])}setFocus(p){this.currentFocus&&this.currentFocus.classList.remove("keyboard-focused"),this.currentFocus=p,p.classList.add("keyboard-focused"),p.focus({preventScroll:!0}),p.scrollIntoView({behavior:"smooth",block:"center",inline:"center"})}moveHorizontal(p){if(!this.currentFocus)return null;const o=Array.from(document.querySelectorAll(this.selectors.join(","))),m=o.indexOf(this.currentFocus);if(m===-1)return null;const e=m+p;if(e>=0&&et.height*.5,c}return null}moveVertical(p){if(!this.currentFocus)return null;const o=this.currentFocus.getBoundingClientRect(),m=o.left+o.width/2,t=Array.from(document.querySelectorAll(this.selectors.join(","))).filter(i=>{if(i===this.currentFocus)return!1;const n=i.getBoundingClientRect();return p===1?n.top>=o.bottom-o.height*.2:n.bottom<=o.top+o.height*.2});if(t.length===0)return null;let c=null,r=1/0;return t.forEach(i=>{const n=i.getBoundingClientRect(),s=n.left+n.width/2;n.top+n.height/2;const l=Math.abs(n.top-o.top),u=Math.abs(s-m),d=Math.sqrt(Math.pow(l,2)+Math.pow(u,2));dthis.getCachedImage(c)))}}createCachedImage(t,n="",a=""){const i=document.createElement("img");return i.alt=n,i.className=a,i.loading="lazy",i.decoding="async",i.src='data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 450"%3E%3Crect fill="%23222"%3E%3C/rect%3E%3C/svg%3E',t&&this.getCachedImage(t).then(c=>{i.src=c}),i}async _cleanupCache(t){try{const n=await t.keys();if(n.length>de){const a=Math.floor(n.length*.2);for(let i=0;ic)return!0}return!1}function he(e){var i;const t=(e.quality||"").toLowerCase(),n=((i=e.episodes)==null?void 0:i.length)||0,a=(e.category||e.type||"").toLowerCase();return t.includes("trailer")||a.includes("trailer")?"trailer":n>1||a.includes("series")||a.includes("phim-bo")||t.includes("tập")||t.includes("ep")?"series":a.includes("hoathinh")||a.includes("animation")||a.includes("anime")?"animation":"movie"}function ge(e){var i;const t=e.quality||"";if(t.match(/(?:tập\s*)?(\d+)(?:\s*\/\s*(\d+))?/i))return t;const a=((i=e.episodes)==null?void 0:i.length)||0;return a>1?`${a} Tập`:null}function fe(e,t,n){var j;const a=document.createElement("div");a.className="video-card",a.dataset.videoId=e.id;const i=e.thumbnail||"",c=L.getProxyUrl(i,200),m=e.year||new Date().getFullYear(),r=pe(e),s=he(e),u=ge(e);let l=e.quality||"HD";l=l.replace(/(?:tập\s*)?\d+(?:\s*\/\s*\d+)?/gi,"").trim()||"HD",l.length>6&&(l="HD");const h=parseFloat(e.rating||0),d=h>=7,f=Math.round(h*10);let g="";h>0&&(g=` +import{a as k,h as j,s as $,K as ie,S as z,b as se,c as oe,d as ne}from"./keyboard-nav-CjQOo0Sk.js";async function le(){try{console.log("📂 Loading themed categories...");const t=await(await fetch("/api/rophim/categories/all")).json();return t&&t.categories?(console.log(`✓ Loaded ${Object.keys(t.categories).length} category sections`),t.categories):null}catch(e){return console.error("Error loading categories:",e),null}}function J(e){const t=document.createElement("div");return t.className="video-card__ranking",e<=3&&t.classList.add(`video-card__ranking--${e}`),t.textContent=`#${e}`,t}function Q(e){if(!e)return null;const t=document.createElement("div");t.className="video-card__badge";const s=e.toUpperCase();return s.includes("HOT")?t.classList.add("video-card__badge--hot"):s.includes("NEW")?t.classList.add("video-card__badge--new"):s.includes("CINEMA")?t.classList.add("video-card__badge--cinema"):s.includes("FULL")&&t.classList.add("video-card__badge--full"),t.textContent=s,t}function ce(e,t){if(!e)return e;const s=e.querySelector(".video-card__container");if(!s)return e;if(t.badge){const r=Q(t.badge);r&&s.appendChild(r)}if(t.ranking){const r=J(t.ranking);s.appendChild(r)}return e}typeof window<"u"&&(window.categorySystem={loadCategories:le,createRankingBadge:J,createQualityBadge:Q,enhanceVideoCardWithBadges:ce});const R="kvstream-images-v1",de=500;class me{constructor(){this.memoryCache=new Map,this.cacheEnabled="caches"in window,this.pendingRequests=new Map}async getCachedImage(t){if(!t||!this.cacheEnabled)return t;if(this.memoryCache.has(t))return this.memoryCache.get(t);if(this.pendingRequests.has(t))return this.pendingRequests.get(t);const s=this._fetchAndCache(t);this.pendingRequests.set(t,s);try{return await s}finally{this.pendingRequests.delete(t)}}async _fetchAndCache(t){try{const s=await caches.open(R),r=await s.match(t);if(r){const d=await r.blob(),m=URL.createObjectURL(d);return this.memoryCache.set(t,m),m}const i=await fetch(t,{mode:"cors",credentials:"omit"});if(i.ok){const d=i.clone();s.put(t,d);const m=await i.blob(),a=URL.createObjectURL(m);return this.memoryCache.set(t,a),this._cleanupCache(s),a}}catch{console.warn("Image cache failed:",t)}return t}async preloadImages(t){if(!t||t.length===0)return;const s=6;for(let r=0;rthis.getCachedImage(d)))}}createCachedImage(t,s="",r=""){const i=document.createElement("img");return i.alt=s,i.className=r,i.loading="lazy",i.decoding="async",i.src='data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 450"%3E%3Crect fill="%23222"%3E%3C/rect%3E%3C/svg%3E',t&&this.getCachedImage(t).then(d=>{i.src=d}),i}async _cleanupCache(t){try{const s=await t.keys();if(s.length>de){const r=Math.floor(s.length*.2);for(let i=0;id)return!0}return!1}function he(e){var i;const t=(e.quality||"").toLowerCase(),s=((i=e.episodes)==null?void 0:i.length)||0,r=(e.category||e.type||"").toLowerCase();return t.includes("trailer")||r.includes("trailer")?"trailer":s>1||r.includes("series")||r.includes("phim-bo")||t.includes("tập")||t.includes("ep")?"series":r.includes("hoathinh")||r.includes("animation")||r.includes("anime")?"animation":"movie"}function ge(e){var i;const t=e.quality||"";if(t.match(/(?:tập\s*)?(\d+)(?:\s*\/\s*(\d+))?/i))return t;const r=((i=e.episodes)==null?void 0:i.length)||0;return r>1?`${r} Tập`:null}function fe(e,t,s){var T;const r=document.createElement("div");r.className="video-card",r.dataset.videoId=e.id,r.setAttribute("tabindex","0");const d=window.innerWidth<768?180:200,m=e.thumbnail||"",a=k.getProxyUrl(m,d),o=e.year||new Date().getFullYear(),u=pe(e),l=he(e),h=ge(e);let c=e.quality||"HD";c=c.replace(/(?:tập\s*)?\d+(?:\s*\/\s*\d+)?/gi,"").trim()||"HD",c.length>6&&(c="HD");const f=parseFloat(e.rating||0),g=f>=7,y=Math.round(f*10);let v="";f>0&&(v=`
- ${h.toFixed(1)} + ${f.toFixed(1)}
- `);let y="";h>0&&(y=` -
- ${d?"🍅":"🥀"} - ${f}% + `);let E="";f>0&&(E=` +
+ ${g?"🍅":"🥀"} + ${y}%
- `);const v='data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 450"%3E%3Crect width="300" height="450" fill="%2314141c"/%3E%3C/svg%3E';let w="";r&&(w+='MỚI'),s==="trailer"?w+='TRAILER':s==="series"?w+='PHIM BỘ':s==="animation"&&(w+='HOẠT HÌNH'),a.innerHTML=` + `);const G='data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 450"%3E%3Crect width="300" height="450" fill="%2314141c"/%3E%3C/svg%3E';let x="";u&&(x+='MỚI'),l==="trailer"?x+='TRAILER':l==="series"?x+='PHIM BỘ':l==="animation"&&(x+='HOẠT HÌNH'),r.innerHTML=`
- ${z(e.title)} + ${U(e.title)}
- ${w} + ${x}
- ${y} - ${g} - ${l} + ${E} + ${v} + ${c}
- ${m} - ${u?`${u}`:""} + ${o} + ${h?`${h}`:""}
@@ -50,51 +50,51 @@ import{a as L,r as ie,h as R,s as N,K as se,b as oe,d as ne}from"./keyboard-nav-
- ${z(e.title)} + ${U(e.title)}
- `;const x=a.querySelector(".video-card__img");if(x&&c){const H=new IntersectionObserver(te=>{te.forEach(ae=>{ae.isIntersecting&&(ue.getCachedImage(c).then(re=>{x.src=re,x.classList.add("loaded")}).catch(()=>{x.src=c,x.onload=()=>x.classList.add("loaded"),x.onerror=()=>x.classList.add("loaded")}),H.unobserve(x))})},{rootMargin:"800px",threshold:0});H.observe(x)}return(j=a.querySelector('[data-action="play"]'))==null||j.addEventListener("click",H=>{H.stopPropagation(),t==null||t(e)}),a.addEventListener("click",()=>{t==null||t(e)}),a}function z(e){if(!e)return"";const t=document.createElement("div");return t.textContent=e,t.innerHTML}function ye(e,t){let n;return function(...i){const c=()=>{clearTimeout(n),e(...i)};clearTimeout(n),n=setTimeout(c,t)}}function ve(e,t,n){if(!e||!t)return;const a=300;let i="";async function c(r){if(i=r,!r||r.length<2){t.classList.remove("active"),t.innerHTML="";return}try{const s=await L.searchRophim(r),u=(s==null?void 0:s.movies)||[];if(r!==i)return;u.length===0?t.innerHTML=` + `;const w=r.querySelector(".video-card__img");if(w&&a){const _=new IntersectionObserver(te=>{te.forEach(ae=>{ae.isIntersecting&&(ue.getCachedImage(a).then(re=>{w.src=re,w.classList.add("loaded")}).catch(()=>{w.src=a,w.onload=()=>w.classList.add("loaded"),w.onerror=()=>w.classList.add("loaded")}),_.unobserve(w))})},{rootMargin:"800px",threshold:0});_.observe(w)}return(T=r.querySelector('[data-action="play"]'))==null||T.addEventListener("click",_=>{_.stopPropagation(),t==null||t(e)}),r.addEventListener("click",()=>{t==null||t(e)}),r}function U(e){if(!e)return"";const t=document.createElement("div");return t.textContent=e,t.innerHTML}function ye(e,t){let s;return function(...i){const d=()=>{clearTimeout(s),e(...i)};clearTimeout(s),s=setTimeout(d,t)}}function ve(e,t,s){if(!e||!t)return;const r=300;let i="";async function d(a){if(i=a,!a||a.length<2){t.classList.remove("active"),t.innerHTML="";return}try{const o=await k.searchRophim(a),u=(o==null?void 0:o.movies)||[];if(a!==i)return;u.length===0?t.innerHTML=`
- No results found for "${G(r)}" + No results found for "${F(a)}"
- `:(t.innerHTML=u.map(l=>{const h=L.getProxyUrl(l.poster_url||l.thumb_url||l.thumbnail,80);return` + `:(t.innerHTML=u.map(l=>{const h=k.getProxyUrl(l.poster_url||l.thumb_url||l.thumbnail,80);return`
${G(l.name||l.title)}
-
${G(l.name||l.title)}
+
${F(l.name||l.title)}
${l.quality?`${l.quality} • `:""} ${l.year||""}
- `}).join(""),t.querySelectorAll(".search__result[data-video-slug]").forEach(l=>{l.addEventListener("click",()=>{const h=l.dataset.videoSlug;window.location.href=`/watch.html?id=${h}&slug=${h}`})})),t.classList.add("active")}catch(s){console.error("Search error:",s),t.innerHTML=` + `}).join(""),t.querySelectorAll(".search__result[data-video-slug]").forEach(l=>{l.addEventListener("click",()=>{const h=l.dataset.videoSlug;window.location.href=`/watch.html?id=${h}&slug=${h}`})})),t.classList.add("active")}catch(o){console.error("Search error:",o),t.innerHTML=` < div class="search__result" style = "color: var(--color-error);" > Search failed. Please try again.
- `,t.classList.add("active")}}const m=ye(c,a);e.addEventListener("input",r=>{m(r.target.value.trim())}),document.addEventListener("click",r=>{e&&t&&!e.contains(r.target)&&!t.contains(r.target)&&t.classList.remove("active")}),e.addEventListener("keydown",r=>{r.key==="Escape"&&(e.blur(),t.classList.remove("active"))}),e.addEventListener("focus",()=>{e.value.trim().length>=2&&t.classList.add("active")})}function G(e){if(!e)return"";const t=document.createElement("div");return t.textContent=e,t.innerHTML}var F;(function(e){e.Dark="DARK",e.Light="LIGHT",e.Default="DEFAULT"})(F||(F={}));var W;(function(e){e.None="NONE",e.Slide="SLIDE",e.Fade="FADE"})(W||(W={}));const O=ie("StatusBar"),M={elements:{overlay:document.getElementById("splash-screen"),bar:document.getElementById("loading-bar"),text:document.getElementById("loading-text")},progress:0,isFinished:!1,update(e,t){this.isFinished||(this.progress=Math.min(e,100),this.elements.bar&&(this.elements.bar.style.width=`${this.progress}%`),this.elements.text&&t&&(this.elements.text.textContent=t),this.progress>=100&&this.finish())},finish(){this.isFinished||(this.isFinished=!0,setTimeout(()=>{this.elements.overlay&&(this.elements.overlay.classList.add("fade-out"),setTimeout(()=>this.elements.overlay.remove(),1e3))},500))}},p={videos:[],currentCategory:"all",currentVideo:null,isLoading:!1,featuredVideo:null,heroMovies:[],currentHeroIndex:0,heroInterval:null,page:1,hasMore:!0},o={videoGrid:document.getElementById("videoGrid")||document.getElementById("mainContent"),mainContent:document.getElementById("mainContent"),loading:document.getElementById("loading"),emptyState:document.getElementById("emptyState"),categories:document.getElementById("categories"),mainHeader:document.getElementById("mainHeader"),searchWrapper:document.getElementById("searchWrapper"),searchToggle:document.getElementById("searchToggle"),searchInput:document.getElementById("searchInput"),searchResults:document.getElementById("searchResults"),navLinks:document.querySelectorAll(".header__nav-link"),playerModal:document.getElementById("playerModal"),playerContainer:document.getElementById("playerContainer"),playerTitle:document.getElementById("playerTitle"),playerMeta:document.getElementById("playerMeta"),closePlayer:document.getElementById("closePlayer"),modalBackdrop:document.getElementById("modalBackdrop"),mobileNavItems:document.querySelectorAll(".mobile-nav__item, .sidebar__nav-item"),mobileBottomNavButtons:document.querySelectorAll("#mobileBottomNav .nav-item")};function A(e){document.querySelectorAll("#mobileBottomNav .nav-item").forEach(n=>{const a=n.dataset.view===e;n.classList.toggle("active",a),n.classList.toggle("text-white",a),n.classList.toggle("text-gray-400",!a);const i=n.querySelector(".material-symbols-outlined");i&&(i.style.fontVariationSettings=a?"'FILL' 1":"'FILL' 0")})}async function U(){M.update(10,"Initializing services..."),ve(o.searchInput,o.searchResults),M.update(20,"Setting up navigation..."),o.mobileBottomNavButtons&&o.mobileBottomNavButtons.forEach(a=>{a.addEventListener("click",i=>{i.preventDefault();const c=a.dataset.view;if(c){if(o.mobileBottomNavButtons.forEach(m=>m.classList.remove("active")),a.classList.add("active"),R(),c==="home")Ce();else if(c==="search")if(window.innerWidth<768)try{P()}catch(m){console.error("Search render failed",m)}else o.searchWrapper.classList.add("active"),o.searchInput.focus();else c==="mylist"?window.innerWidth<768?Y():_("mylist"):c==="downloads"?N("Downloads feature coming soon!","info"):c==="profile"?Ee():c==="cinema"?(A("cinema"),E("cinema")):E(c);window.scrollTo({top:0,behavior:"smooth"})}})}),xe(),M.update(40,"Fetching movie catalog...");try{await E("home")}catch(a){console.error("Home render failed",a)}M.update(70,"Preparing featured content...");try{await C()}catch(a){console.error("Hero render failed",a)}M.update(90,"Applying final touches...");const t=new URLSearchParams(window.location.search).get("view");t&&window.innerWidth<768&&(t==="search"?P():t==="mylist"?Y():t==="cinema"&&E("cinema")),new se().init(),"serviceWorker"in navigator&&window.addEventListener("load",()=>{navigator.serviceWorker.register("/sw.js")}),M.update(100,"Welcome to StreamFlix");try{await O.setStyle({style:F.Dark}),await O.setBackgroundColor({color:"#141414"})}catch{}}function C(e=null){const t=document.getElementById("heroTitle"),n=document.getElementById("heroDescription"),a=document.getElementById("heroBg"),i=document.getElementById("heroTag"),c=document.getElementById("heroTagContainer"),m=document.getElementById("heroPlayBtn"),r=document.getElementById("heroInfoBtn"),s=document.getElementById("heroContent"),u=e||p.featuredVideo||p.videos[0];u&&(a&&(a.style.opacity="0.5"),s&&(s.style.opacity="0"),setTimeout(()=>{t&&(t.textContent=u.name||u.title||"Featured Movie"),n&&(n.textContent=u.description||u.content||"Watch now on StreamFlix");const l=u.backdrop||u.poster_url||u.thumb_url||u.thumbnail||"";if(a&&l&&(a.style.backgroundImage=`url('${l}')`),i&&c){const h=u.genres||u.category;c.classList.remove("hidden"),h&&Array.isArray(h)&&h.length>0?i.textContent=h[0]:typeof h=="string"?i.textContent=h:i.textContent="#1 in Movies Today"}if(m){const h=m.cloneNode(!0);m.parentNode.replaceChild(h,m),h.addEventListener("click",()=>{oe(),k(u)})}if(r){const h=r.cloneNode(!0);r.parentNode.replaceChild(h,r),h.addEventListener("click",()=>Z(u))}a&&(a.style.opacity="1"),s&&(s.style.opacity="1")},300),p.featuredVideo=u)}function be(){p.heroInterval&&clearInterval(p.heroInterval),!(!p.heroMovies||p.heroMovies.length<=1)&&(p.heroInterval=setInterval(()=>{p.currentHeroIndex++,p.currentHeroIndex>=p.heroMovies.length&&(p.currentHeroIndex=0),C(p.heroMovies[p.currentHeroIndex])},8e3))}function xe(){var s,u,l,h;const e=document.getElementById("backToTop"),t=()=>{const d=window.scrollY;o.mainHeader&&(d>100?(o.mainHeader.classList.add("scrolled"),o.mainHeader.style.backgroundColor="#141414"):(o.mainHeader.classList.remove("scrolled"),o.mainHeader.style.backgroundColor="transparent")),e&&(d>500?e.classList.add("visible"):e.classList.remove("visible"))};window.addEventListener("scroll",t,{passive:!0}),t(),e&&e.addEventListener("click",()=>{window.scrollTo({top:0,behavior:"smooth"})}),(s=o.navLinks)==null||s.forEach(d=>{d.addEventListener("click",f=>{f.preventDefault();const g=d.dataset.category;o.navLinks.forEach(y=>y.classList.remove("active")),d.classList.add("active"),p.currentCategory=g,B(g,!0)})}),(u=o.mobileNavItems)==null||u.forEach(d=>{d.addEventListener("click",f=>{f.preventDefault();const g=d.dataset.view;if(o.mobileNavItems.forEach(y=>y.classList.remove("active")),d.classList.add("active"),o.mobileNavItems.forEach(y=>{y.dataset.view===g&&y.classList.add("active")}),g==="home"){o.videoGrid.style.display="block";const y=document.getElementById("newHotContainer");y&&(y.style.display="none"),p.currentCategory="all",B("all",!0)}else if(["movies","series","animation","cinema"].includes(g)){o.videoGrid.style.display="block";const y=document.getElementById("newHotContainer");y&&(y.style.display="none"),p.currentCategory=g,B(g,!0)}else if(g==="history"){o.videoGrid.style.display="block";const y=document.getElementById("newHotContainer");y&&(y.style.display="none"),_()}else if(g==="search"){const y=document.getElementById("headerSearchBtn");y&&y.click()}window.scrollTo({top:0,behavior:"smooth"})})});const n=document.querySelectorAll(".netflix-header__nav-link");n.forEach(d=>{d.addEventListener("click",f=>{f.preventDefault();const g=d.dataset.view;n.forEach(v=>v.classList.remove("active")),d.classList.add("active"),o.mobileNavItems.forEach(v=>{v.classList.remove("active"),v.dataset.view===g&&v.classList.add("active")}),o.videoGrid.style.display="block";const y=document.getElementById("newHotContainer");y&&(y.style.display="none"),g==="home"?(p.currentCategory="all",B("all",!0)):["movies","series","animation","cinema"].includes(g)?(p.currentCategory=g,B(g,!0)):g==="history"&&_(),window.scrollTo({top:0,behavior:"smooth"})})});const a=document.getElementById("headerSearchBtn");a&&a.addEventListener("click",d=>{d.preventDefault();const f=document.getElementById("searchModal"),g=document.getElementById("searchInput");f&&(f.classList.add("active"),g&&setTimeout(()=>g.focus(),100))});const i=document.getElementById("mobileSearchBtn");i&&i.addEventListener("click",d=>{d.preventDefault();const f=document.getElementById("searchModal"),g=document.getElementById("searchInput");f&&(R(),f.classList.add("active"),g&&setTimeout(()=>g.focus(),100))});const c=document.getElementById("closeSearch");c&&c.addEventListener("click",()=>{const d=document.getElementById("searchModal");d&&d.classList.remove("active")});const m=document.getElementById("modalPlayerBackButton");m&&m.addEventListener("click",()=>{var d;R(),(d=window.history.state)!=null&&d.playerOpen?window.history.back():T()}),window.addEventListener("popstate",d=>{var f,g;(f=o.playerModal)!=null&&f.classList.contains("active")&&!((g=d.state)!=null&&g.playerOpen)&&T(!1)});const r=document.querySelectorAll(".nav-link");r.forEach(d=>{d.addEventListener("click",f=>{f.preventDefault();const g=d.dataset.view;r.forEach(y=>{y.classList.remove("active","text-white"),y.classList.add("text-gray-300")}),d.classList.add("active","text-white"),d.classList.remove("text-gray-300"),g==="home"?(p.currentCategory="all",E("home")):g==="series"?(p.currentCategory="series",E("series")):g==="movies"?(p.currentCategory="movies",E("movies")):g==="cinema"?(p.currentCategory="cinema",E("cinema")):g==="history"&&_(),window.scrollTo({top:0,behavior:"smooth"})})}),(l=o.closePlayer)==null||l.addEventListener("click",T),(h=o.modalBackdrop)==null||h.addEventListener("click",T),document.addEventListener("keydown",d=>{var f,g,y;if(d.key==="Escape"){(f=o.playerModal)!=null&&f.classList.contains("active")&&((g=window.history.state)!=null&&g.playerOpen?window.history.back():T()),(y=o.searchWrapper)!=null&&y.classList.contains("active")&&o.searchWrapper.classList.remove("active");const v=document.getElementById("searchModal");v!=null&&v.classList.contains("active")&&v.classList.remove("active")}})}async function B(e="all",t=!1){if(p.isLoading||(t&&(p.page=1,p.hasMore=!0,p.videos=[],o.videoGrid.innerHTML=""),!p.hasMore))return;p.isLoading=!0,S(p.page===1);const n=(i,c=12e3)=>Promise.race([i,new Promise((m,r)=>setTimeout(()=>r(new Error("Timeout")),c))]),a=document.getElementById("topSearchBtn");a&&a.addEventListener("click",i=>{i.preventDefault();const c=document.getElementById("searchModal"),m=document.getElementById("searchInput");c&&(c.classList.add("active"),m&&setTimeout(()=>m.focus(),100))});try{let i=null,c=!1;if(i||(i=await n(L.getRophimCatalog({category:e!=="all"?e:null,page:p.page,limit:24}),12e3)),i&&i.movies&&i.movies.length>0){const m=i.movies.map(l=>({id:l.id||`api_${Date.now()}_${Math.random()}`,title:l.title||"Unknown Title",thumbnail:l.thumbnail||"https://via.placeholder.com/300x450?text=No+Image",backdrop:l.backdrop||l.thumbnail||"https://via.placeholder.com/1920x1080?text=No+Backdrop",preview_url:l.preview_url||"",duration:l.duration||0,resolution:l.quality||"HD",category:l.category||"movies",year:l.year||new Date().getFullYear(),description:l.description||"",matchScore:Math.floor(Math.random()*15)+85,source_url:l.source_url,slug:l.slug,cast:l.cast||[],director:l.director,country:l.country,episodes:l.episodes||[]})),r=new Set(p.videos.map(l=>l.id)),s=m.filter(l=>!r.has(l.id));p.videos=[...p.videos,...s],p.page+=1,m.length<24,p.page===2?q(p.videos,!1):q(s,!0),Le(),b&&b.classList.remove("loading"),p.isLoading=!1,S(!1);return}else p.hasMore=!1,b&&(b.classList.remove("loading"),b.style.display="none"),p.isLoading=!1,S(!1)}catch(i){if(console.warn("API load failed:",i),p.page===1){N("Using offline mode","info");const c=ee();p.videos=c,p.featuredVideo=c[0],q(c)}p.isLoading=!1,S(!1)}}function $(e,t,n="poster"){const a=document.createElement("section");a.className="flex flex-col gap-4 mb-12 relative";const i=document.createElement("h2");i.className="text-xl md:text-2xl font-bold text-white hover:text-primary cursor-pointer transition-colors flex items-center gap-2 group px-4 md:px-12",i.innerHTML=` + `,t.classList.add("active")}}const m=ye(d,r);e.addEventListener("input",a=>{m(a.target.value.trim())}),document.addEventListener("click",a=>{e&&t&&!e.contains(a.target)&&!t.contains(a.target)&&t.classList.remove("active")}),e.addEventListener("keydown",a=>{a.key==="Escape"&&(e.blur(),t.classList.remove("active"))}),e.addEventListener("focus",()=>{e.value.trim().length>=2&&t.classList.add("active")})}function F(e){if(!e)return"";const t=document.createElement("div");return t.textContent=e,t.innerHTML}const M={elements:{overlay:document.getElementById("splash-screen"),bar:document.getElementById("loading-bar"),text:document.getElementById("loading-text")},progress:0,isFinished:!1,update(e,t){this.isFinished||(this.progress=Math.min(e,100),this.elements.bar&&(this.elements.bar.style.width=`${this.progress}%`),this.elements.text&&t&&(this.elements.text.textContent=t),this.progress>=100&&this.finish())},finish(){this.isFinished||(this.isFinished=!0,setTimeout(()=>{this.elements.overlay&&(this.elements.overlay.classList.add("fade-out"),setTimeout(()=>this.elements.overlay.remove(),1e3))},500))}},p={videos:[],currentCategory:"all",currentVideo:null,isLoading:!1,featuredVideo:null,heroMovies:[],currentHeroIndex:0,heroInterval:null,page:1,hasMore:!0},n={videoGrid:document.getElementById("videoGrid")||document.getElementById("mainContent"),mainContent:document.getElementById("mainContent"),loading:document.getElementById("loading"),emptyState:document.getElementById("emptyState"),categories:document.getElementById("categories"),mainHeader:document.getElementById("mainHeader"),searchWrapper:document.getElementById("searchWrapper"),searchToggle:document.getElementById("searchToggle"),searchInput:document.getElementById("searchInput"),searchResults:document.getElementById("searchResults"),navLinks:document.querySelectorAll(".header__nav-link"),playerModal:document.getElementById("playerModal"),playerContainer:document.getElementById("playerContainer"),playerTitle:document.getElementById("playerTitle"),playerMeta:document.getElementById("playerMeta"),closePlayer:document.getElementById("closePlayer"),modalBackdrop:document.getElementById("modalBackdrop"),mobileNavItems:document.querySelectorAll(".mobile-nav__item, .sidebar__nav-item"),mobileBottomNavButtons:document.querySelectorAll("#mobileBottomNav .nav-item")};function D(e){document.querySelectorAll("#mobileBottomNav .nav-item").forEach(s=>{const r=s.dataset.view===e;s.classList.toggle("active",r),s.classList.toggle("text-white",r),s.classList.toggle("text-gray-400",!r);const i=s.querySelector(".material-symbols-outlined");i&&(i.style.fontVariationSettings=r?"'FILL' 1":"'FILL' 0")})}async function V(){M.update(10,"Initializing services..."),ve(n.searchInput,n.searchResults),M.update(20,"Setting up navigation..."),n.mobileBottomNavButtons&&n.mobileBottomNavButtons.forEach(r=>{r.addEventListener("click",i=>{i.preventDefault();const d=r.dataset.view;if(d)if(n.mobileBottomNavButtons.forEach(m=>m.classList.remove("active")),r.classList.add("active"),j(),d==="home")Ce(),window.scrollTo({top:0,behavior:"smooth"});else if(d==="search")if(window.innerWidth<768)try{W()}catch(m){console.error("Search render failed",m)}else n.searchWrapper.classList.add("active"),n.searchInput.focus();else d==="mylist"?window.innerWidth<768?Y():N("mylist"):d==="downloads"?$("Downloads feature coming soon!","info"):d==="profile"?Ee():d==="cinema"?(D("cinema"),C("cinema"),window.scrollTo({top:0,behavior:"smooth"})):(C(d),window.scrollTo({top:0,behavior:"smooth"}))})}),xe(),M.update(40,"Fetching movie catalog...");try{await C("home")}catch(r){console.error("Home render failed",r)}M.update(70,"Preparing featured content...");try{await S()}catch(r){console.error("Hero render failed",r)}M.update(90,"Applying final touches...");const t=new URLSearchParams(window.location.search).get("view");t&&window.innerWidth<768&&(t==="search"?W():t==="mylist"?Y():t==="cinema"&&C("cinema")),new ie().init(),"serviceWorker"in navigator&&window.addEventListener("load",()=>{navigator.serviceWorker.register("/sw.js")}),M.update(100,"Welcome to StreamFlix");try{await z.setStyle({style:se.Dark}),await z.setBackgroundColor({color:"#141414"})}catch{}}function S(e=null){const t=document.getElementById("heroTitle"),s=document.getElementById("heroDescription"),r=document.getElementById("heroBg"),i=document.getElementById("heroTag"),d=document.getElementById("heroTagContainer"),m=document.getElementById("heroPlayBtn"),a=document.getElementById("heroInfoBtn"),o=document.getElementById("heroContent"),u=e||p.featuredVideo||p.videos[0];u&&(r&&(r.style.opacity="0.5"),o&&(o.style.opacity="0"),setTimeout(()=>{t&&(t.textContent=u.name||u.title||"Featured Movie"),s&&(s.textContent=u.description||u.content||"Watch now on StreamFlix");const l=u.backdrop||u.poster_url||u.thumb_url||u.thumbnail||"";if(r&&l&&(r.style.backgroundImage=`url('${l}')`),i&&d){const h=u.genres||u.category;d.classList.remove("hidden"),h&&Array.isArray(h)&&h.length>0?i.textContent=h[0]:typeof h=="string"?i.textContent=h:i.textContent="#1 in Movies Today"}if(m&&m.parentNode){const h=m.cloneNode(!0);m.parentNode.replaceChild(h,m),h.addEventListener("click",()=>{oe(),L(u)})}if(a&&a.parentNode){const h=a.cloneNode(!0);a.parentNode.replaceChild(h,a),h.addEventListener("click",()=>Z(u))}r&&(r.style.opacity="1"),o&&(o.style.opacity="1")},300),p.featuredVideo=u)}function be(){p.heroInterval&&clearInterval(p.heroInterval),!(!p.heroMovies||p.heroMovies.length<=1)&&(p.heroInterval=setInterval(()=>{p.currentHeroIndex++,p.currentHeroIndex>=p.heroMovies.length&&(p.currentHeroIndex=0),S(p.heroMovies[p.currentHeroIndex])},8e3))}function xe(){var o,u,l,h;const e=document.getElementById("backToTop"),t=()=>{const c=window.scrollY;n.mainHeader&&(c>100?(n.mainHeader.classList.add("scrolled"),n.mainHeader.style.backgroundColor="#141414"):(n.mainHeader.classList.remove("scrolled"),n.mainHeader.style.backgroundColor="transparent")),e&&(c>500?e.classList.add("visible"):e.classList.remove("visible"))};window.addEventListener("scroll",t,{passive:!0}),t(),e&&e.addEventListener("click",()=>{window.scrollTo({top:0,behavior:"smooth"})}),(o=n.navLinks)==null||o.forEach(c=>{c.addEventListener("click",f=>{f.preventDefault();const g=c.dataset.category;n.navLinks.forEach(y=>y.classList.remove("active")),c.classList.add("active"),p.currentCategory=g,B(g,!0)})}),(u=n.mobileNavItems)==null||u.forEach(c=>{c.addEventListener("click",f=>{f.preventDefault();const g=c.dataset.view;if(n.mobileNavItems.forEach(y=>y.classList.remove("active")),c.classList.add("active"),n.mobileNavItems.forEach(y=>{y.dataset.view===g&&y.classList.add("active")}),g==="home"){n.videoGrid.style.display="block";const y=document.getElementById("newHotContainer");y&&(y.style.display="none"),p.currentCategory="all",B("all",!0)}else if(["movies","series","animation","cinema"].includes(g)){n.videoGrid.style.display="block";const y=document.getElementById("newHotContainer");y&&(y.style.display="none"),p.currentCategory=g,B(g,!0)}else if(g==="history"){n.videoGrid.style.display="block";const y=document.getElementById("newHotContainer");y&&(y.style.display="none"),N()}else if(g==="search"){const y=document.getElementById("headerSearchBtn");y&&y.click()}window.scrollTo({top:0,behavior:"smooth"})})});const s=document.querySelectorAll(".netflix-header__nav-link");s.forEach(c=>{c.addEventListener("click",f=>{f.preventDefault();const g=c.dataset.view;s.forEach(v=>v.classList.remove("active")),c.classList.add("active"),n.mobileNavItems.forEach(v=>{v.classList.remove("active"),v.dataset.view===g&&v.classList.add("active")}),n.videoGrid.style.display="block";const y=document.getElementById("newHotContainer");y&&(y.style.display="none"),g==="home"?(p.currentCategory="all",B("all",!0)):["movies","series","animation","cinema"].includes(g)?(p.currentCategory=g,B(g,!0)):g==="history"&&N(),window.scrollTo({top:0,behavior:"smooth"})})});const r=document.getElementById("headerSearchBtn");r&&r.addEventListener("click",c=>{c.preventDefault();const f=document.getElementById("searchModal"),g=document.getElementById("searchInput");f&&(f.classList.add("active"),g&&setTimeout(()=>g.focus(),100))});const i=document.getElementById("mobileSearchBtn");i&&i.addEventListener("click",c=>{c.preventDefault();const f=document.getElementById("searchModal"),g=document.getElementById("searchInput");f&&(j(),f.classList.add("active"),g&&setTimeout(()=>g.focus(),100))});const d=document.getElementById("closeSearch");d&&d.addEventListener("click",()=>{const c=document.getElementById("searchModal");c&&c.classList.remove("active")});const m=document.getElementById("modalPlayerBackButton");m&&m.addEventListener("click",()=>{var c;j(),(c=window.history.state)!=null&&c.playerOpen?window.history.back():A()}),window.addEventListener("popstate",c=>{var f,g;(f=n.playerModal)!=null&&f.classList.contains("active")&&!((g=c.state)!=null&&g.playerOpen)&&A(!1)});const a=document.querySelectorAll(".nav-link");a.forEach(c=>{c.addEventListener("click",f=>{const g=c.getAttribute("href");if(g&&g!=="#"&&!g.startsWith("#"))return;f.preventDefault();const y=c.dataset.view;a.forEach(v=>{v.classList.remove("active","text-white"),v.classList.add("text-gray-300")}),c.classList.add("active","text-white"),c.classList.remove("text-gray-300"),y==="home"?(p.currentCategory="all",C("home")):y==="series"?(p.currentCategory="series",C("series")):y==="movies"?(p.currentCategory="movies",C("movies")):y==="cinema"?(p.currentCategory="cinema",C("cinema")):y==="history"&&N(),window.scrollTo({top:0,behavior:"smooth"})})}),(l=n.closePlayer)==null||l.addEventListener("click",A),(h=n.modalBackdrop)==null||h.addEventListener("click",A),document.addEventListener("keydown",c=>{var f,g,y;if(c.key==="Escape"){(f=n.playerModal)!=null&&f.classList.contains("active")&&((g=window.history.state)!=null&&g.playerOpen?window.history.back():A()),(y=n.searchWrapper)!=null&&y.classList.contains("active")&&n.searchWrapper.classList.remove("active");const v=document.getElementById("searchModal");v!=null&&v.classList.contains("active")&&v.classList.remove("active")}})}async function B(e="all",t=!1){if(p.isLoading||(t&&(p.page=1,p.hasMore=!0,p.videos=[],n.videoGrid.innerHTML=""),!p.hasMore))return;p.isLoading=!0,H(p.page===1);const s=(i,d=12e3)=>Promise.race([i,new Promise((m,a)=>setTimeout(()=>a(new Error("Timeout")),d))]),r=document.getElementById("topSearchBtn");r&&r.addEventListener("click",i=>{i.preventDefault();const d=document.getElementById("searchModal"),m=document.getElementById("searchInput");d&&(d.classList.add("active"),m&&setTimeout(()=>m.focus(),100))});try{let i=null,d=!1;if(i||(i=await s(k.getRophimCatalog({category:e!=="all"?e:null,page:p.page,limit:24}),12e3)),i&&i.movies&&i.movies.length>0){const m=i.movies.map(l=>({id:l.id||`api_${Date.now()}_${Math.random()}`,title:l.title||"Unknown Title",thumbnail:l.thumbnail||"https://via.placeholder.com/300x450?text=No+Image",backdrop:l.backdrop||l.thumbnail||"https://via.placeholder.com/1920x1080?text=No+Backdrop",preview_url:l.preview_url||"",duration:l.duration||0,resolution:l.quality||"HD",category:l.category||"movies",year:l.year||new Date().getFullYear(),description:l.description||"",matchScore:Math.floor(Math.random()*15)+85,source_url:l.source_url,slug:l.slug,cast:l.cast||[],director:l.director,country:l.country,episodes:l.episodes||[]})),a=new Set(p.videos.map(l=>l.id)),o=m.filter(l=>!a.has(l.id));p.videos=[...p.videos,...o],p.page+=1,m.length<24,p.page===2?P(p.videos,!1):P(o,!0),Le(),b&&b.classList.remove("loading"),p.isLoading=!1,H(!1);return}else p.hasMore=!1,b&&(b.classList.remove("loading"),b.style.display="none"),p.isLoading=!1,H(!1)}catch(i){if(console.warn("API load failed:",i),p.page===1){$("Using offline mode","info");const d=ee();p.videos=d,p.featuredVideo=d[0],P(d)}p.isLoading=!1,H(!1)}}function q(e,t,s="poster"){const r=document.createElement("section");r.className="flex flex-col gap-4 mb-12 relative";const i=document.createElement("h2");i.className="text-xl md:text-2xl font-bold text-white hover:text-primary cursor-pointer transition-colors flex items-center gap-2 group px-4 md:px-12",i.innerHTML=` ${e} arrow_forward_ios - `,a.appendChild(i);const c=document.createElement("div");c.className="relative group/slider";const m=document.createElement("button");m.className="absolute left-0 top-1/2 -translate-y-1/2 z-20 w-12 h-full bg-gradient-to-r from-black/80 to-transparent opacity-0 group-hover/slider:opacity-100 transition-opacity flex items-center justify-start pl-2",m.innerHTML='chevron_left';const r=document.createElement("button");r.className="absolute right-0 top-1/2 -translate-y-1/2 z-20 w-12 h-full bg-gradient-to-l from-black/80 to-transparent opacity-0 group-hover/slider:opacity-100 transition-opacity flex items-center justify-end pr-2",r.innerHTML='chevron_right';const s=document.createElement("div");s.className="flex gap-3 overflow-x-auto scroll-smooth no-scrollbar px-4 md:px-12 pb-4",t.forEach((l,h)=>{let d;n==="landscape"?d=ke(l):d=we(l,!1,0,"horizontal"),d.className=d.className.replace("w-full",""),d.style.minWidth="280px",d.style.maxWidth="380px",d.style.flex="0 0 auto",s.appendChild(d)});const u=600;return m.addEventListener("click",()=>{s.scrollBy({left:-u,behavior:"smooth"})}),r.addEventListener("click",()=>{s.scrollBy({left:u,behavior:"smooth"})}),c.appendChild(m),c.appendChild(s),c.appendChild(r),a.appendChild(c),a}function we(e,t=!1,n=0,a="vertical"){const i=document.createElement("div"),c=a==="horizontal"?"aspect-video":"aspect-[2/3]";i.className="w-full cursor-pointer snap-start group relative transition-all duration-300 ease-in-out hover:z-30 hover:scale-105";let m=e.poster_url||e.thumb_url||e.thumbnail||"";a==="horizontal"&&e.backdrop&&(m=e.backdrop);const r=e.name||e.title||"Untitled",s=e.year||"",u=e.quality||"HD",l=e.slug||e.id||"",h=e.matchScore||Math.floor(Math.random()*10+90),d=Math.floor(Math.random()*19+80);i.innerHTML=` -
-
+ `,r.appendChild(i);const d=document.createElement("div");d.className="relative group/slider";const m=document.createElement("button");m.className="absolute left-0 top-1/2 -translate-y-1/2 z-20 w-12 h-full bg-gradient-to-r from-black/80 to-transparent opacity-0 group-hover/slider:opacity-100 transition-opacity flex items-center justify-start pl-2",m.innerHTML='chevron_left';const a=document.createElement("button");a.className="absolute right-0 top-1/2 -translate-y-1/2 z-20 w-12 h-full bg-gradient-to-l from-black/80 to-transparent opacity-0 group-hover/slider:opacity-100 transition-opacity flex items-center justify-end pr-2",a.innerHTML='chevron_right';const o=document.createElement("div");o.className="flex gap-3 overflow-x-auto scroll-smooth no-scrollbar px-4 md:px-12 pb-4",t.forEach((l,h)=>{let c;s==="landscape"?c=ke(l):c=we(l,!1,0,"horizontal"),c.className=c.className.replace("w-full",""),c.style.minWidth="280px",c.style.maxWidth="380px",c.style.flex="0 0 auto",o.appendChild(c)});const u=600;return m.addEventListener("click",()=>{o.scrollBy({left:-u,behavior:"smooth"})}),a.addEventListener("click",()=>{o.scrollBy({left:u,behavior:"smooth"})}),d.appendChild(m),d.appendChild(o),d.appendChild(a),r.appendChild(d),r}function we(e,t=!1,s=0,r="vertical"){const i=document.createElement("div"),d=r==="horizontal"?"aspect-video":"aspect-[2/3]";i.className="w-full cursor-pointer snap-start group relative transition-all duration-300 ease-in-out hover:z-30 hover:scale-105";let m=e.poster_url||e.thumb_url||e.thumbnail||"";r==="horizontal"&&e.backdrop&&(m=e.backdrop);const o=window.innerWidth<768?180:r==="horizontal"?400:200,u=m?k.getProxyUrl(m,o):"",l=e.name||e.title||"Untitled",h=e.year||"",c=e.quality||"HD",f=e.slug||e.id||"",g=e.matchScore||Math.floor(Math.random()*10+90),y=Math.floor(Math.random()*19+80);i.innerHTML=` +
+
- ${!t&&s===new Date().getFullYear().toString()?'NEW':""} + ${!t&&h===new Date().getFullYear().toString()?'NEW':""} ${e.quality?`${e.quality.replace("FHD","HD")}`:""} ${e.current_episode?`EP ${e.current_episode}`:""}
- ${t?`${n}`:""} + ${t?`${s}`:""}
@@ -105,11 +105,11 @@ import{a as L,r as ie,h as R,s as N,K as se,b as oe,d as ne}from"./keyboard-nav- -
-
@@ -117,30 +117,30 @@ import{a as L,r as ie,h as R,s as N,K as se,b as oe,d as ne}from"./keyboard-nav-
- ${h}% Match - ${u} - ${s} + ${g}% Match + ${c} + ${h}
- local_pizza ${d}% + local_pizza ${y}%
${e.genres&&e.genres.length>0?`${e.genres[0]}`:""}

- ${r} + ${l}

- `,i.addEventListener("click",v=>{v.target.closest("button")||k(e)});const f=i.querySelector(".btn-play");f&&f.addEventListener("click",v=>{v.stopPropagation(),k(e)});const g=i.querySelector(".btn-add-list");g&&g.addEventListener("click",v=>{if(v.stopPropagation(),window.historyService){const w=window.historyService.toggleFavorite(e),x=g.querySelector("span");w?(x.textContent="check",N("Added to My List","success")):(x.textContent="add",N("Removed from My List","info"))}});const y=i.querySelector(".btn-info");return y&&y.addEventListener("click",v=>{v.stopPropagation(),Z(e)}),i}function ke(e){var m,r;const t=document.createElement("div");t.className="flex-none w-[280px] group/card cursor-pointer snap-start";const n=e.backdrop||e.thumb_url||e.thumbnail||"",a=e.name||e.title||"Untitled",i=((m=e.progress)==null?void 0:m.percentage)||0,c=(r=e.progress)!=null&&r.episode?`S${e.season||1}:E${e.progress.episode}`:"";return t.innerHTML=` + `,i.addEventListener("click",x=>{x.target.closest("button")||L(e)});const v=i.querySelector(".btn-play");v&&v.addEventListener("click",x=>{x.stopPropagation(),L(e)});const E=i.querySelector(".btn-add-list");E&&E.addEventListener("click",x=>{if(x.stopPropagation(),window.historyService){const w=window.historyService.toggleFavorite(e),T=E.querySelector("span");w?(T.textContent="check",$("Added to My List","success")):(T.textContent="add",$("Removed from My List","info"))}});const G=i.querySelector(".btn-info");return G&&G.addEventListener("click",x=>{x.stopPropagation(),Z(e)}),i}function ke(e){var m,a;const t=document.createElement("div");t.className="flex-none w-[280px] group/card cursor-pointer snap-start";const s=e.backdrop||e.thumb_url||e.thumbnail||"",r=e.name||e.title||"Untitled",i=((m=e.progress)==null?void 0:m.percentage)||0,d=(a=e.progress)!=null&&a.episode?`S${e.season||1}:E${e.progress.episode}`:"";return t.innerHTML=`
-
+
play_arrow
@@ -149,23 +149,23 @@ import{a as L,r as ie,h as R,s as N,K as se,b as oe,d as ne}from"./keyboard-nav-
- ${a} - ${c?`${c}`:""} + ${r} + ${d?`${d}`:""}
- `,t.addEventListener("click",()=>k(e)),t}function q(e,t=!1){if(t||(o.videoGrid.innerHTML="",o.videoGrid.innerHTML="",o.videoGrid.className="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 gap-x-4 gap-y-10"),e.length===0&&!t){o.emptyState&&(o.emptyState.style.display="flex");return}o.emptyState&&(o.emptyState.style.display="none"),e.forEach(n=>{const a=fe(n,k);o.videoGrid.appendChild(a)})}let I,b=null,V=0;function Le(){if(!p.hasMore){b&&(b.classList.remove("loading"),b.style.display="none"),I&&I.disconnect();return}I&&I.disconnect(),document.querySelectorAll(".scroll-sentinel").forEach(n=>n.remove()),b=null;const e={root:null,rootMargin:"50px",threshold:0};I=new IntersectionObserver(n=>{n.forEach(a=>{const i=Date.now();i-V<1500||a.isIntersecting&&!p.isLoading&&p.hasMore&&(V=i,b&&b.classList.add("loading"),B(p.currentCategory))})},e),b=document.createElement("div"),b.className="scroll-sentinel",b.id="scrollSentinel";const t=document.getElementById("infinite-scroll-container");t?t.parentNode.insertBefore(b,t.nextSibling):o.videoGrid.appendChild(b),I.observe(b)}function Z(e){X(e)}function _(e="history"){if(o.mainHeader&&(o.mainHeader.style.display=""),!window.historyService){console.error("HistoryService not initialized");return}o.videoGrid.innerHTML="",o.emptyState&&(o.emptyState.style.display="none");const t=document.querySelector(".view-tabs");t&&t.remove();const n=document.createElement("div");n.className="view-tabs",n.innerHTML=` + `,t.addEventListener("click",()=>L(e)),t}function P(e,t=!1){if(t||(n.videoGrid.innerHTML="",n.videoGrid.innerHTML="",n.videoGrid.className="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 gap-x-4 gap-y-10"),e.length===0&&!t){n.emptyState&&(n.emptyState.style.display="flex");return}n.emptyState&&(n.emptyState.style.display="none"),e.forEach(s=>{const r=fe(s,L);n.videoGrid.appendChild(r)})}let I,b=null,O=0;function Le(){if(!p.hasMore){b&&(b.classList.remove("loading"),b.style.display="none"),I&&I.disconnect();return}I&&I.disconnect(),document.querySelectorAll(".scroll-sentinel").forEach(s=>s.remove()),b=null;const e={root:null,rootMargin:"50px",threshold:0};I=new IntersectionObserver(s=>{s.forEach(r=>{const i=Date.now();i-O<1500||r.isIntersecting&&!p.isLoading&&p.hasMore&&(O=i,b&&b.classList.add("loading"),B(p.currentCategory))})},e),b=document.createElement("div"),b.className="scroll-sentinel",b.id="scrollSentinel";const t=document.getElementById("infinite-scroll-container");t?t.parentNode.insertBefore(b,t.nextSibling):n.videoGrid.appendChild(b),I.observe(b)}function Z(e){X(e)}function N(e="history"){if(n.mainHeader&&(n.mainHeader.style.display=""),!window.historyService){console.error("HistoryService not initialized");return}n.videoGrid.innerHTML="",n.emptyState&&(n.emptyState.style.display="none");const t=document.querySelector(".view-tabs");t&&t.remove();const s=document.createElement("div");s.className="view-tabs",s.innerHTML=` - `,o.videoGrid.before(n),n.querySelectorAll(".view-tab").forEach(r=>{r.addEventListener("click",()=>{n.remove(),_(r.dataset.tab)})});let a=[];if(e==="history"?a=window.historyService.getHistory():a=window.historyService.getFavorites(),a.length===0){if(o.emptyState){o.emptyState.style.display="flex";const r=o.emptyState.querySelector("h2"),s=o.emptyState.querySelector("p");e==="history"?(r&&(r.textContent="No history yet"),s&&(s.textContent="Movies you watch will appear here.")):(r&&(r.textContent="My List is empty"),s&&(s.textContent="Add movies to your list to watch later."))}return}a.sort((r,s)=>{const u=r.timestamp||r.year||0;return(s.timestamp||s.year||0)-u});const i=a.map((r,s)=>({...r,id:r.id||r.slug,orientation:"horizontal"}));o.mainHeader&&(o.mainHeader.style.display="block");const m=$(e==="history"?"Continue Watching":"My List",i,"poster");o.videoGrid.appendChild(m)}function k(e){var t;sessionStorage.setItem("currentVideo",JSON.stringify(e)),sessionStorage.setItem("allVideos",JSON.stringify(p.videos)),(t=window.history.state)!=null&&t.playerOpen||window.history.pushState({playerOpen:!0},"",window.location.href),X(e)}function X(e){window.location.href=`/watch.html?slug=${e.slug}`}function T(e=!0){var t;o.playerModal&&(o.playerModal.classList.add("hidden"),o.playerModal.classList.remove("active"),o.playerModal.style.display="none",ne()),e&&((t=window.history.state)!=null&&t.playerOpen),o.playerContainer.innerHTML="",p.currentVideo=null}function S(e){o.loading&&(o.loading.style.display=e?"flex":"none"),o.videoGrid&&(o.videoGrid.style.display=e?"none":"block")}async function E(e){const t=document.querySelector(".view-tabs");t&&t.remove(),o.mainHeader&&(o.mainHeader.style.display=""),S(!0),o.videoGrid.innerHTML="",o.videoGrid.className="space-y-12";const n={home:[{title:"Continue Watching",type:"history",limit:12,cardType:"landscape"},{title:"Cinema Releases",category:"phim-chieu-rap",limit:12,isHeroSource:!0},{title:"Top Rated",category:"phim-le",sort:"rating",limit:12},{title:"Action & Adventure",category:"hanh-dong",limit:12},{title:"Animation",category:"hoat-hinh",limit:12},{title:"Korean Hits",category:"han-quoc",limit:12},{title:"Horror & Thriller",category:"kinh-di",limit:12},{title:"Romance",category:"tinh-cam",limit:12}],series:[{title:"Popular TV Shows",category:"phim-bo",limit:12,isHeroSource:!0},{title:"Korean Dramas",category:"korean",limit:12},{title:"Chinese Dramas",category:"china",limit:12},{title:"Anime Series",category:"hoat-hinh",limit:12},{title:"Documentaries",category:"tai-lieu",limit:12}],movies:[{title:"Blockbuster Movies",category:"phim-le",sort:"year",limit:12,isHeroSource:!0},{title:"Action & Adventure",category:"action",limit:12},{title:"Comedy Films",category:"comedy",limit:12},{title:"Cinema Releases",category:"phim-chieu-rap",limit:12},{title:"Horror Movies",category:"kinh-di",limit:12},{title:"Sci-Fi & Fantasy",category:"vien-tuong",limit:12}],cinema:[{title:"Now Showing",category:"phim-chieu-rap",limit:12,isHeroSource:!0},{title:"New Releases",category:"phim-le",sort:"year",limit:12},{title:"Top Rated",category:"phim-le",sort:"rating",limit:12},{title:"Action Blockbusters",category:"action",limit:12},{title:"Animated Features",category:"hoat-hinh",limit:12}]},a=n[e]||n.home;if(e==="home"||e==="cinema"){const c=sessionStorage.getItem(`view_cache_${e}`);if(c&&(o.videoGrid.innerHTML=c,S(!1),o.heroContainer&&(o.heroContainer.style.display=""),o.videoGrid.children.length>0))return}const i=3;try{let c=null;for(let r=0;r0){c||(c=u),s.isHeroSource&&(!p.heroMovies||p.heroMovies.length===0)&&u.length>0&&(p.heroMovies=u.slice(0,10),p.featuredVideo=u[0],p.videos=u,p.currentHeroIndex=0,C(p.heroMovies[0]),be());const l=$(s.title,u,s.cardType||"poster");o.videoGrid.appendChild(l)}}(e==="home"||e==="cinema")&&sessionStorage.setItem(`view_cache_${e}`,o.videoGrid.innerHTML);const m=new IntersectionObserver(async(r,s)=>{for(const u of r)if(u.isIntersecting){const l=u.target,h=parseInt(l.dataset.configIndex),d=a[h];s.unobserve(l),l.innerHTML='
';const f=await K(d);if(f&&f.length>0){const g=$(d.title,f,d.cardType||"poster");l.replaceWith(g),(e==="home"||e==="cinema")&&sessionStorage.setItem(`view_cache_${e}`,o.videoGrid.innerHTML)}else l.remove()}},{rootMargin:"800px"});for(let r=i;r${a[r].title}`,o.videoGrid.appendChild(s),m.observe(s)}if(!p.featuredVideo)if(c&&c.length>0)p.featuredVideo=c[0],p.videos=c,C();else try{const r=ee();r&&r.length>0&&(p.featuredVideo=r[0],p.videos=r,C())}catch(r){console.warn("Demo content fallback failed",r)}o.videoGrid.children.length===0&&(o.videoGrid.innerHTML=` + `,n.videoGrid.before(s),s.querySelectorAll(".view-tab").forEach(a=>{a.addEventListener("click",()=>{s.remove(),N(a.dataset.tab)})});let r=[];if(e==="history"?r=window.historyService.getHistory():r=window.historyService.getFavorites(),r.length===0){if(n.emptyState){n.emptyState.style.display="flex";const a=n.emptyState.querySelector("h2"),o=n.emptyState.querySelector("p");e==="history"?(a&&(a.textContent="No history yet"),o&&(o.textContent="Movies you watch will appear here.")):(a&&(a.textContent="My List is empty"),o&&(o.textContent="Add movies to your list to watch later."))}return}r.sort((a,o)=>{const u=a.timestamp||a.year||0;return(o.timestamp||o.year||0)-u});const i=r.map((a,o)=>({...a,id:a.id||a.slug,orientation:"horizontal"}));n.mainHeader&&(n.mainHeader.style.display="block");const m=q(e==="history"?"Continue Watching":"My List",i,"poster");n.videoGrid.appendChild(m)}function L(e){sessionStorage.setItem("currentVideo",JSON.stringify(e)),sessionStorage.setItem("allVideos",JSON.stringify(p.videos)),X(e)}function X(e){window.location.href=`/watch.html?slug=${e.slug}`}function A(e=!0){var t;n.playerModal&&(n.playerModal.classList.add("hidden"),n.playerModal.classList.remove("active"),n.playerModal.style.display="none",ne()),e&&((t=window.history.state)!=null&&t.playerOpen),n.playerContainer.innerHTML="",p.currentVideo=null}function H(e){n.loading&&(n.loading.style.display=e?"flex":"none"),n.videoGrid&&(n.videoGrid.style.display=e?"none":"block")}async function C(e){const t=document.querySelector(".view-tabs");t&&t.remove(),n.mainHeader&&(n.mainHeader.style.display=""),H(!0),n.videoGrid.innerHTML="",n.videoGrid.className="space-y-12";const s={home:[{title:"Continue Watching",type:"history",limit:12,cardType:"landscape"},{title:"Cinema Releases",category:"phim-chieu-rap",limit:12,isHeroSource:!0},{title:"Top Rated",category:"phim-le",sort:"rating",limit:12},{title:"Action & Adventure",category:"hanh-dong",limit:12},{title:"Animation",category:"hoat-hinh",limit:12},{title:"Korean Hits",category:"han-quoc",limit:12},{title:"Horror & Thriller",category:"kinh-di",limit:12},{title:"Romance",category:"tinh-cam",limit:12}],series:[{title:"Popular TV Shows",category:"phim-bo",limit:12,isHeroSource:!0},{title:"Korean Dramas",category:"korean",limit:12},{title:"Chinese Dramas",category:"china",limit:12},{title:"Anime Series",category:"hoat-hinh",limit:12},{title:"Documentaries",category:"tai-lieu",limit:12}],movies:[{title:"Blockbuster Movies",category:"phim-le",sort:"year",limit:12,isHeroSource:!0},{title:"Action & Adventure",category:"action",limit:12},{title:"Comedy Films",category:"comedy",limit:12},{title:"Cinema Releases",category:"phim-chieu-rap",limit:12},{title:"Horror Movies",category:"kinh-di",limit:12},{title:"Sci-Fi & Fantasy",category:"vien-tuong",limit:12}],cinema:[{title:"Now Showing",category:"phim-chieu-rap",limit:12,isHeroSource:!0},{title:"New Releases",category:"phim-le",sort:"year",limit:12},{title:"Top Rated",category:"phim-le",sort:"rating",limit:12},{title:"Action Blockbusters",category:"action",limit:12},{title:"Animated Features",category:"hoat-hinh",limit:12}]},r=s[e]||s.home,i=3;try{let d=null;for(let a=0;a0){d||(d=u),o.isHeroSource&&(!p.heroMovies||p.heroMovies.length===0)&&u.length>0&&(p.heroMovies=u.slice(0,10),p.featuredVideo=u[0],p.videos=u,p.currentHeroIndex=0,S(p.heroMovies[0]),be());const l=q(o.title,u,o.cardType||"poster");n.videoGrid.appendChild(l)}}(e==="home"||e==="cinema")&&sessionStorage.setItem(`view_cache_${e}`,n.videoGrid.innerHTML);const m=new IntersectionObserver(async(a,o)=>{for(const u of a)if(u.isIntersecting){const l=u.target,h=parseInt(l.dataset.configIndex),c=r[h];o.unobserve(l),l.innerHTML='
';const f=await K(c);if(f&&f.length>0){const g=q(c.title,f,c.cardType||"poster");l.replaceWith(g),(e==="home"||e==="cinema")&&sessionStorage.setItem(`view_cache_${e}`,n.videoGrid.innerHTML)}else l.remove()}},{rootMargin:"800px"});for(let a=i;a${r[a].title}`,n.videoGrid.appendChild(o),m.observe(o)}if(!p.featuredVideo)if(d&&d.length>0)p.featuredVideo=d[0],p.videos=d,S();else try{const a=ee();a&&a.length>0&&(p.featuredVideo=a[0],p.videos=a,S())}catch(a){console.warn("Demo content fallback failed",a)}n.videoGrid.children.length===0&&(n.videoGrid.innerHTML=`
movie

No content available for this category

- `)}catch(c){console.error("Error rendering category view:",c),o.videoGrid.innerHTML=` + `)}catch(d){console.error("Error rendering category view:",d),$("Connection failed: "+d.message,"error"),n.videoGrid.innerHTML=`
error

Failed to load content. Please try again.

- `}S(!1)}async function K(e){try{if(e.type==="history")return window.historyService?window.historyService.getHistory().slice(0,e.limit).map(s=>({id:s.slug||s.id,title:s.title,thumbnail:s.thumbnail||s.poster_url,slug:s.slug,year:s.year,quality:s.quality||"HD",view_progress:s.view_progress||0})):[];const t={category:e.category||null,limit:e.limit||40,sort:e.sort||"year"};e.country&&(t.country=e.country),e.genre&&(t.genre=e.genre);const n=async r=>{const s=[1,2,3,4,5,6,7,8].map(l=>L.getRophimCatalog({...r,page:l}).catch(h=>({movies:[]})));return(await Promise.all(s)).flatMap(l=>l.movies||[])};let a=await n(t);if(a.length<20&&e.sort&&e.sort!=="modified"){const r=await n({...t,sort:"modified"});a=[...a,...r]}const i=[],c=new Set;for(const r of a){if(!r)continue;const s=r.slug||r.id;c.has(s)||(c.add(s),i.push({id:r.id||r.slug,title:r.title,thumbnail:r.thumbnail,poster_url:r.poster_url||r.thumbnail,backdrop:r.backdrop||r.poster_url||r.thumbnail,slug:r.slug,year:r.year,quality:r.quality||"HD",rating:r.rating,category:r.category}))}const m=Math.max(e.limit||40,48);return i.slice(0,m)}catch(t){return console.error(`Error fetching section "${e.title}":`,t),[]}}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",U):U();function ee(){const e="https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4",t={VENOM:"https://image.tmdb.org/t/p/w500/aosm8NMQ3UyoBVpSxyimorCQykC.jpg",SQUID:"https://images.unsplash.com/photo-1536440136628-849c177e76a1?w=800&auto=format&fit=crop",ARCANE:"https://images.unsplash.com/photo-1542751371-adc38448a05e?w=800&auto=format&fit=crop",PENGUIN:"https://images.unsplash.com/photo-1478720568477-152d9b164e63?w=800&auto=format&fit=crop",GLADIATOR:"https://images.unsplash.com/photo-1565060416-522204c35613?w=800&auto=format&fit=crop",MOANA:"https://images.unsplash.com/photo-1507525428034-b723cf961d3e?w=800&auto=format&fit=crop",WICKED:"https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=800&auto=format&fit=crop",DBZ:"https://images.unsplash.com/photo-1578632767115-351597cf2477?w=800&auto=format&fit=crop"};return[{id:"d1",title:"Venom: The Last Dance",thumbnail:t.VENOM,backdrop:"https://image.tmdb.org/t/p/original/3V4kLQg0kSqPLctI5ziYWabAZYF.jpg",preview_url:e,duration:7200,resolution:"4K",category:"action",year:2024,matchScore:98,director:"Kelly Marcel",country:"USA",cast:["Tom Hardy","Chiwetel Ejiofor","Juno Temple"],description:"Eddie and Venom are on the run. Hunted by both of their worlds and with the net closing in, the duo are forced into a devastating decision.",episodes:[]},{id:"d2",title:"Squid Game Season 2",thumbnail:t.SQUID,backdrop:t.SQUID,preview_url:"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4",duration:3600,resolution:"HD",category:"series",year:2024,matchScore:99,director:"Hwang Dong-hyuk",country:"Korea",cast:["Lee Jung-jae","Lee Byung-hun","Wi Ha-jun"],description:"Gi-hun returns to the death games after three years with a new resolution: to find the people behind and to put an end to the sport.",episodes:[{number:1,title:"Red Light, Green Light",url:e},{number:2,title:"The Man with the Umbrella",url:e},{number:3,title:"Stick to the Team",url:e}]},{id:"d3",title:"Arcane Season 2",thumbnail:t.ARCANE,backdrop:t.ARCANE,preview_url:"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4",duration:2400,resolution:"4K",category:"anime",year:2024,matchScore:97,director:"Christian Linke",country:"USA, France",cast:["Hailee Steinfeld","Ella Purnell","Katie Leung"],description:"As conflict between Piltover and Zaun reaches a boiling point, Jinx and Vi must decide what kind of future they are fighting for.",episodes:[{number:1,title:"Heavy Is the Crown",url:e},{number:2,title:"Watch It All Burn",url:e},{number:3,title:"Finally Got It Right",url:e}]},{id:"d4",title:"The Penguin",thumbnail:t.PENGUIN,backdrop:t.PENGUIN,preview_url:"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4",duration:3600,resolution:"HD",category:"series",year:2024,matchScore:95,director:"Craig Zobel",country:"USA",cast:["Colin Farrell","Cristin Milioti","Rhenzy Feliz"],description:"Following the events of The Batman, Oz Cobb makes a play for power in the underworld of Gotham City.",episodes:[]},{id:"d5",title:"Gladiator II",thumbnail:t.GLADIATOR,backdrop:t.GLADIATOR,preview_url:"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4",duration:8400,resolution:"4K",category:"action",year:2024,matchScore:96,director:"Ridley Scott",country:"USA, UK",cast:["Paul Mescal","Pedro Pascal","Denzel Washington"],description:"Years after witnessing the death of the revered hero Maximus at the hands of his uncle, Lucius is forced to enter the Colosseum.",episodes:[]},{id:"d6",title:"Moana 2",thumbnail:t.MOANA,backdrop:t.MOANA,preview_url:"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerJoyrides.mp4",duration:6e3,resolution:"HD",category:"theater",year:2024,matchScore:94,director:"David G. Derrick Jr.",country:"USA",cast:["Auliʻi Cravalho","Dwayne Johnson","Alan Tudyk"],description:"After receiving an unexpected call from her wayfinding ancestors, Moana must journey to the far seas of Oceania.",episodes:[]},{id:"d7",title:"Wicked",thumbnail:t.WICKED,backdrop:t.WICKED,preview_url:"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerMeltdowns.mp4",duration:9e3,resolution:"4K",category:"theater",year:2024,matchScore:93,director:"Jon M. Chu",country:"USA",cast:["Cynthia Erivo","Ariana Grande","Jeff Goldblum"],description:"Elphaba, a misunderstood young woman with green skin, and Glinda, a popular blonde, forge an unlikely friendship.",episodes:[]},{id:"d8",title:"Dragon Ball Daima",thumbnail:t.DBZ,backdrop:t.DBZ,preview_url:"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4",duration:1440,resolution:"HD",category:"anime",year:2024,matchScore:98,director:"Yoshitaka Yashima",country:"Japan",cast:["Masako Nozawa","Ryō Horikawa"],description:"Goku and his friends are turned small due to a conspiracy. To fix things, they head off to a new world.",episodes:[{number:1,title:"Conspiracy",url:e}]}]}function Ee(){o.mainHeader&&(o.mainHeader.style.display="");const e=document.getElementById("heroContainer");e&&(e.style.display="",C()),A("profile"),o.videoGrid.innerHTML="",o.videoGrid.className="profile-view pb-24 bg-background-light dark:bg-background-dark min-h-screen";const t=` + `}H(!1)}async function K(e){try{if(e.type==="history")return window.historyService?window.historyService.getHistory().slice(0,e.limit).map(o=>({id:o.slug||o.id,title:o.title,thumbnail:o.thumbnail||o.poster_url,slug:o.slug,year:o.year,quality:o.quality||"HD",view_progress:o.view_progress||0})):[];const t={category:e.category||null,limit:e.limit||40,sort:e.sort||"year"};e.country&&(t.country=e.country),e.genre&&(t.genre=e.genre);const s=async a=>{const o=[1,2,3,4,5,6,7,8].map(l=>k.getRophimCatalog({...a,page:l}).catch(h=>({movies:[]})));return(await Promise.all(o)).flatMap(l=>l.movies||[])};let r=await s(t);if(r.length<20&&e.sort&&e.sort!=="modified"){const a=await s({...t,sort:"modified"});r=[...r,...a]}const i=[],d=new Set;for(const a of r){if(!a)continue;const o=a.slug||a.id;d.has(o)||(d.add(o),i.push({id:a.id||a.slug,title:a.title,thumbnail:a.thumbnail,poster_url:a.poster_url||a.thumbnail,backdrop:a.backdrop||a.poster_url||a.thumbnail,slug:a.slug,year:a.year,quality:a.quality||"HD",rating:a.rating,category:a.category}))}const m=Math.max(e.limit||40,48);return i.slice(0,m)}catch(t){return console.error(`Error fetching section "${e.title}":`,t),[]}}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",V):V();function ee(){const e="https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4",t={VENOM:"https://image.tmdb.org/t/p/w500/aosm8NMQ3UyoBVpSxyimorCQykC.jpg",SQUID:"https://images.unsplash.com/photo-1536440136628-849c177e76a1?w=800&auto=format&fit=crop",ARCANE:"https://images.unsplash.com/photo-1542751371-adc38448a05e?w=800&auto=format&fit=crop",PENGUIN:"https://images.unsplash.com/photo-1478720568477-152d9b164e63?w=800&auto=format&fit=crop",GLADIATOR:"https://images.unsplash.com/photo-1565060416-522204c35613?w=800&auto=format&fit=crop",MOANA:"https://images.unsplash.com/photo-1507525428034-b723cf961d3e?w=800&auto=format&fit=crop",WICKED:"https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=800&auto=format&fit=crop",DBZ:"https://images.unsplash.com/photo-1578632767115-351597cf2477?w=800&auto=format&fit=crop"};return[{id:"d1",title:"Venom: The Last Dance",thumbnail:t.VENOM,backdrop:"https://image.tmdb.org/t/p/original/3V4kLQg0kSqPLctI5ziYWabAZYF.jpg",preview_url:e,duration:7200,resolution:"4K",category:"action",year:2024,matchScore:98,director:"Kelly Marcel",country:"USA",cast:["Tom Hardy","Chiwetel Ejiofor","Juno Temple"],description:"Eddie and Venom are on the run. Hunted by both of their worlds and with the net closing in, the duo are forced into a devastating decision.",episodes:[]},{id:"d2",title:"Squid Game Season 2",thumbnail:t.SQUID,backdrop:t.SQUID,preview_url:"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4",duration:3600,resolution:"HD",category:"series",year:2024,matchScore:99,director:"Hwang Dong-hyuk",country:"Korea",cast:["Lee Jung-jae","Lee Byung-hun","Wi Ha-jun"],description:"Gi-hun returns to the death games after three years with a new resolution: to find the people behind and to put an end to the sport.",episodes:[{number:1,title:"Red Light, Green Light",url:e},{number:2,title:"The Man with the Umbrella",url:e},{number:3,title:"Stick to the Team",url:e}]},{id:"d3",title:"Arcane Season 2",thumbnail:t.ARCANE,backdrop:t.ARCANE,preview_url:"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4",duration:2400,resolution:"4K",category:"anime",year:2024,matchScore:97,director:"Christian Linke",country:"USA, France",cast:["Hailee Steinfeld","Ella Purnell","Katie Leung"],description:"As conflict between Piltover and Zaun reaches a boiling point, Jinx and Vi must decide what kind of future they are fighting for.",episodes:[{number:1,title:"Heavy Is the Crown",url:e},{number:2,title:"Watch It All Burn",url:e},{number:3,title:"Finally Got It Right",url:e}]},{id:"d4",title:"The Penguin",thumbnail:t.PENGUIN,backdrop:t.PENGUIN,preview_url:"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4",duration:3600,resolution:"HD",category:"series",year:2024,matchScore:95,director:"Craig Zobel",country:"USA",cast:["Colin Farrell","Cristin Milioti","Rhenzy Feliz"],description:"Following the events of The Batman, Oz Cobb makes a play for power in the underworld of Gotham City.",episodes:[]},{id:"d5",title:"Gladiator II",thumbnail:t.GLADIATOR,backdrop:t.GLADIATOR,preview_url:"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4",duration:8400,resolution:"4K",category:"action",year:2024,matchScore:96,director:"Ridley Scott",country:"USA, UK",cast:["Paul Mescal","Pedro Pascal","Denzel Washington"],description:"Years after witnessing the death of the revered hero Maximus at the hands of his uncle, Lucius is forced to enter the Colosseum.",episodes:[]},{id:"d6",title:"Moana 2",thumbnail:t.MOANA,backdrop:t.MOANA,preview_url:"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerJoyrides.mp4",duration:6e3,resolution:"HD",category:"theater",year:2024,matchScore:94,director:"David G. Derrick Jr.",country:"USA",cast:["Auliʻi Cravalho","Dwayne Johnson","Alan Tudyk"],description:"After receiving an unexpected call from her wayfinding ancestors, Moana must journey to the far seas of Oceania.",episodes:[]},{id:"d7",title:"Wicked",thumbnail:t.WICKED,backdrop:t.WICKED,preview_url:"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerMeltdowns.mp4",duration:9e3,resolution:"4K",category:"theater",year:2024,matchScore:93,director:"Jon M. Chu",country:"USA",cast:["Cynthia Erivo","Ariana Grande","Jeff Goldblum"],description:"Elphaba, a misunderstood young woman with green skin, and Glinda, a popular blonde, forge an unlikely friendship.",episodes:[]},{id:"d8",title:"Dragon Ball Daima",thumbnail:t.DBZ,backdrop:t.DBZ,preview_url:"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4",duration:1440,resolution:"HD",category:"anime",year:2024,matchScore:98,director:"Yoshitaka Yashima",country:"Japan",cast:["Masako Nozawa","Ryō Horikawa"],description:"Goku and his friends are turned small due to a conspiracy. To fix things, they head off to a new world.",episodes:[{number:1,title:"Conspiracy",url:e}]}]}function Ee(){n.mainHeader&&(n.mainHeader.style.display="");const e=document.getElementById("heroContainer");e&&(e.style.display="",S()),D("profile"),n.videoGrid.innerHTML="",n.videoGrid.className="profile-view pb-24 bg-background-light dark:bg-background-dark min-h-screen";const t=`
- `;if(o.videoGrid.innerHTML=t,window.historyService){const n=window.historyService.getHistory().slice(0,10);if(n.length>0){const a=document.getElementById("profileHistoryContainer"),i=$("Continue Watching",n,"landscape");a.appendChild(i)}}}async function Ce(){o.mainHeader&&(o.mainHeader.style.display="");const e=document.getElementById("heroContainer");if(e&&(e.style.display=""),A("home"),window.innerWidth<768){document.querySelectorAll("footer").forEach(n=>n.style.display="none");const t=document.getElementById("searchModal");t&&t.classList.remove("active")}else document.querySelectorAll("footer").forEach(t=>t.style.display="");await E("home")}async function P(){o.mainHeader&&(o.mainHeader.style.display="");const e=document.getElementById("heroContainer");e&&(e.style.display="",C()),document.querySelectorAll("footer").forEach(s=>s.style.display="none");const t=document.getElementById("searchModal");t&&t.classList.remove("active"),A("search"),o.videoGrid.innerHTML="",o.videoGrid.className="mobile-search-view bg-background-light dark:bg-background-dark";const n=` + `;if(n.videoGrid.innerHTML=t,window.historyService){const s=window.historyService.getHistory().slice(0,10);if(s.length>0){const r=document.getElementById("profileHistoryContainer"),i=q("Continue Watching",s,"landscape");r.appendChild(i)}}}async function Ce(){n.mainHeader&&(n.mainHeader.style.display="");const e=document.getElementById("heroContainer");if(e&&(e.style.display=""),D("home"),window.innerWidth<768){document.querySelectorAll("footer").forEach(s=>s.style.display="none");const t=document.getElementById("searchModal");t&&t.classList.remove("active")}else document.querySelectorAll("footer").forEach(t=>t.style.display="");await C("home")}async function W(){n.mainHeader&&(n.mainHeader.style.display="");const e=document.getElementById("heroContainer");e&&(e.style.display="",S()),document.querySelectorAll("footer").forEach(o=>o.style.display="none");const t=document.getElementById("searchModal");t&&t.classList.remove("active"),D("search"),n.videoGrid.innerHTML="",n.videoGrid.className="mobile-search-view bg-background-light dark:bg-background-dark";const s=`
@@ -306,22 +306,22 @@ import{a as L,r as ie,h as R,s as N,K as se,b as oe,d as ne}from"./keyboard-nav-
- `;o.videoGrid.innerHTML=n;const a=document.getElementById("mobileSearchInput"),i=document.getElementById("mobileSearchResults");let c=null;a&&i&&(a.addEventListener("input",s=>{clearTimeout(c);const u=s.target.value.trim();c=setTimeout(async()=>{if(!(u.length<2)){i.innerHTML='
';try{const l=await L.searchRophim(u);if(l&&l.movies&&l.movies.length>0){i.innerHTML=` + `;n.videoGrid.innerHTML=s;const r=document.getElementById("mobileSearchInput"),i=document.getElementById("mobileSearchResults");let d=null;r&&i&&(r.addEventListener("input",o=>{clearTimeout(d);const u=o.target.value.trim();d=setTimeout(async()=>{if(!(u.length<2)){i.innerHTML='
';try{const l=await k.searchRophim(u);if(l&&l.movies&&l.movies.length>0){i.innerHTML=`

Results for "${u}"

- `;const h=i.querySelector(".grid");l.movies.forEach(d=>{const f=document.createElement("div");f.className="relative group aspect-[2/3] overflow-hidden rounded-lg cursor-pointer",f.innerHTML=` -
+ `;const h=i.querySelector(".grid");l.movies.forEach(c=>{const f=document.createElement("div");f.className="relative group aspect-[2/3] overflow-hidden rounded-lg cursor-pointer",f.innerHTML=` +
-

${d.title}

+

${c.title}

- `,f.addEventListener("click",()=>k(d)),h.appendChild(f)})}else i.innerHTML=` + `,f.addEventListener("click",()=>L(c)),h.appendChild(f)})}else i.innerHTML=`
search_off

No results for "${u}"

- `}catch(l){console.error("Mobile search failed:",l),i.innerHTML='
Search failed. Try again.
'}}},300)}),a.focus());const m=document.getElementById("mobileSearchCancel");m&&m.addEventListener("click",()=>{const s=document.getElementById("mobileSearchInput");s&&(s.value="",s.focus()),P()});try{const s=await L.getRophimCatalog({category:"trending",limit:5});if(s&&s.movies){const l=document.getElementById("topSearchesList");s.movies.forEach(h=>{const d=document.createElement("div");d.className="group flex items-center gap-3 px-4 py-2 hover:bg-gray-100 dark:hover:bg-white/5 cursor-pointer transition-colors",d.innerHTML=` + `}catch(l){console.error("Mobile search failed:",l),i.innerHTML='
Search failed. Try again.
'}}},300)}),r.focus());const m=document.getElementById("mobileSearchCancel");m&&m.addEventListener("click",()=>{const o=document.getElementById("mobileSearchInput");o&&(o.value="",o.focus()),W()});try{const o=await k.getRophimCatalog({category:"trending",limit:5});if(o&&o.movies){const l=document.getElementById("topSearchesList");o.movies.forEach(h=>{const c=document.createElement("div");c.className="group flex items-center gap-3 px-4 py-2 hover:bg-gray-100 dark:hover:bg-white/5 cursor-pointer transition-colors",c.innerHTML=`
@@ -332,14 +332,14 @@ import{a as L,r as ie,h as R,s as N,K as se,b as oe,d as ne}from"./keyboard-nav-
play_circle
- `,d.addEventListener("click",()=>k(h)),l.appendChild(d)})}const u=await L.getRophimCatalog({category:"phim-le",limit:9});if(u&&u.movies){const l=document.getElementById("recommendedGrid");u.movies.forEach(h=>{const d=document.createElement("div");d.className="relative group aspect-[2/3] overflow-hidden rounded-lg cursor-pointer",d.innerHTML=` + `,c.addEventListener("click",()=>L(h)),l.appendChild(c)})}const u=await k.getRophimCatalog({category:"phim-le",limit:9});if(u&&u.movies){const l=document.getElementById("recommendedGrid");u.movies.forEach(h=>{const c=document.createElement("div");c.className="relative group aspect-[2/3] overflow-hidden rounded-lg cursor-pointer",c.innerHTML=`
- `,d.addEventListener("click",()=>k(h)),l.appendChild(d)})}}catch(s){console.error("Failed to load mobile search content",s)}const r=document.querySelectorAll(".search-chip");r.forEach(s=>{s.addEventListener("click",async()=>{var d;const u=s.dataset.genre;if(!u)return;r.forEach(f=>{f.classList.remove("active","bg-white","text-black"),f.classList.add("bg-gray-200","dark:bg-surface-dark");const g=f.querySelector("p");g&&(g.classList.remove("font-bold"),g.classList.add("font-medium","text-slate-700","dark:text-gray-300"))}),s.classList.add("active","bg-white","text-black"),s.classList.remove("bg-gray-200","dark:bg-surface-dark");const l=s.querySelector("p");l&&(l.classList.add("font-bold"),l.classList.remove("font-medium","text-slate-700","dark:text-gray-300"));const h=document.getElementById("mobileSearchResults");if(h){h.innerHTML='
';try{const f=await L.getRophimCatalog({category:u,limit:12});if(f&&f.movies&&f.movies.length>0){const g=((d=s.querySelector("p"))==null?void 0:d.textContent)||u;h.innerHTML=` + `,c.addEventListener("click",()=>L(h)),l.appendChild(c)})}}catch(o){console.error("Failed to load mobile search content",o)}const a=document.querySelectorAll(".search-chip");a.forEach(o=>{o.addEventListener("click",async()=>{var c;const u=o.dataset.genre;if(!u)return;a.forEach(f=>{f.classList.remove("active","bg-white","text-black"),f.classList.add("bg-gray-200","dark:bg-surface-dark");const g=f.querySelector("p");g&&(g.classList.remove("font-bold"),g.classList.add("font-medium","text-slate-700","dark:text-gray-300"))}),o.classList.add("active","bg-white","text-black"),o.classList.remove("bg-gray-200","dark:bg-surface-dark");const l=o.querySelector("p");l&&(l.classList.add("font-bold"),l.classList.remove("font-medium","text-slate-700","dark:text-gray-300"));const h=document.getElementById("mobileSearchResults");if(h){h.innerHTML='
';try{const f=await k.getRophimCatalog({category:u,limit:12});if(f&&f.movies&&f.movies.length>0){const g=((c=o.querySelector("p"))==null?void 0:c.textContent)||u;h.innerHTML=`

${g}

- `;const y=h.querySelector(".grid");f.movies.forEach(v=>{const w=document.createElement("div");w.className="relative group aspect-[2/3] overflow-hidden rounded-lg cursor-pointer",w.innerHTML=` + `;const y=h.querySelector(".grid");f.movies.forEach(v=>{const E=document.createElement("div");E.className="relative group aspect-[2/3] overflow-hidden rounded-lg cursor-pointer",E.innerHTML=`
- `,w.addEventListener("click",()=>k(v)),y.appendChild(w)})}else h.innerHTML='

No results found

'}catch(f){console.error("Genre filter error:",f),h.innerHTML='

Failed to load content

'}}})})}async function Y(){o.mainHeader&&(o.mainHeader.style.display="");const e=document.getElementById("heroContainer");e&&(e.style.display="",C()),document.querySelectorAll("footer").forEach(m=>m.style.display="none");const t=document.getElementById("searchModal");t&&t.classList.remove("active"),A("mylist");const n=window.historyService?window.historyService.getFavorites():[];o.videoGrid.innerHTML="",o.videoGrid.className="mobile-mylist-view min-h-screen bg-background-dark pb-24";const a=` + `,E.addEventListener("click",()=>L(v)),y.appendChild(E)})}else h.innerHTML='

No results found

'}catch(f){console.error("Genre filter error:",f),h.innerHTML='

Failed to load content

'}}})})}async function Y(){n.mainHeader&&(n.mainHeader.style.display="");const e=document.getElementById("heroContainer");e&&(e.style.display="",S()),document.querySelectorAll("footer").forEach(m=>m.style.display="none");const t=document.getElementById("searchModal");t&&t.classList.remove("active"),D("mylist");const s=window.historyService?window.historyService.getFavorites():[];n.videoGrid.innerHTML="",n.videoGrid.className="mobile-mylist-view min-h-screen bg-background-dark pb-24";const r=`
@@ -369,24 +369,24 @@ import{a as L,r as ie,h as R,s as N,K as se,b as oe,d as ne}from"./keyboard-nav-
- `;o.videoGrid.innerHTML=a;const i=document.getElementById("mylistGrid");if(n.length>0)n.forEach(m=>{const r=document.createElement("div");r.className="group relative flex flex-col gap-2 cursor-pointer",r.innerHTML=` + `;n.videoGrid.innerHTML=r;const i=document.getElementById("mylistGrid");if(s.length>0)s.forEach(m=>{const a=document.createElement("div");a.className="group relative flex flex-col gap-2 cursor-pointer",a.innerHTML=`
- `,r.addEventListener("click",()=>k(m)),i.appendChild(r)});else try{const m=await L.getRophimCatalog({category:"trending",limit:12});m&&m.movies&&m.movies.forEach((r,s)=>{const u=document.createElement("div");u.className="group relative flex flex-col gap-2 cursor-pointer",u.innerHTML=` + `,a.addEventListener("click",()=>L(m)),i.appendChild(a)});else try{const m=await k.getRophimCatalog({category:"trending",limit:12});m&&m.movies&&m.movies.forEach((a,o)=>{const u=document.createElement("div");u.className="group relative flex flex-col gap-2 cursor-pointer",u.innerHTML=`
- ${s===0?'
New
':""} + style='background-image: url("${a.thumbnail}");'>
+ ${o===0?'
New
':""}
- `,u.addEventListener("click",()=>k(r)),i.appendChild(u)})}catch(m){console.error("Failed to load my list content",m)}const c=document.querySelectorAll(".mylist-chip");c.forEach(m=>{m.addEventListener("click",async()=>{const r=m.dataset.filter,s=m.dataset.category;if(!r||!s)return;c.forEach(h=>{h.classList.remove("active","bg-white"),h.classList.add("bg-surface-dark");const d=h.querySelector("p");d&&(d.classList.remove("font-bold","text-black"),d.classList.add("font-medium","text-gray-200"))}),m.classList.add("active","bg-white"),m.classList.remove("bg-surface-dark");const u=m.querySelector("p");u&&(u.classList.add("font-bold","text-black"),u.classList.remove("font-medium","text-gray-200"));const l=document.getElementById("mylistGrid");if(l){l.innerHTML='
';try{const h=await L.getRophimCatalog({category:s,limit:12});l.innerHTML="",h&&h.movies&&h.movies.length>0?h.movies.forEach((d,f)=>{const g=document.createElement("div");g.className="group relative flex flex-col gap-2 cursor-pointer",g.innerHTML=` + `,u.addEventListener("click",()=>L(a)),i.appendChild(u)})}catch(m){console.error("Failed to load my list content",m)}const d=document.querySelectorAll(".mylist-chip");d.forEach(m=>{m.addEventListener("click",async()=>{const a=m.dataset.filter,o=m.dataset.category;if(!a||!o)return;d.forEach(h=>{h.classList.remove("active","bg-white"),h.classList.add("bg-surface-dark");const c=h.querySelector("p");c&&(c.classList.remove("font-bold","text-black"),c.classList.add("font-medium","text-gray-200"))}),m.classList.add("active","bg-white"),m.classList.remove("bg-surface-dark");const u=m.querySelector("p");u&&(u.classList.add("font-bold","text-black"),u.classList.remove("font-medium","text-gray-200"));const l=document.getElementById("mylistGrid");if(l){l.innerHTML='
';try{const h=await k.getRophimCatalog({category:o,limit:12});l.innerHTML="",h&&h.movies&&h.movies.length>0?h.movies.forEach((c,f)=>{const g=document.createElement("div");g.className="group relative flex flex-col gap-2 cursor-pointer",g.innerHTML=`
+ style='background-image: url("${c.thumbnail}");'>
${f===0?'
New
':""}
- `,g.addEventListener("click",()=>k(d)),l.appendChild(g)}):l.innerHTML='

No content found

'}catch(h){console.error("Filter error:",h),l.innerHTML='

Failed to load content

'}}})})} + `,g.addEventListener("click",()=>L(c)),l.appendChild(g)}):l.innerHTML='

No content found

'}catch(h){console.error("Filter error:",h),l.innerHTML='

Failed to load content

'}}})})} diff --git a/backend/static/assets/watch-CsORLc4P.js b/backend/static/assets/watch-C4cPirDv.js similarity index 99% rename from backend/static/assets/watch-CsORLc4P.js rename to backend/static/assets/watch-C4cPirDv.js index 6695e35..0f459ef 100644 --- a/backend/static/assets/watch-CsORLc4P.js +++ b/backend/static/assets/watch-C4cPirDv.js @@ -1,4 +1,4 @@ -import{a as b,s as w,i as C,K as $,h as f,b as P,d as T}from"./keyboard-nav-CZ5sEhKF.js";const l={video:null,currentEpisode:1,currentServer:0,recommendations:[],isLoading:!0};window.state=l;let t={};function E(){var e,i;t={videoPlayer:document.getElementById("videoPlayer"),videoPlayerContainer:document.getElementById("videoPlayerContainer"),playerLoading:document.getElementById("playerLoading"),closePlayer:document.getElementById("closePlayer"),heroBg:document.getElementById("heroBg"),movieTitle:document.getElementById("movieTitleDesktop"),movieMatch:document.getElementById("movieMatchDesktop"),movieYear:document.getElementById("movieYearDesktop"),movieRating:document.getElementById("movieRatingDesktop"),movieQuality:document.getElementById("movieQualityDesktop"),movieDescription:document.getElementById("movieDescriptionDesktop"),movieTags:document.getElementById("movieTags"),movieTitleMobile:document.getElementById("movieTitleMobile"),movieMatchMobile:document.getElementById("movieMatchMobile"),movieYearMobile:document.getElementById("movieYearMobile"),movieRatingMobile:document.getElementById("movieRatingMobile"),movieDuration:document.getElementById("movieDurationDesktop"),movieDurationMobile:document.getElementById("movieDurationMobile"),movieQualityMobile:document.getElementById("movieQualityMobile"),movieDescriptionMobile:document.getElementById("movieDescriptionMobile"),playBtn:document.getElementById("playBtnDesktop"),addListBtn:document.getElementById("addListBtnDesktop"),addListIcon:(e=document.getElementById("addListBtnDesktop"))==null?void 0:e.querySelector(".material-symbols-outlined"),addListText:(i=document.getElementById("addListBtnDesktop"))==null?void 0:i.querySelector("span:last-child"),playBtnMobile:document.getElementById("playBtnMobile"),addListBtnMobile:document.getElementById("addListBtnMobile"),shareBtnMobile:document.getElementById("shareBtnMobile"),mobilePlayBtn:document.getElementById("mobilePlayBtn"),watchHeader:document.getElementById("watchHeader"),tabNav:document.getElementById("tabNav"),watchBackBtn:document.getElementById("watchBackBtn"),episodesPanel:document.getElementById("episodesPanel"),trailersPanel:document.getElementById("trailersPanel"),detailsPanel:document.getElementById("detailsPanel"),seasonSelect:document.getElementById("seasonSelect"),seasonSelectContainer:document.getElementById("seasonSelectContainer"),episodeCount:document.getElementById("episodeCount"),episodesGrid:document.getElementById("episodesGrid"),episodesLoading:document.getElementById("episodesLoading"),castCarousel:document.getElementById("castCarousel"),recommendationsContainer:document.getElementById("recommendationsContainer"),detailsList:document.getElementById("detailsList"),searchModal:document.getElementById("searchModal"),searchBtn:document.getElementById("searchBtn"),searchInput:document.getElementById("searchInput"),closeSearch:document.getElementById("closeSearch")}}async function L(){E(),new $().init();const i=new URLSearchParams(window.location.search),o=i.get("id"),n=i.get("slug"),a=parseInt(i.get("ep"))||1;if(l.currentEpisode=a,!o&&!n){k("No video specified");return}E(),_(),await S(o,n),await F()}function _(){window.addEventListener("scroll",()=>{t.watchHeader&&(window.scrollY>50?t.watchHeader.style.backgroundColor="rgba(20,20,20,0.95)":t.watchHeader.style.backgroundColor="transparent")}),t.watchBackBtn&&t.watchBackBtn.addEventListener("click",o=>{var a;o.preventDefault(),t.videoPlayerContainer&&(t.videoPlayerContainer.style.display!=="none"||!t.videoPlayerContainer.classList.contains("hidden"))?(f(),(a=window.history.state)!=null&&a.playerOpen?window.history.back():v()):document.referrer&&document.referrer.includes(window.location.host)?(f(),window.history.back()):window.location.href="/index.html"});const e=document.getElementById("playerBackButton");if(e&&e.addEventListener("click",()=>{var o;f(),(o=window.history.state)!=null&&o.playerOpen?window.history.back():v()}),window.addEventListener("popstate",o=>{var s;const n=t.videoPlayerContainer||document.getElementById("videoPlayerContainer");n&&!n.classList.contains("hidden")&&!((s=o.state)!=null&&s.playerOpen)&&v(!1)}),document.addEventListener("keydown",o=>{o.key==="Escape"&&(t.videoPlayerContainer&&!t.videoPlayerContainer.classList.contains("hidden")&&v(),t.searchModal&&!t.searchModal.classList.contains("hidden")&&t.searchModal.classList.add("hidden"))}),[t.playBtn,t.playBtnMobile,t.mobilePlayBtn].forEach(o=>{o&&o.addEventListener("click",()=>{o&&P(),t.videoPlayerContainer&&(t.videoPlayerContainer.classList.remove("hidden"),t.videoPlayerContainer.style.display="block"),t.videoPlayer&&(t.videoPlayer.style.display="block"),I()})}),t.closePlayer&&t.closePlayer.addEventListener("click",()=>{var o;(o=window.history.state)!=null&&o.playerOpen?window.history.back():v()}),t.searchBtn&&t.searchBtn.addEventListener("click",()=>{t.searchModal&&(t.searchModal.classList.remove("hidden"),setTimeout(()=>{var o;return(o=t.searchInput)==null?void 0:o.focus()},100))}),t.closeSearch&&t.closeSearch.addEventListener("click",()=>{t.searchModal&&t.searchModal.classList.add("hidden")}),[t.addListBtn,t.addListBtnMobile].forEach(o=>{o&&o.addEventListener("click",()=>{var a;if(!l.video)return;const n=(a=window.historyService)==null?void 0:a.toggleFavorite(l.video);x(n),f(),n?w("Added to My List","success"):w("Removed from My List","info")})}),t.shareBtnMobile&&t.shareBtnMobile.addEventListener("click",()=>{var o;navigator.share?(f(),navigator.share({title:((o=l.video)==null?void 0:o.title)||"StreamFlix",url:window.location.href})):(f(),navigator.clipboard.writeText(window.location.href),w("Link copied to clipboard","success"))}),t.tabNav){const o=t.tabNav.querySelectorAll(".tab-btn"),n={episodes:t.episodesPanel,details:t.detailsPanel};o.forEach(a=>{a.addEventListener("click",()=>{f();const s=a.dataset.tab;o.forEach(d=>{d.classList.remove("text-white","font-bold","border-b-4","border-primary"),d.classList.add("text-gray-400","font-medium")}),a.classList.remove("text-gray-400","font-medium"),a.classList.add("text-white","font-bold","border-b-4","border-primary"),Object.entries(n).forEach(([d,c])=>{c&&(d===s?c.classList.remove("hidden"):c.classList.add("hidden"))})})})}document.querySelectorAll("#mobileBottomNav .nav-item").forEach(o=>{o.addEventListener("click",n=>{n.preventDefault();const a=o.dataset.view;a&&(f(),window.location.href=`/index.html?view=${a}`)})})}function v(e=!0){var a;const i=t.videoPlayerContainer||document.getElementById("videoPlayerContainer"),o=t.videoPlayer||document.getElementById("videoPlayer"),n=t.playerLoading||document.getElementById("playerLoading");i&&(i.classList.add("hidden"),i.style.display="none"),T(),o&&(o.innerHTML="",o.style.display="none"),n&&(n.style.display="none"),e&&((a=window.history.state)!=null&&a.playerOpen)}function x(e){const i=e?"check":"add",o=e?"In List":"My List";if(t.addListBtn){const n=t.addListBtn.querySelector(".material-symbols-outlined"),a=t.addListBtn.querySelector("span:last-child");n&&(n.textContent=i),a&&(a.textContent=o),e?t.addListBtn.classList.add("bg-white/20"):t.addListBtn.classList.remove("bg-white/20")}if(t.addListBtnMobile){const n=t.addListBtnMobile.querySelector(".material-symbols-outlined"),a=t.addListBtnMobile.querySelector("span:last-child");n&&(n.textContent=i),a&&(a.textContent=o),e?(t.addListBtnMobile.classList.add("bg-white/10"),t.addListBtnMobile.classList.remove("bg-[#2b2b2b]")):(t.addListBtnMobile.classList.remove("bg-white/10"),t.addListBtnMobile.classList.add("bg-[#2b2b2b]"))}}async function S(e,i){var o,n,a,s,d,c;try{l.isLoading=!0;let m=null;const u=i||e;if(u)try{const p=await b.getRophimMovie(u);if(p){const r=p.movie||p,y=p.episodes||[];m={id:r.slug||u,slug:r.slug||u,title:r.name||r.title||u,original_title:r.origin_name||r.original_title||"",description:r.content||r.description||"",thumbnail:r.poster_url||r.thumb_url||r.thumbnail||"",year:r.year,rating:((o=r.tmdb)==null?void 0:o.vote_average)||r.rating||"N/A",quality:r.quality||"HD",duration:r.time||r.duration||"",genres:Array.isArray(r.category)?r.category.map(g=>g.name||g):Array.isArray(r.genres)?r.genres:typeof r.genre=="string"?r.genre.split(",").map(g=>g.trim()):[],country:((a=(n=r.country)==null?void 0:n[0])==null?void 0:a.name)||r.country||"",country:((d=(s=r.country)==null?void 0:s[0])==null?void 0:d.name)||r.country||"",cast:r.actor||r.cast||[],director:((c=r.director)==null?void 0:c[0])||r.director||"",source_url:`https://phimmoichill.network/phim/${u}`,episodes:D(y)}}}catch(p){console.warn("API fetch failed:",p)}if(!m)throw new Error("Video data not found");l.video=m,window.historyService&&window.historyService.addToHistory(m,{episode:l.currentEpisode}),H(m),window.historyService&&x(window.historyService.isFavorite(m.slug))}catch(m){console.error("Failed to load video:",m),k("Failed to load video data")}finally{l.isLoading=!1}}function D(e){if(!e||!Array.isArray(e)||e.length===0)return[];const i=e[0];return((i==null?void 0:i.server_data)||[]).map((n,a)=>({number:a+1,name:n.name||`Episode ${a+1}`,title:n.filename||`Episode ${a+1}`,slug:n.slug||"",link_embed:n.link_embed||"",link_m3u8:n.link_m3u8||""}))}function H(e){if(t.heroBg){const i=e.backdrop||e.poster_url||e.thumb_url||e.thumbnail||"";i&&(t.heroBg.style.backgroundImage=`url('${i}')`)}if(t.movieTitle&&(t.movieTitle.textContent=e.title),t.movieYear&&(t.movieYear.textContent=e.year||""),t.movieDuration)if(e.runtime_minutes){const i=Math.floor(e.runtime_minutes/60),o=e.runtime_minutes%60;t.movieDuration.textContent=i>0?`${i}h ${o}m`:`${o}m`}else e.duration&&(t.movieDuration.textContent=e.duration);if(t.movieQuality&&(t.movieQuality.textContent=e.quality||"HD"),t.movieRating){const i=e.rating||e.tmdb_rating;i&&i!=="N/A"?t.movieRating.textContent=typeof i=="number"?`${i.toFixed(1)} ★`:i:t.movieRating.textContent="TV-MA"}if(t.movieMatch){const i=Math.floor(85+Math.random()*14);t.movieMatch.textContent=`${i}% Match`}if(t.movieDescription){const i=e.tmdb_description||e.description||"No description available.";t.movieDescription.innerHTML=i,t.movieDescriptionMobile&&(t.movieDescriptionMobile.innerHTML=i)}if(t.movieTitleMobile&&(t.movieTitleMobile.textContent=e.title),t.movieYearMobile&&(t.movieYearMobile.textContent=e.year||""),t.movieRatingMobile){const i=e.rating||e.tmdb_rating;t.movieRatingMobile.textContent=i&&i!=="N/A"?typeof i=="number"?i.toFixed(1):i:"TV-MA"}if(t.movieDurationMobile&&(t.movieDurationMobile.textContent=t.movieDuration?t.movieDuration.textContent:e.duration||""),t.movieQualityMobile&&(t.movieQualityMobile.textContent=e.quality||"HD"),t.movieMatchMobile&&t.movieMatch&&(t.movieMatchMobile.textContent=t.movieMatch.textContent),t.movieTags){const i=e.genres||[],o=e.director,n=e.country;let a="";i.length>0&&(a+=`
Genres: ${i.join(", ")}
`),o&&o!=="Unknown"&&(a+=`
Director: ${o}
`),n&&n!=="Unknown"&&(a+=`
Country: ${n}
`),t.movieTags.innerHTML=a}document.title=`${e.title} - StreamFlix`,window.historyService&&e.slug&&x(window.historyService.isFavorite(e.slug)),M(e),e.tmdb_cast&&e.tmdb_cast.length>0?B(e.tmdb_cast,!0):e.cast&&e.cast.length>0&&B(e.cast,!1),A(e)}function M(e){if(!t.episodesPanel)return;let i=[];if(Array.isArray(e.episodes)&&e.episodes.length>0&&(e.episodes[0].server_data?i=e.episodes[0].server_data:i=e.episodes),i.length<=1){t.seasonSelectContainer&&(t.seasonSelectContainer.style.display="none"),t.episodesLoading&&(t.episodesLoading.style.display="none"),t.episodesGrid&&(t.episodesGrid.innerHTML=` +import{a as b,s as w,i as C,K as $,h as f,c as P,d as T}from"./keyboard-nav-CjQOo0Sk.js";const l={video:null,currentEpisode:1,currentServer:0,recommendations:[],isLoading:!0};window.state=l;let t={};function E(){var e,i;t={videoPlayer:document.getElementById("videoPlayer"),videoPlayerContainer:document.getElementById("videoPlayerContainer"),playerLoading:document.getElementById("playerLoading"),closePlayer:document.getElementById("closePlayer"),heroBg:document.getElementById("heroBg"),movieTitle:document.getElementById("movieTitleDesktop"),movieMatch:document.getElementById("movieMatchDesktop"),movieYear:document.getElementById("movieYearDesktop"),movieRating:document.getElementById("movieRatingDesktop"),movieQuality:document.getElementById("movieQualityDesktop"),movieDescription:document.getElementById("movieDescriptionDesktop"),movieTags:document.getElementById("movieTags"),movieTitleMobile:document.getElementById("movieTitleMobile"),movieMatchMobile:document.getElementById("movieMatchMobile"),movieYearMobile:document.getElementById("movieYearMobile"),movieRatingMobile:document.getElementById("movieRatingMobile"),movieDuration:document.getElementById("movieDurationDesktop"),movieDurationMobile:document.getElementById("movieDurationMobile"),movieQualityMobile:document.getElementById("movieQualityMobile"),movieDescriptionMobile:document.getElementById("movieDescriptionMobile"),playBtn:document.getElementById("playBtnDesktop"),addListBtn:document.getElementById("addListBtnDesktop"),addListIcon:(e=document.getElementById("addListBtnDesktop"))==null?void 0:e.querySelector(".material-symbols-outlined"),addListText:(i=document.getElementById("addListBtnDesktop"))==null?void 0:i.querySelector("span:last-child"),playBtnMobile:document.getElementById("playBtnMobile"),addListBtnMobile:document.getElementById("addListBtnMobile"),shareBtnMobile:document.getElementById("shareBtnMobile"),mobilePlayBtn:document.getElementById("mobilePlayBtn"),watchHeader:document.getElementById("watchHeader"),tabNav:document.getElementById("tabNav"),watchBackBtn:document.getElementById("watchBackBtn"),episodesPanel:document.getElementById("episodesPanel"),trailersPanel:document.getElementById("trailersPanel"),detailsPanel:document.getElementById("detailsPanel"),seasonSelect:document.getElementById("seasonSelect"),seasonSelectContainer:document.getElementById("seasonSelectContainer"),episodeCount:document.getElementById("episodeCount"),episodesGrid:document.getElementById("episodesGrid"),episodesLoading:document.getElementById("episodesLoading"),castCarousel:document.getElementById("castCarousel"),recommendationsContainer:document.getElementById("recommendationsContainer"),detailsList:document.getElementById("detailsList"),searchModal:document.getElementById("searchModal"),searchBtn:document.getElementById("searchBtn"),searchInput:document.getElementById("searchInput"),closeSearch:document.getElementById("closeSearch")}}async function L(){E(),new $().init();const i=new URLSearchParams(window.location.search),o=i.get("id"),n=i.get("slug"),a=parseInt(i.get("ep"))||1;if(l.currentEpisode=a,!o&&!n){k("No video specified");return}E(),_(),await S(o,n),await F()}function _(){window.addEventListener("scroll",()=>{t.watchHeader&&(window.scrollY>50?t.watchHeader.style.backgroundColor="rgba(20,20,20,0.95)":t.watchHeader.style.backgroundColor="transparent")}),t.watchBackBtn&&t.watchBackBtn.addEventListener("click",o=>{var a;o.preventDefault(),t.videoPlayerContainer&&(t.videoPlayerContainer.style.display!=="none"||!t.videoPlayerContainer.classList.contains("hidden"))?(f(),(a=window.history.state)!=null&&a.playerOpen?window.history.back():v()):document.referrer&&document.referrer.includes(window.location.host)?(f(),window.history.back()):window.location.href="/index.html"});const e=document.getElementById("playerBackButton");if(e&&e.addEventListener("click",()=>{var o;f(),(o=window.history.state)!=null&&o.playerOpen?window.history.back():v()}),window.addEventListener("popstate",o=>{var s;const n=t.videoPlayerContainer||document.getElementById("videoPlayerContainer");n&&!n.classList.contains("hidden")&&!((s=o.state)!=null&&s.playerOpen)&&v(!1)}),document.addEventListener("keydown",o=>{o.key==="Escape"&&(t.videoPlayerContainer&&!t.videoPlayerContainer.classList.contains("hidden")&&v(),t.searchModal&&!t.searchModal.classList.contains("hidden")&&t.searchModal.classList.add("hidden"))}),[t.playBtn,t.playBtnMobile,t.mobilePlayBtn].forEach(o=>{o&&o.addEventListener("click",()=>{o&&P(),t.videoPlayerContainer&&(t.videoPlayerContainer.classList.remove("hidden"),t.videoPlayerContainer.style.display="block"),t.videoPlayer&&(t.videoPlayer.style.display="block"),I()})}),t.closePlayer&&t.closePlayer.addEventListener("click",()=>{var o;(o=window.history.state)!=null&&o.playerOpen?window.history.back():v()}),t.searchBtn&&t.searchBtn.addEventListener("click",()=>{t.searchModal&&(t.searchModal.classList.remove("hidden"),setTimeout(()=>{var o;return(o=t.searchInput)==null?void 0:o.focus()},100))}),t.closeSearch&&t.closeSearch.addEventListener("click",()=>{t.searchModal&&t.searchModal.classList.add("hidden")}),[t.addListBtn,t.addListBtnMobile].forEach(o=>{o&&o.addEventListener("click",()=>{var a;if(!l.video)return;const n=(a=window.historyService)==null?void 0:a.toggleFavorite(l.video);x(n),f(),n?w("Added to My List","success"):w("Removed from My List","info")})}),t.shareBtnMobile&&t.shareBtnMobile.addEventListener("click",()=>{var o;navigator.share?(f(),navigator.share({title:((o=l.video)==null?void 0:o.title)||"StreamFlix",url:window.location.href})):(f(),navigator.clipboard.writeText(window.location.href),w("Link copied to clipboard","success"))}),t.tabNav){const o=t.tabNav.querySelectorAll(".tab-btn"),n={episodes:t.episodesPanel,details:t.detailsPanel};o.forEach(a=>{a.addEventListener("click",()=>{f();const s=a.dataset.tab;o.forEach(d=>{d.classList.remove("text-white","font-bold","border-b-4","border-primary"),d.classList.add("text-gray-400","font-medium")}),a.classList.remove("text-gray-400","font-medium"),a.classList.add("text-white","font-bold","border-b-4","border-primary"),Object.entries(n).forEach(([d,c])=>{c&&(d===s?c.classList.remove("hidden"):c.classList.add("hidden"))})})})}document.querySelectorAll("#mobileBottomNav .nav-item").forEach(o=>{o.addEventListener("click",n=>{n.preventDefault();const a=o.dataset.view;a&&(f(),window.location.href=`/index.html?view=${a}`)})})}function v(e=!0){var a;const i=t.videoPlayerContainer||document.getElementById("videoPlayerContainer"),o=t.videoPlayer||document.getElementById("videoPlayer"),n=t.playerLoading||document.getElementById("playerLoading");i&&(i.classList.add("hidden"),i.style.display="none"),T(),o&&(o.innerHTML="",o.style.display="none"),n&&(n.style.display="none"),e&&((a=window.history.state)!=null&&a.playerOpen)}function x(e){const i=e?"check":"add",o=e?"In List":"My List";if(t.addListBtn){const n=t.addListBtn.querySelector(".material-symbols-outlined"),a=t.addListBtn.querySelector("span:last-child");n&&(n.textContent=i),a&&(a.textContent=o),e?t.addListBtn.classList.add("bg-white/20"):t.addListBtn.classList.remove("bg-white/20")}if(t.addListBtnMobile){const n=t.addListBtnMobile.querySelector(".material-symbols-outlined"),a=t.addListBtnMobile.querySelector("span:last-child");n&&(n.textContent=i),a&&(a.textContent=o),e?(t.addListBtnMobile.classList.add("bg-white/10"),t.addListBtnMobile.classList.remove("bg-[#2b2b2b]")):(t.addListBtnMobile.classList.remove("bg-white/10"),t.addListBtnMobile.classList.add("bg-[#2b2b2b]"))}}async function S(e,i){var o,n,a,s,d,c;try{l.isLoading=!0;let m=null;const u=i||e;if(u)try{const p=await b.getRophimMovie(u);if(p){const r=p.movie||p,y=p.episodes||[];m={id:r.slug||u,slug:r.slug||u,title:r.name||r.title||u,original_title:r.origin_name||r.original_title||"",description:r.content||r.description||"",thumbnail:r.poster_url||r.thumb_url||r.thumbnail||"",year:r.year,rating:((o=r.tmdb)==null?void 0:o.vote_average)||r.rating||"N/A",quality:r.quality||"HD",duration:r.time||r.duration||"",genres:Array.isArray(r.category)?r.category.map(g=>g.name||g):Array.isArray(r.genres)?r.genres:typeof r.genre=="string"?r.genre.split(",").map(g=>g.trim()):[],country:((a=(n=r.country)==null?void 0:n[0])==null?void 0:a.name)||r.country||"",country:((d=(s=r.country)==null?void 0:s[0])==null?void 0:d.name)||r.country||"",cast:r.actor||r.cast||[],director:((c=r.director)==null?void 0:c[0])||r.director||"",source_url:`https://phimmoichill.network/phim/${u}`,episodes:D(y)}}}catch(p){console.warn("API fetch failed:",p)}if(!m)throw new Error("Video data not found");l.video=m,window.historyService&&window.historyService.addToHistory(m,{episode:l.currentEpisode}),H(m),window.historyService&&x(window.historyService.isFavorite(m.slug))}catch(m){console.error("Failed to load video:",m),k("Failed to load video data")}finally{l.isLoading=!1}}function D(e){if(!e||!Array.isArray(e)||e.length===0)return[];const i=e[0];return((i==null?void 0:i.server_data)||[]).map((n,a)=>({number:a+1,name:n.name||`Episode ${a+1}`,title:n.filename||`Episode ${a+1}`,slug:n.slug||"",link_embed:n.link_embed||"",link_m3u8:n.link_m3u8||""}))}function H(e){if(t.heroBg){const i=e.backdrop||e.poster_url||e.thumb_url||e.thumbnail||"";i&&(t.heroBg.style.backgroundImage=`url('${i}')`)}if(t.movieTitle&&(t.movieTitle.textContent=e.title),t.movieYear&&(t.movieYear.textContent=e.year||""),t.movieDuration)if(e.runtime_minutes){const i=Math.floor(e.runtime_minutes/60),o=e.runtime_minutes%60;t.movieDuration.textContent=i>0?`${i}h ${o}m`:`${o}m`}else e.duration&&(t.movieDuration.textContent=e.duration);if(t.movieQuality&&(t.movieQuality.textContent=e.quality||"HD"),t.movieRating){const i=e.rating||e.tmdb_rating;i&&i!=="N/A"?t.movieRating.textContent=typeof i=="number"?`${i.toFixed(1)} ★`:i:t.movieRating.textContent="TV-MA"}if(t.movieMatch){const i=Math.floor(85+Math.random()*14);t.movieMatch.textContent=`${i}% Match`}if(t.movieDescription){const i=e.tmdb_description||e.description||"No description available.";t.movieDescription.innerHTML=i,t.movieDescriptionMobile&&(t.movieDescriptionMobile.innerHTML=i)}if(t.movieTitleMobile&&(t.movieTitleMobile.textContent=e.title),t.movieYearMobile&&(t.movieYearMobile.textContent=e.year||""),t.movieRatingMobile){const i=e.rating||e.tmdb_rating;t.movieRatingMobile.textContent=i&&i!=="N/A"?typeof i=="number"?i.toFixed(1):i:"TV-MA"}if(t.movieDurationMobile&&(t.movieDurationMobile.textContent=t.movieDuration?t.movieDuration.textContent:e.duration||""),t.movieQualityMobile&&(t.movieQualityMobile.textContent=e.quality||"HD"),t.movieMatchMobile&&t.movieMatch&&(t.movieMatchMobile.textContent=t.movieMatch.textContent),t.movieTags){const i=e.genres||[],o=e.director,n=e.country;let a="";i.length>0&&(a+=`
Genres: ${i.join(", ")}
`),o&&o!=="Unknown"&&(a+=`
Director: ${o}
`),n&&n!=="Unknown"&&(a+=`
Country: ${n}
`),t.movieTags.innerHTML=a}document.title=`${e.title} - StreamFlix`,window.historyService&&e.slug&&x(window.historyService.isFavorite(e.slug)),M(e),e.tmdb_cast&&e.tmdb_cast.length>0?B(e.tmdb_cast,!0):e.cast&&e.cast.length>0&&B(e.cast,!1),A(e)}function M(e){if(!t.episodesPanel)return;let i=[];if(Array.isArray(e.episodes)&&e.episodes.length>0&&(e.episodes[0].server_data?i=e.episodes[0].server_data:i=e.episodes),i.length<=1){t.seasonSelectContainer&&(t.seasonSelectContainer.style.display="none"),t.episodesLoading&&(t.episodesLoading.style.display="none"),t.episodesGrid&&(t.episodesGrid.innerHTML=`
play_circle
diff --git a/backend/static/assets/web-Bp6c6Vk9.js b/backend/static/assets/web-Bp6c6Vk9.js deleted file mode 100644 index 266c11f..0000000 --- a/backend/static/assets/web-Bp6c6Vk9.js +++ /dev/null @@ -1 +0,0 @@ -import{W as a,I as i,N as r}from"./keyboard-nav-CZ5sEhKF.js";class o extends a{constructor(){super(...arguments),this.selectionStarted=!1}async impact(t){const e=this.patternForImpact(t==null?void 0:t.style);this.vibrateWithPattern(e)}async notification(t){const e=this.patternForNotification(t==null?void 0:t.type);this.vibrateWithPattern(e)}async vibrate(t){const e=(t==null?void 0:t.duration)||300;this.vibrateWithPattern([e])}async selectionStart(){this.selectionStarted=!0}async selectionChanged(){this.selectionStarted&&this.vibrateWithPattern([70])}async selectionEnd(){this.selectionStarted=!1}patternForImpact(t=i.Heavy){return t===i.Medium?[43]:t===i.Light?[20]:[61]}patternForNotification(t=r.Success){return t===r.Warning?[30,40,30,50,60]:t===r.Error?[27,45,50]:[35,65,21]}vibrateWithPattern(t){if(navigator.vibrate)navigator.vibrate(t);else throw this.unavailable("Browser does not support the vibrate API")}}export{o as HapticsWeb}; diff --git a/backend/static/download.html b/backend/static/download.html index 03f6fd1..ee3b589 100644 --- a/backend/static/download.html +++ b/backend/static/download.html @@ -6,8 +6,7 @@ StreamFlix - Download App - - + + @@ -204,7 +204,7 @@ ← Back to StreamFlix
- StreamFlix Logo + StreamFlix Logo

Download StreamFlix

Experience cinema-quality streaming on all your devices. Ad-free, high performance, and diff --git a/backend/static/index.html b/backend/static/index.html index a51c43c..b4d5310 100644 --- a/backend/static/index.html +++ b/backend/static/index.html @@ -10,8 +10,8 @@ - - + + @@ -44,16 +44,7 @@ }, } - +