From 3f1e033152dda2c78cf5e8a1b0f420f19c0c4ad8 Mon Sep 17 00:00:00 2001 From: Harvey Zack Date: Sun, 23 Apr 2023 14:38:13 +0800 Subject: [PATCH] update style --- .../artplayer-plugin-danmuku/index.js | 21 ++++------- .../artplayer-plugin-danmuku/index.js.map | 2 +- docs/uncompiled/artplayer/index.js | 4 +- .../artplayer-plugin-danmuku/src/setting.js | 19 +++------- .../artplayer-plugin-danmuku/src/style.less | 37 +++---------------- packages/artplayer/src/style/bottom.less | 12 ++++-- packages/artplayer/src/style/fullscreen.less | 4 ++ .../artplayer/src/style/fullscreenWeb.less | 2 + packages/artplayer/src/style/index.less | 1 + packages/artplayer/src/style/mobile.less | 2 +- 10 files changed, 38 insertions(+), 66 deletions(-) create mode 100644 packages/artplayer/src/style/fullscreen.less diff --git a/docs/uncompiled/artplayer-plugin-danmuku/index.js b/docs/uncompiled/artplayer-plugin-danmuku/index.js index a5e75b4b2..78efa143a 100644 --- a/docs/uncompiled/artplayer-plugin-danmuku/index.js +++ b/docs/uncompiled/artplayer-plugin-danmuku/index.js @@ -184,7 +184,7 @@ function artplayerPluginDanmuku(option) { exports.default = artplayerPluginDanmuku; artplayerPluginDanmuku.env = "development"; artplayerPluginDanmuku.version = "5.0.0"; -artplayerPluginDanmuku.build = "2023-04-23 10:11:14"; +artplayerPluginDanmuku.build = "2023-04-23 14:21:45"; if (typeof window !== "undefined") window["artplayerPluginDanmuku"] = artplayerPluginDanmuku; },{"./danmuku":"cv7fe","./setting":"cI0ih","@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"cv7fe":[function(require,module,exports) { @@ -788,19 +788,12 @@ var _danmuStyleSvg = require("bundle-text:./img/danmu-style.svg"); var _danmuStyleSvgDefault = parcelHelpers.interopDefault(_danmuStyleSvg); function setting(art, danmuku) { const { option } = danmuku; - const { template: { $controlsCenter , $player } , constructor: { utils: { removeClass , addClass , append , setStyle , tooltip , query , inverseClass } } } = art; - function getIcon(svg, key) { - const icon = document.createElement("i"); - append(icon, svg); - addClass(icon, "art-icon"); - addClass(icon, `art-icon-${key}`); - return icon; - } + const { template: { $controlsCenter , $player } , constructor: { utils: { removeClass , addClass , append , setStyle , tooltip , query , inverseClass , getIcon } } } = art; setStyle($controlsCenter, "display", "flex"); - const $danmuOn = getIcon((0, _danmuOnSvgDefault.default), "danmu-on"); - const $danmuOff = getIcon((0, _danmuOffSvgDefault.default), "danmu-off"); - const $danmuConfig = getIcon((0, _danmuConfigSvgDefault.default), "danmu-config"); - const $danmuStyle = getIcon((0, _danmuStyleSvgDefault.default), "danmu-style"); + const $danmuOn = getIcon("danmu-on", (0, _danmuOnSvgDefault.default)); + const $danmuOff = getIcon("danmu-off", (0, _danmuOffSvgDefault.default)); + const $danmuConfig = getIcon("danmu-config", (0, _danmuConfigSvgDefault.default)); + const $danmuStyle = getIcon("danmu-style", (0, _danmuStyleSvgDefault.default)); function addEmitter() { const colors = [ "#FE0302", @@ -1148,7 +1141,7 @@ if (typeof document !== "undefined") { } },{"bundle-text:./style.less":"uaCsY","bundle-text:./img/danmu-on.svg":"qeJXh","bundle-text:./img/danmu-off.svg":"7RwEf","bundle-text:./img/danmu-config.svg":"3yRfx","bundle-text:./img/danmu-style.svg":"hoOta","@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"uaCsY":[function(require,module,exports) { -module.exports = ".art-danmuku-emitter {\n height: 32px;\n width: 100%;\n max-width: 100%;\n color: #fff;\n -webkit-tap-highlight-color: #0000;\n touch-action: manipulation;\n -ms-high-contrast-adjust: none;\n background-color: #ffffff4d;\n border-radius: 3px;\n font-family: Roboto, Arial, Helvetica, sans-serif;\n font-size: 12px;\n line-height: 1;\n display: flex;\n position: relative;\n}\n\n.art-danmuku-emitter *, .art-danmuku-emitter :before, .art-danmuku-emitter :after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\n.art-danmuku-emitter .art-icon {\n justify-content: center;\n align-items: center;\n line-height: 1.5;\n display: inline-flex;\n}\n\n.art-danmuku-emitter .art-icon svg {\n fill: #fff;\n}\n\n@supports ((-webkit-backdrop-filter: initial)) or (backdrop-filter: initial) {\n .art-danmuku-emitter .art-backdrop-filter {\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n background-color: #000000b3 !important;\n }\n}\n\n.art-danmuku-emitter .art-danmuku-left {\n border-radius: 3px 0 0 3px;\n flex: 1;\n display: flex;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style {\n width: 32px;\n justify-content: center;\n align-items: center;\n display: flex;\n position: relative;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel {\n z-index: 999;\n width: 200px;\n padding-bottom: 10px;\n display: none;\n position: absolute;\n bottom: 30px;\n left: -85px;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner {\n background-color: #000000e6;\n border-radius: 3px;\n flex-direction: column;\n padding: 10px 10px 0;\n display: flex;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner .art-danmuku-style-panel-title {\n margin-bottom: 10px;\n font-size: 13px;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner .art-danmuku-style-panel-modes {\n justify-content: space-between;\n margin-bottom: 15px;\n display: flex;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner .art-danmuku-style-panel-modes .art-danmuku-style-panel-mode {\n width: 47%;\n cursor: pointer;\n color: #fff;\n border: 1px solid #fff;\n justify-content: center;\n padding: 5px 0;\n display: flex;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner .art-danmuku-style-panel-modes .art-danmuku-style-panel-mode.art-current {\n background-color: #00a1d6;\n border: 1px solid #00a1d6;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner .art-danmuku-style-panel-colors {\n flex-wrap: wrap;\n justify-content: space-between;\n gap: 5px;\n margin-bottom: 10px;\n display: flex;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner .art-danmuku-style-panel-colors .art-danmuku-style-panel-color {\n cursor: pointer;\n width: 20px;\n height: 20px;\n border: 1px solid #fff;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner .art-danmuku-style-panel-colors .art-danmuku-style-panel-color.art-current {\n position: relative;\n box-shadow: 0 0 2px #fff;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner .art-danmuku-style-panel-colors .art-danmuku-style-panel-color.art-current:before {\n content: \"\";\n width: 100%;\n height: 100%;\n border: 2px solid #000;\n position: absolute;\n inset: 0;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style:hover .art-danmuku-style-panel {\n display: flex;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-icon {\n opacity: .75;\n cursor: pointer;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-icon:hover {\n opacity: 1;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-input {\n width: 100%;\n color: #fff;\n background-color: #0000;\n border: none;\n outline: none;\n flex: 1;\n padding: 0 10px 0 0;\n display: flex;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-input::placeholder, .art-danmuku-emitter .art-danmuku-left .art-danmuku-input::-webkit-input-placeholder {\n color: #ffffff80;\n}\n\n.art-danmuku-emitter .art-danmuku-send {\n width: 50px;\n cursor: pointer;\n background-color: #00a1d6;\n border-radius: 0 3px 3px 0;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.art-danmuku-emitter .art-danmuku-send:hover {\n background-color: #00b5e5;\n}\n\n.art-danmuku-emitter .art-danmuku-send.art-disabled {\n opacity: .5;\n pointer-events: none;\n}\n\n.art-danmuku-emitter.art-danmuku-mount {\n height: 34px;\n max-width: 100% !important;\n}\n\n.art-danmuku-emitter.art-danmuku-mount .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel {\n left: 0;\n}\n\n.art-danmuku-emitter.art-danmuku-mount .art-danmuku-send {\n width: 60px;\n}\n\n.art-danmuku-emitter.art-danmuku-mount.art-danmuku-theme-light .art-danmuku-left {\n background: #f4f4f4;\n border: 1px solid #dadada;\n}\n\n.art-danmuku-emitter.art-danmuku-mount.art-danmuku-theme-light .art-danmuku-left .art-danmuku-style .art-icon svg {\n fill: #666;\n}\n\n.art-danmuku-emitter.art-danmuku-mount.art-danmuku-theme-light .art-danmuku-left .art-danmuku-input {\n color: #000;\n}\n\n.art-danmuku-emitter.art-danmuku-mount.art-danmuku-theme-light .art-danmuku-left .art-danmuku-input::placeholder, .art-danmuku-emitter.art-danmuku-mount.art-danmuku-theme-light .art-danmuku-left .art-danmuku-input::-webkit-input-placeholder {\n color: #00000080;\n}\n\n.art-layer-danmuku-emitter {\n z-index: 99;\n width: 100%;\n position: absolute;\n bottom: -40px;\n left: 0;\n right: 0;\n}\n\n"; +module.exports = ".art-danmuku-emitter {\n height: var(--art-control-icon-size, 32px);\n width: 100%;\n max-width: 100%;\n background-color: #ffffff4d;\n border-radius: 3px;\n font-size: 12px;\n line-height: 1;\n display: flex;\n position: relative;\n}\n\n.art-danmuku-emitter .art-backdrop-filter {\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n background-color: #000000b3 !important;\n}\n\n.art-danmuku-emitter .art-danmuku-left {\n border-radius: 3px 0 0 3px;\n flex: 1;\n display: flex;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style {\n width: 32px;\n justify-content: center;\n align-items: center;\n display: flex;\n position: relative;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel {\n z-index: 999;\n width: 200px;\n padding-bottom: 10px;\n display: none;\n position: absolute;\n bottom: 30px;\n left: -85px;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner {\n background-color: #000000e6;\n border-radius: 3px;\n flex-direction: column;\n padding: 10px 10px 0;\n display: flex;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner .art-danmuku-style-panel-title {\n margin-bottom: 10px;\n font-size: 13px;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner .art-danmuku-style-panel-modes {\n justify-content: space-between;\n margin-bottom: 15px;\n display: flex;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner .art-danmuku-style-panel-modes .art-danmuku-style-panel-mode {\n width: 47%;\n cursor: pointer;\n color: #fff;\n border: 1px solid #fff;\n justify-content: center;\n padding: 5px 0;\n display: flex;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner .art-danmuku-style-panel-modes .art-danmuku-style-panel-mode.art-current {\n background-color: #00a1d6;\n border: 1px solid #00a1d6;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner .art-danmuku-style-panel-colors {\n flex-wrap: wrap;\n justify-content: space-between;\n gap: 5px;\n margin-bottom: 10px;\n display: flex;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner .art-danmuku-style-panel-colors .art-danmuku-style-panel-color {\n cursor: pointer;\n width: 20px;\n height: 20px;\n border: 1px solid #fff;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner .art-danmuku-style-panel-colors .art-danmuku-style-panel-color.art-current {\n position: relative;\n box-shadow: 0 0 2px #fff;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel .art-danmuku-style-panel-inner .art-danmuku-style-panel-colors .art-danmuku-style-panel-color.art-current:before {\n content: \"\";\n width: 100%;\n height: 100%;\n border: 2px solid #000;\n position: absolute;\n inset: 0;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style:hover .art-danmuku-style-panel {\n display: flex;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-icon {\n opacity: .75;\n cursor: pointer;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-style .art-icon:hover {\n opacity: 1;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-input {\n width: 100%;\n color: #fff;\n background-color: #0000;\n border: none;\n outline: none;\n flex: 1;\n padding: 0 10px 0 0;\n display: flex;\n}\n\n.art-danmuku-emitter .art-danmuku-left .art-danmuku-input::placeholder, .art-danmuku-emitter .art-danmuku-left .art-danmuku-input::-webkit-input-placeholder {\n color: #ffffff80;\n}\n\n.art-danmuku-emitter .art-danmuku-send {\n width: 50px;\n cursor: pointer;\n background-color: #00a1d6;\n border-radius: 0 3px 3px 0;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.art-danmuku-emitter .art-danmuku-send:hover {\n background-color: #00b5e5;\n}\n\n.art-danmuku-emitter .art-danmuku-send.art-disabled {\n opacity: .5;\n pointer-events: none;\n}\n\n.art-danmuku-emitter.art-danmuku-mount {\n max-width: 100% !important;\n}\n\n.art-danmuku-emitter.art-danmuku-mount .art-danmuku-left .art-danmuku-style .art-danmuku-style-panel {\n left: 0;\n}\n\n.art-danmuku-emitter.art-danmuku-mount .art-danmuku-send {\n width: 60px;\n}\n\n.art-danmuku-emitter.art-danmuku-mount.art-danmuku-theme-light .art-danmuku-left {\n background: #f4f4f4;\n border: 1px solid #dadada;\n}\n\n.art-danmuku-emitter.art-danmuku-mount.art-danmuku-theme-light .art-danmuku-left .art-danmuku-style .art-icon svg {\n fill: #666;\n}\n\n.art-danmuku-emitter.art-danmuku-mount.art-danmuku-theme-light .art-danmuku-left .art-danmuku-input {\n color: #000;\n}\n\n.art-danmuku-emitter.art-danmuku-mount.art-danmuku-theme-light .art-danmuku-left .art-danmuku-input::placeholder, .art-danmuku-emitter.art-danmuku-mount.art-danmuku-theme-light .art-danmuku-left .art-danmuku-input::-webkit-input-placeholder {\n color: #00000080;\n}\n\n.art-layer-danmuku-emitter {\n z-index: 99;\n width: 100%;\n position: absolute;\n bottom: -40px;\n left: 0;\n right: 0;\n}\n\n"; },{}],"qeJXh":[function(require,module,exports) { module.exports = "\n\n\n\n\n"; diff --git a/docs/uncompiled/artplayer-plugin-danmuku/index.js.map b/docs/uncompiled/artplayer-plugin-danmuku/index.js.map index ebf295317..4cd96d640 100644 --- a/docs/uncompiled/artplayer-plugin-danmuku/index.js.map +++ b/docs/uncompiled/artplayer-plugin-danmuku/index.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/artplayer-plugin-danmuku/src/index.js","packages/artplayer-plugin-danmuku/src/danmuku.js","packages/artplayer-plugin-danmuku/src/bilibili.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js","packages/artplayer-plugin-danmuku/src/getDanmuTop.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-b61db27680d5896e.js","packages/artplayer-plugin-danmuku/src/setting.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-e633bd0642c0f6d8.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-6b6314fb95d0f9c4.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-63e2f0a59f61ce30.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-8c344af6de265517.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-5db94c18a44eaa0a.js"],"sourcesContent":["import Danmuku from './danmuku';\nimport setting from './setting';\n\nfunction checkVersion(art) {\n const {\n version,\n utils: { errorHandle },\n } = art.constructor;\n const arr = version.split('.').map(Number);\n const major = arr[0];\n const minor = arr[1] / 100;\n errorHandle(major + minor >= 5, `Artplayer.js@${version} 不兼容该弹幕库,请更新到 5 版本以上`);\n}\n\nexport default function artplayerPluginDanmuku(option) {\n return (art) => {\n checkVersion(art);\n const danmuku = new Danmuku(art, option);\n setting(art, danmuku);\n return {\n name: 'artplayerPluginDanmuku',\n emit: danmuku.emit.bind(danmuku),\n load: danmuku.load.bind(danmuku),\n config: danmuku.config.bind(danmuku),\n hide: danmuku.hide.bind(danmuku),\n show: danmuku.show.bind(danmuku),\n reset: danmuku.reset.bind(danmuku),\n get option() {\n return danmuku.option;\n },\n get isHide() {\n return danmuku.isHide;\n },\n get isStop() {\n return danmuku.isStop;\n },\n };\n };\n}\n\nartplayerPluginDanmuku.env = process.env.NODE_ENV;\nartplayerPluginDanmuku.version = process.env.APP_VER;\nartplayerPluginDanmuku.build = process.env.BUILD_DATE;\n\nif (typeof window !== 'undefined') {\n window['artplayerPluginDanmuku'] = artplayerPluginDanmuku;\n}\n","import { bilibiliDanmuParseFromUrl } from './bilibili';\nimport getDanmuTop from './getDanmuTop';\n\nexport default class Danmuku {\n constructor(art, option) {\n const { constructor, template } = art;\n\n this.utils = constructor.utils;\n this.validator = constructor.validator;\n this.$danmuku = template.$danmuku;\n this.$player = template.$player;\n\n this.art = art;\n this.queue = [];\n this.option = {};\n this.$refs = [];\n this.isStop = false;\n this.isHide = false;\n this.timer = null;\n this.config(option);\n\n if (this.option.useWorker) {\n try {\n this.worker = new Worker(new URL('data-url:./worker.js', import.meta.url));\n } catch (error) {\n //\n }\n }\n\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n this.reset = this.reset.bind(this);\n this.destroy = this.destroy.bind(this);\n\n art.on('video:play', this.start);\n art.on('video:playing', this.start);\n art.on('video:pause', this.stop);\n art.on('video:waiting', this.stop);\n art.on('resize', this.reset);\n art.on('destroy', this.destroy);\n\n this.load();\n }\n\n static get option() {\n return {\n danmuku: [],\n speed: 5,\n margin: ['2%', '25%'],\n opacity: 1,\n color: '#FFFFFF',\n mode: 0,\n fontSize: 25,\n filter: () => true,\n antiOverlap: true,\n useWorker: true,\n synchronousPlayback: false,\n lockTime: 5,\n maxLength: 100,\n minWidth: 200,\n maxWidth: 400,\n mount: undefined,\n theme: 'dark',\n beforeEmit: () => true,\n };\n }\n\n static get scheme() {\n return {\n danmuku: 'array|function|string',\n speed: 'number',\n margin: 'array',\n opacity: 'number',\n color: 'string',\n mode: 'number',\n fontSize: 'number|string',\n filter: 'function',\n antiOverlap: 'boolean',\n useWorker: 'boolean',\n synchronousPlayback: 'boolean',\n lockTime: 'number',\n maxLength: 'number',\n minWidth: 'number',\n maxWidth: 'number',\n mount: 'undefined|htmldivelement',\n theme: 'string',\n beforeEmit: 'function',\n };\n }\n\n get isRotate() {\n return this.art.plugins.autoOrientation && this.art.plugins.autoOrientation.state;\n }\n\n get marginTop() {\n const { clamp } = this.utils;\n const value = this.option.margin[0];\n const { clientHeight } = this.$player;\n\n if (typeof value === 'number') {\n return clamp(value, 0, clientHeight);\n }\n\n if (typeof value === 'string' && value.endsWith('%')) {\n const ratio = parseFloat(value) / 100;\n return clamp(clientHeight * ratio, 0, clientHeight);\n }\n\n return Danmuku.option.margin[0];\n }\n\n get marginBottom() {\n const { clamp } = this.utils;\n const value = this.option.margin[1];\n const { clientHeight } = this.$player;\n\n if (typeof value === 'number') {\n return clamp(value, 0, clientHeight);\n }\n\n if (typeof value === 'string' && value.endsWith('%')) {\n const ratio = parseFloat(value) / 100;\n return clamp(clientHeight * ratio, 0, clientHeight);\n }\n\n return Danmuku.option.margin[1];\n }\n\n filter(state, callback) {\n return this.queue.filter((danmu) => danmu.$state === state).map(callback);\n }\n\n getLeft($ref) {\n const rect = $ref.getBoundingClientRect();\n return this.isRotate ? rect.top : rect.left;\n }\n\n getRef() {\n const $refCache = this.$refs.pop();\n if ($refCache) return $refCache;\n\n const $ref = document.createElement('div');\n\n $ref.style.cssText = `\n user-select: none;\n position: absolute;\n white-space: pre;\n pointer-events: none;\n perspective: 500px;\n display: inline-block;\n will-change: transform;\n font-weight: normal;\n line-height: 1.125;\n visibility: hidden;\n font-family: SimHei, \"Microsoft JhengHei\", Arial, Helvetica, sans-serif;\n text-shadow: rgb(0, 0, 0) 1px 0px 1px, rgb(0, 0, 0) 0px 1px 1px, rgb(0, 0, 0) 0px -1px 1px, rgb(0, 0, 0) -1px 0px 1px;\n `;\n\n return $ref;\n }\n\n getReady() {\n const { currentTime } = this.art;\n return this.queue.filter((danmu) => {\n return (\n danmu.$state === 'ready' ||\n (danmu.$state === 'wait' && currentTime + 0.1 >= danmu.time && danmu.time >= currentTime - 0.1)\n );\n });\n }\n\n getEmits() {\n const result = [];\n const { clientWidth } = this.$player;\n const clientLeft = this.getLeft(this.$player);\n\n this.filter('emit', (danmu) => {\n const top = danmu.$ref.offsetTop;\n const left = this.getLeft(danmu.$ref) - clientLeft;\n const height = danmu.$ref.clientHeight;\n const width = danmu.$ref.clientWidth;\n const distance = left + width;\n const right = clientWidth - distance;\n const speed = distance / danmu.$restTime;\n\n const emit = {};\n emit.top = top;\n emit.left = left;\n emit.height = height;\n emit.width = width;\n emit.right = right;\n emit.speed = speed;\n emit.distance = distance;\n emit.time = danmu.$restTime;\n emit.mode = danmu.mode;\n\n result.push(emit);\n });\n\n return result;\n }\n\n getFontSize(fontSize) {\n const { clamp } = this.utils;\n const { clientHeight } = this.$player;\n\n if (typeof fontSize === 'number') {\n return clamp(fontSize, 12, clientHeight);\n }\n\n if (typeof fontSize === 'string' && fontSize.endsWith('%')) {\n const ratio = parseFloat(fontSize) / 100;\n return clamp(clientHeight * ratio, 12, clientHeight);\n }\n\n return Danmuku.option.fontSize;\n }\n\n postMessage(message = {}) {\n return new Promise((resolve) => {\n if (this.option.useWorker && this.worker && this.worker.postMessage) {\n message.id = Date.now();\n this.worker.postMessage(message);\n this.worker.onmessage = (event) => {\n const { data } = event;\n if (data.id === message.id) {\n resolve(data);\n }\n };\n } else {\n const top = getDanmuTop(message);\n resolve({ top });\n }\n });\n }\n\n async load() {\n try {\n let danmus = [];\n if (typeof this.option.danmuku === 'function') {\n danmus = await this.option.danmuku();\n } else if (typeof this.option.danmuku.then === 'function') {\n danmus = await this.option.danmuku;\n } else if (typeof this.option.danmuku === 'string') {\n danmus = await bilibiliDanmuParseFromUrl(this.option.danmuku);\n } else {\n danmus = this.option.danmuku;\n }\n\n this.utils.errorHandle(Array.isArray(danmus), 'Danmuku need return an array as result');\n this.art.emit('artplayerPluginDanmuku:loaded', danmus);\n\n this.queue = [];\n this.$danmuku.innerText = '';\n danmus.forEach((danmu) => this.emit(danmu));\n } catch (error) {\n this.art.emit('artplayerPluginDanmuku:error', error);\n throw error;\n }\n\n return this;\n }\n\n config(option) {\n const { clamp } = this.utils;\n\n this.option = Object.assign({}, Danmuku.option, this.option, option);\n this.validator(this.option, Danmuku.scheme);\n\n this.option.speed = clamp(this.option.speed, 1, 10);\n this.option.opacity = clamp(this.option.opacity, 0, 1);\n this.option.lockTime = clamp(Math.floor(this.option.lockTime), 0, 60);\n this.option.maxLength = clamp(this.option.maxLength, 0, 500);\n this.option.minWidth = clamp(this.option.minWidth, 0, 500);\n this.option.maxWidth = clamp(this.option.maxWidth, 0, Infinity);\n\n if (option.fontSize) {\n this.option.fontSize = this.getFontSize(this.option.fontSize);\n this.reset();\n }\n\n this.art.emit('artplayerPluginDanmuku:config', this.option);\n\n return this;\n }\n\n makeWait(danmu) {\n danmu.$state = 'wait';\n if (danmu.$ref) {\n danmu.$ref.style.visibility = 'hidden';\n danmu.$ref.style.marginLeft = '0px';\n danmu.$ref.style.transform = 'translateX(0px)';\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n this.$refs.push(danmu.$ref);\n danmu.$ref = null;\n }\n }\n\n continue() {\n const { clientWidth } = this.$player;\n this.filter('stop', (danmu) => {\n danmu.$state = 'emit';\n danmu.$lastStartTime = Date.now();\n switch (danmu.mode) {\n case 0: {\n const translateX = clientWidth + danmu.$ref.clientWidth;\n danmu.$ref.style.transform = `translateX(${-translateX}px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n }\n default:\n break;\n }\n });\n\n return this;\n }\n\n suspend() {\n const { clientWidth } = this.$player;\n this.filter('emit', (danmu) => {\n danmu.$state = 'stop';\n switch (danmu.mode) {\n case 0: {\n const translateX = clientWidth - (this.getLeft(danmu.$ref) - this.getLeft(this.$player));\n danmu.$ref.style.transform = `translateX(${-translateX}px)`;\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n break;\n }\n default:\n break;\n }\n });\n\n return this;\n }\n\n reset() {\n this.queue.forEach((danmu) => this.makeWait(danmu));\n return this;\n }\n\n update() {\n this.timer = window.requestAnimationFrame(async () => {\n if (this.art.playing && !this.isHide) {\n this.filter('emit', (danmu) => {\n const emitTime = (Date.now() - danmu.$lastStartTime) / 1000;\n danmu.$restTime -= emitTime;\n danmu.$lastStartTime = Date.now();\n if (danmu.$restTime <= 0) {\n this.makeWait(danmu);\n }\n });\n\n const readys = this.getReady();\n const { clientWidth, clientHeight } = this.$player;\n for (let index = 0; index < readys.length; index++) {\n const danmu = readys[index];\n danmu.$ref = this.getRef();\n danmu.$ref.innerText = danmu.text;\n this.$danmuku.appendChild(danmu.$ref);\n\n danmu.$ref.style.left = `${clientWidth}px`;\n danmu.$ref.style.opacity = this.option.opacity;\n danmu.$ref.style.fontSize = `${this.option.fontSize}px`;\n danmu.$ref.style.color = danmu.color;\n danmu.$ref.style.border = danmu.border ? `1px solid ${danmu.color}` : null;\n danmu.$ref.style.backgroundColor = danmu.border ? 'rgb(0 0 0 / 50%)' : null;\n danmu.$ref.style.marginLeft = '0px';\n\n danmu.$lastStartTime = Date.now();\n danmu.$restTime =\n this.option.synchronousPlayback && this.art.playbackRate\n ? this.option.speed / Number(this.art.playbackRate)\n : this.option.speed;\n\n const target = {\n mode: danmu.mode,\n height: danmu.$ref.clientHeight,\n speed: (clientWidth + danmu.$ref.clientWidth) / danmu.$restTime,\n };\n\n const { top } = await this.postMessage({\n target,\n emits: this.getEmits(),\n antiOverlap: this.option.antiOverlap,\n clientWidth: clientWidth,\n clientHeight: clientHeight,\n marginBottom: this.marginBottom,\n marginTop: this.marginTop,\n });\n\n if (danmu.$ref) {\n if (!this.isStop && top !== undefined) {\n danmu.$state = 'emit';\n danmu.$ref.style.visibility = 'visible';\n\n switch (danmu.mode) {\n case 0: {\n danmu.$ref.style.top = `${top}px`;\n const translateX = clientWidth + danmu.$ref.clientWidth;\n danmu.$ref.style.transform = `translateX(${-translateX}px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n }\n case 1:\n danmu.$ref.style.left = '50%';\n danmu.$ref.style.top = `${top}px`;\n danmu.$ref.style.marginLeft = `-${danmu.$ref.clientWidth / 2}px`;\n break;\n default:\n break;\n }\n } else {\n danmu.$state = 'ready';\n this.$refs.push(danmu.$ref);\n danmu.$ref = null;\n }\n }\n }\n }\n\n if (!this.isStop) {\n this.update();\n }\n });\n return this;\n }\n\n stop() {\n this.isStop = true;\n this.suspend();\n window.cancelAnimationFrame(this.timer);\n this.art.emit('artplayerPluginDanmuku:stop');\n return this;\n }\n\n start() {\n this.isStop = false;\n this.continue();\n this.update();\n this.art.emit('artplayerPluginDanmuku:start');\n return this;\n }\n\n show() {\n this.isHide = false;\n this.start();\n this.$danmuku.style.display = 'block';\n this.art.emit('artplayerPluginDanmuku:show');\n return this;\n }\n\n hide() {\n this.isHide = true;\n this.stop();\n this.queue.forEach((item) => this.makeWait(item));\n this.$danmuku.style.display = 'none';\n this.art.emit('artplayerPluginDanmuku:hide');\n return this;\n }\n\n emit(danmu) {\n this.validator(danmu, {\n text: 'string',\n mode: 'number|undefined',\n color: 'string|undefined',\n time: 'number|undefined',\n border: 'boolean|undefined',\n });\n\n if (!danmu.text.trim()) return this;\n if (!this.option.filter(danmu)) return this;\n\n if (danmu.time) {\n danmu.time = this.utils.clamp(danmu.time, 0, Infinity);\n } else {\n danmu.time = this.art.currentTime + 0.5;\n }\n\n if (danmu.mode === undefined) {\n danmu.mode = this.option.mode;\n }\n\n if (danmu.color === undefined) {\n danmu.color = this.option.color;\n }\n\n this.queue.push({\n ...danmu,\n $state: 'wait',\n $ref: null,\n $restTime: 0,\n $lastStartTime: 0,\n });\n\n return this;\n }\n\n destroy() {\n this.stop();\n if (this.worker && this.worker.terminate) this.worker.terminate();\n this.art.off('video:play', this.start);\n this.art.off('video:playing', this.start);\n this.art.off('video:pause', this.stop);\n this.art.off('video:waiting', this.stop);\n this.art.off('fullscreen', this.reset);\n this.art.off('fullscreenWeb', this.reset);\n this.art.off('destroy', this.destroy);\n this.art.emit('artplayerPluginDanmuku:destroy');\n }\n}\n","export function getMode(key) {\n switch (key) {\n case 1:\n case 2:\n case 3:\n return 0;\n case 4:\n case 5:\n return 1;\n default:\n return 0;\n }\n}\n\nexport function bilibiliDanmuParseFromXml(xmlString) {\n if (typeof xmlString !== 'string') return [];\n const matches = xmlString.matchAll(/.+?)\"(?: .*?)?>(?.+?)<\\/d>/gs);\n return Array.from(matches)\n .map((match) => {\n const attr = match.groups.p.split(',');\n if (attr.length >= 8) {\n const text = match.groups.text\n .trim()\n .replaceAll('"', '\"')\n .replaceAll(''', \"'\")\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('&', '&');\n\n return {\n text,\n time: Number(attr[0]),\n mode: getMode(Number(attr[1])),\n fontSize: Number(attr[2]),\n color: `#${Number(attr[3]).toString(16)}`,\n timestamp: Number(attr[4]),\n pool: Number(attr[5]),\n userID: attr[6],\n rowID: Number(attr[7]),\n };\n } else {\n return null;\n }\n })\n .filter(Boolean);\n}\n\nexport function bilibiliDanmuParseFromUrl(url) {\n return fetch(url)\n .then((res) => res.text())\n .then((xmlString) => bilibiliDanmuParseFromXml(xmlString));\n}\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n","export default function getDanmuTop({\n target,\n emits,\n clientWidth,\n clientHeight,\n marginBottom,\n marginTop,\n antiOverlap,\n}) {\n const danmus = emits\n .filter((item) => item.mode === target.mode && item.top <= clientHeight - marginBottom)\n .sort((prev, next) => prev.top - next.top);\n\n if (danmus.length === 0) {\n return marginTop;\n }\n\n danmus.unshift({\n top: 0,\n left: 0,\n right: 0,\n height: marginTop,\n width: clientWidth,\n speed: 0,\n distance: clientWidth,\n });\n\n danmus.push({\n top: clientHeight - marginBottom,\n left: 0,\n right: 0,\n height: marginBottom,\n width: clientWidth,\n speed: 0,\n distance: clientWidth,\n });\n\n for (let index = 1; index < danmus.length; index += 1) {\n const item = danmus[index];\n const prev = danmus[index - 1];\n const prevBottom = prev.top + prev.height;\n const diff = item.top - prevBottom;\n if (diff >= target.height) {\n return prevBottom;\n }\n }\n\n const topMap = [];\n for (let index = 1; index < danmus.length - 1; index += 1) {\n const item = danmus[index];\n if (topMap.length) {\n const last = topMap[topMap.length - 1];\n if (last[0].top === item.top) {\n last.push(item);\n } else {\n topMap.push([item]);\n }\n } else {\n topMap.push([item]);\n }\n }\n\n if (antiOverlap) {\n switch (target.mode) {\n case 0: {\n const result = topMap.find((list) => {\n return list.every((danmu) => {\n if (clientWidth < danmu.distance) return false;\n if (target.speed < danmu.speed) return true;\n const overlapTime = danmu.right / (target.speed - danmu.speed);\n if (overlapTime > danmu.time) return true;\n return false;\n });\n });\n\n return result && result[0] ? result[0].top : undefined;\n }\n case 1:\n return undefined;\n default:\n break;\n }\n } else {\n switch (target.mode) {\n case 0:\n topMap.sort((prev, next) => {\n const nextMinRight = Math.min(...next.map((item) => item.right));\n const prevMinRight = Math.min(...prev.map((item) => item.right));\n return nextMinRight * next.length - prevMinRight * prev.length;\n });\n break;\n case 1:\n topMap.sort((prev, next) => {\n const nextMaxWidth = Math.max(...next.map((item) => item.width));\n const prevMaxWidth = Math.max(...prev.map((item) => item.width));\n return prevMaxWidth * prev.length - nextMaxWidth * next.length;\n });\n break;\n default:\n break;\n }\n\n return topMap[0][0].top;\n }\n}\n","module.exports = \"f89064c706e65d5d\";","import style from 'bundle-text:./style.less';\nimport danmuOn from 'bundle-text:./img/danmu-on.svg';\nimport danmuOff from 'bundle-text:./img/danmu-off.svg';\nimport danmuConfig from 'bundle-text:./img/danmu-config.svg';\nimport danmuStyle from 'bundle-text:./img/danmu-style.svg';\n\nexport default function setting(art, danmuku) {\n const { option } = danmuku;\n const {\n template: { $controlsCenter, $player },\n constructor: {\n utils: { removeClass, addClass, append, setStyle, tooltip, query, inverseClass },\n },\n } = art;\n\n function getIcon(svg, key) {\n const icon = document.createElement('i');\n append(icon, svg);\n addClass(icon, 'art-icon');\n addClass(icon, `art-icon-${key}`);\n return icon;\n }\n\n setStyle($controlsCenter, 'display', 'flex');\n const $danmuOn = getIcon(danmuOn, 'danmu-on');\n const $danmuOff = getIcon(danmuOff, 'danmu-off');\n const $danmuConfig = getIcon(danmuConfig, 'danmu-config');\n const $danmuStyle = getIcon(danmuStyle, 'danmu-style');\n\n function addEmitter() {\n const colors = [\n '#FE0302',\n '#FF7204',\n '#FFAA02',\n '#FFD302',\n '#FFFF00',\n '#A0EE00',\n '#00CD00',\n '#019899',\n '#4266BE',\n '#89D5FF',\n '#CC0273',\n '#222222',\n '#9B9B9B',\n '#FFFFFF',\n ].map((item) => {\n const isCurrent = option.color === item ? ' art-current' : '';\n return `
`;\n });\n\n const $emitter = append(\n $controlsCenter,\n `\n
\n
\n
\n
\n
\n
模式
\n
\n
滚动
\n
静止
\n
\n
颜色
\n
\n ${colors.join('')}\n
\n
\n
\n
\n \n
\n
发送
\n
\n `,\n );\n\n const $style = query('.art-danmuku-style', $emitter);\n const $input = query('.art-danmuku-input', $emitter);\n const $send = query('.art-danmuku-send', $emitter);\n const $panel = query('.art-danmuku-style-panel-inner', $emitter);\n const $modes = query('.art-danmuku-style-panel-modes', $emitter);\n const $colors = query('.art-danmuku-style-panel-colors', $emitter);\n const $layer = option.mount || append($player, '
');\n\n if (art.option.backdrop) {\n addClass($panel, 'art-backdrop-filter');\n }\n\n if (option.theme) {\n addClass($emitter, `art-danmuku-theme-${option.theme}`);\n }\n\n let timer = null;\n let mode = option.mode;\n let color = option.color;\n append($style, $danmuStyle);\n\n function countdown(time) {\n if (time <= 0) {\n timer = null;\n $send.innerText = '发送';\n removeClass($send, 'art-disabled');\n } else {\n $send.innerText = time;\n timer = setTimeout(() => countdown(time - 1), 1000);\n }\n }\n\n function onSend() {\n const danmu = {\n mode,\n color,\n border: true,\n text: $input.value.trim(),\n };\n\n if (timer === null && option.beforeEmit(danmu)) {\n $input.value = '';\n danmuku.emit(danmu);\n addClass($send, 'art-disabled');\n countdown(option.lockTime);\n art.emit('artplayerPluginDanmuku:emit', danmu);\n }\n }\n\n function onResize() {\n if ($controlsCenter.clientWidth < option.minWidth) {\n append($layer, $emitter);\n setStyle($layer, 'display', 'flex');\n addClass($emitter, 'art-danmuku-mount');\n\n if (!option.mount) {\n setStyle($player, 'marginBottom', '40px');\n }\n } else {\n append($controlsCenter, $emitter);\n setStyle($layer, 'display', 'none');\n removeClass($emitter, 'art-danmuku-mount');\n\n if (!option.mount) {\n setStyle($player, 'marginBottom', null);\n }\n }\n }\n\n art.proxy($send, 'click', onSend);\n\n art.proxy($input, 'keypress', (event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n onSend();\n }\n });\n\n art.proxy($modes, 'click', (event) => {\n const { dataset } = event.target;\n if (dataset.mode) {\n mode = Number(dataset.mode);\n inverseClass(event.target, 'art-current');\n }\n });\n\n art.proxy($colors, 'click', (event) => {\n const { dataset } = event.target;\n if (dataset.color) {\n color = dataset.color;\n inverseClass(event.target, 'art-current');\n }\n });\n\n onResize();\n art.on('resize', () => {\n if (!art.isInput) {\n onResize();\n }\n });\n\n art.on('destroy', () => {\n if (option.mount && $emitter.parentElement === option.mount) {\n option.mount.removeChild($emitter);\n }\n });\n }\n\n function addControl() {\n art.controls.add({\n position: 'right',\n name: 'danmuku',\n click: function () {\n if (danmuku.isHide) {\n danmuku.show();\n art.notice.show = '弹幕显示';\n setStyle($danmuOn, 'display', null);\n setStyle($danmuOff, 'display', 'none');\n } else {\n danmuku.hide();\n art.notice.show = '弹幕隐藏';\n setStyle($danmuOn, 'display', 'none');\n setStyle($danmuOff, 'display', null);\n }\n },\n mounted($ref) {\n append($ref, $danmuOn);\n append($ref, $danmuOff);\n tooltip($ref, '弹幕开关');\n setStyle($danmuOff, 'display', 'none');\n },\n });\n }\n\n function addSetting() {\n art.setting.add({\n name: 'danmuku',\n html: '弹幕设置',\n tooltip: '更多',\n icon: $danmuConfig,\n selector: [\n {\n width: 200,\n html: '播放速度',\n icon: '',\n tooltip: '适中',\n selector: [\n {\n html: '极慢',\n time: 10,\n },\n {\n html: '较慢',\n time: 7.5,\n },\n {\n default: true,\n html: '适中',\n time: 5,\n },\n {\n html: '较快',\n time: 2.5,\n },\n {\n html: '极快',\n time: 1,\n },\n ],\n onSelect: function (item) {\n danmuku.config({\n speed: item.time,\n });\n return item.html;\n },\n },\n {\n width: 200,\n html: '字体大小',\n icon: '',\n tooltip: '适中',\n selector: [\n {\n html: '极小',\n fontSize: '4%',\n },\n {\n html: '较小',\n fontSize: '5%',\n },\n {\n default: true,\n html: '适中',\n fontSize: '6%',\n },\n {\n html: '较大',\n fontSize: '7%',\n },\n {\n html: '极大',\n fontSize: '8%',\n },\n ],\n onSelect: function (item) {\n danmuku.config({\n fontSize: item.fontSize,\n });\n return item.html;\n },\n },\n {\n width: 200,\n html: '不透明度',\n icon: '',\n tooltip: '100%',\n selector: [\n {\n default: true,\n opacity: 1,\n html: '100%',\n },\n {\n opacity: 0.75,\n html: '75%',\n },\n {\n opacity: 0.5,\n html: '50%',\n },\n {\n opacity: 0.25,\n html: '25%',\n },\n {\n opacity: 0,\n html: '0%',\n },\n ],\n onSelect: function (item) {\n danmuku.config({\n opacity: item.opacity,\n });\n return item.html;\n },\n },\n {\n width: 200,\n html: '显示范围',\n icon: '',\n tooltip: '3/4',\n selector: [\n {\n html: '1/4',\n margin: [10, '75%'],\n },\n {\n html: '半屏',\n margin: [10, '50%'],\n },\n {\n default: true,\n html: '3/4',\n margin: [10, '25%'],\n },\n {\n html: '满屏',\n margin: [10, 10],\n },\n ],\n onSelect: function (item) {\n danmuku.config({\n margin: item.margin,\n });\n return item.html;\n },\n },\n {\n html: '弹幕防重叠',\n icon: '',\n tooltip: option.antiOverlap ? '开启' : '关闭',\n switch: option.antiOverlap,\n onSwitch(item) {\n danmuku.config({\n antiOverlap: !item.switch,\n });\n item.tooltip = item.switch ? '关闭' : '开启';\n return !item.switch;\n },\n },\n {\n html: '同步视频速度',\n icon: '',\n tooltip: option.synchronousPlayback ? '开启' : '关闭',\n switch: option.synchronousPlayback,\n onSwitch(item) {\n danmuku.config({\n synchronousPlayback: !item.switch,\n });\n item.tooltip = item.switch ? '关闭' : '开启';\n return !item.switch;\n },\n },\n ],\n });\n }\n\n addEmitter();\n addControl();\n addSetting();\n}\n\nif (typeof document !== 'undefined') {\n if (!document.getElementById('artplayer-plugin-danmuku')) {\n const $style = document.createElement('style');\n $style.id = 'artplayer-plugin-danmuku';\n $style.textContent = style;\n document.head.appendChild($style);\n }\n}\n","module.exports = \"c09c1588fb4faeee\";","module.exports = \"ed96d9cba019193e\";","module.exports = \"50e63783768a51c7\";","module.exports = \"6d994b91570c2465\";","module.exports = \"5e37f7b89903ad61\";"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../../"} \ No newline at end of file +{"mappings":"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","sources":["packages/artplayer-plugin-danmuku/src/index.js","packages/artplayer-plugin-danmuku/src/danmuku.js","packages/artplayer-plugin-danmuku/src/bilibili.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js","packages/artplayer-plugin-danmuku/src/getDanmuTop.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-b61db27680d5896e.js","packages/artplayer-plugin-danmuku/src/setting.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-e633bd0642c0f6d8.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-6b6314fb95d0f9c4.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-63e2f0a59f61ce30.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-8c344af6de265517.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-5db94c18a44eaa0a.js"],"sourcesContent":["import Danmuku from './danmuku';\nimport setting from './setting';\n\nfunction checkVersion(art) {\n const {\n version,\n utils: { errorHandle },\n } = art.constructor;\n const arr = version.split('.').map(Number);\n const major = arr[0];\n const minor = arr[1] / 100;\n errorHandle(major + minor >= 5, `Artplayer.js@${version} 不兼容该弹幕库,请更新到 5 版本以上`);\n}\n\nexport default function artplayerPluginDanmuku(option) {\n return (art) => {\n checkVersion(art);\n const danmuku = new Danmuku(art, option);\n setting(art, danmuku);\n return {\n name: 'artplayerPluginDanmuku',\n emit: danmuku.emit.bind(danmuku),\n load: danmuku.load.bind(danmuku),\n config: danmuku.config.bind(danmuku),\n hide: danmuku.hide.bind(danmuku),\n show: danmuku.show.bind(danmuku),\n reset: danmuku.reset.bind(danmuku),\n get option() {\n return danmuku.option;\n },\n get isHide() {\n return danmuku.isHide;\n },\n get isStop() {\n return danmuku.isStop;\n },\n };\n };\n}\n\nartplayerPluginDanmuku.env = process.env.NODE_ENV;\nartplayerPluginDanmuku.version = process.env.APP_VER;\nartplayerPluginDanmuku.build = process.env.BUILD_DATE;\n\nif (typeof window !== 'undefined') {\n window['artplayerPluginDanmuku'] = artplayerPluginDanmuku;\n}\n","import { bilibiliDanmuParseFromUrl } from './bilibili';\nimport getDanmuTop from './getDanmuTop';\n\nexport default class Danmuku {\n constructor(art, option) {\n const { constructor, template } = art;\n\n this.utils = constructor.utils;\n this.validator = constructor.validator;\n this.$danmuku = template.$danmuku;\n this.$player = template.$player;\n\n this.art = art;\n this.queue = [];\n this.option = {};\n this.$refs = [];\n this.isStop = false;\n this.isHide = false;\n this.timer = null;\n this.config(option);\n\n if (this.option.useWorker) {\n try {\n this.worker = new Worker(new URL('data-url:./worker.js', import.meta.url));\n } catch (error) {\n //\n }\n }\n\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n this.reset = this.reset.bind(this);\n this.destroy = this.destroy.bind(this);\n\n art.on('video:play', this.start);\n art.on('video:playing', this.start);\n art.on('video:pause', this.stop);\n art.on('video:waiting', this.stop);\n art.on('resize', this.reset);\n art.on('destroy', this.destroy);\n\n this.load();\n }\n\n static get option() {\n return {\n danmuku: [],\n speed: 5,\n margin: ['2%', '25%'],\n opacity: 1,\n color: '#FFFFFF',\n mode: 0,\n fontSize: 25,\n filter: () => true,\n antiOverlap: true,\n useWorker: true,\n synchronousPlayback: false,\n lockTime: 5,\n maxLength: 100,\n minWidth: 200,\n maxWidth: 400,\n mount: undefined,\n theme: 'dark',\n beforeEmit: () => true,\n };\n }\n\n static get scheme() {\n return {\n danmuku: 'array|function|string',\n speed: 'number',\n margin: 'array',\n opacity: 'number',\n color: 'string',\n mode: 'number',\n fontSize: 'number|string',\n filter: 'function',\n antiOverlap: 'boolean',\n useWorker: 'boolean',\n synchronousPlayback: 'boolean',\n lockTime: 'number',\n maxLength: 'number',\n minWidth: 'number',\n maxWidth: 'number',\n mount: 'undefined|htmldivelement',\n theme: 'string',\n beforeEmit: 'function',\n };\n }\n\n get isRotate() {\n return this.art.plugins.autoOrientation && this.art.plugins.autoOrientation.state;\n }\n\n get marginTop() {\n const { clamp } = this.utils;\n const value = this.option.margin[0];\n const { clientHeight } = this.$player;\n\n if (typeof value === 'number') {\n return clamp(value, 0, clientHeight);\n }\n\n if (typeof value === 'string' && value.endsWith('%')) {\n const ratio = parseFloat(value) / 100;\n return clamp(clientHeight * ratio, 0, clientHeight);\n }\n\n return Danmuku.option.margin[0];\n }\n\n get marginBottom() {\n const { clamp } = this.utils;\n const value = this.option.margin[1];\n const { clientHeight } = this.$player;\n\n if (typeof value === 'number') {\n return clamp(value, 0, clientHeight);\n }\n\n if (typeof value === 'string' && value.endsWith('%')) {\n const ratio = parseFloat(value) / 100;\n return clamp(clientHeight * ratio, 0, clientHeight);\n }\n\n return Danmuku.option.margin[1];\n }\n\n filter(state, callback) {\n return this.queue.filter((danmu) => danmu.$state === state).map(callback);\n }\n\n getLeft($ref) {\n const rect = $ref.getBoundingClientRect();\n return this.isRotate ? rect.top : rect.left;\n }\n\n getRef() {\n const $refCache = this.$refs.pop();\n if ($refCache) return $refCache;\n\n const $ref = document.createElement('div');\n\n $ref.style.cssText = `\n user-select: none;\n position: absolute;\n white-space: pre;\n pointer-events: none;\n perspective: 500px;\n display: inline-block;\n will-change: transform;\n font-weight: normal;\n line-height: 1.125;\n visibility: hidden;\n font-family: SimHei, \"Microsoft JhengHei\", Arial, Helvetica, sans-serif;\n text-shadow: rgb(0, 0, 0) 1px 0px 1px, rgb(0, 0, 0) 0px 1px 1px, rgb(0, 0, 0) 0px -1px 1px, rgb(0, 0, 0) -1px 0px 1px;\n `;\n\n return $ref;\n }\n\n getReady() {\n const { currentTime } = this.art;\n return this.queue.filter((danmu) => {\n return (\n danmu.$state === 'ready' ||\n (danmu.$state === 'wait' && currentTime + 0.1 >= danmu.time && danmu.time >= currentTime - 0.1)\n );\n });\n }\n\n getEmits() {\n const result = [];\n const { clientWidth } = this.$player;\n const clientLeft = this.getLeft(this.$player);\n\n this.filter('emit', (danmu) => {\n const top = danmu.$ref.offsetTop;\n const left = this.getLeft(danmu.$ref) - clientLeft;\n const height = danmu.$ref.clientHeight;\n const width = danmu.$ref.clientWidth;\n const distance = left + width;\n const right = clientWidth - distance;\n const speed = distance / danmu.$restTime;\n\n const emit = {};\n emit.top = top;\n emit.left = left;\n emit.height = height;\n emit.width = width;\n emit.right = right;\n emit.speed = speed;\n emit.distance = distance;\n emit.time = danmu.$restTime;\n emit.mode = danmu.mode;\n\n result.push(emit);\n });\n\n return result;\n }\n\n getFontSize(fontSize) {\n const { clamp } = this.utils;\n const { clientHeight } = this.$player;\n\n if (typeof fontSize === 'number') {\n return clamp(fontSize, 12, clientHeight);\n }\n\n if (typeof fontSize === 'string' && fontSize.endsWith('%')) {\n const ratio = parseFloat(fontSize) / 100;\n return clamp(clientHeight * ratio, 12, clientHeight);\n }\n\n return Danmuku.option.fontSize;\n }\n\n postMessage(message = {}) {\n return new Promise((resolve) => {\n if (this.option.useWorker && this.worker && this.worker.postMessage) {\n message.id = Date.now();\n this.worker.postMessage(message);\n this.worker.onmessage = (event) => {\n const { data } = event;\n if (data.id === message.id) {\n resolve(data);\n }\n };\n } else {\n const top = getDanmuTop(message);\n resolve({ top });\n }\n });\n }\n\n async load() {\n try {\n let danmus = [];\n if (typeof this.option.danmuku === 'function') {\n danmus = await this.option.danmuku();\n } else if (typeof this.option.danmuku.then === 'function') {\n danmus = await this.option.danmuku;\n } else if (typeof this.option.danmuku === 'string') {\n danmus = await bilibiliDanmuParseFromUrl(this.option.danmuku);\n } else {\n danmus = this.option.danmuku;\n }\n\n this.utils.errorHandle(Array.isArray(danmus), 'Danmuku need return an array as result');\n this.art.emit('artplayerPluginDanmuku:loaded', danmus);\n\n this.queue = [];\n this.$danmuku.innerText = '';\n danmus.forEach((danmu) => this.emit(danmu));\n } catch (error) {\n this.art.emit('artplayerPluginDanmuku:error', error);\n throw error;\n }\n\n return this;\n }\n\n config(option) {\n const { clamp } = this.utils;\n\n this.option = Object.assign({}, Danmuku.option, this.option, option);\n this.validator(this.option, Danmuku.scheme);\n\n this.option.speed = clamp(this.option.speed, 1, 10);\n this.option.opacity = clamp(this.option.opacity, 0, 1);\n this.option.lockTime = clamp(Math.floor(this.option.lockTime), 0, 60);\n this.option.maxLength = clamp(this.option.maxLength, 0, 500);\n this.option.minWidth = clamp(this.option.minWidth, 0, 500);\n this.option.maxWidth = clamp(this.option.maxWidth, 0, Infinity);\n\n if (option.fontSize) {\n this.option.fontSize = this.getFontSize(this.option.fontSize);\n this.reset();\n }\n\n this.art.emit('artplayerPluginDanmuku:config', this.option);\n\n return this;\n }\n\n makeWait(danmu) {\n danmu.$state = 'wait';\n if (danmu.$ref) {\n danmu.$ref.style.visibility = 'hidden';\n danmu.$ref.style.marginLeft = '0px';\n danmu.$ref.style.transform = 'translateX(0px)';\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n this.$refs.push(danmu.$ref);\n danmu.$ref = null;\n }\n }\n\n continue() {\n const { clientWidth } = this.$player;\n this.filter('stop', (danmu) => {\n danmu.$state = 'emit';\n danmu.$lastStartTime = Date.now();\n switch (danmu.mode) {\n case 0: {\n const translateX = clientWidth + danmu.$ref.clientWidth;\n danmu.$ref.style.transform = `translateX(${-translateX}px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n }\n default:\n break;\n }\n });\n\n return this;\n }\n\n suspend() {\n const { clientWidth } = this.$player;\n this.filter('emit', (danmu) => {\n danmu.$state = 'stop';\n switch (danmu.mode) {\n case 0: {\n const translateX = clientWidth - (this.getLeft(danmu.$ref) - this.getLeft(this.$player));\n danmu.$ref.style.transform = `translateX(${-translateX}px)`;\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n break;\n }\n default:\n break;\n }\n });\n\n return this;\n }\n\n reset() {\n this.queue.forEach((danmu) => this.makeWait(danmu));\n return this;\n }\n\n update() {\n this.timer = window.requestAnimationFrame(async () => {\n if (this.art.playing && !this.isHide) {\n this.filter('emit', (danmu) => {\n const emitTime = (Date.now() - danmu.$lastStartTime) / 1000;\n danmu.$restTime -= emitTime;\n danmu.$lastStartTime = Date.now();\n if (danmu.$restTime <= 0) {\n this.makeWait(danmu);\n }\n });\n\n const readys = this.getReady();\n const { clientWidth, clientHeight } = this.$player;\n for (let index = 0; index < readys.length; index++) {\n const danmu = readys[index];\n danmu.$ref = this.getRef();\n danmu.$ref.innerText = danmu.text;\n this.$danmuku.appendChild(danmu.$ref);\n\n danmu.$ref.style.left = `${clientWidth}px`;\n danmu.$ref.style.opacity = this.option.opacity;\n danmu.$ref.style.fontSize = `${this.option.fontSize}px`;\n danmu.$ref.style.color = danmu.color;\n danmu.$ref.style.border = danmu.border ? `1px solid ${danmu.color}` : null;\n danmu.$ref.style.backgroundColor = danmu.border ? 'rgb(0 0 0 / 50%)' : null;\n danmu.$ref.style.marginLeft = '0px';\n\n danmu.$lastStartTime = Date.now();\n danmu.$restTime =\n this.option.synchronousPlayback && this.art.playbackRate\n ? this.option.speed / Number(this.art.playbackRate)\n : this.option.speed;\n\n const target = {\n mode: danmu.mode,\n height: danmu.$ref.clientHeight,\n speed: (clientWidth + danmu.$ref.clientWidth) / danmu.$restTime,\n };\n\n const { top } = await this.postMessage({\n target,\n emits: this.getEmits(),\n antiOverlap: this.option.antiOverlap,\n clientWidth: clientWidth,\n clientHeight: clientHeight,\n marginBottom: this.marginBottom,\n marginTop: this.marginTop,\n });\n\n if (danmu.$ref) {\n if (!this.isStop && top !== undefined) {\n danmu.$state = 'emit';\n danmu.$ref.style.visibility = 'visible';\n\n switch (danmu.mode) {\n case 0: {\n danmu.$ref.style.top = `${top}px`;\n const translateX = clientWidth + danmu.$ref.clientWidth;\n danmu.$ref.style.transform = `translateX(${-translateX}px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n }\n case 1:\n danmu.$ref.style.left = '50%';\n danmu.$ref.style.top = `${top}px`;\n danmu.$ref.style.marginLeft = `-${danmu.$ref.clientWidth / 2}px`;\n break;\n default:\n break;\n }\n } else {\n danmu.$state = 'ready';\n this.$refs.push(danmu.$ref);\n danmu.$ref = null;\n }\n }\n }\n }\n\n if (!this.isStop) {\n this.update();\n }\n });\n return this;\n }\n\n stop() {\n this.isStop = true;\n this.suspend();\n window.cancelAnimationFrame(this.timer);\n this.art.emit('artplayerPluginDanmuku:stop');\n return this;\n }\n\n start() {\n this.isStop = false;\n this.continue();\n this.update();\n this.art.emit('artplayerPluginDanmuku:start');\n return this;\n }\n\n show() {\n this.isHide = false;\n this.start();\n this.$danmuku.style.display = 'block';\n this.art.emit('artplayerPluginDanmuku:show');\n return this;\n }\n\n hide() {\n this.isHide = true;\n this.stop();\n this.queue.forEach((item) => this.makeWait(item));\n this.$danmuku.style.display = 'none';\n this.art.emit('artplayerPluginDanmuku:hide');\n return this;\n }\n\n emit(danmu) {\n this.validator(danmu, {\n text: 'string',\n mode: 'number|undefined',\n color: 'string|undefined',\n time: 'number|undefined',\n border: 'boolean|undefined',\n });\n\n if (!danmu.text.trim()) return this;\n if (!this.option.filter(danmu)) return this;\n\n if (danmu.time) {\n danmu.time = this.utils.clamp(danmu.time, 0, Infinity);\n } else {\n danmu.time = this.art.currentTime + 0.5;\n }\n\n if (danmu.mode === undefined) {\n danmu.mode = this.option.mode;\n }\n\n if (danmu.color === undefined) {\n danmu.color = this.option.color;\n }\n\n this.queue.push({\n ...danmu,\n $state: 'wait',\n $ref: null,\n $restTime: 0,\n $lastStartTime: 0,\n });\n\n return this;\n }\n\n destroy() {\n this.stop();\n if (this.worker && this.worker.terminate) this.worker.terminate();\n this.art.off('video:play', this.start);\n this.art.off('video:playing', this.start);\n this.art.off('video:pause', this.stop);\n this.art.off('video:waiting', this.stop);\n this.art.off('fullscreen', this.reset);\n this.art.off('fullscreenWeb', this.reset);\n this.art.off('destroy', this.destroy);\n this.art.emit('artplayerPluginDanmuku:destroy');\n }\n}\n","export function getMode(key) {\n switch (key) {\n case 1:\n case 2:\n case 3:\n return 0;\n case 4:\n case 5:\n return 1;\n default:\n return 0;\n }\n}\n\nexport function bilibiliDanmuParseFromXml(xmlString) {\n if (typeof xmlString !== 'string') return [];\n const matches = xmlString.matchAll(/.+?)\"(?: .*?)?>(?.+?)<\\/d>/gs);\n return Array.from(matches)\n .map((match) => {\n const attr = match.groups.p.split(',');\n if (attr.length >= 8) {\n const text = match.groups.text\n .trim()\n .replaceAll('"', '\"')\n .replaceAll(''', \"'\")\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('&', '&');\n\n return {\n text,\n time: Number(attr[0]),\n mode: getMode(Number(attr[1])),\n fontSize: Number(attr[2]),\n color: `#${Number(attr[3]).toString(16)}`,\n timestamp: Number(attr[4]),\n pool: Number(attr[5]),\n userID: attr[6],\n rowID: Number(attr[7]),\n };\n } else {\n return null;\n }\n })\n .filter(Boolean);\n}\n\nexport function bilibiliDanmuParseFromUrl(url) {\n return fetch(url)\n .then((res) => res.text())\n .then((xmlString) => bilibiliDanmuParseFromXml(xmlString));\n}\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n","export default function getDanmuTop({\n target,\n emits,\n clientWidth,\n clientHeight,\n marginBottom,\n marginTop,\n antiOverlap,\n}) {\n const danmus = emits\n .filter((item) => item.mode === target.mode && item.top <= clientHeight - marginBottom)\n .sort((prev, next) => prev.top - next.top);\n\n if (danmus.length === 0) {\n return marginTop;\n }\n\n danmus.unshift({\n top: 0,\n left: 0,\n right: 0,\n height: marginTop,\n width: clientWidth,\n speed: 0,\n distance: clientWidth,\n });\n\n danmus.push({\n top: clientHeight - marginBottom,\n left: 0,\n right: 0,\n height: marginBottom,\n width: clientWidth,\n speed: 0,\n distance: clientWidth,\n });\n\n for (let index = 1; index < danmus.length; index += 1) {\n const item = danmus[index];\n const prev = danmus[index - 1];\n const prevBottom = prev.top + prev.height;\n const diff = item.top - prevBottom;\n if (diff >= target.height) {\n return prevBottom;\n }\n }\n\n const topMap = [];\n for (let index = 1; index < danmus.length - 1; index += 1) {\n const item = danmus[index];\n if (topMap.length) {\n const last = topMap[topMap.length - 1];\n if (last[0].top === item.top) {\n last.push(item);\n } else {\n topMap.push([item]);\n }\n } else {\n topMap.push([item]);\n }\n }\n\n if (antiOverlap) {\n switch (target.mode) {\n case 0: {\n const result = topMap.find((list) => {\n return list.every((danmu) => {\n if (clientWidth < danmu.distance) return false;\n if (target.speed < danmu.speed) return true;\n const overlapTime = danmu.right / (target.speed - danmu.speed);\n if (overlapTime > danmu.time) return true;\n return false;\n });\n });\n\n return result && result[0] ? result[0].top : undefined;\n }\n case 1:\n return undefined;\n default:\n break;\n }\n } else {\n switch (target.mode) {\n case 0:\n topMap.sort((prev, next) => {\n const nextMinRight = Math.min(...next.map((item) => item.right));\n const prevMinRight = Math.min(...prev.map((item) => item.right));\n return nextMinRight * next.length - prevMinRight * prev.length;\n });\n break;\n case 1:\n topMap.sort((prev, next) => {\n const nextMaxWidth = Math.max(...next.map((item) => item.width));\n const prevMaxWidth = Math.max(...prev.map((item) => item.width));\n return prevMaxWidth * prev.length - nextMaxWidth * next.length;\n });\n break;\n default:\n break;\n }\n\n return topMap[0][0].top;\n }\n}\n","module.exports = \"f89064c706e65d5d\";","import style from 'bundle-text:./style.less';\nimport danmuOn from 'bundle-text:./img/danmu-on.svg';\nimport danmuOff from 'bundle-text:./img/danmu-off.svg';\nimport danmuConfig from 'bundle-text:./img/danmu-config.svg';\nimport danmuStyle from 'bundle-text:./img/danmu-style.svg';\n\nexport default function setting(art, danmuku) {\n const { option } = danmuku;\n const {\n template: { $controlsCenter, $player },\n constructor: {\n utils: { removeClass, addClass, append, setStyle, tooltip, query, inverseClass, getIcon },\n },\n } = art;\n\n setStyle($controlsCenter, 'display', 'flex');\n\n const $danmuOn = getIcon('danmu-on', danmuOn);\n const $danmuOff = getIcon('danmu-off', danmuOff);\n const $danmuConfig = getIcon('danmu-config', danmuConfig);\n const $danmuStyle = getIcon('danmu-style', danmuStyle);\n\n function addEmitter() {\n const colors = [\n '#FE0302',\n '#FF7204',\n '#FFAA02',\n '#FFD302',\n '#FFFF00',\n '#A0EE00',\n '#00CD00',\n '#019899',\n '#4266BE',\n '#89D5FF',\n '#CC0273',\n '#222222',\n '#9B9B9B',\n '#FFFFFF',\n ].map((item) => {\n const isCurrent = option.color === item ? ' art-current' : '';\n return `
`;\n });\n\n const $emitter = append(\n $controlsCenter,\n `\n
\n
\n
\n
\n
\n
模式
\n
\n
滚动
\n
静止
\n
\n
颜色
\n
\n ${colors.join('')}\n
\n
\n
\n
\n \n
\n
发送
\n
\n `,\n );\n\n const $style = query('.art-danmuku-style', $emitter);\n const $input = query('.art-danmuku-input', $emitter);\n const $send = query('.art-danmuku-send', $emitter);\n const $panel = query('.art-danmuku-style-panel-inner', $emitter);\n const $modes = query('.art-danmuku-style-panel-modes', $emitter);\n const $colors = query('.art-danmuku-style-panel-colors', $emitter);\n const $layer = option.mount || append($player, '
');\n\n if (art.option.backdrop) {\n addClass($panel, 'art-backdrop-filter');\n }\n\n if (option.theme) {\n addClass($emitter, `art-danmuku-theme-${option.theme}`);\n }\n\n let timer = null;\n let mode = option.mode;\n let color = option.color;\n append($style, $danmuStyle);\n\n function countdown(time) {\n if (time <= 0) {\n timer = null;\n $send.innerText = '发送';\n removeClass($send, 'art-disabled');\n } else {\n $send.innerText = time;\n timer = setTimeout(() => countdown(time - 1), 1000);\n }\n }\n\n function onSend() {\n const danmu = {\n mode,\n color,\n border: true,\n text: $input.value.trim(),\n };\n\n if (timer === null && option.beforeEmit(danmu)) {\n $input.value = '';\n danmuku.emit(danmu);\n addClass($send, 'art-disabled');\n countdown(option.lockTime);\n art.emit('artplayerPluginDanmuku:emit', danmu);\n }\n }\n\n function onResize() {\n if ($controlsCenter.clientWidth < option.minWidth) {\n append($layer, $emitter);\n setStyle($layer, 'display', 'flex');\n addClass($emitter, 'art-danmuku-mount');\n\n if (!option.mount) {\n setStyle($player, 'marginBottom', '40px');\n }\n } else {\n append($controlsCenter, $emitter);\n setStyle($layer, 'display', 'none');\n removeClass($emitter, 'art-danmuku-mount');\n\n if (!option.mount) {\n setStyle($player, 'marginBottom', null);\n }\n }\n }\n\n art.proxy($send, 'click', onSend);\n\n art.proxy($input, 'keypress', (event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n onSend();\n }\n });\n\n art.proxy($modes, 'click', (event) => {\n const { dataset } = event.target;\n if (dataset.mode) {\n mode = Number(dataset.mode);\n inverseClass(event.target, 'art-current');\n }\n });\n\n art.proxy($colors, 'click', (event) => {\n const { dataset } = event.target;\n if (dataset.color) {\n color = dataset.color;\n inverseClass(event.target, 'art-current');\n }\n });\n\n onResize();\n art.on('resize', () => {\n if (!art.isInput) {\n onResize();\n }\n });\n\n art.on('destroy', () => {\n if (option.mount && $emitter.parentElement === option.mount) {\n option.mount.removeChild($emitter);\n }\n });\n }\n\n function addControl() {\n art.controls.add({\n position: 'right',\n name: 'danmuku',\n click: function () {\n if (danmuku.isHide) {\n danmuku.show();\n art.notice.show = '弹幕显示';\n setStyle($danmuOn, 'display', null);\n setStyle($danmuOff, 'display', 'none');\n } else {\n danmuku.hide();\n art.notice.show = '弹幕隐藏';\n setStyle($danmuOn, 'display', 'none');\n setStyle($danmuOff, 'display', null);\n }\n },\n mounted($ref) {\n append($ref, $danmuOn);\n append($ref, $danmuOff);\n tooltip($ref, '弹幕开关');\n setStyle($danmuOff, 'display', 'none');\n },\n });\n }\n\n function addSetting() {\n art.setting.add({\n name: 'danmuku',\n html: '弹幕设置',\n tooltip: '更多',\n icon: $danmuConfig,\n selector: [\n {\n width: 200,\n html: '播放速度',\n icon: '',\n tooltip: '适中',\n selector: [\n {\n html: '极慢',\n time: 10,\n },\n {\n html: '较慢',\n time: 7.5,\n },\n {\n default: true,\n html: '适中',\n time: 5,\n },\n {\n html: '较快',\n time: 2.5,\n },\n {\n html: '极快',\n time: 1,\n },\n ],\n onSelect: function (item) {\n danmuku.config({\n speed: item.time,\n });\n return item.html;\n },\n },\n {\n width: 200,\n html: '字体大小',\n icon: '',\n tooltip: '适中',\n selector: [\n {\n html: '极小',\n fontSize: '4%',\n },\n {\n html: '较小',\n fontSize: '5%',\n },\n {\n default: true,\n html: '适中',\n fontSize: '6%',\n },\n {\n html: '较大',\n fontSize: '7%',\n },\n {\n html: '极大',\n fontSize: '8%',\n },\n ],\n onSelect: function (item) {\n danmuku.config({\n fontSize: item.fontSize,\n });\n return item.html;\n },\n },\n {\n width: 200,\n html: '不透明度',\n icon: '',\n tooltip: '100%',\n selector: [\n {\n default: true,\n opacity: 1,\n html: '100%',\n },\n {\n opacity: 0.75,\n html: '75%',\n },\n {\n opacity: 0.5,\n html: '50%',\n },\n {\n opacity: 0.25,\n html: '25%',\n },\n {\n opacity: 0,\n html: '0%',\n },\n ],\n onSelect: function (item) {\n danmuku.config({\n opacity: item.opacity,\n });\n return item.html;\n },\n },\n {\n width: 200,\n html: '显示范围',\n icon: '',\n tooltip: '3/4',\n selector: [\n {\n html: '1/4',\n margin: [10, '75%'],\n },\n {\n html: '半屏',\n margin: [10, '50%'],\n },\n {\n default: true,\n html: '3/4',\n margin: [10, '25%'],\n },\n {\n html: '满屏',\n margin: [10, 10],\n },\n ],\n onSelect: function (item) {\n danmuku.config({\n margin: item.margin,\n });\n return item.html;\n },\n },\n {\n html: '弹幕防重叠',\n icon: '',\n tooltip: option.antiOverlap ? '开启' : '关闭',\n switch: option.antiOverlap,\n onSwitch(item) {\n danmuku.config({\n antiOverlap: !item.switch,\n });\n item.tooltip = item.switch ? '关闭' : '开启';\n return !item.switch;\n },\n },\n {\n html: '同步视频速度',\n icon: '',\n tooltip: option.synchronousPlayback ? '开启' : '关闭',\n switch: option.synchronousPlayback,\n onSwitch(item) {\n danmuku.config({\n synchronousPlayback: !item.switch,\n });\n item.tooltip = item.switch ? '关闭' : '开启';\n return !item.switch;\n },\n },\n ],\n });\n }\n\n addEmitter();\n addControl();\n addSetting();\n}\n\nif (typeof document !== 'undefined') {\n if (!document.getElementById('artplayer-plugin-danmuku')) {\n const $style = document.createElement('style');\n $style.id = 'artplayer-plugin-danmuku';\n $style.textContent = style;\n document.head.appendChild($style);\n }\n}\n","module.exports = \"c09c1588fb4faeee\";","module.exports = \"ed96d9cba019193e\";","module.exports = \"50e63783768a51c7\";","module.exports = \"6d994b91570c2465\";","module.exports = \"5e37f7b89903ad61\";"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../../"} \ No newline at end of file diff --git a/docs/uncompiled/artplayer/index.js b/docs/uncompiled/artplayer/index.js index 6e530c01e..41ef365f8 100644 --- a/docs/uncompiled/artplayer/index.js +++ b/docs/uncompiled/artplayer/index.js @@ -249,7 +249,7 @@ class Artplayer extends (0, _emitterDefault.default) { return "development"; } static get build() { - return "2023-04-23 12:16:56"; + return "2023-04-23 13:56:32"; } static get config() { return 0, _configDefault.default; @@ -419,7 +419,7 @@ if (typeof window !== "undefined") window["Artplayer"] = Artplayer; console.log(`%c ArtPlayer %c ${Artplayer.version} %c https://artplayer.org`, "color: #fff; background: #5f5f5f", "color: #fff; background: #4bc729", ""); },{"bundle-text:./style/index.less":"SvnDa","option-validator":"2tbdu","./utils/emitter":"elSLF","./utils":"jmgNb","./scheme":"gL38d","./config":"2ZnKD","./whitelist":"gd0pl","./template":"bDTDS","./i18n":"k0CtI","./player":"35XKf","./control":"faO0X","./contextmenu":"5npaZ","./info":"6vVKE","./subtitle":"4exyO","./events":"dz5ul","./hotkey":"1nFqF","./layer":"fvy8V","./loading":"h8KPY","./notice":"cr1XY","./mask":"llnR4","./icons":"gP6M7","./setting":"e5Aaq","./storage":"feFxw","./plugins":"h1hfO","./mobile":"c9n1Y","@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"SvnDa":[function(require,module,exports) { -module.exports = ".art-video-player {\n --art-theme: red;\n --art-font-color: #fff;\n --art-background-color: #000;\n --art-text-shadow-color: #00000080;\n --art-transition-duration: .2s;\n --art-padding: 10px;\n --art-border-radius: 3px;\n --art-progress-height: 6px;\n --art-progress-color: #fff3;\n --art-hover-color: #ffffff80;\n --art-loaded-color: #fff3;\n --art-loop-color: #ffffffbf;\n --art-state-size: 80px;\n --art-state-opacity: .8;\n --art-bottom-height: 100px;\n --art-bottom-offset: 20px;\n --art-bottom-gap: 5px;\n --art-highlight-width: 8px;\n --art-highlight-color: #ffffff80;\n --art-loop-width: 2px;\n --art-control-height: 46px;\n --art-control-opacity: .75;\n --art-control-icon-size: 36px;\n --art-control-icon-scale: 1.1;\n --art-volume-height: 120px;\n --art-volume-handle-size: 14px;\n --art-lock-size: 36px;\n --art-indicator-scale: 0;\n --art-indicator-size: 16px;\n --art-fullscreen-web-index: 9999;\n --art-settings-scale: 1;\n --art-settings-icon-size: 24px;\n --art-settings-max-height: 300px;\n --art-selector-max-height: 300px;\n --art-contextmenus-min-width: 250px;\n --art-subtitle-font-size: 20px;\n --art-subtitle-gap: 5px;\n --art-subtitle-bottom: 15px;\n --art-subtitle-border: #000;\n --art-widget-background: #000000d9;\n --art-tip-background: #00000080;\n --art-scrollbar-size: 4px;\n --art-scrollbar-background: #ffffff40;\n --art-scrollbar-background-hover: #ffffff80;\n --art-mini-progress-height: 2px;\n}\n\n.art-bg-cover {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n}\n\n.art-bottom-gradient {\n background-image: linear-gradient(to top, #000, #0006, #0000);\n background-position: bottom;\n background-repeat: repeat-x;\n}\n\n.art-backdrop-filter {\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n background-color: #000000bf !important;\n}\n\n.art-truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.art-video-player {\n width: 100%;\n height: 100%;\n zoom: 1;\n text-align: left;\n direction: ltr;\n user-select: none;\n box-sizing: border-box;\n color: var(--art-font-color);\n background-color: var(--art-background-color);\n text-shadow: 0 0 2px var(--art-text-shadow-color);\n -webkit-tap-highlight-color: #0000;\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n -ms-high-contrast-adjust: none;\n outline: 0;\n margin: 0 auto;\n padding: 0;\n font-family: PingFang SC, Helvetica Neue, Microsoft YaHei, Roboto, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.3;\n position: relative;\n}\n\n.art-video-player *, .art-video-player :before, .art-video-player :after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\n.art-video-player ::-webkit-scrollbar {\n width: var(--art-scrollbar-size);\n height: var(--art-scrollbar-size);\n}\n\n.art-video-player ::-webkit-scrollbar-thumb {\n background-color: var(--art-scrollbar-background);\n}\n\n.art-video-player ::-webkit-scrollbar-thumb:hover {\n background-color: var(--art-scrollbar-background-hover);\n}\n\n.art-video-player img {\n max-width: 100%;\n vertical-align: top;\n}\n\n.art-video-player svg {\n fill: var(--art-font-color);\n}\n\n.art-video-player a {\n color: var(--art-font-color);\n text-decoration: none;\n}\n\n.art-icon {\n justify-content: center;\n align-items: center;\n line-height: 1;\n display: flex;\n}\n\n.art-video-player.art-backdrop .art-contextmenus, .art-video-player.art-backdrop .art-info, .art-video-player.art-backdrop .art-settings, .art-video-player.art-backdrop .art-layer-auto-playback, .art-video-player.art-backdrop .art-selector-list, .art-video-player.art-backdrop .art-volume-inner {\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n background-color: #000000bf !important;\n}\n\n.art-video {\n z-index: 10;\n width: 100%;\n height: 100%;\n cursor: pointer;\n position: absolute;\n inset: 0;\n}\n\n.art-poster {\n z-index: 11;\n width: 100%;\n height: 100%;\n pointer-events: none;\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n position: absolute;\n inset: 0;\n}\n\n.art-video-player .art-subtitle {\n z-index: 20;\n width: 100%;\n text-align: center;\n pointer-events: none;\n justify-content: center;\n align-items: center;\n gap: var(--art-subtitle-gap);\n bottom: var(--art-subtitle-bottom);\n font-size: var(--art-subtitle-font-size);\n transition: bottom var(--art-transition-duration) ease;\n text-shadow: var(--art-subtitle-border) 1px 0 1px, var(--art-subtitle-border) 0 1px 1px, var(--art-subtitle-border) -1px 0 1px, var(--art-subtitle-border) 0 -1px 1px, var(--art-subtitle-border) 1px 1px 1px, var(--art-subtitle-border) -1px -1px 1px, var(--art-subtitle-border) 1px -1px 1px, var(--art-subtitle-border) -1px 1px 1px;\n flex-direction: column;\n padding: 0 5%;\n display: none;\n position: absolute;\n}\n\n.art-video-player .art-subtitle p {\n word-break: break-all;\n height: fit-content;\n}\n\n.art-video-player.art-subtitle-show .art-subtitle {\n display: flex;\n}\n\n.art-video-player.art-control-show .art-subtitle {\n bottom: calc(var(--art-control-height) + var(--art-subtitle-bottom));\n}\n\n.art-danmuku {\n z-index: 30;\n width: 100%;\n height: 100%;\n pointer-events: none;\n position: absolute;\n inset: 0;\n overflow: hidden;\n}\n\n.art-video-player .art-layers {\n z-index: 40;\n width: 100%;\n height: 100%;\n pointer-events: none;\n display: none;\n position: absolute;\n inset: 0;\n}\n\n.art-video-player .art-layers .art-layer {\n pointer-events: auto;\n}\n\n.art-video-player.art-layer-show .art-layers {\n display: flex;\n}\n\n.art-video-player .art-mask {\n z-index: 50;\n width: 100%;\n height: 100%;\n pointer-events: none;\n justify-content: center;\n align-items: center;\n display: flex;\n position: absolute;\n inset: 0;\n}\n\n.art-video-player .art-mask .art-state {\n opacity: 0;\n width: var(--art-state-size);\n height: var(--art-state-size);\n transition: all var(--art-transition-duration) ease;\n justify-content: center;\n align-items: center;\n display: flex;\n transform: scale(2);\n}\n\n.art-video-player.art-mask-show .art-state {\n cursor: pointer;\n pointer-events: auto;\n opacity: var(--art-state-opacity);\n transform: scale(1);\n}\n\n.art-video-player.art-loading-show .art-state {\n display: none;\n}\n\n.art-video-player .art-loading {\n z-index: 70;\n width: 100%;\n height: 100%;\n pointer-events: none;\n justify-content: center;\n align-items: center;\n display: none;\n position: absolute;\n inset: 0;\n}\n\n.art-video-player.art-loading-show .art-loading {\n display: flex;\n}\n\n.art-video-player .art-bottom {\n z-index: 60;\n width: 100%;\n height: 100%;\n opacity: 0;\n pointer-events: none;\n justify-content: end;\n gap: var(--art-bottom-gap);\n padding: 0 var(--art-padding);\n transform: translateY(var(--art-bottom-offset));\n transition: all var(--art-transition-duration) ease;\n background-size: 100% var(--art-bottom-height);\n background-image: linear-gradient(to top, #000, #0006, #0000);\n background-position: bottom;\n background-repeat: repeat-x;\n flex-direction: column;\n display: flex;\n position: absolute;\n inset: 0;\n overflow: hidden;\n}\n\n.art-video-player.art-control-show .art-bottom, .art-video-player.art-hover .art-bottom {\n opacity: 1;\n transform: translateY(0);\n}\n\n.art-bottom .art-progress {\n z-index: 0;\n pointer-events: auto;\n position: relative;\n}\n\n.art-bottom .art-progress .art-control-progress {\n cursor: pointer;\n height: var(--art-progress-height);\n justify-content: center;\n align-items: center;\n display: flex;\n position: relative;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner {\n height: 50%;\n width: 100%;\n transition: height var(--art-transition-duration) ease;\n background-color: var(--art-progress-color);\n align-items: center;\n display: flex;\n position: relative;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover {\n z-index: 0;\n width: 100%;\n height: 100%;\n width: 0%;\n background-color: var(--art-hover-color);\n display: none;\n position: absolute;\n inset: 0;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded {\n z-index: 10;\n width: 100%;\n height: 100%;\n width: 0%;\n background-color: var(--art-loaded-color);\n position: absolute;\n inset: 0;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played {\n z-index: 20;\n width: 100%;\n height: 100%;\n width: 0%;\n background-color: var(--art-theme);\n position: absolute;\n inset: 0;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight {\n z-index: 30;\n width: 100%;\n height: 100%;\n pointer-events: none;\n position: absolute;\n inset: 0;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span {\n z-index: 0;\n width: 100%;\n height: 100%;\n pointer-events: auto;\n width: var(--art-highlight-width);\n transform: translateX(calc(var(--art-highlight-width) / -2));\n background-color: var(--art-highlight-color);\n position: absolute;\n inset: 0 auto 0 0;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator {\n z-index: 40;\n width: var(--art-indicator-size);\n height: var(--art-indicator-size);\n transform: scale(var(--art-indicator-scale));\n margin-left: calc(var(--art-indicator-size) / -2);\n transition: transform var(--art-transition-duration) ease;\n border-radius: 50%;\n justify-content: center;\n align-items: center;\n display: flex;\n position: absolute;\n left: 0;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon {\n width: 100%;\n height: 100%;\n pointer-events: none;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover {\n transform: scale(1.2) !important;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active {\n transform: scale(1) !important;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip {\n z-index: 50;\n border-radius: var(--art-border-radius);\n white-space: nowrap;\n background-color: var(--art-tip-background);\n padding: 3px 5px;\n font-size: 12px;\n line-height: 1;\n display: none;\n position: absolute;\n top: -25px;\n left: 0;\n}\n\n.art-bottom .art-progress .art-control-progress:hover .art-control-progress-inner {\n height: 100%;\n}\n\n.art-bottom .art-progress .art-control-thumbnails {\n border-radius: var(--art-border-radius);\n pointer-events: none;\n background-color: var(--art-widget-background);\n display: none;\n position: absolute;\n bottom: 10px;\n left: 0;\n box-shadow: 0 1px 3px #0003, 0 1px 2px -1px #0003;\n}\n\n.art-bottom .art-progress .art-control-loop {\n z-index: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n display: none;\n position: absolute;\n inset: 0;\n}\n\n.art-bottom .art-progress .art-control-loop .art-loop-point {\n z-index: 0;\n width: 100%;\n height: 100%;\n width: var(--art-loop-width);\n background-color: var(--art-loop-color);\n transform: translateX(calc(var(--art-loop-width) / -2)) scaleY(1.5);\n position: absolute;\n inset: 0 0 0 0%;\n}\n\n.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator {\n transform: scale(1);\n}\n\n.art-controls {\n z-index: 10;\n pointer-events: auto;\n height: var(--art-control-height);\n justify-content: space-between;\n align-items: center;\n display: flex;\n position: relative;\n}\n\n.art-controls .art-controls-left, .art-controls .art-controls-right {\n height: 100%;\n display: flex;\n}\n\n.art-controls .art-controls-center {\n height: 100%;\n flex: 1;\n justify-content: center;\n align-items: center;\n padding: 0 10px;\n display: none;\n}\n\n.art-controls .art-controls-right {\n justify-content: flex-end;\n}\n\n.art-controls .art-control {\n cursor: pointer;\n white-space: nowrap;\n opacity: var(--art-control-opacity);\n min-height: var(--art-control-height);\n min-width: var(--art-control-height);\n transition: opacity var(--art-transition-duration) ease;\n flex-shrink: 0;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.art-controls .art-control .art-icon {\n height: var(--art-control-icon-size);\n width: var(--art-control-icon-size);\n transform: scale(var(--art-control-icon-scale));\n transition: transform var(--art-transition-duration) ease;\n}\n\n.art-controls .art-control .art-icon:active {\n transform: scale(calc(var(--art-control-icon-scale) * .8));\n}\n\n.art-controls .art-control:hover {\n opacity: 1;\n}\n\n.art-control-volume {\n position: relative;\n}\n\n.art-control-volume .art-volume-panel {\n text-align: center;\n cursor: default;\n opacity: 0;\n pointer-events: none;\n left: 0;\n right: 0;\n bottom: var(--art-control-height);\n width: var(--art-control-height);\n height: var(--art-volume-height);\n transition: all var(--art-transition-duration) ease;\n justify-content: center;\n align-items: center;\n padding: 0 5px;\n font-size: 12px;\n display: flex;\n position: absolute;\n transform: translateY(10px);\n}\n\n.art-control-volume .art-volume-panel .art-volume-inner {\n height: 100%;\n width: 100%;\n border-radius: var(--art-border-radius);\n background-color: var(--art-widget-background);\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 10px 0 12px;\n display: flex;\n}\n\n.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider {\n width: 100%;\n cursor: pointer;\n flex: 1;\n justify-content: center;\n display: flex;\n position: relative;\n}\n\n.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle {\n width: 2px;\n border-radius: var(--art-border-radius);\n background-color: #ffffff40;\n justify-content: center;\n display: flex;\n position: relative;\n overflow: hidden;\n}\n\n.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded {\n z-index: 0;\n width: 100%;\n height: 100%;\n background-color: var(--art-theme);\n position: absolute;\n inset: 0;\n}\n\n.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator {\n width: var(--art-volume-handle-size);\n height: var(--art-volume-handle-size);\n margin-top: calc(var(--art-volume-handle-size) / -2);\n background-color: var(--art-theme);\n transition: transform var(--art-transition-duration) ease;\n border-radius: 100%;\n flex-shrink: 0;\n position: absolute;\n transform: scale(1);\n}\n\n.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator {\n transform: scale(.9);\n}\n\n.art-control-volume:hover .art-volume-panel {\n opacity: 1;\n pointer-events: auto;\n transform: translateY(0);\n}\n\n.art-video-player .art-notice {\n z-index: 80;\n width: 100%;\n height: 100%;\n height: auto;\n padding: var(--art-padding);\n pointer-events: none;\n display: none;\n position: absolute;\n inset: 0 0 auto;\n}\n\n.art-video-player .art-notice .art-notice-inner {\n border-radius: var(--art-border-radius);\n background-color: var(--art-tip-background);\n padding: 5px;\n line-height: 1;\n display: inline-flex;\n}\n\n.art-video-player.art-notice-show .art-notice {\n display: flex;\n}\n\n.art-video-player .art-contextmenus {\n z-index: 120;\n border-radius: var(--art-border-radius);\n background-color: var(--art-widget-background);\n min-width: var(--art-contextmenus-min-width);\n flex-direction: column;\n padding: 5px 0;\n font-size: 12px;\n display: none;\n position: absolute;\n}\n\n.art-video-player .art-contextmenus .art-contextmenu {\n cursor: pointer;\n border-bottom: 1px solid #ffffff1a;\n padding: 10px 15px;\n display: flex;\n}\n\n.art-video-player .art-contextmenus .art-contextmenu span {\n padding: 0 8px;\n}\n\n.art-video-player .art-contextmenus .art-contextmenu span:hover, .art-video-player .art-contextmenus .art-contextmenu span.art-current {\n color: var(--art-theme);\n}\n\n.art-video-player .art-contextmenus .art-contextmenu:hover {\n background-color: #ffffff1a;\n}\n\n.art-video-player .art-contextmenus .art-contextmenu:last-child {\n border-bottom: none;\n}\n\n.art-video-player.art-contextmenu-show .art-contextmenus {\n display: flex;\n}\n\n.art-video-player .art-settings {\n z-index: 90;\n border-radius: var(--art-border-radius);\n transform-origin: 100% 100%;\n max-height: var(--art-settings-max-height);\n left: auto;\n right: var(--art-padding);\n bottom: var(--art-control-height);\n transform: scale(var(--art-settings-scale));\n transition: all var(--art-transition-duration) ease;\n background-color: var(--art-widget-background);\n flex-direction: column;\n display: none;\n position: absolute;\n overflow: hidden auto;\n}\n\n.art-video-player .art-settings .art-setting-panel {\n flex-direction: column;\n display: none;\n}\n\n.art-video-player .art-settings .art-setting-panel.art-current {\n display: flex;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item {\n height: 35px;\n cursor: pointer;\n transition: background-color var(--art-transition-duration) ease;\n justify-content: space-between;\n align-items: center;\n padding: 0 5px;\n line-height: 1;\n display: flex;\n overflow: hidden;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item:hover {\n background-color: #ffffff1a;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current {\n color: var(--art-theme);\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check {\n visibility: hidden;\n height: 15px;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check {\n visibility: visible;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left {\n justify-content: center;\n align-items: center;\n gap: 5px;\n display: flex;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon {\n height: var(--art-settings-icon-size);\n width: var(--art-settings-icon-size);\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right {\n justify-content: center;\n align-items: center;\n gap: 5px;\n font-size: 12px;\n display: flex;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip {\n white-space: nowrap;\n color: #ffffff80;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon {\n min-width: 32px;\n height: 24px;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range {\n height: 3px;\n width: 80px;\n appearance: none;\n background-color: #fff3;\n outline: none;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item-back {\n border-bottom: 1px solid #ffffff1a;\n}\n\n.art-video-player.art-setting-show .art-settings {\n display: flex;\n}\n\n.art-video-player .art-info {\n left: var(--art-padding);\n top: var(--art-padding);\n z-index: 100;\n border-radius: var(--art-border-radius);\n background-color: var(--art-widget-background);\n padding: 10px;\n font-size: 12px;\n display: none;\n position: absolute;\n}\n\n.art-video-player .art-info .art-info-panel {\n flex-direction: column;\n gap: 5px;\n display: flex;\n}\n\n.art-video-player .art-info .art-info-panel .art-info-item {\n align-items: center;\n gap: 5px;\n display: flex;\n}\n\n.art-video-player .art-info .art-info-panel .art-info-item .art-info-title {\n width: 100px;\n text-align: right;\n}\n\n.art-video-player .art-info .art-info-panel .art-info-item .art-info-content {\n width: 250px;\n text-overflow: ellipsis;\n white-space: nowrap;\n user-select: all;\n overflow: hidden;\n}\n\n.art-video-player .art-info .art-info-close {\n cursor: pointer;\n position: absolute;\n top: 5px;\n right: 5px;\n}\n\n.art-video-player.art-info-show .art-info {\n display: flex;\n}\n\n.art-hide-cursor * {\n cursor: none !important;\n}\n\n.art-video-player[data-aspect-ratio] video {\n box-sizing: content-box;\n object-fit: fill;\n}\n\n.art-fullscreen-web {\n z-index: var(--art-fullscreen-web-index);\n width: 100%;\n height: 100%;\n position: absolute;\n inset: 0;\n}\n\n.art-mini-popup {\n z-index: 9999;\n width: 320px;\n height: 180px;\n border-radius: var(--art-border-radius);\n cursor: move;\n user-select: none;\n background: #000;\n transition: opacity .2s;\n position: fixed;\n overflow: hidden;\n box-shadow: 0 0 5px #00000080;\n}\n\n.art-mini-popup svg {\n fill: #fff;\n}\n\n.art-mini-popup .art-video {\n pointer-events: none;\n}\n\n.art-mini-popup .art-mini-close {\n z-index: 20;\n cursor: pointer;\n opacity: 0;\n transition: opacity .2s;\n position: absolute;\n top: 10px;\n right: 10px;\n}\n\n.art-mini-popup .art-mini-state {\n z-index: 30;\n width: 100%;\n height: 100%;\n pointer-events: none;\n opacity: 0;\n background-color: #00000040;\n justify-content: center;\n align-items: center;\n transition: opacity .2s;\n display: flex;\n position: absolute;\n inset: 0;\n}\n\n.art-mini-popup .art-mini-state .art-icon {\n opacity: .75;\n cursor: pointer;\n pointer-events: auto;\n transition: transform .2s;\n transform: scale(3);\n}\n\n.art-mini-popup .art-mini-state .art-icon:active {\n transform: scale(2.5);\n}\n\n.art-mini-popup.art-mini-droging {\n opacity: .9;\n}\n\n.art-mini-popup:hover .art-mini-close, .art-mini-popup:hover .art-mini-state {\n opacity: 1;\n}\n\n.art-auto-size {\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.art-auto-size .art-video-player {\n transition: width, height var(--art-transition-duration) ease;\n}\n\n.art-video-player[data-flip=\"horizontal\"] .art-video {\n transform: scaleX(-1);\n}\n\n.art-video-player[data-flip=\"vertical\"] .art-video {\n transform: scaleY(-1);\n}\n\n.art-video-player .art-layer-mini-progress-bar {\n z-index: 0;\n width: 100%;\n height: 100%;\n height: var(--art-mini-progress-height);\n background-color: var(--art-theme);\n display: flex;\n position: absolute;\n inset: auto 0 0;\n}\n\n.art-video-player .art-layer-lock {\n height: var(--art-lock-size);\n width: var(--art-lock-size);\n top: 50%;\n left: var(--art-padding);\n background-color: var(--art-tip-background);\n border-radius: 50%;\n justify-content: center;\n align-items: center;\n display: none;\n position: absolute;\n transform: translateY(-50%);\n}\n\n.art-video-player .art-layer-auto-playback {\n border-radius: var(--art-border-radius);\n left: var(--art-padding);\n bottom: calc(var(--art-control-height) + var(--art-bottom-gap) + 10px);\n background-color: var(--art-widget-background);\n align-items: center;\n gap: 10px;\n padding: 10px;\n line-height: 1;\n display: none;\n position: absolute;\n}\n\n.art-video-player .art-layer-auto-playback .art-auto-playback-close {\n cursor: pointer;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.art-video-player .art-layer-auto-playback .art-auto-playback-close svg {\n width: 15px;\n height: 15px;\n fill: var(--art-theme);\n}\n\n.art-video-player .art-layer-auto-playback .art-auto-playback-jump {\n color: var(--art-theme);\n cursor: pointer;\n}\n\n.art-video-player.art-lock .art-bottom {\n display: none !important;\n}\n\n.art-video-player.art-lock .art-subtitle {\n bottom: var(--art-subtitle-bottom) !important;\n}\n\n.art-video-player.art-lock .art-layer-mini-progress-bar {\n display: flex !important;\n}\n\n.art-video-player.art-control-show .art-layer-mini-progress-bar {\n display: none;\n}\n\n.art-video-player.art-control-show .art-layer-lock {\n display: flex;\n}\n\n.art-control-selector {\n position: relative;\n}\n\n.art-control-selector .art-selector-list {\n text-align: center;\n border-radius: var(--art-border-radius);\n opacity: 0;\n pointer-events: none;\n bottom: var(--art-control-height);\n max-height: var(--art-selector-max-height);\n background-color: var(--art-widget-background);\n transition: all var(--art-transition-duration) ease;\n flex-direction: column;\n justify-content: center;\n display: flex;\n position: absolute;\n overflow: hidden auto;\n transform: translateY(10px);\n}\n\n.art-control-selector .art-selector-list .art-selector-item {\n flex-shrink: 0;\n justify-content: center;\n align-items: center;\n padding: 10px 15px;\n line-height: 1;\n display: flex;\n}\n\n.art-control-selector .art-selector-list .art-selector-item:hover {\n background-color: #ffffff1a;\n}\n\n.art-control-selector .art-selector-list .art-selector-item:hover, .art-control-selector .art-selector-list .art-selector-item.art-current {\n color: var(--art-theme);\n}\n\n.art-control-selector:hover .art-selector-list {\n opacity: 1;\n pointer-events: auto;\n transform: translateY(0);\n}\n\n[class*=\"hint--\"] {\n font-style: normal;\n display: inline-block;\n position: relative;\n}\n\n[class*=\"hint--\"]:before, [class*=\"hint--\"]:after {\n visibility: hidden;\n opacity: 0;\n z-index: 1000000;\n pointer-events: none;\n transition: all .3s;\n transition-delay: 0s;\n position: absolute;\n transform: translate3d(0, 0, 0);\n}\n\n[class*=\"hint--\"]:hover:before, [class*=\"hint--\"]:hover:after {\n visibility: visible;\n opacity: 1;\n transition-delay: .1s;\n}\n\n[class*=\"hint--\"]:before {\n content: \"\";\n z-index: 1000001;\n background: none;\n border: 6px solid #0000;\n position: absolute;\n}\n\n[class*=\"hint--\"]:after {\n color: #fff;\n white-space: nowrap;\n background: #000;\n padding: 8px 10px;\n font-family: Helvetica Neue, Helvetica, Arial, sans-serif;\n font-size: 12px;\n line-height: 12px;\n}\n\n[class*=\"hint--\"][aria-label]:after {\n content: attr(aria-label);\n}\n\n[class*=\"hint--\"][data-hint]:after {\n content: attr(data-hint);\n}\n\n[aria-label=\"\"]:before, [aria-label=\"\"]:after, [data-hint=\"\"]:before, [data-hint=\"\"]:after {\n display: none !important;\n}\n\n.hint--top-left:before, .hint--top-right:before, .hint--top:before {\n border-top-color: #000;\n}\n\n.hint--bottom-left:before, .hint--bottom-right:before, .hint--bottom:before {\n border-bottom-color: #000;\n}\n\n.hint--left:before {\n border-left-color: #000;\n}\n\n.hint--right:before {\n border-right-color: #000;\n}\n\n.hint--top:before {\n margin-bottom: -11px;\n}\n\n.hint--top:before, .hint--top:after {\n bottom: 100%;\n left: 50%;\n}\n\n.hint--top:before {\n left: calc(50% - 6px);\n}\n\n.hint--top:after {\n transform: translateX(-50%);\n}\n\n.hint--top:hover:before {\n transform: translateY(-8px);\n}\n\n.hint--top:hover:after {\n transform: translateX(-50%)translateY(-8px);\n}\n\n.hint--bottom:before {\n margin-top: -11px;\n}\n\n.hint--bottom:before, .hint--bottom:after {\n top: 100%;\n left: 50%;\n}\n\n.hint--bottom:before {\n left: calc(50% - 6px);\n}\n\n.hint--bottom:after {\n transform: translateX(-50%);\n}\n\n.hint--bottom:hover:before {\n transform: translateY(8px);\n}\n\n.hint--bottom:hover:after {\n transform: translateX(-50%)translateY(8px);\n}\n\n.hint--right:before {\n margin-bottom: -6px;\n margin-left: -11px;\n}\n\n.hint--right:after {\n margin-bottom: -14px;\n}\n\n.hint--right:before, .hint--right:after {\n bottom: 50%;\n left: 100%;\n}\n\n.hint--right:hover:before, .hint--right:hover:after {\n transform: translateX(8px);\n}\n\n.hint--left:before {\n margin-bottom: -6px;\n margin-right: -11px;\n}\n\n.hint--left:after {\n margin-bottom: -14px;\n}\n\n.hint--left:before, .hint--left:after {\n bottom: 50%;\n right: 100%;\n}\n\n.hint--left:hover:before, .hint--left:hover:after {\n transform: translateX(-8px);\n}\n\n.hint--top-left:before {\n margin-bottom: -11px;\n}\n\n.hint--top-left:before, .hint--top-left:after {\n bottom: 100%;\n left: 50%;\n}\n\n.hint--top-left:before {\n left: calc(50% - 6px);\n}\n\n.hint--top-left:after {\n margin-left: 12px;\n transform: translateX(-100%);\n}\n\n.hint--top-left:hover:before {\n transform: translateY(-8px);\n}\n\n.hint--top-left:hover:after {\n transform: translateX(-100%)translateY(-8px);\n}\n\n.hint--top-right:before {\n margin-bottom: -11px;\n}\n\n.hint--top-right:before, .hint--top-right:after {\n bottom: 100%;\n left: 50%;\n}\n\n.hint--top-right:before {\n left: calc(50% - 6px);\n}\n\n.hint--top-right:after {\n margin-left: -12px;\n transform: translateX(0);\n}\n\n.hint--top-right:hover:before, .hint--top-right:hover:after {\n transform: translateY(-8px);\n}\n\n.hint--bottom-left:before {\n margin-top: -11px;\n}\n\n.hint--bottom-left:before, .hint--bottom-left:after {\n top: 100%;\n left: 50%;\n}\n\n.hint--bottom-left:before {\n left: calc(50% - 6px);\n}\n\n.hint--bottom-left:after {\n margin-left: 12px;\n transform: translateX(-100%);\n}\n\n.hint--bottom-left:hover:before {\n transform: translateY(8px);\n}\n\n.hint--bottom-left:hover:after {\n transform: translateX(-100%)translateY(8px);\n}\n\n.hint--bottom-right:before {\n margin-top: -11px;\n}\n\n.hint--bottom-right:before, .hint--bottom-right:after {\n top: 100%;\n left: 50%;\n}\n\n.hint--bottom-right:before {\n left: calc(50% - 6px);\n}\n\n.hint--bottom-right:after {\n margin-left: -12px;\n transform: translateX(0);\n}\n\n.hint--bottom-right:hover:before, .hint--bottom-right:hover:after {\n transform: translateY(8px);\n}\n\n.hint--small:after, .hint--medium:after, .hint--large:after {\n white-space: normal;\n word-wrap: break-word;\n line-height: 1.4em;\n}\n\n.hint--small:after {\n width: 80px;\n}\n\n.hint--medium:after {\n width: 150px;\n}\n\n.hint--large:after {\n width: 300px;\n}\n\n[class*=\"hint--\"]:after {\n text-shadow: 0 -1px #000;\n box-shadow: 4px 4px 8px #0000004d;\n}\n\n.hint--error:after {\n text-shadow: 0 -1px #592726;\n background-color: #b34e4d;\n}\n\n.hint--error.hint--top-left:before, .hint--error.hint--top-right:before, .hint--error.hint--top:before {\n border-top-color: #b34e4d;\n}\n\n.hint--error.hint--bottom-left:before, .hint--error.hint--bottom-right:before, .hint--error.hint--bottom:before {\n border-bottom-color: #b34e4d;\n}\n\n.hint--error.hint--left:before {\n border-left-color: #b34e4d;\n}\n\n.hint--error.hint--right:before {\n border-right-color: #b34e4d;\n}\n\n.hint--warning:after {\n text-shadow: 0 -1px #6c5328;\n background-color: #c09854;\n}\n\n.hint--warning.hint--top-left:before, .hint--warning.hint--top-right:before, .hint--warning.hint--top:before {\n border-top-color: #c09854;\n}\n\n.hint--warning.hint--bottom-left:before, .hint--warning.hint--bottom-right:before, .hint--warning.hint--bottom:before {\n border-bottom-color: #c09854;\n}\n\n.hint--warning.hint--left:before {\n border-left-color: #c09854;\n}\n\n.hint--warning.hint--right:before {\n border-right-color: #c09854;\n}\n\n.hint--info:after {\n text-shadow: 0 -1px #1a3c4d;\n background-color: #3986ac;\n}\n\n.hint--info.hint--top-left:before, .hint--info.hint--top-right:before, .hint--info.hint--top:before {\n border-top-color: #3986ac;\n}\n\n.hint--info.hint--bottom-left:before, .hint--info.hint--bottom-right:before, .hint--info.hint--bottom:before {\n border-bottom-color: #3986ac;\n}\n\n.hint--info.hint--left:before {\n border-left-color: #3986ac;\n}\n\n.hint--info.hint--right:before {\n border-right-color: #3986ac;\n}\n\n.hint--success:after {\n text-shadow: 0 -1px #1a321a;\n background-color: #458746;\n}\n\n.hint--success.hint--top-left:before, .hint--success.hint--top-right:before, .hint--success.hint--top:before {\n border-top-color: #458746;\n}\n\n.hint--success.hint--bottom-left:before, .hint--success.hint--bottom-right:before, .hint--success.hint--bottom:before {\n border-bottom-color: #458746;\n}\n\n.hint--success.hint--left:before {\n border-left-color: #458746;\n}\n\n.hint--success.hint--right:before {\n border-right-color: #458746;\n}\n\n.hint--always:after, .hint--always:before {\n opacity: 1;\n visibility: visible;\n}\n\n.hint--always.hint--top:before {\n transform: translateY(-8px);\n}\n\n.hint--always.hint--top:after {\n transform: translateX(-50%)translateY(-8px);\n}\n\n.hint--always.hint--top-left:before {\n transform: translateY(-8px);\n}\n\n.hint--always.hint--top-left:after {\n transform: translateX(-100%)translateY(-8px);\n}\n\n.hint--always.hint--top-right:before, .hint--always.hint--top-right:after {\n transform: translateY(-8px);\n}\n\n.hint--always.hint--bottom:before {\n transform: translateY(8px);\n}\n\n.hint--always.hint--bottom:after {\n transform: translateX(-50%)translateY(8px);\n}\n\n.hint--always.hint--bottom-left:before {\n transform: translateY(8px);\n}\n\n.hint--always.hint--bottom-left:after {\n transform: translateX(-100%)translateY(8px);\n}\n\n.hint--always.hint--bottom-right:before, .hint--always.hint--bottom-right:after {\n transform: translateY(8px);\n}\n\n.hint--always.hint--left:before, .hint--always.hint--left:after {\n transform: translateX(-8px);\n}\n\n.hint--always.hint--right:before, .hint--always.hint--right:after {\n transform: translateX(8px);\n}\n\n.hint--rounded:after {\n border-radius: 4px;\n}\n\n.hint--no-animate:before, .hint--no-animate:after {\n transition-duration: 0s;\n}\n\n.hint--bounce:before, .hint--bounce:after {\n -webkit-transition: opacity .3s, visibility .3s, -webkit-transform .3s cubic-bezier(.71, 1.7, .77, 1.24);\n -moz-transition: opacity .3s, visibility .3s, -moz-transform .3s cubic-bezier(.71, 1.7, .77, 1.24);\n transition: opacity .3s, visibility .3s, transform .3s cubic-bezier(.71, 1.7, .77, 1.24);\n}\n\n.hint--no-shadow:before, .hint--no-shadow:after {\n text-shadow: initial;\n box-shadow: initial;\n}\n\n.hint--no-arrow:before {\n display: none;\n}\n\n.art-mobile {\n --art-bottom-gap: 10px;\n --art-control-height: 38px;\n --art-control-icon-scale: 1;\n --art-state-size: 60px;\n --art-settings-scale: .85;\n --art-settings-max-height: 180px;\n --art-selector-max-height: 180px;\n --art-indicator-scale: 1;\n --art-control-opacity: 1;\n}\n\n.art-mobile .art-controls-left {\n margin-left: calc(var(--art-padding) / -1);\n}\n\n.art-mobile .art-controls-right {\n margin-right: calc(var(--art-padding) / -1);\n}\n\n"; +module.exports = ".art-video-player {\n --art-theme: red;\n --art-font-color: #fff;\n --art-background-color: #000;\n --art-text-shadow-color: #00000080;\n --art-transition-duration: .2s;\n --art-padding: 10px;\n --art-border-radius: 3px;\n --art-progress-height: 6px;\n --art-progress-color: #fff3;\n --art-hover-color: #ffffff80;\n --art-loaded-color: #fff3;\n --art-loop-color: #ffffffbf;\n --art-state-size: 80px;\n --art-state-opacity: .8;\n --art-bottom-height: 100px;\n --art-bottom-offset: 20px;\n --art-bottom-gap: 5px;\n --art-highlight-width: 8px;\n --art-highlight-color: #ffffff80;\n --art-loop-width: 2px;\n --art-control-height: 46px;\n --art-control-opacity: .75;\n --art-control-icon-size: 36px;\n --art-control-icon-scale: 1.1;\n --art-volume-height: 120px;\n --art-volume-handle-size: 14px;\n --art-lock-size: 36px;\n --art-indicator-scale: 0;\n --art-indicator-size: 16px;\n --art-fullscreen-web-index: 9999;\n --art-settings-scale: 1;\n --art-settings-icon-size: 24px;\n --art-settings-max-height: 300px;\n --art-selector-max-height: 300px;\n --art-contextmenus-min-width: 250px;\n --art-subtitle-font-size: 20px;\n --art-subtitle-gap: 5px;\n --art-subtitle-bottom: 15px;\n --art-subtitle-border: #000;\n --art-widget-background: #000000d9;\n --art-tip-background: #00000080;\n --art-scrollbar-size: 4px;\n --art-scrollbar-background: #ffffff40;\n --art-scrollbar-background-hover: #ffffff80;\n --art-mini-progress-height: 2px;\n}\n\n.art-bg-cover {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n}\n\n.art-bottom-gradient {\n background-image: linear-gradient(to top, #000, #0006, #0000);\n background-position: bottom;\n background-repeat: repeat-x;\n}\n\n.art-backdrop-filter {\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n background-color: #000000bf !important;\n}\n\n.art-truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.art-video-player {\n width: 100%;\n height: 100%;\n zoom: 1;\n text-align: left;\n direction: ltr;\n user-select: none;\n box-sizing: border-box;\n color: var(--art-font-color);\n background-color: var(--art-background-color);\n text-shadow: 0 0 2px var(--art-text-shadow-color);\n -webkit-tap-highlight-color: #0000;\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n -ms-high-contrast-adjust: none;\n outline: 0;\n margin: 0 auto;\n padding: 0;\n font-family: PingFang SC, Helvetica Neue, Microsoft YaHei, Roboto, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.3;\n position: relative;\n}\n\n.art-video-player *, .art-video-player :before, .art-video-player :after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\n.art-video-player ::-webkit-scrollbar {\n width: var(--art-scrollbar-size);\n height: var(--art-scrollbar-size);\n}\n\n.art-video-player ::-webkit-scrollbar-thumb {\n background-color: var(--art-scrollbar-background);\n}\n\n.art-video-player ::-webkit-scrollbar-thumb:hover {\n background-color: var(--art-scrollbar-background-hover);\n}\n\n.art-video-player img {\n max-width: 100%;\n vertical-align: top;\n}\n\n.art-video-player svg {\n fill: var(--art-font-color);\n}\n\n.art-video-player a {\n color: var(--art-font-color);\n text-decoration: none;\n}\n\n.art-icon {\n justify-content: center;\n align-items: center;\n line-height: 1;\n display: flex;\n}\n\n.art-video-player.art-backdrop .art-contextmenus, .art-video-player.art-backdrop .art-info, .art-video-player.art-backdrop .art-settings, .art-video-player.art-backdrop .art-layer-auto-playback, .art-video-player.art-backdrop .art-selector-list, .art-video-player.art-backdrop .art-volume-inner {\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n background-color: #000000bf !important;\n}\n\n.art-video {\n z-index: 10;\n width: 100%;\n height: 100%;\n cursor: pointer;\n position: absolute;\n inset: 0;\n}\n\n.art-poster {\n z-index: 11;\n width: 100%;\n height: 100%;\n pointer-events: none;\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n position: absolute;\n inset: 0;\n}\n\n.art-video-player .art-subtitle {\n z-index: 20;\n width: 100%;\n text-align: center;\n pointer-events: none;\n justify-content: center;\n align-items: center;\n gap: var(--art-subtitle-gap);\n bottom: var(--art-subtitle-bottom);\n font-size: var(--art-subtitle-font-size);\n transition: bottom var(--art-transition-duration) ease;\n text-shadow: var(--art-subtitle-border) 1px 0 1px, var(--art-subtitle-border) 0 1px 1px, var(--art-subtitle-border) -1px 0 1px, var(--art-subtitle-border) 0 -1px 1px, var(--art-subtitle-border) 1px 1px 1px, var(--art-subtitle-border) -1px -1px 1px, var(--art-subtitle-border) 1px -1px 1px, var(--art-subtitle-border) -1px 1px 1px;\n flex-direction: column;\n padding: 0 5%;\n display: none;\n position: absolute;\n}\n\n.art-video-player .art-subtitle p {\n word-break: break-all;\n height: fit-content;\n}\n\n.art-video-player.art-subtitle-show .art-subtitle {\n display: flex;\n}\n\n.art-video-player.art-control-show .art-subtitle {\n bottom: calc(var(--art-control-height) + var(--art-subtitle-bottom));\n}\n\n.art-danmuku {\n z-index: 30;\n width: 100%;\n height: 100%;\n pointer-events: none;\n position: absolute;\n inset: 0;\n overflow: hidden;\n}\n\n.art-video-player .art-layers {\n z-index: 40;\n width: 100%;\n height: 100%;\n pointer-events: none;\n display: none;\n position: absolute;\n inset: 0;\n}\n\n.art-video-player .art-layers .art-layer {\n pointer-events: auto;\n}\n\n.art-video-player.art-layer-show .art-layers {\n display: flex;\n}\n\n.art-video-player .art-mask {\n z-index: 50;\n width: 100%;\n height: 100%;\n pointer-events: none;\n justify-content: center;\n align-items: center;\n display: flex;\n position: absolute;\n inset: 0;\n}\n\n.art-video-player .art-mask .art-state {\n opacity: 0;\n width: var(--art-state-size);\n height: var(--art-state-size);\n transition: all var(--art-transition-duration) ease;\n justify-content: center;\n align-items: center;\n display: flex;\n transform: scale(2);\n}\n\n.art-video-player.art-mask-show .art-state {\n cursor: pointer;\n pointer-events: auto;\n opacity: var(--art-state-opacity);\n transform: scale(1);\n}\n\n.art-video-player.art-loading-show .art-state {\n display: none;\n}\n\n.art-video-player .art-loading {\n z-index: 70;\n width: 100%;\n height: 100%;\n pointer-events: none;\n justify-content: center;\n align-items: center;\n display: none;\n position: absolute;\n inset: 0;\n}\n\n.art-video-player.art-loading-show .art-loading {\n display: flex;\n}\n\n.art-video-player .art-bottom {\n z-index: 60;\n width: 100%;\n height: 100%;\n opacity: 0;\n pointer-events: none;\n justify-content: end;\n gap: var(--art-bottom-gap);\n padding: 0 var(--art-padding);\n transition: opacity var(--art-transition-duration) ease;\n background-size: 100% var(--art-bottom-height);\n background-image: linear-gradient(to top, #000, #0006, #0000);\n background-position: bottom;\n background-repeat: repeat-x;\n flex-direction: column;\n display: flex;\n position: absolute;\n inset: 0;\n overflow: hidden;\n}\n\n.art-video-player .art-bottom .art-controls, .art-video-player .art-bottom .art-progress {\n transform: translateY(var(--art-bottom-offset));\n transition: transform var(--art-transition-duration) ease;\n}\n\n.art-video-player.art-control-show .art-bottom, .art-video-player.art-hover .art-bottom {\n opacity: 1;\n}\n\n.art-video-player.art-control-show .art-bottom .art-controls, .art-video-player.art-hover .art-bottom .art-controls, .art-video-player.art-control-show .art-bottom .art-progress, .art-video-player.art-hover .art-bottom .art-progress {\n transform: translateY(0);\n}\n\n.art-bottom .art-progress {\n z-index: 0;\n pointer-events: auto;\n position: relative;\n}\n\n.art-bottom .art-progress .art-control-progress {\n cursor: pointer;\n height: var(--art-progress-height);\n justify-content: center;\n align-items: center;\n display: flex;\n position: relative;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner {\n height: 50%;\n width: 100%;\n transition: height var(--art-transition-duration) ease;\n background-color: var(--art-progress-color);\n align-items: center;\n display: flex;\n position: relative;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover {\n z-index: 0;\n width: 100%;\n height: 100%;\n width: 0%;\n background-color: var(--art-hover-color);\n display: none;\n position: absolute;\n inset: 0;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded {\n z-index: 10;\n width: 100%;\n height: 100%;\n width: 0%;\n background-color: var(--art-loaded-color);\n position: absolute;\n inset: 0;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played {\n z-index: 20;\n width: 100%;\n height: 100%;\n width: 0%;\n background-color: var(--art-theme);\n position: absolute;\n inset: 0;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight {\n z-index: 30;\n width: 100%;\n height: 100%;\n pointer-events: none;\n position: absolute;\n inset: 0;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span {\n z-index: 0;\n width: 100%;\n height: 100%;\n pointer-events: auto;\n width: var(--art-highlight-width);\n transform: translateX(calc(var(--art-highlight-width) / -2));\n background-color: var(--art-highlight-color);\n position: absolute;\n inset: 0 auto 0 0;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator {\n z-index: 40;\n width: var(--art-indicator-size);\n height: var(--art-indicator-size);\n transform: scale(var(--art-indicator-scale));\n margin-left: calc(var(--art-indicator-size) / -2);\n transition: transform var(--art-transition-duration) ease;\n border-radius: 50%;\n justify-content: center;\n align-items: center;\n display: flex;\n position: absolute;\n left: 0;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon {\n width: 100%;\n height: 100%;\n pointer-events: none;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover {\n transform: scale(1.2) !important;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active {\n transform: scale(1) !important;\n}\n\n.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip {\n z-index: 50;\n border-radius: var(--art-border-radius);\n white-space: nowrap;\n background-color: var(--art-tip-background);\n padding: 3px 5px;\n font-size: 12px;\n line-height: 1;\n display: none;\n position: absolute;\n top: -25px;\n left: 0;\n}\n\n.art-bottom .art-progress .art-control-progress:hover .art-control-progress-inner {\n height: 100%;\n}\n\n.art-bottom .art-progress .art-control-thumbnails {\n border-radius: var(--art-border-radius);\n pointer-events: none;\n background-color: var(--art-widget-background);\n display: none;\n position: absolute;\n bottom: 10px;\n left: 0;\n box-shadow: 0 1px 3px #0003, 0 1px 2px -1px #0003;\n}\n\n.art-bottom .art-progress .art-control-loop {\n z-index: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n display: none;\n position: absolute;\n inset: 0;\n}\n\n.art-bottom .art-progress .art-control-loop .art-loop-point {\n z-index: 0;\n width: 100%;\n height: 100%;\n width: var(--art-loop-width);\n background-color: var(--art-loop-color);\n transform: translateX(calc(var(--art-loop-width) / -2)) scaleY(1.5);\n position: absolute;\n inset: 0 0 0 0%;\n}\n\n.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator {\n transform: scale(1);\n}\n\n.art-controls {\n z-index: 10;\n pointer-events: auto;\n height: var(--art-control-height);\n justify-content: space-between;\n align-items: center;\n display: flex;\n position: relative;\n}\n\n.art-controls .art-controls-left, .art-controls .art-controls-right {\n height: 100%;\n display: flex;\n}\n\n.art-controls .art-controls-center {\n height: 100%;\n flex: 1;\n justify-content: center;\n align-items: center;\n padding: 0 10px;\n display: none;\n}\n\n.art-controls .art-controls-right {\n justify-content: flex-end;\n}\n\n.art-controls .art-control {\n cursor: pointer;\n white-space: nowrap;\n opacity: var(--art-control-opacity);\n min-height: var(--art-control-height);\n min-width: var(--art-control-height);\n transition: opacity var(--art-transition-duration) ease;\n flex-shrink: 0;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.art-controls .art-control .art-icon {\n height: var(--art-control-icon-size);\n width: var(--art-control-icon-size);\n transform: scale(var(--art-control-icon-scale));\n transition: transform var(--art-transition-duration) ease;\n}\n\n.art-controls .art-control .art-icon:active {\n transform: scale(calc(var(--art-control-icon-scale) * .8));\n}\n\n.art-controls .art-control:hover {\n opacity: 1;\n}\n\n.art-control-volume {\n position: relative;\n}\n\n.art-control-volume .art-volume-panel {\n text-align: center;\n cursor: default;\n opacity: 0;\n pointer-events: none;\n left: 0;\n right: 0;\n bottom: var(--art-control-height);\n width: var(--art-control-height);\n height: var(--art-volume-height);\n transition: all var(--art-transition-duration) ease;\n justify-content: center;\n align-items: center;\n padding: 0 5px;\n font-size: 12px;\n display: flex;\n position: absolute;\n transform: translateY(10px);\n}\n\n.art-control-volume .art-volume-panel .art-volume-inner {\n height: 100%;\n width: 100%;\n border-radius: var(--art-border-radius);\n background-color: var(--art-widget-background);\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 10px 0 12px;\n display: flex;\n}\n\n.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider {\n width: 100%;\n cursor: pointer;\n flex: 1;\n justify-content: center;\n display: flex;\n position: relative;\n}\n\n.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle {\n width: 2px;\n border-radius: var(--art-border-radius);\n background-color: #ffffff40;\n justify-content: center;\n display: flex;\n position: relative;\n overflow: hidden;\n}\n\n.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded {\n z-index: 0;\n width: 100%;\n height: 100%;\n background-color: var(--art-theme);\n position: absolute;\n inset: 0;\n}\n\n.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator {\n width: var(--art-volume-handle-size);\n height: var(--art-volume-handle-size);\n margin-top: calc(var(--art-volume-handle-size) / -2);\n background-color: var(--art-theme);\n transition: transform var(--art-transition-duration) ease;\n border-radius: 100%;\n flex-shrink: 0;\n position: absolute;\n transform: scale(1);\n}\n\n.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator {\n transform: scale(.9);\n}\n\n.art-control-volume:hover .art-volume-panel {\n opacity: 1;\n pointer-events: auto;\n transform: translateY(0);\n}\n\n.art-video-player .art-notice {\n z-index: 80;\n width: 100%;\n height: 100%;\n height: auto;\n padding: var(--art-padding);\n pointer-events: none;\n display: none;\n position: absolute;\n inset: 0 0 auto;\n}\n\n.art-video-player .art-notice .art-notice-inner {\n border-radius: var(--art-border-radius);\n background-color: var(--art-tip-background);\n padding: 5px;\n line-height: 1;\n display: inline-flex;\n}\n\n.art-video-player.art-notice-show .art-notice {\n display: flex;\n}\n\n.art-video-player .art-contextmenus {\n z-index: 120;\n border-radius: var(--art-border-radius);\n background-color: var(--art-widget-background);\n min-width: var(--art-contextmenus-min-width);\n flex-direction: column;\n padding: 5px 0;\n font-size: 12px;\n display: none;\n position: absolute;\n}\n\n.art-video-player .art-contextmenus .art-contextmenu {\n cursor: pointer;\n border-bottom: 1px solid #ffffff1a;\n padding: 10px 15px;\n display: flex;\n}\n\n.art-video-player .art-contextmenus .art-contextmenu span {\n padding: 0 8px;\n}\n\n.art-video-player .art-contextmenus .art-contextmenu span:hover, .art-video-player .art-contextmenus .art-contextmenu span.art-current {\n color: var(--art-theme);\n}\n\n.art-video-player .art-contextmenus .art-contextmenu:hover {\n background-color: #ffffff1a;\n}\n\n.art-video-player .art-contextmenus .art-contextmenu:last-child {\n border-bottom: none;\n}\n\n.art-video-player.art-contextmenu-show .art-contextmenus {\n display: flex;\n}\n\n.art-video-player .art-settings {\n z-index: 90;\n border-radius: var(--art-border-radius);\n transform-origin: 100% 100%;\n max-height: var(--art-settings-max-height);\n left: auto;\n right: var(--art-padding);\n bottom: var(--art-control-height);\n transform: scale(var(--art-settings-scale));\n transition: all var(--art-transition-duration) ease;\n background-color: var(--art-widget-background);\n flex-direction: column;\n display: none;\n position: absolute;\n overflow: hidden auto;\n}\n\n.art-video-player .art-settings .art-setting-panel {\n flex-direction: column;\n display: none;\n}\n\n.art-video-player .art-settings .art-setting-panel.art-current {\n display: flex;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item {\n height: 35px;\n cursor: pointer;\n transition: background-color var(--art-transition-duration) ease;\n justify-content: space-between;\n align-items: center;\n padding: 0 5px;\n line-height: 1;\n display: flex;\n overflow: hidden;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item:hover {\n background-color: #ffffff1a;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current {\n color: var(--art-theme);\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check {\n visibility: hidden;\n height: 15px;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check {\n visibility: visible;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left {\n justify-content: center;\n align-items: center;\n gap: 5px;\n display: flex;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon {\n height: var(--art-settings-icon-size);\n width: var(--art-settings-icon-size);\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right {\n justify-content: center;\n align-items: center;\n gap: 5px;\n font-size: 12px;\n display: flex;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip {\n white-space: nowrap;\n color: #ffffff80;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon {\n min-width: 32px;\n height: 24px;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range {\n height: 3px;\n width: 80px;\n appearance: none;\n background-color: #fff3;\n outline: none;\n}\n\n.art-video-player .art-settings .art-setting-panel .art-setting-item-back {\n border-bottom: 1px solid #ffffff1a;\n}\n\n.art-video-player.art-setting-show .art-settings {\n display: flex;\n}\n\n.art-video-player .art-info {\n left: var(--art-padding);\n top: var(--art-padding);\n z-index: 100;\n border-radius: var(--art-border-radius);\n background-color: var(--art-widget-background);\n padding: 10px;\n font-size: 12px;\n display: none;\n position: absolute;\n}\n\n.art-video-player .art-info .art-info-panel {\n flex-direction: column;\n gap: 5px;\n display: flex;\n}\n\n.art-video-player .art-info .art-info-panel .art-info-item {\n align-items: center;\n gap: 5px;\n display: flex;\n}\n\n.art-video-player .art-info .art-info-panel .art-info-item .art-info-title {\n width: 100px;\n text-align: right;\n}\n\n.art-video-player .art-info .art-info-panel .art-info-item .art-info-content {\n width: 250px;\n text-overflow: ellipsis;\n white-space: nowrap;\n user-select: all;\n overflow: hidden;\n}\n\n.art-video-player .art-info .art-info-close {\n cursor: pointer;\n position: absolute;\n top: 5px;\n right: 5px;\n}\n\n.art-video-player.art-info-show .art-info {\n display: flex;\n}\n\n.art-hide-cursor * {\n cursor: none !important;\n}\n\n.art-video-player[data-aspect-ratio] video {\n box-sizing: content-box;\n object-fit: fill;\n}\n\n.art-fullscreen {\n --art-control-height: 60px;\n --art-control-icon-scale: 1.3;\n}\n\n.art-fullscreen-web {\n --art-control-height: 60px;\n --art-control-icon-scale: 1.3;\n z-index: var(--art-fullscreen-web-index);\n width: 100%;\n height: 100%;\n position: absolute;\n inset: 0;\n}\n\n.art-mini-popup {\n z-index: 9999;\n width: 320px;\n height: 180px;\n border-radius: var(--art-border-radius);\n cursor: move;\n user-select: none;\n background: #000;\n transition: opacity .2s;\n position: fixed;\n overflow: hidden;\n box-shadow: 0 0 5px #00000080;\n}\n\n.art-mini-popup svg {\n fill: #fff;\n}\n\n.art-mini-popup .art-video {\n pointer-events: none;\n}\n\n.art-mini-popup .art-mini-close {\n z-index: 20;\n cursor: pointer;\n opacity: 0;\n transition: opacity .2s;\n position: absolute;\n top: 10px;\n right: 10px;\n}\n\n.art-mini-popup .art-mini-state {\n z-index: 30;\n width: 100%;\n height: 100%;\n pointer-events: none;\n opacity: 0;\n background-color: #00000040;\n justify-content: center;\n align-items: center;\n transition: opacity .2s;\n display: flex;\n position: absolute;\n inset: 0;\n}\n\n.art-mini-popup .art-mini-state .art-icon {\n opacity: .75;\n cursor: pointer;\n pointer-events: auto;\n transition: transform .2s;\n transform: scale(3);\n}\n\n.art-mini-popup .art-mini-state .art-icon:active {\n transform: scale(2.5);\n}\n\n.art-mini-popup.art-mini-droging {\n opacity: .9;\n}\n\n.art-mini-popup:hover .art-mini-close, .art-mini-popup:hover .art-mini-state {\n opacity: 1;\n}\n\n.art-auto-size {\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.art-auto-size .art-video-player {\n transition: width, height var(--art-transition-duration) ease;\n}\n\n.art-video-player[data-flip=\"horizontal\"] .art-video {\n transform: scaleX(-1);\n}\n\n.art-video-player[data-flip=\"vertical\"] .art-video {\n transform: scaleY(-1);\n}\n\n.art-video-player .art-layer-mini-progress-bar {\n z-index: 0;\n width: 100%;\n height: 100%;\n height: var(--art-mini-progress-height);\n background-color: var(--art-theme);\n display: flex;\n position: absolute;\n inset: auto 0 0;\n}\n\n.art-video-player .art-layer-lock {\n height: var(--art-lock-size);\n width: var(--art-lock-size);\n top: 50%;\n left: var(--art-padding);\n background-color: var(--art-tip-background);\n border-radius: 50%;\n justify-content: center;\n align-items: center;\n display: none;\n position: absolute;\n transform: translateY(-50%);\n}\n\n.art-video-player .art-layer-auto-playback {\n border-radius: var(--art-border-radius);\n left: var(--art-padding);\n bottom: calc(var(--art-control-height) + var(--art-bottom-gap) + 10px);\n background-color: var(--art-widget-background);\n align-items: center;\n gap: 10px;\n padding: 10px;\n line-height: 1;\n display: none;\n position: absolute;\n}\n\n.art-video-player .art-layer-auto-playback .art-auto-playback-close {\n cursor: pointer;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.art-video-player .art-layer-auto-playback .art-auto-playback-close svg {\n width: 15px;\n height: 15px;\n fill: var(--art-theme);\n}\n\n.art-video-player .art-layer-auto-playback .art-auto-playback-jump {\n color: var(--art-theme);\n cursor: pointer;\n}\n\n.art-video-player.art-lock .art-bottom {\n display: none !important;\n}\n\n.art-video-player.art-lock .art-subtitle {\n bottom: var(--art-subtitle-bottom) !important;\n}\n\n.art-video-player.art-lock .art-layer-mini-progress-bar {\n display: flex !important;\n}\n\n.art-video-player.art-control-show .art-layer-mini-progress-bar {\n display: none;\n}\n\n.art-video-player.art-control-show .art-layer-lock {\n display: flex;\n}\n\n.art-control-selector {\n position: relative;\n}\n\n.art-control-selector .art-selector-list {\n text-align: center;\n border-radius: var(--art-border-radius);\n opacity: 0;\n pointer-events: none;\n bottom: var(--art-control-height);\n max-height: var(--art-selector-max-height);\n background-color: var(--art-widget-background);\n transition: all var(--art-transition-duration) ease;\n flex-direction: column;\n justify-content: center;\n display: flex;\n position: absolute;\n overflow: hidden auto;\n transform: translateY(10px);\n}\n\n.art-control-selector .art-selector-list .art-selector-item {\n flex-shrink: 0;\n justify-content: center;\n align-items: center;\n padding: 10px 15px;\n line-height: 1;\n display: flex;\n}\n\n.art-control-selector .art-selector-list .art-selector-item:hover {\n background-color: #ffffff1a;\n}\n\n.art-control-selector .art-selector-list .art-selector-item:hover, .art-control-selector .art-selector-list .art-selector-item.art-current {\n color: var(--art-theme);\n}\n\n.art-control-selector:hover .art-selector-list {\n opacity: 1;\n pointer-events: auto;\n transform: translateY(0);\n}\n\n[class*=\"hint--\"] {\n font-style: normal;\n display: inline-block;\n position: relative;\n}\n\n[class*=\"hint--\"]:before, [class*=\"hint--\"]:after {\n visibility: hidden;\n opacity: 0;\n z-index: 1000000;\n pointer-events: none;\n transition: all .3s;\n transition-delay: 0s;\n position: absolute;\n transform: translate3d(0, 0, 0);\n}\n\n[class*=\"hint--\"]:hover:before, [class*=\"hint--\"]:hover:after {\n visibility: visible;\n opacity: 1;\n transition-delay: .1s;\n}\n\n[class*=\"hint--\"]:before {\n content: \"\";\n z-index: 1000001;\n background: none;\n border: 6px solid #0000;\n position: absolute;\n}\n\n[class*=\"hint--\"]:after {\n color: #fff;\n white-space: nowrap;\n background: #000;\n padding: 8px 10px;\n font-family: Helvetica Neue, Helvetica, Arial, sans-serif;\n font-size: 12px;\n line-height: 12px;\n}\n\n[class*=\"hint--\"][aria-label]:after {\n content: attr(aria-label);\n}\n\n[class*=\"hint--\"][data-hint]:after {\n content: attr(data-hint);\n}\n\n[aria-label=\"\"]:before, [aria-label=\"\"]:after, [data-hint=\"\"]:before, [data-hint=\"\"]:after {\n display: none !important;\n}\n\n.hint--top-left:before, .hint--top-right:before, .hint--top:before {\n border-top-color: #000;\n}\n\n.hint--bottom-left:before, .hint--bottom-right:before, .hint--bottom:before {\n border-bottom-color: #000;\n}\n\n.hint--left:before {\n border-left-color: #000;\n}\n\n.hint--right:before {\n border-right-color: #000;\n}\n\n.hint--top:before {\n margin-bottom: -11px;\n}\n\n.hint--top:before, .hint--top:after {\n bottom: 100%;\n left: 50%;\n}\n\n.hint--top:before {\n left: calc(50% - 6px);\n}\n\n.hint--top:after {\n transform: translateX(-50%);\n}\n\n.hint--top:hover:before {\n transform: translateY(-8px);\n}\n\n.hint--top:hover:after {\n transform: translateX(-50%)translateY(-8px);\n}\n\n.hint--bottom:before {\n margin-top: -11px;\n}\n\n.hint--bottom:before, .hint--bottom:after {\n top: 100%;\n left: 50%;\n}\n\n.hint--bottom:before {\n left: calc(50% - 6px);\n}\n\n.hint--bottom:after {\n transform: translateX(-50%);\n}\n\n.hint--bottom:hover:before {\n transform: translateY(8px);\n}\n\n.hint--bottom:hover:after {\n transform: translateX(-50%)translateY(8px);\n}\n\n.hint--right:before {\n margin-bottom: -6px;\n margin-left: -11px;\n}\n\n.hint--right:after {\n margin-bottom: -14px;\n}\n\n.hint--right:before, .hint--right:after {\n bottom: 50%;\n left: 100%;\n}\n\n.hint--right:hover:before, .hint--right:hover:after {\n transform: translateX(8px);\n}\n\n.hint--left:before {\n margin-bottom: -6px;\n margin-right: -11px;\n}\n\n.hint--left:after {\n margin-bottom: -14px;\n}\n\n.hint--left:before, .hint--left:after {\n bottom: 50%;\n right: 100%;\n}\n\n.hint--left:hover:before, .hint--left:hover:after {\n transform: translateX(-8px);\n}\n\n.hint--top-left:before {\n margin-bottom: -11px;\n}\n\n.hint--top-left:before, .hint--top-left:after {\n bottom: 100%;\n left: 50%;\n}\n\n.hint--top-left:before {\n left: calc(50% - 6px);\n}\n\n.hint--top-left:after {\n margin-left: 12px;\n transform: translateX(-100%);\n}\n\n.hint--top-left:hover:before {\n transform: translateY(-8px);\n}\n\n.hint--top-left:hover:after {\n transform: translateX(-100%)translateY(-8px);\n}\n\n.hint--top-right:before {\n margin-bottom: -11px;\n}\n\n.hint--top-right:before, .hint--top-right:after {\n bottom: 100%;\n left: 50%;\n}\n\n.hint--top-right:before {\n left: calc(50% - 6px);\n}\n\n.hint--top-right:after {\n margin-left: -12px;\n transform: translateX(0);\n}\n\n.hint--top-right:hover:before, .hint--top-right:hover:after {\n transform: translateY(-8px);\n}\n\n.hint--bottom-left:before {\n margin-top: -11px;\n}\n\n.hint--bottom-left:before, .hint--bottom-left:after {\n top: 100%;\n left: 50%;\n}\n\n.hint--bottom-left:before {\n left: calc(50% - 6px);\n}\n\n.hint--bottom-left:after {\n margin-left: 12px;\n transform: translateX(-100%);\n}\n\n.hint--bottom-left:hover:before {\n transform: translateY(8px);\n}\n\n.hint--bottom-left:hover:after {\n transform: translateX(-100%)translateY(8px);\n}\n\n.hint--bottom-right:before {\n margin-top: -11px;\n}\n\n.hint--bottom-right:before, .hint--bottom-right:after {\n top: 100%;\n left: 50%;\n}\n\n.hint--bottom-right:before {\n left: calc(50% - 6px);\n}\n\n.hint--bottom-right:after {\n margin-left: -12px;\n transform: translateX(0);\n}\n\n.hint--bottom-right:hover:before, .hint--bottom-right:hover:after {\n transform: translateY(8px);\n}\n\n.hint--small:after, .hint--medium:after, .hint--large:after {\n white-space: normal;\n word-wrap: break-word;\n line-height: 1.4em;\n}\n\n.hint--small:after {\n width: 80px;\n}\n\n.hint--medium:after {\n width: 150px;\n}\n\n.hint--large:after {\n width: 300px;\n}\n\n[class*=\"hint--\"]:after {\n text-shadow: 0 -1px #000;\n box-shadow: 4px 4px 8px #0000004d;\n}\n\n.hint--error:after {\n text-shadow: 0 -1px #592726;\n background-color: #b34e4d;\n}\n\n.hint--error.hint--top-left:before, .hint--error.hint--top-right:before, .hint--error.hint--top:before {\n border-top-color: #b34e4d;\n}\n\n.hint--error.hint--bottom-left:before, .hint--error.hint--bottom-right:before, .hint--error.hint--bottom:before {\n border-bottom-color: #b34e4d;\n}\n\n.hint--error.hint--left:before {\n border-left-color: #b34e4d;\n}\n\n.hint--error.hint--right:before {\n border-right-color: #b34e4d;\n}\n\n.hint--warning:after {\n text-shadow: 0 -1px #6c5328;\n background-color: #c09854;\n}\n\n.hint--warning.hint--top-left:before, .hint--warning.hint--top-right:before, .hint--warning.hint--top:before {\n border-top-color: #c09854;\n}\n\n.hint--warning.hint--bottom-left:before, .hint--warning.hint--bottom-right:before, .hint--warning.hint--bottom:before {\n border-bottom-color: #c09854;\n}\n\n.hint--warning.hint--left:before {\n border-left-color: #c09854;\n}\n\n.hint--warning.hint--right:before {\n border-right-color: #c09854;\n}\n\n.hint--info:after {\n text-shadow: 0 -1px #1a3c4d;\n background-color: #3986ac;\n}\n\n.hint--info.hint--top-left:before, .hint--info.hint--top-right:before, .hint--info.hint--top:before {\n border-top-color: #3986ac;\n}\n\n.hint--info.hint--bottom-left:before, .hint--info.hint--bottom-right:before, .hint--info.hint--bottom:before {\n border-bottom-color: #3986ac;\n}\n\n.hint--info.hint--left:before {\n border-left-color: #3986ac;\n}\n\n.hint--info.hint--right:before {\n border-right-color: #3986ac;\n}\n\n.hint--success:after {\n text-shadow: 0 -1px #1a321a;\n background-color: #458746;\n}\n\n.hint--success.hint--top-left:before, .hint--success.hint--top-right:before, .hint--success.hint--top:before {\n border-top-color: #458746;\n}\n\n.hint--success.hint--bottom-left:before, .hint--success.hint--bottom-right:before, .hint--success.hint--bottom:before {\n border-bottom-color: #458746;\n}\n\n.hint--success.hint--left:before {\n border-left-color: #458746;\n}\n\n.hint--success.hint--right:before {\n border-right-color: #458746;\n}\n\n.hint--always:after, .hint--always:before {\n opacity: 1;\n visibility: visible;\n}\n\n.hint--always.hint--top:before {\n transform: translateY(-8px);\n}\n\n.hint--always.hint--top:after {\n transform: translateX(-50%)translateY(-8px);\n}\n\n.hint--always.hint--top-left:before {\n transform: translateY(-8px);\n}\n\n.hint--always.hint--top-left:after {\n transform: translateX(-100%)translateY(-8px);\n}\n\n.hint--always.hint--top-right:before, .hint--always.hint--top-right:after {\n transform: translateY(-8px);\n}\n\n.hint--always.hint--bottom:before {\n transform: translateY(8px);\n}\n\n.hint--always.hint--bottom:after {\n transform: translateX(-50%)translateY(8px);\n}\n\n.hint--always.hint--bottom-left:before {\n transform: translateY(8px);\n}\n\n.hint--always.hint--bottom-left:after {\n transform: translateX(-100%)translateY(8px);\n}\n\n.hint--always.hint--bottom-right:before, .hint--always.hint--bottom-right:after {\n transform: translateY(8px);\n}\n\n.hint--always.hint--left:before, .hint--always.hint--left:after {\n transform: translateX(-8px);\n}\n\n.hint--always.hint--right:before, .hint--always.hint--right:after {\n transform: translateX(8px);\n}\n\n.hint--rounded:after {\n border-radius: 4px;\n}\n\n.hint--no-animate:before, .hint--no-animate:after {\n transition-duration: 0s;\n}\n\n.hint--bounce:before, .hint--bounce:after {\n -webkit-transition: opacity .3s, visibility .3s, -webkit-transform .3s cubic-bezier(.71, 1.7, .77, 1.24);\n -moz-transition: opacity .3s, visibility .3s, -moz-transform .3s cubic-bezier(.71, 1.7, .77, 1.24);\n transition: opacity .3s, visibility .3s, transform .3s cubic-bezier(.71, 1.7, .77, 1.24);\n}\n\n.hint--no-shadow:before, .hint--no-shadow:after {\n text-shadow: initial;\n box-shadow: initial;\n}\n\n.hint--no-arrow:before {\n display: none;\n}\n\n.art-video-player.art-mobile {\n --art-bottom-gap: 10px;\n --art-control-height: 38px;\n --art-control-icon-scale: 1;\n --art-state-size: 60px;\n --art-settings-scale: .85;\n --art-settings-max-height: 180px;\n --art-selector-max-height: 180px;\n --art-indicator-scale: 1;\n --art-control-opacity: 1;\n}\n\n.art-video-player.art-mobile .art-controls-left {\n margin-left: calc(var(--art-padding) / -1);\n}\n\n.art-video-player.art-mobile .art-controls-right {\n margin-right: calc(var(--art-padding) / -1);\n}\n\n"; },{}],"2tbdu":[function(require,module,exports) { !function(r, t) { diff --git a/packages/artplayer-plugin-danmuku/src/setting.js b/packages/artplayer-plugin-danmuku/src/setting.js index 516e4e4a7..17110a059 100644 --- a/packages/artplayer-plugin-danmuku/src/setting.js +++ b/packages/artplayer-plugin-danmuku/src/setting.js @@ -9,23 +9,16 @@ export default function setting(art, danmuku) { const { template: { $controlsCenter, $player }, constructor: { - utils: { removeClass, addClass, append, setStyle, tooltip, query, inverseClass }, + utils: { removeClass, addClass, append, setStyle, tooltip, query, inverseClass, getIcon }, }, } = art; - function getIcon(svg, key) { - const icon = document.createElement('i'); - append(icon, svg); - addClass(icon, 'art-icon'); - addClass(icon, `art-icon-${key}`); - return icon; - } - setStyle($controlsCenter, 'display', 'flex'); - const $danmuOn = getIcon(danmuOn, 'danmu-on'); - const $danmuOff = getIcon(danmuOff, 'danmu-off'); - const $danmuConfig = getIcon(danmuConfig, 'danmu-config'); - const $danmuStyle = getIcon(danmuStyle, 'danmu-style'); + + const $danmuOn = getIcon('danmu-on', danmuOn); + const $danmuOff = getIcon('danmu-off', danmuOff); + const $danmuConfig = getIcon('danmu-config', danmuConfig); + const $danmuStyle = getIcon('danmu-style', danmuStyle); function addEmitter() { const colors = [ diff --git a/packages/artplayer-plugin-danmuku/src/style.less b/packages/artplayer-plugin-danmuku/src/style.less index eb8da72e0..46589ae18 100644 --- a/packages/artplayer-plugin-danmuku/src/style.less +++ b/packages/artplayer-plugin-danmuku/src/style.less @@ -1,44 +1,18 @@ .art-danmuku-emitter { position: relative; display: flex; - height: 32px; + height: var(--art-control-icon-size, 32px); width: 100%; font-size: 12px; line-height: 1; border-radius: 3px; max-width: 100%; - color: #ffffff; - font-family: Roboto, Arial, Helvetica, sans-serif; background-color: rgb(255 255 255 / 30%); - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - touch-action: manipulation; - -ms-high-contrast-adjust: none; - *, - *::before, - *::after { - margin: 0; - padding: 0; - box-sizing: border-box; - } - - .art-icon { - display: inline-flex; - justify-content: center; - align-items: center; - line-height: 1.5; - - svg { - fill: #fff; - } - } - - @supports ((-webkit-backdrop-filter: initial) or (backdrop-filter: initial)) { - .art-backdrop-filter { - -webkit-backdrop-filter: saturate(180%) blur(20px); - backdrop-filter: saturate(180%) blur(20px); - background-color: rgba(0, 0, 0, 0.7) !important; - } + .art-backdrop-filter { + -webkit-backdrop-filter: saturate(180%) blur(20px); + backdrop-filter: saturate(180%) blur(20px); + background-color: rgba(0, 0, 0, 0.7) !important; } .art-danmuku-left { @@ -180,7 +154,6 @@ &.art-danmuku-mount { max-width: 100% !important; - height: 34px; .art-danmuku-left { .art-danmuku-style { diff --git a/packages/artplayer/src/style/bottom.less b/packages/artplayer/src/style/bottom.less index f56f085d9..e0c5b7793 100644 --- a/packages/artplayer/src/style/bottom.less +++ b/packages/artplayer/src/style/bottom.less @@ -9,17 +9,23 @@ pointer-events: none; gap: var(--art-bottom-gap); padding: 0 var(--art-padding); - transform: translateY(var(--art-bottom-offset)); - transition: all var(--art-transition-duration) ease; + transition: opacity var(--art-transition-duration) ease; background-size: 100% var(--art-bottom-height); .art-bottom-gradient(); + + .art-controls, .art-progress { + transform: translateY(var(--art-bottom-offset)); + transition: transform var(--art-transition-duration) ease; + } } &.art-control-show, &.art-hover { .art-bottom { - transform: translateY(0); opacity: 1; + .art-controls, .art-progress { + transform: translateY(0); + } } } } diff --git a/packages/artplayer/src/style/fullscreen.less b/packages/artplayer/src/style/fullscreen.less new file mode 100644 index 000000000..9b70b162b --- /dev/null +++ b/packages/artplayer/src/style/fullscreen.less @@ -0,0 +1,4 @@ +.art-fullscreen { + --art-control-height: 60px; + --art-control-icon-scale: 1.3; +} diff --git a/packages/artplayer/src/style/fullscreenWeb.less b/packages/artplayer/src/style/fullscreenWeb.less index aac0902b1..6793af031 100644 --- a/packages/artplayer/src/style/fullscreenWeb.less +++ b/packages/artplayer/src/style/fullscreenWeb.less @@ -1,3 +1,5 @@ .art-fullscreen-web { + --art-control-height: 60px; + --art-control-icon-scale: 1.3; .art-full(var(--art-fullscreen-web-index), fixed); } diff --git a/packages/artplayer/src/style/index.less b/packages/artplayer/src/style/index.less index a7d49a6e2..ef9215e49 100644 --- a/packages/artplayer/src/style/index.less +++ b/packages/artplayer/src/style/index.less @@ -20,6 +20,7 @@ @import './info.less'; @import './hideCursor.less'; @import './aspectRatio.less'; +@import './fullscreen.less'; @import './fullscreenWeb.less'; @import './mini.less'; @import './autoSize.less'; diff --git a/packages/artplayer/src/style/mobile.less b/packages/artplayer/src/style/mobile.less index cb4330ab6..acdbc0656 100644 --- a/packages/artplayer/src/style/mobile.less +++ b/packages/artplayer/src/style/mobile.less @@ -1,4 +1,4 @@ -.art-mobile { +.art-video-player.art-mobile { --art-bottom-gap: 10px; --art-control-height: 38px; --art-control-icon-scale: 1;