// ==UserScript==
// @name MissAV去广告、影院模式
// @description MissAV去广告|单手模式|MissAV自动展开详情|MissAV自动高画质|MissAV重定向支持|MissAV自动登录|定制播放器 支持 jable po*nhub 等通用
// @version 5.1.0
// @author Chris_C
// @match *://*.missav.ws/*
// @match *://*.missav.ai/*
// @match *://*.jable.tv/*
// @match *://*/*
// @grant none
// @icon https://missav.ws/img/favicon.ico
// @license MIT
// @namespace loadingi.local
// @noframes
// @run-at document-start
// ==/UserScript==
/*! For license information please see miss_player.user.js.LICENSE.txt */
(()=>{"use strict";var t={56:(t,e,n)=>{t.exports=function(t){var e=n.nc;e&&t.setAttribute("nonce",e)}},72:t=>{var e=[];function n(t){for(var n=-1,r=0;r<e.length;r++)if(e[r].identifier===t){n=r;break}return n}function r(t,r){for(var i={},a=[],s=0;s<t.length;s++){var l=t[s],c=r.base?l[0]+r.base:l[0],u=i[c]||0,d="".concat(c," ").concat(u);i[c]=u+1;var h=n(d),p={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==h)e[h].references++,e[h].updater(p);else{var f=o(p,r);r.byIndex=s,e.splice(s,0,{identifier:d,updater:f,references:1})}a.push(d)}return a}function o(t,e){var n=e.domAPI(e);return n.update(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap&&e.supports===t.supports&&e.layer===t.layer)return;n.update(t=e)}else n.remove()}}t.exports=function(t,o){var i=r(t=t||[],o=o||{});return function(t){t=t||[];for(var a=0;a<i.length;a++){var s=n(i[a]);e[s].references--}for(var l=r(t,o),c=0;c<i.length;c++){var u=n(i[c]);0===e[u].references&&(e[u].updater(),e.splice(u,1))}i=l}}},113:t=>{t.exports=function(t,e){if(e.styleSheet)e.styleSheet.cssText=t;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(t))}}},314:t=>{t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n="",r=void 0!==e[5];return e[4]&&(n+="@supports (".concat(e[4],") {")),e[2]&&(n+="@media ".concat(e[2]," {")),r&&(n+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),n+=t(e),r&&(n+="}"),e[2]&&(n+="}"),e[4]&&(n+="}"),n})).join("")},e.i=function(t,n,r,o,i){"string"==typeof t&&(t=[[null,t,void 0]]);var a={};if(r)for(var s=0;s<this.length;s++){var l=this[s][0];null!=l&&(a[l]=!0)}for(var c=0;c<t.length;c++){var u=[].concat(t[c]);r&&a[u[0]]||(void 0!==i&&(void 0===u[5]||(u[1]="@layer".concat(u[5].length>0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=i),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),o&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=o):u[4]="".concat(o)),e.push(u))}},e}},540:t=>{t.exports=function(t){var e=document.createElement("style");return t.setAttributes(e,t.attributes),t.insert(e,t.options),e}},601:t=>{t.exports=function(t){return t[1]}},610:(t,e,n)=>{n.r(e),n.d(e,{default:()=>g});var r=n(72),o=n.n(r),i=n(825),a=n.n(i),s=n(659),l=n.n(s),c=n(56),u=n.n(c),d=n(540),h=n.n(d),p=n(113),f=n.n(p),m=n(935),v={};v.styleTagTransform=f(),v.setAttributes=u(),v.insert=l().bind(null,"head"),v.domAPI=a(),v.insertStyleElement=h(),o()(m.A,v);const g=m.A&&m.A.locals?m.A.locals:void 0},659:t=>{var e={};t.exports=function(t,n){var r=function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}e[t]=n}return e[t]}(t);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(n)}},825:t=>{t.exports=function(t){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=t.insertStyleElement(t);return{update:function(n){!function(t,e,n){var r="";n.supports&&(r+="@supports (".concat(n.supports,") {")),n.media&&(r+="@media ".concat(n.media," {"));var o=void 0!==n.layer;o&&(r+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),r+=n.css,o&&(r+="}"),n.media&&(r+="}"),n.supports&&(r+="}");var i=n.sourceMap;i&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),e.styleTagTransform(r,t,e.options)}(e,t,n)},remove:function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(e)}}}},935:(t,e,n)=>{n.d(e,{A:()=>s});var r=n(601),o=n.n(r),i=n(314),a=n.n(i)()(o());a.push([t.id,'/* =========== 基础变量定义 =========== */\n:root {\n /* 颜色系统 - 符合Apple Dark Mode设计规范 */\n --shadcn-background: 0 0% 0%; /* 纯黑色背景 */\n --shadcn-foreground: 0 0% 100%; /* 纯白色前景 */\n --shadcn-card: 0 0% 5%; /* 深灰色卡片背景 */\n --shadcn-card-foreground: 0 0% 95%; /* 淡灰白色卡片前景 */\n --shadcn-popover: 0 0% 10%; /* 深灰色弹出层背景 */\n --shadcn-popover-foreground: 0 0% 95%; /* 淡灰白色弹出层前景 */\n --shadcn-primary: 210 10% 90%; /* 淡蓝灰色主色 */\n --shadcn-primary-foreground: 210 20% 10%; /* 深蓝灰色主色前景 */\n --shadcn-secondary: 0 0% 15%; /* 次要颜色为深灰色 */\n --shadcn-secondary-foreground: 0 0% 95%; /* 淡灰白色次要前景 */\n --shadcn-muted: 0 0% 30%; /* 柔和的深灰色 */\n --shadcn-muted-foreground: 0 0% 70%; /* 柔和的浅灰色前景 */\n --shadcn-accent: 212 40% 30%; /* 柔和的蓝灰色强调色 */\n --shadcn-accent-foreground: 0 0% 95%; /* 淡灰白色强调前景 */\n --shadcn-destructive: 0 50% 40%; /* 柔和的红色 */\n --shadcn-destructive-foreground: 0 0% 95%; /* 淡灰白色破坏性操作前景 */\n --shadcn-border: 0 0% 30%; /* 深灰色边框 */\n --shadcn-input: 0 0% 15%; /* 深灰色输入框 */\n --shadcn-ring: 212 70% 45%; /* 蓝色环 */\n \n /* 状态颜色 - 符合Apple设计规范的柔和色调 */\n --shadcn-green: 142 50% 45%; /* 柔和的绿色 */\n --shadcn-green-foreground: 0 0% 95%; /* 淡灰白色绿色前景 */\n --shadcn-blue: 211 70% 55%; /* 柔和的蓝色 */\n --shadcn-blue-foreground: 0 0% 95%; /* 淡灰白色蓝色前景 */\n --shadcn-red: 0 60% 50%; /* 柔和的红色 */\n --shadcn-red-foreground: 0 0% 95%; /* 淡灰白色红色前景 */\n --shadcn-orange: 25 80% 50%; /* 柔和的橙色 */\n --shadcn-orange-foreground: 0 0% 95%; /* 淡灰白色橙色前景 */\n --shadcn-purple: 262 60% 60%; /* 柔和的紫色 */\n --shadcn-purple-foreground: 0 0% 95%; /* 淡灰白色紫色前景 */\n \n /* 圆角 */\n --shadcn-radius: 0.5rem;\n --shadcn-radius-sm: 0.3rem;\n --shadcn-radius-lg: 0.8rem;\n \n /* 按钮尺寸 */\n --button-sm: 20px;\n --button-md: 32px;\n --button-lg: 40px;\n --button-xl: 48px;\n \n /* 常用动画 */\n --anim-quick: 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n --anim-smooth: 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --anim-bounce: 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);\n \n /* 阴影 - Apple风格阴影更柔和 */\n --shadow-sm: 0 2px 5px rgba(0, 0, 0, 0.2);\n --shadow-md: 0 4px 10px rgba(0, 0, 0, 0.25);\n --shadow-lg: 0 8px 20px rgba(0, 0, 0, 0.3);\n \n /* 字体 */\n --font-sans: "SF Pro Display", "SF Pro", "Segoe UI", "Microsoft YaHei", "微软雅黑", "PingFang SC", "苹方", "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";\n}\n\n/* 全局字体设置 */\nhtml, body, button, input, select, textarea {\n font-family: var(--font-sans);\n}\n\n/* 确保所有元素都使用全局字体 */\n*, *::before, *::after {\n font-family: inherit;\n}\n\n.tm-video-overlay * {\n font-family: var(--font-sans);\n}\n\n/* =========== 通用组件样式 =========== */\n\n/* 浮动按钮 */\n.tm-floating-button {\n position: fixed;\n bottom: 30px;\n right: 30px;\n padding: 3px;\n width: calc(var(--button-xl));\n height: calc(var(--button-xl));\n border-radius: calc(var(--button-xl) / 2);\n background-color: rgba(35, 17, 29, 0.8);\n color: rgb(254, 98, 142);\n border: none;\n box-shadow: var(--shadow-md), 0 0 0 1px rgba(255, 255, 255, 0.1);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 9980;\n cursor: pointer;\n transition: all var(--anim-smooth);\n backdrop-filter: blur(4px);\n -webkit-backdrop-filter: blur(4px);\n}\n\n.tm-floating-button:hover {\n transform: translateY(-3px) scale(1.05);\n box-shadow: var(--shadow-lg), 0 0 0 1px rgba(255, 255, 255, 0.15);\n}\n\n.tm-floating-button:active {\n transform: scale(0.95);\n}\n\n/* =========== 视频播放器样式 =========== */\n\n/* 整体布局 */\n.tm-video-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 100vh;\n background-color: rgba(35, 17, 29, 0.8); /* 更深的背景色 */\n z-index: 9990;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n backdrop-filter: blur(30px); /* 增加模糊效果,符合iOS风格 */\n -webkit-backdrop-filter: blur(30px);\n padding: 0; /* 移除默认padding */\n}\n\n/* 播放器容器 - 现在与视频覆盖层同级 */\n.tm-player-container {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100%;\n background-color: transparent;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n z-index: 9991;\n /* 确保能完全包含所有子元素 */\n height: 100%;\n overflow: visible;\n pointer-events: auto;\n}\n\n/* 按钮容器 - 放置在视频容器顶部外面 */\n.tm-button-container {\n width: 100%;\n display: flex;\n justify-content: space-between;\n padding: 6px 10px;\n box-sizing: border-box;\n z-index: 9993;\n /* 保持在顶部 */\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.tm-video-container {\n position: relative;\n overflow: hidden;\n width: 100%;\n height: auto;\n max-height: 80vh;\n margin-top: 44px;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n background-color: hsl(var(--shadcn-card));\n border-radius: var(--shadcn-radius-lg);\n box-shadow: var(--shadow-lg);\n z-index: 9992;\n}\n\n.tm-video-wrapper {\n position: relative;\n overflow: hidden;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n will-change: transform;\n border-radius: var(--shadcn-radius) var(--shadcn-radius) 0 0;\n}\n\n/* 确保视频元素随容器高度变化 */\n.tm-video-wrapper video {\n width: auto !important; \n height: 100% !important; \n max-width: none !important; \n object-fit: contain !important; \n transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n touch-action: pan-y; \n cursor: grab; \n}\n\n/* 调整手柄 */\n.tm-handle-container {\n left: 0;\n right: 0;\n bottom: 10px;\n height: 30px;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 9992;\n width: 100%;\n}\n\n.tm-resize-handle {\n position: absolute;\n height: 5px;\n width: 134px;\n max-width: 134px;\n background-color: hsla(var(--shadcn-foreground) / 0.6);\n border-radius: 2.5px;\n cursor: ns-resize;\n touch-action: none;\n opacity: 0.5;\n will-change: transform;\n transition: all var(--anim-quick);\n box-shadow: none;\n}\n\n.tm-resize-handle::after {\n content: \'\';\n position: absolute;\n left: -10px;\n right: -10px;\n top: -15px;\n bottom: -15px;\n background: transparent;\n}\n\n.tm-resize-handle:hover {\n opacity: 1;\n background-color: hsla(var(--shadcn-foreground) / 0.8);\n}\n\n/* 控制按钮基础样式 */\n.tm-control-button-base {\n color: hsl(var(--shadcn-secondary-foreground));\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all var(--anim-quick);\n backdrop-filter: blur(12px); /* 增加模糊效果 */\n -webkit-backdrop-filter: blur(12px);\n box-shadow: var(--shadow-sm);\n}\n\n/* 关闭按钮 */\n.tm-close-button {\n position: relative;\n width: var(--button-md);\n height: var(--button-md);\n border-radius: calc(var(--button-md) / 2);\n background-color: hsla(var(--shadcn-secondary) / 0.5); /* 更透明的背景 */\n color: hsl(var(--shadcn-secondary-foreground));\n border: 1px solid hsla(var(--shadcn-border) / 0.1); /* 减少边框强度 */\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all var(--anim-smooth);\n z-index: 9994;\n}\n\n.tm-close-button:hover {\n background-color: hsl(var(--shadcn-destructive));\n transform: scale(1.1);\n box-shadow: var(--shadow-md);\n}\n\n.tm-close-button:active {\n transform: scale(0.9);\n}\n\n/* 设置按钮 */\n.tm-settings-button {\n position: relative;\n width: var(--button-md);\n height: var(--button-md);\n border-radius: calc(var(--button-md) / 2);\n background-color: hsla(var(--shadcn-secondary) / 0.7);\n color: hsl(var(--shadcn-secondary-foreground));\n border: 1px solid hsla(var(--shadcn-border) / 0.2);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 9993;\n cursor: pointer;\n transition: all var(--anim-quick);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n box-shadow: var(--shadow-sm);\n}\n\n.tm-settings-button:hover {\n background-color: hsla(var(--shadcn-accent) / 0.9);\n transform: scale(1.1) rotate(30deg);\n box-shadow: var(--shadow-md);\n}\n\n.tm-settings-button:active {\n transform: scale(0.9);\n}\n\n/* 设置面板 */\n.tm-settings-panel {\n position: absolute;\n top: calc(env(safe-area-inset-top, 8px) + 60px);\n right: 16px;\n background-color: hsla(var(--shadcn-card) / 0.7);\n backdrop-filter: blur(15px);\n -webkit-backdrop-filter: blur(15px);\n border-radius: var(--shadcn-radius);\n border: 1px solid hsla(var(--shadcn-border) / 0.1); /* 淡化边框 */\n padding: 12px;\n box-shadow: var(--shadow-md);\n z-index: 9996;\n min-width: 200px;\n transform: translateY(-10px);\n opacity: 0;\n pointer-events: none;\n transition: transform var(--anim-smooth), opacity var(--anim-smooth);\n}\n\n.tm-settings-panel.active {\n transform: translateY(0);\n opacity: 1;\n pointer-events: auto;\n}\n\n/* 设置选项 */\n.tm-settings-option {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px;\n border-radius: var(--shadcn-radius-sm);\n margin-bottom: 8px;\n transition: background-color var(--anim-quick);\n}\n\n.tm-settings-option:hover {\n background-color: hsla(var(--shadcn-muted) / 0.5); /* 半透明悬停效果 */\n}\n\n.tm-settings-option:last-child {\n margin-bottom: 0;\n}\n\n.tm-settings-label {\n font-family: var(--font-sans);\n font-size: 14px;\n color: hsl(var(--shadcn-foreground));\n}\n\n/* 切换开关 */\n.tm-toggle-switch {\n position: relative;\n display: inline-block;\n width: 40px;\n height: 24px;\n}\n\n.tm-toggle-switch input {\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.tm-toggle-slider {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: hsla(var(--shadcn-muted) / 0.7); /* 关闭状态背景 */\n border-radius: 12px;\n transition: var(--anim-quick);\n}\n\n.tm-toggle-slider:before {\n position: absolute;\n content: "";\n height: 20px;\n width: 20px;\n left: 2px;\n bottom: 2px;\n background-color: hsl(var(--shadcn-foreground));\n border-radius: 50%;\n transition: var(--anim-quick);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* 细微阴影 */\n}\n\n.tm-toggle-slider.checked {\n background-color: hsl(var(--shadcn-blue)); /* 开启状态背景 */\n}\n\n.tm-toggle-slider.checked:before {\n transform: translateX(16px);\n}\n\n/* 播放速率滑块 */\n.tm-playback-rate-slider {\n display: flex;\n align-items: center;\n margin-left: 0;\n height: var(--button-md);\n width: 100%;\n background: hsl(var(--shadcn-card) / 0.85);\n border-radius: 8px;\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n position: relative;\n overflow: hidden;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n transition: box-shadow 0.3s ease, transform 0.2s ease;\n cursor: pointer;\n}\n\n.tm-playback-rate-slider:hover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n transform: translateY(-1px);\n}\n\n.tm-playback-rate-slider.dragging {\n box-shadow: var(--shadow-md);\n background: hsla(var(--shadcn-card) / 0.9);\n}\n\n.tm-slider-container {\n width: 100%;\n height: 100%;\n background: hsla(var(--shadcn-secondary) / 0.8);\n position: relative;\n overflow: hidden;\n display: flex;\n align-items: center;\n}\n\n.tm-slider-level {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n background: hsl(0 0% 50% / 1);\n width: 50%;\n transform-origin: left;\n transition: width 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n z-index: 1;\n}\n\n.tm-slider-text {\n display: flex;\n justify-content: space-between;\n width: 100%;\n padding: 0 12px;\n z-index: 2;\n position: relative;\n}\n\n.tm-speed-label {\n color: hsl(var(--shadcn-muted-foreground));\n font-size: 13px;\n font-weight: 500;\n transition: color 0.3s ease;\n}\n\n.tm-speed-value {\n color: hsl(var(--shadcn-foreground));\n font-size: 13px;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n}\n\n/* 速度标签和值 */\n.tm-speed-label {\n color: hsl(var(--shadcn-muted-foreground));\n font-size: 13px;\n font-weight: 400;\n transition: color var(--anim-quick);\n}\n\n.tm-playback-rate-slider:hover .tm-speed-label {\n color: hsl(var(--shadcn-foreground));\n}\n\n.tm-speed-value {\n color: hsl(var(--shadcn-foreground));\n font-size: 13px;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n}\n\n/* 速度值颜色状态 */\n.tm-speed-value.fast {\n color: hsl(var(--shadcn-orange));\n}\n\n.tm-speed-value.slow {\n color: hsl(var(--shadcn-blue));\n}\n\n.tm-speed-value.normal {\n color: hsl(var(--shadcn-foreground));\n}\n\n/* 进度条控制组件 */\n.tm-progress-controls {\n position: relative;\n width: 100%;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n flex-direction: column;\n z-index: 9991;\n border-radius: 0 0 var(--shadcn-radius-lg) var(--shadcn-radius-lg);\n font-family: var(--font-sans);\n transition: opacity var(--anim-smooth);\n}\n\n/* 进度条容器 */\n.tm-progress-bar-container {\n position: relative;\n height: 12px;\n display: flex;\n align-items: center;\n cursor: pointer;\n user-select: none; /* 防止文本选择 */\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n touch-action: none; /* 防止触摸设备上的默认行为 */\n}\n\n/* 进度条 */\n.tm-progress-bar {\n width: 100%;\n height: 8px;\n background-color: hsla(var(--shadcn-muted) / 0.5);\n border-radius: 8px;\n overflow: hidden;\n position: relative;\n transition: height 0.15s;\n}\n\n.tm-progress-bar:hover {\n height: 6px;\n}\n\n/* 添加进度条交互状态样式 */\n.tm-progress-bar-expanded {\n height: 16px !important;\n}\n\n.tm-progress-bar-normal {\n height: 8px !important;\n}\n\n/* 进度条拖动状态 */\n.tm-progress-bar.tm-dragging {\n height: 16px !important;\n background-color: hsla(var(--shadcn-muted-foreground) / 0.7);\n cursor: grabbing;\n}\n\n/* 容器在拖动时的样式 */\n.tm-progress-bar-container:has(.tm-dragging) {\n cursor: grabbing;\n}\n\n/* 进度指示器 */\n.tm-progress-indicator {\n height: 100%;\n width: 0%;\n background-color: hsla(var(--shadcn-muted) / 0.8);\n border-radius: 0;\n position: absolute;\n left: 0;\n top: 0;\n transition: width 0.1s linear;\n overflow: hidden;\n}\n\n/* 拖动时的进度指示器样式 */\n.tm-dragging .tm-progress-indicator {\n background-color: hsl(var(--shadcn-card-foreground));\n box-shadow: none;\n transition: none; /* 拖动时禁用过渡效果,使响应更即时 */\n}\n\n/* 确保进度条容器正确处理溢出 */\n.tm-progress-bar {\n overflow: hidden;\n}\n\n/* 进度条手柄 */\n.tm-progress-handle {\n width: 12px;\n height: 12px;\n background-color: hsl(var(--shadcn-blue));\n border: 2px solid hsl(var(--shadcn-card));\n border-radius: 50%;\n position: absolute;\n top: 50%;\n left: 0%;\n transform: translate(0, -50%);\n z-index: 2;\n opacity: 1;\n transition: opacity 0.15s, width 0.15s, height 0.15s, box-shadow 0.15s;\n box-shadow: 0 0 0 4px hsl(var(--shadcn-blue) / 0.2);\n cursor: grab;\n}\n\n.tm-progress-handle:hover,\n.tm-progress-handle.dragging {\n transform: translate(0, -50%) scale(1.1);\n box-shadow: 0 0 0 6px hsl(var(--shadcn-blue) / 0.3);\n}\n\n/* 循环标记 - Apple Design风格优化 */\n.tm-loop-marker {\n position: absolute;\n width: 4px;\n height: 100%; /* 与进度条等高 */\n top: 0; /* 位于进度条上方,不是突出来的 */\n transform: translateX(-50%);\n z-index: 3;\n transition: opacity 0.3s cubic-bezier(0.25, 0.1, 0.25, 1), \n transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275),\n box-shadow 0.2s cubic-bezier(0.25, 0.1, 0.25, 1);\n backdrop-filter: blur(4px);\n -webkit-backdrop-filter: blur(4px);\n}\n\n/* 循环开始标记(A) */\n.tm-loop-start-marker {\n background-color: hsla(var(--shadcn-green) / 0.5);\n border-radius: 2px;\n box-shadow: 0 0 6px hsla(var(--shadcn-green) / 0.3);\n}\n\n/* 循环结束标记(B) */\n.tm-loop-end-marker {\n background-color: hsla(var(--shadcn-orange) / 0.5);\n border-radius: 2px;\n box-shadow: 0 0 6px hsla(var(--shadcn-orange) / 0.3);\n}\n\n/* 循环标记悬停效果 */\n.tm-loop-marker:hover {\n cursor: pointer;\n z-index: 4;\n}\n\n.tm-loop-start-marker:hover {\n background-color: hsla(var(--shadcn-green) / 0.7);\n box-shadow: 0 0 10px hsla(var(--shadcn-green) / 0.5);\n}\n\n.tm-loop-end-marker:hover {\n background-color: hsla(var(--shadcn-orange) / 0.7);\n box-shadow: 0 0 10px hsla(var(--shadcn-orange) / 0.5);\n}\n\n/* 循环激活时的标记样式 */\n.tm-loop-marker.active {\n opacity: 1;\n}\n\n.tm-loop-marker:not(.active) {\n opacity: 0.7;\n}\n\n/* 添加标记的文本标签 */\n.tm-loop-marker::before {\n content: attr(data-label);\n position: absolute;\n top: -24px;\n left: 50%;\n transform: translateX(-50%);\n background-color: hsla(var(--shadcn-card) / 0.7);\n color: hsl(var(--shadcn-card-foreground));\n font-size: 10px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 10px;\n opacity: 0;\n transition: opacity 0.2s ease, transform 0.2s ease;\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n border: 1px solid hsla(var(--shadcn-border) / 0.1);\n white-space: nowrap;\n z-index: 5;\n}\n\n.tm-loop-start-marker::before {\n content: "循环起点";\n}\n\n.tm-loop-end-marker::before {\n content: "循环终点";\n}\n\n.tm-loop-marker:hover::before {\n opacity: 1;\n transform: translateX(-50%) translateY(-4px);\n}\n\n/* 时间容器状态样式 */\n.tm-start-time-container-hover {\n background-color: hsl(var(--shadcn-green) / 0.1);\n border-color: hsl(var(--shadcn-green) / 0.3);\n}\n\n.tm-start-time-container-default {\n background-color: hsl(var(--shadcn-secondary) / 0.5);\n border-color: hsl(var(--shadcn-border) / 0.1);\n}\n\n.tm-end-time-container-hover {\n background-color: hsl(var(--shadcn-orange) / 0.1);\n border-color: hsl(var(--shadcn-orange) / 0.3);\n}\n\n.tm-end-time-container-default {\n background-color: hsl(var(--shadcn-secondary) / 0.5);\n border-color: hsl(var(--shadcn-border) / 0.1);\n}\n\n/* 循环按钮状态 */\n.tm-loop-button-hover {\n background-color: hsl(var(--shadcn-accent) / 0.3);\n transform: translateY(-1px);\n}\n\n.tm-loop-button-active {\n background-color: hsl(var(--shadcn-muted) / 0.7);\n}\n\n.tm-loop-button-default {\n background-color: hsl(var(--shadcn-secondary) / 0.5);\n transform: translateY(0);\n}\n\n/* 暂停/播放速度指示器 */\n.tm-indicator-base {\n position: absolute;\n padding: 8px 16px;\n background-color: hsla(var(--shadcn-card) / 0.6); /* 更透明 */\n color: hsl(var(--shadcn-card-foreground));\n border-radius: var(--shadcn-radius);\n opacity: 0;\n backdrop-filter: blur(15px); /* 增强模糊效果 */\n -webkit-backdrop-filter: blur(15px);\n box-shadow: var(--shadow-md);\n border: 1px solid hsla(var(--shadcn-border) / 0.1); /* 淡化边框 */\n transform: translateY(20px);\n transition: opacity var(--anim-smooth), transform var(--anim-smooth);\n pointer-events: none;\n z-index: 9994;\n font-size: 15px;\n font-weight: 500;\n}\n\n.tm-indicator-base.visible {\n opacity: 1;\n transform: translateY(0);\n pointer-events: auto;\n}\n\n/* 暂停指示器 */\n.tm-pause-indicator {\n width: 80px;\n height: 80px;\n}\n\n/* 播放速度指示器 */\n.tm-playback-rate-indicator {\n top: 30%;\n border-radius: var(--shadcn-radius);\n padding: 10px 16px;\n font-size: 16px;\n font-weight: bold;\n}\n\n/* 进度条相关布局样式 */\n.tm-progress-row {\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n}\n\n.tm-seek-control-row {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n box-sizing: border-box;\n}\n\n.tm-loop-control-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n box-sizing: border-box;\n position: relative;\n}\n\n.tm-playback-control-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n width: 100%;\n}\n\n/* 播放控制区域相关样式 */\n.tm-left-controls, .tm-center-controls, .tm-right-controls {\n flex: 1;\n display: flex;\n}\n\n.tm-left-controls {\n justify-content: flex-start;\n}\n\n.tm-center-controls {\n justify-content: center;\n}\n\n.tm-right-controls {\n justify-content: flex-end;\n}\n\n/* 时间显示 */\n.tm-time-display {\n display: flex;\n justify-content: space-between;\n color: hsl(var(--shadcn-foreground) / 0.9);\n font-size: 12px;\n margin-top: -2px;\n font-variant-numeric: tabular-nums;\n gap: 8px;\n}\n\n.tm-time-display-container {\n display: flex;\n justify-content: space-between;\n width: 100%;\n padding: 0px 1px;\n margin-bottom: 4px;\n}\n\n.tm-current-time, .tm-total-duration {\n color: hsl(var(--shadcn-card-foreground) / 0.9);\n font-size: 0.8rem;\n min-width: 60px;\n font-variant-numeric: tabular-nums;\n font-weight: 400;\n line-height: 1;\n}\n\n.tm-current-time {\n text-align: left;\n}\n\n.tm-total-duration {\n text-align: right;\n}\n\n.tm-loop-control {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.tm-start-time-container, .tm-end-time-container {\n display: flex;\n align-items: center;\n background-color: hsl(var(--shadcn-secondary) / 0.5);\n border: 1px solid hsl(var(--shadcn-border) / 0.1);\n border-radius: 6px;\n padding: 4px 4px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n/* 添加悬停效果 */\n.tm-start-time-container:hover {\n background-color: hsl(var(--shadcn-green) / 0.1);\n border-color: hsl(var(--shadcn-green) / 0.3);\n transform: translateY(-1px);\n}\n\n.tm-end-time-container:hover {\n background-color: hsl(var(--shadcn-orange) / 0.1);\n border-color: hsl(var(--shadcn-orange) / 0.3);\n transform: translateY(-1px);\n}\n\n.tm-set-loop-start-label, .tm-set-loop-end-label {\n font-size: 1rem;\n font-weight: 600;\n padding: 0px 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* A按钮标签 - 始终保持绿色 */\n.tm-set-loop-start-label {\n color: hsl(var(--shadcn-green));\n}\n\n/* B按钮标签 - 始终保持橙色 */\n.tm-set-loop-end-label {\n color: hsl(var(--shadcn-orange));\n}\n\n.tm-loop-toggle-button {\n display: flex;\n align-items: center;\n background-color: hsl(var(--shadcn-secondary) / 0.5);\n border: 1px solid hsl(var(--shadcn-border) / 0.1);\n border-radius: 6px;\n padding: 4px 8px;\n font-size: 0.875rem;\n cursor: pointer;\n transition: all 0.2s ease;\n font-weight: 500;\n gap: 6px;\n color: hsl(var(--shadcn-foreground));\n}\n\n/* Loop按钮标签样式 */\n.tm-loop-toggle-label {\n font-size: 1rem;\n font-weight: 600;\n padding: 0px 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: hsl(var(--shadcn-muted-foreground) / 0.9);\n transition: color 0.2s ease;\n}\n\n/* 添加标签激活状态 */\n.tm-loop-toggle-label.active {\n color: hsl(var(--shadcn-red));\n}\n\n/* 循环按钮 - 两种状态 */\n.tm-loop-toggle-button.active {\n background-color: hsl(var(--shadcn-red) / 0.1);\n border-color: hsl(var(--shadcn-red) / 0.3);\n}\n\n.tm-loop-toggle-button:not(.active) {\n background-color: hsl(var(--shadcn-secondary) / 0.5);\n border-color: hsl(var(--shadcn-border) / 0.1);\n}\n\n\n.tm-loop-toggle-button:active {\n transform: scale(0.98);\n}\n\n.tm-loop-indicator-circle {\n transition: fill 0.2s ease;\n}\n\n\n.tm-loop-toggle-button.active .tm-loop-indicator-circle {\n fill: hsl(var(--shadcn-red));\n}\n\n/* 添加新的样式 */\n/* 快进/快退按钮组样式 */\n.tm-rewind-group, .tm-forward-group {\n display: flex;\n flex-direction: column;\n width: 50%;\n gap: 8px;\n align-items: center;\n}\n\n.tm-rewind-buttons-container {\n display: flex;\n flex-direction: row-reverse;\n flex-wrap: wrap;\n width: 100%;\n justify-content: flex-end;\n align-content: flex-start;\n gap: 6px;\n}\n\n.tm-forward-buttons-container {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n width: 100%;\n justify-content: flex-end;\n align-content: flex-start;\n gap: 6px;\n}\n\n/* 循环时间显示样式 */\n.tm-loop-start-position, .tm-loop-end-position {\n color: hsl(var(--shadcn-muted-foreground));\n font-size: 0.875rem;\n min-width: 70px;\n text-align: center;\n display: inline-block;\n font-variant-numeric: tabular-nums;\n}\n\n/* 时间控制按钮基础样式 */\n.tm-time-control-button {\n background-color: hsl(var(--shadcn-secondary) / 0.5);\n color: hsl(var(--shadcn-secondary-foreground));\n border: 1px solid hsl(var(--shadcn-border) / 0.1);\n border-radius: var(--shadcn-radius-sm);\n padding: 0;\n font-size: 0.75rem;\n cursor: pointer;\n transition: all 0.2s cubic-bezier(.25,.8,.25,1);\n white-space: nowrap;\n font-weight: 500;\n box-shadow: 0 1px 2px rgba(0,0,0,0.05);\n width: var(--button-xl);\n height: var(--button-lg);\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n}\n\n.tm-time-control-button:hover {\n background-color: hsl(var(--shadcn-accent) / 0.6);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.tm-time-control-button:active {\n transform: scale(0.95);\n box-shadow: none;\n}\n\n.tm-time-control-button-active {\n transform: scale(0.95);\n box-shadow: none;\n}\n\n.tm-time-control-button-after-active {\n transform: none;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);\n}\n\n.tm-time-control-button-inner {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.tm-rewind-icon {\n margin-right: -2px;\n}\n\n.tm-forward-icon {\n margin-left: -2px;\n}\n\n.tm-time-text-margin-left {\n margin-left: 2px;\n}\n\n.tm-time-text-margin-right {\n margin-right: 2px;\n}\n\n/* 控制按钮状态 */\n.tm-control-button-hover {\n background-color: hsl(var(--shadcn-accent) / 0.3);\n transform: none;\n}\n\n.tm-control-button-default {\n background-color: hsl(var(--shadcn-secondary) / 0.5);\n transform: none;\n}\n\n/* 控制面板容器 */\n.tm-control-buttons {\n position: absolute;\n bottom: calc(10px + env(safe-area-inset-bottom, 0px)); /* 保持距离底部10px,同时考虑iOS安全区域 */\n left: 50%;\n transform: translateX(-50%);\n width: 95%;\n max-width: 700px;\n min-width: 350px; /* 与竖屏模式保持一致 */\n background-color: hsla(var(--shadcn-card) / 0.8);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n z-index: 9991;\n padding: 12px;\n padding-bottom: 12px; /* 移除原来的calc计算,因为我们已经在bottom属性中处理了 */\n border-radius: 12px;\n border: 1px solid hsla(var(--shadcn-border) / 0.1);\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);\n transition: opacity 0.3s ease, transform 0.3s ease;\n gap: 10px;\n \n /* 添加 flex 布局属性 */\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n/* 控制界面隐藏时的动画效果 - 更新选择器 */\nbody.controls-hidden .tm-player-container .tm-control-buttons {\n opacity: 0;\n transform: translateX(-50%) translateY(20px);\n pointer-events: none;\n}\n\n/* 控制界面显示时的动画效果 - 更新选择器 */\nbody:not(.controls-hidden) .tm-player-container .tm-control-buttons {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n pointer-events: auto;\n}\n\n/* 控制界面隐藏时的动画效果 - 更新选择器 */\nbody.controls-hidden .tm-player-container .tm-button-container {\n opacity: 0;\n transform: translateY(-20px);\n pointer-events: none;\n}\n\n/* 控制界面显示时的动画效果 - 更新选择器 */\nbody:not(.controls-hidden) .tm-player-container .tm-button-container {\n opacity: 1;\n transform: translateY(0);\n pointer-events: auto;\n}\n\n/* 控制按钮 */\n.tm-control-button {\n position: relative;\n width: var(--button-md);\n height: var(--button-md);\n border-radius: calc(var(--button-md) / 2);\n background-color: hsla(var(--shadcn-secondary) / 0.6);\n color: hsl(var(--shadcn-secondary-foreground));\n border: 1px solid hsla(var(--shadcn-border) / 0.1);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all var(--anim-quick);\n}\n\n.tm-control-button:hover {\n background-color: hsla(var(--shadcn-accent) / 0.7);\n transform: translateY(-2px);\n box-shadow: var(--shadow-sm);\n}\n\n.tm-control-button:active {\n transform: scale(0.95);\n box-shadow: none;\n}\n\n.tm-control-button.active {\n background-color: hsla(var(--shadcn-blue) / 0.7);\n color: hsl(var(--shadcn-blue-foreground));\n box-shadow: 0 0 0 2px hsla(var(--shadcn-blue) / 0.3);\n}\n\n.tm-control-button svg,\n.tm-control-button img {\n width: 16px;\n height: 16px;\n}\n\n/* 控制行 */\n.tm-control-row {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 8px;\n margin-top: 4px;\n opacity: 1;\n transition: opacity var(--anim-quick), height var(--anim-quick);\n height: auto;\n overflow: hidden;\n}\n\n.tm-control-row.hidden {\n opacity: 0;\n height: 0;\n margin: 0;\n}\n\n/* \n * 静态样式迁移总结:\n * 1. 已将进度条高度变化从行内样式转为CSS类:tm-progress-bar-expanded, tm-progress-bar-normal\n * 2. 已将循环标记点样式从行内样式转为CSS类:tm-loop-marker-point等\n * 3. 已将时间容器交互状态从行内样式转为CSS类:tm-start-time-container-hover等\n * 4. 已将循环按钮交互状态从行内样式转为CSS类:tm-loop-button-hover等\n * 5. 已将倍速滑块交互状态从行内样式转为CSS类:tm-playback-slider-hover等\n * 6. 已将控制按钮交互状态从行内样式转为CSS类:tm-control-button-hover等\n * 7. 已将时间控制按钮交互状态从行内样式转为CSS类:tm-time-control-button-hover等\n * \n * 注意:某些动态计算的样式值(如宽度百分比)仍使用行内样式直接设置\n */\n\n/* 时间控制按钮状态 */\n.tm-time-control-button-hover {\n background-color: hsl(var(--shadcn-accent) / 0.6);\n transform: none;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.tm-time-control-button-active {\n transform: scale(0.95);\n box-shadow: none;\n}\n\n.tm-time-control-button-default {\n transform: translateY(0);\n box-shadow: 0 1px 2px rgba(0,0,0,0.05);\n}\n\n.tm-time-control-button-after-active {\n transform: none;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);\n}\n\n/* =========== 横屏模式样式 =========== */\n@media screen and (orientation: landscape) {\n /* 视频容器横屏样式 */\n .tm-video-container {\n width: 100%;\n height: 100vh !important;\n max-height: 100vh !important;\n min-height: auto !important;\n margin: 0;\n padding: 0;\n /* 安全区域 */\n padding-left: env(safe-area-inset-left, 16px);\n padding-right: env(safe-area-inset-right, 16px);\n border-radius: 0;\n box-shadow: none;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: black;\n }\n\n /* 视频包装器横屏样式 */\n .tm-video-wrapper {\n width: 100%;\n height: 100%;\n border-radius: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n }\n\n /* 视频元素横屏样式 */\n .tm-video-wrapper video {\n width: 100% !important;\n height: auto !important;\n max-height: 100vh !important;\n object-fit: contain !important;\n }\n\n /* 当视频高度比例大于宽度比例时的样式 */\n .tm-video-wrapper.video-portrait video {\n width: auto !important;\n height: 100% !important;\n max-width: 100% !important;\n }\n\n /* 按钮容器横屏样式 - 只保留退出按钮 */\n .tm-button-container {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n z-index: 9995;\n background-color: transparent;\n padding: 16px;\n padding-top: calc(env(safe-area-inset-top, 8px) + 8px);\n display: flex;\n justify-content: space-between;\n transition: opacity 0.3s ease, transform 0.3s ease;\n }\n\n /* 控制界面隐藏时的动画效果 */\n .tm-video-overlay.controls-hidden .tm-button-container {\n opacity: 0;\n transform: translateY(-20px);\n pointer-events: none;\n }\n\n /* 控制界面显示时的动画效果 */\n .tm-video-overlay .tm-button-container {\n opacity: 1;\n transform: translateY(0);\n pointer-events: auto;\n }\n\n /* 设置按钮在横屏时不再隐藏 */\n .tm-settings-button {\n display: flex;\n background-color: hsla(var(--shadcn-secondary) / 0.3);\n backdrop-filter: blur(4px);\n -webkit-backdrop-filter: blur(4px);\n }\n\n /* 关闭按钮半透明 */\n .tm-close-button {\n background-color: hsla(var(--shadcn-secondary) / 0.3);\n backdrop-filter: blur(4px);\n -webkit-backdrop-filter: blur(4px);\n }\n\n /* 控制面板横屏样式 */\n .tm-control-buttons {\n position: absolute;\n bottom: calc(10px + env(safe-area-inset-bottom, 0px)); /* 保持距离底部10px,同时考虑iOS安全区域 */\n left: 50%;\n transform: translateX(-50%);\n width: 90%;\n max-width: 700px;\n min-width: 350px; /* 与竖屏模式保持一致 */\n background-color: hsla(var(--shadcn-card) / 0.3);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n z-index: 9994;\n padding: 12px;\n padding-bottom: 12px; /* 移除原来的calc计算,因为我们已经在bottom属性中处理了 */\n border-radius: 12px;\n border: 1px solid hsla(var(--shadcn-border) / 0.1);\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);\n transition: opacity 0.3s ease, transform 0.3s ease;\n }\n\n /* 控制界面隐藏时的动画效果 */\n .tm-video-overlay.controls-hidden .tm-control-buttons {\n opacity: 0;\n transform: translateX(-50%) translateY(20px);\n pointer-events: none;\n }\n\n /* 控制界面显示时的动画效果 */\n .tm-video-overlay .tm-control-buttons {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n pointer-events: auto;\n }\n\n /* 横屏模式下的播放器遮罩层 */\n .tm-video-overlay {\n background-color: black;\n backdrop-filter: none;\n -webkit-backdrop-filter: none;\n }\n\n /* 浮动按钮样式 - 确保在所有屏幕方向上正确显示 */\n .tm-floating-button {\n bottom: 30px;\n right: 30px;\n padding: 3px;\n width: calc(var(--button-xl));\n height: calc(var(--button-xl));\n }\n}\n\n/* 进度条拖动时间指示器 */\n.tm-time-indicator {\n position: absolute;\n background-color: hsla(var(--shadcn-card) / 0.8);\n color: hsl(var(--shadcn-card-foreground));\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n pointer-events: none;\n z-index: 9995;\n opacity: 0;\n transform: translateY(-8px);\n transition: opacity 0.2s, transform 0.2s;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);\n border: 1px solid hsla(var(--shadcn-border) / 0.1);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n}\n\n/* 循环时间容器状态样式 - 优化版 */\n/* A按钮容器 - 两种状态 */\n.tm-start-time-container.active {\n background-color: hsl(var(--shadcn-green) / 0.15);\n border-color: hsl(var(--shadcn-green) / 0.4);\n}\n\n.tm-start-time-container:not(.active) {\n background-color: hsl(var(--shadcn-secondary) / 0.5);\n border-color: hsl(var(--shadcn-border) / 0.1);\n}\n\n/* B按钮容器 - 两种状态 */\n.tm-end-time-container.active {\n background-color: hsl(var(--shadcn-orange) / 0.15);\n border-color: hsl(var(--shadcn-orange) / 0.4);\n}\n\n.tm-end-time-container:not(.active) {\n background-color: hsl(var(--shadcn-secondary) / 0.5);\n border-color: hsl(var(--shadcn-border) / 0.1);\n}\n\n/* A按钮标签 - 两种状态 */\n.tm-set-loop-start-label.active {\n color: hsl(var(--shadcn-green));\n opacity: 1;\n}\n\n.tm-set-loop-start-label:not(.active) {\n opacity: 0.9;\n}\n\n/* B按钮标签 - 两种状态 */\n.tm-set-loop-end-label.active {\n color: hsl(var(--shadcn-orange));\n opacity: 1;\n}\n\n.tm-set-loop-end-label:not(.active) {\n opacity: 0.9;\n}\n\n/* 循环时间文本 - 两种状态 */\n.tm-loop-start-position.active, .tm-loop-end-position.active {\n color: hsl(var(--shadcn-foreground));\n opacity: 1;\n}\n\n.tm-loop-start-position:not(.active), .tm-loop-end-position:not(.active) {\n color: hsl(var(--shadcn-muted-foreground));\n opacity: 0.9;\n}\n\n/* 循环按钮 - 两种状态 */\n.tm-loop-toggle-button.active {\n background-color: hsl(var(--shadcn-red) / 0.1);\n border-color: hsl(var(--shadcn-red) / 0.3);\n}\n\n\n.tm-loop-toggle-button:active {\n transform: scale(0.98);\n}\n\n/* 循环区间连接效果 */\n.tm-loop-range {\n position: absolute;\n height: 4px;\n background: linear-gradient(90deg, \n hsla(var(--shadcn-green) / 0.3) 0%, \n hsla(var(--shadcn-orange) / 0.3) 100%);\n top: 50%;\n transform: translateY(-50%);\n border-radius: 2px;\n opacity: 0;\n transition: opacity 0.3s ease;\n z-index: 1;\n pointer-events: none;\n}\n\n.tm-loop-range.active {\n opacity: 0.7;\n box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);\n}\n\n/* 循环区间悬停效果 */\n.tm-progress-bar-container:hover .tm-loop-range.active {\n opacity: 0.9;\n height: 6px;\n}',""]);const s=a}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={id:r,exports:{}};return t[r](i,i.exports,n),i.exports}function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,a(r.key),r)}}function i(t,e,n){return(e=a(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(t){var e=function(t){if("object"!=r(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=r(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==r(e)?e:e+""}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.nc=void 0;var s=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)},e=[{key:"throttle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200,n=0;return function(){var r=Date.now();if(!(r-n<e)){n=r;for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];return t.apply(this,i)}}}},{key:"debounce",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200,n=null;return function(){for(var r=this,o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];n&&clearTimeout(n),n=setTimeout((function(){t.apply(r,i),n=null}),e)}}},{key:"isIOS",value:function(){return null===this._cache.isIOS&&(this._cache.isIOS=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream),this._cache.isIOS}},{key:"isSafari",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:"isPortrait",value:function(){return window.innerHeight>window.innerWidth}},{key:"checkDeviceAndOrientation",value:function(){return this.isPortrait()}},{key:"getSafeAreaInsets",value:function(){var t=window.getComputedStyle(document.documentElement);return{top:parseInt(t.getPropertyValue("--sat")||t.getPropertyValue("--safe-area-inset-top")||"0",10)||44,right:parseInt(t.getPropertyValue("--sar")||t.getPropertyValue("--safe-area-inset-right")||"0",10)||16,bottom:parseInt(t.getPropertyValue("--sab")||t.getPropertyValue("--safe-area-inset-bottom")||"0",10)||34,left:parseInt(t.getPropertyValue("--sal")||t.getPropertyValue("--safe-area-inset-left")||"0",10)||16}}},{key:"createElementWithStyle",value:function(t,e,n){var r=document.createElement(t);return e&&(r.className=e),n&&(r.style.cssText=n),r}},{key:"createSVGIcon",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:24,n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("width",e),n.setAttribute("height",e),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("fill","none"),n.setAttribute("stroke","currentColor"),n.setAttribute("stroke-width","2"),n.setAttribute("stroke-linecap","round"),n.setAttribute("stroke-linejoin","round");var r=document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d",t),n.appendChild(r),n}},{key:"findVideoElement",value:function(){for(var t=0,e=["#player video","#video video","div.plyr__video-wrapper video",".video-js video","#player > video","#video-player > video","video[preload]:not([muted])","video[src]","video.video-main","main video","video"];t<e.length;t++){var n=e[t],r=document.querySelectorAll(n);if(r.length>0)return console.log("[Utils] 找到视频元素:".concat(n)),r[0]}return null}},{key:"formatTime",value:function(t){var e=Math.floor(t/3600),n=Math.floor(t%3600/60),r=Math.floor(t%60);return e>0?"".concat(e,":").concat(n<10?"0":"").concat(n,":").concat(r<10?"0":"").concat(r):"".concat(n,":").concat(r<10?"0":"").concat(r)}},{key:"updateSafariThemeColor",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"#000000",e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.isSafari()||this.isIOS()){var n=document.querySelector('meta[name="theme-color"]');e&&n&&!this._theme.original.dark&&(this._theme.original.dark=n.content),n||((n=document.createElement("meta")).name="theme-color",document.head.appendChild(n)),n.content=t}}},{key:"restoreSafariThemeColor",value:function(){if(this._theme.original.dark)this.updateSafariThemeColor(this._theme.original.dark);else{var t=document.querySelector('meta[name="theme-color"]');t&&t.parentNode&&t.parentNode.removeChild(t)}}}],null&&o(t.prototype,null),e&&o(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function c(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function u(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?c(Object(n),!0).forEach((function(e){d(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function d(t,e,n){return(e=p(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function h(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,p(r.key),r)}}function p(t){var e=function(t){if("object"!=l(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=l(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==l(e)?e:e+""}i(s,"_cache",{isIOS:null,safeAreaInsets:null,lastOrientation:null}),i(s,"_theme",{original:{light:null,dark:null}});var f=function(){return t=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),console.log("[PlayerCore] 初始化..."),this.defaultPlaybackRate=1,this.targetVideo=null,this.videoState={currentTime:0,isPlaying:!1,volume:1,playbackRate:1},this.options=Object.assign({containerId:"tm-video-container",startLooped:!1,startMuted:!1},e),this.callingButton=this.options.callingButton||null,this.initialized=!1},e=[{key:"init",value:function(){if(!this.initialized)return this.cleanupExistingOverlays(),this.targetVideo=this.findTargetVideo(),this.targetVideo?(this.saveVideoState(),this.initialized=!0,console.log("[PlayerCore] 核心初始化完成"),this.targetVideo):(console.error("[PlayerCore] 未找到视频元素"),void(this.callingButton&&(this.callingButton.style.display="flex")))}},{key:"cleanupExistingOverlays",value:function(){var t=document.querySelectorAll(".tm-video-overlay");t.length>0&&(console.log("[PlayerCore] 清理 ".concat(t.length," 个现有overlay元素")),t.forEach((function(t){t&&t.parentNode&&t.parentNode.removeChild(t)})))}},{key:"findTargetVideo",value:function(){for(var t=null,e=0,n=["#player video","#video video","div.plyr__video-wrapper video",".video-js video","#player > video","#video-player > video","video[preload]:not([muted])"];e<n.length;e++){var r=n[e];if(t=document.querySelector(r))return console.log("[PlayerCore] 通过选择器找到视频:",r),t}var o=Array.from(document.querySelectorAll("video"));if(console.log("[PlayerCore] 找到视频元素数量:",o.length),0===o.length)return console.log("[PlayerCore] 未找到视频元素"),null;if(1===o.length)return console.log("[PlayerCore] 找到单个视频元素"),o[0];var i=o.map((function(t){return{element:t,rect:t.getBoundingClientRect()}})).filter((function(t){return t.rect.width>50&&t.rect.height>50})).map((function(t){return u(u({},t),{},{area:t.rect.width*t.rect.height})})).sort((function(t,e){return e.area-t.area}));return i.length>0?(console.log("[PlayerCore] 选择最大的可见视频"),i[0].element):(console.log("[PlayerCore] 回退到第一个视频元素"),o[0])}},{key:"saveVideoState",value:function(){this.targetVideo&&(this.originalParent=this.targetVideo.parentNode,this.originalIndex=Array.from(this.originalParent.children).indexOf(this.targetVideo),this.videoState={currentTime:this.targetVideo.currentTime,isPaused:this.targetVideo.paused,videoSrc:this.targetVideo.src,posterSrc:this.targetVideo.poster,wasMuted:this.targetVideo.muted,controls:this.targetVideo.controls})}},{key:"restoreVideoState",value:function(){var t=this;try{this.targetVideo.playbackRate=this.defaultPlaybackRate,this.targetVideo.currentTime=this.videoState.currentTime;var e=this.targetVideo.play();void 0!==e&&e.catch((function(e){console.log("视频自动播放被阻止,尝试静音播放: ",e),t.targetVideo.muted=!0,t.targetVideo.play().catch((function(t){console.error("即使静音也无法自动播放: ",t)}))}))}catch(t){console.error("尝试播放时出错: ",t)}}},{key:"close",value:function(t,e,n){if(t){this.videoState.currentTime=this.targetVideo.currentTime,this.videoState.isPlaying=!this.targetVideo.paused,this.videoState.volume=this.targetVideo.volume,this.videoState.playbackRate=this.targetVideo.playbackRate,this.targetVideo.paused||this.targetVideo.pause(),this.originalParent&&this.targetVideo&&this.targetVideo.parentNode&&this.targetVideo.parentNode!==this.originalParent&&(-1!==this.originalIndex&&this.originalParent.childNodes.length>this.originalIndex?this.originalParent.insertBefore(this.targetVideo,this.originalParent.childNodes[this.originalIndex]):this.originalParent.appendChild(this.targetVideo),this.targetVideo.style.width="",this.targetVideo.style.height="",this.targetVideo.style.maxHeight="",this.targetVideo.style.margin="",this.targetVideo.style.position=""),t.parentNode&&t.parentNode.removeChild(t),n&&n.parentNode&&n.parentNode.removeChild(n),document.body.classList.remove("controls-hidden");var r=document.getElementById("tm-fullscreen-style");r&&r.parentNode.removeChild(r),this.initialized=!1,s.restoreSafariThemeColor(),this.callingButton&&(this.callingButton.style.display="flex")}}}],e&&h(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();function m(t){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},m(t)}function v(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,g(r.key),r)}}function g(t){var e=function(t){if("object"!=m(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=m(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==m(e)?e:e+""}var y=function(){return t=function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.playerCore=e,this.targetVideo=e.targetVideo,this.overlay=null,this.container=null,this.playerContainer=null,this.videoWrapper=null,this.handleContainer=null,this.handle=null,this.closeBtn=null,this.settingsBtn=null,this.settingsPanel=null,this.buttonContainer=null,this.safeArea={top:44,bottom:34},this.isLandscape=!1,this.controlsVisible=!0,this.controlsHideTimeout=null},e=[{key:"createUI",value:function(){return console.log("[UIManager] createUI started."),this.createOverlayAndContainer(),this.createPlayerContainer(),this.createVideoWrapper(),this.createResizeHandle(),this.createCloseButton(),this.createSettingsButton(),this.createButtonContainer(),this.createSettingsPanel(),this.setupOrientationListener(),console.log("[UIManager] UI基础元素创建完成"),{overlay:this.overlay,container:this.container,playerContainer:this.playerContainer,videoWrapper:this.videoWrapper,handleContainer:this.handleContainer,handle:this.handle,closeBtn:this.closeBtn,settingsBtn:this.settingsBtn,settingsPanel:this.settingsPanel,buttonContainer:this.buttonContainer}}},{key:"createOverlayAndContainer",value:function(){this.overlay=document.createElement("div"),this.overlay.className="tm-video-overlay",this.overlay.style.zIndex="9990";var t=.8*window.innerWidth,e=window.innerWidth*(9/16);this.container=document.createElement("div"),this.container.className="tm-video-container",this.container.style.height="".concat(t,"px"),this.container.style.minHeight="".concat(e,"px"),console.log("[UIManager] Container element created:",this.container),console.log("[UIManager] createOverlayAndContainer finished.")}},{key:"createPlayerContainer",value:function(){this.playerContainer=document.createElement("div"),this.playerContainer.className="tm-player-container",console.log("[UIManager] Player container created:",this.playerContainer)}},{key:"createVideoWrapper",value:function(){var t=this;this.videoWrapper=document.createElement("div"),this.videoWrapper.className="tm-video-wrapper",this.targetVideo&&this.targetVideo.parentNode&&this.targetVideo.parentNode.removeChild(this.targetVideo),this.targetVideo.controls=!1,this.videoWrapper.appendChild(this.targetVideo),this.targetVideo.addEventListener("loadedmetadata",(function(){t.updateVideoAspectRatio()})),this.videoWrapper.addEventListener("click",(function(){t.isLandscape&&t.toggleControlsVisibility()}))}},{key:"createResizeHandle",value:function(){var t=this;this.handleContainer=document.createElement("div"),this.handleContainer.className="tm-handle-container",this.handle=document.createElement("div"),this.handle.className="tm-resize-handle",this.handle.insertAdjacentHTML("beforeend",'\n <div style="\n position: absolute;\n left: -10px;\n right: -10px;\n top: -15px;\n bottom: -15px;\n background: transparent;\n "></div>\n '),this.handle.addEventListener("mouseenter",(function(){t.handle.style.opacity="1",t.handle.style.backgroundColor="hsla(var(--shadcn-foreground) / 0.8)"})),this.handle.addEventListener("mouseleave",(function(){t.isDraggingHandle||(t.handle.style.opacity="0.5",t.handle.style.backgroundColor="hsla(var(--shadcn-foreground) / 0.6)")})),this.handle.addEventListener("mousedown",(function(){t.handle.style.cursor="grabbing",window.navigator.vibrate&&window.navigator.vibrate(5)})),document.addEventListener("mouseup",(function(){t.isDraggingHandle||(t.handle.style.cursor="grab")})),this.handle.addEventListener("touchstart",(function(){t.handle.style.opacity="1",t.handle.style.backgroundColor="hsla(var(--shadcn-foreground) / 0.8)",window.navigator.vibrate&&window.navigator.vibrate(5)}),{passive:!0}),this.handle.addEventListener("touchend",(function(){t.isDraggingHandle||(t.handle.style.opacity="0.5",t.handle.style.backgroundColor="hsla(var(--shadcn-foreground) / 0.6)")})),this.handleContainer.appendChild(this.handle)}},{key:"createCloseButton",value:function(){var t=this;this.closeBtn=document.createElement("button"),this.closeBtn.className="tm-close-button tm-control-button-base",this.closeBtn.innerHTML='\n <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M18 6L6 18M6 6L18 18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n ',this.closeBtn.addEventListener("mouseenter",(function(){t.closeBtn.style.backgroundColor="hsla(var(--shadcn-destructive) / 0.9)",t.closeBtn.style.transform="scale(1.1)"})),this.closeBtn.addEventListener("mouseleave",(function(){t.closeBtn.style.backgroundColor="hsla(var(--shadcn-background) / 0.7)",t.closeBtn.style.transform="scale(1)"}))}},{key:"createSettingsButton",value:function(){var t=this;this.settingsBtn=document.createElement("button"),this.settingsBtn.className="tm-settings-button tm-control-button-base",this.settingsBtn.innerHTML='\n <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n <path d="M19.4 15C19.1277 15.6171 19.2583 16.3378 19.73 16.82L19.79 16.88C20.1837 17.2737 20.4009 17.7994 20.4009 18.345C20.4009 18.8906 20.1837 19.4163 19.79 19.81C19.4163 20.2037 18.8906 20.4209 18.345 20.4209C17.7994 20.4209 17.2737 20.2037 16.91 19.81L16.85 19.75C16.3678 19.2783 15.6471 19.1477 15.03 19.42C14.4301 19.6801 14.0386 20.2502 14.03 20.89V21C14.03 21.5304 13.8193 22.0391 13.4442 22.4142C13.0691 22.7893 12.5604 23 12.03 23C11.4996 23 10.9909 22.7893 10.6158 22.4142C10.2407 22.0391 10.03 21.5304 10.03 21V20.91C10.0112 20.2556 9.5979 19.6818 8.98 19.43C8.36289 19.1577 7.64221 19.2883 7.16 19.76L7.1 19.82C6.73629 20.2137 6.21056 20.4309 5.665 20.4309C5.11944 20.4309 4.59371 20.2137 4.23 19.82C3.83628 19.4463 3.61911 18.9206 3.61911 18.375C3.61911 17.8294 3.83628 17.3037 4.23 16.93L4.29 16.87C4.76167 16.3878 4.89231 15.6671 4.62 15.05C4.35995 14.4501 3.78985 14.0586 3.15 14.05H3C2.46957 14.05 1.96086 13.8393 1.58579 13.4642C1.21071 13.0891 1 12.5804 1 12.05C1 11.5196 1.21071 11.0109 1.58579 10.6358C1.96086 10.2607 2.46957 10.05 3 10.05H3.09C3.74435 10.0312 4.31814 9.61788 4.57 9C4.84231 8.38289 4.71167 7.66221 4.24 7.18L4.18 7.12C3.78628 6.75629 3.56911 6.23056 3.56911 5.685C3.56911 5.13944 3.78628 4.61371 4.18 4.25C4.55371 3.85628 5.07944 3.63911 5.625 3.63911C6.17056 3.63911 6.69629 3.85628 7.07 4.25L7.13 4.31C7.61221 4.78167 8.33289 4.91231 8.95 4.64H9C9.59994 4.37995 9.99144 3.80985 10 3.17V3C10 2.46957 10.2107 1.96086 10.5858 1.58579C10.9609 1.21071 11.4696 1 12 1C12.5304 1 13.0391 1.21071 13.4142 1.58579C13.7893 1.96086 14 2.46957 14 3V3.09C14.0086 3.72985 14.4001 4.29995 15 4.56C15.6171 4.83231 16.3378 4.70167 16.82 4.23L16.88 4.17C17.2437 3.77628 17.7694 3.55911 18.325 3.55911C18.8806 3.55911 19.4063 3.77628 19.77 4.17C20.1637 4.54371 20.3809 5.06944 20.3809 5.615C20.3809 6.16056 20.1637 6.68629 19.77 7.06L19.71 7.12C19.2383 7.60221 19.1077 8.32289 19.38 8.94L19.4 9C19.66 9.59994 20.2301 9.99144 20.87 10H21C21.5304 10 22.0391 10.2107 22.4142 10.5858C22.7893 10.9609 23 11.4696 23 12C23 12.5304 22.7893 13.0391 22.4142 13.4142C22.0391 13.7893 21.5304 14 21 14H20.91C20.2702 14.0086 19.7001 14.4001 19.44 15H19.4Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n ',this.settingsBtn.addEventListener("mouseenter",(function(){t.settingsBtn.style.backgroundColor="hsla(var(--shadcn-accent) / 0.9)",t.settingsBtn.style.transform="rotate(45deg)"})),this.settingsBtn.addEventListener("mouseleave",(function(){t.settingsBtn.style.backgroundColor="hsla(var(--shadcn-background) / 0.7)",t.settingsBtn.style.transform="rotate(0deg)"}))}},{key:"createSettingsPanel",value:function(){this.settingsPanel=document.createElement("div"),this.settingsPanel.className="tm-settings-panel",this.settingsPanel.style.display="none"}},{key:"createButtonContainer",value:function(){this.buttonContainer=document.createElement("div"),this.buttonContainer.className="tm-button-container",this.buttonContainer.style.display="flex",this.buttonContainer.style.alignItems="center",this.buttonContainer.style.gap="10px",this.buttonContainer.style.zIndex="99999"}},{key:"setupOrientationListener",value:function(){var t=this;this.checkOrientation(),window.addEventListener("orientationchange",(function(){setTimeout((function(){t.checkOrientation()}),300)})),window.addEventListener("resize",(function(){t.checkOrientation()}))}},{key:"setupInteractionListeners",value:function(){var t=this;console.log("[UIManager] 设置交互事件监听器"),this.overlay&&(this.overlay.addEventListener("mousemove",(function(){t.isLandscape&&(t.showControls(),t.autoHideControls())})),this.overlay.addEventListener("touchmove",(function(){t.isLandscape&&(t.showControls(),t.autoHideControls())}),{passive:!0}),this.overlay.addEventListener("touchstart",(function(e){t.isLandscape&&e.target.closest(".tm-control-button, .tm-time-control-button, .tm-close-button")&&(t.showControls(),t.autoHideControls(),e.stopPropagation())}),{passive:!1}))}},{key:"checkOrientation",value:function(){var t=window.innerWidth>window.innerHeight;this.isLandscape!==t&&(this.isLandscape=t,this.handleOrientationChange())}},{key:"handleOrientationChange",value:function(){console.log("[UIManager] 屏幕方向变化:",this.isLandscape?"横屏":"竖屏"),this.updateContainerMinHeight(),this.updateVideoAspectRatio(),this.playerCore.controlManager&&(this.playerCore.controlManager.updateProgressBar(),this.playerCore.controlManager.updateCurrentTimeDisplay(),this.updateControlPanelVisibility()),this.handleContainer&&(this.handleContainer.style.display=this.isLandscape?"none":"flex"),this.isLandscape?(this.showControls(),this.autoHideControls()):(this.showControls(),this.controlsHideTimeout&&(clearTimeout(this.controlsHideTimeout),this.controlsHideTimeout=null))}},{key:"updateControlPanelVisibility",value:function(){if(this.playerCore.controlManager){var t=this.playerCore.controlManager.controlButtonsContainer;if(t){var e=t.querySelector(".tm-progress-row"),n=t.querySelector(".tm-seek-control-row"),r=t.querySelector(".tm-loop-control-row"),o=t.querySelector(".tm-playback-control-row");if(this.isLandscape){e&&(e.style.display="flex",e.style.backgroundColor="transparent"),n&&(n.style.display="flex",n.style.justifyContent="center",n.style.alignItems="center",n.style.gap="20px",n.style.backgroundColor="transparent"),r&&(r.style.display="flex",r.style.backgroundColor="transparent"),o&&(o.style.display="flex",o.style.backgroundColor="transparent"),this.settingsBtn&&(this.settingsBtn.style.display="flex",this.settingsBtn.style.backgroundColor="hsla(var(--shadcn-secondary) / 0.3)",this.settingsBtn.style.backdropFilter="blur(4px)");var i=t.querySelector(".tm-rewind-group"),a=t.querySelector(".tm-forward-group");i&&(i.style.width="auto",i.style.flex="0 1 auto"),a&&(a.style.width="auto",a.style.flex="0 1 auto")}else{e&&(e.style.display=""),n&&(n.style.display="",n.style.justifyContent="",n.style.alignItems="",n.style.gap=""),r&&(r.style.display=""),o&&(o.style.display=""),this.settingsBtn&&(this.settingsBtn.style.display="",this.settingsBtn.style.backgroundColor="",this.settingsBtn.style.backdropFilter="");var s=t.querySelector(".tm-rewind-group"),l=t.querySelector(".tm-forward-group");s&&(s.style.width="",s.style.flex=""),l&&(l.style.width="",l.style.flex="")}}}}},{key:"updateVideoAspectRatio",value:function(){if(this.videoWrapper&&this.targetVideo){var t=this.targetVideo.videoWidth,e=this.targetVideo.videoHeight;if(t&&e){var n=t/e,r=n<1;r?this.videoWrapper.classList.add("video-portrait"):this.videoWrapper.classList.remove("video-portrait"),console.log("[UIManager] 视频比例更新:",n,r?"竖屏视频":"横屏视频")}}}},{key:"showControls",value:function(){this.overlay&&(this.overlay.classList.remove("controls-hidden"),document.body.classList.remove("controls-hidden"),this.controlsVisible=!0,this.controlsHideTimeout&&(clearTimeout(this.controlsHideTimeout),this.controlsHideTimeout=null))}},{key:"hideControls",value:function(){this.overlay&&this.isLandscape&&(this.overlay.classList.add("controls-hidden"),document.body.classList.add("controls-hidden"),this.controlsVisible=!1)}},{key:"toggleControlsVisibility",value:function(){this.controlsVisible?this.hideControls():(this.showControls(),this.autoHideControls())}},{key:"autoHideControls",value:function(){var t=this;this.isLandscape&&(this.controlsHideTimeout&&clearTimeout(this.controlsHideTimeout),this.controlsHideTimeout=setTimeout((function(){t.hideControls()}),3e3))}},{key:"updateContainerMinHeight",value:function(){if(this.container&&this.targetVideo)if(this.isLandscape)console.log("[UIManager] 横屏模式,使用CSS样式控制高度");else{var t=this.targetVideo.videoWidth||this.targetVideo.naturalWidth,e=this.targetVideo.videoHeight||this.targetVideo.naturalHeight;if(t&&e){var n=window.innerWidth*(e/t);this.container.style.minHeight="".concat(n,"px"),console.log("[UIManager] 更新容器最小高度:",n)}}}},{key:"assembleDOM",value:function(){this.container.appendChild(this.videoWrapper),this.buttonContainer.appendChild(this.closeBtn),this.buttonContainer.appendChild(this.settingsBtn),this.playerContainer.appendChild(this.buttonContainer),this.playerContainer.appendChild(this.container),this.playerContainer.appendChild(this.handleContainer),this.playerContainer.appendChild(this.settingsPanel),this.playerCore.controlManager&&this.playerCore.controlManager.controlButtonsContainer&&this.playerContainer.appendChild(this.playerCore.controlManager.controlButtonsContainer),document.body.appendChild(this.overlay),document.body.appendChild(this.playerContainer),this.updateContainerMinHeight(),this.setupInteractionListeners(),console.log("[UIManager] DOM组装完成",{overlay:this.overlay.isConnected,playerContainer:this.playerContainer.isConnected,container:this.container.isConnected,videoWrapper:this.videoWrapper.isConnected,video:this.targetVideo.isConnected})}}],e&&v(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();function b(t){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},b(t)}function w(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function k(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,x(r.key),r)}}function x(t){var e=function(t){if("object"!=b(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=b(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==b(e)?e:e+""}var C=function(){return t=function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.playerCore=e,this.targetVideo=e.targetVideo,this.uiElements=n,this.controlButtonsContainer=null,this.playPauseButton=null,this.muteButton=null,this.progressBarElement=null,this.progressIndicator=null,this.currentTimeDisplay=null,this.totalDurationDisplay=null,this.timeIndicator=null,this.progressControlsContainer=null,this.pauseIndicator=null,this.playbackRateIndicator=null,this.loopManager=null,this.loopStartMarker=null,this.loopEndMarker=null,this.loopStartDisplay=null,this.loopEndDisplay=null,this.isDraggingProgress=!1,this.clickLock=!1,this.clickLockTimeout=null},e=[{key:"init",value:function(){return this.progressControlsContainer=this.createProgressControls(),this.controlButtonsContainer=this.createControlButtonsContainer(),this.initEventListeners(),{progressControlsContainer:this.progressControlsContainer,controlButtonsContainer:this.controlButtonsContainer}}},{key:"setLoopManager",value:function(t){this.loopManager=t}},{key:"initEventListeners",value:function(){var t=this;this.targetVideo.addEventListener("timeupdate",this.updateProgressBar.bind(this)),this.targetVideo.addEventListener("loadedmetadata",(function(){t.updateProgressBar(),t.updateLoopTimeDisplay(),t.updateLoopMarkers()})),this.progressBarElement.addEventListener("click",this.handleProgressClick.bind(this)),this.progressBarElement.addEventListener("mousedown",this.startProgressDrag.bind(this)),this.progressBarElement.addEventListener("touchstart",this.startProgressDrag.bind(this),{passive:!1}),this.uiElements.videoWrapper.addEventListener("click",(function(e){if(console.log("[ControlManager] 视频包装器点击事件触发"),e.target===t.uiElements.videoWrapper||e.target===t.targetVideo){if(t.clickLock)return void console.log("[ControlManager] 点击锁定中,忽略此次点击");t.clickLock=!0,t.clickLockTimeout&&clearTimeout(t.clickLockTimeout),t.clickLockTimeout=setTimeout((function(){t.clickLock=!1,t.clickLockTimeout=null}),500),console.log("[ControlManager] 触发视频点击事件,当前状态:",t.targetVideo.paused?"已暂停":"正在播放"),t.targetVideo.paused?t.targetVideo.play():(t.targetVideo.pause(),t.showPauseIndicator()),t.updatePlayPauseButton()}})),this.targetVideo.addEventListener("play",(function(){t.updatePlayPauseButton()})),this.targetVideo.addEventListener("pause",(function(){t.updatePlayPauseButton(),t.showPauseIndicator()})),this.targetVideo.addEventListener("volumechange",(function(){t.updateMuteButton()})),this.targetVideo.addEventListener("ratechange",(function(){if(t.playbackRateSlider){var e=t.targetVideo.playbackRate,n=(e-.1)/2.9*100;t.updatePlaybackRateSlider&&t.updatePlaybackRateSlider(n),t.showPlaybackRateIndicator(e)}}))}},{key:"createProgressControls",value:function(){var t=this;this.progressControlsContainer=document.createElement("div"),this.progressControlsContainer.className="tm-progress-controls";var e=document.createElement("div");e.className="tm-time-display-container",this.currentTimeDisplay=document.createElement("span"),this.currentTimeDisplay.className="tm-current-time",this.currentTimeDisplay.textContent="00:00:00",this.totalDurationDisplay=document.createElement("span"),this.totalDurationDisplay.className="tm-total-duration",this.totalDurationDisplay.textContent="-00:00:00";var n=document.createElement("div");return n.className="tm-progress-bar-container",this.progressBarElement=document.createElement("div"),this.progressBarElement.className="tm-progress-bar",this.progressIndicator=document.createElement("div"),this.progressIndicator.className="tm-progress-indicator",n.addEventListener("mouseenter",(function(){t.progressBarElement.classList.add("tm-progress-bar-expanded")})),n.addEventListener("mouseleave",(function(){t.isDraggingProgress||(t.progressBarElement.classList.add("tm-progress-bar-normal"),t.progressBarElement.classList.remove("tm-progress-bar-expanded"))})),n.addEventListener("touchstart",(function(){t.progressBarElement.classList.add("tm-progress-bar-expanded"),t.progressBarElement.classList.remove("tm-progress-bar-normal")}),{passive:!0}),n.addEventListener("touchend",(function(){t.isDraggingProgress||(t.progressBarElement.classList.add("tm-progress-bar-normal"),t.progressBarElement.classList.remove("tm-progress-bar-expanded"))})),this.loopStartMarker=document.createElement("div"),this.loopStartMarker.className="tm-loop-marker tm-loop-start-marker",this.loopStartMarker.style.display="none",this.loopEndMarker=document.createElement("div"),this.loopEndMarker.className="tm-loop-marker tm-loop-end-marker",this.loopEndMarker.style.display="none",this.loopRangeElement=document.createElement("div"),this.loopRangeElement.className="tm-loop-range",this.loopRangeElement.style.display="none",e.appendChild(this.currentTimeDisplay),e.appendChild(this.totalDurationDisplay),this.progressBarElement.appendChild(this.progressIndicator),n.appendChild(this.progressBarElement),n.appendChild(this.loopStartMarker),n.appendChild(this.loopEndMarker),n.appendChild(this.loopRangeElement),this.progressControlsContainer.appendChild(e),this.progressControlsContainer.appendChild(n),this.progressControlsContainer}},{key:"createControlButtonsContainer",value:function(){var t=this;this.controlButtonsContainer=document.createElement("div"),this.controlButtonsContainer.className="tm-control-buttons";var e=document.createElement("div");e.className="tm-progress-row",e.appendChild(this.progressControlsContainer),this.controlButtonsContainer.appendChild(e);var n=document.createElement("div");n.className="tm-seek-control-row";var r=document.createElement("div");r.className="tm-loop-control-row";var o=document.createElement("div");o.className="tm-time-display";var i=document.createElement("div");i.className="tm-loop-control";var a=document.createElement("div");a.className="tm-rewind-group";var s=document.createElement("div");s.className="tm-forward-group";var l=document.createElement("div");l.className="tm-rewind-buttons-container";var c=document.createElement("div");c.className="tm-forward-buttons-container",a.appendChild(l),s.appendChild(c),n.appendChild(a),n.appendChild(s),this.addTimeControlButton(l,"-5s",(function(){return t.seekRelative(-5)})),this.addTimeControlButton(l,"-10s",(function(){return t.seekRelative(-10)})),this.addTimeControlButton(l,"-30s",(function(){return t.seekRelative(-30)})),this.addTimeControlButton(l,"-1m",(function(){return t.seekRelative(-60)})),this.addTimeControlButton(l,"-5m",(function(){return t.seekRelative(-300)})),this.addTimeControlButton(l,"-10m",(function(){return t.seekRelative(-600)})),this.addTimeControlButton(c,"+5s",(function(){return t.seekRelative(5)})),this.addTimeControlButton(c,"+10s",(function(){return t.seekRelative(10)})),this.addTimeControlButton(c,"+30s",(function(){return t.seekRelative(30)})),this.addTimeControlButton(c,"+1m",(function(){return t.seekRelative(60)})),this.addTimeControlButton(c,"+5m",(function(){return t.seekRelative(300)})),this.addTimeControlButton(c,"+10m",(function(){return t.seekRelative(600)})),this.currentPositionDisplay=document.createElement("span"),this.currentPositionDisplay.className="tm-loop-start-position",this.currentPositionDisplay.textContent="00:00:00",this.setLoopStartButton=document.createElement("span"),this.setLoopStartButton.className="tm-set-loop-start-label",this.setLoopStartButton.innerHTML="A",this.durationDisplay=document.createElement("span"),this.durationDisplay.className="tm-loop-end-position",this.durationDisplay.textContent="00:00:00",this.setLoopEndButton=document.createElement("span"),this.setLoopEndButton.className="tm-set-loop-end-label",this.setLoopEndButton.innerHTML="B";var u=document.createElement("div");u.className="tm-start-time-container";var d=document.createElement("div");d.className="tm-end-time-container",u.addEventListener("click",(function(){t.loopManager?t.loopManager.setLoopStart():console.error("[ControlManager] 循环管理器未设置,无法调用setLoopStart")})),u.addEventListener("mouseover",(function(){})),u.addEventListener("mouseout",(function(){})),d.addEventListener("click",(function(){t.loopManager?t.loopManager.setLoopEnd():console.error("[ControlManager] 循环管理器未设置,无法调用setLoopEnd")})),d.addEventListener("mouseover",(function(){})),d.addEventListener("mouseout",(function(){})),u.appendChild(this.setLoopStartButton),u.appendChild(this.currentPositionDisplay),d.appendChild(this.setLoopEndButton),d.appendChild(this.durationDisplay);var h=document.createElement("div");h.className="tm-loop-toggle-button",h.innerHTML='\n <span class="tm-loop-toggle-label">Loop</span>\n <svg width="12" height="12" style="vertical-align: middle;">\n <circle class="tm-loop-indicator-circle" cx="6" cy="6" r="5" fill="hsl(var(--shadcn-muted-foreground) / 0.5)"></circle>\n </svg>\n ',i.appendChild(h);var p=h;p.addEventListener("mouseover",(function(){})),p.addEventListener("mouseout",(function(){})),p.addEventListener("click",(function(){t.loopManager?t.loopManager.toggleLoop():console.error("[ControlManager] 循环管理器未设置,无法调用toggleLoop")})),this.loopToggleButton=p,o.appendChild(u),o.appendChild(d),r.appendChild(o),r.appendChild(i),this.controlButtonsContainer.appendChild(n),this.controlButtonsContainer.appendChild(r);var f=document.createElement("div");f.className="tm-playback-control-row";var m=document.createElement("div");m.className="tm-left-controls";var v=document.createElement("div");v.className="tm-center-controls";var g=document.createElement("div");return g.className="tm-right-controls",f.appendChild(m),f.appendChild(v),f.appendChild(g),this.muteButton=this.addControlButton(m,"",(function(){t.targetVideo.muted=!t.targetVideo.muted,t.updateMuteButton()})),this.playPauseButton=this.addControlButton(v,"",(function(){t.targetVideo.paused?(t.targetVideo.play(),t.updatePlayPauseButton()):(t.targetVideo.pause(),t.updatePlayPauseButton())})),this.createPlaybackRateSlider(g),this.controlButtonsContainer.appendChild(f),this.updatePlayPauseButton(),this.updateMuteButton(),this.controlButtonsContainer}},{key:"createPlaybackRateSlider",value:function(t){var e=this,n=document.createElement("div");n.className="tm-playback-rate-slider";var r=!1,o=1,i=null,a=document.createElement("div");a.className="tm-slider-container";var s=document.createElement("div");s.className="tm-slider-level";var l=document.createElement("div");l.className="tm-slider-marks";var c=[{pos:Math.round(.4/2.9*100),label:"0.5x"},{pos:Math.round(.9/2.9*100),label:"1.0x"},{pos:Math.round(1.4/2.9*100),label:"1.5x"},{pos:Math.round(1.9/2.9*100),label:"2.0x"},{pos:Math.round(100),label:"3.0x"}];c.forEach((function(t){var e=t.pos,n=(t.label,document.createElement("div"));n.className="tm-slider-mark",n.style.left="".concat(e,"%"),l.appendChild(n)}));var u=document.createElement("div");u.className="tm-slider-text";var d=document.createElement("div");d.className="tm-speed-label",d.textContent="Speed";var h=document.createElement("div");h.className="tm-speed-value",h.textContent="1.0x",u.appendChild(d),u.appendChild(h),a.appendChild(l),a.appendChild(s),a.appendChild(u),n.appendChild(a),t.appendChild(n);var p=function(t){s.style.width="".concat(t,"%");var n=.1+t/100*2.9;n=.1*Math.round(n/.1),(n=Math.max(.1,Math.min(3,n)))!==o&&(o=n,e.targetVideo.playbackRate=n,h.textContent="".concat(n.toFixed(1),"x"),h.classList.remove("tm-speed-value-fast","tm-speed-value-slow","tm-speed-value-normal"),n>1.5?h.classList.add("tm-speed-value-fast"):n<.8?h.classList.add("tm-speed-value-slow"):h.classList.add("tm-speed-value-normal"))},f=function(t){r&&g(t)},m=function(t){r=!0,n.classList.add("dragging"),n.classList.add("tm-playback-slider-dragging"),g(t)},v=function(){r&&(r=!1,n.classList.remove("dragging"),n.classList.remove("tm-playback-slider-dragging"),n.classList.add("tm-playback-slider-default"),i&&(cancelAnimationFrame(i),i=null))},g=function(t){t.preventDefault();var e=t.type.includes("touch")?t.touches[0].clientX:t.clientX,n=a.getBoundingClientRect(),r=n.width;i&&cancelAnimationFrame(i),i=requestAnimationFrame((function(){var t=(e-n.left)/r*100;t=Math.max(0,Math.min(100,t));var o,i=function(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return w(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?w(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,o=function(){};return{s:o,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}(c.map((function(t){return t.pos})));try{for(i.s();!(o=i.n()).done;){var a=o.value;if(Math.abs(t-a)<5){t=a,window.navigator.vibrate&&window.navigator.vibrate(5);break}}}catch(t){i.e(t)}finally{i.f()}p(t)}))};a.addEventListener("mousedown",m,{passive:!1}),a.addEventListener("touchstart",m,{passive:!1}),window.addEventListener("mousemove",f,{passive:!1}),window.addEventListener("touchmove",f,{passive:!1}),window.addEventListener("mouseup",v),window.addEventListener("touchend",v),window.addEventListener("mouseleave",v),n.addEventListener("dblclick",(function(){p(30)})),p(30),this.playbackRateSlider=n,this.updatePlaybackRateSlider=p}},{key:"updatePlayPauseButton",value:function(){this.playPauseButton&&(this.targetVideo.paused?this.playPauseButton.innerHTML='\n <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M18 12L7 5V19L18 12Z" fill="currentColor" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n ':this.playPauseButton.innerHTML='\n <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M10 4H6V20H10V4Z" fill="currentColor" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n <path d="M18 4H14V20H18V4Z" fill="currentColor" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n ')}},{key:"updateMuteButton",value:function(){this.muteButton&&(this.targetVideo.muted?this.muteButton.innerHTML='\n <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M11 5L6 9H2V15H6L11 19V5Z" fill="currentColor" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n <path d="M23 9L17 15" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n <path d="M17 9L23 15" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n ':this.muteButton.innerHTML='\n <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M11 5L6 9H2V15H6L11 19V5Z" fill="currentColor" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n <path d="M15.54 8.46C16.4774 9.39764 17.004 10.6692 17.004 11.995C17.004 13.3208 16.4774 14.5924 15.54 15.53" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n <path d="M18.54 5.46C20.4246 7.34535 21.4681 9.90302 21.4681 12.575C21.4681 15.247 20.4246 17.8047 18.54 19.69" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n ')}},{key:"updateProgressBar",value:function(){if(this.targetVideo&&this.progressBarElement&&this.progressIndicator){var t=this.targetVideo.currentTime,e=this.targetVideo.duration;if(!(isNaN(e)||e<=0)){var n=t/e*100;this.progressIndicator.style.width="".concat(n,"%"),this.updateCurrentTimeDisplay(),this.loopManager&&this.loopManager.loopActive&&null!==this.loopManager.loopStartTime&&null!==this.loopManager.loopEndTime&&t>=this.loopManager.loopEndTime&&(this.targetVideo.currentTime=this.loopManager.loopStartTime)}}}},{key:"updateCurrentTimeDisplay",value:function(){if(this.targetVideo&&this.currentTimeDisplay&&this.totalDurationDisplay){var t=this.targetVideo.currentTime,e=this.targetVideo.duration;if(!isNaN(e)){this.currentTimeDisplay.textContent=this.formatTime(t);var n=e-t;this.totalDurationDisplay.textContent="-".concat(this.formatTime(n))}}}},{key:"addTimeControlButton",value:function(t,e,n){var r=function(t){var e=parseInt(t.replace(/[+-]/g,"")),n=t.includes("m")?"m":"s",r=.5;return"s"===n?r=e<=5?.5:e<=10?.6:.7:"m"===n&&(r=1===e?.8:5===e?.9:1),r}(e),o=document.createElement("button");o.className="tm-time-control-button",o.style.backgroundColor="hsl(var(--shadcn-secondary) / ".concat(r,")");var i=e.includes("-"),a=e.includes("+"),s=e.replace(/[+-]/g,"");return i?o.innerHTML='<div class="tm-time-control-button-inner">'.concat('<svg width="14" height="14" viewBox="0 0 12 24" fill="none" class="tm-rewind-icon">\n <path fill-rule="evenodd" clip-rule="evenodd" d="M3.70711 4.29289C3.31658 3.90237 2.68342 3.90237 2.29289 4.29289L-4.70711 11.2929C-5.09763 11.6834 -5.09763 12.3166 -4.70711 12.7071L2.29289 19.7071C2.68342 20.0976 3.31658 20.0976 3.70711 19.7071C4.09763 19.3166 4.09763 18.6834 3.70711 18.2929L-2.58579 12L3.70711 5.70711C4.09763 5.31658 4.09763 4.68342 3.70711 4.29289Z" fill="currentColor"/>\n </svg>','<span class="tm-time-text-margin-left">').concat(s,"</span></div>"):a?o.innerHTML='<div class="tm-time-control-button-inner"><span class="tm-time-text-margin-right">'.concat(s,"</span>").concat('<svg width="14" height="14" viewBox="0 0 12 24" fill="none" class="tm-forward-icon">\n <path fill-rule="evenodd" clip-rule="evenodd" d="M8.29289 4.29289C8.68342 3.90237 9.31658 3.90237 9.70711 4.29289L16.7071 11.2929C17.0976 11.6834 17.0976 12.3166 16.7071 12.7071L9.70711 19.7071C9.31658 20.0976 8.68342 20.0976 8.29289 19.7071C7.90237 19.3166 7.90237 18.6834 8.29289 18.2929L14.5858 12L8.29289 5.70711C7.90237 5.31658 7.90237 4.68342 8.29289 4.29289Z" fill="currentColor"/>\n </svg>',"</div>"):o.textContent=e,o.addEventListener("click",n),o.addEventListener("mouseover",(function(){o.classList.add("tm-time-control-button-hover"),o.classList.remove("tm-time-control-button-default")})),o.addEventListener("mouseout",(function(){o.classList.add("tm-time-control-button-default"),o.classList.remove("tm-time-control-button-hover","tm-time-control-button-active","tm-time-control-button-after-active")})),o.addEventListener("mousedown",(function(){o.classList.add("tm-time-control-button-active"),o.classList.remove("tm-time-control-button-hover","tm-time-control-button-default","tm-time-control-button-after-active")})),o.addEventListener("mouseup",(function(){o.classList.add("tm-time-control-button-after-active"),o.classList.remove("tm-time-control-button-active","tm-time-control-button-hover","tm-time-control-button-default")})),t.appendChild(o),o}},{key:"seekRelative",value:function(t){if(this.targetVideo){var e=Math.max(0,Math.min(this.targetVideo.duration,this.targetVideo.currentTime+t));this.targetVideo.currentTime=e}}},{key:"formatTime",value:function(t){var e=Math.floor(t/3600),n=Math.floor(t%3600/60),r=Math.floor(t%60);return"".concat(e,":").concat(n.toString().padStart(2,"0"),":").concat(r.toString().padStart(2,"0"))}},{key:"addControlButton",value:function(t,e,n){var r=document.createElement("button");return r.className="tm-control-button",r.textContent=e,r.addEventListener("click",n),r.addEventListener("mouseover",(function(){r.classList.add("tm-control-button-hover"),r.classList.remove("tm-control-button-default")})),r.addEventListener("mouseout",(function(){r.classList.add("tm-control-button-default"),r.classList.remove("tm-control-button-hover")})),t.appendChild(r),r}},{key:"showPauseIndicator",value:function(){var t=this;this.pauseIndicator&&(this.pauseIndicator.parentNode&&this.pauseIndicator.parentNode.removeChild(this.pauseIndicator),this.pauseIndicator=null),this.pauseIndicator=document.createElement("div"),this.pauseIndicator.className="tm-indicator-base tm-pause-indicator",this.pauseIndicator.style.position="absolute",this.pauseIndicator.style.top="50%",this.pauseIndicator.style.left="50%",this.pauseIndicator.style.transform="translate(-50%, -50%)",this.pauseIndicator.style.display="flex",this.pauseIndicator.style.justifyContent="center",this.pauseIndicator.style.alignItems="center",this.pauseIndicator.innerHTML='\n <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M14,6v20c0,1.1-0.9,2-2,2H8c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h4C13.1,4,14,4.9,14,6z M24,4h-4\n c-1.1,0-2,0.9-2,2v20c0,1.1,0.9,2,2,2h4c1.1,0,2-0.9,2-2V6C26,4.9,25.1,4,24,4z" fill="white"/>\n </svg>\n ',this.uiElements.videoWrapper.appendChild(this.pauseIndicator),requestAnimationFrame((function(){t.pauseIndicator.classList.add("visible")})),setTimeout((function(){t.pauseIndicator&&(t.pauseIndicator.classList.remove("visible"),setTimeout((function(){t.pauseIndicator&&t.pauseIndicator.parentNode&&(t.pauseIndicator.parentNode.removeChild(t.pauseIndicator),t.pauseIndicator=null)}),300))}),1e3)}},{key:"showPlaybackRateIndicator",value:function(t){var e=this;this.playbackRateIndicator&&(clearTimeout(this.playbackRateIndicator.hideTimeout),this.playbackRateIndicator.parentNode&&this.playbackRateIndicator.parentNode.removeChild(this.playbackRateIndicator),this.playbackRateIndicator=null),this.playbackRateIndicator=document.createElement("div"),this.playbackRateIndicator.className="tm-indicator-base tm-playback-rate-indicator",this.playbackRateIndicator.style.position="absolute",this.playbackRateIndicator.style.top="20%",this.playbackRateIndicator.style.left="50%",this.playbackRateIndicator.style.transform="translateX(-50%)",this.playbackRateIndicator.textContent="".concat(t.toFixed(1),"x"),t>1.5?this.playbackRateIndicator.style.color="hsl(var(--shadcn-orange))":t<.8&&(this.playbackRateIndicator.style.color="hsl(var(--shadcn-blue))"),this.uiElements.videoWrapper.appendChild(this.playbackRateIndicator),requestAnimationFrame((function(){e.playbackRateIndicator.classList.add("visible")})),this.playbackRateIndicator.hideTimeout=setTimeout((function(){e.playbackRateIndicator&&(e.playbackRateIndicator.classList.remove("visible"),setTimeout((function(){e.playbackRateIndicator&&e.playbackRateIndicator.parentNode&&(e.playbackRateIndicator.parentNode.removeChild(e.playbackRateIndicator),e.playbackRateIndicator=null)}),300))}),1500)}}],e&&k(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();function E(t){return E="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},E(t)}function S(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,L(r.key),r)}}function L(t){var e=function(t){if("object"!=E(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=E(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==E(e)?e:e+""}var P=function(){return t=function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.playerCore=e,this.targetVideo=e.targetVideo,this.uiElements=n,this.container=n.container,this.handle=n.handle,this.isDraggingHandle=!1,this.startX=0,this.startY=0,this.startWidth=0,this.startHeight=0,this.handleMoveHandler=null,this.handleEndHandler=null},e=[{key:"init",value:function(){return this.handle.addEventListener("mousedown",this.startHandleDrag.bind(this)),this.handle.addEventListener("touchstart",this.startHandleDrag.bind(this),{passive:!1}),this}},{key:"updateHandlePosition",value:function(){if(this.uiElements.handleContainer&&this.container){this.container.getBoundingClientRect();var t=this.uiElements.videoWrapper.getBoundingClientRect();this.uiElements.handleContainer.style.top="".concat(t.bottom,"px")}}},{key:"startHandleDrag",value:function(t){this.isDraggingHandle=!0,this.handle.style.cursor="grabbing";var e=t.type.includes("touch");this.startY=e?t.touches[0].clientY:t.clientY,this.startHeight=this.container.offsetHeight;var n=this._handleDragMove.bind(this),r=this._handleDragEnd.bind(this);e?(document.addEventListener("touchmove",n,{passive:!1}),document.addEventListener("touchend",r),document.addEventListener("touchcancel",r)):(document.addEventListener("mousemove",n),document.addEventListener("mouseup",r)),this.handleMoveHandler=n,this.handleEndHandler=r,t.preventDefault()}},{key:"_handleDragMove",value:function(t){if(this.isDraggingHandle){t.preventDefault();var e=(t.type.includes("touch")?t.touches[0].clientY:t.clientY)-this.startY,n=parseFloat(this.container.style.minHeight)||window.innerWidth*(9/16),r=Math.max(n,this.startHeight+e);this.container.style.height=r+"px"}}},{key:"_handleDragEnd",value:function(t){this.isDraggingHandle&&(this.isDraggingHandle=!1,this.handle.style.cursor="grab",document.removeEventListener("touchmove",this.handleMoveHandler),document.removeEventListener("touchend",this.handleEndHandler),document.removeEventListener("touchcancel",this.handleEndHandler),document.removeEventListener("mousemove",this.handleMoveHandler),document.removeEventListener("mouseup",this.handleEndHandler),this.handleMoveHandler=null,this.handleEndHandler=null,t.type.startsWith("touch")&&t.preventDefault())}},{key:"handleMouseDown",value:function(t){0===t.button&&(this.isDraggingHandle=!0,this.startY=t.clientY,this.startHeight=this.uiElements.handleContainer.offsetHeight,this.handleMoveHandler=this.handleMouseMove.bind(this),this.handleEndHandler=this.handleMouseUp.bind(this),document.addEventListener("mousemove",this.handleMoveHandler),document.addEventListener("mouseup",this.handleEndHandler),this.updateHandlePosition())}},{key:"handleMouseMove",value:function(t){if(this.isDraggingHandle){var e=t.clientY-this.startY,n=this.startHeight+e;n<50||n>200||(this.uiElements.handleContainer.style.height="".concat(n,"px"),this.updateHandlePosition())}}},{key:"handleMouseUp",value:function(t){this.isDraggingHandle=!1,document.removeEventListener("mousemove",this.handleMoveHandler),document.removeEventListener("mouseup",this.handleEndHandler),this.updateHandlePosition()}},{key:"handleMouseLeave",value:function(t){this.isDraggingHandle=!1,document.removeEventListener("mousemove",this.handleMoveHandler),document.removeEventListener("mouseup",this.handleEndHandler),this.updateHandlePosition()}}],e&&S(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();function T(t){return T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},T(t)}function M(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function B(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,V(r.key),r)}}function V(t){var e=function(t){if("object"!=T(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=T(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==T(e)?e:e+""}var O=function(){return t=function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.playerCore=e,this.targetVideo=e.targetVideo,this.uiElements=n,this.loopStartTime=null,this.loopEndTime=null,this.loopActive=!1,this.loopStartMarker=null,this.loopEndMarker=null,this.loopRangeElement=null,this.currentPositionDisplay=null,this.durationDisplay=null,this.loopToggleButton=null,this._handleLoopTimeUpdate=this._handleLoopTimeUpdate.bind(this)},e=[{key:"init",value:function(t){return this.loopStartMarker=t.loopStartMarker,this.loopEndMarker=t.loopEndMarker,this.loopRangeElement=t.loopRangeElement,this.currentPositionDisplay=t.currentPositionDisplay,this.durationDisplay=t.durationDisplay,this.loopToggleButton=t.loopToggleButton,this._parseUrlHashParams(),this}},{key:"setState",value:function(t){return console.log("[LoopManager] 状态更新:",Object.keys(t).map((function(e){return"".concat(e,": ").concat(t[e])})).join(", ")),Object.assign(this,t),this._updateUI(),this}},{key:"_parseUrlHashParams",value:function(){var t=this;if(window.location.hash){var e=window.location.hash.substring(1);if(e.includes("-")){var n=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i,a,s=[],l=!0,c=!1;try{if(i=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(s.push(r.value),s.length!==e);l=!0);}catch(t){c=!0,o=t}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw o}}return s}}(t,e)||function(t,e){if(t){if("string"==typeof t)return M(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?M(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(e.split("-"),2),r=n[0],o=n[1],i=this._parseTimeString(r),a=this._parseTimeString(o);if(null!==i&&null!==a){console.log("[LoopManager] 从URL解析循环区间: ".concat(r,"-").concat(o));var s={loopStartTime:i,loopEndTime:a},l=function(){if(t.currentPositionDisplay){t.currentPositionDisplay.textContent=t.formatTimeWithHours(i),t.currentPositionDisplay.classList.add("active");var e=document.querySelector(".tm-start-time-container");e&&e.classList.add("active")}if(t.durationDisplay){t.durationDisplay.textContent=t.formatTimeWithHours(a),t.durationDisplay.classList.add("active");var n=document.querySelector(".tm-end-time-container");n&&n.classList.add("active")}t.targetVideo.currentTime=i,window.location.hostname.includes("missav")?(s.loopActive=!0,console.log("[LoopManager] 在missav网站上设置循环状态")):(s.loopActive=!0,console.log("[LoopManager] 在其他网站上设置循环状态")),t.setState(s),t.updateLoopMarkers(),t.targetVideo.removeEventListener("timeupdate",t._handleLoopTimeUpdate),t.targetVideo.addEventListener("timeupdate",t._handleLoopTimeUpdate),t.targetVideo.paused&&t.targetVideo.play().catch((function(e){console.log("视频自动播放被阻止: ",e),t.targetVideo.muted=!0,t.targetVideo.play().catch((function(t){console.error("即使静音也无法播放: ",t)}))})),t.targetVideo.removeEventListener("loadedmetadata",l)};this.targetVideo.readyState>=1?l():this.targetVideo.addEventListener("loadedmetadata",l)}}else if(e.match(/^\d{2}:\d{2}:\d{2}$/)){var c=this._parseTimeString(e);if(null!==c){console.log("[LoopManager] 从URL解析时间点: ".concat(e));var u=function(){if(t.currentPositionDisplay){t.currentPositionDisplay.textContent=t.formatTimeWithHours(c),t.currentPositionDisplay.classList.add("active");var e=document.querySelector(".tm-start-time-container");e&&e.classList.add("active")}t.targetVideo.currentTime=c,t.setState({loopStartTime:c}),t.updateLoopMarkers(),t.targetVideo.removeEventListener("loadedmetadata",u)};this.targetVideo.readyState>=1?u():this.targetVideo.addEventListener("loadedmetadata",u)}}}}},{key:"_parseTimeString",value:function(t){if(!t)return null;var e=t.match(/^(\d{2}):(\d{2}):(\d{2})$/);return e?3600*parseInt(e[1],10)+60*parseInt(e[2],10)+parseInt(e[3],10):null}},{key:"_updateUrlHash",value:function(){var t="";if(null!==this.loopStartTime&&(t=this.formatTimeWithHours(this.loopStartTime),null!==this.loopEndTime&&(t+="-".concat(this.formatTimeWithHours(this.loopEndTime)))),t){var e=window.location.pathname+window.location.search+"#"+t;window.history.replaceState(null,"",e),console.log("[LoopManager] 更新URL: ".concat(e))}}},{key:"_clickCopyStartTime",value:function(){document.querySelector("input#clip-start-time + a").click()}},{key:"_clickCopyEndTime",value:function(){document.querySelector("input#clip-end-time + a").click()}},{key:"_toggleLooping",value:function(){document.querySelector(".sm\\:ml-6 button").click()}},{key:"setLoopEnd",value:function(){if(this.targetVideo){var t=this.targetVideo.currentTime;if(window.location.hostname.includes("missav"))this._clickCopyEndTime(),this.setState({loopEndTime:t});else{if(null!==this.loopStartTime&&t<=this.loopStartTime)return void console.log("[LoopManager] 循环结束点必须在开始点之后");this.setState({loopEndTime:t}),console.log("[LoopManager] 设置循环结束点: ".concat(this.formatTimeWithHours(t))),this._updateUrlHash()}window.navigator.vibrate&&window.navigator.vibrate(10)}}},{key:"setLoopStart",value:function(){if(this.targetVideo){var t=this.targetVideo.currentTime;if(window.location.hostname.includes("missav"))this._clickCopyStartTime(),this.setState({loopStartTime:t});else{if(null!==this.loopEndTime&&t>=this.loopEndTime)return void console.log("[LoopManager] 循环开始点必须在结束点之前");this.setState({loopStartTime:t}),console.log("[LoopManager] 设置循环开始点: ".concat(this.formatTimeWithHours(t))),this._updateUrlHash()}window.navigator.vibrate&&window.navigator.vibrate(10)}}},{key:"toggleLoop",value:function(){if(window.location.hostname.includes("missav"))this._toggleLooping();else{if(null===this.loopStartTime||null===this.loopEndTime)return void console.log("请先使用 A 和 B 按钮记录循环的开始和结束时间。");this.loopActive?this.disableLoop():this.enableLoop()}}},{key:"enableLoop",value:function(){var t=this;this.targetVideo&&null!==this.loopStartTime&&null!==this.loopEndTime?(console.log("[LoopManager] 启用循环播放: ".concat(this.formatTimeWithHours(this.loopStartTime)," - ").concat(this.formatTimeWithHours(this.loopEndTime))),this.setState({loopActive:!0}),this.targetVideo.removeEventListener("timeupdate",this._handleLoopTimeUpdate),this.targetVideo.addEventListener("timeupdate",this._handleLoopTimeUpdate),(this.targetVideo.currentTime<this.loopStartTime||this.targetVideo.currentTime>this.loopEndTime)&&(this.targetVideo.currentTime=this.loopStartTime),this.targetVideo.paused&&this.targetVideo.play().catch((function(e){console.log("视频自动播放被阻止: ",e),t.targetVideo.muted=!0,t.targetVideo.play().catch((function(t){console.error("即使静音也无法播放: ",t)}))})),window.navigator.vibrate&&window.navigator.vibrate([10,30,10])):console.log("[LoopManager] 无法启用循环: 循环点未设置")}},{key:"disableLoop",value:function(){this.loopActive&&(console.log("[LoopManager] 禁用循环播放"),this.targetVideo.removeEventListener("timeupdate",this._handleLoopTimeUpdate),this.setState({loopActive:!1}))}},{key:"_handleLoopTimeUpdate",value:function(){if(this.loopActive&&null!==this.loopStartTime&&null!==this.loopEndTime){var t=this.targetVideo.currentTime;(t>=this.loopEndTime||t<this.loopStartTime)&&(this.targetVideo.currentTime=this.loopStartTime)}}},{key:"_updateUI",value:function(){console.log("[LoopManager] 更新UI元素 - 循环状态:",this.loopActive?"激活":"未激活","开始点:",null!==this.loopStartTime?this.formatTimeWithHours(this.loopStartTime):"未设置","结束点:",null!==this.loopEndTime?this.formatTimeWithHours(this.loopEndTime):"未设置"),this.updateLoopTimeDisplay(),this.updateLoopMarkers(),this._updateLoopButtonStyle()}},{key:"_updateLoopButtonStyle",value:function(){if(this.loopToggleButton)if(this.loopActive){this.loopToggleButton.classList.add("active");var t=this.loopToggleButton.querySelector(".tm-loop-indicator-circle");t&&t.setAttribute("fill","hsl(var(--shadcn-red))");var e=this.loopToggleButton.querySelector(".tm-loop-toggle-label");e&&e.classList.add("active")}else{this.loopToggleButton.classList.remove("active");var n=this.loopToggleButton.querySelector(".tm-loop-indicator-circle");n&&n.setAttribute("fill","hsl(var(--shadcn-muted-foreground) / 0.5)");var r=this.loopToggleButton.querySelector(".tm-loop-toggle-label");r&&r.classList.remove("active")}}},{key:"_updateStartTimeContainerStyle",value:function(){var t=document.querySelector(".tm-start-time-container");if(t){if(null!==this.loopStartTime){this.currentPositionDisplay.textContent=this.formatTimeWithHours(this.loopStartTime),this.currentPositionDisplay.classList.add("active"),t.classList.add("active");var e=t.querySelector(".tm-loop-start-button");e&&e.classList.add("active")}else{this.currentPositionDisplay.textContent="00:00:00",this.currentPositionDisplay.classList.remove("active"),this.currentPositionDisplay.style.color="",t.classList.remove("active"),t.style.backgroundColor="",t.style.borderColor="";var n=t.querySelector(".tm-loop-start-button");n&&n.classList.remove("active")}t.offsetHeight}}},{key:"_updateEndTimeContainerStyle",value:function(){var t=document.querySelector(".tm-end-time-container");if(t){if(null!==this.loopEndTime){this.durationDisplay.textContent=this.formatTimeWithHours(this.loopEndTime),this.durationDisplay.classList.add("active"),t.classList.add("active");var e=t.querySelector(".tm-loop-end-button");e&&e.classList.add("active")}else{this.durationDisplay.textContent="00:00:00",this.durationDisplay.classList.remove("active"),this.durationDisplay.style.color="",t.classList.remove("active"),t.style.backgroundColor="",t.style.borderColor="";var n=t.querySelector(".tm-loop-end-button");n&&n.classList.remove("active")}t.offsetHeight}}},{key:"updateLoopTimeDisplay",value:function(){this._updateStartTimeContainerStyle(),this._updateEndTimeContainerStyle()}},{key:"updateLoopMarkers",value:function(){var t=this;if(this.targetVideo&&this.loopStartMarker&&this.loopEndMarker){var e=document.querySelector(".tm-progress-bar");if(e){var n=e.offsetWidth,r=this.targetVideo.duration;if(!(r<=0)&&n){var o=function(e,n){var o=n?t.loopStartMarker:t.loopEndMarker;if(null!==e&&!isNaN(e)&&e>=0&&e<=r){var i=e/r*100;o.style.left="".concat(i,"%"),o.style.display="block",t.loopActive?o.classList.add("active"):o.classList.remove("active"),o.setAttribute("title",n?"循环起点: ".concat(t.formatTimeWithHours(e)):"循环终点: ".concat(t.formatTimeWithHours(e))),o.setAttribute("data-time",t.formatTimeWithHours(e))}else o.style.display="none"};if(o(this.loopStartTime,!0),o(this.loopEndTime,!1),this.loopActive&&null!==this.loopStartTime&&null!==this.loopEndTime){if(this.loopStartMarker.classList.add("active"),this.loopEndMarker.classList.add("active"),this.loopRangeElement){var i=this.loopStartTime/r*100,a=this.loopEndTime/r*100-i;a>0?(this.loopRangeElement.style.left="".concat(i,"%"),this.loopRangeElement.style.width="".concat(a,"%"),this.loopRangeElement.style.display="block",this.loopRangeElement.classList.add("active")):this.loopRangeElement.style.display="none"}}else this.loopStartMarker.classList.remove("active"),this.loopEndMarker.classList.remove("active"),this.loopRangeElement&&(this.loopRangeElement.classList.remove("active"),this.loopRangeElement.style.display="none")}}}}},{key:"formatTimeWithHours",value:function(t){if(isNaN(t)||t<0)return"00:00:00";var e=Math.floor(t),n=Math.floor(e/3600),r=Math.floor(e%3600/60),o=e%60;return"".concat(n.toString().padStart(2,"0"),":").concat(r.toString().padStart(2,"0"),":").concat(o.toString().padStart(2,"0"))}}],e&&B(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();function D(t){return D="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},D(t)}function j(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,I(r.key),r)}}function I(t){var e=function(t){if("object"!=D(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=D(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==D(e)?e:e+""}var H=function(){return t=function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.playerCore=e,this.targetVideo=e.targetVideo,this.uiElements=n,this.progressBarElement=null,this.progressIndicator=null,this.currentTimeDisplay=null,this.totalDurationDisplay=null,this.timeIndicator=null,this.isDraggingProgress=!1,this.progressHandleMoveHandler=null,this.progressHandleUpHandler=null,this.lastDragX=0,this.isTouchDevice="ontouchstart"in window},e=[{key:"init",value:function(t){return this.progressBarElement=t.progressBarElement,this.progressIndicator=t.progressIndicator,this.currentTimeDisplay=t.currentTimeDisplay,this.totalDurationDisplay=t.totalDurationDisplay,this.timeIndicator=t.timeIndicator,this.progressBarContainer=this.progressBarElement.parentElement,this.progressBarElement.addEventListener("click",this.handleProgressClick.bind(this)),this.progressBarContainer.addEventListener("mousedown",this.startProgressDrag.bind(this)),this.progressBarContainer.addEventListener("touchstart",this.startProgressDrag.bind(this),{passive:!1}),this.targetVideo.addEventListener("timeupdate",this.updateProgressBar.bind(this)),this}},{key:"updateProgressBar",value:function(){if(this.targetVideo&&this.progressBarElement&&this.progressIndicator){var t=this.targetVideo.currentTime,e=this.targetVideo.duration;if(!(isNaN(e)||e<=0)){var n=t/e*100;this.progressIndicator.style.width="".concat(n,"%"),this.updateCurrentTimeDisplay()}}}},{key:"updateCurrentTimeDisplay",value:function(){if(this.targetVideo&&this.currentTimeDisplay&&this.totalDurationDisplay){var t=this.targetVideo.currentTime,e=this.targetVideo.duration;if(!isNaN(e)){this.currentTimeDisplay.textContent=this.formatTime(t);var n=e-t;this.totalDurationDisplay.textContent="-".concat(this.formatTime(n))}}}},{key:"formatTime",value:function(t){if(isNaN(t)||t<0)return"00:00:00";var e=Math.floor(t),n=Math.floor(e/3600),r=Math.floor(e%3600/60),o=e%60;return"".concat(n.toString().padStart(2,"0"),":").concat(r.toString().padStart(2,"0"),":").concat(o.toString().padStart(2,"0"))}},{key:"handleProgressClick",value:function(t){if(!this.isDraggingProgress){var e=this.progressBarElement.getBoundingClientRect(),n=(t.clientX-e.left)/e.width,r=this.targetVideo.duration;if(!isNaN(r)){var o=r*n;this.targetVideo.currentTime=o,this.updateProgressBar()}}}},{key:"seekRelative",value:function(t){if(this.targetVideo){var e=Math.max(0,Math.min(this.targetVideo.duration,this.targetVideo.currentTime+t));this.targetVideo.currentTime=e}}},{key:"startProgressDrag",value:function(t){t.preventDefault(),t.stopPropagation(),this.isDraggingProgress=!0,this.lastDragX=t.type.includes("touch")?t.touches[0].clientX:t.clientX,this.progressBarElement.classList.add("tm-progress-bar-expanded"),this.progressBarElement.classList.remove("tm-progress-bar-normal"),this.progressBarElement.classList.add("tm-dragging"),this.timeIndicator&&(this.timeIndicator.style.display="block",this.timeIndicator.style.opacity="1",this.updateTimeIndicator(t));var e=this.handleProgressMove.bind(this),n=this.handleProgressUp.bind(this);this.removeProgressEventListeners(),t.type.includes("touch")?(document.addEventListener("touchmove",e,{passive:!1}),document.addEventListener("touchend",n,{passive:!1}),document.addEventListener("touchcancel",n,{passive:!1})):(document.addEventListener("mousemove",e),document.addEventListener("mouseup",n),document.addEventListener("mouseleave",n)),this.progressHandleMoveHandler=e,this.progressHandleUpHandler=n;var r=this.progressBarElement.getBoundingClientRect(),o=((t.type.includes("touch")?t.touches[0].clientX:t.clientX)-r.left)/r.width;o=Math.max(0,Math.min(1,o));var i=this.targetVideo.duration;if(!isNaN(i)){var a=i*o;this.targetVideo.currentTime=a,this.progressIndicator.style.width="".concat(100*o,"%"),this.updateCurrentTimeDisplay()}}},{key:"handleProgressMove",value:function(t){if(this.isDraggingProgress){t.preventDefault();var e=t.type.includes("touch")?t.touches[0].clientX:t.clientX;this.updateTimeIndicator(t);var n=this.progressBarElement.getBoundingClientRect();if(!(n.width<=0)){var r=(e-n.left)/n.width;r=Math.max(0,Math.min(1,r));var o=this.targetVideo.duration;if(!isNaN(o)){var i=o*r;this.progressIndicator.style.width="".concat(100*r,"%"),this.targetVideo.currentTime=i,this.currentTimeDisplay.textContent=this.formatTime(i);var a=o-i;this.totalDurationDisplay.textContent="-".concat(this.formatTime(a)),this.lastDragX=e}}}}},{key:"handleProgressUp",value:function(t){if(this.isDraggingProgress){var e=this.progressBarElement.getBoundingClientRect(),n=((t.type.includes("touch")?t.changedTouches&&t.changedTouches[0]?t.changedTouches[0].clientX:this.lastDragX:t.clientX||this.lastDragX)-e.left)/e.width;n=Math.max(0,Math.min(1,n));var r=this.targetVideo.duration;isNaN(r)||(this.targetVideo.currentTime=r*n),this.timeIndicator&&(this.timeIndicator.style.opacity="0"),this.progressBarElement.classList.remove("tm-dragging"),this.progressBarElement.classList.contains("tm-progress-bar-hovered")||(this.progressBarElement.classList.add("tm-progress-bar-normal"),this.progressBarElement.classList.remove("tm-progress-bar-expanded")),this.isDraggingProgress=!1,this.lastDragX=0,this.removeProgressEventListeners()}}},{key:"removeProgressEventListeners",value:function(){this.progressHandleMoveHandler&&(document.removeEventListener("mousemove",this.progressHandleMoveHandler),document.removeEventListener("touchmove",this.progressHandleMoveHandler)),this.progressHandleUpHandler&&(document.removeEventListener("mouseup",this.progressHandleUpHandler),document.removeEventListener("touchend",this.progressHandleUpHandler),document.removeEventListener("touchcancel",this.progressHandleUpHandler),document.removeEventListener("mouseleave",this.progressHandleUpHandler)),this.progressHandleMoveHandler=null,this.progressHandleUpHandler=null}},{key:"updateTimeIndicator",value:function(t){if(this.timeIndicator&&this.targetVideo){var e=t.type.includes("touch")?t.touches[0].clientX:t.clientX,n=(t.type.includes("touch")?t.touches[0].clientY:t.clientY,this.uiElements.videoWrapper.getBoundingClientRect()),r=this.progressBarElement.getBoundingClientRect(),o=Math.max(n.left+10,Math.min(n.right-10,e)),i=r.top-20;this.timeIndicator.style.left="".concat(o,"px"),this.timeIndicator.style.top="".concat(i,"px");var a=(e-r.left)/r.width,s=Math.max(0,Math.min(1,a)),l=this.targetVideo.duration;if(!isNaN(l)){var c=l*s;this.timeIndicator.textContent="".concat(this.formatTime(c)," / ").concat(this.formatTime(l))}}}}],e&&j(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();function _(t){return _="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_(t)}function R(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,N(r.key),r)}}function N(t){var e=function(t){if("object"!=_(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=_(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==_(e)?e:e+""}var A=function(){return t=function t(e,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.playerCore=e,this.targetVideo=e.targetVideo,this.uiElements=n,this.managers=r,this.resizeObserver=null,this.clickLock=!1,this.clickLockTimeout=null},e=[{key:"init",value:function(){var t=this;return this.handleVideoWrapperClickBound=this.handleVideoWrapperClick.bind(this),this.uiElements.videoWrapper.addEventListener("click",this.handleVideoWrapperClickBound),this.handleCloseButtonClickBound=this.handleCloseButtonClick.bind(this),this.uiElements.closeBtn.addEventListener("click",this.handleCloseButtonClickBound),this.handleWindowResizeBound=this.handleWindowResize.bind(this),window.addEventListener("resize",this.handleWindowResizeBound),this.handleContainerResizeBound=this.handleContainerResize.bind(this),this.resizeObserver=new ResizeObserver(this.handleContainerResizeBound),this.resizeObserver.observe(this.uiElements.container),this.initVideoEventListeners(),this.handleSettingsButtonClickBound=this.handleSettingsButtonClick.bind(this),this.uiElements.settingsBtn.addEventListener("click",this.handleSettingsButtonClickBound),this.handleOverlayTouchMoveBound=function(e){t.managers.uiManager&&t.managers.uiManager.isLandscape&&(t.managers.uiManager.showControls(),t.managers.uiManager.autoHideControls())},this.uiElements.overlay.addEventListener("touchmove",this.handleOverlayTouchMoveBound,{passive:!0}),this}},{key:"initVideoEventListeners",value:function(){var t=this;this.handleMetadataLoadedBound=function(){t.managers.progressManager&&t.managers.progressManager.updateProgressBar(),t.managers.loopManager&&(t.managers.loopManager.updateLoopTimeDisplay(),t.managers.loopManager.updateLoopMarkers()),t.managers.dragManager&&t.managers.dragManager.updateHandlePosition(),t.managers.uiManager&&t.managers.uiManager.updateContainerMinHeight(),t.managers.swipeManager&&t.managers.swipeManager.updateSize()},this.targetVideo.addEventListener("loadedmetadata",this.handleMetadataLoadedBound),this.handleCanPlayBound=function(){t.managers.uiManager&&t.managers.uiManager.updateContainerMinHeight(),t.managers.swipeManager&&t.managers.swipeManager.updateSize()},this.targetVideo.addEventListener("canplay",this.handleCanPlayBound),this.handleVideoResizeBound=function(){t.managers.uiManager&&t.managers.uiManager.updateContainerMinHeight(),t.managers.swipeManager&&t.managers.swipeManager.updateSize()},this.targetVideo.addEventListener("resize",this.handleVideoResizeBound),this.handlePlayBound=function(){t.managers.controlManager&&t.managers.controlManager.updatePlayPauseButton()},this.targetVideo.addEventListener("play",this.handlePlayBound),this.handlePauseBound=function(){t.managers.controlManager&&(t.managers.controlManager.updatePlayPauseButton(),t.managers.controlManager.showPauseIndicator())},this.targetVideo.addEventListener("pause",this.handlePauseBound)}},{key:"handleVideoWrapperClick",value:function(t){var e=this;if(console.log("[EventManager] 视频包装器点击事件触发"),t.target===this.uiElements.videoWrapper||t.target===this.targetVideo){if(this.clickLock)return void console.log("[EventManager] 点击锁定中,忽略此次点击");if(this.managers.swipeManager&&"function"==typeof this.managers.swipeManager.wasRecentlyDragging&&this.managers.swipeManager.wasRecentlyDragging())return void console.log("[EventManager] 忽略拖动后的点击");this.clickLock=!0,this.clickLockTimeout&&clearTimeout(this.clickLockTimeout),this.clickLockTimeout=setTimeout((function(){e.clickLock=!1,e.clickLockTimeout=null}),500),console.log("[EventManager] 触发视频点击事件,当前状态:",this.targetVideo.paused?"已暂停":"正在播放"),this.targetVideo.paused?this.targetVideo.play():(this.targetVideo.pause(),this.managers.controlManager&&this.managers.controlManager.showPauseIndicator()),this.managers.controlManager&&this.managers.controlManager.updatePlayPauseButton()}}},{key:"handleCloseButtonClick",value:function(){console.log("[EventManager] 处理关闭按钮点击"),this.cleanup(),this.playerCore.close(this.uiElements.overlay,this.uiElements.container,this.uiElements.playerContainer)}},{key:"handleSettingsButtonClick",value:function(){this.managers.settingsManager&&this.managers.settingsManager.toggleSettingsPanel()}},{key:"handleWindowResize",value:function(){this.managers.uiManager&&this.managers.uiManager.updateContainerMinHeight(),this.managers.dragManager&&this.managers.dragManager.updateHandlePosition(),this.managers.swipeManager&&this.managers.swipeManager.updateSize()}},{key:"handleContainerResize",value:function(){this.managers.dragManager&&this.managers.dragManager.updateHandlePosition(),this.managers.swipeManager&&this.managers.swipeManager.updateSize()}},{key:"cleanup",value:function(){console.log("[EventManager] 清理所有事件监听器"),window.removeEventListener("resize",this.handleWindowResizeBound),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),this.clickLockTimeout&&(clearTimeout(this.clickLockTimeout),this.clickLockTimeout=null),this.uiElements.videoWrapper&&this.uiElements.videoWrapper.removeEventListener("click",this.handleVideoWrapperClickBound),this.uiElements.closeBtn&&this.uiElements.closeBtn.removeEventListener("click",this.handleCloseButtonClickBound),this.uiElements.settingsBtn&&this.uiElements.settingsBtn.removeEventListener("click",this.handleSettingsButtonClickBound),this.targetVideo&&(this.targetVideo.removeEventListener("loadedmetadata",this.handleMetadataLoadedBound),this.targetVideo.removeEventListener("canplay",this.handleCanPlayBound),this.targetVideo.removeEventListener("resize",this.handleVideoResizeBound),this.targetVideo.removeEventListener("play",this.handlePlayBound),this.targetVideo.removeEventListener("pause",this.handlePauseBound)),this.uiElements.overlay&&this.uiElements.overlay.removeEventListener("touchmove",this.handleOverlayTouchMoveBound)}}],e&&R(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();function z(t){return z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},z(t)}function W(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,U(r.key),r)}}function U(t){var e=function(t){if("object"!=z(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=z(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==z(e)?e:e+""}var q=function(){return t=function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.playerCore=e,this.targetVideo=e.targetVideo,this.uiElements=n,this.settingsPanel=n.settingsPanel,this.overlayClickHandler=null,this.settings={showSeekControlRow:!0,showLoopControlRow:!0,showPlaybackControlRow:!0,showProgressBar:!0}},e=[{key:"init",value:function(){return this.loadSettings(),this.createSettingsPanel(),this}},{key:"createSettingsPanel",value:function(){var t=this,e=document.createElement("div");e.className="tm-settings-options",e.style.display="flex",e.style.flexDirection="column",e.style.gap="12px";var n=this.createSettingOption("显示-进度条","showProgressBar",this.settings.showProgressBar,(function(e){t.settings.showProgressBar=e,t.saveSettings(),t.updateControlRowsVisibility()})),r=this.createSettingOption("显示-进度跳转","showSeekControlRow",this.settings.showSeekControlRow,(function(e){t.settings.showSeekControlRow=e,t.saveSettings(),t.updateControlRowsVisibility()})),o=this.createSettingOption("显示-循环控制","showLoopControlRow",this.settings.showLoopControlRow,(function(e){t.settings.showLoopControlRow=e,t.saveSettings(),t.updateControlRowsVisibility()})),i=this.createSettingOption("显示-播放倍速","showPlaybackControlRow",this.settings.showPlaybackControlRow,(function(e){t.settings.showPlaybackControlRow=e,t.saveSettings(),t.updateControlRowsVisibility()}));e.appendChild(n),e.appendChild(r),e.appendChild(o),e.appendChild(i),this.settingsPanel.appendChild(e)}},{key:"createSettingOption",value:function(t,e,n,r){var o=document.createElement("div");o.className="tm-settings-option",o.id="tm-setting-".concat(e);var i=document.createElement("label");i.className="tm-settings-label",i.textContent=t,i.style.cursor="pointer",i.style.flex="1";var a=document.createElement("div");a.className="tm-toggle-switch";var s=document.createElement("input");s.type="checkbox",s.checked=n,s.style.position="absolute",s.style.left="-9999px";var l=document.createElement("span");l.className=n?"tm-toggle-slider checked":"tm-toggle-slider",o.tabIndex=0,a.appendChild(s),a.appendChild(l);var c=function(t){t.preventDefault(),t.stopPropagation(),s.checked=!s.checked,s.checked?l.className="tm-toggle-slider checked":l.className="tm-toggle-slider","function"==typeof r&&r(s.checked)};return o.addEventListener("click",c),o.addEventListener("keydown",(function(t){"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),c(t))})),o.appendChild(i),o.appendChild(a),o}},{key:"toggleSettingsPanel",value:function(){var t=this;this.settingsPanel.classList.contains("active")?this.closeSettingsPanel():(this.settingsPanel.style.display="block",setTimeout((function(){t.settingsPanel.classList.add("active")}),10),this.overlayClickHandler=function(e){t.settingsPanel.contains(e.target)||e.target===t.uiElements.settingsBtn||t.closeSettingsPanel()},setTimeout((function(){t.uiElements.overlay&&t.uiElements.overlay.addEventListener("click",t.overlayClickHandler)}),50))}},{key:"closeSettingsPanel",value:function(){var t=this;this.settingsPanel.classList.remove("active"),this.uiElements.overlay&&this.overlayClickHandler&&(this.uiElements.overlay.removeEventListener("click",this.overlayClickHandler),this.overlayClickHandler=null),setTimeout((function(){t.settingsPanel.style.display="none"}),300)}},{key:"loadSettings",value:function(){try{var t=function(t,e){try{if("function"==typeof GM_getValue)return GM_getValue(t,e);var n=localStorage.getItem("missNoAD_".concat(t));return null!==n?JSON.parse(n):e}catch(n){return console.debug("获取".concat(t,"设置失败:"),n),e}};this.settings.showProgressBar=t("showProgressBar",!0),this.settings.showSeekControlRow=t("showSeekControlRow",!0),this.settings.showLoopControlRow=t("showLoopControlRow",!0),this.settings.showPlaybackControlRow=t("showPlaybackControlRow",!0)}catch(t){console.error("加载设置时出错:",t)}}},{key:"saveSettings",value:function(){try{var t=function(t,e){try{return"function"==typeof GM_setValue?(GM_setValue(t,e),!0):(localStorage.setItem("missNoAD_".concat(t),JSON.stringify(e)),!0)}catch(e){return console.debug("保存".concat(t,"设置失败:"),e),!1}};t("showProgressBar",this.settings.showProgressBar),t("showSeekControlRow",this.settings.showSeekControlRow),t("showLoopControlRow",this.settings.showLoopControlRow),t("showPlaybackControlRow",this.settings.showPlaybackControlRow)}catch(t){console.error("保存设置时出错:",t)}}},{key:"updateControlRowsVisibility",value:function(){var t=document.querySelector(".tm-control-buttons");if(t){var e=t.querySelector(".tm-seek-control-row"),n=t.querySelector(".tm-loop-control-row"),r=t.querySelector(".tm-playback-control-row"),o=t.querySelector(".tm-progress-row");o&&(o.style.display=this.settings.showProgressBar?"flex":"none"),e&&(e.style.display=this.settings.showSeekControlRow?"flex":"none"),n&&(n.style.display=this.settings.showLoopControlRow?"flex":"none"),r&&(r.style.display=this.settings.showPlaybackControlRow?"flex":"none")}}},{key:"updateSetting",value:function(t,e){this.settings.hasOwnProperty(t)&&(this.settings[t]=e,this.saveSettings(),t.startsWith("show")&&t.endsWith("Row")&&this.updateControlRowsVisibility())}}],e&&W(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();function F(t){return F="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},F(t)}function X(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,Y(r.key),r)}}function Y(t){var e=function(t){if("object"!=F(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=F(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==F(e)?e:e+""}var G=function(){return t=function t(e,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.video=e,this.container=n,this.handle=r,this.offset=0,this.maxOffset=0,this.isDragging=!1,this.isHandleDragging=!1,this.startX=0,this.startOffset=0,this.lastSnapPosition=null,this.wasDragging=!1,this.dragEndTimestamp=0,this.dragDistance=0,this.minDragDistance=10,this.videoWidth=0,this.videoHeight=0,this.containerWidth=0,this.containerHeight=0,this.videoScale=1,this.velocityTracker={positions:[],lastTimestamp:0,currentVelocity:0},this.handleVelocityTracker={positions:[],lastTimestamp:0,currentVelocity:0},this.animation={active:!1,rafId:null,targetOffset:0,startTime:0,duration:0},this._pointerDownHandler=this._handlePointerDown.bind(this),this._pointerMoveHandler=this._handlePointerMove.bind(this),this._pointerUpHandler=this._handlePointerUp.bind(this),this._handlePointerDownHandler=this._handleHandlePointerDown.bind(this),this._handlePointerMoveHandler=this._handleHandlePointerMove.bind(this),this._handlePointerUpHandler=this._handleHandlePointerUp.bind(this),this._init()},e=[{key:"_init",value:function(){var t=this;console.log("[VideoSwipeManager] 初始化管理器"),this.video.style.willChange="transform",this.video.style.transition="transform 0.2s cubic-bezier(0.215, 0.61, 0.355, 1)",this.video.addEventListener("pointerdown",this._pointerDownHandler),this.handle&&(this.handle.style.willChange="transform, left",this.handle.style.transition="left 0.2s cubic-bezier(0.215, 0.61, 0.355, 1), width 0.2s ease",this.handle.addEventListener("pointerdown",this._handlePointerDownHandler)),this._updateConstraints(),this.video.addEventListener("loadedmetadata",(function(){console.log("[VideoSwipeManager] 视频元数据加载完成,更新约束"),t._updateConstraints()})),this.video.addEventListener("canplay",(function(){console.log("[VideoSwipeManager] 视频可播放,更新约束"),t._updateConstraints()}))}},{key:"_updateVideoDimensions",value:function(){if(this.videoWidth=this.video.videoWidth||this.video.naturalWidth||0,this.videoHeight=this.video.videoHeight||this.video.naturalHeight||0,this.containerWidth=this.container.offsetWidth,this.containerHeight=this.container.offsetHeight,this.videoWidth<=0||this.videoHeight<=0||this.containerWidth<=0||this.containerHeight<=0)return this.videoScale=1,this.maxOffset=0,!1;var t=this.video.getBoundingClientRect(),e=t.width,n=t.height;this.videoScale=n/this.videoHeight;var r=Math.max(0,e-this.containerWidth);return this.maxOffset=r/2,!0}},{key:"_updateConstraints",value:function(){return!this._updateVideoDimensions()||this.maxOffset<=0?(this._applyOffset(0,!1),this._updateHandleState(!1),!1):(this.offset=Math.max(-this.maxOffset,Math.min(this.offset,this.maxOffset)),this._applyOffset(this.offset,!1),this._updateHandleState(!0),!0)}},{key:"_applyOffset",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.offset=Math.max(-this.maxOffset,Math.min(t,this.maxOffset)),this.video.style.transition=e?"transform 0.2s cubic-bezier(0.215, 0.61, 0.355, 1)":"none",this.video.style.transform="translateX(".concat(this.offset,"px)"),this._updateHandlePosition(),this}},{key:"_updateHandleState",value:function(t){if(this.handle){if(this._updateHandleWidth(),t){this.handle.style.cursor="grab",this.video.style.cursor="grab";var e=this.handle.parentElement;e&&(e.style.cursor="grab")}else this.handle.style.cursor="default",this.video.style.cursor="default";this._updateHandlePosition()}}},{key:"_updateHandleWidth",value:function(){this.handle&&(this.handle.style.width="".concat(30,"%"))}},{key:"_updateHandlePosition",value:function(){if(this.handle){var t=this.handle.parentElement;if(t){if(this.maxOffset<=0)return this.handle.style.left="50%",void(this.handle.style.transform="translateX(-50%)");var e=t.offsetWidth,n=e-this.handle.offsetWidth,r=(1-(this.offset+this.maxOffset)/(2*this.maxOffset))*n/e*100;this.handle.style.left="".concat(r,"%"),this.handle.style.transform=""}}}},{key:"_trackVelocity",value:function(t){var e=Date.now(),n=this.velocityTracker;for(n.positions.push({x:t,time:e});n.positions.length>1&&e-n.positions[0].time>100;)n.positions.shift();if(n.positions.length>1){var r=n.positions[0],o=n.positions[n.positions.length-1],i=o.time-r.time;i>0&&(n.currentVelocity=(o.x-r.x)/i)}n.lastTimestamp=e}},{key:"_applyInertia",value:function(){if(!(Math.abs(this.velocityTracker.currentVelocity)<.1)){var t=this.velocityTracker.currentVelocity,e=t*t/.004*Math.sign(t),n=this.offset+e;n=Math.max(-this.maxOffset,Math.min(n,this.maxOffset));var r=Math.min(.8*Math.abs(t/.002),400);this._animateTo(n,r)}}},{key:"_animateTo",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:300;this.animation.active&&cancelAnimationFrame(this.animation.rafId),this.animation.active=!0,this.animation.targetOffset=t,this.animation.startTime=Date.now(),this.animation.duration=n;var r=function(){var o=Date.now()-e.animation.startTime;if(o>=n)return e._applyOffset(t,!1),void(e.animation.active=!1);var i=1-Math.pow(1-o/n,3),a=e.offset+(t-e.offset)*i;e._applyOffset(a,!1),e.animation.rafId=requestAnimationFrame(r)};this.animation.rafId=requestAnimationFrame(r)}},{key:"_handlePointerDown",value:function(t){this.maxOffset<=0||t.isPrimary&&(this.animation.active&&(cancelAnimationFrame(this.animation.rafId),this.animation.active=!1),this.isDragging=!0,this.startX=t.clientX,this.startOffset=this.offset,this.dragDistance=0,this.velocityTracker.positions=[],this.velocityTracker.lastTimestamp=Date.now(),this.velocityTracker.currentVelocity=0,this._trackVelocity(t.clientX),this.video.style.cursor="grabbing",this.video.style.transition="none",this.video.setPointerCapture&&this.video.setPointerCapture(t.pointerId),this.video.addEventListener("pointermove",this._pointerMoveHandler),this.video.addEventListener("pointerup",this._pointerUpHandler),this.video.addEventListener("pointercancel",this._pointerUpHandler),window.navigator.vibrate&&window.navigator.vibrate(5),t.preventDefault())}},{key:"_handlePointerMove",value:function(t){if(this.isDragging&&t.isPrimary){var e=t.clientX-this.startX;this.dragDistance=Math.max(this.dragDistance,Math.abs(e));var n=Math.max(-this.maxOffset,Math.min(this.startOffset+e,this.maxOffset));this._applyOffset(n,!1),this._trackVelocity(t.clientX),t.preventDefault()}}},{key:"_handlePointerUp",value:function(t){this.isDragging&&t.isPrimary&&(this.isDragging=!1,this.dragDistance>this.minDragDistance?(this.wasDragging=!0,this.dragEndTimestamp=Date.now()):this.wasDragging=!1,this.video.releasePointerCapture&&this.video.releasePointerCapture(t.pointerId),this.video.removeEventListener("pointermove",this._pointerMoveHandler),this.video.removeEventListener("pointerup",this._pointerUpHandler),this.video.removeEventListener("pointercancel",this._pointerUpHandler),this.video.style.cursor="grab",this._applyInertia(),t.preventDefault())}},{key:"_handleHandlePointerDown",value:function(t){if(!(this.maxOffset<=0)&&t.isPrimary){this.animation.active&&(cancelAnimationFrame(this.animation.rafId),this.animation.active=!1),this.isHandleDragging=!0,this.startX=t.clientX,this.dragDistance=0,this.startOffset=this.offset;var e=this.handle.parentElement,n=e?e.offsetWidth:0;if(n>0){var r=this.handle.getBoundingClientRect();this.startHandleLeft=r.left-e.getBoundingClientRect().left,this.startHandleLeftPercent=this.startHandleLeft/n*100}else this.startHandleLeft=0,this.startHandleLeftPercent=0;this.handle.style.cursor="grabbing",this.handle.style.transition="none",this.handle.setPointerCapture&&this.handle.setPointerCapture(t.pointerId),this.handle.addEventListener("pointermove",this._handlePointerMoveHandler),this.handle.addEventListener("pointerup",this._handlePointerUpHandler),this.handle.addEventListener("pointercancel",this._handlePointerUpHandler),window.navigator.vibrate&&window.navigator.vibrate(5),t.preventDefault()}}},{key:"_handleHandlePointerMove",value:function(t){if(this.isHandleDragging&&t.isPrimary){var e=this.handle.parentElement;if(e){var n=e.offsetWidth,r=this.handle.offsetWidth;if(!(n<=0||r<=0)){var o=t.clientX-this.startX;this.dragDistance=Math.max(this.dragDistance,Math.abs(o));var i=this.startHandleLeft+o,a=n-r;i=Math.max(0,Math.min(i,a)),this._trackHandleVelocity(i);for(var s=!1,l=0,c=[0,a/2,a];l<c.length;l++){var u=c[l];if(Math.abs(i-u)<15){i=u,s=!0,!window.navigator.vibrate||this.lastSnapPosition&&this.lastSnapPosition===u||(window.navigator.vibrate(15),this.lastSnapPosition=u);break}}s||(this.lastSnapPosition=null);var d=i/n*100;this.handle.style.left="".concat(d,"%");var h=2*(1-(a>0?i/a:0))*this.maxOffset-this.maxOffset;this.video.style.transform="translateX(".concat(h,"px)"),this.video.style.transition="none",this.offset=h,t.preventDefault()}}}}},{key:"_handleHandlePointerUp",value:function(t){this.isHandleDragging&&t.isPrimary&&(this.isHandleDragging=!1,this.dragDistance>this.minDragDistance?(this.wasDragging=!0,this.dragEndTimestamp=Date.now()):this.wasDragging=!1,this.lastSnapPosition=null,this.handle.releasePointerCapture&&this.handle.releasePointerCapture(t.pointerId),this.handle.removeEventListener("pointermove",this._handlePointerMoveHandler),this.handle.removeEventListener("pointerup",this._handlePointerUpHandler),this.handle.removeEventListener("pointercancel",this._handlePointerUpHandler),this.handle.style.cursor="grab",this._applyHandleInertia(),t.preventDefault())}},{key:"_trackHandleVelocity",value:function(t){var e=Date.now(),n=this.handleVelocityTracker;for(n.positions.push({position:t,time:e});n.positions.length>1&&e-n.positions[0].time>100;)n.positions.shift();if(n.positions.length>1){var r=n.positions[0],o=n.positions[n.positions.length-1],i=o.time-r.time;i>0&&(n.currentVelocity=(o.position-r.position)/i)}n.lastTimestamp=e}},{key:"_applyHandleInertia",value:function(){if(!(Math.abs(this.handleVelocityTracker.currentVelocity)<.1)){var t=this.handle.parentElement;if(t){for(var e=t.offsetWidth,n=e-this.handle.offsetWidth,r=this.handle.getBoundingClientRect(),o=t.getBoundingClientRect(),i=r.left-o.left,a=this.handleVelocityTracker.currentVelocity,s=i+a*a/.004*Math.sign(a),l=[0,n/2,n],c=s=Math.max(0,Math.min(s,n)),u=Number.MAX_VALUE,d=0,h=l;d<h.length;d++){var p=h[d],f=Math.abs(s-p);f<30&&f<u&&(c=p,u=f)}u<Number.MAX_VALUE&&(s=c);var m=s/e*100,v=2*(1-(n>0?s/n:0))*this.maxOffset-this.maxOffset;this.handle.style.transition="left 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94)",this.video.style.transition="transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94)",this.handle.style.left="".concat(m,"%"),this.video.style.transform="translateX(".concat(v,"px)"),this.offset=v,u<Number.MAX_VALUE&&window.navigator.vibrate&&window.navigator.vibrate(10),this.handleVelocityTracker.positions=[],this.handleVelocityTracker.currentVelocity=0}}}},{key:"setOffset",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this._applyOffset(t,e)}},{key:"reset",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._applyOffset(0,t),this.wasDragging=!1,this}},{key:"updateSize",value:function(){if(console.log("[VideoSwipeManager] 更新尺寸和约束"),this.video&&this.container){var t=this.video.getBoundingClientRect(),e=this.container.getBoundingClientRect();console.log("[VideoSwipeManager] 视频尺寸: ".concat(t.width,"x").concat(t.height,", 容器尺寸: ").concat(e.width,"x").concat(e.height));var n=this._updateConstraints();console.log("[VideoSwipeManager] 约束更新结果: ".concat(n,", 最大偏移量: ").concat(this.maxOffset))}else console.error("[VideoSwipeManager] 视频或容器元素不存在");return this}},{key:"destroy",value:function(){this.video&&(this.video.removeEventListener("pointerdown",this._pointerDownHandler),this.video.style.transform="",this.video.style.willChange="",this.video.style.transition="",this.video.style.cursor=""),this.handle&&(this.handle.removeEventListener("pointerdown",this._handlePointerDownHandler),this.handle.style.willChange="",this.handle.style.transition="",this.handle.style.left="",this.handle.style.width="",this.handle.style.cursor=""),this.animation.active&&(cancelAnimationFrame(this.animation.rafId),this.animation.active=!1),this.wasDragging=!1}},{key:"wasRecentlyDragging",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:150;return!(!this.wasDragging||Date.now()-this.dragEndTimestamp>t&&(this.wasDragging=!1,1))}}],e&&X(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();function Q(t){return Q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Q(t)}function Z(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,$(r.key),r)}}function $(t){var e=function(t){if("object"!=Q(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=Q(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Q(e)?e:e+""}var J=function(){return t=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),console.log("[CustomVideoPlayer] 初始化..."),this.playerCore=new f(e),this.callingButton=e.callingButton||null,this.managers={},this.initialized=!1},(e=[{key:"init",value:function(){var t=this;if(!this.initialized){if(this.playerCore||(this.playerCore=new f({callingButton:this.callingButton})),this.playerCore.init(),!this.playerCore.targetVideo)return console.error("[CustomVideoPlayer] 核心初始化失败: 未找到视频元素"),void(this.callingButton&&(this.callingButton.style.display="flex"));var e=new y(this.playerCore),n=e.createUI();this.managers.uiManager=e;var r=new q(this.playerCore,n);r.init(),this.managers.settingsManager=r;var o=new C(this.playerCore,n);o.createProgressControls(),o.createControlButtonsContainer(),this.managers.controlManager=o,this.playerCore.controlManager=o;var i=new H(this.playerCore,n);i.init({progressBarElement:o.progressBarElement,progressIndicator:o.progressIndicator,currentTimeDisplay:o.currentTimeDisplay,totalDurationDisplay:o.totalDurationDisplay,timeIndicator:o.timeIndicator}),this.managers.progressManager=i;var a=new O(this.playerCore,n);a.init({loopStartMarker:o.loopStartMarker,loopEndMarker:o.loopEndMarker,loopRangeElement:o.loopRangeElement,currentPositionDisplay:o.currentPositionDisplay,durationDisplay:o.durationDisplay,loopToggleButton:o.loopToggleButton}),this.managers.loopManager=a,o.setLoopManager(a);var l=new P(this.playerCore,n);l.init(),this.managers.dragManager=l,this.playerCore.targetVideo&&n.videoWrapper&&n.handle&&(console.log("[CustomVideoPlayer] 初始化SwipeManager..."),this.swipeManager=new G(this.playerCore.targetVideo,n.videoWrapper,n.handle),this.managers.swipeManager=this.swipeManager);var c=new A(this.playerCore,n,this.managers);c.init(),this.managers.eventManager=c,e.assembleDOM(),r.updateControlRowsVisibility(),this.playerCore.restoreVideoState(),i.updateProgressBar(),i.updateCurrentTimeDisplay(),s.updateSafariThemeColor("#000000",!0),setTimeout((function(){t.swipeManager&&t.swipeManager.updateSize(),l.updateHandlePosition()}),100),setTimeout((function(){console.log("[CustomVideoPlayer] 执行URL参数相关UI二次检查"),a&&(a._updateUI(),a.updateLoopTimeDisplay(),a.updateLoopMarkers()),i&&(i.updateProgressBar(),i.updateCurrentTimeDisplay())}),500),this.initialized=!0,console.log("[CustomVideoPlayer] 初始化完成")}}},{key:"close",value:function(){for(var t in this.playerCore.close(this.managers.uiManager.overlay,this.managers.uiManager.container,this.managers.uiManager.playerContainer),this.managers.eventManager&&this.managers.eventManager.cleanup(),this.swipeManager&&(this.swipeManager.destroy(),this.swipeManager=null),this.managers)this.managers[t]&&"function"==typeof this.managers[t].cleanup&&this.managers[t].cleanup(),this.managers[t]=null;this.initialized=!1,this.managers={},this.playerCore=null}}])&&Z(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();function K(t){return K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},K(t)}function tt(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,et(r.key),r)}}function et(t){var e=function(t){if("object"!=K(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=K(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==K(e)?e:e+""}var nt=function(){return t=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.button=null,this.videoPlayer=null,this.resizeTimeout=null,this.playerState=e.playerState||null,this.videoCheckInterval=null,this.mutationObserver=null},e=[{key:"init",value:function(){this.cleanupExistingButtons(),s.findVideoElement()?(this.createButton(),window.addEventListener("resize",this.handleResize.bind(this)),window.matchMedia("(orientation: portrait)").addEventListener("change",this.handleResize.bind(this)),this.setupMutationObserver(),console.log("[FloatingButton] 已创建浮动按钮,页面中存在视频元素")):(console.log("[FloatingButton] 页面中未检测到视频元素,不显示浮动按钮"),this.startVideoElementCheck(),this.setupMutationObserver())}},{key:"setupMutationObserver",value:function(){this.mutationObserver&&this.mutationObserver.disconnect(),this.mutationObserver=new MutationObserver(this.handleDomMutations.bind(this)),this.mutationObserver.observe(document.body,{childList:!0,subtree:!0})}},{key:"handleDomMutations",value:function(){var t=this;this.mutationTimeout&&clearTimeout(this.mutationTimeout),this.mutationTimeout=setTimeout((function(){var e=s.findVideoElement();e&&!t.button?(t.createButton(),window.addEventListener("resize",t.handleResize.bind(t)),window.matchMedia("(orientation: portrait)").addEventListener("change",t.handleResize.bind(t)),console.log("[FloatingButton] DOM变化检测到视频元素,已创建浮动按钮")):!e&&t.button?(t.button.style.display="none",console.log("[FloatingButton] DOM变化检测到视频元素已移除,已隐藏浮动按钮")):e&&t.button&&"none"===t.button.style.display&&(t.button.style.display="flex",console.log("[FloatingButton] DOM变化检测到视频元素已添加,已显示浮动按钮"))}),300)}},{key:"startVideoElementCheck",value:function(){var t=this;this.videoCheckInterval&&clearInterval(this.videoCheckInterval),this.videoCheckInterval=setInterval((function(){s.findVideoElement()&&(t.button?"none"===t.button.style.display&&(t.button.style.display="flex",console.log("[FloatingButton] 定时检测到视频元素,已显示浮动按钮")):(t.createButton(),window.addEventListener("resize",t.handleResize.bind(t)),window.matchMedia("(orientation: portrait)").addEventListener("change",t.handleResize.bind(t)),console.log("[FloatingButton] 定时检测到视频元素,已创建浮动按钮")),clearInterval(t.videoCheckInterval),t.videoCheckInterval=null)}),2e3)}},{key:"cleanupExistingButtons",value:function(){var t=document.querySelectorAll(".tm-floating-button");t.length>0&&(console.log("[FloatingButton] 清理 ".concat(t.length," 个现有浮动按钮")),t.forEach((function(t){t&&t.parentNode&&t.parentNode.removeChild(t)})))}},{key:"handleResize",value:function(){var t=this;this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout((function(){s.findVideoElement()?(t.button.style.display="flex",t.updateButtonPosition()):t.button&&(t.button.style.display="none")}),200)}},{key:"createButton",value:function(){var t=this;if(this.button=s.createElementWithStyle("button","tm-floating-button"),this.button.innerHTML='\n <svg width="30" height="22" viewBox="0 0 68 48" fill="none">\n <path class="ytp-large-play-button-bg" d="M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z" fill="rgb(254, 98, 142)"></path>\n <path d="M 45,24 27,14 27,34" fill="#fff"></path>\n </svg>\n ',this.button.addEventListener("mousedown",(function(e){var n=document.createElement("span"),r=t.button.getBoundingClientRect(),o=Math.max(r.width,r.height),i=e.clientX-r.left-o/2,a=e.clientY-r.top-o/2;n.style.cssText="\n position: absolute;\n width: ".concat(o,"px;\n height: ").concat(o,"px;\n left: ").concat(i,"px;\n top: ").concat(a,"px;\n background-color: rgba(255, 255, 255, 0.3);\n border-radius: 50%;\n transform: scale(0);\n pointer-events: none;\n animation: ripple-effect 0.6s ease-out forwards;\n "),t.button.appendChild(n),setTimeout((function(){n.remove()}),600)})),this.button.addEventListener("click",(function(){t.handleButtonClick()})),this.button.style.display="flex",document.body.appendChild(this.button),!document.getElementById("tm-ripple-style")){var e=document.createElement("style");e.id="tm-ripple-style",e.textContent="\n @keyframes ripple-effect {\n 0% {\n transform: scale(0);\n opacity: 1;\n }\n 80% {\n transform: scale(1.5);\n opacity: 0.5;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n ",document.head.appendChild(e)}return this.updateButtonPosition(),this.button}},{key:"updateButtonPosition",value:function(){if(this.button){var t=s.getSafeAreaInsets();s.isPortrait()?(this.button.style.bottom="".concat(Math.max(20,t.bottom),"px"),this.button.style.right="20px",this.button.style.left="auto"):(this.button.style.bottom="".concat(Math.max(20,t.bottom+10),"px"),this.button.style.right="".concat(Math.max(20,t.right+10),"px"),this.button.style.left="auto"),this.button.style.zIndex="9980"}}},{key:"handleButtonClick",value:function(){this.button.style.display="none",this.videoPlayer=new J({playerState:this.playerState,callingButton:this.button}),this.videoPlayer.init()}},{key:"remove",value:function(){this.button&&this.button.parentNode&&this.button.parentNode.removeChild(this.button),window.removeEventListener("resize",this.handleResize),this.videoCheckInterval&&(clearInterval(this.videoCheckInterval),this.videoCheckInterval=null),this.mutationObserver&&(this.mutationObserver.disconnect(),this.mutationObserver=null),this.button=null}}],e&&tt(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();function rt(t){return rt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},rt(t)}function ot(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,it(r.key),r)}}function it(t){var e=function(t){if("object"!=rt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=rt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==rt(e)?e:e+""}var at=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.settings={showSeekControlRow:!0,showLoopControlRow:!0,showPlaybackControlRow:!0},this._setupStorageMethods()},e=[{key:"_setupStorageMethods",value:function(){this.hasGMAPI="function"==typeof GM_getValue&&"function"==typeof GM_setValue}},{key:"getValue",value:function(t,e){try{if(this.hasGMAPI)return GM_getValue(t,e);var n=localStorage.getItem("missNoAD_".concat(t));return null!==n?JSON.parse(n):e}catch(t){return console.debug("获取存储值失败:",t),e}}},{key:"setValue",value:function(t,e){try{return this.hasGMAPI?(GM_setValue(t,e),!0):(localStorage.setItem("missNoAD_".concat(t),JSON.stringify(e)),!0)}catch(t){return console.debug("存储值失败:",t),!1}}},{key:"loadSettings",value:function(){try{this.settings.showSeekControlRow=this.getValue("showSeekControlRow",!0),this.settings.showLoopControlRow=this.getValue("showLoopControlRow",!0),this.settings.showPlaybackControlRow=this.getValue("showPlaybackControlRow",!0)}catch(t){console.error("[PlayerState] 加载设置失败:",t)}}},{key:"saveSettings",value:function(){try{this.setValue("showSeekControlRow",this.settings.showSeekControlRow),this.setValue("showLoopControlRow",this.settings.showLoopControlRow),this.setValue("showPlaybackControlRow",this.settings.showPlaybackControlRow)}catch(t){console.error("[PlayerState] 保存设置失败:",t)}}},{key:"updateSetting",value:function(t,e){t in this.settings&&(this.settings[t]=e,this.saveSettings())}}],e&&ot(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();function st(t){return st="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},st(t)}function lt(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,ct(r.key),r)}}function ct(t){var e=function(t){if("object"!=st(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=st(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==st(e)?e:e+""}var ut=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)},e=[{key:"toast",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3e3,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"rgba(0, 0, 0, 0.8)",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#fff",o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"top",i=document.createElement("div");i.innerText=t,i.style.cssText="\n position: fixed;\n z-index: 100000;\n left: 50%;\n transform: translateX(-50%);\n padding: 10px 15px;\n border-radius: 4px;\n color: ".concat(r,";\n background: ").concat(n,";\n font-size: 14px;\n max-width: 80%;\n text-align: center;\n word-break: break-all;\n "),"top"===o?i.style.top="10%":"bottom"===o?i.style.bottom="10%":"center"===o&&(i.style.top="50%",i.style.transform="translate(-50%, -50%)"),document.body.appendChild(i),setTimeout((function(){i.style.opacity="0",i.style.transition="opacity 0.5s",setTimeout((function(){document.body.removeChild(i)}),500)}),e)}},{key:"throttle",value:function(t,e){var n=0;return function(){var r=Date.now();if(r-n>=e){n=r;for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];return t.apply(this,i)}}}},{key:"waitForElement",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e4,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:100;return new Promise((function(r,o){var i=document.querySelector(t);if(i)return r(i);var a=Date.now(),s=setInterval((function(){var n=document.querySelector(t);if(n)return clearInterval(s),r(n);Date.now()-a>e&&(clearInterval(s),o(new Error("等待元素 ".concat(t," 超时"))))}),n)}))}},{key:"getValue",value:function(t,e){try{var n=localStorage.getItem("autologin_".concat(t));if(null!==n)try{return JSON.parse(n)}catch(t){return n}return e}catch(t){return console.error("获取存储值失败:",t),e}}},{key:"setValue",value:function(t,e){try{var n="object"===st(e)?JSON.stringify(e):e;localStorage.setItem("autologin_".concat(t),n)}catch(t){console.error("设置存储值失败:",t)}}}],null&<(t.prototype,null),e&<(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();function dt(t){return dt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},dt(t)}function ht(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,pt(r.key),r)}}function pt(t){var e=function(t){if("object"!=dt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=dt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==dt(e)?e:e+""}var ft,mt,vt,gt=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)},e=[{key:"userLang",get:function(){return navigator.languages&&navigator.languages[0]||navigator.language||"en"}},{key:"translate",value:function(t){var e=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"")||this.userLang;return(this.strings[e]||this.strings.en)[t]||this.strings.en[t]}}],null&&ht(t.prototype,null),e&&ht(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();function yt(t){return yt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},yt(t)}function bt(){bt=function(){return e};var t,e={},n=Object.prototype,r=n.hasOwnProperty,o=Object.defineProperty||function(t,e,n){t[e]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function c(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,n){return t[e]=n}}function u(t,e,n,r){var i=e&&e.prototype instanceof g?e:g,a=Object.create(i.prototype),s=new B(r||[]);return o(a,"_invoke",{value:L(t,n,s)}),a}function d(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=u;var h="suspendedStart",p="suspendedYield",f="executing",m="completed",v={};function g(){}function y(){}function b(){}var w={};c(w,a,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(V([])));x&&x!==n&&r.call(x,a)&&(w=x);var C=b.prototype=g.prototype=Object.create(w);function E(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function S(t,e){function n(o,i,a,s){var l=d(t[o],t,i);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==yt(u)&&r.call(u,"__await")?e.resolve(u.__await).then((function(t){n("next",t,a,s)}),(function(t){n("throw",t,a,s)})):e.resolve(u).then((function(t){c.value=t,a(c)}),(function(t){return n("throw",t,a,s)}))}s(l.arg)}var i;o(this,"_invoke",{value:function(t,r){function o(){return new e((function(e,o){n(t,r,e,o)}))}return i=i?i.then(o,o):o()}})}function L(e,n,r){var o=h;return function(i,a){if(o===f)throw Error("Generator is already running");if(o===m){if("throw"===i)throw a;return{value:t,done:!0}}for(r.method=i,r.arg=a;;){var s=r.delegate;if(s){var l=P(s,r);if(l){if(l===v)continue;return l}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===h)throw o=m,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=f;var c=d(e,n,r);if("normal"===c.type){if(o=r.done?m:p,c.arg===v)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(o=m,r.method="throw",r.arg=c.arg)}}}function P(e,n){var r=n.method,o=e.iterator[r];if(o===t)return n.delegate=null,"throw"===r&&e.iterator.return&&(n.method="return",n.arg=t,P(e,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var i=d(o,e.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,v;var a=i.arg;return a?a.done?(n[e.resultName]=a.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function T(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function M(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function B(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(T,this),this.reset(!0)}function V(e){if(e||""===e){var n=e[a];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function n(){for(;++o<e.length;)if(r.call(e,o))return n.value=e[o],n.done=!1,n;return n.value=t,n.done=!0,n};return i.next=i}}throw new TypeError(yt(e)+" is not iterable")}return y.prototype=b,o(C,"constructor",{value:b,configurable:!0}),o(b,"constructor",{value:y,configurable:!0}),y.displayName=c(b,l,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===y||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,c(t,l,"GeneratorFunction")),t.prototype=Object.create(C),t},e.awrap=function(t){return{__await:t}},E(S.prototype),c(S.prototype,s,(function(){return this})),e.AsyncIterator=S,e.async=function(t,n,r,o,i){void 0===i&&(i=Promise);var a=new S(u(t,n,r,o),i);return e.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},E(C),c(C,l,"Generator"),c(C,a,(function(){return this})),c(C,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var r in e)n.push(r);return n.reverse(),function t(){for(;n.length;){var r=n.pop();if(r in e)return t.value=r,t.done=!1,t}return t.done=!0,t}},e.values=V,B.prototype={constructor:B,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(M),!e)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function o(r,o){return s.type="throw",s.arg=e,n.next=r,o&&(n.method="next",n.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var l=r.call(a,"catchLoc"),c=r.call(a,"finallyLoc");if(l&&c){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(l){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!c)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,v):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),M(n),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;M(n)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:V(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),v}},e}function wt(t,e,n,r,o,i,a){try{var s=t[i](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(r,o)}function kt(t){return function(){var e=this,n=arguments;return new Promise((function(r,o){var i=t.apply(e,n);function a(t){wt(i,r,o,a,s,"next",t)}function s(t){wt(i,r,o,a,s,"throw",t)}a(void 0)}))}}function xt(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,Ct(r.key),r)}}function Ct(t){var e=function(t){if("object"!=yt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=yt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==yt(e)?e:e+""}ft=gt,vt={en:{accountNull:"Error: Email or password is empty.",loginSuccess:"Login successful, refreshing the page.",networkFailed:"Status code error.",loginFailed:"Login failed, incorrect email or password. Check console for error details.",autoLogin:"Auto Login"},"zh-CN":{accountNull:"邮箱或密码为空",loginSuccess:"登录成功,即将刷新页面。",networkFailed:"状态码错误",loginFailed:"登录失败,邮箱或密码错误,可以在控制台查看错误信息。",autoLogin:"自动登录"},"zh-TW":{accountNull:"郵箱或密碼為空",loginSuccess:"登錄成功,即將刷新頁面。",networkFailed:"狀態碼錯誤",loginFailed:"登錄失敗,郵箱或密碼錯誤,可以在控制台查看錯誤信息。",autoLogin:"自動登錄"},ja:{accountNull:"エラー:メールアドレスまたはパスワードが空です。",loginSuccess:"ログイン成功、ページを更新します。",networkFailed:"ステータスコードエラー",loginFailed:"ログインに失敗しました。メールアドレスまたはパスワードが間違っています。エラーの詳細はコンソールで確認できます。",autoLogin:"自動ログイン"},vi:{accountNull:"Lỗi: Email hoặc mật khẩu trống.",loginSuccess:"Đăng nhập thành công, đang làm mới trang.",networkFailed:"Lỗi mã trạng thái.",loginFailed:"Đăng nhập không thành công, email hoặc mật khẩu không chính xác. Xem chi tiết lỗi trên bảng điều khiển.",autoLogin:"Đăng nhập tự động"}},(mt=pt(mt="strings"))in ft?Object.defineProperty(ft,mt,{value:vt,enumerable:!0,configurable:!0,writable:!0}):ft[mt]=vt;var Et=function(){return function(t,e){return e&&xt(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.domains=["missav.ws","missav.ai","missav.com","thisav.com"]}),[{key:"isSupportedSite",value:function(){var t=window.location.hostname;return this.domains.some((function(e){return t.includes(e)}))}},{key:"login",value:(r=kt(bt().mark((function t(e,n){var r,o,i,a,s;return bt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e&&n){t.next=3;break}return ut.toast(gt.translate("accountNull"),2e3,"#FF0000","#ffffff","top"),t.abrupt("return",!1);case 3:return t.prev=3,t.next=6,fetch("https://missav.ws/cn/api/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e,password:n,remember:!0})});case 6:if((o=t.sent).ok){t.next=14;break}return t.next=10,o.text();case 10:throw i=t.sent,console.error("登录错误:",{status:o.status,statusText:o.statusText,responseText:i}),ut.toast("登录失败: ".concat(i),2e3,"#FF0000","#ffffff","top"),new Error(gt.translate("networkFailed"));case 14:if(null===(r=o.headers.get("Content-Type"))||void 0===r||!r.includes("application/json")){t.next=20;break}return t.next=17,o.json();case 17:a=t.sent,t.next=26;break;case 20:return t.next=22,o.text();case 22:throw s=t.sent,console.error(gt.translate("loginFailed"),{status:o.status,statusText:o.statusText,responseText:s}),ut.toast(gt.translate("loginFailed"),2e3,"#FF0000","#ffffff","top"),new Error(gt.translate("loginFailed"));case 26:return console.log("登录成功:",a),ut.toast(gt.translate("loginSuccess"),2e3,"rgb(18, 187, 2)","#ffffff","top"),setTimeout((function(){location.reload()}),1e3),t.abrupt("return",!0);case 32:return t.prev=32,t.t0=t.catch(3),ut.toast("错误发生: ".concat(t.t0.message),2e3,"#FF0000","#ffffff","top"),t.abrupt("return",!1);case 36:case"end":return t.stop()}}),t,null,[[3,32]])}))),function(t,e){return r.apply(this,arguments)})},{key:"checkLoginStatus",value:(n=kt(bt().mark((function t(){var e;return bt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.checkLoginByAPI();case 3:if(null===(e=t.sent)){t.next=6;break}return t.abrupt("return",e);case 6:return t.abrupt("return",this.checkLoginByDOM());case 9:return t.prev=9,t.t0=t.catch(0),console.error("检查登录状态时出错:",t.t0),t.abrupt("return",!1);case 13:case"end":return t.stop()}}),t,this,[[0,9]])}))),function(){return n.apply(this,arguments)})},{key:"checkLoginByAPI",value:(e=kt(bt().mark((function t(){var e,n;return bt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=4,fetch("https://missav.ws/api/actresses/1016525/view",{method:"GET",credentials:"include"});case 4:if((e=t.sent).ok){t.next=7;break}return t.abrupt("return",null);case 7:return t.next=9,e.json();case 9:return n=t.sent,t.abrupt("return",null!==n.user);case 13:return t.prev=13,t.t0=t.catch(0),console.debug("API登录状态检查出错:",t.t0.message),t.abrupt("return",null);case 17:case"end":return t.stop()}}),t,null,[[0,13]])}))),function(){return e.apply(this,arguments)})},{key:"checkLoginByDOM",value:function(){try{var t=document.querySelector("button[x-on\\:click=\"currentPage = 'login'\"]"),e=document.querySelector(".relative.ml-3 img.h-8.w-8.rounded-full"),n=document.querySelector('[x-data="{userDropdownOpen: false}"]');return!t||e||n}catch(t){return console.debug("DOM检测登录状态时出错:",t.message),!1}}},{key:"addAutoLoginOption",value:(t=kt(bt().mark((function t(e){var n,r,o,i,a,s;return bt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,ut.waitForElement("form[x-show=\"currentPage === 'login'\"] .relative.flex.items-start.justify-between");case 3:n=t.sent,(r=document.createElement("div")).className="flex",r.innerHTML='\n <div class="flex items-center h-5">\n <input id="auto_login" type="checkbox" class="focus:ring-primary h-4 w-4 text-primary border-gray-300 rounded __text_mode_custom_bg__">\n </div>\n <div class="ml-3 text-sm">\n <label for="auto_login" class="font-medium text-nord4">'.concat(gt.translate("autoLogin"),"</label>\n </div>\n "),(o=n.querySelector(".flex")).parentNode.insertBefore(r,o.nextSibling),i=ut.getValue("autoLogin",!0),document.getElementById("auto_login").checked=i,document.getElementById("auto_login").addEventListener("change",(function(){var t=document.getElementById("auto_login").checked;ut.setValue("autoLogin",t),e&&e({autoLogin:t})})),(a=document.querySelector("form[x-show=\"currentPage === 'login'\"]"))&&(s=a.querySelector('button[type="submit"]'))&&s.addEventListener("click",(function(){setTimeout((function(){var t=document.getElementById("login_email"),n=document.getElementById("login_password"),r=document.getElementById("auto_login");if(t&&n&&r&&r.checked){var o=t.value,i=n.value;ut.setValue("userEmail",o),ut.setValue("userPassword",i),e&&e({email:o,password:i,autoLogin:!0})}}),100)})),t.next=19;break;case 16:t.prev=16,t.t0=t.catch(0),console.error("添加自动登录选项时出错:",t.t0);case 19:case"end":return t.stop()}}),t,null,[[0,16]])}))),function(e){return t.apply(this,arguments)})}]);var t,e,n,r}();function St(t){return St="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},St(t)}function Lt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function Pt(){Pt=function(){return e};var t,e={},n=Object.prototype,r=n.hasOwnProperty,o=Object.defineProperty||function(t,e,n){t[e]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function c(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,n){return t[e]=n}}function u(t,e,n,r){var i=e&&e.prototype instanceof g?e:g,a=Object.create(i.prototype),s=new B(r||[]);return o(a,"_invoke",{value:L(t,n,s)}),a}function d(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=u;var h="suspendedStart",p="suspendedYield",f="executing",m="completed",v={};function g(){}function y(){}function b(){}var w={};c(w,a,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(V([])));x&&x!==n&&r.call(x,a)&&(w=x);var C=b.prototype=g.prototype=Object.create(w);function E(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function S(t,e){function n(o,i,a,s){var l=d(t[o],t,i);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==St(u)&&r.call(u,"__await")?e.resolve(u.__await).then((function(t){n("next",t,a,s)}),(function(t){n("throw",t,a,s)})):e.resolve(u).then((function(t){c.value=t,a(c)}),(function(t){return n("throw",t,a,s)}))}s(l.arg)}var i;o(this,"_invoke",{value:function(t,r){function o(){return new e((function(e,o){n(t,r,e,o)}))}return i=i?i.then(o,o):o()}})}function L(e,n,r){var o=h;return function(i,a){if(o===f)throw Error("Generator is already running");if(o===m){if("throw"===i)throw a;return{value:t,done:!0}}for(r.method=i,r.arg=a;;){var s=r.delegate;if(s){var l=P(s,r);if(l){if(l===v)continue;return l}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===h)throw o=m,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=f;var c=d(e,n,r);if("normal"===c.type){if(o=r.done?m:p,c.arg===v)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(o=m,r.method="throw",r.arg=c.arg)}}}function P(e,n){var r=n.method,o=e.iterator[r];if(o===t)return n.delegate=null,"throw"===r&&e.iterator.return&&(n.method="return",n.arg=t,P(e,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var i=d(o,e.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,v;var a=i.arg;return a?a.done?(n[e.resultName]=a.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function T(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function M(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function B(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(T,this),this.reset(!0)}function V(e){if(e||""===e){var n=e[a];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function n(){for(;++o<e.length;)if(r.call(e,o))return n.value=e[o],n.done=!1,n;return n.value=t,n.done=!0,n};return i.next=i}}throw new TypeError(St(e)+" is not iterable")}return y.prototype=b,o(C,"constructor",{value:b,configurable:!0}),o(b,"constructor",{value:y,configurable:!0}),y.displayName=c(b,l,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===y||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,c(t,l,"GeneratorFunction")),t.prototype=Object.create(C),t},e.awrap=function(t){return{__await:t}},E(S.prototype),c(S.prototype,s,(function(){return this})),e.AsyncIterator=S,e.async=function(t,n,r,o,i){void 0===i&&(i=Promise);var a=new S(u(t,n,r,o),i);return e.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},E(C),c(C,l,"Generator"),c(C,a,(function(){return this})),c(C,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var r in e)n.push(r);return n.reverse(),function t(){for(;n.length;){var r=n.pop();if(r in e)return t.value=r,t.done=!1,t}return t.done=!0,t}},e.values=V,B.prototype={constructor:B,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(M),!e)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function o(r,o){return s.type="throw",s.arg=e,n.next=r,o&&(n.method="next",n.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var l=r.call(a,"catchLoc"),c=r.call(a,"finallyLoc");if(l&&c){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(l){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!c)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,v):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),M(n),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;M(n)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:V(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),v}},e}function Tt(t,e,n,r,o,i,a){try{var s=t[i](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(r,o)}function Mt(t){return function(){var e=this,n=arguments;return new Promise((function(r,o){var i=t.apply(e,n);function a(t){Tt(i,r,o,a,s,"next",t)}function s(t){Tt(i,r,o,a,s,"throw",t)}a(void 0)}))}}function Bt(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,Vt(r.key),r)}}function Vt(t){var e=function(t){if("object"!=St(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=St(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==St(e)?e:e+""}var Ot=function(){return function(t,e){return e&&Bt(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.userEmail="",this.userPassword="",this.autoLogin=!0,this.providers=[new Et],this.activeProvider=null}),[{key:"init",value:(n=Mt(Pt().mark((function t(){return Pt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.loadLoginInfo(),this.activeProvider=this.getMatchingProvider(),this.activeProvider){t.next=5;break}return console.debug("没有找到匹配的登录提供者"),t.abrupt("return");case 5:return t.next=7,this.activeProvider.addAutoLoginOption(this.handleLoginInfoChange.bind(this));case 7:return t.next=9,this.checkLoginAndAutoLogin();case 9:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})},{key:"handleLoginInfoChange",value:function(t){void 0!==t.email&&(this.userEmail=t.email,ut.setValue("userEmail",t.email)),void 0!==t.password&&(this.userPassword=t.password,ut.setValue("userPassword",t.password)),void 0!==t.autoLogin&&(this.autoLogin=t.autoLogin,ut.setValue("autoLogin",t.autoLogin))}},{key:"loadLoginInfo",value:function(){this.userEmail=ut.getValue("userEmail",""),this.userPassword=ut.getValue("userPassword",""),this.autoLogin=ut.getValue("autoLogin",!0)}},{key:"getMatchingProvider",value:function(){var t,e=function(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return Lt(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Lt(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,o=function(){};return{s:o,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}(this.providers);try{for(e.s();!(t=e.n()).done;){var n=t.value;if(n.isSupportedSite())return n}}catch(t){e.e(t)}finally{e.f()}return null}},{key:"checkLoginAndAutoLogin",value:(e=Mt(Pt().mark((function t(){return Pt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.activeProvider){t.next=2;break}return t.abrupt("return");case 2:return t.prev=2,t.next=5,this.activeProvider.checkLoginStatus();case 5:if(t.sent||!this.autoLogin||!this.userEmail||!this.userPassword){t.next=10;break}return console.log("用户未登录,尝试自动登录"),t.next=10,this.activeProvider.login(this.userEmail,this.userPassword);case 10:t.next=15;break;case 12:t.prev=12,t.t0=t.catch(2),console.error("登录检查过程出错:",t.t0);case 15:case"end":return t.stop()}}),t,this,[[2,12]])}))),function(){return e.apply(this,arguments)})},{key:"login",value:(t=Mt(Pt().mark((function t(e,n){return Pt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.activeProvider){t.next=3;break}return console.error("没有匹配的登录提供者"),t.abrupt("return",!1);case 3:return this.handleLoginInfoChange({email:e,password:n}),t.next=6,this.activeProvider.login(e,n);case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t,this)}))),function(e,n){return t.apply(this,arguments)})}]);var t,e,n}();function Dt(t){return Dt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Dt(t)}function jt(){jt=function(){return e};var t,e={},n=Object.prototype,r=n.hasOwnProperty,o=Object.defineProperty||function(t,e,n){t[e]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function c(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,n){return t[e]=n}}function u(t,e,n,r){var i=e&&e.prototype instanceof g?e:g,a=Object.create(i.prototype),s=new B(r||[]);return o(a,"_invoke",{value:L(t,n,s)}),a}function d(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=u;var h="suspendedStart",p="suspendedYield",f="executing",m="completed",v={};function g(){}function y(){}function b(){}var w={};c(w,a,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(V([])));x&&x!==n&&r.call(x,a)&&(w=x);var C=b.prototype=g.prototype=Object.create(w);function E(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function S(t,e){function n(o,i,a,s){var l=d(t[o],t,i);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==Dt(u)&&r.call(u,"__await")?e.resolve(u.__await).then((function(t){n("next",t,a,s)}),(function(t){n("throw",t,a,s)})):e.resolve(u).then((function(t){c.value=t,a(c)}),(function(t){return n("throw",t,a,s)}))}s(l.arg)}var i;o(this,"_invoke",{value:function(t,r){function o(){return new e((function(e,o){n(t,r,e,o)}))}return i=i?i.then(o,o):o()}})}function L(e,n,r){var o=h;return function(i,a){if(o===f)throw Error("Generator is already running");if(o===m){if("throw"===i)throw a;return{value:t,done:!0}}for(r.method=i,r.arg=a;;){var s=r.delegate;if(s){var l=P(s,r);if(l){if(l===v)continue;return l}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===h)throw o=m,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=f;var c=d(e,n,r);if("normal"===c.type){if(o=r.done?m:p,c.arg===v)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(o=m,r.method="throw",r.arg=c.arg)}}}function P(e,n){var r=n.method,o=e.iterator[r];if(o===t)return n.delegate=null,"throw"===r&&e.iterator.return&&(n.method="return",n.arg=t,P(e,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var i=d(o,e.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,v;var a=i.arg;return a?a.done?(n[e.resultName]=a.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function T(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function M(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function B(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(T,this),this.reset(!0)}function V(e){if(e||""===e){var n=e[a];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function n(){for(;++o<e.length;)if(r.call(e,o))return n.value=e[o],n.done=!1,n;return n.value=t,n.done=!0,n};return i.next=i}}throw new TypeError(Dt(e)+" is not iterable")}return y.prototype=b,o(C,"constructor",{value:b,configurable:!0}),o(b,"constructor",{value:y,configurable:!0}),y.displayName=c(b,l,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===y||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,c(t,l,"GeneratorFunction")),t.prototype=Object.create(C),t},e.awrap=function(t){return{__await:t}},E(S.prototype),c(S.prototype,s,(function(){return this})),e.AsyncIterator=S,e.async=function(t,n,r,o,i){void 0===i&&(i=Promise);var a=new S(u(t,n,r,o),i);return e.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},E(C),c(C,l,"Generator"),c(C,a,(function(){return this})),c(C,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var r in e)n.push(r);return n.reverse(),function t(){for(;n.length;){var r=n.pop();if(r in e)return t.value=r,t.done=!1,t}return t.done=!0,t}},e.values=V,B.prototype={constructor:B,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(M),!e)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function o(r,o){return s.type="throw",s.arg=e,n.next=r,o&&(n.method="next",n.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var l=r.call(a,"catchLoc"),c=r.call(a,"finallyLoc");if(l&&c){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(l){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!c)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,v):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),M(n),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;M(n)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:V(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),v}},e}function It(t,e,n,r,o,i,a){try{var s=t[i](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(r,o)}function Ht(){return _t.apply(this,arguments)}function _t(){var t;return t=jt().mark((function t(){var e;return jt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,e=new Ot,t.next=4,e.init();case 4:return t.abrupt("return",e);case 7:return t.prev=7,t.t0=t.catch(0),console.error("自动登录模块初始化失败:",t.t0),t.abrupt("return",null);case 11:case"end":return t.stop()}}),t,null,[[0,7]])})),_t=function(){var e=this,n=arguments;return new Promise((function(r,o){var i=t.apply(e,n);function a(t){It(i,r,o,a,s,"next",t)}function s(t){It(i,r,o,a,s,"throw",t)}a(void 0)}))},_t.apply(this,arguments)}function Rt(t){return Rt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Rt(t)}function Nt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function At(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,zt(r.key),r)}}function zt(t){var e=function(t){if("object"!=Rt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=Rt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Rt(e)?e:e+""}var Wt=function(){return function(t,e){return e&&At(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}((function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.adSelectors=e.adSelectors||[],this.customStyles=e.customStyles||[],this.blockedUrlPatternsSet=new Set(e.blockedUrlPatterns||[]),this.adKeywordsRegex=/ads|analytics|tracker|affiliate|stat|pixel|banner|pop|click|outstream\.video|vast|vmap|preroll|midroll|postroll|adserve/i}),[{key:"isEmpty",value:function(){return 0===this.adSelectors.length&&0===this.customStyles.length&&0===this.blockedUrlPatternsSet.size}},{key:"shouldBlockUrl",value:function(t){if(!t||"string"!=typeof t)return!1;if(this.adKeywordsRegex.test(t))return!0;var e,n=function(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return Nt(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Nt(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,o=function(){};return{s:o,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}(this.blockedUrlPatternsSet);try{for(n.s();!(e=n.n()).done;){var r=e.value;if(t.includes(r))return!0}}catch(t){n.e(t)}finally{n.f()}return!1}}])}();const Ut=Wt;function qt(t){return qt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},qt(t)}function Ft(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,Xt(r.key),r)}}function Xt(t){var e=function(t){if("object"!=qt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=qt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==qt(e)?e:e+""}var Yt=function(){return function(t,e){return e&&Ft(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}((function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.config=e}),[{key:"applyAdBlockStyles",value:function(){if(0!==this.config.adSelectors.length||0!==this.config.customStyles.length){var t=document.createElement("style");t.id="adblock-styles",t.type="text/css";var e="";this.config.adSelectors.length>0&&(e+=this.config.adSelectors.join(", ")+" { display: none !important; visibility: hidden !important; height: 0 !important; min-height: 0 !important; }"),this.config.customStyles.length>0&&(e+="\n"+this.config.customStyles.map((function(t){return"".concat(t.selector," { ").concat(t.styles," }")})).join("\n")),t.textContent=e,document.head.appendChild(t),console.log("已应用广告屏蔽样式")}}}])}();const Gt=Yt;function Qt(t){return Qt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Qt(t)}function Zt(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,$t(r.key),r)}}function $t(t){var e=function(t){if("object"!=Qt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=Qt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Qt(e)?e:e+""}var Jt=function(){return function(t,e){return e&&Zt(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}((function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.config=e,this.CLEANUP_THROTTLE=500,this.observer=null}),[{key:"cleanIframes",value:function(){for(var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null)||document.getElementsByTagName("iframe"),e=0;e<t.length;e++){var n=t[e];n.src&&!n.src.includes("plyr.io")&&n.remove()}}},{key:"removeAdElements",value:function(){if(0!==this.config.adSelectors.length)for(var t=0;t<this.config.adSelectors.length;t++)try{for(var e=document.querySelectorAll(this.config.adSelectors[t]),n=0;n<e.length;n++)e[n].remove()}catch(t){}}},{key:"observeDOMChanges",value:function(){var t=this;if(!this.observer){var e=!1,n=!1,r=null,o=function(){e&&(t.removeAdElements(),e=!1),n&&(t.cleanIframes(),n=!1),r=null};this.observer=new MutationObserver((function(t){for(var i=!1,a=!1,s=0;s<t.length;s++){var l=t[s];if(l.addedNodes.length){i=!0;for(var c=0;c<l.addedNodes.length;c++)if("IFRAME"===l.addedNodes[c].nodeName){a=!0;break}}if(i&&a)break}i&&(e=!0),a&&(n=!0),!e&&!n||r||(r=setTimeout(o,50))})),this.observer.observe(document.documentElement,{childList:!0,subtree:!0}),console.log("DOM监听已启动")}}},{key:"disconnect",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null,console.log("DOM监听已停止"))}}])}();const Kt=Jt;function te(t){return te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},te(t)}function ee(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,ne(r.key),r)}}function ne(t){var e=function(t){if("object"!=te(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=te(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==te(e)?e:e+""}var re=function(){return function(t,e){return e&&ee(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}((function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.config=e}),[{key:"blockTrackingRequests",value:function(){var t=XMLHttpRequest.prototype.open,e=this.config;XMLHttpRequest.prototype.open=function(n,r){return"string"==typeof r&&e.shouldBlockUrl(r)?(this.send=function(){},this.onload=null,void(this.onerror=null)):t.apply(this,arguments)};var n=window.fetch;window.fetch=function(t,r){var o=t;return t instanceof Request&&(o=t.url),"string"==typeof o&&e.shouldBlockUrl(o)?Promise.resolve(new Response("",{status:200,headers:{"Content-Type":"text/plain"}})):n.apply(this,arguments)}}},{key:"blockIframeLoading",value:function(){var t=document.createElement,e=this.config;document.createElement=function(n){var r=t.call(document,n);if("iframe"===n.toLowerCase()){var o=r.src;Object.defineProperty(r,"src",{set:function(t){"string"==typeof t&&e.shouldBlockUrl(t)?console.log("拦截iframe:",t):o=t},get:function(){return o}});var i=r.setAttribute;r.setAttribute=function(t,n){if("src"!==t||"string"!=typeof n||!e.shouldBlockUrl(n))return i.call(this,t,n);console.log("拦截iframe setAttribute:",n)}}return r}}},{key:"blockPopups",value:function(){window.open=function(){return null},"undefined"!=typeof unsafeWindow&&(unsafeWindow.open=function(){return null})}},{key:"init",value:function(){this.blockIframeLoading(),this.blockTrackingRequests(),this.blockPopups(),console.log("请求拦截已启用")}}])}();const oe=re,ie={adSelectors:['div[class="space-y-6 mb-6"]','div[class*="root--"][class*="bottomRight--"]','div[class="grid md:grid-cols-2 gap-8"]','ul[class="mb-4 list-none text-nord14 grid grid-cols-2 gap-2"]','div[class="space-y-5 mb-5"]','iframe[src*="ads"]','iframe[src*="banner"]','iframe[src*="pop"]',"iframe[data-ad]",'iframe[id*="ads"]','iframe[class*="ads"]','iframe:not([src*="plyr.io"])'],customStyles:[{selector:'div[class="my-2 text-sm text-nord4 truncate"]',styles:"white-space: normal !important;"},{selector:"body",styles:"background-color: #000000 !important;"},{selector:'div[class*="z-max"]',styles:"z-index: 9000 !important;"}],blockedUrlPatterns:["exoclick.com","juicyads.com","popads.net","adsterra.com","trafficjunky.com","adnium.com","ad-maven.com","browser-update.org","mopvip.icu","toppages.pw","cpmstar.com","propellerads.com","tsyndicate.com","syndication.exosrv.com","ads.exosrv.com","tsyndicate.com/sdk","cdn.tsyndicate.com","adsco.re","adscpm.site","a-ads.com","ad-delivery.net","outbrain.com","taboola.com","mgid.com","revcontent.com","adnxs.com","pubmatic.com","rubiconproject.com","openx.net","criteo.com","doubleclick.net"],isVideoSite:!0,domains:["missav.ws","missav.ai","missav.com","thisav.com"]};function ae(t){return ae="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ae(t)}function se(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,le(r.key),r)}}function le(t){var e=function(t){if("object"!=ae(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=ae(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==ae(e)?e:e+""}var ce=function(){return function(t,e){return e&&se(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t);var e,n=(e=window.location.href,/^https?:\/\/(www\.)?(missav|thisav)\.(com|ws|ai)/.test(e)?ie:{adSelectors:[],customStyles:[],blockedUrlPatterns:[]});this.config=new Ut(n),this.styleManager=new Gt(this.config),this.domCleaner=new Kt(this.config),this.requestBlocker=new oe(this.config)}),[{key:"preventDetection",value:function(){window.AdBlock=!1,window.adblock=!1,window.adsbygoogle={loaded:!0},"undefined"!=typeof unsafeWindow&&(unsafeWindow.AdBlock=!1,unsafeWindow.adblock=!1,unsafeWindow.adsbygoogle={loaded:!0})}},{key:"setupPeriodicCleaning",value:function(){var t=this;this.domCleaner.removeAdElements(!0),this.domCleaner.observeDOMChanges(),setInterval((function(){return t.domCleaner.removeAdElements()}),2e3)}},{key:"init",value:function(){var t=this;this.config.isEmpty()||(console.log("广告屏蔽模块已启用"),this.preventDetection(),this.styleManager.applyAdBlockStyles(),this.requestBlocker.init(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",(function(){return t.setupPeriodicCleaning()})):this.setupPeriodicCleaning())}}])}();const ue=ce;function de(t){return de="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},de(t)}function he(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,pe(r.key),r)}}function pe(t){var e=function(t){if("object"!=de(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=de(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==de(e)?e:e+""}var fe=function(){return function(t,e){return e&&he(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.maxAttempts=3,this.attemptInterval=1e3}),[{key:"SHOW_MORE_SELECTOR",get:function(){return"a.text-nord13.font-medium.flex.items-center"}},{key:"autoExpandDetails",value:function(){var t=this;console.log("[DetailExpander] 尝试自动展开详情"),this.expandDetailsSingle();var e=0,n=setInterval((function(){(t.expandDetailsSingle()||++e>=t.maxAttempts)&&(clearInterval(n),console.log("[DetailExpander] 完成尝试 (".concat(e+1,"次)")))}),this.attemptInterval)}},{key:"expandDetailsSingle",value:function(){try{var t=document.querySelector(this.SHOW_MORE_SELECTOR);if(t)return console.log('[DetailExpander] 找到"显示更多"按钮,点击展开'),t.click(),!0}catch(t){console.error("[DetailExpander] 展开详情时出错:",t)}return!1}}])}();function me(t){return me="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},me(t)}function ve(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function ge(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,ye(r.key),r)}}function ye(t){var e=function(t){if("object"!=me(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=me(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==me(e)?e:e+""}var be=function(){return function(t,e){return e&&ge(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.maxAttempts=20,this.attemptInterval=500}),[{key:"setupAutoHighestQuality",value:function(){var t=this;if(console.log("[QualityManager] 尝试设置视频最高画质"),this.setHighestQualitySingle())console.log("[QualityManager] 成功设置最高画质");else{var e=0,n=setInterval((function(){(t.setHighestQualitySingle()||++e>=t.maxAttempts)&&(clearInterval(n),console.log("[QualityManager] 完成尝试 (".concat(e+1,"次)")))}),this.attemptInterval);window.addEventListener("load",(function(){return t.setHighestQualitySingle()}))}}},{key:"setHighestQualitySingle",value:function(){try{var t=window.player||("undefined"!=typeof unsafeWindow?unsafeWindow.player:null);if(!(t&&t.config&&t.config.quality&&t.config.quality.options&&t.config.quality.options.length))return!1;var e=Math.max.apply(Math,function(t){return function(t){if(Array.isArray(t))return ve(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return ve(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ve(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t.config.quality.options));return console.log("[QualityManager] 设置画质:",e),t.quality=e,t.config.quality.selected=e,"function"==typeof t.quality&&t.quality(e),!0}catch(t){return console.error("[QualityManager] 设置最高画质时出错:",t),!1}}}])}();function we(t){return we="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},we(t)}function ke(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function xe(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,Ce(r.key),r)}}function Ce(t){var e=function(t){if("object"!=we(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=we(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==we(e)?e:e+""}var Ee=function(){return function(t,e){return e&&xe(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.redirectRules=[{pattern:/^https?:\/\/(www\.)?(missav|thisav)\.com\//i,targetDomain:"missav.ws"}]}),[{key:"checkAndRedirect",value:function(){var t,e=window.location.href,n=function(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return ke(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ke(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,o=function(){};return{s:o,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}(this.redirectRules);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(r.pattern.test(e)){console.log("[UrlRedirector] 匹配到重定向规则:",r);var o=this.applyRedirect(e,r);if(o!==e)return console.log("[UrlRedirector] 重定向到:",o),window.location.href=o,!0}}}catch(t){n.e(t)}finally{n.f()}return!1}},{key:"applyRedirect",value:function(t,e){return e.targetDomain?t.replace(/^(https?:\/\/)(?:www\.)?(missav|thisav)\.com\//i,"$1".concat(e.targetDomain,"/")):t}}])}();function Se(t){return Se="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Se(t)}function Le(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,Pe(r.key),r)}}function Pe(t){var e=function(t){if("object"!=Se(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=Se(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Se(e)?e:e+""}var Te=function(){return function(t,e){return e&&Le(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.detailExpander=new fe,this.qualityManager=new be,this.urlRedirector=new Ee}),[{key:"init",value:function(){var t=this;console.log("[UserExperienceEnhancer] 初始化用户体验增强功能"),this.urlRedirector.checkAndRedirect(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",(function(){t.initFeatures()})):this.initFeatures()}},{key:"initFeatures",value:function(){try{this.detailExpander.autoExpandDetails(),this.qualityManager.setupAutoHighestQuality()}catch(t){console.error("[UserExperienceEnhancer] 初始化功能时出错:",t)}}}])}();function Me(t){return Me="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Me(t)}function Be(){Be=function(){return e};var t,e={},n=Object.prototype,r=n.hasOwnProperty,o=Object.defineProperty||function(t,e,n){t[e]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function c(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,n){return t[e]=n}}function u(t,e,n,r){var i=e&&e.prototype instanceof g?e:g,a=Object.create(i.prototype),s=new B(r||[]);return o(a,"_invoke",{value:L(t,n,s)}),a}function d(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=u;var h="suspendedStart",p="suspendedYield",f="executing",m="completed",v={};function g(){}function y(){}function b(){}var w={};c(w,a,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(V([])));x&&x!==n&&r.call(x,a)&&(w=x);var C=b.prototype=g.prototype=Object.create(w);function E(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function S(t,e){function n(o,i,a,s){var l=d(t[o],t,i);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==Me(u)&&r.call(u,"__await")?e.resolve(u.__await).then((function(t){n("next",t,a,s)}),(function(t){n("throw",t,a,s)})):e.resolve(u).then((function(t){c.value=t,a(c)}),(function(t){return n("throw",t,a,s)}))}s(l.arg)}var i;o(this,"_invoke",{value:function(t,r){function o(){return new e((function(e,o){n(t,r,e,o)}))}return i=i?i.then(o,o):o()}})}function L(e,n,r){var o=h;return function(i,a){if(o===f)throw Error("Generator is already running");if(o===m){if("throw"===i)throw a;return{value:t,done:!0}}for(r.method=i,r.arg=a;;){var s=r.delegate;if(s){var l=P(s,r);if(l){if(l===v)continue;return l}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===h)throw o=m,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=f;var c=d(e,n,r);if("normal"===c.type){if(o=r.done?m:p,c.arg===v)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(o=m,r.method="throw",r.arg=c.arg)}}}function P(e,n){var r=n.method,o=e.iterator[r];if(o===t)return n.delegate=null,"throw"===r&&e.iterator.return&&(n.method="return",n.arg=t,P(e,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var i=d(o,e.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,v;var a=i.arg;return a?a.done?(n[e.resultName]=a.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function T(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function M(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function B(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(T,this),this.reset(!0)}function V(e){if(e||""===e){var n=e[a];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function n(){for(;++o<e.length;)if(r.call(e,o))return n.value=e[o],n.done=!1,n;return n.value=t,n.done=!0,n};return i.next=i}}throw new TypeError(Me(e)+" is not iterable")}return y.prototype=b,o(C,"constructor",{value:b,configurable:!0}),o(b,"constructor",{value:y,configurable:!0}),y.displayName=c(b,l,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===y||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,c(t,l,"GeneratorFunction")),t.prototype=Object.create(C),t},e.awrap=function(t){return{__await:t}},E(S.prototype),c(S.prototype,s,(function(){return this})),e.AsyncIterator=S,e.async=function(t,n,r,o,i){void 0===i&&(i=Promise);var a=new S(u(t,n,r,o),i);return e.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},E(C),c(C,l,"Generator"),c(C,a,(function(){return this})),c(C,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var r in e)n.push(r);return n.reverse(),function t(){for(;n.length;){var r=n.pop();if(r in e)return t.value=r,t.done=!1,t}return t.done=!0,t}},e.values=V,B.prototype={constructor:B,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(M),!e)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function o(r,o){return s.type="throw",s.arg=e,n.next=r,o&&(n.method="next",n.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var l=r.call(a,"catchLoc"),c=r.call(a,"finallyLoc");if(l&&c){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(l){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!c)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,v):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),M(n),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;M(n)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:V(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),v}},e}function Ve(t,e,n,r,o,i,a){try{var s=t[i](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(r,o)}!function(){var t=null;function e(){return r.apply(this,arguments)}function r(){var e;return e=Be().mark((function e(){return Be().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,r=void 0,document.getElementById("tm-player-styles")||((r=document.querySelector('meta[name="viewport"]'))||((r=document.createElement("meta")).name="viewport",document.head.appendChild(r)),r.content="width=device-width, initial-scale=1.0, viewport-fit=cover",console.log("[Miss NoAD Player] 已配置viewport以支持安全区域"),n(610),console.log("[Miss NoAD Player] 样式注入完成")),(new Te).init(),console.log("[Miss NoAD Player] 用户体验增强模块已初始化"),(t=new at).loadSettings(),new nt({playerState:t}).init(),e.next=10,Ht();case 10:e.sent&&console.log("[Miss NoAD Player] 自动登录模块已初始化"),(new ue).init(),console.log("[Miss NoAD Player] 初始化完成"),e.next=20;break;case 17:e.prev=17,e.t0=e.catch(0),console.error("[Miss NoAD Player] 初始化失败:",e.t0);case 20:case"end":return e.stop()}var r}),e,null,[[0,17]])})),r=function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(t){Ve(i,r,o,a,s,"next",t)}function s(t){Ve(i,r,o,a,s,"throw",t)}a(void 0)}))},r.apply(this,arguments)}"complete"===document.readyState||"interactive"===document.readyState?setTimeout(e,100):document.addEventListener("DOMContentLoaded",(function(){return setTimeout(e,100)}))}()})();