From 2983cb7c51f65e6cf1bdd8c8c3387c75e0c3287c Mon Sep 17 00:00:00 2001 From: Harvey Zhao Date: Wed, 16 Sep 2026 00:47:30 +0800 Subject: [PATCH] chore(release): [REL-09] prepare independent major versions and verified artifacts --- docs/compiled/artplayer-plugin-ads.js | 2 +- docs/compiled/artplayer-plugin-ads.legacy.js | 2 +- docs/compiled/artplayer-plugin-ads.mjs | 2 +- docs/compiled/artplayer-plugin-ambilight.js | 2 +- .../artplayer-plugin-ambilight.legacy.js | 2 +- docs/compiled/artplayer-plugin-ambilight.mjs | 2 +- docs/compiled/artplayer-plugin-asr.js | 2 +- docs/compiled/artplayer-plugin-asr.legacy.js | 2 +- docs/compiled/artplayer-plugin-asr.mjs | 2 +- docs/compiled/artplayer-plugin-audio-track.js | 2 +- .../artplayer-plugin-audio-track.legacy.js | 2 +- .../compiled/artplayer-plugin-audio-track.mjs | 2 +- .../artplayer-plugin-auto-thumbnail.js | 2 +- .../artplayer-plugin-auto-thumbnail.legacy.js | 2 +- .../artplayer-plugin-auto-thumbnail.mjs | 2 +- docs/compiled/artplayer-plugin-chapter.js | 2 +- .../artplayer-plugin-chapter.legacy.js | 2 +- docs/compiled/artplayer-plugin-chapter.mjs | 2 +- docs/compiled/artplayer-plugin-chromecast.js | 2 +- .../artplayer-plugin-chromecast.legacy.js | 2 +- docs/compiled/artplayer-plugin-chromecast.mjs | 2 +- .../compiled/artplayer-plugin-danmuku-mask.js | 2 +- .../artplayer-plugin-danmuku-mask.legacy.js | 2 +- .../artplayer-plugin-danmuku-mask.mjs | 2 +- docs/compiled/artplayer-plugin-danmuku.js | 4 +- .../artplayer-plugin-danmuku.legacy.js | 4 +- docs/compiled/artplayer-plugin-danmuku.mjs | 4 +- .../compiled/artplayer-plugin-dash-control.js | 2 +- .../artplayer-plugin-dash-control.legacy.js | 2 +- .../artplayer-plugin-dash-control.mjs | 2 +- .../compiled/artplayer-plugin-document-pip.js | 2 +- .../artplayer-plugin-document-pip.legacy.js | 2 +- .../artplayer-plugin-document-pip.mjs | 2 +- docs/compiled/artplayer-plugin-hls-control.js | 2 +- .../artplayer-plugin-hls-control.legacy.js | 2 +- .../compiled/artplayer-plugin-hls-control.mjs | 2 +- docs/compiled/artplayer-plugin-jassub.js | 2 +- .../artplayer-plugin-jassub.legacy.js | 2 +- docs/compiled/artplayer-plugin-jassub.mjs | 2 +- .../artplayer-plugin-multiple-subtitles.js | 2 +- ...player-plugin-multiple-subtitles.legacy.js | 2 +- .../artplayer-plugin-multiple-subtitles.mjs | 2 +- docs/compiled/artplayer-plugin-vast.js | 2 +- docs/compiled/artplayer-plugin-vast.legacy.js | 2 +- docs/compiled/artplayer-plugin-vast.mjs | 2 +- .../artplayer-plugin-vtt-thumbnail.js | 2 +- .../artplayer-plugin-vtt-thumbnail.legacy.js | 2 +- .../artplayer-plugin-vtt-thumbnail.mjs | 2 +- docs/compiled/artplayer-proxy-canvas.js | 2 +- .../compiled/artplayer-proxy-canvas.legacy.js | 2 +- docs/compiled/artplayer-proxy-canvas.mjs | 2 +- docs/compiled/artplayer-proxy-mediabunny.js | 2 +- .../artplayer-proxy-mediabunny.legacy.js | 2 +- docs/compiled/artplayer-proxy-mediabunny.mjs | 2 +- docs/compiled/artplayer-tool-iframe.js | 2 +- docs/compiled/artplayer-tool-iframe.legacy.js | 2 +- docs/compiled/artplayer-tool-iframe.mjs | 2 +- docs/compiled/artplayer-tool-thumbnail.js | 2 +- .../artplayer-tool-thumbnail.legacy.js | 2 +- docs/compiled/artplayer-tool-thumbnail.mjs | 2 +- docs/compiled/artplayer.js | 4 +- docs/compiled/artplayer.legacy.js | 4 +- docs/compiled/artplayer.mjs | 4 +- docs/document/404.html | 2 +- docs/document/advanced/built-in.html | 2 +- docs/document/advanced/class.html | 2 +- docs/document/advanced/event.html | 2 +- docs/document/advanced/global.html | 2 +- docs/document/advanced/plugin.html | 2 +- docs/document/advanced/property.html | 2 +- ...n_plugin_vtt-thumbnail.md.CI6T1LST.lean.js | 1 - ...=> en_plugin_vtt-thumbnail.md.D4KIZyUV.js} | 2 +- ...n_plugin_vtt-thumbnail.md.D4KIZyUV.lean.js | 1 + .../plugin_vtt-thumbnail.md.CqZZ5Lk3.lean.js | 1 - ...js => plugin_vtt-thumbnail.md.DCY21cNd.js} | 2 +- .../plugin_vtt-thumbnail.md.DCY21cNd.lean.js | 1 + docs/document/component/contextmenu.html | 2 +- docs/document/component/controls.html | 2 +- docs/document/component/layers.html | 2 +- docs/document/component/setting.html | 2 +- docs/document/en/advanced/built-in.html | 2 +- docs/document/en/advanced/class.html | 2 +- docs/document/en/advanced/event.html | 2 +- docs/document/en/advanced/global.html | 2 +- docs/document/en/advanced/plugin.html | 2 +- docs/document/en/advanced/property.html | 2 +- docs/document/en/component/contextmenu.html | 2 +- docs/document/en/component/controls.html | 2 +- docs/document/en/component/layers.html | 2 +- docs/document/en/component/setting.html | 2 +- docs/document/en/index.html | 2 +- docs/document/en/plugin/audio-track.html | 2 +- docs/document/en/plugin/danmuku.html | 2 +- docs/document/en/plugin/dash-control.html | 2 +- docs/document/en/plugin/hls-control.html | 2 +- docs/document/en/plugin/vtt-thumbnail.html | 6 +- docs/document/en/start/i18n.html | 2 +- docs/document/en/start/option.html | 2 +- docs/document/hashmap.json | 2 +- docs/document/index.html | 2 +- docs/document/plugin/audio-track.html | 2 +- docs/document/plugin/danmuku.html | 2 +- docs/document/plugin/dash-control.html | 2 +- docs/document/plugin/hls-control.html | 2 +- docs/document/plugin/vtt-thumbnail.html | 6 +- docs/document/start/i18n.html | 2 +- docs/document/start/option.html | 2 +- docs/llms.manifest.json | 4 +- docs/llms.txt | 11 +- example/react.js/README.md | 7 + example/react.js/package.json | 6 +- example/vue.js/README.md | 7 + example/vue.js/package.json | 6 +- package.json | 5 +- packages/artplayer-plugin-ads/CHANGELOG.md | 14 + .../dist/artplayer-plugin-ads.js | 2 +- .../dist/artplayer-plugin-ads.legacy.js | 2 +- .../dist/artplayer-plugin-ads.mjs | 2 +- packages/artplayer-plugin-ads/package.json | 2 +- .../artplayer-plugin-ambilight/CHANGELOG.md | 14 + .../dist/artplayer-plugin-ambilight.js | 2 +- .../dist/artplayer-plugin-ambilight.legacy.js | 2 +- .../dist/artplayer-plugin-ambilight.mjs | 2 +- .../artplayer-plugin-ambilight/package.json | 2 +- packages/artplayer-plugin-asr/CHANGELOG.md | 14 + .../dist/artplayer-plugin-asr.js | 2 +- .../dist/artplayer-plugin-asr.legacy.js | 2 +- .../dist/artplayer-plugin-asr.mjs | 2 +- packages/artplayer-plugin-asr/package.json | 2 +- .../artplayer-plugin-audio-track/CHANGELOG.md | 14 + .../dist/artplayer-plugin-audio-track.js | 2 +- .../artplayer-plugin-audio-track.legacy.js | 2 +- .../dist/artplayer-plugin-audio-track.mjs | 2 +- .../artplayer-plugin-audio-track/package.json | 2 +- .../CHANGELOG.md | 14 + .../dist/artplayer-plugin-auto-thumbnail.js | 2 +- .../artplayer-plugin-auto-thumbnail.legacy.js | 2 +- .../dist/artplayer-plugin-auto-thumbnail.mjs | 2 +- .../package.json | 2 +- .../artplayer-plugin-chapter/CHANGELOG.md | 14 + .../dist/artplayer-plugin-chapter.js | 2 +- .../dist/artplayer-plugin-chapter.legacy.js | 2 +- .../dist/artplayer-plugin-chapter.mjs | 2 +- .../artplayer-plugin-chapter/package.json | 2 +- .../artplayer-plugin-chromecast/CHANGELOG.md | 14 + .../dist/artplayer-plugin-chromecast.js | 2 +- .../artplayer-plugin-chromecast.legacy.js | 2 +- .../dist/artplayer-plugin-chromecast.mjs | 2 +- .../artplayer-plugin-chromecast/package.json | 10 +- .../CHANGELOG.md | 14 + .../dist/artplayer-plugin-danmuku-mask.js | 2 +- .../artplayer-plugin-danmuku-mask.legacy.js | 2 +- .../dist/artplayer-plugin-danmuku-mask.mjs | 2 +- .../package.json | 2 +- .../artplayer-plugin-danmuku/CHANGELOG.md | 14 + .../dist/artplayer-plugin-danmuku.js | 4 +- .../dist/artplayer-plugin-danmuku.legacy.js | 4 +- .../dist/artplayer-plugin-danmuku.mjs | 4 +- .../artplayer-plugin-danmuku/package.json | 2 +- .../CHANGELOG.md | 14 + .../dist/artplayer-plugin-dash-control.js | 2 +- .../artplayer-plugin-dash-control.legacy.js | 2 +- .../dist/artplayer-plugin-dash-control.mjs | 2 +- .../package.json | 2 +- .../CHANGELOG.md | 14 + .../dist/artplayer-plugin-document-pip.js | 2 +- .../artplayer-plugin-document-pip.legacy.js | 2 +- .../dist/artplayer-plugin-document-pip.mjs | 2 +- .../package.json | 2 +- .../artplayer-plugin-hls-control/CHANGELOG.md | 14 + .../dist/artplayer-plugin-hls-control.js | 2 +- .../artplayer-plugin-hls-control.legacy.js | 2 +- .../dist/artplayer-plugin-hls-control.mjs | 2 +- .../artplayer-plugin-hls-control/package.json | 2 +- packages/artplayer-plugin-jassub/CHANGELOG.md | 14 + .../dist/artplayer-plugin-jassub.js | 2 +- .../dist/artplayer-plugin-jassub.legacy.js | 2 +- .../dist/artplayer-plugin-jassub.mjs | 2 +- packages/artplayer-plugin-jassub/package.json | 2 +- .../CHANGELOG.md | 14 + .../artplayer-plugin-multiple-subtitles.js | 2 +- ...player-plugin-multiple-subtitles.legacy.js | 2 +- .../artplayer-plugin-multiple-subtitles.mjs | 2 +- .../package.json | 2 +- packages/artplayer-plugin-vast/CHANGELOG.md | 14 + .../dist/artplayer-plugin-vast.js | 2 +- .../dist/artplayer-plugin-vast.legacy.js | 2 +- .../dist/artplayer-plugin-vast.mjs | 2 +- packages/artplayer-plugin-vast/package.json | 2 +- .../CHANGELOG.md | 14 + .../dist/artplayer-plugin-vtt-thumbnail.js | 2 +- .../artplayer-plugin-vtt-thumbnail.legacy.js | 2 +- .../dist/artplayer-plugin-vtt-thumbnail.mjs | 2 +- .../package.json | 2 +- packages/artplayer-proxy-canvas/CHANGELOG.md | 14 + .../dist/artplayer-proxy-canvas.js | 2 +- .../dist/artplayer-proxy-canvas.legacy.js | 2 +- .../dist/artplayer-proxy-canvas.mjs | 2 +- packages/artplayer-proxy-canvas/package.json | 2 +- .../artplayer-proxy-mediabunny/CHANGELOG.md | 14 + .../dist/artplayer-proxy-mediabunny.js | 2 +- .../dist/artplayer-proxy-mediabunny.legacy.js | 2 +- .../dist/artplayer-proxy-mediabunny.mjs | 2 +- .../artplayer-proxy-mediabunny/package.json | 6 +- packages/artplayer-tool-iframe/CHANGELOG.md | 14 + .../dist/artplayer-tool-iframe.js | 2 +- .../dist/artplayer-tool-iframe.legacy.js | 2 +- .../dist/artplayer-tool-iframe.mjs | 2 +- packages/artplayer-tool-iframe/package.json | 6 +- .../artplayer-tool-thumbnail/CHANGELOG.md | 14 + .../dist/artplayer-tool-thumbnail.js | 2 +- .../dist/artplayer-tool-thumbnail.legacy.js | 2 +- .../dist/artplayer-tool-thumbnail.mjs | 2 +- .../artplayer-tool-thumbnail/package.json | 3 +- packages/artplayer-vitepress/CHANGELOG.md | 14 + packages/artplayer-vitepress/package.json | 2 +- packages/artplayer/CHANGELOG.md | 14 + packages/artplayer/dist/artplayer.js | 4 +- packages/artplayer/dist/artplayer.legacy.js | 4 +- packages/artplayer/dist/artplayer.mjs | 4 +- packages/artplayer/package.json | 2 +- .../baselines/major-version-preparation.json | 904 +++++++++++++ .../version-registry-prepared-2026-09-16.json | 1203 +++++++++++++++++ .../2026-09-16-REL-09-major-versions.md | 81 ++ refactor/plan.md | 5 +- refactor/progress.md | 15 + refactor/scripts/react-consumer.mjs | 3 +- refactor/scripts/vue-consumer.mjs | 3 +- refactor/tasks.json | 9 +- refactor/version-plan.md | 6 +- refactor/version-policy.md | 4 +- 231 files changed, 2784 insertions(+), 232 deletions(-) delete mode 100644 docs/document/assets/en_plugin_vtt-thumbnail.md.CI6T1LST.lean.js rename docs/document/assets/{en_plugin_vtt-thumbnail.md.CI6T1LST.js => en_plugin_vtt-thumbnail.md.D4KIZyUV.js} (88%) create mode 100644 docs/document/assets/en_plugin_vtt-thumbnail.md.D4KIZyUV.lean.js delete mode 100644 docs/document/assets/plugin_vtt-thumbnail.md.CqZZ5Lk3.lean.js rename docs/document/assets/{plugin_vtt-thumbnail.md.CqZZ5Lk3.js => plugin_vtt-thumbnail.md.DCY21cNd.js} (88%) create mode 100644 docs/document/assets/plugin_vtt-thumbnail.md.DCY21cNd.lean.js create mode 100644 packages/artplayer-plugin-ads/CHANGELOG.md create mode 100644 packages/artplayer-plugin-ambilight/CHANGELOG.md create mode 100644 packages/artplayer-plugin-asr/CHANGELOG.md create mode 100644 packages/artplayer-plugin-audio-track/CHANGELOG.md create mode 100644 packages/artplayer-plugin-auto-thumbnail/CHANGELOG.md create mode 100644 packages/artplayer-plugin-chapter/CHANGELOG.md create mode 100644 packages/artplayer-plugin-chromecast/CHANGELOG.md create mode 100644 packages/artplayer-plugin-danmuku-mask/CHANGELOG.md create mode 100644 packages/artplayer-plugin-danmuku/CHANGELOG.md create mode 100644 packages/artplayer-plugin-dash-control/CHANGELOG.md create mode 100644 packages/artplayer-plugin-document-pip/CHANGELOG.md create mode 100644 packages/artplayer-plugin-hls-control/CHANGELOG.md create mode 100644 packages/artplayer-plugin-jassub/CHANGELOG.md create mode 100644 packages/artplayer-plugin-multiple-subtitles/CHANGELOG.md create mode 100644 packages/artplayer-plugin-vast/CHANGELOG.md create mode 100644 packages/artplayer-plugin-vtt-thumbnail/CHANGELOG.md create mode 100644 packages/artplayer-proxy-canvas/CHANGELOG.md create mode 100644 packages/artplayer-proxy-mediabunny/CHANGELOG.md create mode 100644 packages/artplayer-tool-iframe/CHANGELOG.md create mode 100644 packages/artplayer-tool-thumbnail/CHANGELOG.md create mode 100644 packages/artplayer-vitepress/CHANGELOG.md create mode 100644 packages/artplayer/CHANGELOG.md create mode 100644 refactor/baselines/major-version-preparation.json create mode 100644 refactor/baselines/version-registry-prepared-2026-09-16.json create mode 100644 refactor/changes/2026-09-16-REL-09-major-versions.md diff --git a/docs/compiled/artplayer-plugin-ads.js b/docs/compiled/artplayer-plugin-ads.js index 94810bdaf..d96b47734 100644 --- a/docs/compiled/artplayer-plugin-ads.js +++ b/docs/compiled/artplayer-plugin-ads.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-ads.js v2.1.0 + * artplayer-plugin-ads.js v3.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-ads.legacy.js b/docs/compiled/artplayer-plugin-ads.legacy.js index ce8ae6c7a..ad0fb2b3d 100644 --- a/docs/compiled/artplayer-plugin-ads.legacy.js +++ b/docs/compiled/artplayer-plugin-ads.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-ads.js v2.1.0 + * artplayer-plugin-ads.js v3.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-ads.mjs b/docs/compiled/artplayer-plugin-ads.mjs index 7b7e55437..f1a5d6f03 100644 --- a/docs/compiled/artplayer-plugin-ads.mjs +++ b/docs/compiled/artplayer-plugin-ads.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-ads.js v2.1.0 + * artplayer-plugin-ads.js v3.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-ambilight.js b/docs/compiled/artplayer-plugin-ambilight.js index e7396874a..7952cbc16 100644 --- a/docs/compiled/artplayer-plugin-ambilight.js +++ b/docs/compiled/artplayer-plugin-ambilight.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-ambilight.js v1.1.0 + * artplayer-plugin-ambilight.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-ambilight.legacy.js b/docs/compiled/artplayer-plugin-ambilight.legacy.js index 6c52b4c6f..e1042f39b 100644 --- a/docs/compiled/artplayer-plugin-ambilight.legacy.js +++ b/docs/compiled/artplayer-plugin-ambilight.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-ambilight.js v1.1.0 + * artplayer-plugin-ambilight.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-ambilight.mjs b/docs/compiled/artplayer-plugin-ambilight.mjs index b6f4eadca..d7fd43be3 100644 --- a/docs/compiled/artplayer-plugin-ambilight.mjs +++ b/docs/compiled/artplayer-plugin-ambilight.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-ambilight.js v1.1.0 + * artplayer-plugin-ambilight.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-asr.js b/docs/compiled/artplayer-plugin-asr.js index fa9e94228..8681a85c8 100644 --- a/docs/compiled/artplayer-plugin-asr.js +++ b/docs/compiled/artplayer-plugin-asr.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-asr.js v2.1.0 + * artplayer-plugin-asr.js v3.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-asr.legacy.js b/docs/compiled/artplayer-plugin-asr.legacy.js index a0f44ac8e..4bea7fc33 100644 --- a/docs/compiled/artplayer-plugin-asr.legacy.js +++ b/docs/compiled/artplayer-plugin-asr.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-asr.js v2.1.0 + * artplayer-plugin-asr.js v3.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-asr.mjs b/docs/compiled/artplayer-plugin-asr.mjs index fbae88cbe..90a4c231f 100644 --- a/docs/compiled/artplayer-plugin-asr.mjs +++ b/docs/compiled/artplayer-plugin-asr.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-asr.js v2.1.0 + * artplayer-plugin-asr.js v3.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-audio-track.js b/docs/compiled/artplayer-plugin-audio-track.js index 69c7f2693..0697f039b 100644 --- a/docs/compiled/artplayer-plugin-audio-track.js +++ b/docs/compiled/artplayer-plugin-audio-track.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-audio-track.js v1.1.0 + * artplayer-plugin-audio-track.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-audio-track.legacy.js b/docs/compiled/artplayer-plugin-audio-track.legacy.js index 12cd4abb8..e9abcd163 100644 --- a/docs/compiled/artplayer-plugin-audio-track.legacy.js +++ b/docs/compiled/artplayer-plugin-audio-track.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-audio-track.js v1.1.0 + * artplayer-plugin-audio-track.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-audio-track.mjs b/docs/compiled/artplayer-plugin-audio-track.mjs index 450af29e3..31a5ed8c7 100644 --- a/docs/compiled/artplayer-plugin-audio-track.mjs +++ b/docs/compiled/artplayer-plugin-audio-track.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-audio-track.js v1.1.0 + * artplayer-plugin-audio-track.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-auto-thumbnail.js b/docs/compiled/artplayer-plugin-auto-thumbnail.js index 775593a8e..a48df8e24 100644 --- a/docs/compiled/artplayer-plugin-auto-thumbnail.js +++ b/docs/compiled/artplayer-plugin-auto-thumbnail.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-auto-thumbnail.js v1.1.0 + * artplayer-plugin-auto-thumbnail.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-auto-thumbnail.legacy.js b/docs/compiled/artplayer-plugin-auto-thumbnail.legacy.js index e0069461a..c90b3e418 100644 --- a/docs/compiled/artplayer-plugin-auto-thumbnail.legacy.js +++ b/docs/compiled/artplayer-plugin-auto-thumbnail.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-auto-thumbnail.js v1.1.0 + * artplayer-plugin-auto-thumbnail.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-auto-thumbnail.mjs b/docs/compiled/artplayer-plugin-auto-thumbnail.mjs index 0539d23b8..3ae054652 100644 --- a/docs/compiled/artplayer-plugin-auto-thumbnail.mjs +++ b/docs/compiled/artplayer-plugin-auto-thumbnail.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-auto-thumbnail.js v1.1.0 + * artplayer-plugin-auto-thumbnail.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-chapter.js b/docs/compiled/artplayer-plugin-chapter.js index af7b8bddf..ef5408e15 100644 --- a/docs/compiled/artplayer-plugin-chapter.js +++ b/docs/compiled/artplayer-plugin-chapter.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-chapter.js v1.1.0 + * artplayer-plugin-chapter.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-chapter.legacy.js b/docs/compiled/artplayer-plugin-chapter.legacy.js index 31087aeff..7a97c51c7 100644 --- a/docs/compiled/artplayer-plugin-chapter.legacy.js +++ b/docs/compiled/artplayer-plugin-chapter.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-chapter.js v1.1.0 + * artplayer-plugin-chapter.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-chapter.mjs b/docs/compiled/artplayer-plugin-chapter.mjs index ee8cad7c8..e8ec95806 100644 --- a/docs/compiled/artplayer-plugin-chapter.mjs +++ b/docs/compiled/artplayer-plugin-chapter.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-chapter.js v1.1.0 + * artplayer-plugin-chapter.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-chromecast.js b/docs/compiled/artplayer-plugin-chromecast.js index ee2470036..0420b3f5e 100644 --- a/docs/compiled/artplayer-plugin-chromecast.js +++ b/docs/compiled/artplayer-plugin-chromecast.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-chromecast.js v1.1.0 + * artplayer-plugin-chromecast.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-chromecast.legacy.js b/docs/compiled/artplayer-plugin-chromecast.legacy.js index b53bb0487..6519ae95c 100644 --- a/docs/compiled/artplayer-plugin-chromecast.legacy.js +++ b/docs/compiled/artplayer-plugin-chromecast.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-chromecast.js v1.1.0 + * artplayer-plugin-chromecast.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-chromecast.mjs b/docs/compiled/artplayer-plugin-chromecast.mjs index 6d2367326..674ad736a 100644 --- a/docs/compiled/artplayer-plugin-chromecast.mjs +++ b/docs/compiled/artplayer-plugin-chromecast.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-chromecast.js v1.1.0 + * artplayer-plugin-chromecast.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-danmuku-mask.js b/docs/compiled/artplayer-plugin-danmuku-mask.js index 4b0e69a87..5b0ee757a 100644 --- a/docs/compiled/artplayer-plugin-danmuku-mask.js +++ b/docs/compiled/artplayer-plugin-danmuku-mask.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-danmuku-mask.js v1.1.0 + * artplayer-plugin-danmuku-mask.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-danmuku-mask.legacy.js b/docs/compiled/artplayer-plugin-danmuku-mask.legacy.js index ae25b32f6..1d22daa4c 100644 --- a/docs/compiled/artplayer-plugin-danmuku-mask.legacy.js +++ b/docs/compiled/artplayer-plugin-danmuku-mask.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-danmuku-mask.js v1.1.0 + * artplayer-plugin-danmuku-mask.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-danmuku-mask.mjs b/docs/compiled/artplayer-plugin-danmuku-mask.mjs index 8f566cad9..600b99468 100644 --- a/docs/compiled/artplayer-plugin-danmuku-mask.mjs +++ b/docs/compiled/artplayer-plugin-danmuku-mask.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-danmuku-mask.js v1.1.0 + * artplayer-plugin-danmuku-mask.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-danmuku.js b/docs/compiled/artplayer-plugin-danmuku.js index 712bb2bea..96f8d765f 100644 --- a/docs/compiled/artplayer-plugin-danmuku.js +++ b/docs/compiled/artplayer-plugin-danmuku.js @@ -1,7 +1,7 @@ /*! - * artplayer-plugin-danmuku.js v5.3.0 + * artplayer-plugin-danmuku.js v6.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. */ -!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.artplayerPluginDanmuku=e(),define(function(){return t.artplayerPluginDanmuku})):(t="undefined"!==typeof globalThis?globalThis:t||self).artplayerPluginDanmuku=e()}(this,function(){"use strict";function t(t){return t instanceof Promise||"[object Promise]"===Object.prototype.toString.call(t)}function e(t){switch(t){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function i(t){if("string"!==typeof t)return[];const i=t.matchAll(/]*?p="(?

[^"]+)"[^>]*>(?.*?)<\/d>/gs);return Array.from(i).map(t=>{const i=t.groups.p.split(",");if(i.length>=8){return{text:t.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(i[0]),mode:e(Number(i[1])),fontSize:Number(i[2]),color:`#${Number(i[3]).toString(16)}`,timestamp:Number(i[4]),pool:Number(i[5]),userID:i[6],rowID:Number(i[7])}}return null}).filter(Boolean)}function n({data:t}){const{xml:e,id:n}=t,s=i(e);globalThis.postMessage({danmus:s,id:n})}let s=0;function a(t,{signal:a,onCancel:r}={}){return new Promise((o,l)=>{let d,h,c,p=!1;const u=++s,m=()=>g(void 0,function(t){if(void 0!==t?.reason)return t.reason;const e=new Error("Bilibili Danmu loading cancelled");return e.name="AbortError",e}(a));function f(){let t,e=!1;try{if(d){const t=d;d=void 0,t.onmessage=null,t.onerror=null,t.onmessageerror=null,t.terminate()}}catch(i){t=i,e=!0}if(void 0!==h){const n=h;h=void 0;try{URL.revokeObjectURL(n)}catch(i){e||(t=i),e=!0}}if(e)throw t}function g(t,e){if(p)return;p=!0;let i=arguments.length>1;a?.removeEventListener("abort",m),c?.();try{f()}catch(n){i||(e=n),i=!0}i?l(e):o(t)}function y(t,e){if(!p){console.error("Error parsing Bilibili Danmu:",e);try{g(i(t))}catch(n){g(void 0,n)}}}a?.aborted?m():(a?.addEventListener("abort",m),c=r?.(m),p?c?.():async function(){const s=a?await fetch(t,{signal:a}):await fetch(t);if(p)return;const r=await s.text();if(!p)try{const t=`\n ${e.toString()}\n ${i.toString()}\n onmessage = ${n.toString()}\n `;if(h=URL.createObjectURL(new Blob([t],{type:"application/javascript"})),p)return void f();if(d=new Worker(h),p)return void f();d.onmessage=t=>{if(p||t.data?.id!==u)return;const{danmus:e}=t.data;Array.isArray(e)?g(e):g(void 0,new Error("Invalid Bilibili Danmu worker response"))},d.onerror=t=>{t.preventDefault?.(),y(r,t.error||t)},d.onmessageerror=t=>y(r,t.error||t),d.postMessage({xml:r,id:u})}catch(o){y(r,o)}}().catch(t=>g(void 0,t)))})}const r=new WeakMap,o=Symbol("cancelled danmuku input");function l(t){return r.has(t)||r.set(t,{closed:!1,tasks:new Set,emitting:[]}),r.get(t)}function d(t){const e=l(t),i=e.emitting[e.emitting.length-1];return!e.closed&&!t.art.isDestroy&&(!i||i.active())}function h(t){const e=l(t);e.closed=!0;for(const i of[...e.tasks])i.cancel()}function c(t,e,i){const n=t.states[e]||[];for(let s=0;s{const s=n.$ref.offsetTop,a=this.owner.getLeft(n.$ref)-i,r=n.$ref.clientHeight,o=n.$ref.clientWidth,l=a+o,d=e-l,h=l/n.$restTime,c={};c.top=s,c.left=a,c.height=r,c.width=o,c.right=d,c.speed=h,c.distance=l,c.time=n.$restTime,c.mode=n.mode,t.push(c)}),t}left(t){const e=t.getBoundingClientRect();return this.owner.isRotate?e.top:e.left}makeWait(t){this.owner.setState(t,"wait"),t.$ref&&(t.$ref.style.cssText=this.owner.constructor.cssText,t.$ref.style.visibility="hidden",t.$ref.style.marginLeft="0px",t.$ref.style.transform="translateX(0px)",t.$ref.style.transition="transform 0s linear 0s",this.owner.$refs.push(t.$ref),t.$ref=null)}resize(){const{clientWidth:t}=this.owner.$player;this.owner.filter("stop",e=>{if(0===e.mode)e.$ref.style.left=`${t}px`}),this.owner.filter("emit",e=>{switch(e.$lastStartTime=Date.now(),e.mode){case 0:{const i=t+e.$ref.clientWidth;e.$ref.style.left=`${t}px`,e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`;break}}})}continue(){const{clientWidth:t}=this.owner.$player;return this.owner.filter("stop",e=>{switch(this.owner.setState(e,"emit"),e.$lastStartTime=Date.now(),e.mode){case 0:{const i=t+e.$ref.clientWidth;e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`;break}}}),this}suspend(){const{clientWidth:t}=this.owner.$player;return this.owner.filter("emit",e=>{switch(this.owner.setState(e,"stop"),e.mode){case 0:{const i=t-(this.owner.getLeft(e.$ref)-this.owner.getLeft(this.owner.$player));e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition="transform 0s linear 0s";break}}}),this}prepare(t,e){const i=this.owner,n=i.$ref;return e.danmu=t,e.ref=n,t.$ref=n,n.textContent=t.text,i.$danmuku.appendChild(n),n.style.opacity=i.option.opacity,n.style.fontSize=`${i.fontSize}px`,n.style.color=t.color,n.style.border=t.border?`1px solid ${t.color}`:null,n.style.backgroundColor=t.border?"rgb(0 0 0 / 50%)":null,i.utils.setStyles(n,t.style),n}place(t,e,i,n,s){switch(e.style.top=`${i}px`,e.style.visibility="visible",e.dataset.mode=t.mode,e.dataset.id=t.id||"",t.mode){case 0:e.style.left=`${s}px`,e.style.marginLeft="0px",e.style.transform=`translateX(${-n}px)`,e.style.transition=`transform ${t.$restTime}s linear 0s`;break;case 1:case 2:e.style.left="50%",e.style.marginLeft=`-${e.clientWidth/2}px`}}release(t){const{danmu:e,ref:i}=t;i&&e.$ref===i&&(i.style.cssText=this.owner.constructor.cssText,i.style.visibility="hidden",this.owner.$refs.push(i),e.$ref=null),t.ref=null}clear(){this.destroy(),this.owner.$refs=[],this.owner.$danmuku.textContent=""}destroy(){for(const t of this.nodes)t.parentElement&&t.parentElement.removeChild(t);for(const t of this.owner.queue)t.$ref=null;this.owner.$refs.length=0,this.nodes.clear()}}function u({target:t,visibles:e,clientWidth:i,clientHeight:n,marginBottom:s,marginTop:a,antiOverlap:r}){const o=n-s,l=e.filter(e=>e.mode===t.mode&&e.top<=o).sort((t,e)=>t.top-e.top);if(0===l.length)return 2===t.mode?o-t.height:a;if(l.unshift({type:"top",top:0,left:0,right:0,height:a,width:i,speed:0,distance:i}),l.push({type:"bottom",top:o,left:0,right:0,height:s,width:i,speed:0,distance:i}),2===t.mode)for(let h=l.length-2;h>=0;h-=1){const e=l[h],i=l[h+1],n=e.top+e.height;if(i.top-n>=t.height)return i.top-t.height}else for(let h=1;h=t.height)return n}const d=[];for(let h=1;h{const i=Math.min(...e.map(t=>t.right)),n=Math.min(...t.map(t=>t.right));return i*e.length-n*t.length});break;case 1:case 2:d.sort((t,e)=>{const i=Math.max(...e.map(t=>t.width));return Math.max(...t.map(t=>t.width))*t.length-i*e.length})}return d[0][0].top}switch(t.mode){case 0:{const e=d.find(e=>e.every(e=>{if(ie.time}));return e&&e[0]?e[0].top:void 0}case 1:case 2:return}}class m{constructor(){this.rows=new Set,this.waiting=new Set,this.visibility=()=>this.clear()}begin(t){void 0===this.time&&this.capture(t,[],t.art.currentTime)}capture(t,e,i){const n=t.$player.ownerDocument;if(n!==this.document&&(this.document?.removeEventListener("visibilitychange",this.visibility),this.document=n,n?.addEventListener("visibilitychange",this.visibility),this.clear()),!Number.isFinite(i)||"hidden"===n?.visibilityState||t.art.video?.seeking)return this.clear(),e;const s=this.time,a=this.rows,r=this.waiting;if(this.time=i,this.rows=new Set(e),this.waiting=new Set(t.states.wait),void 0===s||i<=s)return e;const o=t.states.wait.filter(t=>r.has(t)&&!a.has(t)&&t.time>=s-.1&&t.time"ready"===t.$state),...o,...e.filter(t=>"ready"!==t.$state)]}clear(){this.time=void 0,this.rows.clear(),this.waiting.clear()}destroy(){this.document?.removeEventListener("visibilitychange",this.visibility),this.document=void 0,this.clear()}}class f{constructor(){this.pending=new Set,this.reserved=new Set}capture(t,e){for(const i of t)this.reserved.has(i)||e.has(i)||this.pending.add(i)}take(){const t=[],e=[];for(const n of this.pending)"ready"===n.$state?t.push(n):"wait"===n.$state&&e.push(n);this.pending.clear();const i=[...t,...e];return this.reserved=new Set(i),i}complete(){this.reserved.clear()}clear(){this.pending.clear(),this.reserved.clear()}}const g=Symbol("cancelled danmuku frame");class y{constructor(t){this.owner=t,this.generation=0,this.starts=0,this.frame=null,this.operation=null,this.closed=!1,this.running=!1,this.fault=!1,this.failedItems=new Set,this.buffer=new f,this.sampling=new m}active(t){const e=this.owner;return!this.closed&&!this.fault&&!e.art.isDestroy&&!e.isStop&&!e.isHide&&t.generation===this.generation}release(t){this.owner.renderer.release(t)}invalidate(){if(this.generation++,null!==this.frame&&window.cancelAnimationFrame(this.frame),this.frame=null,this.owner.timer=null,this.operation){const t=this.operation;this.operation=null,t.cancel(),this.release(t)}this.owner.workerClient?.cancel(),this.failedItems.clear(),this.buffer.clear(),this.sampling.clear()}report(t){try{this.owner.art.emit("artplayerPluginDanmuku:error",t)}catch(e){console.warn("Failed to report danmuku scheduling error:",e)}}fail(t){this.closed||this.fault||(this.fault=!0,this.invalidate(),this.report(t))}recover(){if(!this.closed&&!this.owner.art.isDestroy&&(this.failedItems.clear(),this.fault))try{this.owner.workerClient?.dispose(),this.owner.createWorker(),this.fault=!1}catch(t){this.report(t)}}schedule(){const t=this.owner;if(!(!this.running||this.closed||this.fault||t.art.isDestroy||t.isStop)){try{const e=t.art.video;(t.art.playing||!1===e?.paused&&!e.ended&&e.readyState>2)&&!t.isHide&&this.sampling.begin(t)}catch(e){return void this.fail(e)}null===this.frame&&(this.frame=window.requestAnimationFrame(()=>{if(this.frame=null,t.timer=null,this.closed||this.fault||t.isStop||t.art.isDestroy)return;const i=this.generation;try{if(t.art.playing&&!t.isHide){t.filter("emit",e=>{const i=Date.now();e.$restTime-=(i-e.$lastStartTime)/1e3,e.$lastStartTime=i,e.$restTime<=0&&t.makeWait(e)});const e=t.art.currentTime,n=t.readys;if(i!==this.generation)return;this.buffer.capture(this.sampling.capture(t,n,e),this.failedItems)}}catch(e){return void(i===this.generation&&this.fail(e))}if(this.schedule(),this.operation||!t.art.playing||t.isHide)return;const n=this.buffer.take();if(!n.length)return;let s;const a=new Promise(t=>s=()=>t(g)),r={generation:this.generation,cancel:s,wait:t=>Promise.race([t,a]),ref:null};return this.operation=r,this.run(r,n).catch(t=>{this.active(r)&&this.fail(t)}).finally(()=>{this.release(r),this.operation===r&&(this.operation=null,this.buffer.complete())})}),t.timer=this.frame)}}async run(t,e){const i=this.owner;if(i.art.playing&&this.active(t))for(const s of e){if(!this.active(t))return;if(this.failedItems.has(s))continue;let e;try{e=await t.wait(i.option.beforeVisible(s))}catch(n){if(!this.active(t))return;this.failedItems.add(s),this.report(n);continue}if(!this.active(t))return;if(!e)continue;const{clientWidth:a,clientHeight:r}=i.$player,o=i.renderer.prepare(s,t);if(!this.active(t))return;s.$lastStartTime=Date.now(),s.$restTime=i.speed;const l=a+o.clientWidth,d={type:"getDanmuTop",target:{mode:s.mode,height:o.clientHeight,speed:l/s.$restTime},visibles:i.visibles,antiOverlap:i.option.antiOverlap,clientWidth:a,clientHeight:r,marginBottom:i.marginBottom,marginTop:i.marginTop},h=d.antiOverlap?await t.wait(i.postMessage(d)):{result:u(d)},c="symbol"===typeof h?void 0:h.result;if(!this.active(t)||s.$ref!==o)return;void 0!==c?(s.$lastStartTime=Date.now(),i.setState(s,"emit"),i.renderer.place(s,o,c,l,a),t.ref=null,i.art.emit("artplayerPluginDanmuku:visible",s)):(i.setState(s,"ready"),this.release(t))}}destroy(){this.closed=!0,this.invalidate(),this.sampling.destroy()}}let v=0;class w{constructor(t,e){this.pending=new Map,this.closed=!1,this.failed=!1,this.onFailure=e,this.worker=t();try{this.worker.onmessage=t=>{const e=this.pending.get(t.data?.id);e&&(this.pending.delete(t.data.id),e.resolve(t.data))},this.worker.onerror=t=>{t.preventDefault?.(),this.fail(t.error||t)},this.worker.onmessageerror=t=>this.fail(t.error||t)}catch(i){try{this.dispose()}catch{}throw i}}request(t){t.id=++v;const{id:e}=t;return this.closed||this.failed?Promise.resolve({id:e,result:void 0}):new Promise((i,n)=>{this.pending.set(e,{resolve:i,reject:n});try{this.worker.postMessage(t)}catch(s){this.fail(s)}})}fail(t){if(!this.closed&&!this.failed){this.failed=!0;for(const e of this.pending.values())e.reject(t);this.pending.clear();try{this.dispose()}catch{}this.onFailure(t)}}cancel(){for(const[t,e]of this.pending)e.resolve({id:t,result:void 0});this.pending.clear()}dispose(){if(this.closed)return;this.closed=!0,this.cancel();let t,e=!1;const i=i=>{try{i()}catch(n){e||(t=n),e=!0}};for(const n of["onmessage","onerror","onmessageerror"])i(()=>this.worker[n]=null);if(i(()=>this.worker.terminate()),e)throw t}}const k='/*!\n * artplayer-plugin-danmuku.js v5.3.0\n * Github: https://github.com/zhw2590582/ArtPlayer\n * (c) 2017-2026 Harvey Zhao\n * Released under the MIT License.\n */\nfunction t({target:t,visibles:e,clientWidth:i,clientHeight:h,marginBottom:n,marginTop:o,antiOverlap:s}){const r=h-n,p=e.filter(e=>e.mode===t.mode&&e.top<=r).sort((t,e)=>t.top-e.top);if(0===p.length)return 2===t.mode?r-t.height:o;if(p.unshift({type:"top",top:0,left:0,right:0,height:o,width:i,speed:0,distance:i}),p.push({type:"bottom",top:r,left:0,right:0,height:n,width:i,speed:0,distance:i}),2===t.mode)for(let g=p.length-2;g>=0;g-=1){const e=p[g],i=p[g+1],h=e.top+e.height;if(i.top-h>=t.height)return i.top-t.height}else for(let g=1;g=t.height)return h}const a=[];for(let g=1;g{const i=Math.min(...e.map(t=>t.right)),h=Math.min(...t.map(t=>t.right));return i*e.length-h*t.length});break;case 1:case 2:a.sort((t,e)=>{const i=Math.max(...e.map(t=>t.width));return Math.max(...t.map(t=>t.width))*t.length-i*e.length})}return a[0][0].top}switch(t.mode){case 0:{const e=a.find(e=>e.every(e=>{if(ie.time}));return e&&e[0]?e[0].top:void 0}case 1:case 2:return}}onmessage=e=>{const{data:i}=e;if(!i.id||!i.type)return;const h=(0,{getDanmuTop:t}[i.type])(i);globalThis.postMessage({result:h,id:i.id})};\n',x="undefined"!==typeof self&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",k],{type:"text/javascript;charset=utf-8"});function b(t){let e;try{if(e=x&&(self.URL||self.webkitURL).createObjectURL(x),!e)throw"";const i=new Worker(e,{type:"module",name:t?.name});return i.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(e)}),i}catch(i){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(k),{type:"module",name:t?.name})}}class ${constructor(t,e){const{constructor:i,template:n}=t;this.utils=i.utils,this.validator=i.validator,this.$danmuku=n.$danmuku,this.$player=n.$player,this.art=t,this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.worker=null,this.workerClient=null,this.renderer=new p(this),this.scheduler=new y(this),this.option=$.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.reset=this.reset.bind(this),this.resize=this.resize.bind(this),this.destroy=this.destroy.bind(this),this.seek=this.seek.bind(this),d(this),t.on("destroy",this.destroy);try{if(this.config(e,!0),!d(this))return;this.createWorker()}catch(s){throw t.off("destroy",this.destroy),h(this),this.scheduler.destroy(),s}t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("resize",this.resize),t.on("video:seeking",this.seek),this.load().catch(t=>console.warn("Failed to load initial danmuku:",t))}static get option(){return{danmuku:[],speed:5,margin:[10,"25%"],opacity:1,color:"#FFFFFF",mode:0,modes:[0,1,2],fontSize:25,antiOverlap:!0,synchronousPlayback:!1,mount:void 0,heatmap:!1,width:512,points:[],filter:()=>!0,beforeEmit:()=>!0,beforeVisible:()=>!0,visible:!0,emitter:!0,maxLength:200,lockTime:5,theme:"dark",OPACITY:{},FONT_SIZE:{},MARGIN:{},SPEED:{},COLOR:[]}}static get scheme(){return{danmuku:"array|function|string|promise",speed:"number",margin:"array",opacity:"number",color:"string",mode:"number",modes:"array",fontSize:"number|string",antiOverlap:"boolean",synchronousPlayback:"boolean",mount:"?htmldivelement|string",heatmap:"object|boolean",width:"number",points:"array",filter:"function",beforeEmit:"function",beforeVisible:"function",visible:"boolean",emitter:"boolean",maxLength:"number",lockTime:"number",theme:"string",OPACITY:"object",FONT_SIZE:"object",MARGIN:"object",SPEED:"object",COLOR:"array"}}static get cssText(){return'\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 '}get isRotate(){return this.art.plugins?.autoOrientation?.state}get marginTop(){const{clamp:t}=this.utils,e=this.option.margin[0],{clientHeight:i}=this.$player;if("number"===typeof e)return t(e,0,i);if("string"===typeof e&&e.endsWith("%")){return t(i*(Number.parseFloat(e)/100),0,i)}return $.option.margin[0]}get marginBottom(){const{clamp:t}=this.utils,e=this.option.margin[1],{clientHeight:i}=this.$player;if("number"===typeof e)return t(e,0,i);if("string"===typeof e&&e.endsWith("%")){return t(i*(Number.parseFloat(e)/100),0,i)}return $.option.margin[1]}get fontSize(){const{clamp:t}=this.utils,{clientHeight:e}=this.$player,i=this.option.fontSize;if("number"===typeof i)return Math.round(t(i,12,e));if("string"===typeof i&&i.endsWith("%")){const n=Number.parseFloat(i)/100;return Math.round(t(e*n,12,e))}return $.option.fontSize}get $ref(){return this.renderer.acquire()}get readys(){return function(t){const{currentTime:e}=t.art,i=[];return c(t,"ready",t=>i.push(t)),c(t,"wait",t=>{e+.1>=t.time&&t.time>=e-.1&&i.push(t)}),i}(this)}get visibles(){return this.renderer.visibles}get speed(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}async load(e){const{errorHandle:i}=this.utils,n=function(t,e){const i=l(t);if(e)for(const o of[...i.tasks])o.replace&&o.cancel();let n,s=i.closed||t.art.isDestroy;const a=new Promise(t=>n=t),r=new Set,d="function"===typeof AbortController?new AbortController:void 0,h={replace:e,signal:d?.signal,active:()=>!s&&!i.closed&&!t.art.isDestroy,onCancel:t=>h.active()?(r.add(t),()=>r.delete(t)):(t(),()=>{}),cancel(){if(!s){s=!0,n(o),d?.abort();for(const t of[...r])t();r.clear()}},wait:t=>Promise.race([t,a]),emit(e){i.emitting.push(h);try{return t.emit(e)}finally{i.emitting.pop()}},finish(){i.tasks.delete(h),r.clear()}};return s?n(o):i.tasks.add(h),h}(this,void 0===e);try{if(!n.active())return this;const s=function(e,i){return"function"===typeof e?{asynchronous:!0,value:e()}:t(e)?{asynchronous:!0,value:e}:"string"===typeof e?{asynchronous:!0,value:a(e,i)}:{asynchronous:!1,value:Array.isArray(e)?e:[]}}(e||this.option.danmuku,n),r=s.asynchronous?await n.wait(s.value):s.value;if(!n.active())return this;i(Array.isArray(r),"Danmuku need return an array as result");const o=r;if(void 0===e){if(this.reset(),!n.active())return this;this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.renderer.clear()}for(let t=0;t{const i=a[e],n=r[e];return"function"===typeof i||"function"===typeof n||t(i)||t(n)?i!==n:JSON.stringify(i)!==JSON.stringify(n)}))&&!i)return this;const o=function(t,e,{defaults:i,validate:n,clamp:s,mount:a}){const r=Object.assign({},i,t,e);return n(r),r.mode=s(r.mode,0,2),r.speed=s(r.speed,1,10),r.opacity=s(r.opacity,0,1),r.lockTime=s(r.lockTime,1,60),r.maxLength=s(r.maxLength,1,1e3),r.mount=r.mount||a,r}(this.option,e,{defaults:$.option,validate:t=>this.validator(t,$.scheme),clamp:n,mount:s});if(!d(this))return this;const l=this.option.beforeVisible!==o.beforeVisible;return this.option=o,l&&(this.scheduler.invalidate(),this.scheduler.schedule()),e.fontSize&&(this.reset(),!d(this))||(this.option.visible?this.show():this.hide(),d(this)&&this.art.emit("artplayerPluginDanmuku:config",this.option)),this}getLeft(t){return this.renderer.left(t)}postMessage(t={}){return this.workerClient.request(t)}createWorker(){this.workerClient=new w(()=>new b,t=>this.scheduler.fail(t)),this.worker=this.workerClient.worker}filter(t,e){return c(this,t,e)}setState(t,e){!function(t,e,i){t.states[e.$state]=t.states[e.$state].filter(t=>t!==e),e.$state=i,e.$ref&&(e.$ref.dataset.state=i),t.states[i].push(e)}(this,t,e)}makeWait(t){this.renderer.makeWait(t)}update(){return this.scheduler.running=!0,this.scheduler.schedule(),this}resize(){this.renderer.resize()}continue(){return this.renderer.continue(),this}suspend(){return this.renderer.suspend(),this}stop(){return this.isStop=!0,this.scheduler.running=!1,this.scheduler.invalidate(),this.suspend(),this.art.emit("artplayerPluginDanmuku:stop"),this}start(){if(this.scheduler.closed||this.art.isDestroy)return this;const t=++this.scheduler.starts,e=this.scheduler.generation;this.isStop=!1,this.scheduler.recover();return this.scheduler.closed||this.art.isDestroy||this.isStop||this.scheduler.fault||e!==this.scheduler.generation||t!==this.scheduler.starts||(this.continue(),this.update(),this.art.emit("artplayerPluginDanmuku:start")),this}reset(){return this.scheduler.invalidate(),this.queue.forEach(t=>this.makeWait(t)),this.art.emit("artplayerPluginDanmuku:reset"),this.scheduler.recover(),this.scheduler.schedule(),this}seek(){this.scheduler.invalidate(),this.scheduler.schedule()}show(){return this.isHide=!1,this.$danmuku.style.opacity=1,this.option.visible=!0,this.art.emit("artplayerPluginDanmuku:show"),this}hide(){return this.isHide=!0,this.scheduler.invalidate(),this.$danmuku.style.opacity=0,this.option.visible=!1,this.art.emit("artplayerPluginDanmuku:hide"),this.scheduler.schedule(),this}destroy(){h(this),this.scheduler.destroy();try{try{this.stop()}finally{this.workerClient?.dispose()}}finally{this.renderer.destroy(),this.art.off("video:play",this.start),this.art.off("video:playing",this.start),this.art.off("video:pause",this.stop),this.art.off("video:waiting",this.stop),this.art.off("resize",this.resize),this.art.off("video:seeking",this.seek),this.art.off("destroy",this.destroy),this.art.emit("artplayerPluginDanmuku:destroy")}}}const M=4294967295;function S(t,e){let i=0,n=t.length;for(;iNumber.isFinite(t)&&t>0))return null;const r={xMin:0,xMax:t,yMin:0,yMax:128,scale:.25,opacity:.2,minHeight:Math.floor(.05*e),sampling:Math.max(1,Math.floor(t/100)),smoothing:.2,flattening:.2},o=Object.assign({},"object"===typeof s?s:{}),l=Object.assign({},r,o);for(const b of Object.keys(r))Number.isFinite(l[b])||(l[b]=r[b]);if(l.sampling<=0&&(l.sampling=r.sampling),l.xMin===l.xMax||l.yMin===l.yMax)return null;const d=Array.isArray(a)&&a.length>0,h=d?[...a]:function(t,e,i,n){if(!Number.isFinite(e)||e<=0||!Number.isFinite(i)||i<=0||!Number.isFinite(n)||n<=0||Math.floor(e/n)+1>M)return[];const s=t.map(t=>t.time).filter(t=>"number"===typeof t&&!Number.isNaN(t)).sort((t,e)=>t-e),a=[],r=i/e;if(!Number.isFinite(r))return[];for(let o=0;o<=e;o+=n){if(a.length>=M||o+n===o)return[];const t=o*r,e=(o+n)*r;a.push([o,S(s,e)-S(s,t)])}return a}(n,t,i,l.sampling);if(!h.length||!h.every(t=>Array.isArray(t)&&Number.isFinite(t[0])&&Number.isFinite(t[1])))return null;const c=h[h.length-1];if(c[0]!==t){if(h.length===M)return null;h.push([t,c[1]])}let p=1/0,u=-1/0;for(const b of h)p=Math.min(p,b[1]),u=Math.max(u,b[1]);const m=(p+u)/2;for(const b of h){const t=b[1];b[1]=t*(t>m?1+l.scale:1-l.scale)+l.minHeight}const f=!d&&!Number.isFinite(o.yMin)&&!Number.isFinite(o.yMax);let g=0;for(const b of h)g=Math.max(g,b[1]);const y=f&&g>r.yMax/4;y&&(l.yMax=4*g);const v=t=>y?Math.min(e,Math.max(.75*e,t)):t,w=(t,e,i,n)=>{const s=function(t,e){const i=e[0]-t[0],n=e[1]-t[1];return{length:Math.sqrt(i**2+n**2),angle:Math.atan2(n,i)}}(e||t,i||t),a=z(Math.cos(s.angle)*l.flattening,0,1,1,0),r=s.angle*a+(n?Math.PI:0),o=s.length*l.smoothing;return[t[0]+Math.cos(r)*o,v(t[1]+Math.sin(r)*o)]},k=h.map(i=>[z(i[0],l.xMin,l.xMax,0,t),v(z(i[1],l.yMin,l.yMax,e,0))]);if(!k.every(t=>t.every(Number.isFinite)))return null;const x=k.map((t,i,n)=>{if(0===i)return`M ${n[n.length-1][0]},${e} L ${t[0]},${e} L ${t[0]},${t[1]}`;const s=w(n[i-1],n[i-2],t),a=w(t,n[i-1],n[i+1],!0);return`C ${s[0]},${s[1]} ${a[0]},${a[1]} ${t[0]},${t[1]}${i===n.length-1?" z":""}`}).join(" ");return/NaN|Infinity/u.test(x)?null:{path:x,opacity:l.opacity,width:t,height:e}}let F=0;function C(t,e,i){if(t.isDestroy)return;const{query:n}=t.constructor.utils;let s;const a=[];let r,o,l,d=!1;const h=()=>!d&&!t.isDestroy;function c(e,i){const n=i;a.push([e,n]),t.on(e,n)}function p(e){if(d)return;let i;d=!0,o=null,l=null;let n=!1;const s=t=>{try{t()}catch(e){n||(i=e),n=!0}};for(const[r,o]of a.splice(0))s(()=>t.off(r,o));if(e&&r&&t.controls.heatmap===r&&s(()=>t.controls.remove("heatmap")),r=void 0,n)throw i}function u(t){h()&&o&&l&&(o.setAttribute("offset",100*t+"%"),l.setAttribute("offset",100*t+"%"))}function m(a){try{!function(a=[]){if(!h())return;o=null,l=null;const d=r;if(d.innerHTML="",t.option.isLive)return;const c=E({width:d.offsetWidth,height:d.offsetHeight,duration:t.duration,queue:e.queue,option:i,points:a});if(!c||!h())return;const p=d.ownerDocument;for(s||(s=p?"heatmap-solids":"heatmap-solids-"+ ++F);p?.getElementById(s);)s="heatmap-solids-"+ ++F;d.innerHTML=`\n \n \n \n \n \n \n \n \n \n \n \n `,o=n("#heatmap-start",d),l=n("#heatmap-stop",d),u(t.played)}(a)}catch(d){try{p(!0)}catch{}throw d}}c("destroy",()=>p(!0));try{t.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},beforeUnmount(){p(!1)},mounted(e){if(r=e,d)return t.controls.heatmap===e&&t.controls.remove("heatmap"),void(r=void 0);h()?(c("video:timeupdate",()=>u(t.played)),c("setBar",(t,e)=>{"played"===t&&u(e)}),c("ready",()=>m()),c("resize",()=>m()),c("artplayerPluginDanmuku:loaded",()=>m()),c("artplayerPluginDanmuku:points",t=>m(t))):p(!0)}})}catch(f){try{p(!0)}catch{}throw f}return()=>p(!0)}const D=new WeakMap;class T{constructor(t){this.art=t,this.closed=!1,this.disposers=new Set,this.cancelled=new Promise(t=>this.cancel=t)}get active(){return!this.closed&&!this.art.isDestroy}own(t){this.closed?t():this.disposers.add(t)}write(t,e,i,n=i=>t[e]=i){const s=t;if(!this.active)return;const a=()=>"function"===typeof s.getPropertyPriority?s.getPropertyPriority(e):void 0;let r=D.get(s);r||(r=new Map,D.set(s,r));let o=r.get(e);o||(o={original:s[e],present:e in s||void 0!==s[e],priority:a(),owners:new Map,apply:n},r.set(e,o)),o.owners.has(this)||this.own(()=>{const t=[...o.owners.keys()],i=t[t.length-1]===this;if(o.owners.delete(this),i&&s[e]===o.last&&a()===o.lastPriority){const t=[...o.owners.values()];t.length?(o.apply(t[t.length-1]),o.last=s[e],o.lastPriority=a()):void 0!==o.priority?s.setProperty(e,o.original,o.priority):o.present?o.apply(o.original):delete s[e]}o.owners.size||(r.delete(e),r.size||D.delete(s))}),o.owners.delete(this),o.owners.set(this,i),o.apply(i),o.last=s[e],o.lastPriority=a()}on(t,e){if(!this.active)return;const i=this;function n(...t){if(i.active)return e.apply(this,t)}const s=()=>this.art.off(t,n);this.own(s);try{this.art.on(t,n),this.active||s()}catch(a){throw this.release(s),a}}proxy(t,e,i){if(!this.active)return;const n=this;function s(...t){if(n.active)return i.apply(this,t)}let a;const r=()=>{if("function"===typeof a){const t=this.art.events;"function"===typeof t?.remove&&t.destroyEvents?.has(a)?t.remove(a):a()}else t.removeEventListener?.(e,s)};this.own(r);try{a=this.art.proxy(t,e,s),this.active||r()}catch(o){throw this.release(r),o}}wait(t){return Promise.race([t,this.cancelled])}release(t){try{t()}catch(e){console.warn("Failed to dispose danmuku setting resource:",e)}}close(){if(!this.closed){this.closed=!0,this.cancel();for(const t of this.disposers)this.release(t);this.disposers.clear()}}}function P({min:t,max:e,container:i,findIndex:n,onChange:s,steps:a=[]}){const{lifecycle:r}=this;if(!r.active)return{reset(){}};const{query:o,clamp:l,setStyle:d}=this.utils;d(i,"touch-action","none"),i.innerHTML=`\n

\n
\n ${a.map(()=>'
').join("")}\n
\n
\n
\n
\n
\n ${a.map(t=>t.hide?"":`
${t.name}
`).join("")}\n
\n `;const h=o(".apd-slider-dot",i),c=o(".apd-slider-progress",i);let p=!1;function u(i){if(!r.active)return;if(void 0===i&&(i=n()),ie)return;const o=(i-t)/(e-t);h.style.left=100*o+"%",0===a.length&&(c.style.width=h.style.left),s(i)}function m(n){const{top:s,height:a,left:r,width:o}=i.getBoundingClientRect();if(this.art.isRotate){const i=l(n.clientY-s,0,a);u(Math.round(i/a*(e-t)+t))}else{const i=l(n.clientX-r,0,o);u(Math.round(i/o*(e-t)+t))}}return r.own(()=>p=!1),r.proxy(i,"click",t=>{m.call(this,t)}),r.proxy(i,"pointerdown",t=>{p=0===t.button}),r.on("document:pointermove",t=>{p&&m.call(this,t)}),r.on("document:pointerup",t=>{p&&(p=!1,m.call(this,t))}),{reset:u}}const L='',A='',H='',O='',N='',V='',q='',I='',j='',B='',R='',Z='';function W(){const{option:t}=this;return`\n
\n ${R}${B}\n
\n
\n ${H}\n
\n
\n
\n \u6309\u7c7b\u578b\u5c4f\u853d\n
\n
\n ${O}${N}\n
\u6eda\u52a8
\n
\n
\n ${V}${q}\n
\u9876\u90e8
\n
\n
\n ${I}${j}\n
\u5e95\u90e8
\n
\n
\n
\n
\n
\n ${A}${L}\n \u9632\u6b62\u5f39\u5e55\u91cd\u53e0\n
\n
\n ${A}${L}\n \u540c\u6b65\u89c6\u9891\u901f\u5ea6\n
\n
\n
\n \u4e0d\u900f\u660e\u5ea6\n
\n
\u672a\u77e5
\n
\n
\n \u663e\u793a\u533a\u57df\n
\n
\u672a\u77e5
\n
\n
\n \u5f39\u5e55\u5b57\u53f7\n
\n
\u672a\u77e5
\n
\n
\n \u5f39\u5e55\u901f\u5ea6\n
\n
\u672a\u77e5
\n
\n
\n
\n
\n
\n
\n ${Z}\n
\n
\n
\n \u6a21\u5f0f\n
\n
\n ${N}\n
\u6eda\u52a8
\n
\n
\n ${q}\n
\u9876\u90e8
\n
\n
\n ${j}\n
\u5e95\u90e8
\n
\n
\n
\n
\n \u989c\u8272\n
\n ${this.COLOR.map(t=>`
`).join("")}\n
\n
\n
\n
\n
\n \n
\u53d1\u9001
\n
\n `}if("undefined"!==typeof document){const t="artplayer-plugin-danmuku",e=Symbol.for("artplayer-plugin-danmuku.pending-style"),i=document;let n=document.getElementById(t)||i[e];if(!n)if(n=document.createElement("style"),n.id=t,"loading"===document.readyState){i[e]=n;const s=()=>{document.removeEventListener("DOMContentLoaded",s),i[e]===n&&delete i[e];const a=document.getElementById(t);a?a.textContent=n.textContent:(document.head||document.documentElement).appendChild(n)};document.addEventListener("DOMContentLoaded",s,{once:!0})}else(document.head||document.documentElement).appendChild(n);n.textContent='.artplayer-plugin-danmuku{display:flex;position:relative;z-index:99;align-items:center;justify-content:center;font-size:12px;height:32px;width:100%;color:#fff;font-weight:300;flex-shrink:0;gap:10px}.artplayer-plugin-danmuku .apd-icon{cursor:pointer;opacity:.75;transition:all .2s ease;fill:#fff}.artplayer-plugin-danmuku .apd-icon:hover{opacity:1}.artplayer-plugin-danmuku .apd-config{display:flex;position:relative}.artplayer-plugin-danmuku .apd-config .apd-config-panel{position:absolute;bottom:24px;left:0;width:320px;padding:10px;opacity:0;pointer-events:none}.artplayer-plugin-danmuku .apd-config .apd-config-panel .apd-config-panel-inner{width:100%;border-radius:3px;background-color:#000000d9;padding:10px}.artplayer-plugin-danmuku .apd-config:hover .apd-config-panel{opacity:100;pointer-events:all}.artplayer-plugin-danmuku .apd-config-mode,.artplayer-plugin-danmuku .apd-config-slider,.artplayer-plugin-danmuku .apd-config-other,.artplayer-plugin-danmuku .apd-style-mode{margin-bottom:15px}.artplayer-plugin-danmuku .apd-modes{display:flex;align-items:center;margin-top:5px;gap:20px}.artplayer-plugin-danmuku .apd-modes .apd-mode{cursor:pointer;text-align:center}.artplayer-plugin-danmuku .apd-modes .apd-mode:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-config-slider{display:flex;align-items:center;gap:12px}.artplayer-plugin-danmuku .apd-config-slider .apd-value{width:32px;text-align:right}.artplayer-plugin-danmuku .apd-slider{position:relative;flex:1;display:flex;height:20px;align-items:center;justify-content:center;cursor:pointer}.artplayer-plugin-danmuku .apd-slider .apd-slider-line{position:relative;height:2px;width:100%;overflow:hidden;border-radius:3px;background-color:#ffffff40}.artplayer-plugin-danmuku .apd-slider .apd-slider-points{position:absolute;inset:0;display:flex;align-items:center;justify-content:space-between}.artplayer-plugin-danmuku .apd-slider .apd-slider-points .apd-slider-point{width:2px;height:2px;border-radius:50%;background-color:#ffffff80}.artplayer-plugin-danmuku .apd-slider .apd-slider-progress{width:0%;height:100%;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-slider .apd-slider-dot{position:absolute;transform:translate(-6px);left:0%;width:12px;height:12px;border-radius:50%;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps{display:flex;align-items:center;justify-content:space-between;position:absolute;bottom:-12px;width:calc(100% + 32px);color:#777}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps .apd-slider-step{flex-shrink:0;width:36px;text-align:center;scale:.95}.artplayer-plugin-danmuku .apd-config-other{display:flex;align-items:center;gap:20px}.artplayer-plugin-danmuku .apd-config-other .apd-check-off,.artplayer-plugin-danmuku .apd-config-other .apd-check-on{width:16px;height:16px}.artplayer-plugin-danmuku .apd-config-other .apd-other{display:flex;align-items:center;cursor:pointer;gap:2px}.artplayer-plugin-danmuku .apd-config-other .apd-other:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-emitter{display:flex;flex:1;align-items:center;height:100%;background-color:#ffffff40;border-radius:5px}.artplayer-plugin-danmuku .apd-style{position:relative;display:flex;align-items:center;justify-content:center}.artplayer-plugin-danmuku .apd-style .apd-style-panel{position:absolute;bottom:24px;left:0;width:200px;padding:10px;opacity:0;pointer-events:none}.artplayer-plugin-danmuku .apd-style .apd-style-panel .apd-style-panel-inner{width:100%;border-radius:3px;background-color:#000000d9;padding:10px}.artplayer-plugin-danmuku .apd-style:hover .apd-style-panel{opacity:100;pointer-events:all}.artplayer-plugin-danmuku .apd-colors{display:flex;flex-wrap:wrap;margin-top:5px;gap:8px}.artplayer-plugin-danmuku .apd-colors .apd-color{width:16px;height:16px;border-radius:2px;cursor:pointer}.artplayer-plugin-danmuku .apd-colors .apd-color.apd-active{border:1px solid black;box-shadow:0 0 0 1px #fff}.artplayer-plugin-danmuku .apd-input{outline:none;height:100%;flex:1;min-width:0;width:auto;border:none;line-height:1;color:#fff;background-color:transparent}.artplayer-plugin-danmuku .apd-input::placeholder{color:#ffffff80}.artplayer-plugin-danmuku .apd-send{display:flex;align-items:center;justify-content:center;height:100%;width:60px;flex-shrink:0;cursor:pointer;text-shadow:none;border-top-right-radius:5px;border-bottom-right-radius:5px;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-send.apd-lock{cursor:not-allowed;color:#666;background-color:#e7e7e7}.art-controls-center .apd-emitter{width:260px;flex:none}.art-fullscreen .artplayer-plugin-danmuku,.art-fullscreen-web .artplayer-plugin-danmuku{height:38px;gap:16px}.art-fullscreen .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen-web .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-on,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-on{width:28px;height:28px}.art-fullscreen .artplayer-plugin-danmuku .apd-emitter,.art-fullscreen-web .artplayer-plugin-danmuku .apd-emitter{width:400px;flex:none}.art-video-player>.artplayer-plugin-danmuku{position:absolute;left:0;right:0;bottom:-40px;padding:0 10px}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[data-danmuku-emitter=false] .apd-emitter{display:none!important}[data-danmuku-emitter=false] .art-controls-center .artplayer-plugin-danmuku{justify-content:flex-end;gap:18px}[data-danmuku-emitter=false].art-fullscreen .art-controls-center .artplayer-plugin-danmuku,[data-danmuku-emitter=false].art-fullscreen-web .art-controls-center .artplayer-plugin-danmuku{gap:24px}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-icon{fill:#333}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-emitter{background-color:#f1f2f3}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input{color:#000}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:#0000004d}[data-danmuku-visible=false] .apd-toggle-off{display:block}[data-danmuku-visible=false] .apd-toggle-on,[data-danmuku-visible=true] .apd-toggle-off{display:none}[data-danmuku-visible=true] .apd-toggle-on{display:block}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-on{display:none}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-off,[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-on{display:block}[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-off,[data-danmuku-sync-video=false] .apd-sync-video .apd-check-on{display:none}[data-danmuku-sync-video=false] .apd-sync-video .apd-check-off,[data-danmuku-sync-video=true] .apd-sync-video .apd-check-on{display:block}[data-danmuku-sync-video=true] .apd-sync-video .apd-check-off{display:none}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-off{display:block}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-on{display:none}[data-danmuku-mode0=false] .art-danmuku [data-mode="0"]{opacity:0!important}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-off{display:none}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-on{display:block}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"]{color:#00a1d6}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"] path{fill:#00a1d6}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-off{display:block}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-on{display:none}[data-danmuku-mode1=false] .art-danmuku [data-mode="1"]{opacity:0!important}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-off{display:none}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-on{display:block}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"]{color:#00a1d6}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"] path{fill:#00a1d6}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-off{display:block}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-on{display:none}[data-danmuku-mode2=false] .art-danmuku [data-mode="2"]{opacity:0!important}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-off{display:none}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-on{display:block}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"]{color:#00a1d6}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"] path{fill:#00a1d6}'}class _{constructor(t,e){this.art=t,this.danmuku=e,this.utils=t.constructor.utils;const{setStyle:i}=this.utils,{$controlsCenter:n}=t.template;this.template={$controlsCenter:n,$mount:n,$danmuku:null,$toggle:null,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel:null,$styleModes:null,$colors:null,$opacitySlider:null,$opacityValue:null,$marginSlider:null,$marginValue:null,$fontSizeSlider:null,$fontSizeValue:null,$speedSlider:null,$speedValue:null,$input:null,$send:null},this.slider={opacity:null,margin:null,fontSize:null,speed:null},this.emitting=!1,this.isLock=!1,this.timer=null,this.lifecycle=new T(t),this.destroy=this.destroy.bind(this),this.lifecycle.own(()=>t.off("destroy",this.destroy));try{if(t.on("destroy",this.destroy),!this.lifecycle.active)return;if(this.lifecycle.write(n.style,"display","flex",t=>i(n,"display",t)),this.createTemplate(),!this.lifecycle.active)return;if(this.createSliders(),!this.lifecycle.active)return;if(this.createEvents(),this.mount(this.option.mount),!this.lifecycle.active)return;this.lifecycle.on("resize",()=>this.resize()),this.lifecycle.on("fullscreen",t=>this.onFullscreen(t)),this.lifecycle.on("fullscreenWeb",t=>this.onFullscreen(t)),this.lifecycle.proxy(this.template.$config,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$config,$panel:this.template.$configPanel})}),this.lifecycle.proxy(this.template.$style,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$style,$panel:this.template.$stylePanel})})}catch(s){try{this.destroy()}catch(a){console.warn("Failed to roll back danmuku setting:",a)}throw s}}static get icons(){return{$on:R,$off:B,$config:H,$style:Z,$mode_0_off:O,$mode_0_on:N,$mode_1_off:V,$mode_1_on:q,$mode_2_off:I,$mode_2_on:j,$check_on:A,$check_off:L}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){return W.call(this)}get OPACITY(){return{min:0,max:100,steps:[],...this.option.OPACITY}}get FONT_SIZE(){return{min:12,max:120,steps:[],...this.option.FONT_SIZE}}get MARGIN(){return{min:0,max:3,steps:[{name:"1/4",value:[10,"75%"]},{name:"\u534a\u5c4f",value:[10,"50%"]},{name:"3/4",value:[10,"25%"]},{name:"\u6ee1\u5c4f",value:[10,10]}],...this.option.MARGIN}}get SPEED(){return{min:0,max:4,steps:[{name:"\u6781\u6162",value:10},{name:"\u8f83\u6162",value:7.5,hide:!0},{name:"\u9002\u4e2d",value:5},{name:"\u8f83\u5feb",value:2.5,hide:!0},{name:"\u6781\u5feb",value:1}],...this.option.SPEED}}get COLOR(){return this.option.COLOR.length?this.option.COLOR:["#FE0302","#FF7204","#FFAA02","#FFD302","#FFFF00","#A0EE00","#00CD00","#019899","#4266BE","#89D5FF","#CC0273","#222222","#9B9B9B","#FFFFFF"]}query(t){const{query:e}=this.utils,{$danmuku:i}=this.template;return e(t,i)}append(t,e){if(!this.lifecycle.active)return;const{append:i}=this.utils;[...t.children].includes(e)||i(t,e)}setData(t,e){if(!this.lifecycle.active)return;const{$player:i}=this.art.template,{$mount:n}=this.template;this.lifecycle.write(i.dataset,t,e),this.outside&&this.lifecycle.write(n.dataset,t,e)}createTemplate(){const{createElement:t,tooltip:e}=this.utils,i=t("div");this.template.$danmuku=i,i.className="artplayer-plugin-danmuku",i.innerHTML=this.TEMPLATE,this.template.$toggle=this.query(".apd-toggle"),this.template.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),this.template.$styleModes=this.query(".apd-style-mode .apd-modes"),this.template.$colors=this.query(".apd-colors"),this.template.$antiOverlap=this.query(".apd-anti-overlap"),this.template.$syncVideo=this.query(".apd-sync-video"),this.template.$opacitySlider=this.query(".apd-config-opacity .apd-slider"),this.template.$opacityValue=this.query(".apd-config-opacity .apd-value"),this.template.$marginSlider=this.query(".apd-config-margin .apd-slider"),this.template.$marginValue=this.query(".apd-config-margin .apd-value"),this.template.$fontSizeSlider=this.query(".apd-config-fontSize .apd-slider"),this.template.$fontSizeValue=this.query(".apd-config-fontSize .apd-value"),this.template.$speedSlider=this.query(".apd-config-speed .apd-slider"),this.template.$speedValue=this.query(".apd-config-speed .apd-value"),this.template.$input=this.query(".apd-input"),this.template.$send=this.query(".apd-send");const{$toggle:n}=this.template;this.lifecycle.on("artplayerPluginDanmuku:show",()=>{e(n,"\u5173\u95ed\u5f39\u5e55")}),this.lifecycle.on("artplayerPluginDanmuku:hide",()=>{e(n,"\u6253\u5f00\u5f39\u5e55")})}createEvents(){const{$toggle:t,$configModes:e,$styleModes:i,$colors:n,$antiOverlap:s,$syncVideo:a,$send:r,$input:o}=this.template;this.lifecycle.proxy(t,"click",()=>{this.danmuku.config({visible:!this.option.visible}),this.reset()}),this.lifecycle.proxy(e,"click",t=>{const e=t.target.closest(".apd-mode");if(!e)return;const i=Number(e.dataset.mode);this.option.modes.includes(i)?this.danmuku.config({modes:this.option.modes.filter(t=>t!==i)}):this.danmuku.config({modes:[...this.option.modes,i]}),this.reset()}),this.lifecycle.proxy(s,"click",()=>{this.danmuku.config({antiOverlap:!this.option.antiOverlap}),this.reset()}),this.lifecycle.proxy(a,"click",()=>{this.danmuku.config({synchronousPlayback:!this.option.synchronousPlayback}),this.reset()}),this.lifecycle.proxy(i,"click",t=>{const e=t.target.closest(".apd-mode");if(!e)return;const i=Number(e.dataset.mode);this.danmuku.config({mode:i}),this.reset()}),this.lifecycle.proxy(n,"click",t=>{const e=t.target.closest(".apd-color");e&&(this.danmuku.config({color:e.dataset.color}),this.reset())}),this.lifecycle.proxy(r,"click",()=>this.emit()),this.lifecycle.proxy(o,"keypress",t=>{"Enter"===t.key&&(t.preventDefault(),this.emit())})}createSliders(){this.slider.opacity=this.createSlider({...this.OPACITY,container:this.template.$opacitySlider,findIndex:()=>Math.round(100*this.option.opacity),onChange:t=>{const{$opacityValue:e}=this.template;e.textContent=`${t}%`,this.danmuku.config({opacity:t/100})}}),this.slider.margin=this.createSlider({...this.MARGIN,container:this.template.$marginSlider,findIndex:()=>this.MARGIN.steps.findIndex(t=>t.value[0]===this.option.margin[0]&&t.value[1]===this.option.margin[1]),onChange:t=>{const e=this.MARGIN.steps[t];if(!e)return;const{$marginValue:i}=this.template;i.textContent=e.name,this.danmuku.config({margin:e.value})}}),this.slider.fontSize=this.createSlider({...this.FONT_SIZE,container:this.template.$fontSizeSlider,findIndex:()=>this.danmuku.fontSize,onChange:t=>{const{$fontSizeValue:e}=this.template;e.textContent=`${t}px`,t!==this.danmuku.fontSize&&this.danmuku.config({fontSize:t})}}),this.slider.speed=this.createSlider({...this.SPEED,container:this.template.$speedSlider,findIndex:()=>this.SPEED.steps.findIndex(t=>t.value===this.option.speed),onChange:t=>{const e=this.SPEED.steps[t];if(!e)return;const{$speedValue:i}=this.template;i.textContent=e.name,this.danmuku.config({speed:e.value})}})}createSlider(t){return P.call(this,t)}onFullscreen(t){if(!this.lifecycle.active)return;const{$danmuku:e,$controlsCenter:i,$mount:n}=this.template;this.outside?t?this.append(i,e):this.append(n,e):this.append(i,e)}onMouseEnter({$control:t,$panel:e}){if(!this.lifecycle.active)return;const{$player:i}=this.art.template,n=t.getBoundingClientRect(),s=e.getBoundingClientRect(),a=i.getBoundingClientRect(),r=s.width/2-n.width/2,o=a.left-(n.left-r),l=n.right+r-a.right;e.style.left=o>0?`${-r+o}px`:l>0?-r-l+"px":-r+"px"}emit(){return async function(t){const{lifecycle:e,template:{$input:i}}=t;if(!e.active)return;const n=i.value.trim();if(!n.length||t.isLock||t.emitting)return;const s={text:n,mode:t.option.mode,color:t.option.color,time:t.art.currentTime},a=t=>{e.active&&console.error("Error emitting danmuku:",t)};try{t.emitting=!0;const n=await e.wait(t.option.beforeEmit(s));if(!e.active)return;if(t.emitting=!1,!0!==n)return;if(s.border=!0,delete s.time,Promise.resolve(t.danmuku.emit(s)).catch(a),!e.active)return;i.value="",t.lock()}catch(r){a(r),e.active&&(t.emitting=!1)}}(this)}lock(){!function(t){if(!t.lifecycle.active)return;const{addClass:e}=t.utils,{$send:i}=t.template;clearTimeout(t.timer),t.isLock=!0;let n=t.option.lockTime;i.textContent=n,e(i,"apd-lock");const s=()=>{t.timer=setTimeout(()=>{t.lifecycle.active&&(0===n?t.unlock():(n-=1,i.textContent=n,s()))},1e3)};s()}(this)}unlock(){!function(t){if(clearTimeout(t.timer),t.timer=null,t.isLock=!1,!t.lifecycle.active)return;const{removeClass:e}=t.utils,{$send:i}=t.template;i.textContent="\u53d1\u9001",e(i,"apd-lock")}(this)}resize(){if(!this.lifecycle.active)return;if(this.outside)return;if(this.art.fullscreen)return;if(this.art.fullscreenWeb)return;const{$player:t,$controlsCenter:e}=this.art.template,{$danmuku:i}=this.template;this.art.widtht.dataset.color===this.option.color.toUpperCase());a&&t(a,"apd-active"),e(i,this.option.visible?"\u5173\u95ed\u5f39\u5e55":"\u6253\u5f00\u5f39\u5e55"),this.resize()}mount(t){if(!this.lifecycle.active)return;const{errorHandle:e}=this.utils,i="string"===typeof t?document.querySelector(t):t;e(i,`Can not find the mount point: ${t}`),this.append(i,this.template.$danmuku),this.template.$mount=i,this.reset()}destroy(){if(this.lifecycle.closed)return;this.lifecycle.close(),clearTimeout(this.timer),this.timer=null,this.emitting=!1,this.isLock=!1;const t=this.template.$danmuku;t?.parentElement&&t.parentElement.removeChild(t)}}function U(t){return e=>{const i=new $(e,t);let n;try{n=e.isDestroy?void 0:new _(e,i),!e.isDestroy&&i.option.heatmap&&C(e,i,i.option.heatmap)}catch(s){try{n?.destroy()}catch{}try{i.destroy()}catch{}throw s}return{name:"artplayerPluginDanmuku",emit:i.emit.bind(i),load:i.load.bind(i),config:i.config.bind(i),hide:i.hide.bind(i),show:i.show.bind(i),reset:i.reset.bind(i),mount:n?n.mount.bind(n):()=>{},get option(){return i.option},get isHide(){return i.isHide},get isStop(){return i.isStop}}}}return U.icons=_.icons,U}); +!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.artplayerPluginDanmuku=e(),define(function(){return t.artplayerPluginDanmuku})):(t="undefined"!==typeof globalThis?globalThis:t||self).artplayerPluginDanmuku=e()}(this,function(){"use strict";function t(t){return t instanceof Promise||"[object Promise]"===Object.prototype.toString.call(t)}function e(t){switch(t){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function i(t){if("string"!==typeof t)return[];const i=t.matchAll(/]*?p="(?

[^"]+)"[^>]*>(?.*?)<\/d>/gs);return Array.from(i).map(t=>{const i=t.groups.p.split(",");if(i.length>=8){return{text:t.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(i[0]),mode:e(Number(i[1])),fontSize:Number(i[2]),color:`#${Number(i[3]).toString(16)}`,timestamp:Number(i[4]),pool:Number(i[5]),userID:i[6],rowID:Number(i[7])}}return null}).filter(Boolean)}function n({data:t}){const{xml:e,id:n}=t,s=i(e);globalThis.postMessage({danmus:s,id:n})}let s=0;function a(t,{signal:a,onCancel:r}={}){return new Promise((o,l)=>{let d,h,c,p=!1;const u=++s,m=()=>g(void 0,function(t){if(void 0!==t?.reason)return t.reason;const e=new Error("Bilibili Danmu loading cancelled");return e.name="AbortError",e}(a));function f(){let t,e=!1;try{if(d){const t=d;d=void 0,t.onmessage=null,t.onerror=null,t.onmessageerror=null,t.terminate()}}catch(i){t=i,e=!0}if(void 0!==h){const n=h;h=void 0;try{URL.revokeObjectURL(n)}catch(i){e||(t=i),e=!0}}if(e)throw t}function g(t,e){if(p)return;p=!0;let i=arguments.length>1;a?.removeEventListener("abort",m),c?.();try{f()}catch(n){i||(e=n),i=!0}i?l(e):o(t)}function y(t,e){if(!p){console.error("Error parsing Bilibili Danmu:",e);try{g(i(t))}catch(n){g(void 0,n)}}}a?.aborted?m():(a?.addEventListener("abort",m),c=r?.(m),p?c?.():async function(){const s=a?await fetch(t,{signal:a}):await fetch(t);if(p)return;const r=await s.text();if(!p)try{const t=`\n ${e.toString()}\n ${i.toString()}\n onmessage = ${n.toString()}\n `;if(h=URL.createObjectURL(new Blob([t],{type:"application/javascript"})),p)return void f();if(d=new Worker(h),p)return void f();d.onmessage=t=>{if(p||t.data?.id!==u)return;const{danmus:e}=t.data;Array.isArray(e)?g(e):g(void 0,new Error("Invalid Bilibili Danmu worker response"))},d.onerror=t=>{t.preventDefault?.(),y(r,t.error||t)},d.onmessageerror=t=>y(r,t.error||t),d.postMessage({xml:r,id:u})}catch(o){y(r,o)}}().catch(t=>g(void 0,t)))})}const r=new WeakMap,o=Symbol("cancelled danmuku input");function l(t){return r.has(t)||r.set(t,{closed:!1,tasks:new Set,emitting:[]}),r.get(t)}function d(t){const e=l(t),i=e.emitting[e.emitting.length-1];return!e.closed&&!t.art.isDestroy&&(!i||i.active())}function h(t){const e=l(t);e.closed=!0;for(const i of[...e.tasks])i.cancel()}function c(t,e,i){const n=t.states[e]||[];for(let s=0;s{const s=n.$ref.offsetTop,a=this.owner.getLeft(n.$ref)-i,r=n.$ref.clientHeight,o=n.$ref.clientWidth,l=a+o,d=e-l,h=l/n.$restTime,c={};c.top=s,c.left=a,c.height=r,c.width=o,c.right=d,c.speed=h,c.distance=l,c.time=n.$restTime,c.mode=n.mode,t.push(c)}),t}left(t){const e=t.getBoundingClientRect();return this.owner.isRotate?e.top:e.left}makeWait(t){this.owner.setState(t,"wait"),t.$ref&&(t.$ref.style.cssText=this.owner.constructor.cssText,t.$ref.style.visibility="hidden",t.$ref.style.marginLeft="0px",t.$ref.style.transform="translateX(0px)",t.$ref.style.transition="transform 0s linear 0s",this.owner.$refs.push(t.$ref),t.$ref=null)}resize(){const{clientWidth:t}=this.owner.$player;this.owner.filter("stop",e=>{if(0===e.mode)e.$ref.style.left=`${t}px`}),this.owner.filter("emit",e=>{switch(e.$lastStartTime=Date.now(),e.mode){case 0:{const i=t+e.$ref.clientWidth;e.$ref.style.left=`${t}px`,e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`;break}}})}continue(){const{clientWidth:t}=this.owner.$player;return this.owner.filter("stop",e=>{switch(this.owner.setState(e,"emit"),e.$lastStartTime=Date.now(),e.mode){case 0:{const i=t+e.$ref.clientWidth;e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`;break}}}),this}suspend(){const{clientWidth:t}=this.owner.$player;return this.owner.filter("emit",e=>{switch(this.owner.setState(e,"stop"),e.mode){case 0:{const i=t-(this.owner.getLeft(e.$ref)-this.owner.getLeft(this.owner.$player));e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition="transform 0s linear 0s";break}}}),this}prepare(t,e){const i=this.owner,n=i.$ref;return e.danmu=t,e.ref=n,t.$ref=n,n.textContent=t.text,i.$danmuku.appendChild(n),n.style.opacity=i.option.opacity,n.style.fontSize=`${i.fontSize}px`,n.style.color=t.color,n.style.border=t.border?`1px solid ${t.color}`:null,n.style.backgroundColor=t.border?"rgb(0 0 0 / 50%)":null,i.utils.setStyles(n,t.style),n}place(t,e,i,n,s){switch(e.style.top=`${i}px`,e.style.visibility="visible",e.dataset.mode=t.mode,e.dataset.id=t.id||"",t.mode){case 0:e.style.left=`${s}px`,e.style.marginLeft="0px",e.style.transform=`translateX(${-n}px)`,e.style.transition=`transform ${t.$restTime}s linear 0s`;break;case 1:case 2:e.style.left="50%",e.style.marginLeft=`-${e.clientWidth/2}px`}}release(t){const{danmu:e,ref:i}=t;i&&e.$ref===i&&(i.style.cssText=this.owner.constructor.cssText,i.style.visibility="hidden",this.owner.$refs.push(i),e.$ref=null),t.ref=null}clear(){this.destroy(),this.owner.$refs=[],this.owner.$danmuku.textContent=""}destroy(){for(const t of this.nodes)t.parentElement&&t.parentElement.removeChild(t);for(const t of this.owner.queue)t.$ref=null;this.owner.$refs.length=0,this.nodes.clear()}}function u({target:t,visibles:e,clientWidth:i,clientHeight:n,marginBottom:s,marginTop:a,antiOverlap:r}){const o=n-s,l=e.filter(e=>e.mode===t.mode&&e.top<=o).sort((t,e)=>t.top-e.top);if(0===l.length)return 2===t.mode?o-t.height:a;if(l.unshift({type:"top",top:0,left:0,right:0,height:a,width:i,speed:0,distance:i}),l.push({type:"bottom",top:o,left:0,right:0,height:s,width:i,speed:0,distance:i}),2===t.mode)for(let h=l.length-2;h>=0;h-=1){const e=l[h],i=l[h+1],n=e.top+e.height;if(i.top-n>=t.height)return i.top-t.height}else for(let h=1;h=t.height)return n}const d=[];for(let h=1;h{const i=Math.min(...e.map(t=>t.right)),n=Math.min(...t.map(t=>t.right));return i*e.length-n*t.length});break;case 1:case 2:d.sort((t,e)=>{const i=Math.max(...e.map(t=>t.width));return Math.max(...t.map(t=>t.width))*t.length-i*e.length})}return d[0][0].top}switch(t.mode){case 0:{const e=d.find(e=>e.every(e=>{if(ie.time}));return e&&e[0]?e[0].top:void 0}case 1:case 2:return}}class m{constructor(){this.rows=new Set,this.waiting=new Set,this.visibility=()=>this.clear()}begin(t){void 0===this.time&&this.capture(t,[],t.art.currentTime)}capture(t,e,i){const n=t.$player.ownerDocument;if(n!==this.document&&(this.document?.removeEventListener("visibilitychange",this.visibility),this.document=n,n?.addEventListener("visibilitychange",this.visibility),this.clear()),!Number.isFinite(i)||"hidden"===n?.visibilityState||t.art.video?.seeking)return this.clear(),e;const s=this.time,a=this.rows,r=this.waiting;if(this.time=i,this.rows=new Set(e),this.waiting=new Set(t.states.wait),void 0===s||i<=s)return e;const o=t.states.wait.filter(t=>r.has(t)&&!a.has(t)&&t.time>=s-.1&&t.time"ready"===t.$state),...o,...e.filter(t=>"ready"!==t.$state)]}clear(){this.time=void 0,this.rows.clear(),this.waiting.clear()}destroy(){this.document?.removeEventListener("visibilitychange",this.visibility),this.document=void 0,this.clear()}}class f{constructor(){this.pending=new Set,this.reserved=new Set}capture(t,e){for(const i of t)this.reserved.has(i)||e.has(i)||this.pending.add(i)}take(){const t=[],e=[];for(const n of this.pending)"ready"===n.$state?t.push(n):"wait"===n.$state&&e.push(n);this.pending.clear();const i=[...t,...e];return this.reserved=new Set(i),i}complete(){this.reserved.clear()}clear(){this.pending.clear(),this.reserved.clear()}}const g=Symbol("cancelled danmuku frame");class y{constructor(t){this.owner=t,this.generation=0,this.starts=0,this.frame=null,this.operation=null,this.closed=!1,this.running=!1,this.fault=!1,this.failedItems=new Set,this.buffer=new f,this.sampling=new m}active(t){const e=this.owner;return!this.closed&&!this.fault&&!e.art.isDestroy&&!e.isStop&&!e.isHide&&t.generation===this.generation}release(t){this.owner.renderer.release(t)}invalidate(){if(this.generation++,null!==this.frame&&window.cancelAnimationFrame(this.frame),this.frame=null,this.owner.timer=null,this.operation){const t=this.operation;this.operation=null,t.cancel(),this.release(t)}this.owner.workerClient?.cancel(),this.failedItems.clear(),this.buffer.clear(),this.sampling.clear()}report(t){try{this.owner.art.emit("artplayerPluginDanmuku:error",t)}catch(e){console.warn("Failed to report danmuku scheduling error:",e)}}fail(t){this.closed||this.fault||(this.fault=!0,this.invalidate(),this.report(t))}recover(){if(!this.closed&&!this.owner.art.isDestroy&&(this.failedItems.clear(),this.fault))try{this.owner.workerClient?.dispose(),this.owner.createWorker(),this.fault=!1}catch(t){this.report(t)}}schedule(){const t=this.owner;if(!(!this.running||this.closed||this.fault||t.art.isDestroy||t.isStop)){try{const e=t.art.video;(t.art.playing||!1===e?.paused&&!e.ended&&e.readyState>2)&&!t.isHide&&this.sampling.begin(t)}catch(e){return void this.fail(e)}null===this.frame&&(this.frame=window.requestAnimationFrame(()=>{if(this.frame=null,t.timer=null,this.closed||this.fault||t.isStop||t.art.isDestroy)return;const i=this.generation;try{if(t.art.playing&&!t.isHide){t.filter("emit",e=>{const i=Date.now();e.$restTime-=(i-e.$lastStartTime)/1e3,e.$lastStartTime=i,e.$restTime<=0&&t.makeWait(e)});const e=t.art.currentTime,n=t.readys;if(i!==this.generation)return;this.buffer.capture(this.sampling.capture(t,n,e),this.failedItems)}}catch(e){return void(i===this.generation&&this.fail(e))}if(this.schedule(),this.operation||!t.art.playing||t.isHide)return;const n=this.buffer.take();if(!n.length)return;let s;const a=new Promise(t=>s=()=>t(g)),r={generation:this.generation,cancel:s,wait:t=>Promise.race([t,a]),ref:null};return this.operation=r,this.run(r,n).catch(t=>{this.active(r)&&this.fail(t)}).finally(()=>{this.release(r),this.operation===r&&(this.operation=null,this.buffer.complete())})}),t.timer=this.frame)}}async run(t,e){const i=this.owner;if(i.art.playing&&this.active(t))for(const s of e){if(!this.active(t))return;if(this.failedItems.has(s))continue;let e;try{e=await t.wait(i.option.beforeVisible(s))}catch(n){if(!this.active(t))return;this.failedItems.add(s),this.report(n);continue}if(!this.active(t))return;if(!e)continue;const{clientWidth:a,clientHeight:r}=i.$player,o=i.renderer.prepare(s,t);if(!this.active(t))return;s.$lastStartTime=Date.now(),s.$restTime=i.speed;const l=a+o.clientWidth,d={type:"getDanmuTop",target:{mode:s.mode,height:o.clientHeight,speed:l/s.$restTime},visibles:i.visibles,antiOverlap:i.option.antiOverlap,clientWidth:a,clientHeight:r,marginBottom:i.marginBottom,marginTop:i.marginTop},h=d.antiOverlap?await t.wait(i.postMessage(d)):{result:u(d)},c="symbol"===typeof h?void 0:h.result;if(!this.active(t)||s.$ref!==o)return;void 0!==c?(s.$lastStartTime=Date.now(),i.setState(s,"emit"),i.renderer.place(s,o,c,l,a),t.ref=null,i.art.emit("artplayerPluginDanmuku:visible",s)):(i.setState(s,"ready"),this.release(t))}}destroy(){this.closed=!0,this.invalidate(),this.sampling.destroy()}}let v=0;class w{constructor(t,e){this.pending=new Map,this.closed=!1,this.failed=!1,this.onFailure=e,this.worker=t();try{this.worker.onmessage=t=>{const e=this.pending.get(t.data?.id);e&&(this.pending.delete(t.data.id),e.resolve(t.data))},this.worker.onerror=t=>{t.preventDefault?.(),this.fail(t.error||t)},this.worker.onmessageerror=t=>this.fail(t.error||t)}catch(i){try{this.dispose()}catch{}throw i}}request(t){t.id=++v;const{id:e}=t;return this.closed||this.failed?Promise.resolve({id:e,result:void 0}):new Promise((i,n)=>{this.pending.set(e,{resolve:i,reject:n});try{this.worker.postMessage(t)}catch(s){this.fail(s)}})}fail(t){if(!this.closed&&!this.failed){this.failed=!0;for(const e of this.pending.values())e.reject(t);this.pending.clear();try{this.dispose()}catch{}this.onFailure(t)}}cancel(){for(const[t,e]of this.pending)e.resolve({id:t,result:void 0});this.pending.clear()}dispose(){if(this.closed)return;this.closed=!0,this.cancel();let t,e=!1;const i=i=>{try{i()}catch(n){e||(t=n),e=!0}};for(const n of["onmessage","onerror","onmessageerror"])i(()=>this.worker[n]=null);if(i(()=>this.worker.terminate()),e)throw t}}const k='/*!\n * artplayer-plugin-danmuku.js v6.0.0\n * Github: https://github.com/zhw2590582/ArtPlayer\n * (c) 2017-2026 Harvey Zhao\n * Released under the MIT License.\n */\nfunction t({target:t,visibles:e,clientWidth:i,clientHeight:h,marginBottom:n,marginTop:o,antiOverlap:s}){const r=h-n,p=e.filter(e=>e.mode===t.mode&&e.top<=r).sort((t,e)=>t.top-e.top);if(0===p.length)return 2===t.mode?r-t.height:o;if(p.unshift({type:"top",top:0,left:0,right:0,height:o,width:i,speed:0,distance:i}),p.push({type:"bottom",top:r,left:0,right:0,height:n,width:i,speed:0,distance:i}),2===t.mode)for(let g=p.length-2;g>=0;g-=1){const e=p[g],i=p[g+1],h=e.top+e.height;if(i.top-h>=t.height)return i.top-t.height}else for(let g=1;g=t.height)return h}const a=[];for(let g=1;g{const i=Math.min(...e.map(t=>t.right)),h=Math.min(...t.map(t=>t.right));return i*e.length-h*t.length});break;case 1:case 2:a.sort((t,e)=>{const i=Math.max(...e.map(t=>t.width));return Math.max(...t.map(t=>t.width))*t.length-i*e.length})}return a[0][0].top}switch(t.mode){case 0:{const e=a.find(e=>e.every(e=>{if(ie.time}));return e&&e[0]?e[0].top:void 0}case 1:case 2:return}}onmessage=e=>{const{data:i}=e;if(!i.id||!i.type)return;const h=(0,{getDanmuTop:t}[i.type])(i);globalThis.postMessage({result:h,id:i.id})};\n',x="undefined"!==typeof self&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",k],{type:"text/javascript;charset=utf-8"});function b(t){let e;try{if(e=x&&(self.URL||self.webkitURL).createObjectURL(x),!e)throw"";const i=new Worker(e,{type:"module",name:t?.name});return i.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(e)}),i}catch(i){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(k),{type:"module",name:t?.name})}}class ${constructor(t,e){const{constructor:i,template:n}=t;this.utils=i.utils,this.validator=i.validator,this.$danmuku=n.$danmuku,this.$player=n.$player,this.art=t,this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.worker=null,this.workerClient=null,this.renderer=new p(this),this.scheduler=new y(this),this.option=$.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.reset=this.reset.bind(this),this.resize=this.resize.bind(this),this.destroy=this.destroy.bind(this),this.seek=this.seek.bind(this),d(this),t.on("destroy",this.destroy);try{if(this.config(e,!0),!d(this))return;this.createWorker()}catch(s){throw t.off("destroy",this.destroy),h(this),this.scheduler.destroy(),s}t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("resize",this.resize),t.on("video:seeking",this.seek),this.load().catch(t=>console.warn("Failed to load initial danmuku:",t))}static get option(){return{danmuku:[],speed:5,margin:[10,"25%"],opacity:1,color:"#FFFFFF",mode:0,modes:[0,1,2],fontSize:25,antiOverlap:!0,synchronousPlayback:!1,mount:void 0,heatmap:!1,width:512,points:[],filter:()=>!0,beforeEmit:()=>!0,beforeVisible:()=>!0,visible:!0,emitter:!0,maxLength:200,lockTime:5,theme:"dark",OPACITY:{},FONT_SIZE:{},MARGIN:{},SPEED:{},COLOR:[]}}static get scheme(){return{danmuku:"array|function|string|promise",speed:"number",margin:"array",opacity:"number",color:"string",mode:"number",modes:"array",fontSize:"number|string",antiOverlap:"boolean",synchronousPlayback:"boolean",mount:"?htmldivelement|string",heatmap:"object|boolean",width:"number",points:"array",filter:"function",beforeEmit:"function",beforeVisible:"function",visible:"boolean",emitter:"boolean",maxLength:"number",lockTime:"number",theme:"string",OPACITY:"object",FONT_SIZE:"object",MARGIN:"object",SPEED:"object",COLOR:"array"}}static get cssText(){return'\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 '}get isRotate(){return this.art.plugins?.autoOrientation?.state}get marginTop(){const{clamp:t}=this.utils,e=this.option.margin[0],{clientHeight:i}=this.$player;if("number"===typeof e)return t(e,0,i);if("string"===typeof e&&e.endsWith("%")){return t(i*(Number.parseFloat(e)/100),0,i)}return $.option.margin[0]}get marginBottom(){const{clamp:t}=this.utils,e=this.option.margin[1],{clientHeight:i}=this.$player;if("number"===typeof e)return t(e,0,i);if("string"===typeof e&&e.endsWith("%")){return t(i*(Number.parseFloat(e)/100),0,i)}return $.option.margin[1]}get fontSize(){const{clamp:t}=this.utils,{clientHeight:e}=this.$player,i=this.option.fontSize;if("number"===typeof i)return Math.round(t(i,12,e));if("string"===typeof i&&i.endsWith("%")){const n=Number.parseFloat(i)/100;return Math.round(t(e*n,12,e))}return $.option.fontSize}get $ref(){return this.renderer.acquire()}get readys(){return function(t){const{currentTime:e}=t.art,i=[];return c(t,"ready",t=>i.push(t)),c(t,"wait",t=>{e+.1>=t.time&&t.time>=e-.1&&i.push(t)}),i}(this)}get visibles(){return this.renderer.visibles}get speed(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}async load(e){const{errorHandle:i}=this.utils,n=function(t,e){const i=l(t);if(e)for(const o of[...i.tasks])o.replace&&o.cancel();let n,s=i.closed||t.art.isDestroy;const a=new Promise(t=>n=t),r=new Set,d="function"===typeof AbortController?new AbortController:void 0,h={replace:e,signal:d?.signal,active:()=>!s&&!i.closed&&!t.art.isDestroy,onCancel:t=>h.active()?(r.add(t),()=>r.delete(t)):(t(),()=>{}),cancel(){if(!s){s=!0,n(o),d?.abort();for(const t of[...r])t();r.clear()}},wait:t=>Promise.race([t,a]),emit(e){i.emitting.push(h);try{return t.emit(e)}finally{i.emitting.pop()}},finish(){i.tasks.delete(h),r.clear()}};return s?n(o):i.tasks.add(h),h}(this,void 0===e);try{if(!n.active())return this;const s=function(e,i){return"function"===typeof e?{asynchronous:!0,value:e()}:t(e)?{asynchronous:!0,value:e}:"string"===typeof e?{asynchronous:!0,value:a(e,i)}:{asynchronous:!1,value:Array.isArray(e)?e:[]}}(e||this.option.danmuku,n),r=s.asynchronous?await n.wait(s.value):s.value;if(!n.active())return this;i(Array.isArray(r),"Danmuku need return an array as result");const o=r;if(void 0===e){if(this.reset(),!n.active())return this;this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.renderer.clear()}for(let t=0;t{const i=a[e],n=r[e];return"function"===typeof i||"function"===typeof n||t(i)||t(n)?i!==n:JSON.stringify(i)!==JSON.stringify(n)}))&&!i)return this;const o=function(t,e,{defaults:i,validate:n,clamp:s,mount:a}){const r=Object.assign({},i,t,e);return n(r),r.mode=s(r.mode,0,2),r.speed=s(r.speed,1,10),r.opacity=s(r.opacity,0,1),r.lockTime=s(r.lockTime,1,60),r.maxLength=s(r.maxLength,1,1e3),r.mount=r.mount||a,r}(this.option,e,{defaults:$.option,validate:t=>this.validator(t,$.scheme),clamp:n,mount:s});if(!d(this))return this;const l=this.option.beforeVisible!==o.beforeVisible;return this.option=o,l&&(this.scheduler.invalidate(),this.scheduler.schedule()),e.fontSize&&(this.reset(),!d(this))||(this.option.visible?this.show():this.hide(),d(this)&&this.art.emit("artplayerPluginDanmuku:config",this.option)),this}getLeft(t){return this.renderer.left(t)}postMessage(t={}){return this.workerClient.request(t)}createWorker(){this.workerClient=new w(()=>new b,t=>this.scheduler.fail(t)),this.worker=this.workerClient.worker}filter(t,e){return c(this,t,e)}setState(t,e){!function(t,e,i){t.states[e.$state]=t.states[e.$state].filter(t=>t!==e),e.$state=i,e.$ref&&(e.$ref.dataset.state=i),t.states[i].push(e)}(this,t,e)}makeWait(t){this.renderer.makeWait(t)}update(){return this.scheduler.running=!0,this.scheduler.schedule(),this}resize(){this.renderer.resize()}continue(){return this.renderer.continue(),this}suspend(){return this.renderer.suspend(),this}stop(){return this.isStop=!0,this.scheduler.running=!1,this.scheduler.invalidate(),this.suspend(),this.art.emit("artplayerPluginDanmuku:stop"),this}start(){if(this.scheduler.closed||this.art.isDestroy)return this;const t=++this.scheduler.starts,e=this.scheduler.generation;this.isStop=!1,this.scheduler.recover();return this.scheduler.closed||this.art.isDestroy||this.isStop||this.scheduler.fault||e!==this.scheduler.generation||t!==this.scheduler.starts||(this.continue(),this.update(),this.art.emit("artplayerPluginDanmuku:start")),this}reset(){return this.scheduler.invalidate(),this.queue.forEach(t=>this.makeWait(t)),this.art.emit("artplayerPluginDanmuku:reset"),this.scheduler.recover(),this.scheduler.schedule(),this}seek(){this.scheduler.invalidate(),this.scheduler.schedule()}show(){return this.isHide=!1,this.$danmuku.style.opacity=1,this.option.visible=!0,this.art.emit("artplayerPluginDanmuku:show"),this}hide(){return this.isHide=!0,this.scheduler.invalidate(),this.$danmuku.style.opacity=0,this.option.visible=!1,this.art.emit("artplayerPluginDanmuku:hide"),this.scheduler.schedule(),this}destroy(){h(this),this.scheduler.destroy();try{try{this.stop()}finally{this.workerClient?.dispose()}}finally{this.renderer.destroy(),this.art.off("video:play",this.start),this.art.off("video:playing",this.start),this.art.off("video:pause",this.stop),this.art.off("video:waiting",this.stop),this.art.off("resize",this.resize),this.art.off("video:seeking",this.seek),this.art.off("destroy",this.destroy),this.art.emit("artplayerPluginDanmuku:destroy")}}}const M=4294967295;function S(t,e){let i=0,n=t.length;for(;iNumber.isFinite(t)&&t>0))return null;const r={xMin:0,xMax:t,yMin:0,yMax:128,scale:.25,opacity:.2,minHeight:Math.floor(.05*e),sampling:Math.max(1,Math.floor(t/100)),smoothing:.2,flattening:.2},o=Object.assign({},"object"===typeof s?s:{}),l=Object.assign({},r,o);for(const b of Object.keys(r))Number.isFinite(l[b])||(l[b]=r[b]);if(l.sampling<=0&&(l.sampling=r.sampling),l.xMin===l.xMax||l.yMin===l.yMax)return null;const d=Array.isArray(a)&&a.length>0,h=d?[...a]:function(t,e,i,n){if(!Number.isFinite(e)||e<=0||!Number.isFinite(i)||i<=0||!Number.isFinite(n)||n<=0||Math.floor(e/n)+1>M)return[];const s=t.map(t=>t.time).filter(t=>"number"===typeof t&&!Number.isNaN(t)).sort((t,e)=>t-e),a=[],r=i/e;if(!Number.isFinite(r))return[];for(let o=0;o<=e;o+=n){if(a.length>=M||o+n===o)return[];const t=o*r,e=(o+n)*r;a.push([o,S(s,e)-S(s,t)])}return a}(n,t,i,l.sampling);if(!h.length||!h.every(t=>Array.isArray(t)&&Number.isFinite(t[0])&&Number.isFinite(t[1])))return null;const c=h[h.length-1];if(c[0]!==t){if(h.length===M)return null;h.push([t,c[1]])}let p=1/0,u=-1/0;for(const b of h)p=Math.min(p,b[1]),u=Math.max(u,b[1]);const m=(p+u)/2;for(const b of h){const t=b[1];b[1]=t*(t>m?1+l.scale:1-l.scale)+l.minHeight}const f=!d&&!Number.isFinite(o.yMin)&&!Number.isFinite(o.yMax);let g=0;for(const b of h)g=Math.max(g,b[1]);const y=f&&g>r.yMax/4;y&&(l.yMax=4*g);const v=t=>y?Math.min(e,Math.max(.75*e,t)):t,w=(t,e,i,n)=>{const s=function(t,e){const i=e[0]-t[0],n=e[1]-t[1];return{length:Math.sqrt(i**2+n**2),angle:Math.atan2(n,i)}}(e||t,i||t),a=z(Math.cos(s.angle)*l.flattening,0,1,1,0),r=s.angle*a+(n?Math.PI:0),o=s.length*l.smoothing;return[t[0]+Math.cos(r)*o,v(t[1]+Math.sin(r)*o)]},k=h.map(i=>[z(i[0],l.xMin,l.xMax,0,t),v(z(i[1],l.yMin,l.yMax,e,0))]);if(!k.every(t=>t.every(Number.isFinite)))return null;const x=k.map((t,i,n)=>{if(0===i)return`M ${n[n.length-1][0]},${e} L ${t[0]},${e} L ${t[0]},${t[1]}`;const s=w(n[i-1],n[i-2],t),a=w(t,n[i-1],n[i+1],!0);return`C ${s[0]},${s[1]} ${a[0]},${a[1]} ${t[0]},${t[1]}${i===n.length-1?" z":""}`}).join(" ");return/NaN|Infinity/u.test(x)?null:{path:x,opacity:l.opacity,width:t,height:e}}let F=0;function C(t,e,i){if(t.isDestroy)return;const{query:n}=t.constructor.utils;let s;const a=[];let r,o,l,d=!1;const h=()=>!d&&!t.isDestroy;function c(e,i){const n=i;a.push([e,n]),t.on(e,n)}function p(e){if(d)return;let i;d=!0,o=null,l=null;let n=!1;const s=t=>{try{t()}catch(e){n||(i=e),n=!0}};for(const[r,o]of a.splice(0))s(()=>t.off(r,o));if(e&&r&&t.controls.heatmap===r&&s(()=>t.controls.remove("heatmap")),r=void 0,n)throw i}function u(t){h()&&o&&l&&(o.setAttribute("offset",100*t+"%"),l.setAttribute("offset",100*t+"%"))}function m(a){try{!function(a=[]){if(!h())return;o=null,l=null;const d=r;if(d.innerHTML="",t.option.isLive)return;const c=E({width:d.offsetWidth,height:d.offsetHeight,duration:t.duration,queue:e.queue,option:i,points:a});if(!c||!h())return;const p=d.ownerDocument;for(s||(s=p?"heatmap-solids":"heatmap-solids-"+ ++F);p?.getElementById(s);)s="heatmap-solids-"+ ++F;d.innerHTML=`\n \n \n \n \n \n \n \n \n \n \n \n `,o=n("#heatmap-start",d),l=n("#heatmap-stop",d),u(t.played)}(a)}catch(d){try{p(!0)}catch{}throw d}}c("destroy",()=>p(!0));try{t.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},beforeUnmount(){p(!1)},mounted(e){if(r=e,d)return t.controls.heatmap===e&&t.controls.remove("heatmap"),void(r=void 0);h()?(c("video:timeupdate",()=>u(t.played)),c("setBar",(t,e)=>{"played"===t&&u(e)}),c("ready",()=>m()),c("resize",()=>m()),c("artplayerPluginDanmuku:loaded",()=>m()),c("artplayerPluginDanmuku:points",t=>m(t))):p(!0)}})}catch(f){try{p(!0)}catch{}throw f}return()=>p(!0)}const D=new WeakMap;class T{constructor(t){this.art=t,this.closed=!1,this.disposers=new Set,this.cancelled=new Promise(t=>this.cancel=t)}get active(){return!this.closed&&!this.art.isDestroy}own(t){this.closed?t():this.disposers.add(t)}write(t,e,i,n=i=>t[e]=i){const s=t;if(!this.active)return;const a=()=>"function"===typeof s.getPropertyPriority?s.getPropertyPriority(e):void 0;let r=D.get(s);r||(r=new Map,D.set(s,r));let o=r.get(e);o||(o={original:s[e],present:e in s||void 0!==s[e],priority:a(),owners:new Map,apply:n},r.set(e,o)),o.owners.has(this)||this.own(()=>{const t=[...o.owners.keys()],i=t[t.length-1]===this;if(o.owners.delete(this),i&&s[e]===o.last&&a()===o.lastPriority){const t=[...o.owners.values()];t.length?(o.apply(t[t.length-1]),o.last=s[e],o.lastPriority=a()):void 0!==o.priority?s.setProperty(e,o.original,o.priority):o.present?o.apply(o.original):delete s[e]}o.owners.size||(r.delete(e),r.size||D.delete(s))}),o.owners.delete(this),o.owners.set(this,i),o.apply(i),o.last=s[e],o.lastPriority=a()}on(t,e){if(!this.active)return;const i=this;function n(...t){if(i.active)return e.apply(this,t)}const s=()=>this.art.off(t,n);this.own(s);try{this.art.on(t,n),this.active||s()}catch(a){throw this.release(s),a}}proxy(t,e,i){if(!this.active)return;const n=this;function s(...t){if(n.active)return i.apply(this,t)}let a;const r=()=>{if("function"===typeof a){const t=this.art.events;"function"===typeof t?.remove&&t.destroyEvents?.has(a)?t.remove(a):a()}else t.removeEventListener?.(e,s)};this.own(r);try{a=this.art.proxy(t,e,s),this.active||r()}catch(o){throw this.release(r),o}}wait(t){return Promise.race([t,this.cancelled])}release(t){try{t()}catch(e){console.warn("Failed to dispose danmuku setting resource:",e)}}close(){if(!this.closed){this.closed=!0,this.cancel();for(const t of this.disposers)this.release(t);this.disposers.clear()}}}function P({min:t,max:e,container:i,findIndex:n,onChange:s,steps:a=[]}){const{lifecycle:r}=this;if(!r.active)return{reset(){}};const{query:o,clamp:l,setStyle:d}=this.utils;d(i,"touch-action","none"),i.innerHTML=`\n

\n
\n ${a.map(()=>'
').join("")}\n
\n
\n
\n
\n
\n ${a.map(t=>t.hide?"":`
${t.name}
`).join("")}\n
\n `;const h=o(".apd-slider-dot",i),c=o(".apd-slider-progress",i);let p=!1;function u(i){if(!r.active)return;if(void 0===i&&(i=n()),ie)return;const o=(i-t)/(e-t);h.style.left=100*o+"%",0===a.length&&(c.style.width=h.style.left),s(i)}function m(n){const{top:s,height:a,left:r,width:o}=i.getBoundingClientRect();if(this.art.isRotate){const i=l(n.clientY-s,0,a);u(Math.round(i/a*(e-t)+t))}else{const i=l(n.clientX-r,0,o);u(Math.round(i/o*(e-t)+t))}}return r.own(()=>p=!1),r.proxy(i,"click",t=>{m.call(this,t)}),r.proxy(i,"pointerdown",t=>{p=0===t.button}),r.on("document:pointermove",t=>{p&&m.call(this,t)}),r.on("document:pointerup",t=>{p&&(p=!1,m.call(this,t))}),{reset:u}}const L='',A='',H='',O='',N='',V='',q='',I='',j='',B='',R='',Z='';function W(){const{option:t}=this;return`\n
\n ${R}${B}\n
\n
\n ${H}\n
\n
\n
\n \u6309\u7c7b\u578b\u5c4f\u853d\n
\n
\n ${O}${N}\n
\u6eda\u52a8
\n
\n
\n ${V}${q}\n
\u9876\u90e8
\n
\n
\n ${I}${j}\n
\u5e95\u90e8
\n
\n
\n
\n
\n
\n ${A}${L}\n \u9632\u6b62\u5f39\u5e55\u91cd\u53e0\n
\n
\n ${A}${L}\n \u540c\u6b65\u89c6\u9891\u901f\u5ea6\n
\n
\n
\n \u4e0d\u900f\u660e\u5ea6\n
\n
\u672a\u77e5
\n
\n
\n \u663e\u793a\u533a\u57df\n
\n
\u672a\u77e5
\n
\n
\n \u5f39\u5e55\u5b57\u53f7\n
\n
\u672a\u77e5
\n
\n
\n \u5f39\u5e55\u901f\u5ea6\n
\n
\u672a\u77e5
\n
\n
\n
\n
\n
\n
\n ${Z}\n
\n
\n
\n \u6a21\u5f0f\n
\n
\n ${N}\n
\u6eda\u52a8
\n
\n
\n ${q}\n
\u9876\u90e8
\n
\n
\n ${j}\n
\u5e95\u90e8
\n
\n
\n
\n
\n \u989c\u8272\n
\n ${this.COLOR.map(t=>`
`).join("")}\n
\n
\n
\n
\n
\n \n
\u53d1\u9001
\n
\n `}if("undefined"!==typeof document){const t="artplayer-plugin-danmuku",e=Symbol.for("artplayer-plugin-danmuku.pending-style"),i=document;let n=document.getElementById(t)||i[e];if(!n)if(n=document.createElement("style"),n.id=t,"loading"===document.readyState){i[e]=n;const s=()=>{document.removeEventListener("DOMContentLoaded",s),i[e]===n&&delete i[e];const a=document.getElementById(t);a?a.textContent=n.textContent:(document.head||document.documentElement).appendChild(n)};document.addEventListener("DOMContentLoaded",s,{once:!0})}else(document.head||document.documentElement).appendChild(n);n.textContent='.artplayer-plugin-danmuku{display:flex;position:relative;z-index:99;align-items:center;justify-content:center;font-size:12px;height:32px;width:100%;color:#fff;font-weight:300;flex-shrink:0;gap:10px}.artplayer-plugin-danmuku .apd-icon{cursor:pointer;opacity:.75;transition:all .2s ease;fill:#fff}.artplayer-plugin-danmuku .apd-icon:hover{opacity:1}.artplayer-plugin-danmuku .apd-config{display:flex;position:relative}.artplayer-plugin-danmuku .apd-config .apd-config-panel{position:absolute;bottom:24px;left:0;width:320px;padding:10px;opacity:0;pointer-events:none}.artplayer-plugin-danmuku .apd-config .apd-config-panel .apd-config-panel-inner{width:100%;border-radius:3px;background-color:#000000d9;padding:10px}.artplayer-plugin-danmuku .apd-config:hover .apd-config-panel{opacity:100;pointer-events:all}.artplayer-plugin-danmuku .apd-config-mode,.artplayer-plugin-danmuku .apd-config-slider,.artplayer-plugin-danmuku .apd-config-other,.artplayer-plugin-danmuku .apd-style-mode{margin-bottom:15px}.artplayer-plugin-danmuku .apd-modes{display:flex;align-items:center;margin-top:5px;gap:20px}.artplayer-plugin-danmuku .apd-modes .apd-mode{cursor:pointer;text-align:center}.artplayer-plugin-danmuku .apd-modes .apd-mode:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-config-slider{display:flex;align-items:center;gap:12px}.artplayer-plugin-danmuku .apd-config-slider .apd-value{width:32px;text-align:right}.artplayer-plugin-danmuku .apd-slider{position:relative;flex:1;display:flex;height:20px;align-items:center;justify-content:center;cursor:pointer}.artplayer-plugin-danmuku .apd-slider .apd-slider-line{position:relative;height:2px;width:100%;overflow:hidden;border-radius:3px;background-color:#ffffff40}.artplayer-plugin-danmuku .apd-slider .apd-slider-points{position:absolute;inset:0;display:flex;align-items:center;justify-content:space-between}.artplayer-plugin-danmuku .apd-slider .apd-slider-points .apd-slider-point{width:2px;height:2px;border-radius:50%;background-color:#ffffff80}.artplayer-plugin-danmuku .apd-slider .apd-slider-progress{width:0%;height:100%;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-slider .apd-slider-dot{position:absolute;transform:translate(-6px);left:0%;width:12px;height:12px;border-radius:50%;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps{display:flex;align-items:center;justify-content:space-between;position:absolute;bottom:-12px;width:calc(100% + 32px);color:#777}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps .apd-slider-step{flex-shrink:0;width:36px;text-align:center;scale:.95}.artplayer-plugin-danmuku .apd-config-other{display:flex;align-items:center;gap:20px}.artplayer-plugin-danmuku .apd-config-other .apd-check-off,.artplayer-plugin-danmuku .apd-config-other .apd-check-on{width:16px;height:16px}.artplayer-plugin-danmuku .apd-config-other .apd-other{display:flex;align-items:center;cursor:pointer;gap:2px}.artplayer-plugin-danmuku .apd-config-other .apd-other:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-emitter{display:flex;flex:1;align-items:center;height:100%;background-color:#ffffff40;border-radius:5px}.artplayer-plugin-danmuku .apd-style{position:relative;display:flex;align-items:center;justify-content:center}.artplayer-plugin-danmuku .apd-style .apd-style-panel{position:absolute;bottom:24px;left:0;width:200px;padding:10px;opacity:0;pointer-events:none}.artplayer-plugin-danmuku .apd-style .apd-style-panel .apd-style-panel-inner{width:100%;border-radius:3px;background-color:#000000d9;padding:10px}.artplayer-plugin-danmuku .apd-style:hover .apd-style-panel{opacity:100;pointer-events:all}.artplayer-plugin-danmuku .apd-colors{display:flex;flex-wrap:wrap;margin-top:5px;gap:8px}.artplayer-plugin-danmuku .apd-colors .apd-color{width:16px;height:16px;border-radius:2px;cursor:pointer}.artplayer-plugin-danmuku .apd-colors .apd-color.apd-active{border:1px solid black;box-shadow:0 0 0 1px #fff}.artplayer-plugin-danmuku .apd-input{outline:none;height:100%;flex:1;min-width:0;width:auto;border:none;line-height:1;color:#fff;background-color:transparent}.artplayer-plugin-danmuku .apd-input::placeholder{color:#ffffff80}.artplayer-plugin-danmuku .apd-send{display:flex;align-items:center;justify-content:center;height:100%;width:60px;flex-shrink:0;cursor:pointer;text-shadow:none;border-top-right-radius:5px;border-bottom-right-radius:5px;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-send.apd-lock{cursor:not-allowed;color:#666;background-color:#e7e7e7}.art-controls-center .apd-emitter{width:260px;flex:none}.art-fullscreen .artplayer-plugin-danmuku,.art-fullscreen-web .artplayer-plugin-danmuku{height:38px;gap:16px}.art-fullscreen .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen-web .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-on,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-on{width:28px;height:28px}.art-fullscreen .artplayer-plugin-danmuku .apd-emitter,.art-fullscreen-web .artplayer-plugin-danmuku .apd-emitter{width:400px;flex:none}.art-video-player>.artplayer-plugin-danmuku{position:absolute;left:0;right:0;bottom:-40px;padding:0 10px}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[data-danmuku-emitter=false] .apd-emitter{display:none!important}[data-danmuku-emitter=false] .art-controls-center .artplayer-plugin-danmuku{justify-content:flex-end;gap:18px}[data-danmuku-emitter=false].art-fullscreen .art-controls-center .artplayer-plugin-danmuku,[data-danmuku-emitter=false].art-fullscreen-web .art-controls-center .artplayer-plugin-danmuku{gap:24px}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-icon{fill:#333}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-emitter{background-color:#f1f2f3}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input{color:#000}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:#0000004d}[data-danmuku-visible=false] .apd-toggle-off{display:block}[data-danmuku-visible=false] .apd-toggle-on,[data-danmuku-visible=true] .apd-toggle-off{display:none}[data-danmuku-visible=true] .apd-toggle-on{display:block}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-on{display:none}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-off,[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-on{display:block}[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-off,[data-danmuku-sync-video=false] .apd-sync-video .apd-check-on{display:none}[data-danmuku-sync-video=false] .apd-sync-video .apd-check-off,[data-danmuku-sync-video=true] .apd-sync-video .apd-check-on{display:block}[data-danmuku-sync-video=true] .apd-sync-video .apd-check-off{display:none}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-off{display:block}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-on{display:none}[data-danmuku-mode0=false] .art-danmuku [data-mode="0"]{opacity:0!important}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-off{display:none}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-on{display:block}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"]{color:#00a1d6}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"] path{fill:#00a1d6}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-off{display:block}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-on{display:none}[data-danmuku-mode1=false] .art-danmuku [data-mode="1"]{opacity:0!important}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-off{display:none}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-on{display:block}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"]{color:#00a1d6}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"] path{fill:#00a1d6}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-off{display:block}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-on{display:none}[data-danmuku-mode2=false] .art-danmuku [data-mode="2"]{opacity:0!important}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-off{display:none}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-on{display:block}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"]{color:#00a1d6}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"] path{fill:#00a1d6}'}class _{constructor(t,e){this.art=t,this.danmuku=e,this.utils=t.constructor.utils;const{setStyle:i}=this.utils,{$controlsCenter:n}=t.template;this.template={$controlsCenter:n,$mount:n,$danmuku:null,$toggle:null,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel:null,$styleModes:null,$colors:null,$opacitySlider:null,$opacityValue:null,$marginSlider:null,$marginValue:null,$fontSizeSlider:null,$fontSizeValue:null,$speedSlider:null,$speedValue:null,$input:null,$send:null},this.slider={opacity:null,margin:null,fontSize:null,speed:null},this.emitting=!1,this.isLock=!1,this.timer=null,this.lifecycle=new T(t),this.destroy=this.destroy.bind(this),this.lifecycle.own(()=>t.off("destroy",this.destroy));try{if(t.on("destroy",this.destroy),!this.lifecycle.active)return;if(this.lifecycle.write(n.style,"display","flex",t=>i(n,"display",t)),this.createTemplate(),!this.lifecycle.active)return;if(this.createSliders(),!this.lifecycle.active)return;if(this.createEvents(),this.mount(this.option.mount),!this.lifecycle.active)return;this.lifecycle.on("resize",()=>this.resize()),this.lifecycle.on("fullscreen",t=>this.onFullscreen(t)),this.lifecycle.on("fullscreenWeb",t=>this.onFullscreen(t)),this.lifecycle.proxy(this.template.$config,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$config,$panel:this.template.$configPanel})}),this.lifecycle.proxy(this.template.$style,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$style,$panel:this.template.$stylePanel})})}catch(s){try{this.destroy()}catch(a){console.warn("Failed to roll back danmuku setting:",a)}throw s}}static get icons(){return{$on:R,$off:B,$config:H,$style:Z,$mode_0_off:O,$mode_0_on:N,$mode_1_off:V,$mode_1_on:q,$mode_2_off:I,$mode_2_on:j,$check_on:A,$check_off:L}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){return W.call(this)}get OPACITY(){return{min:0,max:100,steps:[],...this.option.OPACITY}}get FONT_SIZE(){return{min:12,max:120,steps:[],...this.option.FONT_SIZE}}get MARGIN(){return{min:0,max:3,steps:[{name:"1/4",value:[10,"75%"]},{name:"\u534a\u5c4f",value:[10,"50%"]},{name:"3/4",value:[10,"25%"]},{name:"\u6ee1\u5c4f",value:[10,10]}],...this.option.MARGIN}}get SPEED(){return{min:0,max:4,steps:[{name:"\u6781\u6162",value:10},{name:"\u8f83\u6162",value:7.5,hide:!0},{name:"\u9002\u4e2d",value:5},{name:"\u8f83\u5feb",value:2.5,hide:!0},{name:"\u6781\u5feb",value:1}],...this.option.SPEED}}get COLOR(){return this.option.COLOR.length?this.option.COLOR:["#FE0302","#FF7204","#FFAA02","#FFD302","#FFFF00","#A0EE00","#00CD00","#019899","#4266BE","#89D5FF","#CC0273","#222222","#9B9B9B","#FFFFFF"]}query(t){const{query:e}=this.utils,{$danmuku:i}=this.template;return e(t,i)}append(t,e){if(!this.lifecycle.active)return;const{append:i}=this.utils;[...t.children].includes(e)||i(t,e)}setData(t,e){if(!this.lifecycle.active)return;const{$player:i}=this.art.template,{$mount:n}=this.template;this.lifecycle.write(i.dataset,t,e),this.outside&&this.lifecycle.write(n.dataset,t,e)}createTemplate(){const{createElement:t,tooltip:e}=this.utils,i=t("div");this.template.$danmuku=i,i.className="artplayer-plugin-danmuku",i.innerHTML=this.TEMPLATE,this.template.$toggle=this.query(".apd-toggle"),this.template.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),this.template.$styleModes=this.query(".apd-style-mode .apd-modes"),this.template.$colors=this.query(".apd-colors"),this.template.$antiOverlap=this.query(".apd-anti-overlap"),this.template.$syncVideo=this.query(".apd-sync-video"),this.template.$opacitySlider=this.query(".apd-config-opacity .apd-slider"),this.template.$opacityValue=this.query(".apd-config-opacity .apd-value"),this.template.$marginSlider=this.query(".apd-config-margin .apd-slider"),this.template.$marginValue=this.query(".apd-config-margin .apd-value"),this.template.$fontSizeSlider=this.query(".apd-config-fontSize .apd-slider"),this.template.$fontSizeValue=this.query(".apd-config-fontSize .apd-value"),this.template.$speedSlider=this.query(".apd-config-speed .apd-slider"),this.template.$speedValue=this.query(".apd-config-speed .apd-value"),this.template.$input=this.query(".apd-input"),this.template.$send=this.query(".apd-send");const{$toggle:n}=this.template;this.lifecycle.on("artplayerPluginDanmuku:show",()=>{e(n,"\u5173\u95ed\u5f39\u5e55")}),this.lifecycle.on("artplayerPluginDanmuku:hide",()=>{e(n,"\u6253\u5f00\u5f39\u5e55")})}createEvents(){const{$toggle:t,$configModes:e,$styleModes:i,$colors:n,$antiOverlap:s,$syncVideo:a,$send:r,$input:o}=this.template;this.lifecycle.proxy(t,"click",()=>{this.danmuku.config({visible:!this.option.visible}),this.reset()}),this.lifecycle.proxy(e,"click",t=>{const e=t.target.closest(".apd-mode");if(!e)return;const i=Number(e.dataset.mode);this.option.modes.includes(i)?this.danmuku.config({modes:this.option.modes.filter(t=>t!==i)}):this.danmuku.config({modes:[...this.option.modes,i]}),this.reset()}),this.lifecycle.proxy(s,"click",()=>{this.danmuku.config({antiOverlap:!this.option.antiOverlap}),this.reset()}),this.lifecycle.proxy(a,"click",()=>{this.danmuku.config({synchronousPlayback:!this.option.synchronousPlayback}),this.reset()}),this.lifecycle.proxy(i,"click",t=>{const e=t.target.closest(".apd-mode");if(!e)return;const i=Number(e.dataset.mode);this.danmuku.config({mode:i}),this.reset()}),this.lifecycle.proxy(n,"click",t=>{const e=t.target.closest(".apd-color");e&&(this.danmuku.config({color:e.dataset.color}),this.reset())}),this.lifecycle.proxy(r,"click",()=>this.emit()),this.lifecycle.proxy(o,"keypress",t=>{"Enter"===t.key&&(t.preventDefault(),this.emit())})}createSliders(){this.slider.opacity=this.createSlider({...this.OPACITY,container:this.template.$opacitySlider,findIndex:()=>Math.round(100*this.option.opacity),onChange:t=>{const{$opacityValue:e}=this.template;e.textContent=`${t}%`,this.danmuku.config({opacity:t/100})}}),this.slider.margin=this.createSlider({...this.MARGIN,container:this.template.$marginSlider,findIndex:()=>this.MARGIN.steps.findIndex(t=>t.value[0]===this.option.margin[0]&&t.value[1]===this.option.margin[1]),onChange:t=>{const e=this.MARGIN.steps[t];if(!e)return;const{$marginValue:i}=this.template;i.textContent=e.name,this.danmuku.config({margin:e.value})}}),this.slider.fontSize=this.createSlider({...this.FONT_SIZE,container:this.template.$fontSizeSlider,findIndex:()=>this.danmuku.fontSize,onChange:t=>{const{$fontSizeValue:e}=this.template;e.textContent=`${t}px`,t!==this.danmuku.fontSize&&this.danmuku.config({fontSize:t})}}),this.slider.speed=this.createSlider({...this.SPEED,container:this.template.$speedSlider,findIndex:()=>this.SPEED.steps.findIndex(t=>t.value===this.option.speed),onChange:t=>{const e=this.SPEED.steps[t];if(!e)return;const{$speedValue:i}=this.template;i.textContent=e.name,this.danmuku.config({speed:e.value})}})}createSlider(t){return P.call(this,t)}onFullscreen(t){if(!this.lifecycle.active)return;const{$danmuku:e,$controlsCenter:i,$mount:n}=this.template;this.outside?t?this.append(i,e):this.append(n,e):this.append(i,e)}onMouseEnter({$control:t,$panel:e}){if(!this.lifecycle.active)return;const{$player:i}=this.art.template,n=t.getBoundingClientRect(),s=e.getBoundingClientRect(),a=i.getBoundingClientRect(),r=s.width/2-n.width/2,o=a.left-(n.left-r),l=n.right+r-a.right;e.style.left=o>0?`${-r+o}px`:l>0?-r-l+"px":-r+"px"}emit(){return async function(t){const{lifecycle:e,template:{$input:i}}=t;if(!e.active)return;const n=i.value.trim();if(!n.length||t.isLock||t.emitting)return;const s={text:n,mode:t.option.mode,color:t.option.color,time:t.art.currentTime},a=t=>{e.active&&console.error("Error emitting danmuku:",t)};try{t.emitting=!0;const n=await e.wait(t.option.beforeEmit(s));if(!e.active)return;if(t.emitting=!1,!0!==n)return;if(s.border=!0,delete s.time,Promise.resolve(t.danmuku.emit(s)).catch(a),!e.active)return;i.value="",t.lock()}catch(r){a(r),e.active&&(t.emitting=!1)}}(this)}lock(){!function(t){if(!t.lifecycle.active)return;const{addClass:e}=t.utils,{$send:i}=t.template;clearTimeout(t.timer),t.isLock=!0;let n=t.option.lockTime;i.textContent=n,e(i,"apd-lock");const s=()=>{t.timer=setTimeout(()=>{t.lifecycle.active&&(0===n?t.unlock():(n-=1,i.textContent=n,s()))},1e3)};s()}(this)}unlock(){!function(t){if(clearTimeout(t.timer),t.timer=null,t.isLock=!1,!t.lifecycle.active)return;const{removeClass:e}=t.utils,{$send:i}=t.template;i.textContent="\u53d1\u9001",e(i,"apd-lock")}(this)}resize(){if(!this.lifecycle.active)return;if(this.outside)return;if(this.art.fullscreen)return;if(this.art.fullscreenWeb)return;const{$player:t,$controlsCenter:e}=this.art.template,{$danmuku:i}=this.template;this.art.widtht.dataset.color===this.option.color.toUpperCase());a&&t(a,"apd-active"),e(i,this.option.visible?"\u5173\u95ed\u5f39\u5e55":"\u6253\u5f00\u5f39\u5e55"),this.resize()}mount(t){if(!this.lifecycle.active)return;const{errorHandle:e}=this.utils,i="string"===typeof t?document.querySelector(t):t;e(i,`Can not find the mount point: ${t}`),this.append(i,this.template.$danmuku),this.template.$mount=i,this.reset()}destroy(){if(this.lifecycle.closed)return;this.lifecycle.close(),clearTimeout(this.timer),this.timer=null,this.emitting=!1,this.isLock=!1;const t=this.template.$danmuku;t?.parentElement&&t.parentElement.removeChild(t)}}function U(t){return e=>{const i=new $(e,t);let n;try{n=e.isDestroy?void 0:new _(e,i),!e.isDestroy&&i.option.heatmap&&C(e,i,i.option.heatmap)}catch(s){try{n?.destroy()}catch{}try{i.destroy()}catch{}throw s}return{name:"artplayerPluginDanmuku",emit:i.emit.bind(i),load:i.load.bind(i),config:i.config.bind(i),hide:i.hide.bind(i),show:i.show.bind(i),reset:i.reset.bind(i),mount:n?n.mount.bind(n):()=>{},get option(){return i.option},get isHide(){return i.isHide},get isStop(){return i.isStop}}}}return U.icons=_.icons,U}); diff --git a/docs/compiled/artplayer-plugin-danmuku.legacy.js b/docs/compiled/artplayer-plugin-danmuku.legacy.js index 2631ffe2e..4dfae27cc 100644 --- a/docs/compiled/artplayer-plugin-danmuku.legacy.js +++ b/docs/compiled/artplayer-plugin-danmuku.legacy.js @@ -1,7 +1,7 @@ /*! - * artplayer-plugin-danmuku.js v5.3.0 + * artplayer-plugin-danmuku.js v6.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. */ -!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.artplayerPluginDanmuku=e(),define(function(){return t.artplayerPluginDanmuku})):(t="undefined"!==typeof globalThis?globalThis:t||self).artplayerPluginDanmuku=e()}(this,function(){"use strict";var t=Object.defineProperty,e=Object.defineProperties,i=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,s=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,r=Math.pow,o=(e,i,n)=>i in e?t(e,i,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[i]=n,l=(t,e)=>{for(var i in e||(e={}))s.call(e,i)&&o(t,i,e[i]);if(n)for(var i of n(e))a.call(e,i)&&o(t,i,e[i]);return t},d=(t,n)=>e(t,i(n)),h=(t,e,i)=>new Promise((n,s)=>{var a=t=>{try{o(i.next(t))}catch(e){s(e)}},r=t=>{try{o(i.throw(t))}catch(e){s(e)}},o=t=>t.done?n(t.value):Promise.resolve(t.value).then(a,r);o((i=i.apply(t,e)).next())});function c(t){return t instanceof Promise||"[object Promise]"===Object.prototype.toString.call(t)}function p(t){switch(t){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function u(t){if("string"!==typeof t)return[];const e=new RegExp(']*?p="(?

[^"]+)"[^>]*>(?.*?)<\\/d>',"gs"),i=t.matchAll(e);return Array.from(i).map(t=>{const e=t.groups.p.split(",");if(e.length>=8){return{text:t.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(e[0]),mode:p(Number(e[1])),fontSize:Number(e[2]),color:`#${Number(e[3]).toString(16)}`,timestamp:Number(e[4]),pool:Number(e[5]),userID:e[6],rowID:Number(e[7])}}return null}).filter(Boolean)}function m({data:t}){const{xml:e,id:i}=t,n=u(e);globalThis.postMessage({danmus:n,id:i})}let f=0;function g(t,{signal:e,onCancel:i}={}){return new Promise((n,s)=>{let a,r,o,l=!1;const d=++f,c=()=>y(void 0,function(t){if(void 0!==(null==t?void 0:t.reason))return t.reason;const e=new Error("Bilibili Danmu loading cancelled");return e.name="AbortError",e}(e));function g(){let t,e=!1;try{if(a){const t=a;a=void 0,t.onmessage=null,t.onerror=null,t.onmessageerror=null,t.terminate()}}catch(i){t=i,e=!0}if(void 0!==r){const n=r;r=void 0;try{URL.revokeObjectURL(n)}catch(i){e||(t=i),e=!0}}if(e)throw t}function y(t,i){if(l)return;l=!0;let a=arguments.length>1;null==e||e.removeEventListener("abort",c),null==o||o();try{g()}catch(r){a||(i=r),a=!0}a?s(i):n(t)}function v(t,e){if(!l){console.error("Error parsing Bilibili Danmu:",e);try{y(u(t))}catch(i){y(void 0,i)}}}(null==e?void 0:e.aborted)?c():(null==e||e.addEventListener("abort",c),o=null==i?void 0:i(c),l?null==o||o():function(){return h(this,null,function*(){const i=e?yield fetch(t,{signal:e}):yield fetch(t);if(l)return;const n=yield i.text();if(!l)try{const t=`\n ${p.toString()}\n ${u.toString()}\n onmessage = ${m.toString()}\n `;if(r=URL.createObjectURL(new Blob([t],{type:"application/javascript"})),l)return void g();if(a=new Worker(r),l)return void g();a.onmessage=t=>{var e;if(l||(null==(e=t.data)?void 0:e.id)!==d)return;const{danmus:i}=t.data;Array.isArray(i)?y(i):y(void 0,new Error("Invalid Bilibili Danmu worker response"))},a.onerror=t=>{var e;null==(e=t.preventDefault)||e.call(t),v(n,t.error||t)},a.onmessageerror=t=>v(n,t.error||t),a.postMessage({xml:n,id:d})}catch(s){v(n,s)}})}().catch(t=>y(void 0,t)))})}const y=new WeakMap,v=Symbol("cancelled danmuku input");function w(t){return y.has(t)||y.set(t,{closed:!1,tasks:new Set,emitting:[]}),y.get(t)}function k(t){const e=w(t),i=e.emitting[e.emitting.length-1];return!e.closed&&!t.art.isDestroy&&(!i||i.active())}function x(t){const e=w(t);e.closed=!0;for(const i of[...e.tasks])i.cancel()}function b(t,e,i){const n=t.states[e]||[];for(let s=0;s{const s=n.$ref.offsetTop,a=this.owner.getLeft(n.$ref)-i,r=n.$ref.clientHeight,o=n.$ref.clientWidth,l=a+o,d=e-l,h=l/n.$restTime,c={};c.top=s,c.left=a,c.height=r,c.width=o,c.right=d,c.speed=h,c.distance=l,c.time=n.$restTime,c.mode=n.mode,t.push(c)}),t}left(t){const e=t.getBoundingClientRect();return this.owner.isRotate?e.top:e.left}makeWait(t){this.owner.setState(t,"wait"),t.$ref&&(t.$ref.style.cssText=this.owner.constructor.cssText,t.$ref.style.visibility="hidden",t.$ref.style.marginLeft="0px",t.$ref.style.transform="translateX(0px)",t.$ref.style.transition="transform 0s linear 0s",this.owner.$refs.push(t.$ref),t.$ref=null)}resize(){const{clientWidth:t}=this.owner.$player;this.owner.filter("stop",e=>{if(0===e.mode)e.$ref.style.left=`${t}px`}),this.owner.filter("emit",e=>{switch(e.$lastStartTime=Date.now(),e.mode){case 0:{const i=t+e.$ref.clientWidth;e.$ref.style.left=`${t}px`,e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`;break}}})}continue(){const{clientWidth:t}=this.owner.$player;return this.owner.filter("stop",e=>{switch(this.owner.setState(e,"emit"),e.$lastStartTime=Date.now(),e.mode){case 0:{const i=t+e.$ref.clientWidth;e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`;break}}}),this}suspend(){const{clientWidth:t}=this.owner.$player;return this.owner.filter("emit",e=>{switch(this.owner.setState(e,"stop"),e.mode){case 0:{const i=t-(this.owner.getLeft(e.$ref)-this.owner.getLeft(this.owner.$player));e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition="transform 0s linear 0s";break}}}),this}prepare(t,e){const i=this.owner,n=i.$ref;return e.danmu=t,e.ref=n,t.$ref=n,n.textContent=t.text,i.$danmuku.appendChild(n),n.style.opacity=i.option.opacity,n.style.fontSize=`${i.fontSize}px`,n.style.color=t.color,n.style.border=t.border?`1px solid ${t.color}`:null,n.style.backgroundColor=t.border?"rgb(0 0 0 / 50%)":null,i.utils.setStyles(n,t.style),n}place(t,e,i,n,s){switch(e.style.top=`${i}px`,e.style.visibility="visible",e.dataset.mode=t.mode,e.dataset.id=t.id||"",t.mode){case 0:e.style.left=`${s}px`,e.style.marginLeft="0px",e.style.transform=`translateX(${-n}px)`,e.style.transition=`transform ${t.$restTime}s linear 0s`;break;case 1:case 2:e.style.left="50%",e.style.marginLeft=`-${e.clientWidth/2}px`}}release(t){const{danmu:e,ref:i}=t;i&&e.$ref===i&&(i.style.cssText=this.owner.constructor.cssText,i.style.visibility="hidden",this.owner.$refs.push(i),e.$ref=null),t.ref=null}clear(){this.destroy(),this.owner.$refs=[],this.owner.$danmuku.textContent=""}destroy(){for(const t of this.nodes)t.parentElement&&t.parentElement.removeChild(t);for(const t of this.owner.queue)t.$ref=null;this.owner.$refs.length=0,this.nodes.clear()}}function M({target:t,visibles:e,clientWidth:i,clientHeight:n,marginBottom:s,marginTop:a,antiOverlap:r}){const o=n-s,l=e.filter(e=>e.mode===t.mode&&e.top<=o).sort((t,e)=>t.top-e.top);if(0===l.length)return 2===t.mode?o-t.height:a;if(l.unshift({type:"top",top:0,left:0,right:0,height:a,width:i,speed:0,distance:i}),l.push({type:"bottom",top:o,left:0,right:0,height:s,width:i,speed:0,distance:i}),2===t.mode)for(let h=l.length-2;h>=0;h-=1){const e=l[h],i=l[h+1],n=e.top+e.height;if(i.top-n>=t.height)return i.top-t.height}else for(let h=1;h=t.height)return n}const d=[];for(let h=1;h{const i=Math.min(...e.map(t=>t.right)),n=Math.min(...t.map(t=>t.right));return i*e.length-n*t.length});break;case 1:case 2:d.sort((t,e)=>{const i=Math.max(...e.map(t=>t.width));return Math.max(...t.map(t=>t.width))*t.length-i*e.length})}return d[0][0].top}switch(t.mode){case 0:{const e=d.find(e=>e.every(e=>{if(ie.time}));return e&&e[0]?e[0].top:void 0}case 1:case 2:return}}class S{constructor(){this.rows=new Set,this.waiting=new Set,this.visibility=()=>this.clear()}begin(t){void 0===this.time&&this.capture(t,[],t.art.currentTime)}capture(t,e,i){var n,s;const a=t.$player.ownerDocument;if(a!==this.document&&(null==(n=this.document)||n.removeEventListener("visibilitychange",this.visibility),this.document=a,null==a||a.addEventListener("visibilitychange",this.visibility),this.clear()),!Number.isFinite(i)||"hidden"===(null==a?void 0:a.visibilityState)||(null==(s=t.art.video)?void 0:s.seeking))return this.clear(),e;const r=this.time,o=this.rows,l=this.waiting;if(this.time=i,this.rows=new Set(e),this.waiting=new Set(t.states.wait),void 0===r||i<=r)return e;const d=t.states.wait.filter(t=>l.has(t)&&!o.has(t)&&t.time>=r-.1&&t.time"ready"===t.$state),...d,...e.filter(t=>"ready"!==t.$state)]}clear(){this.time=void 0,this.rows.clear(),this.waiting.clear()}destroy(){var t;null==(t=this.document)||t.removeEventListener("visibilitychange",this.visibility),this.document=void 0,this.clear()}}class z{constructor(){this.pending=new Set,this.reserved=new Set}capture(t,e){for(const i of t)this.reserved.has(i)||e.has(i)||this.pending.add(i)}take(){const t=[],e=[];for(const n of this.pending)"ready"===n.$state?t.push(n):"wait"===n.$state&&e.push(n);this.pending.clear();const i=[...t,...e];return this.reserved=new Set(i),i}complete(){this.reserved.clear()}clear(){this.pending.clear(),this.reserved.clear()}}const E=Symbol("cancelled danmuku frame");class F{constructor(t){this.owner=t,this.generation=0,this.starts=0,this.frame=null,this.operation=null,this.closed=!1,this.running=!1,this.fault=!1,this.failedItems=new Set,this.buffer=new z,this.sampling=new S}active(t){const e=this.owner;return!this.closed&&!this.fault&&!e.art.isDestroy&&!e.isStop&&!e.isHide&&t.generation===this.generation}release(t){this.owner.renderer.release(t)}invalidate(){var t;if(this.generation++,null!==this.frame&&window.cancelAnimationFrame(this.frame),this.frame=null,this.owner.timer=null,this.operation){const t=this.operation;this.operation=null,t.cancel(),this.release(t)}null==(t=this.owner.workerClient)||t.cancel(),this.failedItems.clear(),this.buffer.clear(),this.sampling.clear()}report(t){try{this.owner.art.emit("artplayerPluginDanmuku:error",t)}catch(e){console.warn("Failed to report danmuku scheduling error:",e)}}fail(t){this.closed||this.fault||(this.fault=!0,this.invalidate(),this.report(t))}recover(){var t;if(!this.closed&&!this.owner.art.isDestroy&&(this.failedItems.clear(),this.fault))try{null==(t=this.owner.workerClient)||t.dispose(),this.owner.createWorker(),this.fault=!1}catch(e){this.report(e)}}schedule(){const t=this.owner;if(!(!this.running||this.closed||this.fault||t.art.isDestroy||t.isStop)){try{const e=t.art.video;(t.art.playing||!1===(null==e?void 0:e.paused)&&!e.ended&&e.readyState>2)&&!t.isHide&&this.sampling.begin(t)}catch(e){return void this.fail(e)}null===this.frame&&(this.frame=window.requestAnimationFrame(()=>{if(this.frame=null,t.timer=null,this.closed||this.fault||t.isStop||t.art.isDestroy)return;const i=this.generation;try{if(t.art.playing&&!t.isHide){t.filter("emit",e=>{const i=Date.now();e.$restTime-=(i-e.$lastStartTime)/1e3,e.$lastStartTime=i,e.$restTime<=0&&t.makeWait(e)});const e=t.art.currentTime,n=t.readys;if(i!==this.generation)return;this.buffer.capture(this.sampling.capture(t,n,e),this.failedItems)}}catch(e){return void(i===this.generation&&this.fail(e))}if(this.schedule(),this.operation||!t.art.playing||t.isHide)return;const n=this.buffer.take();if(!n.length)return;let s;const a=new Promise(t=>s=()=>t(E)),r={generation:this.generation,cancel:s,wait:t=>Promise.race([t,a]),ref:null};return this.operation=r,this.run(r,n).catch(t=>{this.active(r)&&this.fail(t)}).finally(()=>{this.release(r),this.operation===r&&(this.operation=null,this.buffer.complete())})}),t.timer=this.frame)}}run(t,e){return h(this,null,function*(){const i=this.owner;if(i.art.playing&&this.active(t))for(const s of e){if(!this.active(t))return;if(this.failedItems.has(s))continue;let e;try{e=yield t.wait(i.option.beforeVisible(s))}catch(n){if(!this.active(t))return;this.failedItems.add(s),this.report(n);continue}if(!this.active(t))return;if(!e)continue;const{clientWidth:a,clientHeight:r}=i.$player,o=i.renderer.prepare(s,t);if(!this.active(t))return;s.$lastStartTime=Date.now(),s.$restTime=i.speed;const l=a+o.clientWidth,d={type:"getDanmuTop",target:{mode:s.mode,height:o.clientHeight,speed:l/s.$restTime},visibles:i.visibles,antiOverlap:i.option.antiOverlap,clientWidth:a,clientHeight:r,marginBottom:i.marginBottom,marginTop:i.marginTop},h=d.antiOverlap?yield t.wait(i.postMessage(d)):{result:M(d)},c="symbol"===typeof h?void 0:h.result;if(!this.active(t)||s.$ref!==o)return;void 0!==c?(s.$lastStartTime=Date.now(),i.setState(s,"emit"),i.renderer.place(s,o,c,l,a),t.ref=null,i.art.emit("artplayerPluginDanmuku:visible",s)):(i.setState(s,"ready"),this.release(t))}})}destroy(){this.closed=!0,this.invalidate(),this.sampling.destroy()}}let C=0;class D{constructor(t,e){this.pending=new Map,this.closed=!1,this.failed=!1,this.onFailure=e,this.worker=t();try{this.worker.onmessage=t=>{var e;const i=this.pending.get(null==(e=t.data)?void 0:e.id);i&&(this.pending.delete(t.data.id),i.resolve(t.data))},this.worker.onerror=t=>{var e;null==(e=t.preventDefault)||e.call(t),this.fail(t.error||t)},this.worker.onmessageerror=t=>this.fail(t.error||t)}catch(i){try{this.dispose()}catch(n){}throw i}}request(t){t.id=++C;const{id:e}=t;return this.closed||this.failed?Promise.resolve({id:e,result:void 0}):new Promise((i,n)=>{this.pending.set(e,{resolve:i,reject:n});try{this.worker.postMessage(t)}catch(s){this.fail(s)}})}fail(t){if(!this.closed&&!this.failed){this.failed=!0;for(const e of this.pending.values())e.reject(t);this.pending.clear();try{this.dispose()}catch(e){}this.onFailure(t)}}cancel(){for(const[t,e]of this.pending)e.resolve({id:t,result:void 0});this.pending.clear()}dispose(){if(this.closed)return;this.closed=!0,this.cancel();let t,e=!1;const i=i=>{try{i()}catch(n){e||(t=n),e=!0}};for(const n of["onmessage","onerror","onmessageerror"])i(()=>this.worker[n]=null);if(i(()=>this.worker.terminate()),e)throw t}}const P='/*!\n * artplayer-plugin-danmuku.js v5.3.0\n * Github: https://github.com/zhw2590582/ArtPlayer\n * (c) 2017-2026 Harvey Zhao\n * Released under the MIT License.\n */\nfunction t({target:t,visibles:e,clientWidth:i,clientHeight:h,marginBottom:n,marginTop:o,antiOverlap:s}){const r=h-n,p=e.filter(e=>e.mode===t.mode&&e.top<=r).sort((t,e)=>t.top-e.top);if(0===p.length)return 2===t.mode?r-t.height:o;if(p.unshift({type:"top",top:0,left:0,right:0,height:o,width:i,speed:0,distance:i}),p.push({type:"bottom",top:r,left:0,right:0,height:n,width:i,speed:0,distance:i}),2===t.mode)for(let g=p.length-2;g>=0;g-=1){const e=p[g],i=p[g+1],h=e.top+e.height;if(i.top-h>=t.height)return i.top-t.height}else for(let g=1;g=t.height)return h}const a=[];for(let g=1;g{const i=Math.min(...e.map(t=>t.right)),h=Math.min(...t.map(t=>t.right));return i*e.length-h*t.length});break;case 1:case 2:a.sort((t,e)=>{const i=Math.max(...e.map(t=>t.width));return Math.max(...t.map(t=>t.width))*t.length-i*e.length})}return a[0][0].top}switch(t.mode){case 0:{const e=a.find(e=>e.every(e=>{if(ie.time}));return e&&e[0]?e[0].top:void 0}case 1:case 2:return}}onmessage=e=>{const{data:i}=e;if(!i.id||!i.type)return;const h=(0,{getDanmuTop:t}[i.type])(i);globalThis.postMessage({result:h,id:i.id})};\n',T="undefined"!==typeof self&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",P],{type:"text/javascript;charset=utf-8"});function L(t){let e;try{if(e=T&&(self.URL||self.webkitURL).createObjectURL(T),!e)throw"";const i=new Worker(e,{type:"module",name:null==t?void 0:t.name});return i.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(e)}),i}catch(i){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(P),{type:"module",name:null==t?void 0:t.name})}}class O{constructor(t,e){const{constructor:i,template:n}=t;this.utils=i.utils,this.validator=i.validator,this.$danmuku=n.$danmuku,this.$player=n.$player,this.art=t,this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.worker=null,this.workerClient=null,this.renderer=new $(this),this.scheduler=new F(this),this.option=O.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.reset=this.reset.bind(this),this.resize=this.resize.bind(this),this.destroy=this.destroy.bind(this),this.seek=this.seek.bind(this),k(this),t.on("destroy",this.destroy);try{if(this.config(e,!0),!k(this))return;this.createWorker()}catch(s){throw t.off("destroy",this.destroy),x(this),this.scheduler.destroy(),s}t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("resize",this.resize),t.on("video:seeking",this.seek),this.load().catch(t=>console.warn("Failed to load initial danmuku:",t))}static get option(){return{danmuku:[],speed:5,margin:[10,"25%"],opacity:1,color:"#FFFFFF",mode:0,modes:[0,1,2],fontSize:25,antiOverlap:!0,synchronousPlayback:!1,mount:void 0,heatmap:!1,width:512,points:[],filter:()=>!0,beforeEmit:()=>!0,beforeVisible:()=>!0,visible:!0,emitter:!0,maxLength:200,lockTime:5,theme:"dark",OPACITY:{},FONT_SIZE:{},MARGIN:{},SPEED:{},COLOR:[]}}static get scheme(){return{danmuku:"array|function|string|promise",speed:"number",margin:"array",opacity:"number",color:"string",mode:"number",modes:"array",fontSize:"number|string",antiOverlap:"boolean",synchronousPlayback:"boolean",mount:"?htmldivelement|string",heatmap:"object|boolean",width:"number",points:"array",filter:"function",beforeEmit:"function",beforeVisible:"function",visible:"boolean",emitter:"boolean",maxLength:"number",lockTime:"number",theme:"string",OPACITY:"object",FONT_SIZE:"object",MARGIN:"object",SPEED:"object",COLOR:"array"}}static get cssText(){return'\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 '}get isRotate(){var t,e;return null==(e=null==(t=this.art.plugins)?void 0:t.autoOrientation)?void 0:e.state}get marginTop(){const{clamp:t}=this.utils,e=this.option.margin[0],{clientHeight:i}=this.$player;if("number"===typeof e)return t(e,0,i);if("string"===typeof e&&e.endsWith("%")){return t(i*(Number.parseFloat(e)/100),0,i)}return O.option.margin[0]}get marginBottom(){const{clamp:t}=this.utils,e=this.option.margin[1],{clientHeight:i}=this.$player;if("number"===typeof e)return t(e,0,i);if("string"===typeof e&&e.endsWith("%")){return t(i*(Number.parseFloat(e)/100),0,i)}return O.option.margin[1]}get fontSize(){const{clamp:t}=this.utils,{clientHeight:e}=this.$player,i=this.option.fontSize;if("number"===typeof i)return Math.round(t(i,12,e));if("string"===typeof i&&i.endsWith("%")){const n=Number.parseFloat(i)/100;return Math.round(t(e*n,12,e))}return O.option.fontSize}get $ref(){return this.renderer.acquire()}get readys(){return function(t){const{currentTime:e}=t.art,i=[];return b(t,"ready",t=>i.push(t)),b(t,"wait",t=>{e+.1>=t.time&&t.time>=e-.1&&i.push(t)}),i}(this)}get visibles(){return this.renderer.visibles}get speed(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}load(t){return h(this,null,function*(){const{errorHandle:e}=this.utils,i=function(t,e){const i=w(t);if(e)for(const d of[...i.tasks])d.replace&&d.cancel();let n,s=i.closed||t.art.isDestroy;const a=new Promise(t=>n=t),r=new Set,o="function"===typeof AbortController?new AbortController:void 0,l={replace:e,signal:null==o?void 0:o.signal,active:()=>!s&&!i.closed&&!t.art.isDestroy,onCancel:t=>l.active()?(r.add(t),()=>r.delete(t)):(t(),()=>{}),cancel(){if(!s){s=!0,n(v),null==o||o.abort();for(const t of[...r])t();r.clear()}},wait:t=>Promise.race([t,a]),emit(e){i.emitting.push(l);try{return t.emit(e)}finally{i.emitting.pop()}},finish(){i.tasks.delete(l),r.clear()}};return s?n(v):i.tasks.add(l),l}(this,void 0===t);try{if(!i.active())return this;const n=function(t,e){return"function"===typeof t?{asynchronous:!0,value:t()}:c(t)?{asynchronous:!0,value:t}:"string"===typeof t?{asynchronous:!0,value:g(t,e)}:{asynchronous:!1,value:Array.isArray(t)?t:[]}}(t||this.option.danmuku,i),s=n.asynchronous?yield i.wait(n.value):n.value;if(!i.active())return this;e(Array.isArray(s),"Danmuku need return an array as result");const a=s;if(void 0===t){if(this.reset(),!i.active())return this;this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.renderer.clear()}for(let t=0;t{const e=s[t],i=a[t];return"function"===typeof e||"function"===typeof i||c(e)||c(i)?e!==i:JSON.stringify(e)!==JSON.stringify(i)}))&&!e)return this;const r=function(t,e,{defaults:i,validate:n,clamp:s,mount:a}){const r=Object.assign({},i,t,e);return n(r),r.mode=s(r.mode,0,2),r.speed=s(r.speed,1,10),r.opacity=s(r.opacity,0,1),r.lockTime=s(r.lockTime,1,60),r.maxLength=s(r.maxLength,1,1e3),r.mount=r.mount||a,r}(this.option,t,{defaults:O.option,validate:t=>this.validator(t,O.scheme),clamp:i,mount:n});if(!k(this))return this;const o=this.option.beforeVisible!==r.beforeVisible;return this.option=r,o&&(this.scheduler.invalidate(),this.scheduler.schedule()),t.fontSize&&(this.reset(),!k(this))||(this.option.visible?this.show():this.hide(),k(this)&&this.art.emit("artplayerPluginDanmuku:config",this.option)),this}getLeft(t){return this.renderer.left(t)}postMessage(t={}){return this.workerClient.request(t)}createWorker(){this.workerClient=new D(()=>new L,t=>this.scheduler.fail(t)),this.worker=this.workerClient.worker}filter(t,e){return b(this,t,e)}setState(t,e){!function(t,e,i){t.states[e.$state]=t.states[e.$state].filter(t=>t!==e),e.$state=i,e.$ref&&(e.$ref.dataset.state=i),t.states[i].push(e)}(this,t,e)}makeWait(t){this.renderer.makeWait(t)}update(){return this.scheduler.running=!0,this.scheduler.schedule(),this}resize(){this.renderer.resize()}continue(){return this.renderer.continue(),this}suspend(){return this.renderer.suspend(),this}stop(){return this.isStop=!0,this.scheduler.running=!1,this.scheduler.invalidate(),this.suspend(),this.art.emit("artplayerPluginDanmuku:stop"),this}start(){if(this.scheduler.closed||this.art.isDestroy)return this;const t=++this.scheduler.starts,e=this.scheduler.generation;this.isStop=!1,this.scheduler.recover();return this.scheduler.closed||this.art.isDestroy||this.isStop||this.scheduler.fault||e!==this.scheduler.generation||t!==this.scheduler.starts||(this.continue(),this.update(),this.art.emit("artplayerPluginDanmuku:start")),this}reset(){return this.scheduler.invalidate(),this.queue.forEach(t=>this.makeWait(t)),this.art.emit("artplayerPluginDanmuku:reset"),this.scheduler.recover(),this.scheduler.schedule(),this}seek(){this.scheduler.invalidate(),this.scheduler.schedule()}show(){return this.isHide=!1,this.$danmuku.style.opacity=1,this.option.visible=!0,this.art.emit("artplayerPluginDanmuku:show"),this}hide(){return this.isHide=!0,this.scheduler.invalidate(),this.$danmuku.style.opacity=0,this.option.visible=!1,this.art.emit("artplayerPluginDanmuku:hide"),this.scheduler.schedule(),this}destroy(){var t;x(this),this.scheduler.destroy();try{try{this.stop()}finally{null==(t=this.workerClient)||t.dispose()}}finally{this.renderer.destroy(),this.art.off("video:play",this.start),this.art.off("video:playing",this.start),this.art.off("video:pause",this.stop),this.art.off("video:waiting",this.stop),this.art.off("resize",this.resize),this.art.off("video:seeking",this.seek),this.art.off("destroy",this.destroy),this.art.emit("artplayerPluginDanmuku:destroy")}}}const A=4294967295;function H(t,e){let i=0,n=t.length;for(;iNumber.isFinite(t)&&t>0))return null;const o={xMin:0,xMax:t,yMin:0,yMax:128,scale:.25,opacity:.2,minHeight:Math.floor(.05*e),sampling:Math.max(1,Math.floor(t/100)),smoothing:.2,flattening:.2},l=Object.assign({},"object"===typeof s?s:{}),d=Object.assign({},o,l);for(const r of Object.keys(o))Number.isFinite(d[r])||(d[r]=o[r]);if(d.sampling<=0&&(d.sampling=o.sampling),d.xMin===d.xMax||d.yMin===d.yMax)return null;const h=Array.isArray(a)&&a.length>0,c=h?[...a]:function(t,e,i,n){if(!Number.isFinite(e)||e<=0||!Number.isFinite(i)||i<=0||!Number.isFinite(n)||n<=0||Math.floor(e/n)+1>A)return[];const s=t.map(t=>t.time).filter(t=>"number"===typeof t&&!Number.isNaN(t)).sort((t,e)=>t-e),a=[],r=i/e;if(!Number.isFinite(r))return[];for(let o=0;o<=e;o+=n){if(a.length>=A||o+n===o)return[];const t=o*r,e=(o+n)*r;a.push([o,H(s,e)-H(s,t)])}return a}(n,t,i,d.sampling);if(!c.length||!c.every(t=>Array.isArray(t)&&Number.isFinite(t[0])&&Number.isFinite(t[1])))return null;const p=c[c.length-1];if(p[0]!==t){if(c.length===A)return null;c.push([t,p[1]])}let u=1/0,m=-1/0;for(const r of c)u=Math.min(u,r[1]),m=Math.max(m,r[1]);const f=(u+m)/2;for(const r of c){const t=r[1];r[1]=t*(t>f?1+d.scale:1-d.scale)+d.minHeight}const g=!h&&!Number.isFinite(l.yMin)&&!Number.isFinite(l.yMax);let y=0;for(const r of c)y=Math.max(y,r[1]);const v=g&&y>o.yMax/4;v&&(d.yMax=4*y);const w=t=>v?Math.min(e,Math.max(.75*e,t)):t,k=(t,e,i,n)=>{const s=function(t,e){const i=e[0]-t[0],n=e[1]-t[1];return{length:Math.sqrt(r(i,2)+r(n,2)),angle:Math.atan2(n,i)}}(e||t,i||t),a=N(Math.cos(s.angle)*d.flattening,0,1,1,0),o=s.angle*a+(n?Math.PI:0),l=s.length*d.smoothing;return[t[0]+Math.cos(o)*l,w(t[1]+Math.sin(o)*l)]},x=c.map(i=>[N(i[0],d.xMin,d.xMax,0,t),w(N(i[1],d.yMin,d.yMax,e,0))]);if(!x.every(t=>t.every(Number.isFinite)))return null;const b=x.map((t,i,n)=>{if(0===i)return`M ${n[n.length-1][0]},${e} L ${t[0]},${e} L ${t[0]},${t[1]}`;const s=k(n[i-1],n[i-2],t),a=k(t,n[i-1],n[i+1],!0);return`C ${s[0]},${s[1]} ${a[0]},${a[1]} ${t[0]},${t[1]}${i===n.length-1?" z":""}`}).join(" ");return/NaN|Infinity/u.test(b)?null:{path:b,opacity:d.opacity,width:t,height:e}}let j=0;function q(t,e,i){if(t.isDestroy)return;const{query:n}=t.constructor.utils;let s;const a=[];let r,o,l,d=!1;const h=()=>!d&&!t.isDestroy;function c(e,i){const n=i;a.push([e,n]),t.on(e,n)}function p(e){if(d)return;let i;d=!0,o=null,l=null;let n=!1;const s=t=>{try{t()}catch(e){n||(i=e),n=!0}};for(const[r,o]of a.splice(0))s(()=>t.off(r,o));if(e&&r&&t.controls.heatmap===r&&s(()=>t.controls.remove("heatmap")),r=void 0,n)throw i}function u(t){h()&&o&&l&&(o.setAttribute("offset",100*t+"%"),l.setAttribute("offset",100*t+"%"))}function m(a){try{!function(a=[]){if(!h())return;o=null,l=null;const d=r;if(d.innerHTML="",t.option.isLive)return;const c=V({width:d.offsetWidth,height:d.offsetHeight,duration:t.duration,queue:e.queue,option:i,points:a});if(!c||!h())return;const p=d.ownerDocument;for(s||(s=p?"heatmap-solids":"heatmap-solids-"+ ++j);null==p?void 0:p.getElementById(s);)s="heatmap-solids-"+ ++j;d.innerHTML=`\n \n \n \n \n \n \n \n \n \n \n \n `,o=n("#heatmap-start",d),l=n("#heatmap-stop",d),u(t.played)}(a)}catch(d){try{p(!0)}catch(c){}throw d}}c("destroy",()=>p(!0));try{t.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},beforeUnmount(){p(!1)},mounted(e){if(r=e,d)return t.controls.heatmap===e&&t.controls.remove("heatmap"),void(r=void 0);h()?(c("video:timeupdate",()=>u(t.played)),c("setBar",(t,e)=>{"played"===t&&u(e)}),c("ready",()=>m()),c("resize",()=>m()),c("artplayerPluginDanmuku:loaded",()=>m()),c("artplayerPluginDanmuku:points",t=>m(t))):p(!0)}})}catch(f){try{p(!0)}catch(g){}throw f}return()=>p(!0)}const I=new WeakMap;class B{constructor(t){this.art=t,this.closed=!1,this.disposers=new Set,this.cancelled=new Promise(t=>this.cancel=t)}get active(){return!this.closed&&!this.art.isDestroy}own(t){this.closed?t():this.disposers.add(t)}write(t,e,i,n=i=>t[e]=i){const s=t;if(!this.active)return;const a=()=>"function"===typeof s.getPropertyPriority?s.getPropertyPriority(e):void 0;let r=I.get(s);r||(r=new Map,I.set(s,r));let o=r.get(e);o||(o={original:s[e],present:e in s||void 0!==s[e],priority:a(),owners:new Map,apply:n},r.set(e,o)),o.owners.has(this)||this.own(()=>{const t=[...o.owners.keys()],i=t[t.length-1]===this;if(o.owners.delete(this),i&&s[e]===o.last&&a()===o.lastPriority){const t=[...o.owners.values()];t.length?(o.apply(t[t.length-1]),o.last=s[e],o.lastPriority=a()):void 0!==o.priority?s.setProperty(e,o.original,o.priority):o.present?o.apply(o.original):delete s[e]}o.owners.size||(r.delete(e),r.size||I.delete(s))}),o.owners.delete(this),o.owners.set(this,i),o.apply(i),o.last=s[e],o.lastPriority=a()}on(t,e){if(!this.active)return;const i=this;function n(...t){if(i.active)return e.apply(this,t)}const s=()=>this.art.off(t,n);this.own(s);try{this.art.on(t,n),this.active||s()}catch(a){throw this.release(s),a}}proxy(t,e,i){if(!this.active)return;const n=this;function s(...t){if(n.active)return i.apply(this,t)}let a;const r=()=>{var i,n;if("function"===typeof a){const t=this.art.events;"function"===typeof(null==t?void 0:t.remove)&&(null==(i=t.destroyEvents)?void 0:i.has(a))?t.remove(a):a()}else null==(n=t.removeEventListener)||n.call(t,e,s)};this.own(r);try{a=this.art.proxy(t,e,s),this.active||r()}catch(o){throw this.release(r),o}}wait(t){return Promise.race([t,this.cancelled])}release(t){try{t()}catch(e){console.warn("Failed to dispose danmuku setting resource:",e)}}close(){if(!this.closed){this.closed=!0,this.cancel();for(const t of this.disposers)this.release(t);this.disposers.clear()}}}function R({min:t,max:e,container:i,findIndex:n,onChange:s,steps:a=[]}){const{lifecycle:r}=this;if(!r.active)return{reset(){}};const{query:o,clamp:l,setStyle:d}=this.utils;d(i,"touch-action","none"),i.innerHTML=`\n

\n
\n ${a.map(()=>'
').join("")}\n
\n
\n
\n
\n
\n ${a.map(t=>t.hide?"":`
${t.name}
`).join("")}\n
\n `;const h=o(".apd-slider-dot",i),c=o(".apd-slider-progress",i);let p=!1;function u(i){if(!r.active)return;if(void 0===i&&(i=n()),ie)return;const o=(i-t)/(e-t);h.style.left=100*o+"%",0===a.length&&(c.style.width=h.style.left),s(i)}function m(n){const{top:s,height:a,left:r,width:o}=i.getBoundingClientRect();if(this.art.isRotate){const i=l(n.clientY-s,0,a);u(Math.round(i/a*(e-t)+t))}else{const i=l(n.clientX-r,0,o);u(Math.round(i/o*(e-t)+t))}}return r.own(()=>p=!1),r.proxy(i,"click",t=>{m.call(this,t)}),r.proxy(i,"pointerdown",t=>{p=0===t.button}),r.on("document:pointermove",t=>{p&&m.call(this,t)}),r.on("document:pointerup",t=>{p&&(p=!1,m.call(this,t))}),{reset:u}}const Z='',W='',_='',U='',G='',X='',Y='',J='',K='',Q='',tt='',et='';function it(){const{option:t}=this;return`\n
\n ${tt}${Q}\n
\n
\n ${_}\n
\n
\n
\n \u6309\u7c7b\u578b\u5c4f\u853d\n
\n
\n ${U}${G}\n
\u6eda\u52a8
\n
\n
\n ${X}${Y}\n
\u9876\u90e8
\n
\n
\n ${J}${K}\n
\u5e95\u90e8
\n
\n
\n
\n
\n
\n ${W}${Z}\n \u9632\u6b62\u5f39\u5e55\u91cd\u53e0\n
\n
\n ${W}${Z}\n \u540c\u6b65\u89c6\u9891\u901f\u5ea6\n
\n
\n
\n \u4e0d\u900f\u660e\u5ea6\n
\n
\u672a\u77e5
\n
\n
\n \u663e\u793a\u533a\u57df\n
\n
\u672a\u77e5
\n
\n
\n \u5f39\u5e55\u5b57\u53f7\n
\n
\u672a\u77e5
\n
\n
\n \u5f39\u5e55\u901f\u5ea6\n
\n
\u672a\u77e5
\n
\n
\n
\n
\n
\n
\n ${et}\n
\n
\n
\n \u6a21\u5f0f\n
\n
\n ${G}\n
\u6eda\u52a8
\n
\n
\n ${Y}\n
\u9876\u90e8
\n
\n
\n ${K}\n
\u5e95\u90e8
\n
\n
\n
\n
\n \u989c\u8272\n
\n ${this.COLOR.map(t=>`
`).join("")}\n
\n
\n
\n
\n
\n \n
\u53d1\u9001
\n
\n `}if("undefined"!==typeof document){const t="artplayer-plugin-danmuku",e=Symbol.for("artplayer-plugin-danmuku.pending-style"),i=document;let n=document.getElementById(t)||i[e];if(!n)if(n=document.createElement("style"),n.id=t,"loading"===document.readyState){i[e]=n;const s=()=>{document.removeEventListener("DOMContentLoaded",s),i[e]===n&&delete i[e];const a=document.getElementById(t);a?a.textContent=n.textContent:(document.head||document.documentElement).appendChild(n)};document.addEventListener("DOMContentLoaded",s,{once:!0})}else(document.head||document.documentElement).appendChild(n);n.textContent='.artplayer-plugin-danmuku{display:flex;position:relative;z-index:99;align-items:center;justify-content:center;font-size:12px;height:32px;width:100%;color:#fff;font-weight:300;flex-shrink:0;gap:10px}.artplayer-plugin-danmuku .apd-icon{cursor:pointer;opacity:.75;transition:all .2s ease;fill:#fff}.artplayer-plugin-danmuku .apd-icon:hover{opacity:1}.artplayer-plugin-danmuku .apd-config{display:flex;position:relative}.artplayer-plugin-danmuku .apd-config .apd-config-panel{position:absolute;bottom:24px;left:0;width:320px;padding:10px;opacity:0;pointer-events:none}.artplayer-plugin-danmuku .apd-config .apd-config-panel .apd-config-panel-inner{width:100%;border-radius:3px;background-color:#000000d9;padding:10px}.artplayer-plugin-danmuku .apd-config:hover .apd-config-panel{opacity:100;pointer-events:all}.artplayer-plugin-danmuku .apd-config-mode,.artplayer-plugin-danmuku .apd-config-slider,.artplayer-plugin-danmuku .apd-config-other,.artplayer-plugin-danmuku .apd-style-mode{margin-bottom:15px}.artplayer-plugin-danmuku .apd-modes{display:flex;align-items:center;margin-top:5px;gap:20px}.artplayer-plugin-danmuku .apd-modes .apd-mode{cursor:pointer;text-align:center}.artplayer-plugin-danmuku .apd-modes .apd-mode:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-config-slider{display:flex;align-items:center;gap:12px}.artplayer-plugin-danmuku .apd-config-slider .apd-value{width:32px;text-align:right}.artplayer-plugin-danmuku .apd-slider{position:relative;flex:1;display:flex;height:20px;align-items:center;justify-content:center;cursor:pointer}.artplayer-plugin-danmuku .apd-slider .apd-slider-line{position:relative;height:2px;width:100%;overflow:hidden;border-radius:3px;background-color:#ffffff40}.artplayer-plugin-danmuku .apd-slider .apd-slider-points{position:absolute;inset:0;display:flex;align-items:center;justify-content:space-between}.artplayer-plugin-danmuku .apd-slider .apd-slider-points .apd-slider-point{width:2px;height:2px;border-radius:50%;background-color:#ffffff80}.artplayer-plugin-danmuku .apd-slider .apd-slider-progress{width:0%;height:100%;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-slider .apd-slider-dot{position:absolute;transform:translate(-6px);left:0%;width:12px;height:12px;border-radius:50%;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps{display:flex;align-items:center;justify-content:space-between;position:absolute;bottom:-12px;width:calc(100% + 32px);color:#777}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps .apd-slider-step{flex-shrink:0;width:36px;text-align:center;scale:.95}.artplayer-plugin-danmuku .apd-config-other{display:flex;align-items:center;gap:20px}.artplayer-plugin-danmuku .apd-config-other .apd-check-off,.artplayer-plugin-danmuku .apd-config-other .apd-check-on{width:16px;height:16px}.artplayer-plugin-danmuku .apd-config-other .apd-other{display:flex;align-items:center;cursor:pointer;gap:2px}.artplayer-plugin-danmuku .apd-config-other .apd-other:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-emitter{display:flex;flex:1;align-items:center;height:100%;background-color:#ffffff40;border-radius:5px}.artplayer-plugin-danmuku .apd-style{position:relative;display:flex;align-items:center;justify-content:center}.artplayer-plugin-danmuku .apd-style .apd-style-panel{position:absolute;bottom:24px;left:0;width:200px;padding:10px;opacity:0;pointer-events:none}.artplayer-plugin-danmuku .apd-style .apd-style-panel .apd-style-panel-inner{width:100%;border-radius:3px;background-color:#000000d9;padding:10px}.artplayer-plugin-danmuku .apd-style:hover .apd-style-panel{opacity:100;pointer-events:all}.artplayer-plugin-danmuku .apd-colors{display:flex;flex-wrap:wrap;margin-top:5px;gap:8px}.artplayer-plugin-danmuku .apd-colors .apd-color{width:16px;height:16px;border-radius:2px;cursor:pointer}.artplayer-plugin-danmuku .apd-colors .apd-color.apd-active{border:1px solid black;box-shadow:0 0 0 1px #fff}.artplayer-plugin-danmuku .apd-input{outline:none;height:100%;flex:1;min-width:0;width:auto;border:none;line-height:1;color:#fff;background-color:transparent}.artplayer-plugin-danmuku .apd-input::placeholder{color:#ffffff80}.artplayer-plugin-danmuku .apd-send{display:flex;align-items:center;justify-content:center;height:100%;width:60px;flex-shrink:0;cursor:pointer;text-shadow:none;border-top-right-radius:5px;border-bottom-right-radius:5px;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-send.apd-lock{cursor:not-allowed;color:#666;background-color:#e7e7e7}.art-controls-center .apd-emitter{width:260px;flex:none}.art-fullscreen .artplayer-plugin-danmuku,.art-fullscreen-web .artplayer-plugin-danmuku{height:38px;gap:16px}.art-fullscreen .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen-web .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-on,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-on{width:28px;height:28px}.art-fullscreen .artplayer-plugin-danmuku .apd-emitter,.art-fullscreen-web .artplayer-plugin-danmuku .apd-emitter{width:400px;flex:none}.art-video-player>.artplayer-plugin-danmuku{position:absolute;left:0;right:0;bottom:-40px;padding:0 10px}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[data-danmuku-emitter=false] .apd-emitter{display:none!important}[data-danmuku-emitter=false] .art-controls-center .artplayer-plugin-danmuku{justify-content:flex-end;gap:18px}[data-danmuku-emitter=false].art-fullscreen .art-controls-center .artplayer-plugin-danmuku,[data-danmuku-emitter=false].art-fullscreen-web .art-controls-center .artplayer-plugin-danmuku{gap:24px}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-icon{fill:#333}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-emitter{background-color:#f1f2f3}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input{color:#000}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:#0000004d}[data-danmuku-visible=false] .apd-toggle-off{display:block}[data-danmuku-visible=false] .apd-toggle-on,[data-danmuku-visible=true] .apd-toggle-off{display:none}[data-danmuku-visible=true] .apd-toggle-on{display:block}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-on{display:none}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-off,[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-on{display:block}[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-off,[data-danmuku-sync-video=false] .apd-sync-video .apd-check-on{display:none}[data-danmuku-sync-video=false] .apd-sync-video .apd-check-off,[data-danmuku-sync-video=true] .apd-sync-video .apd-check-on{display:block}[data-danmuku-sync-video=true] .apd-sync-video .apd-check-off{display:none}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-off{display:block}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-on{display:none}[data-danmuku-mode0=false] .art-danmuku [data-mode="0"]{opacity:0!important}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-off{display:none}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-on{display:block}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"]{color:#00a1d6}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"] path{fill:#00a1d6}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-off{display:block}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-on{display:none}[data-danmuku-mode1=false] .art-danmuku [data-mode="1"]{opacity:0!important}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-off{display:none}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-on{display:block}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"]{color:#00a1d6}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"] path{fill:#00a1d6}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-off{display:block}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-on{display:none}[data-danmuku-mode2=false] .art-danmuku [data-mode="2"]{opacity:0!important}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-off{display:none}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-on{display:block}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"]{color:#00a1d6}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"] path{fill:#00a1d6}'}class nt{constructor(t,e){this.art=t,this.danmuku=e,this.utils=t.constructor.utils;const{setStyle:i}=this.utils,{$controlsCenter:n}=t.template;this.template={$controlsCenter:n,$mount:n,$danmuku:null,$toggle:null,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel:null,$styleModes:null,$colors:null,$opacitySlider:null,$opacityValue:null,$marginSlider:null,$marginValue:null,$fontSizeSlider:null,$fontSizeValue:null,$speedSlider:null,$speedValue:null,$input:null,$send:null},this.slider={opacity:null,margin:null,fontSize:null,speed:null},this.emitting=!1,this.isLock=!1,this.timer=null,this.lifecycle=new B(t),this.destroy=this.destroy.bind(this),this.lifecycle.own(()=>t.off("destroy",this.destroy));try{if(t.on("destroy",this.destroy),!this.lifecycle.active)return;if(this.lifecycle.write(n.style,"display","flex",t=>i(n,"display",t)),this.createTemplate(),!this.lifecycle.active)return;if(this.createSliders(),!this.lifecycle.active)return;if(this.createEvents(),this.mount(this.option.mount),!this.lifecycle.active)return;this.lifecycle.on("resize",()=>this.resize()),this.lifecycle.on("fullscreen",t=>this.onFullscreen(t)),this.lifecycle.on("fullscreenWeb",t=>this.onFullscreen(t)),this.lifecycle.proxy(this.template.$config,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$config,$panel:this.template.$configPanel})}),this.lifecycle.proxy(this.template.$style,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$style,$panel:this.template.$stylePanel})})}catch(s){try{this.destroy()}catch(a){console.warn("Failed to roll back danmuku setting:",a)}throw s}}static get icons(){return{$on:tt,$off:Q,$config:_,$style:et,$mode_0_off:U,$mode_0_on:G,$mode_1_off:X,$mode_1_on:Y,$mode_2_off:J,$mode_2_on:K,$check_on:W,$check_off:Z}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){return it.call(this)}get OPACITY(){return l({min:0,max:100,steps:[]},this.option.OPACITY)}get FONT_SIZE(){return l({min:12,max:120,steps:[]},this.option.FONT_SIZE)}get MARGIN(){return l({min:0,max:3,steps:[{name:"1/4",value:[10,"75%"]},{name:"\u534a\u5c4f",value:[10,"50%"]},{name:"3/4",value:[10,"25%"]},{name:"\u6ee1\u5c4f",value:[10,10]}]},this.option.MARGIN)}get SPEED(){return l({min:0,max:4,steps:[{name:"\u6781\u6162",value:10},{name:"\u8f83\u6162",value:7.5,hide:!0},{name:"\u9002\u4e2d",value:5},{name:"\u8f83\u5feb",value:2.5,hide:!0},{name:"\u6781\u5feb",value:1}]},this.option.SPEED)}get COLOR(){return this.option.COLOR.length?this.option.COLOR:["#FE0302","#FF7204","#FFAA02","#FFD302","#FFFF00","#A0EE00","#00CD00","#019899","#4266BE","#89D5FF","#CC0273","#222222","#9B9B9B","#FFFFFF"]}query(t){const{query:e}=this.utils,{$danmuku:i}=this.template;return e(t,i)}append(t,e){if(!this.lifecycle.active)return;const{append:i}=this.utils;[...t.children].includes(e)||i(t,e)}setData(t,e){if(!this.lifecycle.active)return;const{$player:i}=this.art.template,{$mount:n}=this.template;this.lifecycle.write(i.dataset,t,e),this.outside&&this.lifecycle.write(n.dataset,t,e)}createTemplate(){const{createElement:t,tooltip:e}=this.utils,i=t("div");this.template.$danmuku=i,i.className="artplayer-plugin-danmuku",i.innerHTML=this.TEMPLATE,this.template.$toggle=this.query(".apd-toggle"),this.template.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),this.template.$styleModes=this.query(".apd-style-mode .apd-modes"),this.template.$colors=this.query(".apd-colors"),this.template.$antiOverlap=this.query(".apd-anti-overlap"),this.template.$syncVideo=this.query(".apd-sync-video"),this.template.$opacitySlider=this.query(".apd-config-opacity .apd-slider"),this.template.$opacityValue=this.query(".apd-config-opacity .apd-value"),this.template.$marginSlider=this.query(".apd-config-margin .apd-slider"),this.template.$marginValue=this.query(".apd-config-margin .apd-value"),this.template.$fontSizeSlider=this.query(".apd-config-fontSize .apd-slider"),this.template.$fontSizeValue=this.query(".apd-config-fontSize .apd-value"),this.template.$speedSlider=this.query(".apd-config-speed .apd-slider"),this.template.$speedValue=this.query(".apd-config-speed .apd-value"),this.template.$input=this.query(".apd-input"),this.template.$send=this.query(".apd-send");const{$toggle:n}=this.template;this.lifecycle.on("artplayerPluginDanmuku:show",()=>{e(n,"\u5173\u95ed\u5f39\u5e55")}),this.lifecycle.on("artplayerPluginDanmuku:hide",()=>{e(n,"\u6253\u5f00\u5f39\u5e55")})}createEvents(){const{$toggle:t,$configModes:e,$styleModes:i,$colors:n,$antiOverlap:s,$syncVideo:a,$send:r,$input:o}=this.template;this.lifecycle.proxy(t,"click",()=>{this.danmuku.config({visible:!this.option.visible}),this.reset()}),this.lifecycle.proxy(e,"click",t=>{const e=t.target.closest(".apd-mode");if(!e)return;const i=Number(e.dataset.mode);this.option.modes.includes(i)?this.danmuku.config({modes:this.option.modes.filter(t=>t!==i)}):this.danmuku.config({modes:[...this.option.modes,i]}),this.reset()}),this.lifecycle.proxy(s,"click",()=>{this.danmuku.config({antiOverlap:!this.option.antiOverlap}),this.reset()}),this.lifecycle.proxy(a,"click",()=>{this.danmuku.config({synchronousPlayback:!this.option.synchronousPlayback}),this.reset()}),this.lifecycle.proxy(i,"click",t=>{const e=t.target.closest(".apd-mode");if(!e)return;const i=Number(e.dataset.mode);this.danmuku.config({mode:i}),this.reset()}),this.lifecycle.proxy(n,"click",t=>{const e=t.target.closest(".apd-color");e&&(this.danmuku.config({color:e.dataset.color}),this.reset())}),this.lifecycle.proxy(r,"click",()=>this.emit()),this.lifecycle.proxy(o,"keypress",t=>{"Enter"===t.key&&(t.preventDefault(),this.emit())})}createSliders(){this.slider.opacity=this.createSlider(d(l({},this.OPACITY),{container:this.template.$opacitySlider,findIndex:()=>Math.round(100*this.option.opacity),onChange:t=>{const{$opacityValue:e}=this.template;e.textContent=`${t}%`,this.danmuku.config({opacity:t/100})}})),this.slider.margin=this.createSlider(d(l({},this.MARGIN),{container:this.template.$marginSlider,findIndex:()=>this.MARGIN.steps.findIndex(t=>t.value[0]===this.option.margin[0]&&t.value[1]===this.option.margin[1]),onChange:t=>{const e=this.MARGIN.steps[t];if(!e)return;const{$marginValue:i}=this.template;i.textContent=e.name,this.danmuku.config({margin:e.value})}})),this.slider.fontSize=this.createSlider(d(l({},this.FONT_SIZE),{container:this.template.$fontSizeSlider,findIndex:()=>this.danmuku.fontSize,onChange:t=>{const{$fontSizeValue:e}=this.template;e.textContent=`${t}px`,t!==this.danmuku.fontSize&&this.danmuku.config({fontSize:t})}})),this.slider.speed=this.createSlider(d(l({},this.SPEED),{container:this.template.$speedSlider,findIndex:()=>this.SPEED.steps.findIndex(t=>t.value===this.option.speed),onChange:t=>{const e=this.SPEED.steps[t];if(!e)return;const{$speedValue:i}=this.template;i.textContent=e.name,this.danmuku.config({speed:e.value})}}))}createSlider(t){return R.call(this,t)}onFullscreen(t){if(!this.lifecycle.active)return;const{$danmuku:e,$controlsCenter:i,$mount:n}=this.template;this.outside?t?this.append(i,e):this.append(n,e):this.append(i,e)}onMouseEnter({$control:t,$panel:e}){if(!this.lifecycle.active)return;const{$player:i}=this.art.template,n=t.getBoundingClientRect(),s=e.getBoundingClientRect(),a=i.getBoundingClientRect(),r=s.width/2-n.width/2,o=a.left-(n.left-r),l=n.right+r-a.right;e.style.left=o>0?`${-r+o}px`:l>0?-r-l+"px":-r+"px"}emit(){return function(t){return h(this,null,function*(){const{lifecycle:e,template:{$input:i}}=t;if(!e.active)return;const n=i.value.trim();if(!n.length||t.isLock||t.emitting)return;const s={text:n,mode:t.option.mode,color:t.option.color,time:t.art.currentTime},a=t=>{e.active&&console.error("Error emitting danmuku:",t)};try{t.emitting=!0;const n=yield e.wait(t.option.beforeEmit(s));if(!e.active)return;if(t.emitting=!1,!0!==n)return;if(s.border=!0,delete s.time,Promise.resolve(t.danmuku.emit(s)).catch(a),!e.active)return;i.value="",t.lock()}catch(r){a(r),e.active&&(t.emitting=!1)}})}(this)}lock(){!function(t){if(!t.lifecycle.active)return;const{addClass:e}=t.utils,{$send:i}=t.template;clearTimeout(t.timer),t.isLock=!0;let n=t.option.lockTime;i.textContent=n,e(i,"apd-lock");const s=()=>{t.timer=setTimeout(()=>{t.lifecycle.active&&(0===n?t.unlock():(n-=1,i.textContent=n,s()))},1e3)};s()}(this)}unlock(){!function(t){if(clearTimeout(t.timer),t.timer=null,t.isLock=!1,!t.lifecycle.active)return;const{removeClass:e}=t.utils,{$send:i}=t.template;i.textContent="\u53d1\u9001",e(i,"apd-lock")}(this)}resize(){if(!this.lifecycle.active)return;if(this.outside)return;if(this.art.fullscreen)return;if(this.art.fullscreenWeb)return;const{$player:t,$controlsCenter:e}=this.art.template,{$danmuku:i}=this.template;this.art.widtht.dataset.color===this.option.color.toUpperCase());a&&t(a,"apd-active"),e(i,this.option.visible?"\u5173\u95ed\u5f39\u5e55":"\u6253\u5f00\u5f39\u5e55"),this.resize()}mount(t){if(!this.lifecycle.active)return;const{errorHandle:e}=this.utils,i="string"===typeof t?document.querySelector(t):t;e(i,`Can not find the mount point: ${t}`),this.append(i,this.template.$danmuku),this.template.$mount=i,this.reset()}destroy(){if(this.lifecycle.closed)return;this.lifecycle.close(),clearTimeout(this.timer),this.timer=null,this.emitting=!1,this.isLock=!1;const t=this.template.$danmuku;(null==t?void 0:t.parentElement)&&t.parentElement.removeChild(t)}}function st(t){return e=>{const i=new O(e,t);let n;try{n=e.isDestroy?void 0:new nt(e,i),!e.isDestroy&&i.option.heatmap&&q(e,i,i.option.heatmap)}catch(s){try{null==n||n.destroy()}catch(a){}try{i.destroy()}catch(a){}throw s}return{name:"artplayerPluginDanmuku",emit:i.emit.bind(i),load:i.load.bind(i),config:i.config.bind(i),hide:i.hide.bind(i),show:i.show.bind(i),reset:i.reset.bind(i),mount:n?n.mount.bind(n):()=>{},get option(){return i.option},get isHide(){return i.isHide},get isStop(){return i.isStop}}}}return st.icons=nt.icons,st}); +!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.artplayerPluginDanmuku=e(),define(function(){return t.artplayerPluginDanmuku})):(t="undefined"!==typeof globalThis?globalThis:t||self).artplayerPluginDanmuku=e()}(this,function(){"use strict";var t=Object.defineProperty,e=Object.defineProperties,i=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,s=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,r=Math.pow,o=(e,i,n)=>i in e?t(e,i,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[i]=n,l=(t,e)=>{for(var i in e||(e={}))s.call(e,i)&&o(t,i,e[i]);if(n)for(var i of n(e))a.call(e,i)&&o(t,i,e[i]);return t},d=(t,n)=>e(t,i(n)),h=(t,e,i)=>new Promise((n,s)=>{var a=t=>{try{o(i.next(t))}catch(e){s(e)}},r=t=>{try{o(i.throw(t))}catch(e){s(e)}},o=t=>t.done?n(t.value):Promise.resolve(t.value).then(a,r);o((i=i.apply(t,e)).next())});function c(t){return t instanceof Promise||"[object Promise]"===Object.prototype.toString.call(t)}function p(t){switch(t){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function u(t){if("string"!==typeof t)return[];const e=new RegExp(']*?p="(?

[^"]+)"[^>]*>(?.*?)<\\/d>',"gs"),i=t.matchAll(e);return Array.from(i).map(t=>{const e=t.groups.p.split(",");if(e.length>=8){return{text:t.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(e[0]),mode:p(Number(e[1])),fontSize:Number(e[2]),color:`#${Number(e[3]).toString(16)}`,timestamp:Number(e[4]),pool:Number(e[5]),userID:e[6],rowID:Number(e[7])}}return null}).filter(Boolean)}function m({data:t}){const{xml:e,id:i}=t,n=u(e);globalThis.postMessage({danmus:n,id:i})}let f=0;function g(t,{signal:e,onCancel:i}={}){return new Promise((n,s)=>{let a,r,o,l=!1;const d=++f,c=()=>y(void 0,function(t){if(void 0!==(null==t?void 0:t.reason))return t.reason;const e=new Error("Bilibili Danmu loading cancelled");return e.name="AbortError",e}(e));function g(){let t,e=!1;try{if(a){const t=a;a=void 0,t.onmessage=null,t.onerror=null,t.onmessageerror=null,t.terminate()}}catch(i){t=i,e=!0}if(void 0!==r){const n=r;r=void 0;try{URL.revokeObjectURL(n)}catch(i){e||(t=i),e=!0}}if(e)throw t}function y(t,i){if(l)return;l=!0;let a=arguments.length>1;null==e||e.removeEventListener("abort",c),null==o||o();try{g()}catch(r){a||(i=r),a=!0}a?s(i):n(t)}function v(t,e){if(!l){console.error("Error parsing Bilibili Danmu:",e);try{y(u(t))}catch(i){y(void 0,i)}}}(null==e?void 0:e.aborted)?c():(null==e||e.addEventListener("abort",c),o=null==i?void 0:i(c),l?null==o||o():function(){return h(this,null,function*(){const i=e?yield fetch(t,{signal:e}):yield fetch(t);if(l)return;const n=yield i.text();if(!l)try{const t=`\n ${p.toString()}\n ${u.toString()}\n onmessage = ${m.toString()}\n `;if(r=URL.createObjectURL(new Blob([t],{type:"application/javascript"})),l)return void g();if(a=new Worker(r),l)return void g();a.onmessage=t=>{var e;if(l||(null==(e=t.data)?void 0:e.id)!==d)return;const{danmus:i}=t.data;Array.isArray(i)?y(i):y(void 0,new Error("Invalid Bilibili Danmu worker response"))},a.onerror=t=>{var e;null==(e=t.preventDefault)||e.call(t),v(n,t.error||t)},a.onmessageerror=t=>v(n,t.error||t),a.postMessage({xml:n,id:d})}catch(s){v(n,s)}})}().catch(t=>y(void 0,t)))})}const y=new WeakMap,v=Symbol("cancelled danmuku input");function w(t){return y.has(t)||y.set(t,{closed:!1,tasks:new Set,emitting:[]}),y.get(t)}function k(t){const e=w(t),i=e.emitting[e.emitting.length-1];return!e.closed&&!t.art.isDestroy&&(!i||i.active())}function x(t){const e=w(t);e.closed=!0;for(const i of[...e.tasks])i.cancel()}function b(t,e,i){const n=t.states[e]||[];for(let s=0;s{const s=n.$ref.offsetTop,a=this.owner.getLeft(n.$ref)-i,r=n.$ref.clientHeight,o=n.$ref.clientWidth,l=a+o,d=e-l,h=l/n.$restTime,c={};c.top=s,c.left=a,c.height=r,c.width=o,c.right=d,c.speed=h,c.distance=l,c.time=n.$restTime,c.mode=n.mode,t.push(c)}),t}left(t){const e=t.getBoundingClientRect();return this.owner.isRotate?e.top:e.left}makeWait(t){this.owner.setState(t,"wait"),t.$ref&&(t.$ref.style.cssText=this.owner.constructor.cssText,t.$ref.style.visibility="hidden",t.$ref.style.marginLeft="0px",t.$ref.style.transform="translateX(0px)",t.$ref.style.transition="transform 0s linear 0s",this.owner.$refs.push(t.$ref),t.$ref=null)}resize(){const{clientWidth:t}=this.owner.$player;this.owner.filter("stop",e=>{if(0===e.mode)e.$ref.style.left=`${t}px`}),this.owner.filter("emit",e=>{switch(e.$lastStartTime=Date.now(),e.mode){case 0:{const i=t+e.$ref.clientWidth;e.$ref.style.left=`${t}px`,e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`;break}}})}continue(){const{clientWidth:t}=this.owner.$player;return this.owner.filter("stop",e=>{switch(this.owner.setState(e,"emit"),e.$lastStartTime=Date.now(),e.mode){case 0:{const i=t+e.$ref.clientWidth;e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`;break}}}),this}suspend(){const{clientWidth:t}=this.owner.$player;return this.owner.filter("emit",e=>{switch(this.owner.setState(e,"stop"),e.mode){case 0:{const i=t-(this.owner.getLeft(e.$ref)-this.owner.getLeft(this.owner.$player));e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition="transform 0s linear 0s";break}}}),this}prepare(t,e){const i=this.owner,n=i.$ref;return e.danmu=t,e.ref=n,t.$ref=n,n.textContent=t.text,i.$danmuku.appendChild(n),n.style.opacity=i.option.opacity,n.style.fontSize=`${i.fontSize}px`,n.style.color=t.color,n.style.border=t.border?`1px solid ${t.color}`:null,n.style.backgroundColor=t.border?"rgb(0 0 0 / 50%)":null,i.utils.setStyles(n,t.style),n}place(t,e,i,n,s){switch(e.style.top=`${i}px`,e.style.visibility="visible",e.dataset.mode=t.mode,e.dataset.id=t.id||"",t.mode){case 0:e.style.left=`${s}px`,e.style.marginLeft="0px",e.style.transform=`translateX(${-n}px)`,e.style.transition=`transform ${t.$restTime}s linear 0s`;break;case 1:case 2:e.style.left="50%",e.style.marginLeft=`-${e.clientWidth/2}px`}}release(t){const{danmu:e,ref:i}=t;i&&e.$ref===i&&(i.style.cssText=this.owner.constructor.cssText,i.style.visibility="hidden",this.owner.$refs.push(i),e.$ref=null),t.ref=null}clear(){this.destroy(),this.owner.$refs=[],this.owner.$danmuku.textContent=""}destroy(){for(const t of this.nodes)t.parentElement&&t.parentElement.removeChild(t);for(const t of this.owner.queue)t.$ref=null;this.owner.$refs.length=0,this.nodes.clear()}}function M({target:t,visibles:e,clientWidth:i,clientHeight:n,marginBottom:s,marginTop:a,antiOverlap:r}){const o=n-s,l=e.filter(e=>e.mode===t.mode&&e.top<=o).sort((t,e)=>t.top-e.top);if(0===l.length)return 2===t.mode?o-t.height:a;if(l.unshift({type:"top",top:0,left:0,right:0,height:a,width:i,speed:0,distance:i}),l.push({type:"bottom",top:o,left:0,right:0,height:s,width:i,speed:0,distance:i}),2===t.mode)for(let h=l.length-2;h>=0;h-=1){const e=l[h],i=l[h+1],n=e.top+e.height;if(i.top-n>=t.height)return i.top-t.height}else for(let h=1;h=t.height)return n}const d=[];for(let h=1;h{const i=Math.min(...e.map(t=>t.right)),n=Math.min(...t.map(t=>t.right));return i*e.length-n*t.length});break;case 1:case 2:d.sort((t,e)=>{const i=Math.max(...e.map(t=>t.width));return Math.max(...t.map(t=>t.width))*t.length-i*e.length})}return d[0][0].top}switch(t.mode){case 0:{const e=d.find(e=>e.every(e=>{if(ie.time}));return e&&e[0]?e[0].top:void 0}case 1:case 2:return}}class S{constructor(){this.rows=new Set,this.waiting=new Set,this.visibility=()=>this.clear()}begin(t){void 0===this.time&&this.capture(t,[],t.art.currentTime)}capture(t,e,i){var n,s;const a=t.$player.ownerDocument;if(a!==this.document&&(null==(n=this.document)||n.removeEventListener("visibilitychange",this.visibility),this.document=a,null==a||a.addEventListener("visibilitychange",this.visibility),this.clear()),!Number.isFinite(i)||"hidden"===(null==a?void 0:a.visibilityState)||(null==(s=t.art.video)?void 0:s.seeking))return this.clear(),e;const r=this.time,o=this.rows,l=this.waiting;if(this.time=i,this.rows=new Set(e),this.waiting=new Set(t.states.wait),void 0===r||i<=r)return e;const d=t.states.wait.filter(t=>l.has(t)&&!o.has(t)&&t.time>=r-.1&&t.time"ready"===t.$state),...d,...e.filter(t=>"ready"!==t.$state)]}clear(){this.time=void 0,this.rows.clear(),this.waiting.clear()}destroy(){var t;null==(t=this.document)||t.removeEventListener("visibilitychange",this.visibility),this.document=void 0,this.clear()}}class z{constructor(){this.pending=new Set,this.reserved=new Set}capture(t,e){for(const i of t)this.reserved.has(i)||e.has(i)||this.pending.add(i)}take(){const t=[],e=[];for(const n of this.pending)"ready"===n.$state?t.push(n):"wait"===n.$state&&e.push(n);this.pending.clear();const i=[...t,...e];return this.reserved=new Set(i),i}complete(){this.reserved.clear()}clear(){this.pending.clear(),this.reserved.clear()}}const E=Symbol("cancelled danmuku frame");class F{constructor(t){this.owner=t,this.generation=0,this.starts=0,this.frame=null,this.operation=null,this.closed=!1,this.running=!1,this.fault=!1,this.failedItems=new Set,this.buffer=new z,this.sampling=new S}active(t){const e=this.owner;return!this.closed&&!this.fault&&!e.art.isDestroy&&!e.isStop&&!e.isHide&&t.generation===this.generation}release(t){this.owner.renderer.release(t)}invalidate(){var t;if(this.generation++,null!==this.frame&&window.cancelAnimationFrame(this.frame),this.frame=null,this.owner.timer=null,this.operation){const t=this.operation;this.operation=null,t.cancel(),this.release(t)}null==(t=this.owner.workerClient)||t.cancel(),this.failedItems.clear(),this.buffer.clear(),this.sampling.clear()}report(t){try{this.owner.art.emit("artplayerPluginDanmuku:error",t)}catch(e){console.warn("Failed to report danmuku scheduling error:",e)}}fail(t){this.closed||this.fault||(this.fault=!0,this.invalidate(),this.report(t))}recover(){var t;if(!this.closed&&!this.owner.art.isDestroy&&(this.failedItems.clear(),this.fault))try{null==(t=this.owner.workerClient)||t.dispose(),this.owner.createWorker(),this.fault=!1}catch(e){this.report(e)}}schedule(){const t=this.owner;if(!(!this.running||this.closed||this.fault||t.art.isDestroy||t.isStop)){try{const e=t.art.video;(t.art.playing||!1===(null==e?void 0:e.paused)&&!e.ended&&e.readyState>2)&&!t.isHide&&this.sampling.begin(t)}catch(e){return void this.fail(e)}null===this.frame&&(this.frame=window.requestAnimationFrame(()=>{if(this.frame=null,t.timer=null,this.closed||this.fault||t.isStop||t.art.isDestroy)return;const i=this.generation;try{if(t.art.playing&&!t.isHide){t.filter("emit",e=>{const i=Date.now();e.$restTime-=(i-e.$lastStartTime)/1e3,e.$lastStartTime=i,e.$restTime<=0&&t.makeWait(e)});const e=t.art.currentTime,n=t.readys;if(i!==this.generation)return;this.buffer.capture(this.sampling.capture(t,n,e),this.failedItems)}}catch(e){return void(i===this.generation&&this.fail(e))}if(this.schedule(),this.operation||!t.art.playing||t.isHide)return;const n=this.buffer.take();if(!n.length)return;let s;const a=new Promise(t=>s=()=>t(E)),r={generation:this.generation,cancel:s,wait:t=>Promise.race([t,a]),ref:null};return this.operation=r,this.run(r,n).catch(t=>{this.active(r)&&this.fail(t)}).finally(()=>{this.release(r),this.operation===r&&(this.operation=null,this.buffer.complete())})}),t.timer=this.frame)}}run(t,e){return h(this,null,function*(){const i=this.owner;if(i.art.playing&&this.active(t))for(const s of e){if(!this.active(t))return;if(this.failedItems.has(s))continue;let e;try{e=yield t.wait(i.option.beforeVisible(s))}catch(n){if(!this.active(t))return;this.failedItems.add(s),this.report(n);continue}if(!this.active(t))return;if(!e)continue;const{clientWidth:a,clientHeight:r}=i.$player,o=i.renderer.prepare(s,t);if(!this.active(t))return;s.$lastStartTime=Date.now(),s.$restTime=i.speed;const l=a+o.clientWidth,d={type:"getDanmuTop",target:{mode:s.mode,height:o.clientHeight,speed:l/s.$restTime},visibles:i.visibles,antiOverlap:i.option.antiOverlap,clientWidth:a,clientHeight:r,marginBottom:i.marginBottom,marginTop:i.marginTop},h=d.antiOverlap?yield t.wait(i.postMessage(d)):{result:M(d)},c="symbol"===typeof h?void 0:h.result;if(!this.active(t)||s.$ref!==o)return;void 0!==c?(s.$lastStartTime=Date.now(),i.setState(s,"emit"),i.renderer.place(s,o,c,l,a),t.ref=null,i.art.emit("artplayerPluginDanmuku:visible",s)):(i.setState(s,"ready"),this.release(t))}})}destroy(){this.closed=!0,this.invalidate(),this.sampling.destroy()}}let C=0;class D{constructor(t,e){this.pending=new Map,this.closed=!1,this.failed=!1,this.onFailure=e,this.worker=t();try{this.worker.onmessage=t=>{var e;const i=this.pending.get(null==(e=t.data)?void 0:e.id);i&&(this.pending.delete(t.data.id),i.resolve(t.data))},this.worker.onerror=t=>{var e;null==(e=t.preventDefault)||e.call(t),this.fail(t.error||t)},this.worker.onmessageerror=t=>this.fail(t.error||t)}catch(i){try{this.dispose()}catch(n){}throw i}}request(t){t.id=++C;const{id:e}=t;return this.closed||this.failed?Promise.resolve({id:e,result:void 0}):new Promise((i,n)=>{this.pending.set(e,{resolve:i,reject:n});try{this.worker.postMessage(t)}catch(s){this.fail(s)}})}fail(t){if(!this.closed&&!this.failed){this.failed=!0;for(const e of this.pending.values())e.reject(t);this.pending.clear();try{this.dispose()}catch(e){}this.onFailure(t)}}cancel(){for(const[t,e]of this.pending)e.resolve({id:t,result:void 0});this.pending.clear()}dispose(){if(this.closed)return;this.closed=!0,this.cancel();let t,e=!1;const i=i=>{try{i()}catch(n){e||(t=n),e=!0}};for(const n of["onmessage","onerror","onmessageerror"])i(()=>this.worker[n]=null);if(i(()=>this.worker.terminate()),e)throw t}}const P='/*!\n * artplayer-plugin-danmuku.js v6.0.0\n * Github: https://github.com/zhw2590582/ArtPlayer\n * (c) 2017-2026 Harvey Zhao\n * Released under the MIT License.\n */\nfunction t({target:t,visibles:e,clientWidth:i,clientHeight:h,marginBottom:n,marginTop:o,antiOverlap:s}){const r=h-n,p=e.filter(e=>e.mode===t.mode&&e.top<=r).sort((t,e)=>t.top-e.top);if(0===p.length)return 2===t.mode?r-t.height:o;if(p.unshift({type:"top",top:0,left:0,right:0,height:o,width:i,speed:0,distance:i}),p.push({type:"bottom",top:r,left:0,right:0,height:n,width:i,speed:0,distance:i}),2===t.mode)for(let g=p.length-2;g>=0;g-=1){const e=p[g],i=p[g+1],h=e.top+e.height;if(i.top-h>=t.height)return i.top-t.height}else for(let g=1;g=t.height)return h}const a=[];for(let g=1;g{const i=Math.min(...e.map(t=>t.right)),h=Math.min(...t.map(t=>t.right));return i*e.length-h*t.length});break;case 1:case 2:a.sort((t,e)=>{const i=Math.max(...e.map(t=>t.width));return Math.max(...t.map(t=>t.width))*t.length-i*e.length})}return a[0][0].top}switch(t.mode){case 0:{const e=a.find(e=>e.every(e=>{if(ie.time}));return e&&e[0]?e[0].top:void 0}case 1:case 2:return}}onmessage=e=>{const{data:i}=e;if(!i.id||!i.type)return;const h=(0,{getDanmuTop:t}[i.type])(i);globalThis.postMessage({result:h,id:i.id})};\n',T="undefined"!==typeof self&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",P],{type:"text/javascript;charset=utf-8"});function L(t){let e;try{if(e=T&&(self.URL||self.webkitURL).createObjectURL(T),!e)throw"";const i=new Worker(e,{type:"module",name:null==t?void 0:t.name});return i.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(e)}),i}catch(i){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(P),{type:"module",name:null==t?void 0:t.name})}}class O{constructor(t,e){const{constructor:i,template:n}=t;this.utils=i.utils,this.validator=i.validator,this.$danmuku=n.$danmuku,this.$player=n.$player,this.art=t,this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.worker=null,this.workerClient=null,this.renderer=new $(this),this.scheduler=new F(this),this.option=O.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.reset=this.reset.bind(this),this.resize=this.resize.bind(this),this.destroy=this.destroy.bind(this),this.seek=this.seek.bind(this),k(this),t.on("destroy",this.destroy);try{if(this.config(e,!0),!k(this))return;this.createWorker()}catch(s){throw t.off("destroy",this.destroy),x(this),this.scheduler.destroy(),s}t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("resize",this.resize),t.on("video:seeking",this.seek),this.load().catch(t=>console.warn("Failed to load initial danmuku:",t))}static get option(){return{danmuku:[],speed:5,margin:[10,"25%"],opacity:1,color:"#FFFFFF",mode:0,modes:[0,1,2],fontSize:25,antiOverlap:!0,synchronousPlayback:!1,mount:void 0,heatmap:!1,width:512,points:[],filter:()=>!0,beforeEmit:()=>!0,beforeVisible:()=>!0,visible:!0,emitter:!0,maxLength:200,lockTime:5,theme:"dark",OPACITY:{},FONT_SIZE:{},MARGIN:{},SPEED:{},COLOR:[]}}static get scheme(){return{danmuku:"array|function|string|promise",speed:"number",margin:"array",opacity:"number",color:"string",mode:"number",modes:"array",fontSize:"number|string",antiOverlap:"boolean",synchronousPlayback:"boolean",mount:"?htmldivelement|string",heatmap:"object|boolean",width:"number",points:"array",filter:"function",beforeEmit:"function",beforeVisible:"function",visible:"boolean",emitter:"boolean",maxLength:"number",lockTime:"number",theme:"string",OPACITY:"object",FONT_SIZE:"object",MARGIN:"object",SPEED:"object",COLOR:"array"}}static get cssText(){return'\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 '}get isRotate(){var t,e;return null==(e=null==(t=this.art.plugins)?void 0:t.autoOrientation)?void 0:e.state}get marginTop(){const{clamp:t}=this.utils,e=this.option.margin[0],{clientHeight:i}=this.$player;if("number"===typeof e)return t(e,0,i);if("string"===typeof e&&e.endsWith("%")){return t(i*(Number.parseFloat(e)/100),0,i)}return O.option.margin[0]}get marginBottom(){const{clamp:t}=this.utils,e=this.option.margin[1],{clientHeight:i}=this.$player;if("number"===typeof e)return t(e,0,i);if("string"===typeof e&&e.endsWith("%")){return t(i*(Number.parseFloat(e)/100),0,i)}return O.option.margin[1]}get fontSize(){const{clamp:t}=this.utils,{clientHeight:e}=this.$player,i=this.option.fontSize;if("number"===typeof i)return Math.round(t(i,12,e));if("string"===typeof i&&i.endsWith("%")){const n=Number.parseFloat(i)/100;return Math.round(t(e*n,12,e))}return O.option.fontSize}get $ref(){return this.renderer.acquire()}get readys(){return function(t){const{currentTime:e}=t.art,i=[];return b(t,"ready",t=>i.push(t)),b(t,"wait",t=>{e+.1>=t.time&&t.time>=e-.1&&i.push(t)}),i}(this)}get visibles(){return this.renderer.visibles}get speed(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}load(t){return h(this,null,function*(){const{errorHandle:e}=this.utils,i=function(t,e){const i=w(t);if(e)for(const d of[...i.tasks])d.replace&&d.cancel();let n,s=i.closed||t.art.isDestroy;const a=new Promise(t=>n=t),r=new Set,o="function"===typeof AbortController?new AbortController:void 0,l={replace:e,signal:null==o?void 0:o.signal,active:()=>!s&&!i.closed&&!t.art.isDestroy,onCancel:t=>l.active()?(r.add(t),()=>r.delete(t)):(t(),()=>{}),cancel(){if(!s){s=!0,n(v),null==o||o.abort();for(const t of[...r])t();r.clear()}},wait:t=>Promise.race([t,a]),emit(e){i.emitting.push(l);try{return t.emit(e)}finally{i.emitting.pop()}},finish(){i.tasks.delete(l),r.clear()}};return s?n(v):i.tasks.add(l),l}(this,void 0===t);try{if(!i.active())return this;const n=function(t,e){return"function"===typeof t?{asynchronous:!0,value:t()}:c(t)?{asynchronous:!0,value:t}:"string"===typeof t?{asynchronous:!0,value:g(t,e)}:{asynchronous:!1,value:Array.isArray(t)?t:[]}}(t||this.option.danmuku,i),s=n.asynchronous?yield i.wait(n.value):n.value;if(!i.active())return this;e(Array.isArray(s),"Danmuku need return an array as result");const a=s;if(void 0===t){if(this.reset(),!i.active())return this;this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.renderer.clear()}for(let t=0;t{const e=s[t],i=a[t];return"function"===typeof e||"function"===typeof i||c(e)||c(i)?e!==i:JSON.stringify(e)!==JSON.stringify(i)}))&&!e)return this;const r=function(t,e,{defaults:i,validate:n,clamp:s,mount:a}){const r=Object.assign({},i,t,e);return n(r),r.mode=s(r.mode,0,2),r.speed=s(r.speed,1,10),r.opacity=s(r.opacity,0,1),r.lockTime=s(r.lockTime,1,60),r.maxLength=s(r.maxLength,1,1e3),r.mount=r.mount||a,r}(this.option,t,{defaults:O.option,validate:t=>this.validator(t,O.scheme),clamp:i,mount:n});if(!k(this))return this;const o=this.option.beforeVisible!==r.beforeVisible;return this.option=r,o&&(this.scheduler.invalidate(),this.scheduler.schedule()),t.fontSize&&(this.reset(),!k(this))||(this.option.visible?this.show():this.hide(),k(this)&&this.art.emit("artplayerPluginDanmuku:config",this.option)),this}getLeft(t){return this.renderer.left(t)}postMessage(t={}){return this.workerClient.request(t)}createWorker(){this.workerClient=new D(()=>new L,t=>this.scheduler.fail(t)),this.worker=this.workerClient.worker}filter(t,e){return b(this,t,e)}setState(t,e){!function(t,e,i){t.states[e.$state]=t.states[e.$state].filter(t=>t!==e),e.$state=i,e.$ref&&(e.$ref.dataset.state=i),t.states[i].push(e)}(this,t,e)}makeWait(t){this.renderer.makeWait(t)}update(){return this.scheduler.running=!0,this.scheduler.schedule(),this}resize(){this.renderer.resize()}continue(){return this.renderer.continue(),this}suspend(){return this.renderer.suspend(),this}stop(){return this.isStop=!0,this.scheduler.running=!1,this.scheduler.invalidate(),this.suspend(),this.art.emit("artplayerPluginDanmuku:stop"),this}start(){if(this.scheduler.closed||this.art.isDestroy)return this;const t=++this.scheduler.starts,e=this.scheduler.generation;this.isStop=!1,this.scheduler.recover();return this.scheduler.closed||this.art.isDestroy||this.isStop||this.scheduler.fault||e!==this.scheduler.generation||t!==this.scheduler.starts||(this.continue(),this.update(),this.art.emit("artplayerPluginDanmuku:start")),this}reset(){return this.scheduler.invalidate(),this.queue.forEach(t=>this.makeWait(t)),this.art.emit("artplayerPluginDanmuku:reset"),this.scheduler.recover(),this.scheduler.schedule(),this}seek(){this.scheduler.invalidate(),this.scheduler.schedule()}show(){return this.isHide=!1,this.$danmuku.style.opacity=1,this.option.visible=!0,this.art.emit("artplayerPluginDanmuku:show"),this}hide(){return this.isHide=!0,this.scheduler.invalidate(),this.$danmuku.style.opacity=0,this.option.visible=!1,this.art.emit("artplayerPluginDanmuku:hide"),this.scheduler.schedule(),this}destroy(){var t;x(this),this.scheduler.destroy();try{try{this.stop()}finally{null==(t=this.workerClient)||t.dispose()}}finally{this.renderer.destroy(),this.art.off("video:play",this.start),this.art.off("video:playing",this.start),this.art.off("video:pause",this.stop),this.art.off("video:waiting",this.stop),this.art.off("resize",this.resize),this.art.off("video:seeking",this.seek),this.art.off("destroy",this.destroy),this.art.emit("artplayerPluginDanmuku:destroy")}}}const A=4294967295;function H(t,e){let i=0,n=t.length;for(;iNumber.isFinite(t)&&t>0))return null;const o={xMin:0,xMax:t,yMin:0,yMax:128,scale:.25,opacity:.2,minHeight:Math.floor(.05*e),sampling:Math.max(1,Math.floor(t/100)),smoothing:.2,flattening:.2},l=Object.assign({},"object"===typeof s?s:{}),d=Object.assign({},o,l);for(const r of Object.keys(o))Number.isFinite(d[r])||(d[r]=o[r]);if(d.sampling<=0&&(d.sampling=o.sampling),d.xMin===d.xMax||d.yMin===d.yMax)return null;const h=Array.isArray(a)&&a.length>0,c=h?[...a]:function(t,e,i,n){if(!Number.isFinite(e)||e<=0||!Number.isFinite(i)||i<=0||!Number.isFinite(n)||n<=0||Math.floor(e/n)+1>A)return[];const s=t.map(t=>t.time).filter(t=>"number"===typeof t&&!Number.isNaN(t)).sort((t,e)=>t-e),a=[],r=i/e;if(!Number.isFinite(r))return[];for(let o=0;o<=e;o+=n){if(a.length>=A||o+n===o)return[];const t=o*r,e=(o+n)*r;a.push([o,H(s,e)-H(s,t)])}return a}(n,t,i,d.sampling);if(!c.length||!c.every(t=>Array.isArray(t)&&Number.isFinite(t[0])&&Number.isFinite(t[1])))return null;const p=c[c.length-1];if(p[0]!==t){if(c.length===A)return null;c.push([t,p[1]])}let u=1/0,m=-1/0;for(const r of c)u=Math.min(u,r[1]),m=Math.max(m,r[1]);const f=(u+m)/2;for(const r of c){const t=r[1];r[1]=t*(t>f?1+d.scale:1-d.scale)+d.minHeight}const g=!h&&!Number.isFinite(l.yMin)&&!Number.isFinite(l.yMax);let y=0;for(const r of c)y=Math.max(y,r[1]);const v=g&&y>o.yMax/4;v&&(d.yMax=4*y);const w=t=>v?Math.min(e,Math.max(.75*e,t)):t,k=(t,e,i,n)=>{const s=function(t,e){const i=e[0]-t[0],n=e[1]-t[1];return{length:Math.sqrt(r(i,2)+r(n,2)),angle:Math.atan2(n,i)}}(e||t,i||t),a=N(Math.cos(s.angle)*d.flattening,0,1,1,0),o=s.angle*a+(n?Math.PI:0),l=s.length*d.smoothing;return[t[0]+Math.cos(o)*l,w(t[1]+Math.sin(o)*l)]},x=c.map(i=>[N(i[0],d.xMin,d.xMax,0,t),w(N(i[1],d.yMin,d.yMax,e,0))]);if(!x.every(t=>t.every(Number.isFinite)))return null;const b=x.map((t,i,n)=>{if(0===i)return`M ${n[n.length-1][0]},${e} L ${t[0]},${e} L ${t[0]},${t[1]}`;const s=k(n[i-1],n[i-2],t),a=k(t,n[i-1],n[i+1],!0);return`C ${s[0]},${s[1]} ${a[0]},${a[1]} ${t[0]},${t[1]}${i===n.length-1?" z":""}`}).join(" ");return/NaN|Infinity/u.test(b)?null:{path:b,opacity:d.opacity,width:t,height:e}}let j=0;function q(t,e,i){if(t.isDestroy)return;const{query:n}=t.constructor.utils;let s;const a=[];let r,o,l,d=!1;const h=()=>!d&&!t.isDestroy;function c(e,i){const n=i;a.push([e,n]),t.on(e,n)}function p(e){if(d)return;let i;d=!0,o=null,l=null;let n=!1;const s=t=>{try{t()}catch(e){n||(i=e),n=!0}};for(const[r,o]of a.splice(0))s(()=>t.off(r,o));if(e&&r&&t.controls.heatmap===r&&s(()=>t.controls.remove("heatmap")),r=void 0,n)throw i}function u(t){h()&&o&&l&&(o.setAttribute("offset",100*t+"%"),l.setAttribute("offset",100*t+"%"))}function m(a){try{!function(a=[]){if(!h())return;o=null,l=null;const d=r;if(d.innerHTML="",t.option.isLive)return;const c=V({width:d.offsetWidth,height:d.offsetHeight,duration:t.duration,queue:e.queue,option:i,points:a});if(!c||!h())return;const p=d.ownerDocument;for(s||(s=p?"heatmap-solids":"heatmap-solids-"+ ++j);null==p?void 0:p.getElementById(s);)s="heatmap-solids-"+ ++j;d.innerHTML=`\n \n \n \n \n \n \n \n \n \n \n \n `,o=n("#heatmap-start",d),l=n("#heatmap-stop",d),u(t.played)}(a)}catch(d){try{p(!0)}catch(c){}throw d}}c("destroy",()=>p(!0));try{t.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},beforeUnmount(){p(!1)},mounted(e){if(r=e,d)return t.controls.heatmap===e&&t.controls.remove("heatmap"),void(r=void 0);h()?(c("video:timeupdate",()=>u(t.played)),c("setBar",(t,e)=>{"played"===t&&u(e)}),c("ready",()=>m()),c("resize",()=>m()),c("artplayerPluginDanmuku:loaded",()=>m()),c("artplayerPluginDanmuku:points",t=>m(t))):p(!0)}})}catch(f){try{p(!0)}catch(g){}throw f}return()=>p(!0)}const I=new WeakMap;class B{constructor(t){this.art=t,this.closed=!1,this.disposers=new Set,this.cancelled=new Promise(t=>this.cancel=t)}get active(){return!this.closed&&!this.art.isDestroy}own(t){this.closed?t():this.disposers.add(t)}write(t,e,i,n=i=>t[e]=i){const s=t;if(!this.active)return;const a=()=>"function"===typeof s.getPropertyPriority?s.getPropertyPriority(e):void 0;let r=I.get(s);r||(r=new Map,I.set(s,r));let o=r.get(e);o||(o={original:s[e],present:e in s||void 0!==s[e],priority:a(),owners:new Map,apply:n},r.set(e,o)),o.owners.has(this)||this.own(()=>{const t=[...o.owners.keys()],i=t[t.length-1]===this;if(o.owners.delete(this),i&&s[e]===o.last&&a()===o.lastPriority){const t=[...o.owners.values()];t.length?(o.apply(t[t.length-1]),o.last=s[e],o.lastPriority=a()):void 0!==o.priority?s.setProperty(e,o.original,o.priority):o.present?o.apply(o.original):delete s[e]}o.owners.size||(r.delete(e),r.size||I.delete(s))}),o.owners.delete(this),o.owners.set(this,i),o.apply(i),o.last=s[e],o.lastPriority=a()}on(t,e){if(!this.active)return;const i=this;function n(...t){if(i.active)return e.apply(this,t)}const s=()=>this.art.off(t,n);this.own(s);try{this.art.on(t,n),this.active||s()}catch(a){throw this.release(s),a}}proxy(t,e,i){if(!this.active)return;const n=this;function s(...t){if(n.active)return i.apply(this,t)}let a;const r=()=>{var i,n;if("function"===typeof a){const t=this.art.events;"function"===typeof(null==t?void 0:t.remove)&&(null==(i=t.destroyEvents)?void 0:i.has(a))?t.remove(a):a()}else null==(n=t.removeEventListener)||n.call(t,e,s)};this.own(r);try{a=this.art.proxy(t,e,s),this.active||r()}catch(o){throw this.release(r),o}}wait(t){return Promise.race([t,this.cancelled])}release(t){try{t()}catch(e){console.warn("Failed to dispose danmuku setting resource:",e)}}close(){if(!this.closed){this.closed=!0,this.cancel();for(const t of this.disposers)this.release(t);this.disposers.clear()}}}function R({min:t,max:e,container:i,findIndex:n,onChange:s,steps:a=[]}){const{lifecycle:r}=this;if(!r.active)return{reset(){}};const{query:o,clamp:l,setStyle:d}=this.utils;d(i,"touch-action","none"),i.innerHTML=`\n

\n
\n ${a.map(()=>'
').join("")}\n
\n
\n
\n
\n
\n ${a.map(t=>t.hide?"":`
${t.name}
`).join("")}\n
\n `;const h=o(".apd-slider-dot",i),c=o(".apd-slider-progress",i);let p=!1;function u(i){if(!r.active)return;if(void 0===i&&(i=n()),ie)return;const o=(i-t)/(e-t);h.style.left=100*o+"%",0===a.length&&(c.style.width=h.style.left),s(i)}function m(n){const{top:s,height:a,left:r,width:o}=i.getBoundingClientRect();if(this.art.isRotate){const i=l(n.clientY-s,0,a);u(Math.round(i/a*(e-t)+t))}else{const i=l(n.clientX-r,0,o);u(Math.round(i/o*(e-t)+t))}}return r.own(()=>p=!1),r.proxy(i,"click",t=>{m.call(this,t)}),r.proxy(i,"pointerdown",t=>{p=0===t.button}),r.on("document:pointermove",t=>{p&&m.call(this,t)}),r.on("document:pointerup",t=>{p&&(p=!1,m.call(this,t))}),{reset:u}}const Z='',W='',_='',U='',G='',X='',Y='',J='',K='',Q='',tt='',et='';function it(){const{option:t}=this;return`\n
\n ${tt}${Q}\n
\n
\n ${_}\n
\n
\n
\n \u6309\u7c7b\u578b\u5c4f\u853d\n
\n
\n ${U}${G}\n
\u6eda\u52a8
\n
\n
\n ${X}${Y}\n
\u9876\u90e8
\n
\n
\n ${J}${K}\n
\u5e95\u90e8
\n
\n
\n
\n
\n
\n ${W}${Z}\n \u9632\u6b62\u5f39\u5e55\u91cd\u53e0\n
\n
\n ${W}${Z}\n \u540c\u6b65\u89c6\u9891\u901f\u5ea6\n
\n
\n
\n \u4e0d\u900f\u660e\u5ea6\n
\n
\u672a\u77e5
\n
\n
\n \u663e\u793a\u533a\u57df\n
\n
\u672a\u77e5
\n
\n
\n \u5f39\u5e55\u5b57\u53f7\n
\n
\u672a\u77e5
\n
\n
\n \u5f39\u5e55\u901f\u5ea6\n
\n
\u672a\u77e5
\n
\n
\n
\n
\n
\n
\n ${et}\n
\n
\n
\n \u6a21\u5f0f\n
\n
\n ${G}\n
\u6eda\u52a8
\n
\n
\n ${Y}\n
\u9876\u90e8
\n
\n
\n ${K}\n
\u5e95\u90e8
\n
\n
\n
\n
\n \u989c\u8272\n
\n ${this.COLOR.map(t=>`
`).join("")}\n
\n
\n
\n
\n
\n \n
\u53d1\u9001
\n
\n `}if("undefined"!==typeof document){const t="artplayer-plugin-danmuku",e=Symbol.for("artplayer-plugin-danmuku.pending-style"),i=document;let n=document.getElementById(t)||i[e];if(!n)if(n=document.createElement("style"),n.id=t,"loading"===document.readyState){i[e]=n;const s=()=>{document.removeEventListener("DOMContentLoaded",s),i[e]===n&&delete i[e];const a=document.getElementById(t);a?a.textContent=n.textContent:(document.head||document.documentElement).appendChild(n)};document.addEventListener("DOMContentLoaded",s,{once:!0})}else(document.head||document.documentElement).appendChild(n);n.textContent='.artplayer-plugin-danmuku{display:flex;position:relative;z-index:99;align-items:center;justify-content:center;font-size:12px;height:32px;width:100%;color:#fff;font-weight:300;flex-shrink:0;gap:10px}.artplayer-plugin-danmuku .apd-icon{cursor:pointer;opacity:.75;transition:all .2s ease;fill:#fff}.artplayer-plugin-danmuku .apd-icon:hover{opacity:1}.artplayer-plugin-danmuku .apd-config{display:flex;position:relative}.artplayer-plugin-danmuku .apd-config .apd-config-panel{position:absolute;bottom:24px;left:0;width:320px;padding:10px;opacity:0;pointer-events:none}.artplayer-plugin-danmuku .apd-config .apd-config-panel .apd-config-panel-inner{width:100%;border-radius:3px;background-color:#000000d9;padding:10px}.artplayer-plugin-danmuku .apd-config:hover .apd-config-panel{opacity:100;pointer-events:all}.artplayer-plugin-danmuku .apd-config-mode,.artplayer-plugin-danmuku .apd-config-slider,.artplayer-plugin-danmuku .apd-config-other,.artplayer-plugin-danmuku .apd-style-mode{margin-bottom:15px}.artplayer-plugin-danmuku .apd-modes{display:flex;align-items:center;margin-top:5px;gap:20px}.artplayer-plugin-danmuku .apd-modes .apd-mode{cursor:pointer;text-align:center}.artplayer-plugin-danmuku .apd-modes .apd-mode:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-config-slider{display:flex;align-items:center;gap:12px}.artplayer-plugin-danmuku .apd-config-slider .apd-value{width:32px;text-align:right}.artplayer-plugin-danmuku .apd-slider{position:relative;flex:1;display:flex;height:20px;align-items:center;justify-content:center;cursor:pointer}.artplayer-plugin-danmuku .apd-slider .apd-slider-line{position:relative;height:2px;width:100%;overflow:hidden;border-radius:3px;background-color:#ffffff40}.artplayer-plugin-danmuku .apd-slider .apd-slider-points{position:absolute;inset:0;display:flex;align-items:center;justify-content:space-between}.artplayer-plugin-danmuku .apd-slider .apd-slider-points .apd-slider-point{width:2px;height:2px;border-radius:50%;background-color:#ffffff80}.artplayer-plugin-danmuku .apd-slider .apd-slider-progress{width:0%;height:100%;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-slider .apd-slider-dot{position:absolute;transform:translate(-6px);left:0%;width:12px;height:12px;border-radius:50%;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps{display:flex;align-items:center;justify-content:space-between;position:absolute;bottom:-12px;width:calc(100% + 32px);color:#777}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps .apd-slider-step{flex-shrink:0;width:36px;text-align:center;scale:.95}.artplayer-plugin-danmuku .apd-config-other{display:flex;align-items:center;gap:20px}.artplayer-plugin-danmuku .apd-config-other .apd-check-off,.artplayer-plugin-danmuku .apd-config-other .apd-check-on{width:16px;height:16px}.artplayer-plugin-danmuku .apd-config-other .apd-other{display:flex;align-items:center;cursor:pointer;gap:2px}.artplayer-plugin-danmuku .apd-config-other .apd-other:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-emitter{display:flex;flex:1;align-items:center;height:100%;background-color:#ffffff40;border-radius:5px}.artplayer-plugin-danmuku .apd-style{position:relative;display:flex;align-items:center;justify-content:center}.artplayer-plugin-danmuku .apd-style .apd-style-panel{position:absolute;bottom:24px;left:0;width:200px;padding:10px;opacity:0;pointer-events:none}.artplayer-plugin-danmuku .apd-style .apd-style-panel .apd-style-panel-inner{width:100%;border-radius:3px;background-color:#000000d9;padding:10px}.artplayer-plugin-danmuku .apd-style:hover .apd-style-panel{opacity:100;pointer-events:all}.artplayer-plugin-danmuku .apd-colors{display:flex;flex-wrap:wrap;margin-top:5px;gap:8px}.artplayer-plugin-danmuku .apd-colors .apd-color{width:16px;height:16px;border-radius:2px;cursor:pointer}.artplayer-plugin-danmuku .apd-colors .apd-color.apd-active{border:1px solid black;box-shadow:0 0 0 1px #fff}.artplayer-plugin-danmuku .apd-input{outline:none;height:100%;flex:1;min-width:0;width:auto;border:none;line-height:1;color:#fff;background-color:transparent}.artplayer-plugin-danmuku .apd-input::placeholder{color:#ffffff80}.artplayer-plugin-danmuku .apd-send{display:flex;align-items:center;justify-content:center;height:100%;width:60px;flex-shrink:0;cursor:pointer;text-shadow:none;border-top-right-radius:5px;border-bottom-right-radius:5px;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-send.apd-lock{cursor:not-allowed;color:#666;background-color:#e7e7e7}.art-controls-center .apd-emitter{width:260px;flex:none}.art-fullscreen .artplayer-plugin-danmuku,.art-fullscreen-web .artplayer-plugin-danmuku{height:38px;gap:16px}.art-fullscreen .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen-web .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-on,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-on{width:28px;height:28px}.art-fullscreen .artplayer-plugin-danmuku .apd-emitter,.art-fullscreen-web .artplayer-plugin-danmuku .apd-emitter{width:400px;flex:none}.art-video-player>.artplayer-plugin-danmuku{position:absolute;left:0;right:0;bottom:-40px;padding:0 10px}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[data-danmuku-emitter=false] .apd-emitter{display:none!important}[data-danmuku-emitter=false] .art-controls-center .artplayer-plugin-danmuku{justify-content:flex-end;gap:18px}[data-danmuku-emitter=false].art-fullscreen .art-controls-center .artplayer-plugin-danmuku,[data-danmuku-emitter=false].art-fullscreen-web .art-controls-center .artplayer-plugin-danmuku{gap:24px}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-icon{fill:#333}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-emitter{background-color:#f1f2f3}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input{color:#000}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:#0000004d}[data-danmuku-visible=false] .apd-toggle-off{display:block}[data-danmuku-visible=false] .apd-toggle-on,[data-danmuku-visible=true] .apd-toggle-off{display:none}[data-danmuku-visible=true] .apd-toggle-on{display:block}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-on{display:none}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-off,[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-on{display:block}[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-off,[data-danmuku-sync-video=false] .apd-sync-video .apd-check-on{display:none}[data-danmuku-sync-video=false] .apd-sync-video .apd-check-off,[data-danmuku-sync-video=true] .apd-sync-video .apd-check-on{display:block}[data-danmuku-sync-video=true] .apd-sync-video .apd-check-off{display:none}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-off{display:block}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-on{display:none}[data-danmuku-mode0=false] .art-danmuku [data-mode="0"]{opacity:0!important}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-off{display:none}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-on{display:block}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"]{color:#00a1d6}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"] path{fill:#00a1d6}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-off{display:block}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-on{display:none}[data-danmuku-mode1=false] .art-danmuku [data-mode="1"]{opacity:0!important}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-off{display:none}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-on{display:block}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"]{color:#00a1d6}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"] path{fill:#00a1d6}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-off{display:block}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-on{display:none}[data-danmuku-mode2=false] .art-danmuku [data-mode="2"]{opacity:0!important}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-off{display:none}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-on{display:block}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"]{color:#00a1d6}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"] path{fill:#00a1d6}'}class nt{constructor(t,e){this.art=t,this.danmuku=e,this.utils=t.constructor.utils;const{setStyle:i}=this.utils,{$controlsCenter:n}=t.template;this.template={$controlsCenter:n,$mount:n,$danmuku:null,$toggle:null,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel:null,$styleModes:null,$colors:null,$opacitySlider:null,$opacityValue:null,$marginSlider:null,$marginValue:null,$fontSizeSlider:null,$fontSizeValue:null,$speedSlider:null,$speedValue:null,$input:null,$send:null},this.slider={opacity:null,margin:null,fontSize:null,speed:null},this.emitting=!1,this.isLock=!1,this.timer=null,this.lifecycle=new B(t),this.destroy=this.destroy.bind(this),this.lifecycle.own(()=>t.off("destroy",this.destroy));try{if(t.on("destroy",this.destroy),!this.lifecycle.active)return;if(this.lifecycle.write(n.style,"display","flex",t=>i(n,"display",t)),this.createTemplate(),!this.lifecycle.active)return;if(this.createSliders(),!this.lifecycle.active)return;if(this.createEvents(),this.mount(this.option.mount),!this.lifecycle.active)return;this.lifecycle.on("resize",()=>this.resize()),this.lifecycle.on("fullscreen",t=>this.onFullscreen(t)),this.lifecycle.on("fullscreenWeb",t=>this.onFullscreen(t)),this.lifecycle.proxy(this.template.$config,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$config,$panel:this.template.$configPanel})}),this.lifecycle.proxy(this.template.$style,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$style,$panel:this.template.$stylePanel})})}catch(s){try{this.destroy()}catch(a){console.warn("Failed to roll back danmuku setting:",a)}throw s}}static get icons(){return{$on:tt,$off:Q,$config:_,$style:et,$mode_0_off:U,$mode_0_on:G,$mode_1_off:X,$mode_1_on:Y,$mode_2_off:J,$mode_2_on:K,$check_on:W,$check_off:Z}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){return it.call(this)}get OPACITY(){return l({min:0,max:100,steps:[]},this.option.OPACITY)}get FONT_SIZE(){return l({min:12,max:120,steps:[]},this.option.FONT_SIZE)}get MARGIN(){return l({min:0,max:3,steps:[{name:"1/4",value:[10,"75%"]},{name:"\u534a\u5c4f",value:[10,"50%"]},{name:"3/4",value:[10,"25%"]},{name:"\u6ee1\u5c4f",value:[10,10]}]},this.option.MARGIN)}get SPEED(){return l({min:0,max:4,steps:[{name:"\u6781\u6162",value:10},{name:"\u8f83\u6162",value:7.5,hide:!0},{name:"\u9002\u4e2d",value:5},{name:"\u8f83\u5feb",value:2.5,hide:!0},{name:"\u6781\u5feb",value:1}]},this.option.SPEED)}get COLOR(){return this.option.COLOR.length?this.option.COLOR:["#FE0302","#FF7204","#FFAA02","#FFD302","#FFFF00","#A0EE00","#00CD00","#019899","#4266BE","#89D5FF","#CC0273","#222222","#9B9B9B","#FFFFFF"]}query(t){const{query:e}=this.utils,{$danmuku:i}=this.template;return e(t,i)}append(t,e){if(!this.lifecycle.active)return;const{append:i}=this.utils;[...t.children].includes(e)||i(t,e)}setData(t,e){if(!this.lifecycle.active)return;const{$player:i}=this.art.template,{$mount:n}=this.template;this.lifecycle.write(i.dataset,t,e),this.outside&&this.lifecycle.write(n.dataset,t,e)}createTemplate(){const{createElement:t,tooltip:e}=this.utils,i=t("div");this.template.$danmuku=i,i.className="artplayer-plugin-danmuku",i.innerHTML=this.TEMPLATE,this.template.$toggle=this.query(".apd-toggle"),this.template.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),this.template.$styleModes=this.query(".apd-style-mode .apd-modes"),this.template.$colors=this.query(".apd-colors"),this.template.$antiOverlap=this.query(".apd-anti-overlap"),this.template.$syncVideo=this.query(".apd-sync-video"),this.template.$opacitySlider=this.query(".apd-config-opacity .apd-slider"),this.template.$opacityValue=this.query(".apd-config-opacity .apd-value"),this.template.$marginSlider=this.query(".apd-config-margin .apd-slider"),this.template.$marginValue=this.query(".apd-config-margin .apd-value"),this.template.$fontSizeSlider=this.query(".apd-config-fontSize .apd-slider"),this.template.$fontSizeValue=this.query(".apd-config-fontSize .apd-value"),this.template.$speedSlider=this.query(".apd-config-speed .apd-slider"),this.template.$speedValue=this.query(".apd-config-speed .apd-value"),this.template.$input=this.query(".apd-input"),this.template.$send=this.query(".apd-send");const{$toggle:n}=this.template;this.lifecycle.on("artplayerPluginDanmuku:show",()=>{e(n,"\u5173\u95ed\u5f39\u5e55")}),this.lifecycle.on("artplayerPluginDanmuku:hide",()=>{e(n,"\u6253\u5f00\u5f39\u5e55")})}createEvents(){const{$toggle:t,$configModes:e,$styleModes:i,$colors:n,$antiOverlap:s,$syncVideo:a,$send:r,$input:o}=this.template;this.lifecycle.proxy(t,"click",()=>{this.danmuku.config({visible:!this.option.visible}),this.reset()}),this.lifecycle.proxy(e,"click",t=>{const e=t.target.closest(".apd-mode");if(!e)return;const i=Number(e.dataset.mode);this.option.modes.includes(i)?this.danmuku.config({modes:this.option.modes.filter(t=>t!==i)}):this.danmuku.config({modes:[...this.option.modes,i]}),this.reset()}),this.lifecycle.proxy(s,"click",()=>{this.danmuku.config({antiOverlap:!this.option.antiOverlap}),this.reset()}),this.lifecycle.proxy(a,"click",()=>{this.danmuku.config({synchronousPlayback:!this.option.synchronousPlayback}),this.reset()}),this.lifecycle.proxy(i,"click",t=>{const e=t.target.closest(".apd-mode");if(!e)return;const i=Number(e.dataset.mode);this.danmuku.config({mode:i}),this.reset()}),this.lifecycle.proxy(n,"click",t=>{const e=t.target.closest(".apd-color");e&&(this.danmuku.config({color:e.dataset.color}),this.reset())}),this.lifecycle.proxy(r,"click",()=>this.emit()),this.lifecycle.proxy(o,"keypress",t=>{"Enter"===t.key&&(t.preventDefault(),this.emit())})}createSliders(){this.slider.opacity=this.createSlider(d(l({},this.OPACITY),{container:this.template.$opacitySlider,findIndex:()=>Math.round(100*this.option.opacity),onChange:t=>{const{$opacityValue:e}=this.template;e.textContent=`${t}%`,this.danmuku.config({opacity:t/100})}})),this.slider.margin=this.createSlider(d(l({},this.MARGIN),{container:this.template.$marginSlider,findIndex:()=>this.MARGIN.steps.findIndex(t=>t.value[0]===this.option.margin[0]&&t.value[1]===this.option.margin[1]),onChange:t=>{const e=this.MARGIN.steps[t];if(!e)return;const{$marginValue:i}=this.template;i.textContent=e.name,this.danmuku.config({margin:e.value})}})),this.slider.fontSize=this.createSlider(d(l({},this.FONT_SIZE),{container:this.template.$fontSizeSlider,findIndex:()=>this.danmuku.fontSize,onChange:t=>{const{$fontSizeValue:e}=this.template;e.textContent=`${t}px`,t!==this.danmuku.fontSize&&this.danmuku.config({fontSize:t})}})),this.slider.speed=this.createSlider(d(l({},this.SPEED),{container:this.template.$speedSlider,findIndex:()=>this.SPEED.steps.findIndex(t=>t.value===this.option.speed),onChange:t=>{const e=this.SPEED.steps[t];if(!e)return;const{$speedValue:i}=this.template;i.textContent=e.name,this.danmuku.config({speed:e.value})}}))}createSlider(t){return R.call(this,t)}onFullscreen(t){if(!this.lifecycle.active)return;const{$danmuku:e,$controlsCenter:i,$mount:n}=this.template;this.outside?t?this.append(i,e):this.append(n,e):this.append(i,e)}onMouseEnter({$control:t,$panel:e}){if(!this.lifecycle.active)return;const{$player:i}=this.art.template,n=t.getBoundingClientRect(),s=e.getBoundingClientRect(),a=i.getBoundingClientRect(),r=s.width/2-n.width/2,o=a.left-(n.left-r),l=n.right+r-a.right;e.style.left=o>0?`${-r+o}px`:l>0?-r-l+"px":-r+"px"}emit(){return function(t){return h(this,null,function*(){const{lifecycle:e,template:{$input:i}}=t;if(!e.active)return;const n=i.value.trim();if(!n.length||t.isLock||t.emitting)return;const s={text:n,mode:t.option.mode,color:t.option.color,time:t.art.currentTime},a=t=>{e.active&&console.error("Error emitting danmuku:",t)};try{t.emitting=!0;const n=yield e.wait(t.option.beforeEmit(s));if(!e.active)return;if(t.emitting=!1,!0!==n)return;if(s.border=!0,delete s.time,Promise.resolve(t.danmuku.emit(s)).catch(a),!e.active)return;i.value="",t.lock()}catch(r){a(r),e.active&&(t.emitting=!1)}})}(this)}lock(){!function(t){if(!t.lifecycle.active)return;const{addClass:e}=t.utils,{$send:i}=t.template;clearTimeout(t.timer),t.isLock=!0;let n=t.option.lockTime;i.textContent=n,e(i,"apd-lock");const s=()=>{t.timer=setTimeout(()=>{t.lifecycle.active&&(0===n?t.unlock():(n-=1,i.textContent=n,s()))},1e3)};s()}(this)}unlock(){!function(t){if(clearTimeout(t.timer),t.timer=null,t.isLock=!1,!t.lifecycle.active)return;const{removeClass:e}=t.utils,{$send:i}=t.template;i.textContent="\u53d1\u9001",e(i,"apd-lock")}(this)}resize(){if(!this.lifecycle.active)return;if(this.outside)return;if(this.art.fullscreen)return;if(this.art.fullscreenWeb)return;const{$player:t,$controlsCenter:e}=this.art.template,{$danmuku:i}=this.template;this.art.widtht.dataset.color===this.option.color.toUpperCase());a&&t(a,"apd-active"),e(i,this.option.visible?"\u5173\u95ed\u5f39\u5e55":"\u6253\u5f00\u5f39\u5e55"),this.resize()}mount(t){if(!this.lifecycle.active)return;const{errorHandle:e}=this.utils,i="string"===typeof t?document.querySelector(t):t;e(i,`Can not find the mount point: ${t}`),this.append(i,this.template.$danmuku),this.template.$mount=i,this.reset()}destroy(){if(this.lifecycle.closed)return;this.lifecycle.close(),clearTimeout(this.timer),this.timer=null,this.emitting=!1,this.isLock=!1;const t=this.template.$danmuku;(null==t?void 0:t.parentElement)&&t.parentElement.removeChild(t)}}function st(t){return e=>{const i=new O(e,t);let n;try{n=e.isDestroy?void 0:new nt(e,i),!e.isDestroy&&i.option.heatmap&&q(e,i,i.option.heatmap)}catch(s){try{null==n||n.destroy()}catch(a){}try{i.destroy()}catch(a){}throw s}return{name:"artplayerPluginDanmuku",emit:i.emit.bind(i),load:i.load.bind(i),config:i.config.bind(i),hide:i.hide.bind(i),show:i.show.bind(i),reset:i.reset.bind(i),mount:n?n.mount.bind(n):()=>{},get option(){return i.option},get isHide(){return i.isHide},get isStop(){return i.isStop}}}}return st.icons=nt.icons,st}); diff --git a/docs/compiled/artplayer-plugin-danmuku.mjs b/docs/compiled/artplayer-plugin-danmuku.mjs index 5b9fd98ca..79a9fa235 100644 --- a/docs/compiled/artplayer-plugin-danmuku.mjs +++ b/docs/compiled/artplayer-plugin-danmuku.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-danmuku.js v5.3.0 + * artplayer-plugin-danmuku.js v6.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. @@ -1001,7 +1001,7 @@ class WorkerClient { throw error; } } -const jsContent = '/*!\n * artplayer-plugin-danmuku.js v5.3.0\n * Github: https://github.com/zhw2590582/ArtPlayer\n * (c) 2017-2026 Harvey Zhao\n * Released under the MIT License.\n */\nfunction getDanmuTop({ target, visibles, clientWidth, clientHeight, marginBottom, marginTop, antiOverlap }) {\n const maxTop = clientHeight - marginBottom;\n const danmus = visibles.filter((item) => item.mode === target.mode && item.top <= maxTop).sort((prev, next) => prev.top - next.top);\n if (danmus.length === 0) {\n if (target.mode === 2) {\n return maxTop - target.height;\n } else {\n return marginTop;\n }\n }\n danmus.unshift({\n type: "top",\n top: 0,\n left: 0,\n right: 0,\n height: marginTop,\n width: clientWidth,\n speed: 0,\n distance: clientWidth\n });\n danmus.push({\n type: "bottom",\n top: maxTop,\n left: 0,\n right: 0,\n height: marginBottom,\n width: clientWidth,\n speed: 0,\n distance: clientWidth\n });\n if (target.mode === 2) {\n for (let index = danmus.length - 2; index >= 0; index -= 1) {\n const item = danmus[index];\n const prev = danmus[index + 1];\n const itemBottom = item.top + item.height;\n const diff = prev.top - itemBottom;\n if (diff >= target.height) {\n return prev.top - target.height;\n }\n }\n } else {\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 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)\n return false;\n if (target.speed < danmu.speed)\n return true;\n const overlapTime = danmu.right / (target.speed - danmu.speed);\n if (overlapTime > danmu.time)\n return true;\n return false;\n });\n });\n return result && result[0] ? result[0].top : void 0;\n }\n // 静止弹幕没有重叠问题\n case 1:\n case 2:\n return void 0;\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 case 2:\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 }\n return topMap[0][0].top;\n }\n}\nonmessage = (event) => {\n const { data } = event;\n if (!data.id || !data.type)\n return;\n const fns = { getDanmuTop };\n const fn = fns[data.type];\n const result = fn(data);\n globalThis.postMessage({\n result,\n id: data.id\n });\n};\n'; +const jsContent = '/*!\n * artplayer-plugin-danmuku.js v6.0.0\n * Github: https://github.com/zhw2590582/ArtPlayer\n * (c) 2017-2026 Harvey Zhao\n * Released under the MIT License.\n */\nfunction getDanmuTop({ target, visibles, clientWidth, clientHeight, marginBottom, marginTop, antiOverlap }) {\n const maxTop = clientHeight - marginBottom;\n const danmus = visibles.filter((item) => item.mode === target.mode && item.top <= maxTop).sort((prev, next) => prev.top - next.top);\n if (danmus.length === 0) {\n if (target.mode === 2) {\n return maxTop - target.height;\n } else {\n return marginTop;\n }\n }\n danmus.unshift({\n type: "top",\n top: 0,\n left: 0,\n right: 0,\n height: marginTop,\n width: clientWidth,\n speed: 0,\n distance: clientWidth\n });\n danmus.push({\n type: "bottom",\n top: maxTop,\n left: 0,\n right: 0,\n height: marginBottom,\n width: clientWidth,\n speed: 0,\n distance: clientWidth\n });\n if (target.mode === 2) {\n for (let index = danmus.length - 2; index >= 0; index -= 1) {\n const item = danmus[index];\n const prev = danmus[index + 1];\n const itemBottom = item.top + item.height;\n const diff = prev.top - itemBottom;\n if (diff >= target.height) {\n return prev.top - target.height;\n }\n }\n } else {\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 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)\n return false;\n if (target.speed < danmu.speed)\n return true;\n const overlapTime = danmu.right / (target.speed - danmu.speed);\n if (overlapTime > danmu.time)\n return true;\n return false;\n });\n });\n return result && result[0] ? result[0].top : void 0;\n }\n // 静止弹幕没有重叠问题\n case 1:\n case 2:\n return void 0;\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 case 2:\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 }\n return topMap[0][0].top;\n }\n}\nonmessage = (event) => {\n const { data } = event;\n if (!data.id || !data.type)\n return;\n const fns = { getDanmuTop };\n const fn = fns[data.type];\n const result = fn(data);\n globalThis.postMessage({\n result,\n id: data.id\n });\n};\n'; const blob = typeof self !== "undefined" && self.Blob && new Blob(["URL.revokeObjectURL(import.meta.url);", jsContent], { type: "text/javascript;charset=utf-8" }); function WorkerWrapper(options) { let objURL; diff --git a/docs/compiled/artplayer-plugin-dash-control.js b/docs/compiled/artplayer-plugin-dash-control.js index f94b557ee..2dd468a75 100644 --- a/docs/compiled/artplayer-plugin-dash-control.js +++ b/docs/compiled/artplayer-plugin-dash-control.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-dash-control.js v1.1.0 + * artplayer-plugin-dash-control.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-dash-control.legacy.js b/docs/compiled/artplayer-plugin-dash-control.legacy.js index 736a240ed..1c6d57d21 100644 --- a/docs/compiled/artplayer-plugin-dash-control.legacy.js +++ b/docs/compiled/artplayer-plugin-dash-control.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-dash-control.js v1.1.0 + * artplayer-plugin-dash-control.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-dash-control.mjs b/docs/compiled/artplayer-plugin-dash-control.mjs index 8ca69cc86..384d11bfb 100644 --- a/docs/compiled/artplayer-plugin-dash-control.mjs +++ b/docs/compiled/artplayer-plugin-dash-control.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-dash-control.js v1.1.0 + * artplayer-plugin-dash-control.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-document-pip.js b/docs/compiled/artplayer-plugin-document-pip.js index 7751a1940..63e221da2 100644 --- a/docs/compiled/artplayer-plugin-document-pip.js +++ b/docs/compiled/artplayer-plugin-document-pip.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-document-pip.js v1.1.0 + * artplayer-plugin-document-pip.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-document-pip.legacy.js b/docs/compiled/artplayer-plugin-document-pip.legacy.js index be093411d..908e543c3 100644 --- a/docs/compiled/artplayer-plugin-document-pip.legacy.js +++ b/docs/compiled/artplayer-plugin-document-pip.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-document-pip.js v1.1.0 + * artplayer-plugin-document-pip.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-document-pip.mjs b/docs/compiled/artplayer-plugin-document-pip.mjs index e6eb109cc..0cad867ef 100644 --- a/docs/compiled/artplayer-plugin-document-pip.mjs +++ b/docs/compiled/artplayer-plugin-document-pip.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-document-pip.js v1.1.0 + * artplayer-plugin-document-pip.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-hls-control.js b/docs/compiled/artplayer-plugin-hls-control.js index 6cb978e5d..10e788a60 100644 --- a/docs/compiled/artplayer-plugin-hls-control.js +++ b/docs/compiled/artplayer-plugin-hls-control.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-hls-control.js v1.1.0 + * artplayer-plugin-hls-control.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-hls-control.legacy.js b/docs/compiled/artplayer-plugin-hls-control.legacy.js index 1e53f1cde..79bcb10f0 100644 --- a/docs/compiled/artplayer-plugin-hls-control.legacy.js +++ b/docs/compiled/artplayer-plugin-hls-control.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-hls-control.js v1.1.0 + * artplayer-plugin-hls-control.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-hls-control.mjs b/docs/compiled/artplayer-plugin-hls-control.mjs index a31dc0596..ddea4c4e8 100644 --- a/docs/compiled/artplayer-plugin-hls-control.mjs +++ b/docs/compiled/artplayer-plugin-hls-control.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-hls-control.js v1.1.0 + * artplayer-plugin-hls-control.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-jassub.js b/docs/compiled/artplayer-plugin-jassub.js index 1c4ba59ef..7e3e67573 100644 --- a/docs/compiled/artplayer-plugin-jassub.js +++ b/docs/compiled/artplayer-plugin-jassub.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-jassub.js v1.1.0 + * artplayer-plugin-jassub.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-jassub.legacy.js b/docs/compiled/artplayer-plugin-jassub.legacy.js index 884304c77..ffe2881a7 100644 --- a/docs/compiled/artplayer-plugin-jassub.legacy.js +++ b/docs/compiled/artplayer-plugin-jassub.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-jassub.js v1.1.0 + * artplayer-plugin-jassub.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-jassub.mjs b/docs/compiled/artplayer-plugin-jassub.mjs index 5cb773479..3e70a978d 100644 --- a/docs/compiled/artplayer-plugin-jassub.mjs +++ b/docs/compiled/artplayer-plugin-jassub.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-jassub.js v1.1.0 + * artplayer-plugin-jassub.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-multiple-subtitles.js b/docs/compiled/artplayer-plugin-multiple-subtitles.js index 3c16d0790..9b641adaa 100644 --- a/docs/compiled/artplayer-plugin-multiple-subtitles.js +++ b/docs/compiled/artplayer-plugin-multiple-subtitles.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-multiple-subtitles.js v1.2.0 + * artplayer-plugin-multiple-subtitles.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-multiple-subtitles.legacy.js b/docs/compiled/artplayer-plugin-multiple-subtitles.legacy.js index ee39b3f8b..4941fd624 100644 --- a/docs/compiled/artplayer-plugin-multiple-subtitles.legacy.js +++ b/docs/compiled/artplayer-plugin-multiple-subtitles.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-multiple-subtitles.js v1.2.0 + * artplayer-plugin-multiple-subtitles.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-multiple-subtitles.mjs b/docs/compiled/artplayer-plugin-multiple-subtitles.mjs index c67f10fae..835eca5fa 100644 --- a/docs/compiled/artplayer-plugin-multiple-subtitles.mjs +++ b/docs/compiled/artplayer-plugin-multiple-subtitles.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-multiple-subtitles.js v1.2.0 + * artplayer-plugin-multiple-subtitles.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-vast.js b/docs/compiled/artplayer-plugin-vast.js index 1de2899bd..afcc2ad78 100644 --- a/docs/compiled/artplayer-plugin-vast.js +++ b/docs/compiled/artplayer-plugin-vast.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-vast.js v1.2.0 + * artplayer-plugin-vast.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-vast.legacy.js b/docs/compiled/artplayer-plugin-vast.legacy.js index 1161f5d78..63045a7b9 100644 --- a/docs/compiled/artplayer-plugin-vast.legacy.js +++ b/docs/compiled/artplayer-plugin-vast.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-vast.js v1.2.0 + * artplayer-plugin-vast.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-vast.mjs b/docs/compiled/artplayer-plugin-vast.mjs index 1ad7c018d..b28382d2e 100644 --- a/docs/compiled/artplayer-plugin-vast.mjs +++ b/docs/compiled/artplayer-plugin-vast.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-vast.js v1.2.0 + * artplayer-plugin-vast.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-vtt-thumbnail.js b/docs/compiled/artplayer-plugin-vtt-thumbnail.js index 10778ae94..c68f61559 100644 --- a/docs/compiled/artplayer-plugin-vtt-thumbnail.js +++ b/docs/compiled/artplayer-plugin-vtt-thumbnail.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-vtt-thumbnail.js v1.1.0 + * artplayer-plugin-vtt-thumbnail.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-vtt-thumbnail.legacy.js b/docs/compiled/artplayer-plugin-vtt-thumbnail.legacy.js index 1fcab850c..d92478b86 100644 --- a/docs/compiled/artplayer-plugin-vtt-thumbnail.legacy.js +++ b/docs/compiled/artplayer-plugin-vtt-thumbnail.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-vtt-thumbnail.js v1.1.0 + * artplayer-plugin-vtt-thumbnail.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-plugin-vtt-thumbnail.mjs b/docs/compiled/artplayer-plugin-vtt-thumbnail.mjs index 4eed02c3a..64c3eeb94 100644 --- a/docs/compiled/artplayer-plugin-vtt-thumbnail.mjs +++ b/docs/compiled/artplayer-plugin-vtt-thumbnail.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-vtt-thumbnail.js v1.1.0 + * artplayer-plugin-vtt-thumbnail.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-proxy-canvas.js b/docs/compiled/artplayer-proxy-canvas.js index 87e8419c7..4720d732a 100644 --- a/docs/compiled/artplayer-proxy-canvas.js +++ b/docs/compiled/artplayer-proxy-canvas.js @@ -1,5 +1,5 @@ /*! - * artplayer-proxy-canvas.js v1.1.0 + * artplayer-proxy-canvas.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-proxy-canvas.legacy.js b/docs/compiled/artplayer-proxy-canvas.legacy.js index e4374cd63..05b773466 100644 --- a/docs/compiled/artplayer-proxy-canvas.legacy.js +++ b/docs/compiled/artplayer-proxy-canvas.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-proxy-canvas.js v1.1.0 + * artplayer-proxy-canvas.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-proxy-canvas.mjs b/docs/compiled/artplayer-proxy-canvas.mjs index a87f39755..a91fc09ad 100644 --- a/docs/compiled/artplayer-proxy-canvas.mjs +++ b/docs/compiled/artplayer-proxy-canvas.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-proxy-canvas.js v1.1.0 + * artplayer-proxy-canvas.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-proxy-mediabunny.js b/docs/compiled/artplayer-proxy-mediabunny.js index 87b7001d9..56ae0662b 100644 --- a/docs/compiled/artplayer-proxy-mediabunny.js +++ b/docs/compiled/artplayer-proxy-mediabunny.js @@ -1,5 +1,5 @@ /*! - * artplayer-proxy-mediabunny.js v1.2.0 + * artplayer-proxy-mediabunny.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-proxy-mediabunny.legacy.js b/docs/compiled/artplayer-proxy-mediabunny.legacy.js index fda5de103..22c37d182 100644 --- a/docs/compiled/artplayer-proxy-mediabunny.legacy.js +++ b/docs/compiled/artplayer-proxy-mediabunny.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-proxy-mediabunny.js v1.2.0 + * artplayer-proxy-mediabunny.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-proxy-mediabunny.mjs b/docs/compiled/artplayer-proxy-mediabunny.mjs index c30d6d43d..08dabaf0a 100644 --- a/docs/compiled/artplayer-proxy-mediabunny.mjs +++ b/docs/compiled/artplayer-proxy-mediabunny.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-proxy-mediabunny.js v1.2.0 + * artplayer-proxy-mediabunny.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-tool-iframe.js b/docs/compiled/artplayer-tool-iframe.js index 58a109a1d..0e0174154 100644 --- a/docs/compiled/artplayer-tool-iframe.js +++ b/docs/compiled/artplayer-tool-iframe.js @@ -1,5 +1,5 @@ /*! - * artplayer-tool-iframe.js v1.1.0 + * artplayer-tool-iframe.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-tool-iframe.legacy.js b/docs/compiled/artplayer-tool-iframe.legacy.js index 171c31876..96f5cf98f 100644 --- a/docs/compiled/artplayer-tool-iframe.legacy.js +++ b/docs/compiled/artplayer-tool-iframe.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-tool-iframe.js v1.1.0 + * artplayer-tool-iframe.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-tool-iframe.mjs b/docs/compiled/artplayer-tool-iframe.mjs index e7076f494..3c8c2721a 100644 --- a/docs/compiled/artplayer-tool-iframe.mjs +++ b/docs/compiled/artplayer-tool-iframe.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-tool-iframe.js v1.1.0 + * artplayer-tool-iframe.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-tool-thumbnail.js b/docs/compiled/artplayer-tool-thumbnail.js index 75a8c84a8..38ceaa3fc 100644 --- a/docs/compiled/artplayer-tool-thumbnail.js +++ b/docs/compiled/artplayer-tool-thumbnail.js @@ -1,5 +1,5 @@ /*! - * artplayer-tool-thumbnail.js v4.4.0 + * artplayer-tool-thumbnail.js v5.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-tool-thumbnail.legacy.js b/docs/compiled/artplayer-tool-thumbnail.legacy.js index 2586b02ea..d531a9e8c 100644 --- a/docs/compiled/artplayer-tool-thumbnail.legacy.js +++ b/docs/compiled/artplayer-tool-thumbnail.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-tool-thumbnail.js v4.4.0 + * artplayer-tool-thumbnail.js v5.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer-tool-thumbnail.mjs b/docs/compiled/artplayer-tool-thumbnail.mjs index 98f93576b..3fbc0e05c 100644 --- a/docs/compiled/artplayer-tool-thumbnail.mjs +++ b/docs/compiled/artplayer-tool-thumbnail.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-tool-thumbnail.js v4.4.0 + * artplayer-tool-thumbnail.js v5.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/docs/compiled/artplayer.js b/docs/compiled/artplayer.js index c816b2536..d19aca10d 100644 --- a/docs/compiled/artplayer.js +++ b/docs/compiled/artplayer.js @@ -1,5 +1,5 @@ /*! - * artplayer.js v5.4.1 + * artplayer.js v6.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. @@ -67,4 +67,4 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.Artplayer=e(),define(function(){return t.Artplayer})):(t="undefined"!==typeof globalThis?globalThis:t||self).Artplayer=e()}(this,function(){"use strict";function t(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var e,r={exports:{}};var n=(e||(e=1,r.exports=function(){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}var e=Object.prototype.toString,r=function(r){if(void 0===r)return"undefined";if(null===r)return"null";var o=t(r);if("boolean"===o)return"boolean";if("string"===o)return"string";if("number"===o)return"number";if("symbol"===o)return"symbol";if("function"===o)return"GeneratorFunction"===n(r)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(r))return"array";if(function(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}(r))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(r))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(r))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(r))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(r))return"regexp";switch(n(r)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(r))return"generator";switch(o=e.call(r)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return o.slice(8,-1).toLowerCase().replace(/\s/g,"")};function n(t){return t.constructor?t.constructor.name:null}function o(t,e){var n=2{document.head.appendChild(r)}):(document.head||document.documentElement).appendChild(r)),r.textContent=e}const s=globalThis.CUSTOM_USER_AGENT??("undefined"===typeof navigator?"":navigator.userAgent),c=/^(?:(?!chrome|android).)*safari/i.test(s),l=/iPad|iPhone|iPod/i.test(s)&&("undefined"===typeof window||!window.MSStream),d=l||s.includes("Macintosh")&&"undefined"!==typeof navigator&&navigator.maxTouchPoints>=1,u=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(s)||d,p="undefined"!==typeof window&&"undefined"!==typeof document;const f={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webkitSupportsFullscreen","webkitDisplayingFullscreen","onenterpictureinpicture","onleavepictureinpicture","disablePictureInPicture","cancelVideoFrameCallback","requestVideoFrameCallback","getVideoPlaybackQuality","requestPictureInPicture","webkitEnterFullScreen","webkitEnterFullscreen","webkitExitFullScreen","webkitExitFullscreen"]};class h extends Error{constructor(t){super("Failed to release ArtPlayer resources"),this.errors=t,this.name="ResourceCleanupError"}}class m{constructor(){this.cleanups=new Set,this.disposed=!1}get closed(){return this.disposed}add(t){let e=!0;const r=()=>{e&&(e=!1,this.cleanups.delete(r),t())};return this.closed?r():this.cleanups.add(r),r}child(){const t=new m,e=this.add(()=>{t.dispose()});return t.add(()=>{e()}),t}dispose(){if(this.closed)return;this.disposed=!0;const t=[];for(const r of Array.from(this.cleanups).reverse())try{r()}catch(e){e instanceof h?t.push(...e.errors):t.push(e)}if(t.length)throw new h(t)}}const g=new WeakMap,v=new WeakMap;function y(t){const e=g.get(t);if(!e)throw new Error("ArtPlayer lifecycle has not been initialized");return e}function b(t){return y(t).scope}function w(t){const e=y(t);return e.destroying||e.scope.closed}function x(t,e,r,n,o=!1){const i=y(t);if(i.destroying||i.scope.closed)return;i.destroying=!0;const a=[],s=t=>{try{t()}catch(e){a.push(...e instanceof h?e.errors:[e])}};n&&t.template?.$video&&s(()=>t.reset()),s(()=>i.scope.dispose()),s(()=>(t.template||i.mountingTemplate)?.destroy(r));const c=e.indexOf(t);-1!==c&&e.splice(c,1),t.isDestroy=!0,o||(i.releaseContainer?.(),i.releaseContainer=void 0),s(()=>t.emit("destroy")),s(()=>i.finalizers.dispose()),o&&i.rollback&&s(i.rollback),i.rollback=void 0,i.releaseContainer?.(),i.releaseContainer=void 0;for(const l of a.slice(1))console.warn("Additional ArtPlayer cleanup failure:",l);if(a.length)throw a[0]}const k=new WeakMap;function $(t,e){const r=b(t).child();return k.set(e,r),r}function E(t){const e=k.get(t);if(!e)throw new Error("ArtPlayer component has not been registered");return e}function A(t){k.get(t)?.dispose()}function C(t,e,r,n){const o=E(e);if(o.closed)return;const i=(...t)=>{if(!o.closed)return n(...t)};t.on(r,i),o.add(()=>{t.off(r,i)})}function S(t,e){return{on:(r,n)=>{C(t,e,r,n)},proxy:(r,n,o)=>function(t,e,r,n,o){const i=E(e);if(i.closed)return()=>{};const a=t.events.proxy(r,n,t=>{if(!i.closed)return o(t)});return i.add(()=>{t.events.remove(a)})}(t,e,r,n,o)}}function T(t){if(t.composedPath)return t.composedPath();const e=[];let r=t.target;for(;r;)e.push(r),r=r.parentNode??null;return"undefined"===typeof window||e.includes(window)||e.push(window),e}function L(t,e){return T(t).includes(e)}function P(){const t=document.createElement("div");return t.style.display="flex","flex"===t.style.display}function M(t){return t.getBoundingClientRect()}function z(){const t=document.createElement("div");t.style.cssText="position:fixed;top:env(safe-area-inset-top,0px);right:env(safe-area-inset-right,0px);bottom:env(safe-area-inset-bottom,0px);left:env(safe-area-inset-left,0px);pointer-events:none;visibility:hidden;";try{document.body.appendChild(t);const e=getComputedStyle(t);return{top:Number.parseFloat(e.top)||0,right:Number.parseFloat(e.right)||0,bottom:Number.parseFloat(e.bottom)||0,left:Number.parseFloat(e.left)||0}}finally{t.remove()}}function R(t,e=document){return e.querySelector(t)}function O(t,e){return t.classList.add(e)}function D(t,e){return t.classList.remove(e)}function I(t,e){return t.classList.contains(e)}function N(t,e){return e instanceof Element?t.appendChild(e):t.insertAdjacentHTML("beforeend",String(e)),t.lastElementChild||t.lastChild}function _(t){return Array.from(t.parentElement.children).filter(e=>e!==t)}function W(t,e){_(t).forEach(t=>D(t,e)),O(t,e)}function F(t,e){return e.parentNode.replaceChild(t,e),t}function V(t){return document.createElement(t)}function Y(t,e,r="top"){u||(t.setAttribute("aria-label",e),O(t,"hint--rounded"),O(t,`hint--${r}`))}function B(t="",e=""){const r=V("i");return O(r,"art-icon"),O(r,`art-icon-${t}`),N(r,e),r}function H(t,e,r){return t.style[e]=r,t}function j(t,e){for(const r in e)H(t,r,e[r]);return t}function q(t,e,r){return new Promise((n,o)=>{const i=r?r.child():new m;let a=!1,s=()=>{};function c(t){if(!a){a=!0;try{i.dispose()}catch(e){console.warn("Additional image cleanup failure:",e)}try{s()}catch(e){console.warn("Additional image cleanup failure:",e)}o(t)}}function l(t){if(!a&&!i.closed){a=!0;try{i.dispose(),n(t)}catch(e){try{s()}finally{o(e)}}}}if(i.add(()=>{if(!a){a=!0;try{s()}finally{n(void 0)}}}),!i.closed)try{const n=new Image;d(n,()=>{if(!e||1===e)return void l(n);const t=document.createElement("canvas"),o=t.getContext("2d");if(t.width=n.width*e,t.height=n.height*e,!o)throw new TypeError("Canvas 2D context is unavailable");a||i.closed||(o.drawImage(n,0,0,t.width,t.height),a||i.closed||t.toBlob(t=>{if(!a&&!i.closed)try{if(!t)throw new Error("Unable to encode thumbnail image");const e=URL.createObjectURL(t);let n=!1;const o=()=>{n||(n=!0,URL.revokeObjectURL(e))};if(s=r?r.add(o):o,a||i.closed)return void s();const c=new Image;d(c,()=>l(c)),i.closed||(c.src=e)}catch(e){c(e)}}))}),i.closed||(n.src=t)}catch(u){c(u)}function d(e,r){e.onload=()=>{if(!a&&!i.closed)try{r()}catch(u){c(u)}},e.onerror=()=>c(new Error(`Image load failed: ${t}`)),i.add(()=>{e.onload=null,e.onerror=null,a||e.removeAttribute("src")})}})}class U extends Error{constructor(t,e){super(t),"captureStackTrace"in Error&&"function"===typeof Error.captureStackTrace&&Error.captureStackTrace(this,e||this.constructor),this.name="ArtPlayerError"}}function X(t,e){if(!t)throw new U(e);return t}function G(t){const e=t;return e&&"function"===typeof e.catch?e.catch(()=>{}):t}function K(t){const e=t.search(/[?#]/),r=(e<0?t:t.slice(0,e)).trim().toLowerCase();return r.slice(r.lastIndexOf(".")+1)}function Z(t,e){const r=document.createElement("a");r.style.display="none",r.href=t,r.download=e,document.body.appendChild(r);try{r.click()}finally{r.remove()}}function J(t,e,r){return Math.max(Math.min(t,Math.max(e,r)),Math.min(e,r))}function Q(t){return t.charAt(0).toUpperCase()+t.slice(1)}function tt(t){if(!t)return"00:00";const e=Math.floor(t/3600),r=Math.floor((t-3600*e)/60),n=Math.floor(t-3600*e-60*r);return(e>0?[e,r,n]:[r,n]).map(t=>t<10?`0${t}`:String(t)).join(":")}const et={"&":"&","<":"<",">":">","'":"'",'"':"""},rt={"&":"&","<":"<",">":">","'":"'",""":'"'},nt=/(&|<|>|'|")/g;function ot(t){return t.replace(/[&<>'"]/g,t=>et[t]||t)}const it=Object.defineProperty,{hasOwnProperty:at}=Object.prototype;function st(t,e){return at.call(t,e)}function ct(t,e){return Object.getOwnPropertyDescriptor(t,e)}function lt(...t){const e=t=>!!t&&"object"===typeof t&&!Array.isArray(t);return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=t[n],i=r[n];let a;a=Array.isArray(o)&&Array.isArray(i)?o.concat(...i):e(o)&&e(i)?lt(o,i):i,it(t,n,{value:a,enumerable:!0,configurable:!0,writable:!0})}),t),{})}function dt(t){return"WEBVTT \r\n\r\n".concat((e=t,e.replace(/(\d\d:\d\d:\d\d)[,.](\d+)/g,(t,e,r)=>{let n=r.slice(0,3);return 1===r.length&&(n=`${r}00`),2===r.length&&(n=`${r}0`),`${e},${n}`})).replace(/\{\\([ibu])\}/g,"").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").replace(/\{[\s\S]*?\}/g,"").concat("\r\n\r\n"));var e}function ut(t){return URL.createObjectURL(new Blob([t],{type:"text/vtt"}))}function pt(t){const e=new RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i");function r(t=""){return t.split(/[:.]/).map((t,e,r)=>{if(e===r.length-1){if(1===t.length)return`.${t}00`;if(2===t.length)return`.${t}0`}else if(1===t.length)return(0===e?"0":":0")+t;return 0===e?t:e===r.length-1?`.${t}`:`:${t}`}).join("")}return`WEBVTT\n\n${t.split(/\r?\n/).map(t=>{const n=t.match(e);if(!n)return null;const[,o="",i="",,,a=""]=n;return{start:r(o.trim()),end:r(i.trim()),text:a.replace(/\{[\s\S]*?\}/g,"").replace(/(\\N)/g,"\n").trim().split(/\r?\n/).map(t=>t.trim()).join("\n")}}).filter(t=>t).map((t,e)=>t?`${e+1}\n${t.start} --\x3e ${t.end}\n${t.text}`:"").filter(t=>t.trim()).join("\n\n")}`}const ft=Object.freeze(Object.defineProperty({__proto__:null,ArtPlayerError:U,addClass:O,append:N,assToVtt:pt,capitalize:Q,clamp:J,createElement:V,debounce:function(t,e){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>(r=void 0,t.apply(this,n)),e)}},def:it,download:Z,errorHandle:X,escape:ot,get:ct,getComposedPath:T,getExt:K,getIcon:B,getRect:M,getSafeAreaInsets:z,getStyle:function(t,e,r=!0){const n=window.getComputedStyle(t,null).getPropertyValue(e);return r?Number.parseFloat(n):n},has:st,hasClass:I,includeFromEvent:L,inverseClass:W,isBrowser:p,isIOS:l,isIOS13:d,isInViewport:function(t,e=0){const r=t.getBoundingClientRect(),n=window.innerHeight||document.documentElement.clientHeight,o=window.innerWidth||document.documentElement.clientWidth,i=r.top-e<=n&&r.top+r.height+e>=0,a=r.left-e<=o+e&&r.left+r.width+e>=0;return i&&a},isMobile:u,isSafari:c,loadImg:function(t,e){return q(t,e,void 0)},mergeDeep:lt,query:R,queryAll:function(t,e=document){return Array.from(e.querySelectorAll(t))},remove:function(t){return t.parentNode.removeChild(t)},removeClass:D,replaceElement:F,secondToTime:tt,setStyle:H,setStyleText:a,setStyles:j,siblings:_,silencePromise:G,sleep:function(t=0){return new Promise(e=>setTimeout(e,t))},srtToVtt:dt,supportsFlex:P,throttle:function(t,e){let r=!1;return function(...n){r||(t.apply(this,n),r=!0,setTimeout(()=>{r=!1},e))}},tooltip:Y,unescape:function(t){return t.replace(nt,t=>rt[t]||t)},userAgent:s,vttToBlob:ut},Symbol.toStringTag,{value:"Module"}));function ht(){}function mt(t,e,r,n,o={}){const{capture:i=!1,once:a=!1,signal:s}=o;if(t.closed||s?.aborted)return ht;let c=ht;function l(e){a&&c(),t.closed||("function"===typeof n?n.call(this,e):n.handleEvent(e))}return e.addEventListener(r,l,o),c=t.add(()=>{try{e.removeEventListener(r,l,i)}finally{s?.removeEventListener("abort",c)}}),s?.addEventListener("abort",c,{once:!0}),c}function gt(t,e,r){if(t.closed)return ht;let n=!0,o=ht;const i=setTimeout(()=>{n&&(o(),t.closed||e())},r);return o=t.add(()=>{n=!1,clearTimeout(i)}),o}function vt(t,e=0){return t.closed?Promise.resolve(!1):new Promise(r=>{let n=!1,o=ht;const i=setTimeout(()=>{n=!0,o(),r(!0)},e);o=t.add(()=>{clearTimeout(i),n||r(!1)})})}const yt=new WeakSet;function bt(t){yt.add(t),t.preventDefault()}function wt(t){return!t.altKey&&!t.ctrlKey&&!t.metaKey&&!t.isComposing&&229!==t.keyCode}function xt(t,e,r=()=>e.click(),n=()=>!0){if(t.closed)return;e.hasAttribute("role")||e.setAttribute("role","button"),e.hasAttribute("tabindex")||(e.tabIndex=0);let o=!1;const i=()=>n()&&"true"!==e.getAttribute("aria-disabled")&&!e.hasAttribute("disabled"),a=t=>(t.composedPath()[0]||t.target)===e;mt(t,e,"keydown",t=>{const e=t;a(e)&&wt(e)&&!e.defaultPrevented&&("Enter"===e.key?(bt(e),!e.repeat&&i()&&r()):" "===e.key&&(bt(e),!e.repeat&&i()&&(o=!0)))}),mt(t,e,"keyup",t=>{const n=t;if(" "!==n.key)return;const s=o;o=!1,s&&a(n)&&wt(n)&&!n.defaultPrevented&&i()&&e.ownerDocument.activeElement===e&&(bt(n),r())}),mt(t,e,"blur",()=>{o=!1}),t.add(()=>{o=!1})}function kt(t,e){return N(t,e)}function $t(t,e){return e.querySelector(t)}const Et=new WeakSet;function At(t){const e=t.template.$player;!w(t)&&e.isConnected&&(e.hasAttribute("tabindex")||(e.setAttribute("tabindex","-1"),Et.has(e)||(Et.add(e),b(t).add(()=>{Et.delete(e),"-1"===e.getAttribute("tabindex")&&e.removeAttribute("tabindex")}))),e.focus({preventScroll:!0}))}const Ct=new WeakSet,St="[tabindex],button,input,select,textarea,a[href],[contenteditable]";function Tt(t){return[t,...t.querySelectorAll(St)].find(t=>{if(!t.matches(St)||t.tabIndex<0||t.matches(":disabled")||t.closest("[inert]")||"true"===t.getAttribute("aria-disabled")||!t.getClientRects().length)return!1;const e=t.ownerDocument.defaultView?.getComputedStyle(t);return"hidden"!==e?.visibility&&"collapse"!==e?.visibility})}function Lt(t,e,r){const n=e?.ownerDocument,o=n?.activeElement;if(!["control","contextmenu"].includes(t.name??"")||Ct.has(t)||!e||!n||!o||!e.contains(o))return()=>{};const i=t.art.template.$player,a=Array.from(i.querySelectorAll(`.art-${t.name}`)),s=a.indexOf(e),c=[...a.slice(s+1),...a.slice(0,s).reverse()];return Ct.add(t),()=>{if(Ct.delete(t),w(t.art)||!i.isConnected||n.activeElement!==n.body)return;const e=r?t.cache.get(r)?.$ref:void 0;for(const t of[...e?[e]:[],...c]){if(!i.contains(t))continue;const e=Tt(t);if(e)return void e.focus({preventScroll:!0})}At(t.art)}}const Pt="array",Mt="boolean",zt="string",Rt="number",Ot="object",Dt="function";function It(t,e,r){return X(e===zt||e===Rt||t instanceof Element,`${r.join(".")} require '${zt}' or 'Element' type`)}const Nt={html:It,disable:`?${Mt}`,name:`?${zt}`,index:`?${Rt}`,style:`?${Ot}`,click:`?${Dt}`,mounted:`?${Dt}`,tooltip:`?${zt}|${Rt}`,width:`?${Rt}`,selector:`?${Pt}`,onSelect:`?${Dt}`,switch:`?${Mt}`,onSwitch:`?${Dt}`,range:`?${Pt}`,onRange:`?${Dt}`,onChange:`?${Dt}`},_t={id:zt,container:It,url:zt,poster:zt,type:zt,theme:zt,lang:zt,volume:Rt,isLive:Mt,muted:Mt,autoplay:Mt,autoSize:Mt,autoMini:Mt,loop:Mt,flip:Mt,playbackRate:Mt,aspectRatio:Mt,screenshot:Mt,setting:Mt,hotkey:Mt,pip:Mt,mutex:Mt,backdrop:Mt,fullscreen:Mt,fullscreenWeb:Mt,subtitleOffset:Mt,miniProgressBar:Mt,useSSR:Mt,playsInline:Mt,lock:Mt,gesture:Mt,fastForward:Mt,autoPlayback:Mt,autoOrientation:Mt,airplay:Mt,proxy:`?${Dt}`,plugins:[Dt],layers:[Nt],contextmenu:[Nt],settings:[Nt],controls:[{...Nt,position:(t,e,r)=>{const n=["top","left","right"];return X("string"===typeof t&&n.includes(t),`${r.join(".")} only accept ${n.toString()} as parameters`)}}],quality:[{default:`?${Mt}`,html:zt,url:zt}],highlight:[{time:Rt,text:zt}],thumbnails:{url:zt,number:Rt,column:Rt,width:Rt,height:Rt,scale:Rt},subtitle:{url:zt,name:zt,type:zt,style:Ot,escape:Mt,encoding:zt,onVttLoad:Dt},moreVideoAttr:Ot,i18n:Ot,icons:Ot,cssVar:Ot,customType:Ot},Wt=new WeakSet;class Ft{constructor(t){this.id=0,this.art=t,this.cache=new Map,this.add=this.add.bind(this),this.remove=this.remove.bind(this),this.update=this.update.bind(this)}get show(){return I(this.art.template.$player,`art-${this.name}-show`)}set show(t){const{$player:e}=this.art.template,r=`art-${this.name}-show`;t?O(e,r):D(e,r),this.art.emit(this.name,t)}toggle(){this.show=!this.show}add(t){if(w(this.art))return;const e="function"===typeof t?t(this.art):t;if(w(this.art))return;if(e.html=e.html||"",o(e,Nt),!this.$parent||!this.name||e.disable)return;const r=e.name||`${this.name}${this.id}`,n=this.cache;X(!n.has(r),`Can't add an existing [${r}] to the [${this.name}]`),this.id+=1;const i=document.createElement("div"),a=$(this.art,i),s=[],c=Object.getOwnPropertyDescriptor(this,r);let l=!1;a.add(()=>{for(const t of s)this.art.events.remove(t)});try{if(a.closed)return;if(function(t,e,r,n,o,i){O(t,`art-${r}`),O(t,`art-${r}-${n}`);const a=Array.from(e.children);t.dataset.index=String(i.index||o);const s=a.find(e=>Number(e.dataset.index)>=Number(t.dataset.index));s?s.insertAdjacentElement("beforebegin",t):N(e,t),i.html&&N(t,i.html),i.style&&j(t,i.style),i.tooltip&&Y(t,i.tooltip)}(i,this.$parent,this.name,r,this.id,e),a.closed)return;if(e.click){("control"===this.name&&!e.selector||"contextmenu"===this.name&&!i.querySelector("[data-value]"))&&!i.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")&&xt(a,i);const t=this.art.events.proxy(i,"click",t=>{a.closed||(t.preventDefault(),e.click.call(this.art,this,t))});s.push(t)}if(e.selector&&["left","right"].includes(e.position)&&this.selector(e,i,s),a.closed)return;return function(t,e,r){const n=t;"__proto__"===e?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r}(this,r,i),l=!0,n.set(r,{$ref:i,events:s,option:e}),e.mounted&&e.mounted.call(this.art,i),i}catch(d){try{A(i)}catch(u){console.warn("ArtPlayer component cleanup failed:",u)}throw n.get(r)?.$ref===i&&n.delete(r),l&&this[r]===i&&(c?Object.defineProperty(this,r,c):delete this[r]),i.remove(),d}}remove(t){X(this.cache.has(t),`Can't find [${t}] from the [${this.name}]`);const e=this.cache.get(t);if(Wt.has(e))return;const r=Lt(this,e.$ref);Wt.add(e);try{e.option.beforeUnmount&&e.option.beforeUnmount.call(this.art,e.$ref);try{A(e.$ref)}finally{this.cache.get(t)===e&&(this.cache.delete(t),delete this[t]),e.$ref.remove()}}finally{Wt.delete(e),r()}}update(t){const e=Lt(this,this.cache.get(t.name)?.$ref,t.name);try{if(this.cache.has(t.name)){const e=this.cache.get(t.name);t=Object.assign(e.option,t),this.remove(t.name)}return this.add(t)}finally{e()}}}function Vt(t){for(const e of t.querySelectorAll("[data-value]"))e.setAttribute("aria-pressed",String(e.classList.contains("art-current")))}function Yt(t,e){const r=E(t);if(!r.closed){t.setAttribute("role","group"),t.setAttribute("aria-label",e);for(const n of t.querySelectorAll("[data-value]"))xt(r,n),n.setAttribute("aria-label",`${e}: ${n.textContent?.trim()??""}`);Vt(t)}}const Bt=new WeakMap;function Ht(t,e){e?Bt.set(t,e):Bt.delete(t)}function jt(t){const e=new Set;let r=t;for(;!e.has(r);){e.add(r);let t,n=r;for(;n&&!t;)t=Bt.get(n),n=n.parentElement;if(!t)return r;r=t}return t}function qt(t){const e=t;return!!e&&(["INPUT","TEXTAREA","SELECT"].includes(e.tagName)||e.isContentEditable)}function Ut(t){const e=t.ownerDocument.defaultView?.getComputedStyle(t).visibility;return t.isConnected&&!t.matches(":disabled")&&!t.closest("[inert]")&&"true"!==t.getAttribute("aria-disabled")&&t.getClientRects().length>0&&"hidden"!==e&&"collapse"!==e}class Xt extends Ft{constructor(t){super(t),this.name="contextmenu",this.$parent=t.template.$contextmenu,$(t,this.$parent),u||this.init()}init(){const{option:t,template:{$player:e,$contextmenu:r}}=this.art,{on:n,proxy:o}=S(this.art,r);t.playbackRate&&this.add(function(t){return e=>{const{i18n:r,constructor:{PLAYBACK_RATE:n}}=e,o=n.map(t=>`${1===t?r.get("Normal"):t.toFixed(1)}`).join(""),i=r.get("Play Speed");return{...t,html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.playbackRate=Number(n),t.show=!1)},mounted:t=>{const{on:r}=S(e,t),n=R('[data-value="1"]',t);n&&W(n,"art-current"),Yt(t,i),r("video:ratechange",()=>{const r=Array.from(t.querySelectorAll("span")).find(t=>Number(t.dataset.value)===e.playbackRate);r&&(W(r,"art-current"),Vt(t))})}}}}({name:"playbackRate",index:10})),t.aspectRatio&&this.add(function(t){return e=>{const{i18n:r,constructor:{ASPECT_RATIO:n}}=e,o=n.map(t=>`${"default"===t?r.get("Default"):t}`).join(""),i=r.get("Aspect Ratio");return{...t,html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.aspectRatio=n,t.show=!1)},mounted:t=>{const{on:r}=S(e,t),n=R('[data-value="default"]',t);n&&W(n,"art-current"),Yt(t,i),r("aspectRatio",e=>{const r=Array.from(t.querySelectorAll("span")).find(t=>t.dataset.value===e);r&&(W(r,"art-current"),Vt(t))})}}}}({name:"aspectRatio",index:20})),t.flip&&this.add(function(t){return e=>{const{i18n:r,constructor:{FLIP:n}}=e,o=n.map(t=>`${r.get(Q(t))}`).join(""),i=r.get("Video Flip");return{...t,html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.flip=n.toLowerCase(),t.show=!1)},mounted:t=>{const{on:r}=S(e,t),n=R('[data-value="normal"]',t);n&&W(n,"art-current"),Yt(t,i),r("flip",e=>{const r=Array.from(t.querySelectorAll("span")).find(t=>t.dataset.value===e);r&&(W(r,"art-current"),Vt(t))})}}}}({name:"flip",index:30})),this.add(function(t){return e=>({...t,html:e.i18n.get("Video Info"),click:t=>{e.info.show=!0,t.show=!1}})}({name:"info",index:40})),this.add(function(t){return{...t,html:`ArtPlayer ${i}`}}({name:"version",index:50})),this.add(function(t){return e=>({...t,html:e.i18n.get("Close"),click:t=>{t.show=!1}})}({name:"close",index:60}));for(let i=0;i{this.show=!0,a.closed||w(this.art)||!this.show||function(t,e,r){const{$player:n,$contextmenu:o}=t.template,{height:i,width:a,left:s,top:c}=M(n),{height:l,width:d}=M(o);let u=e-s,p=r-c;e+d>s+a&&(u=a-d),r+l>c+i&&(p=i-l),w(t)||j(o,{top:`${p}px`,left:`${u}px`})}(this.art,t,e)},c=function(t,e){const{art:r}=t,{$player:n,$contextmenu:o}=r.template,i=E(o),a=()=>!i.closed&&!w(r);let s,c=!1,l="",d=0;const u=()=>{const t=n.ownerDocument.activeElement;s=t&&n.contains(t)?jt(t):n,Ht(o,s)},p=()=>Array.from(o.querySelectorAll("[tabindex],button,input,select,textarea,a[href],[contenteditable]")).filter(t=>t.tabIndex>=0&&Ut(t)),f=r.i18n.get("Context Menu");if(!a())return{pointer:()=>!1};o.setAttribute("role","group"),o.setAttribute("aria-label",f);const h=t=>{if(!a())return;if(t)return void(o.contains(n.ownerDocument.activeElement)||u());const e=n.ownerDocument.activeElement,i=o.contains(e)||c&&e===n.ownerDocument.body,d=s;s=void 0,c=!1,l="",Ht(o),i&&(d&&n.contains(d)&&Ut(d)&&d.focus({preventScroll:!0}),(n.ownerDocument.activeElement===n.ownerDocument.body||o.contains(n.ownerDocument.activeElement))&&At(r))};r.on("contextmenu",h),i.add(()=>{r.off("contextmenu",h),Ht(o)}),mt(i,o,"focusin",()=>{c=!0});let m=!1;return mt(i,o,"focusout",e=>{o.contains(e.relatedTarget)||m||(m=!0,gt(i,()=>{m=!1,a()&&t.show&&!o.contains(n.ownerDocument.activeElement)&&(t.show=!1)},0))}),mt(i,n,"keydown",n=>{const i=n;if(!a()||!wt(i)||i.defaultPrevented)return;if(("ContextMenu"===i.key||"F10"===i.key&&i.shiftKey)&&r.constructor.CONTEXTMENU&&!qt(i.target)){bt(i),u();const r=i.target.getBoundingClientRect();return e(r.left,r.bottom),void(a()&&t.show&&p()[0]?.focus({preventScroll:!0}))}if(!t.show||!o.contains(i.target))return;if("Escape"===i.key)return bt(i),void(t.show=!1);if("Tab"===i.key)return void(t.show=!1);if(qt(i.target))return;const s=p(),c=s.indexOf(i.target);let f;if("ArrowDown"===i.key||"ArrowRight"===i.key)f=s[(c+1)%s.length];else if("ArrowUp"===i.key||"ArrowLeft"===i.key)f=s[(c+s.length-1)%s.length];else if("Home"===i.key)f=s[0];else if("End"===i.key)f=s[s.length-1];else{if(1!==i.key.length||" "===i.key)return;{const t=i.key.toLowerCase();l=Date.now()-d>700?t:l+t,d=Date.now();const e=[...l].every(e=>e===t)?t:l;f=[...s.slice(c+1),...s.slice(0,c+1)].find(t=>(t.getAttribute("aria-label")||t.textContent||"").trim().toLowerCase().startsWith(e))}}bt(i),f?.focus({preventScroll:!0})}),{pointer:t=>!(!a()||!r.constructor.CONTEXTMENU||qt(t.target))&&(u(),!0)}}(this,s);o(e,"contextmenu",t=>{c.pointer(t)&&(t.preventDefault(),s(t.clientX,t.clientY))}),o(e,"click",t=>{L(t,r)||(this.show=!1)}),n("blur",()=>{this.show=!1})}}const Gt=new WeakMap,Kt=new WeakMap,Zt=new WeakMap;function Jt(t,e){const r=Gt.get(t);r?.active()&&void 0!==r.resumePlaying&&(!e&&r.internalPause?r.internalPause=!1:(r.resumePlaying=e,e||r.pauseRevision++))}function Qt(t){return Zt.get(t)||b(t)}function te(t){const e=Gt.get(t),r=Zt.get(t);return()=>Gt.get(t)===e&&(!e||e.active())&&Zt.get(t)===r&&(!r||!r.closed)}function ee(t){const e=Zt.get(t),r=b(t).child(),n=r.child();Zt.set(t,r),r.add(()=>{Zt.get(t)===r&&Zt.delete(t)});const o={scope:n,assigned:!1,acceptingEvents:!1,pauseRevision:0,active:()=>!w(t)&&!n.closed&&Gt.get(t)===o};return Gt.set(t,o),n.add(()=>{Gt.get(t)===o&&Gt.delete(t),o.onAssigned=void 0,o.onError=void 0}),e?.dispose(),o}function re(t){t.assigned=!0;const e=t.onAssigned;t.onAssigned=void 0,t.active()&&e?.()}function ne(t,e,r){Kt.set(t,e),e.acceptingEvents=!0;try{t.url=r}finally{Kt.get(t)===e&&(Kt.delete(t),re(e))}}function oe(t,e){t.active()&&(t.onError?t.onError(e):console.warn("Failed to initialize ArtPlayer source:",e),t.scope.dispose())}function ie(t,e){const{$progress:r}=t.template,{left:n}=M(r),o=J((u?e.touches[0].clientX:e.clientX)-n,0,r.clientWidth),i=o/r.clientWidth*t.duration;return{second:i,time:tt(i),width:o,percentage:J(o/r.clientWidth,0,1)}}function ae(t,e,r=()=>!0){if(r())if(t.isRotate){const n=(e.touches[0].clientY-t.top)/t.height,o=n*t.duration;if(!r())return;t.emit("setBar","played",n,e),r()&&(t.seek=o)}else{const{second:n,percentage:o}=ie(t,e);if(!r())return;t.emit("setBar","played",o,e),r()&&(t.seek=n)}}const se=new Map([["ArrowRight",1],["ArrowUp",1],["ArrowLeft",-1],["ArrowDown",-1],["PageUp",10],["PageDown",-10]]);function ce(t,e,r){t.getAttribute(e)!==r&&t.setAttribute(e,r)}function le(t,e,r,n,o,i="horizontal"){const a=t=>[t.min,t.max,t.value,t.step].every(Number.isFinite)&&t.max>t.min&&t.step>0,s=(t,e)=>Math.min(e.max,Math.max(e.min,t)),c=()=>{if(t.closed)return;const r=n(),o=a(r),i=o?s(r.value,r):0;ce(e,"aria-disabled",String(!o)),ce(e,"aria-valuemin",String(o?r.min:0)),ce(e,"aria-valuemax",String(o?r.max:0)),ce(e,"aria-valuenow",String(i)),ce(e,"aria-valuetext",r.text(i))};return t.closed||(e.setAttribute("role","slider"),e.tabIndex=0,e.setAttribute("aria-label",r),e.setAttribute("aria-orientation",i),mt(t,e,"keydown",t=>{const r=t;if((r.composedPath()[0]||r.target)!==e||!wt(r)||r.defaultPrevented)return;const i=se.get(r.key);if(void 0===i&&"Home"!==r.key&&"End"!==r.key)return;bt(r);const l=n();if(!a(l))return void c();const d="Home"===r.key?l.min:"End"===r.key?l.max:s(l.value,l)+i*l.step;o(s(d,l)),c()}),c()),c}const de=new WeakMap;function ue(t){return de.get(t)||0}function pe(t,e,r){let n,o=!1,i=!1,a=!1,s=ue(t);const c=()=>a||ue(t)!==s,l=()=>!!t.template?.$video?.seeking;return{restore(i=()=>{t.currentTime=e}){if(!r()||c())return;const d=ue(t);i(),s=ue(t),s>d+1&&(a=!0),r()&&(n=t.currentTime,r()&&!c()&&(o=l()))},manual(){a=!0},ready(){if(!r()||l())return!1;const e=void 0!==n&&Math.abs(t.currentTime-n)>.05;if(!c()&&o&&!i&&void 0!==n&&e){if(i=!0,!r())return!1;t.currentTime=n}return r()&&!l()}}}function fe(t,e){const{icons:r,option:n}=t,{$player:o}=t.template,i=E(e),{on:a}=S(t,e);let s=()=>{};const c=$t(".art-progress-hover",e),l=$t(".art-progress-loaded",e),d=$t(".art-progress-played",e),p=$t(".art-progress-highlight",e),f=$t(".art-progress-indicator",e),h=$t(".art-progress-tip",e);function m(r,n){const{width:o,time:i}=n||ie(t,r);h.textContent=i||"00:00";const a=h.clientWidth;o<=a/2?H(h,"left",0):o>e.clientWidth-a/2?H(h,"left",e.clientWidth-a+"px"):H(h,"left",o-a/2+"px")}r.indicator?N(f,r.indicator):H(f,"backgroundColor","var(--art-theme)"),a("setBar",function(r,n,a){const g="played"===r&&a&&u;if("loaded"===r&&H(l,"width",100*n+"%"),"hover"===r&&(H(c,"width",100*n+"%"),L(a,p)?function(r){const{width:n}=ie(t,r),o=r.target instanceof HTMLElement?r.target.dataset.text:void 0;h.textContent=o??"";const i=h.clientWidth;n<=i/2?H(h,"left",0):n>e.clientWidth-i/2?H(h,"left",e.clientWidth-i+"px"):H(h,"left",n-i/2+"px")}(a):m(a),0===n?D(o,"art-progress-hover"):O(o,"art-progress-hover")),"played"===r&&(H(d,"width",100*n+"%"),H(f,"left",100*n+"%")),g){O(o,"art-progress-hover");m(a,{width:e.clientWidth*n,time:tt(n*t.duration)}),s(),s=gt(i,()=>{D(o,"art-progress-hover")},500)}}),a("video:loadedmetadata",function(){p.textContent="";for(let e=0;e{t.emit("setBar","played",t.played),t.emit("setBar","loaded",t.loaded)}):(a("video:timeupdate",()=>{t.emit("setBar","played",t.played)}),a("video:progress",()=>{t.emit("setBar","loaded",t.loaded)}),a("video:ended",()=>{t.emit("setBar","played",1)})),t.emit("setBar","loaded",t.loaded||0)}function he(t){return e=>({...t,html:'\n
\n
\n
\n
\n
\n
\n
00:00
\n
\n ',mounted:t=>{fe(e,t),function(t,e){const{$progress:r}=t.template,n=e.querySelector(".art-progress-indicator"),{on:o,proxy:i}=S(t,e),a=E(e);let s=0;const c=()=>{const e=te(t);return()=>!a.closed&&!w(t)&&e()},l=()=>{const t=++s,e=c();return()=>t===s&&e()};if(!u){let e;i(r,"click",e=>{e.target!==n&&ae(t,e,l())}),i(r,"mousemove",e=>{const r=c(),{percentage:n}=ie(t,e);r()&&t.emit("setBar","hover",n,e)}),i(r,"mouseleave",e=>{t.emit("setBar","hover",0,e)}),i(r,"mousedown",t=>{e=0===t.button?l():void 0}),o("document:mousemove",r=>{const n=e;if(n?.()){const{second:o,percentage:i}=ie(t,r);if(!n()||e!==n)return;t.emit("setBar","played",i,r),n()&&e===n&&(t.seek=o)}else e=void 0}),o("document:mouseup",()=>{e=void 0})}}(e,t),function(t,e){const r=E(e),{on:n}=S(t,e);let o,i=0;const a=le(r,e,t.i18n.get("Progress"),()=>({min:0,max:t.duration,value:t.currentTime,step:t.constructor.SEEK_STEP,text:e=>`${tt(e)} / ${tt(Number.isFinite(t.duration)&&t.duration>0?t.duration:0)}`}),e=>{const n=++i;o?.dispose();const s=r.child();o=s;const c=Qt(t).add(()=>{s.dispose()});s.add(()=>{c()}),s.add(()=>{o===s&&(o=void 0)});const l=te(t),d=()=>n===i&&!s.closed&&!w(t)&&l(),u=pe(t,e,d),p=()=>{d()?u.ready()&&(s.dispose(),a()):s.dispose()};for(const r of["video:seeked","video:ended"])t.on(r,p),s.add(()=>{t.off(r,p)});try{t.emit("setBar","played",e/t.duration),d()&&u.restore(()=>{t.seek=e}),p()}catch(f){throw s.dispose(),f}});n("video:loadedmetadata",a),n("video:durationchange",a),n("video:emptied",a),n("video:timeupdate",a),n("video:seeking",a),n("video:seeked",a),n("video:ended",a)}(e,t)}})}function me(t){const{option:e}=t.art;e.isLive||t.add(he({name:"progress",position:"top",index:10})),t.add({name:"thumbnails",position:"top",index:20}),t.add(function(t){return e=>({...t,mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e,a=kt(t,o.play),s=kt(t,o.pause);function c(){t.setAttribute("aria-label",i.get("Play")),H(a,"display","flex"),H(s,"display","none")}function l(){t.setAttribute("aria-label",i.get("Pause")),H(a,"display","none"),H(s,"display","flex")}xt(E(t),t,()=>(e.playing?s:a).click()),Y(a,i.get("Play")),Y(s,i.get("Pause")),n(a,"click",()=>{G(e.play())}),n(s,"click",()=>{e.pause()}),e.playing?l():c(),r("video:playing",()=>{l()}),r("video:pause",()=>{c()})}})}({name:"playAndPause",position:"left",index:10})),t.add(function(t){return e=>({...t,mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e,a=kt(t,o.volume),s=kt(t,o.volumeClose);for(const e of[a,s])xt(E(t),e),e.setAttribute("aria-label",i.get("Mute"));const c=kt(t,'
'),l=kt(c,'
'),d=kt(l,'
'),p=kt(l,'
'),f=kt(p,'
'),h=kt(f,'
'),m=kt(p,'
'),g=E(t);let v=0;const y=le(g,p,i.get("Volume"),()=>({min:0,max:100,value:e.muted?0:100*e.volume,step:100*e.constructor.VOLUME_STEP,text:t=>`${Math.round(t)}%`}),t=>{const r=++v;e.muted=!1,r!==v||g.closed||w(e)||(e.volume=t/100)},"vertical");function b(t){const{top:e,height:r}=M(p);return 1-(t.clientY-e)/r}function x(){y();const r=t.ownerDocument.activeElement,n=e.muted||0===e.volume,o=n?s:a;if(a.setAttribute("aria-pressed",String(e.muted)),s.setAttribute("aria-pressed",String(e.muted)),n)H(a,"display","none"),H(s,"display","flex"),H(m,"top","100%"),H(h,"top","100%"),d.textContent="0";else{const t=100*e.volume;H(a,"display","flex"),H(s,"display","none"),H(m,"top",100-t+"%"),H(h,"top",100-t+"%"),d.textContent=String(Math.floor(t))}r!==a&&r!==s||r===o||o.focus({preventScroll:!0})}if(x(),r("video:volumechange",x),n(a,"click",()=>{e.muted=!0}),n(s,"click",()=>{e.muted=!1}),u)H(c,"display","none");else{let t=!1;n(p,"mousedown",r=>{t=0===r.button,e.volume=b(r)}),r("document:mousemove",r=>{t&&(e.muted=!1,e.volume=b(r))}),r("document:mouseup",()=>{t&&(t=!1)})}}})}({name:"volume",position:"left",index:20})),e.isLive||t.add(function(t){return e=>({...t,style:u?{fontSize:"12px",padding:"0 5px"}:{cursor:"auto",padding:"0 10px"},mounted:t=>{const{on:r}=S(e,t);function n(){const r=`${tt(e.currentTime)} / ${tt(e.duration)}`;r!==t.textContent&&(t.textContent=r)}n();const o=["video:loadedmetadata","video:timeupdate","video:progress"];for(let e=0;e{r&&!b(t.art).closed&&(t.art.quality=e.quality)}).catch(t=>{console.warn("ArtPlayer quality initialization failed:",t)}),e.screenshot&&!u&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("Screenshot"),mounted:t=>{const{proxy:r}=S(e,t),{icons:n}=e;xt(E(t),t),kt(t,n.screenshot),r(t,"click",()=>{G(e.screenshot())})}})}({name:"screenshot",position:"right",index:20})),e.setting&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("Show Setting"),mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e;kt(t,o.setting),xt(E(t),t),t.setAttribute("aria-expanded","false"),n(t,"click",()=>{e.setting.toggle(),e.setting.resize()}),r("setting",e=>{t.setAttribute("aria-expanded",String(e)),Y(t,i.get(e?"Hide Setting":"Show Setting"))})}})}({name:"setting",position:"right",index:30})),e.pip&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("PIP Mode"),mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e;xt(E(t),t),kt(t,o.pip),n(t,"click",()=>{e.pip=!e.pip}),r("pip",e=>{Y(t,i.get(e?"Exit PIP Mode":"PIP Mode"))})}})}({name:"pip",position:"right",index:40})),e.airplay&&"WebKitPlaybackTargetAvailabilityEvent"in window&&window.WebKitPlaybackTargetAvailabilityEvent&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("AirPlay"),mounted:t=>{const{proxy:r}=S(e,t),{icons:n}=e;xt(E(t),t),kt(t,n.airplay),r(t,"click",()=>e.airplay())}})}({name:"airplay",position:"right",index:50})),e.fullscreenWeb&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("Web Fullscreen"),mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e;xt(E(t),t);const a=kt(t,o.fullscreenWebOn),s=kt(t,o.fullscreenWebOff);H(s,"display","none"),n(t,"click",()=>{e.fullscreenWeb=!e.fullscreenWeb}),r("fullscreenWeb",e=>{e?(Y(t,i.get("Exit Web Fullscreen")),H(a,"display","none"),H(s,"display","inline-flex")):(Y(t,i.get("Web Fullscreen")),H(a,"display","inline-flex"),H(s,"display","none"))})}})}({name:"fullscreenWeb",position:"right",index:60})),e.fullscreen&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("Fullscreen"),mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e;xt(E(t),t);const a=kt(t,o.fullscreenOn),s=kt(t,o.fullscreenOff);H(s,"display","none"),n(t,"click",()=>{e.fullscreen=!e.fullscreen}),r("fullscreen",e=>{e?(Y(t,i.get("Exit Fullscreen")),H(a,"display","none"),H(s,"display","inline-flex")):(Y(t,i.get("Fullscreen")),H(a,"display","inline-flex"),H(s,"display","none"))})}})}({name:"fullscreen",position:"right",index:70}));for(let r=0;rye.get(t).option.selector}),it(t,"$control_item",{get:()=>ye.get(t).item}),it(t,"$control_value",{get:()=>ye.get(t).value})),ye.set(t,e)}function we(t,e){t.innerHTML=e}function xe(t,e,r,n,o){const{proxy:i}=t.events,a=E(n),s=r.selector;O(n,"art-control-selector");const c=document.createElement("div");O(c,"art-selector-value"),N(c,r.html),n.textContent="",N(n,c);const l=kt(n,'
');for(let f=0;f{if(a.closed)return;const o=T(n),i=r.selector.find(t=>o.includes(t.$control_item));if(!i)return;const s=++d,l=()=>!a.closed&&s===d,u=a.add(function(t,e){return ge.set(t,e),()=>{ge.get(t)===e&&ge.delete(t)}}(n,l));try{if(e(i),a.closed)return;if(r.onSelect){const e=await r.onSelect.call(t,i,i.$control_item,n);if(l()){const t=c.contains(c.ownerDocument.activeElement);we(c,e),ye.get(i)?.refresh?.(t)}}}catch(p){console.warn("ArtPlayer selector failed:",p)}finally{u()}});o.push(u);const p=function(t,e,r,n,o){if(t.closed)return()=>{};const i=Array.from(n.children),a=i.some(t=>t.querySelector(ve));n.setAttribute("role",a?"group":"listbox"),n.setAttribute("aria-label",o);let s=!1,c=!1,l=!1,d="",u=0;const p=()=>i.length>0&&(c||s&&!l),f=()=>r.querySelector('button,a[href],[role="button"]')||r,h=(e=!1)=>{if(t.closed)return;const n=f();r.querySelector(ve)?(r.removeAttribute("role"),r.removeAttribute("tabindex")):(r.setAttribute("role","button"),r.tabIndex=0),n!==r&&(r.removeAttribute("aria-haspopup"),r.removeAttribute("aria-expanded"),r.removeAttribute("aria-disabled")),a?n.removeAttribute("aria-haspopup"):n.setAttribute("aria-haspopup","listbox"),n.setAttribute("aria-expanded",String(p())),n.setAttribute("aria-disabled",String(0===i.length)),e&&r.isConnected&&r.ownerDocument.activeElement===r.ownerDocument.body&&n.focus({preventScroll:!0})},m=(t,r=!1)=>{c=t,l=r,e.classList.toggle("art-selector-open",t),e.classList.toggle("art-selector-dismissed",r),h()},g=e=>{e&&!t.closed&&((e.querySelector(ve)||e).focus({preventScroll:!0}),t.closed||e.scrollIntoView({block:"nearest",inline:"nearest"}))},v=(e=!1)=>{!t.closed&&i.length&&(m(!0),d="",g(i.find(t=>t.classList.contains("art-current"))||i[e?i.length-1:0]))},y=()=>{if(t.closed)return;const o=n.contains(e.ownerDocument.activeElement);m(!1,!0),d="",o&&r.isConnected&&f().focus({preventScroll:!0})};xt(t,r,()=>{r.click(),e.ownerDocument.activeElement===r&&v()}),h();for(const b of i){const e=b.classList.contains("art-current");a?b.setAttribute("aria-current",String(e)):(b.setAttribute("role","option"),b.setAttribute("aria-selected",String(e))),b.querySelector(ve)||(b.tabIndex=-1,xt(t,b,()=>{b.click(),y()}))}return mt(t,r,"keydown",t=>{const e=t;!wt(e)||e.defaultPrevented||e.target!==r&&e.target!==f()||("ArrowDown"===e.key||"ArrowUp"===e.key?(bt(e),v("ArrowUp"===e.key)):"Escape"===e.key&&p()&&(bt(e),y()))}),mt(t,r,"click",t=>{t.isTrusted&&0===t.detail&&f()!==r&&v()}),mt(t,n,"keydown",t=>{const e=t;if(!wt(e)||e.defaultPrevented)return;if("Escape"===e.key)return bt(e),void y();const r=i.indexOf(e.target);if(r<0)return;let n;switch(1!==e.key.length&&(d=""),e.key){case"ArrowDown":n=Math.min(r+1,i.length-1);break;case"ArrowUp":n=Math.max(r-1,0);break;case"Home":n=0;break;case"End":n=i.length-1;break;case"ArrowLeft":case"ArrowRight":return void bt(e);default:{if(1!==e.key.length||" "===e.key)return;const t=Date.now();d=t-u<500?d+e.key.toLocaleLowerCase():e.key.toLocaleLowerCase(),u=t;const o=[...d].every(t=>t===d[0])?d[0]:d;for(let e=1;e<=i.length;e++){const t=(r+e)%i.length;if(i[t].textContent?.trim().toLocaleLowerCase().startsWith(o)){n=t;break}}}}bt(e),void 0!==n&&g(i[n])}),mt(t,n,"click",t=>{t.isTrusted&&0===t.detail&&y()}),mt(t,e,"mouseenter",()=>{s=!0,m(c)}),mt(t,e,"mouseleave",()=>{s=!1,m(n.contains(e.ownerDocument.activeElement))}),mt(t,e,"focusout",t=>{e.contains(t.relatedTarget)||m(!1,!0)}),t.add(()=>{e.classList.remove("art-selector-open","art-selector-dismissed")}),h}(a,n,c,l,String(r.tooltip||r.name||c.textContent||t.i18n.get("Open")));for(const f of s)ye.get(f).refresh=p}class ke extends Ft{constructor(t){super(t),this.isHover=!1,this.name="control",this.timer=Date.now();const{constructor:e}=t,{$player:r,$bottom:n}=this.art.template,o=function(t,e,r){let n,o,i=!0;const a=()=>!t.closed&&i&&e.contains(e.ownerDocument.activeElement),s=()=>{const t=a(),n=e.classList.contains("art-keyboard-focus");e.classList.toggle("art-keyboard-focus",t),t&&!n&&r()},c=()=>{i=!0,s()},l=()=>{i=!1,s()},d=()=>{n!==e.ownerDocument&&(o?.dispose(),n=e.ownerDocument,o=t.child(),mt(o,n,"keydown",c,{capture:!0}),mt(o,n,"mousedown",l,{capture:!0}),mt(o,n,"touchstart",l,{capture:!0,passive:!0}))};return d(),mt(t,e,"keydown",c,{capture:!0}),mt(t,e,"mousedown",l,{capture:!0}),mt(t,e,"touchstart",l,{capture:!0,passive:!0}),mt(t,e,"focusin",()=>{d(),s()}),mt(t,e,"focusout",()=>{e.classList.remove("art-keyboard-focus")}),t.add(()=>{e.classList.remove("art-keyboard-focus")}),a}($(t,n),r,()=>{this.show=!0}),{on:i,proxy:a}=S(t,n);a(r,"focusin",e=>{t.isFocus=!0,t.isInput="INPUT"===e.target?.tagName}),a(r,"focusout",e=>{r.contains(e.relatedTarget)||(t.isFocus=!1,t.isInput=!1)}),i("mousemove",()=>{u||(this.show=!0)}),i("click",()=>{u?this.toggle():this.show=!0}),i("document:mousemove",t=>{this.isHover=L(t,n)}),i("video:timeupdate",()=>{!t.setting.show&&!this.isHover&&!t.isInput&&!o()&&t.playing&&this.show&&Date.now()-this.timer>=e.CONTROL_HIDE_TIME&&(this.show=!1)}),i("control",t=>{t?(D(r,"art-hide-cursor"),O(r,"art-hover"),this.timer=Date.now()):(O(r,"art-hide-cursor"),D(r,"art-hover"))}),this.init(),b(t).closed||function(t){const{$bottom:e,$controls:r,$player:n}=t.template,o=E(e),{on:i}=S(t,e),a=()=>{if(o.closed)return;const t=r.offsetHeight;t>0&&n.style.getPropertyValue("--art-controls-height")!==`${t}px`&&n.style.setProperty("--art-controls-height",`${t}px`)};if(i("resize",a),"undefined"!==typeof ResizeObserver){const t=new ResizeObserver(a);return t.observe(r),void o.add(()=>{t.disconnect()})}if("undefined"!==typeof MutationObserver){const t=new MutationObserver(a);t.observe(r,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),o.add(()=>{t.disconnect()})}a()}(t)}init(){me(this)}add(t){if(w(this.art))return;const e="function"===typeof t?t(this.art):t,{$progress:r,$controlsLeft:n,$controlsRight:o}=this.art.template;switch(e.position){case"top":this.$parent=r;break;case"left":this.$parent=n;break;case"right":this.$parent=o;break;default:X(!1,"Control option.position must one of 'top', 'left', 'right'")}super.add(e)}check(t){!function(t){if(!t)return;const e=t.$control_value.contains(t.$control_value.ownerDocument.activeElement);we(t.$control_value,t.html);for(let r=0;rthis.check(t),t,e,r)}}function $e(t,e){const{constructor:r,template:{$video:n}}=t;!function(t){const{$player:e}=t.template,r=r=>{if(w(t))return;const n=L(r,e);t.isInput=n&&"INPUT"===r.target?.tagName,t.isFocus=n,t.emit(n?"focus":"blur",r)};t.on("document:click",r),t.on("document:contextmenu",r),b(t).add(()=>{t.off("document:click",r),t.off("document:contextmenu",r)})}(t);let o=[];e.proxy(n,"click",e=>{if(w(t))return;const n=Date.now();o.push(n);const{MOBILE_CLICK_PLAY:i,DBCLICK_TIME:a,MOBILE_DBCLICK_PLAY:s,DBCLICK_FULLSCREEN:c}=r,l=o.filter(t=>n-t<=a);switch(l.length){case 1:if(t.emit("click",e),w(t))return;(!u||!t.isLock&&i)&&G(t.toggle()),o=l;break;case 2:if(t.emit("dblclick",e),w(t))return;u?!t.isLock&&s&&G(t.toggle()):c&&(t.fullscreen=!t.fullscreen),o=[];break;default:o=[]}})}function Ee(t){let e;const r=()=>{e=void 0},n=r=>e===r&&!w(t)&&!t.isLock&&!t.option.isLive&&t.isRotate===r.rotated&&r.sourceActive(),o=t=>{t&&r()};t.on("document:touchend",r),t.on("document:touchcancel",r),t.on("lock",o),b(t).add(()=>{r(),t.off("document:touchend",r),t.off("document:touchcancel",r),t.off("lock",o)});return{start:(o,i)=>{r();const a=i.touches[0];if(w(t)||t.isLock||t.option.isLive||1!==i.touches.length||!a)return;if(![a.pageX,a.pageY,a.clientX,a.clientY,t.currentTime].every(Number.isFinite))return;const s={target:o,identifier:a.identifier,x:a.pageX,y:a.pageY,time:t.currentTime,rotated:t.isRotate,sourceActive:te(t)};if(e=s,o===t.template.$progress){const o=t.isRotate?t.height:t.template.$progress.clientWidth;if(!Number.isFinite(o)||o<=0||!Number.isFinite(t.duration)||t.duration<=0)return void r();try{ae(t,i,()=>n(s))}catch(c){throw e===s&&r(),c}n(s)&&(s.time=t.currentTime)}},move:o=>{const i=e,a=o.touches[0];if(!i)return;if(!n(i)||1!==o.touches.length||!a||a.identifier!==i.identifier)return void r();const s=i.rotated?t.height:t.width,c=i.target===t.template.$video?t.constructor.TOUCH_MOVE_RATIO:1;if(![a.pageX,a.pageY,s,t.duration,c].every(Number.isFinite)||s<=0||t.duration<=0)return void r();const l=function(t,e,r,n){const o=e-n,i=r-t;if(Math.abs(i)<2&&Math.abs(o)<2)return 0;const a=180*Math.atan2(o,i)/Math.PI;return a>=-45&&a<45?4:a>=45&&a<135?1:a>=-135&&a<-45?2:a>=135&&a<=180||a>=-180&&a<-135?3:0}(i.x,i.y,a.pageX,a.pageY);if(!(i.rotated?1===l||2===l:3===l||4===l))return;const d=J((i.rotated?a.pageY-i.y:a.pageX-i.x)/s,-1,1),u=J(i.time+t.duration*d*c,0,t.duration);t.seek=u,n(i)&&(t.emit("setBar","played",J(u/t.duration,0,1),o),n(i)&&(t.notice.show=`${tt(u)} / ${tt(t.duration)}`))},cancel:r}}const Ae=["click","mouseup","keydown","touchend","touchcancel","touchmove","mousemove","pointerup","contextmenu","pointermove","visibilitychange","webkitfullscreenchange"],Ce=["resize","scroll","orientationchange"];const Se=new WeakMap;function Te(t){const e=Se.get(t);if(!e)throw new Error("ArtPlayer event registry has not been initialized");return e}function Le(t,e,r,n,o={}){if(Array.isArray(r)){const i=[];try{return r.map(r=>{const a=Le(t,e,r,n,o);return i.push(a),a})}catch(f){for(const t of i.reverse())try{t()}catch(h){console.warn("Failed to roll back event listener:",h)}throw f}}const i=r,a=Te(t);if(a.scope.closed||a.cleaning)return()=>{};const s="boolean"===typeof o?o:{capture:Boolean(o?.capture),once:Boolean(o?.once),passive:o?.passive,signal:o?.signal},c="boolean"===typeof s?s:s.capture,l="boolean"===typeof s?void 0:s.signal;if(a.scope.closed||a.cleaning||l?.aborted)return()=>{};let d=!0;function u(r=!1){(d||r)&&(e.removeEventListener(i,n,c),l?.removeEventListener("abort",p),d=!1,t.destroyEvents.delete(p))}function p(){u()}t.destroyEvents.add(p);try{e.addEventListener(i,n,s),!d||a.scope.closed||a.cleaning?u(!0):l?.aborted?p():l?.addEventListener("abort",p,{once:!0})}catch(f){try{u(!0)}catch(h){console.warn("Failed to roll back event listener:",h)}throw f}return p}function Pe(t){return(e,r)=>{if(w(t))return;const n=(...e)=>{if(!w(t))return r(...e)};t.on(e,n),b(t).add(()=>{t.off(e,n)})}}function Me(t){if(!t.constructor.USE_RAF)return;const e=b(t);let r=()=>{};const n=()=>{w(t)||(t.playing&&t.emit("raf"),w(t)||(r=function(t,e){if(t.closed)return ht;let r=!0,n=ht;const o=requestAnimationFrame(o=>{r&&(n(),t.closed||e(o))});return n=t.add(()=>{r=!1,cancelAnimationFrame(o)}),n}(e,n)))};n(),Pe(t)("destroy",()=>r())}class ze{constructor(t){this.destroyEvents=new Set,function(t,e){Se.set(t,{scope:b(e),cleaning:!1})}(this,t),b(t).add(()=>{this.destroy()}),this.proxy=this.proxy.bind(this),this.hover=this.hover.bind(this),$e(t,this),function(t,e){const{$player:r}=t.template;e.hover(r,e=>{w(t)||(O(r,"art-hover"),t.emit("hover",!0,e))},e=>{w(t)||(D(r,"art-hover"),t.emit("hover",!1,e))})}(t,this),function(t,e){const{$player:r}=t.template;e.proxy(r,"mousemove",e=>{w(t)||t.emit("mousemove",e)})}(t,this),function(t,e){const{option:r,constructor:n}=t,o=Pe(t);o("resize",()=>{const{aspectRatio:e,notice:n}=t;"standard"===t.state&&r.autoSize&&t.autoSize(),w(t)||(t.aspectRatio=e,w(t)||(n.show=""))});const i=b(t);let a=()=>{};const s=()=>{w(t)||(a(),a=gt(i,()=>t.emit("resize"),n.RESIZE_TIME))};o("window:orientationchange",s),o("window:resize",s);const c=t.template.$player.ownerDocument.defaultView?.screen?.orientation;"function"===typeof c?.addEventListener&&e.proxy(c,"change",s)}(t,this),function(t,e){if(!u||t.option.isLive)return;const{$video:r,$progress:n}=t.template,o=Ee(t),i=t=>{e.proxy(t,"touchstart",e=>o.start(t,e)),e.proxy(t,"touchmove",t=>o.move(t)),e.proxy(t,"touchcancel",o.cancel)};t.option.gesture&&i(r),i(n)}(t,this),function(t){const{option:e,constructor:r,template:{$container:n}}=t,o=r.SCROLL_TIME,i=b(t),a=Pe(t);let s=!1;a("window:scroll",()=>{s||(t.emit("view",function(t,e){const r=t.getBoundingClientRect(),n=t.ownerDocument,o=n.defaultView,i=o?.innerHeight||n.documentElement.clientHeight,a=o?.innerWidth||n.documentElement.clientWidth,s=r.top-e<=i&&r.top+r.height+e>=0,c=r.left-e<=a+e&&r.left+r.width+e>=0;return s&&c}(n,r.SCROLL_GAP)),w(t)||(s=!0,gt(i,()=>{s=!1},o)))}),a("view",r=>{e.autoMini&&(t.mini=!r)})}(t),function(t,e){let r,n=0;b(t).add(()=>{r=void 0,n++});const o=t=>{if(t){for(const r of t.disposers)e.remove(r);t.disposers.length=0}};function i(i={}){if(w(t))return;const a=++n,s={disposers:[]},c=()=>a!==n||w(t);try{const{$player:n}=t.template,o=i.document||n.ownerDocument||document,a=i.window||n.ownerDocument?.defaultView||window,l=(n,o,i)=>{for(const a of o){if(c())return;s.disposers.push(e.proxy(n,a,e=>{r!==s||w(t)||t.emit(`${i}:${a}`,e)}))}};l(o,Ae,"document"),l(a,Ce,"window")}catch(d){throw o(s),d}if(c())return void o(s);const l=r;r=s,o(l)}i(),e.bindGlobalEvents=i}(t,this),Me(t)}proxy(t,e,r,n={}){return Array.isArray(e),Le(this,t,e,r,n)}hover(t,e,r){e&&this.proxy(t,"mouseenter",e),r&&this.proxy(t,"mouseleave",r)}remove(t){!function(t,e){if(t.destroyEvents.has(e))try{e(),t.destroyEvents.delete(e)}catch(r){console.warn("Failed to remove event listener:",r)}}(this,t)}destroy(){!function(t){const e=Te(t);if(!e.cleaning){e.cleaning=!0;try{for(const e of t.destroyEvents)try{e(),t.destroyEvents.delete(e)}catch(r){console.warn("Failed to destroy event listener:",r)}}finally{e.cleaning=!1}}}(this)}}function Re(t){if(t&&1===t.nodeType)return t}function Oe(t){const e=t.tagName.toUpperCase();return"INPUT"===e||"TEXTAREA"===e||"SELECT"===e||t.isContentEditable}function De(t,e){if(function(t){return yt.has(t)}(t)||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey||t.isComposing||229===t.keyCode)return!1;const r=function(t,e){const r=t.target;return 9===r?.nodeType?r:r?.ownerDocument||t.view?.document||e}(t,e);let n=Re(r.activeElement);for(;n?.shadowRoot?.activeElement;)n=Re(n.shadowRoot.activeElement);if(n&&Oe(n))return!1;const o=Re(t.composedPath?.()[0])||Re(t.target),i="Enter"===t.key||"Enter"===t.code||"NumpadEnter"===t.code;if(i||" "===t.key||"Space"===t.code){const t='button,summary,[role="button"],[role="switch"]'+(i?",a[href]":"");if(o?.closest?.(t)||n?.closest?.(t))return!1}return!o||!Oe(o)}const Ie=new WeakMap;class Ne{constructor(t){this.art=t,this.keys={},Ie.set(this,{subscribed:!1}),u||this.init()}init(){const t=this.art;if(w(t))return;const e=Ie.get(this);if(t.option.hotkey){if(!e.defaults){const r=function(t){const{constructor:e}=t;return{Escape:()=>{t.fullscreenWeb&&(t.fullscreenWeb=!1)},Space:()=>{G(t.toggle())},ArrowLeft:()=>{t.backward=e.SEEK_STEP},ArrowUp:()=>{t.volume+=e.VOLUME_STEP},ArrowRight:()=>{t.forward=e.SEEK_STEP},ArrowDown:()=>{t.volume-=e.VOLUME_STEP}}}(t);e.defaults=()=>{for(const t of Object.keys(r))this.add(t,r[t])}}e.defaults()}if(e.subscribed)return;e.subscribed=!0;const r=e=>{if(!w(t)){if(t.isFocus&&De(e,t.template.$player.ownerDocument)){const r=Object.prototype.hasOwnProperty.call(this.keys,e.code)?this.keys[e.code]:void 0;if(r){e.preventDefault();for(let n=0;n{e.subscribed=!1,t.off("document:keydown",r)})}add(t,e){const r=Object.prototype.hasOwnProperty.call(this.keys,t)?this.keys[t]:void 0;return r?r.includes(e)||r.push(e):Object.defineProperty(this.keys,t,{value:[e],enumerable:!0,configurable:!0,writable:!0}),this}remove(t,e){const r=Object.prototype.hasOwnProperty.call(this.keys,t)?this.keys[t]:void 0;if(r){const n=r.indexOf(e);-1!==n&&r.splice(n,1),0===r.length&&delete this.keys[t]}return this}}const _e={"Context Menu":"\u5feb\u6377\u83dc\u5355",Lock:"\u9501\u5b9a",Back:"\u8fd4\u56de",Settings:"\u8bbe\u7f6e",Progress:"\u64ad\u653e\u8fdb\u5ea6","Video Info":"\u7edf\u8ba1\u4fe1\u606f",Close:"\u5173\u95ed","Video Load Failed":"\u52a0\u8f7d\u5931\u8d25",Volume:"\u97f3\u91cf",Play:"\u64ad\u653e",Pause:"\u6682\u505c",Rate:"\u901f\u5ea6",Mute:"\u9759\u97f3","Video Flip":"\u753b\u9762\u7ffb\u8f6c",Horizontal:"\u6c34\u5e73",Vertical:"\u5782\u76f4",Reconnect:"\u91cd\u65b0\u8fde\u63a5","Show Setting":"\u663e\u793a\u8bbe\u7f6e","Hide Setting":"\u9690\u85cf\u8bbe\u7f6e",Screenshot:"\u622a\u56fe","Play Speed":"\u64ad\u653e\u901f\u5ea6","Aspect Ratio":"\u753b\u9762\u6bd4\u4f8b",Default:"\u9ed8\u8ba4",Normal:"\u6b63\u5e38",Open:"\u6253\u5f00","Switch Video":"\u5207\u6362","Switch Subtitle":"\u5207\u6362\u5b57\u5e55",Fullscreen:"\u5168\u5c4f","Exit Fullscreen":"\u9000\u51fa\u5168\u5c4f","Web Fullscreen":"\u7f51\u9875\u5168\u5c4f","Exit Web Fullscreen":"\u9000\u51fa\u7f51\u9875\u5168\u5c4f","Mini Player":"\u8ff7\u4f60\u64ad\u653e\u5668","PIP Mode":"\u5f00\u542f\u753b\u4e2d\u753b","Exit PIP Mode":"\u9000\u51fa\u753b\u4e2d\u753b","PIP Not Supported":"\u4e0d\u652f\u6301\u753b\u4e2d\u753b","Fullscreen Not Supported":"\u4e0d\u652f\u6301\u5168\u5c4f","Subtitle Offset":"\u5b57\u5e55\u504f\u79fb","Last Seen":"\u4e0a\u6b21\u770b\u5230","Jump Play":"\u8df3\u8f6c\u64ad\u653e",AirPlay:"\u9694\u7a7a\u64ad\u653e","AirPlay Not Available":"\u9694\u7a7a\u64ad\u653e\u4e0d\u53ef\u7528"};!function(t,e){if("undefined"!==typeof window){window[t]=e}}("artplayer-i18n-zh-cn",_e);class We{constructor(t){this.art=t,this.languages={"zh-cn":_e},this.language={},this.update(t.option.i18n)}init(){const t=this.art.option.lang.toLowerCase();this.language=st(this.languages,t)&&this.languages[t]||{}}get(t){return st(this.language,t)&&this.language[t]||t}update(t){this.languages=lt(this.languages,t),this.init()}}const Fe={loading:'\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n',state:'\r\n\r\n\r\n',play:'\r\n \r\n',pause:'\r\n \r\n',check:'\r\n\r\n',volume:'\r\n \r\n \r\n',volumeClose:'\r\n \r\n \r\n',screenshot:'\r\n\t\r\n\r\n',setting:'\r\n \r\n \r\n',pip:'\r\n\r\n',arrowLeft:'\r\n \r\n',arrowRight:'\r\n \r\n',playbackRate:'',aspectRatio:'',config:'',lock:'\r\n\r\n\r\n\r\n\r\n',flip:'\r\n\r\n\r\n\r\n\r\n\r\n',unlock:'\r\n\r\n\r\n',fullscreenOff:'\r\n\r\n\r\n\r\n\r\n',fullscreenOn:'\r\n\r\n\r\n\r\n\r\n',fullscreenWebOff:'\r\n\r\n\r\n\r\n\r\n',fullscreenWebOn:'\r\n\r\n\r\n\r\n\r\n',switchOn:'\r\n\r\n\r\n \r\n',switchOff:'\r\n\r\n\r\n \r\n\r\n',error:'\r\n\r\n\r\n\r\n\r\n',close:'\r\n\r\n\r\n\r\n\r\n',airplay:'\r\n \r\n \r\n \r\n \r\n\r\n'};class Ve{constructor(t){const e={...Fe,...t.option.icons};for(const r in e)it(this,r,{get:()=>B(r,e[r])})}}const Ye=new WeakMap;function Be(t,e,r){const n=()=>!e.closed&&!w(t),o=t=>{try{e.dispose()}catch(r){console.warn("Failed to release info polling resources:",r)}throw t};try{const{proxy:i,constructor:a,template:{$infoPanel:s,$infoClose:c,$video:l}}=t,d=i(c,"click",()=>{n()&&r()});e.add(()=>{t.events.remove(d)});const u=Array.from(s.querySelectorAll("[data-video]")),p=()=>e.dispose();t.on("destroy",p),e.add(()=>{t.off("destroy",p)}),function(t,e,r){const{$player:n,$info:o,$infoClose:i}=t.template;if(!o)return;const a=()=>!e.closed&&!w(t),s=()=>n.classList.contains("art-info-show"),c=t.i18n.get("Close");if(!a())return;const l=t.i18n.get("Video Info");if(!a())return;i.setAttribute("aria-label",c),o.setAttribute("role","group"),o.setAttribute("aria-label",l),xt(e,i,()=>i.click(),s),mt(e,o,"keydown",t=>{const e=t;a()&&s()&&wt(e)&&!e.defaultPrevented&&"Escape"===e.key&&(bt(e),r())});const d=e=>{if(!a())return;const r=n.ownerDocument,s=r.activeElement;if(e)o.contains(s)||(Ye.delete(t),s&&n.contains(s)&&(Ye.set(t,jt(s)),n.classList.contains("art-keyboard-focus")&&i.focus({preventScroll:!0})));else{const e=Ye.get(t);if(Ye.delete(t),!o.contains(s))return;const i=e&&r.defaultView?.getComputedStyle(e).visibility;e?.isConnected&&n.contains(e)&&e.getClientRects().length&&"hidden"!==i&&"collapse"!==i&&!e.matches(":disabled")&&!e.closest("[inert]")&&"true"!==e.getAttribute("aria-disabled")?e.focus({preventScroll:!0}):At(t)}};t.on("info",d),e.add(()=>{t.off("info",d)})}(t,e,r);const f=()=>{try{for(const t of u){if(!n())return;const e=Reflect.get(l,t.dataset.video??"undefined");if(!n())return;const r="number"===typeof e?e.toFixed(2):e;if(!n())return;if(t.textContent!==r){const e=null==r?null:`${r}`;if(!n())return;t.textContent=e}}n()&>(e,f,a.INFO_LOOP_TIME)}catch(t){o(t)}};n()&&f()}catch(i){o(i)}}const He=new WeakMap;class je extends Ft{constructor(t){super(t),this.name="info",He.set(this,{revision:0}),u||this.init()}init(){const t=He.get(this),e=++t.revision;if(t.scope?.dispose(),w(this.art)||t.revision!==e)return;const r=b(this.art).child();t.scope=r,r.add(()=>{t.scope===r&&(t.scope=void 0)}),Be(this.art,r,()=>{this.show=!1})}}class qe extends Ft{constructor(t){super(t);const{option:e,template:{$layer:r}}=t;this.name="layer",this.$parent=r;for(let n=0;n{H(i,"display","none"),H(s,"display",null),w(t)&&(c=!0)};var d;t.on("destroy",l),(d=t,y(d).finalizers).add(()=>{try{c||l()}finally{t.off("destroy",l)}}),w(t)||n.proxy(e.$state,"click",()=>{w(t)||G(t.play())})}}const Ge=new WeakMap;function Ke(t){const e=Ge.get(t);e.revision++,e.pending=void 0,null!==t.timer&&(clearTimeout(t.timer),t.timer=null)}class Ze{constructor(t){this.art=t,this.timer=null,Ge.set(this,{revision:0});const e=()=>this.destroy();t.on("destroy",e),b(t).add(()=>{t.off("destroy",e)}),b(t).add(()=>{this.destroy()})}destroy(){Ke(this)}set show(t){if(w(this.art))return;const e=Ge.get(this);e.revision++;const{constructor:r,template:{$player:n,$noticeInner:o}}=this.art;if(t){Ke(this);const i=e.revision,a=()=>!w(this.art)&&e.revision===i;if(o.textContent=t instanceof Error?t.message.trim():t,!a())return;if(O(n,"art-notice-show"),!a())return;const s=r.NOTICE_TIME;if(!a())return;const c={};e.pending=c;const l=setTimeout(()=>{if(w(this.art)||e.pending!==c)return;e.pending=void 0;const t=e.revision;o.textContent="",w(this.art)||e.revision!==t||D(n,"art-notice-show")},s);a()?this.timer=l:clearTimeout(l)}else D(n,"art-notice-show")}get show(){const{template:{$player:t}}=this.art;return t.classList.contains("art-notice-show")}}function Je(t,e){return function(t,e){const r=lt(e,t);return r.container=t.container,o(r,_t)}(t,e)}function Qe({width:t,height:e}){return Number.isFinite(t)&&t>0&&Number.isFinite(e)&&e>0}function tr(t,e){if(!Qe(t)||!Number.isFinite(e)||e<=0)return;const r=t.width/t.height>e?{width:e*t.height,height:t.height,axis:"width"}:{width:t.width,height:t.width/e,axis:"height"};return Qe(r)?r:void 0}function er(t,e,r,n=!1){const o=e=>{w(t)||r(e)};t[n?"once":"on"](e,o),b(t).add(()=>{t.off(e,o)})}function rr(t,e,r){for(const[n,o]of e){if(w(t)||r&&!r())return;t[n].show=o}}function nr(t){const{option:e,constructor:r,i18n:n,notice:o,template:{$player:i}}=t;let a,s=Qt(t),c=0;return{reset(){c=0,a?.dispose(),D(i,"art-error")},loadStart(){D(i,"art-error")},schedule(l){(async l=>{if(w(t))return;const d=Qt(t);if(d!==s&&(s=d,c=0),a&&!a.closed)return;const u=d.child();a=u,u.add(()=>{a===u&&(a=void 0)});const p=()=>!w(t)&&!u.closed&&d===Qt(t),f=c{console.warn("ArtPlayer reconnect failed:",t)})}}}const or=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],ir=(()=>{if("undefined"===typeof document)return!1;const t=or[0],e={};for(const r of or){if(r[1]in document){for(const[n,o]of r.entries())e[t[n]]=o;return e}}return!1})(),ar={change:ir.fullscreenchange,error:ir.fullscreenerror},sr={request:(t=document.documentElement,e)=>new Promise((r,n)=>{const o=()=>{sr.off("change",o),r()};sr.on("change",o);const i=t[ir.requestFullscreen](e);i instanceof Promise&&i.then(o).catch(n)}),exit:()=>new Promise((t,e)=>{if(!sr.isFullscreen)return void t();const r=()=>{sr.off("change",r),t()};sr.on("change",r);const n=document[ir.exitFullscreen]();n instanceof Promise&&n.then(r).catch(e)}),toggle:(t,e)=>sr.isFullscreen?sr.exit():sr.request(t,e),onchange(t){sr.on("change",t)},onerror(t){sr.on("error",t)},on(t,e){const r=ar[t];r&&document.addEventListener(r,e,!1)},off(t,e){const r=ar[t];r&&document.removeEventListener(r,e,!1)},raw:ir};function cr(t,e,...r){const n=Reflect.get(t,e);if("function"!==typeof n)throw new TypeError(`Fullscreen method ${e} is not available`);return n.apply(t,r)}Object.defineProperties(sr,{isFullscreen:{get:()=>Boolean(document[ir.fullscreenElement])},element:{enumerable:!0,get:()=>document[ir.fullscreenElement]},isEnabled:{enumerable:!0,get:()=>Boolean(document[ir.fullscreenEnabled])}});const lr=new WeakMap;function dr(t){try{Promise.resolve(t()).catch(()=>{})}catch{}}function ur(t){const{document:e,elementProperty:r,changeEvent:n,target:o,exit:i}=t,a=function(t,e,r){let n=lr.get(t);if(!n){n=new WeakMap,lr.set(t,n);const o=n;t.addEventListener(r,()=>{const r=Reflect.get(t,e),n=r&&o.get(r);n&&(o.delete(r),dr(n))})}return n}(e,r,n);a.set(o,i),t.element===o&&(a.delete(o),dr(i))}function pr(t,e,r,n,o=()=>t.element!==t.target){const i=e.child();let a,s,c=!1,l=!1,d=!1,u=!1,p=!1;const f=new Promise((t,e)=>{a=t,s=e});function h(t=!1,e){if(!c){c=!0;try{i.dispose()}catch(r){t||(t=!0,e=r)}t?s(e):a()}}i.add(()=>{c||(c=!0,l=!0,a(),d&&!u&&r&&ur(t))});const m=()=>{d&&!u&&(r?t.element===t.target:o())&&h()};if(mt(i,t.document,t.changeEvent,m),mt(i,t.document,t.errorEvent,e=>{e.target!==t.target&&e.target!==t.document||(p=!0,d&&!u&&h(!0,new Error("Fullscreen request failed")))}),!i.closed)try{r&&function(t){lr.get(t.document)?.delete(t.target)}(t);const e=r?t.request():t.exit();u=Boolean(e&&"function"===typeof e.then),d=!0,l&&!u&&r&&ur(t),u?Promise.resolve(e).then(()=>{l?n():h()},t=>h(!0,t)).catch(()=>{}):p?h(!0,new Error("Fullscreen request failed")):m()}catch(g){h(!0,g)}return{promise:f,cancel:()=>i.dispose()}}function fr(t,e){const r=b(t).child(),{$player:n,$video:o}=t.template,i=()=>e.element===n||e.element===o;let a,s=i(),c=0,l=s,d=!1,u=!1,p=!1;function f(){if(i())try{Promise.resolve(e.exit()).catch(()=>{})}catch{}}return r.add(()=>{c+=1,l=!1,n.classList.remove("art-fullscreen"),f()}),mt(r,e.document,e.changeEvent,()=>{const r=i();if(r&&function(t){return lr.get(t.document)?.has(t.target)??!1}(e))return;if(r&&u)return void f();if(r===s||w(t))return;s=r;const o=c,a=()=>w(t)||i()!==r||o!==c&&l!==r;t.emit("fullscreen",r),a()||(r&&(t.state="fullscreen"),a()||(n.classList.toggle("art-fullscreen",r),t.emit("resize")))}),mt(r,e.document,e.errorEvent,r=>{(r.target===n||r.target===o||r.target===e.document&&(p||void 0!==a||i()))&&!w(t)&&t.emit("fullscreenError",r)}),{get:()=>!w(t)&&i(),set(n){if(w(t))return Promise.resolve();const o=++c;if(l=Boolean(n),l?u=!1:d&&(u=!0),a?.cancel(),a=void 0,d=!1,!l&&!i())return Promise.resolve();p=!0,d=l;const s=pr(e,r,l,()=>{!w(t)&&l||f()},()=>!i());p=!1,c===o?a=s:s.cancel();const h=s.promise.catch(e=>{throw w(t)||c!==o||(t.notice.show=e),e}).finally(()=>{c===o&&(a=void 0,d=!1)});return h.catch(()=>{}),h}}}const hr=new WeakSet;function mr(t,e=!1){return"string"===typeof t.webkitPresentationMode?"fullscreen"===t.webkitPresentationMode:"boolean"===typeof t.webkitDisplayingFullscreen?t.webkitDisplayingFullscreen:t.ownerDocument.fullscreenElement===t||e}function gr(t){hr.delete(t),t.removeEventListener("webkitbeginfullscreen",vr),t.removeEventListener("webkitpresentationmodechanged",vr)}function vr(t){if(hr.has(this)&&mr(this,"webkitbeginfullscreen"===t.type)){gr(this);try{this.webkitExitFullscreen?.()}catch{}}}function yr(t){hr.add(t),t.addEventListener("webkitbeginfullscreen",vr),t.addEventListener("webkitpresentationmodechanged",vr)}function br(t){const{$video:e}=t.template,r=b(t).child();let n=!1,o=mr(e),i=o,a=!1,s=0;const c=()=>mr(e,n);function l(r){if(w(t)||(l=e,hr.has(l)))return;var l;"boolean"===typeof r&&(n=r);const d=c();if(d&&(a=!1),d===o)return;o=d;const u=s,p=()=>w(t)||c()!==d||u!==s&&i!==d;t.emit("fullscreen",d),p()||(d&&(t.state="fullscreen"),p()||t.emit("resize"))}r.add(()=>{s++,i=!1,a&&yr(e),c()&&e.webkitExitFullscreen?.()}),mt(r,e,"webkitbeginfullscreen",()=>l(!0)),mt(r,e,"webkitendfullscreen",()=>l(!1)),mt(r,e,"webkitpresentationmodechanged",()=>l());const d=()=>l();return t.on("document:webkitfullscreenchange",d),r.add(()=>{t.off("document:webkitfullscreenchange",d)}),{get:()=>!w(t)&&c(),set(r){if(w(t))return;const n=++s;if(i=Boolean(r),r){if(gr(e),t.state="fullscreen",w(t)||n!==s)return;a=!0;try{e.webkitEnterFullscreen()}catch(o){throw n===s&&(a=!1),o}}else a&&(a=!1,yr(e)),c()&&e.webkitExitFullscreen()}}}function wr(t){return{node:t,parent:t.parentNode,next:t.nextSibling}}function xr({node:t,parent:e,next:r}){if(!e)return void t.parentNode?.removeChild(t);const n=r?.parentNode===e?r:null;t.parentNode===e&&t.nextSibling===n||e.insertBefore(t,n)}function kr(t,e,r){const n=Math.max(0,r.viewportWidth-r.width),o=Math.max(0,r.viewportHeight-r.height);return{left:Math.max(0,Math.min(t,n)),top:Math.max(0,Math.min(e,o))}}function $r(t){const{width:e,height:r}=t.getBoundingClientRect(),n=t.ownerDocument.defaultView;return{width:e,height:r,viewportWidth:n.innerWidth,viewportHeight:n.innerHeight}}function Er(t,e,r,n){const o=e.child();if(o.closed)return;const i=t.template.$mini;if(i){const t=i.style.display;return o.add(()=>{i.style.display=t}),{element:i,cancelDrag:()=>{},fresh:!1}}const a=t.template.$player.ownerDocument,s=a.createElement("div");s.className="art-mini-popup",o.add(()=>{s.remove()});try{const e=a.createElement("div");if(e.className="art-mini-close",e.append(t.icons.close),o.closed)return;const i=a.createElement("div");i.className="art-mini-state";const c=t.icons.play,l=t.icons.pause;if(o.closed)return;i.append(c,l),s.append(e,i),xt(o,e,()=>e.click(),r),xt(o,i,()=>(t.playing?l:c).click(),r);const d=t.i18n.get("Close");if(o.closed||w(t))return;e.setAttribute("aria-label",d);const u=t.i18n.get("Mini Player");if(o.closed||w(t))return;s.setAttribute("role","group"),s.setAttribute("aria-label",u),mt(o,s,"keydown",t=>{const e=t;r()&&wt(e)&&!e.defaultPrevented&&"Escape"===e.key&&(bt(e),n())}),mt(o,e,"click",n),mt(o,c,"click",()=>{G(t.play())}),mt(o,l,"click",()=>{t.pause()});const p=()=>{if(o.closed)return;const e=t.i18n.get(t.playing?"Pause":"Play");o.closed||w(t)||(i.setAttribute("aria-label",e),c.style.display=t.playing?"none":"flex",l.style.display=t.playing?"flex":"none")};p();for(const r of["video:playing","video:pause","video:timeupdate"])t.on(r,p),o.add(()=>{t.off(r,p)});const f=function(t,e,r,n){let o=!1,i=0,a=0;const s=()=>{o=!1,e.classList.remove("art-mini-dragging"),e.style.transform=""};mt(r,e,"mousedown",t=>{const e=t;0===e.button&&n()&&(o=!0,i=e.clientX,a=e.clientY)});const c=t=>{!r.closed&&o&&n()&&(e.classList.add("art-mini-dragging"),e.style.transform=`translate(${t.clientX-i}px, ${t.clientY-a}px)`)},l=()=>{if(r.closed||!o||!n())return;const i=e.getBoundingClientRect(),a=kr(i.left,i.top,$r(e));s(),e.style.left=`${a.left}px`,e.style.top=`${a.top}px`,t.storage.set("left",a.left),r.closed||t.storage.set("top",a.top)};return t.on("document:mousemove",c),r.add(()=>{t.off("document:mousemove",c)}),t.on("document:mouseup",l),r.add(()=>{t.off("document:mouseup",l)}),r.add(s),s}(t,s,o,r);if(o.closed)return;if(t.template.$mini=s,a.body.append(s),!o.closed)return{element:s,cancelDrag:f,fresh:!0,focus:()=>e.focus({preventScroll:!0})}}catch(c){throw o.dispose(),t.template.$mini===s&&delete t.template.$mini,c}}function Ar(t){const{$player:e,$video:r}=t.template,n=b(t).child();let o,i,a=0,s=!1,c=!1;const l=()=>!w(t)&&e.classList.contains("art-mini"),d=function(t){const e=t.template.$player;let r;return{entering(){const n=e.ownerDocument,o=n.activeElement,i=o&&e.contains(o);t.template.$mini?.contains(o)||(r=i?jt(o):void 0);const a=i&&e.classList.contains("art-keyboard-focus");return e=>{!a||w(t)||n.activeElement!==o&&n.activeElement!==n.body||e?.()}},leaving(n){const o=e.ownerDocument,i=n?.contains(o.activeElement);return()=>{if(!i||w(t)||o.activeElement!==o.body&&!n?.contains(o.activeElement))return;const e=r&&o.defaultView?.getComputedStyle(r).visibility;r?.isConnected&&r.getClientRects().length&&"hidden"!==e&&"collapse"!==e&&"true"!==r.getAttribute("aria-disabled")&&!r.matches(":disabled")&&!r.closest("[inert]")?r.focus({preventScroll:!0}):At(t)}}}}(t);function u(){if(i){const e=i,r=a;i=void 0;try{xr(e)}catch(t){throw r!==a||i||(i=e),t}}}function p(){if(w(t))return;const r=++a;c=!1;const n=d.leaving(t.template.$mini);u(),w(t)||r!==a||(o?.cancelDrag(),e.classList.remove("art-mini"),t.template.$mini&&(t.template.$mini.style.display="none",n(),w(t)||r!==a||t.emit("mini",!1)))}function f(){if(w(t))return;const h=++a;if(s)return void(c=!0);const m=d.entering();if(t.state="mini",!w(t)&&h===a){i??(i=wr(r)),e.classList.add("art-mini");try{if(!o){s=!0;try{o=Er(t,n,l,p)}finally{s=!1}}if(c)return c=!1,void f();if(!o||w(t))return;if(h!==a)return void(l()||(o.element.style.display="none"));if(o.fresh?o.element.prepend(r):o.element.append(r),w(t)||h!==a)return;o.element.style.display=o.fresh?"":"flex",o.fresh=!1;const e=t.storage.get("top"),i=function(t,e,r){return"number"===typeof t&&Number.isFinite(t)&&"number"===typeof e&&Number.isFinite(e)&&t>=0&&e>=0&&t+r.width<=r.viewportWidth&&e+r.height<=r.viewportHeight?{left:t,top:e,reset:!1}:{...kr(r.viewportWidth-r.width-50,r.viewportHeight-r.height-50,r),reset:!0}}(t.storage.get("left"),e,$r(o.element));if(w(t)||h!==a)return;if(o.element.style.left=`${i.left}px`,o.element.style.top=`${i.top}px`,i.reset){if(t.storage.set("top",i.top),w(t)||h!==a)return;t.storage.set("left",i.left)}w(t)||h!==a||m(o.focus),w(t)||h!==a||t.emit("mini",!0)}catch(g){const r=c;throw c=!1,w(t)||h!==a&&!r||(u(),e.classList.remove("art-mini"),o&&(o.element.style.display="none")),g}}}return n.add(()=>{a++;try{u()}finally{o?.cancelDrag(),e.classList.remove("art-mini")}}),{get:l,set(t){t?f():p()}}}const Cr=new WeakSet,Sr=t=>"picture-in-picture"===t.webkitPresentationMode;function Tr(t){Cr.delete(t),t.removeEventListener("webkitpresentationmodechanged",Lr),t.removeEventListener("enterpictureinpicture",Lr)}function Lr(){if(Cr.has(this)&&Sr(this)){Tr(this);try{this.webkitSetPresentationMode?.("inline")}catch{}}}function Pr(t){Cr.add(t),t.addEventListener("webkitpresentationmodechanged",Lr),t.addEventListener("enterpictureinpicture",Lr)}function Mr(t,e,r,n,o=!0){let i,a=!1;const s=e=>{t.closed||a||(o&&(a=!0,i()),n(e))};return e[o?"once":"on"](r,s),i=t.add(()=>{e.off(r,s)}),s}function zr(t,e,r){return new Promise((n,o)=>{if(w(t)||e===t.url)return void n();const i=function(t){const e=Gt.get(t);return e?.active()?e.resumePlaying:void 0}(t)??t.playing,a=ee(t);a.resumePlaying=i;const s=a.scope.child();let c=!1;const l=(t=!1,e)=>{c||(c=!0,a.resumePlaying=void 0,a.onError=void 0,a.onAssigned=void 0,s.dispose(),t?o(e):n(),t&&a.scope.dispose())};s.add(()=>{l()});const d=()=>!c&&a.active(),u=t=>l(!0,t);a.onError=u;try{const{aspectRatio:n,playbackRate:o}=t;a.internalPause=!0;try{t.pause()}finally{a.internalPause=!1}if(!d())return;const i=s.child();let c=!1,p=!1,f=!1;const h=pe(t,r,d),m=async()=>{const e=a.pauseRevision;if(t.aspectRatio=n,d()){if(a.resumePlaying)try{await t.play()}catch{}d()&&(a.pauseRevision===e&&(t.notice.show=""),l())}},g=()=>{if(d()&&!p&&c)try{if(t.template?.$video?.seeking)return;if(!d())return;if(f||(f=!0,t.playbackRate=o),!h.ready()||!d()||p)return;p=!0,i.dispose(),m().catch(u)}catch(e){u(e)}},v={"video:error":u,"video:loadedmetadata":()=>{if(d())try{h.restore()}catch(t){u(t)}},"video:canplay":()=>{c=!0,g()},"video:seeked":g,seek:h.manual},y=s.child(),b=[],w=Object.keys(v);for(const e of w)Mr(y,t,e,t=>{a.acceptingEvents&&b.push([e,t])},!1);if(ne(t,a,e),!d())return;if(t.notice.show="",!d())return;const x=()=>{if(y.dispose(),!e)return void l();const r={};for(const e of w)r[e]=Mr(i,t,e,v[e],"video:seeked"!==e);for(const[t,e]of b){if(!d()||i.closed)break;r[t](e)}b.length=0};a.assigned?x():a.onAssigned=x}catch(p){u(p)}})}function Rr(t,e){const{number:r,column:n,width:o,height:i,scale:a}=t,{imageWidth:s,videoWidth:c,videoHeight:l,progressWidth:d,position:u}=e,p=Number(n),f=Number(o)*Number(a)||s/p,h=Number(i)*Number(a)||f/(c/l),m=Math.floor(u/(d/Number(r)));return{height:`${h}px`,width:`${f}px`,backgroundPosition:`-${m%p*f}px -${Math.floor(m/p)*h}px`,left:u<=f/2?0:u>d-f/2?d-f+"px":u-f/2+"px"}}function Or(t){const{option:e,template:{$video:r}}=t;it(t,"url",{get:()=>r.src,async set(n){if(w(t))return;const o=function(t){const e=Kt.get(t);return Kt.delete(t),e||ee(t)}(t);o.acceptingEvents=!1;try{if(!n)return void(await vt(o.scope)&&o.active()&&(t.loading.show=!0));const i=t.url,a=e.type||K(n),s=e.customType[a];if(a&&s){if(!(await vt(o.scope))||!o.active())return;t.loading.show=!0}if(!o.active())return;const c=o.scope.child();let l=!1,d=!1;Mr(c,t,"video:canplay",()=>{l=!d}),Mr(c,t,"video:error",()=>{d=!0});try{if(o.acceptingEvents=!0,a&&s){const e=s.call(t,r,n,t);Promise.resolve(e).catch(t=>oe(o,t))}else{if(!o.active())return;r.src=n}}finally{c.dispose()}if(!o.active())return;if(i!==t.url&&(t.option.url=n,o.active()&&t.isReady&&i)){const e=()=>{o.active()&&t.emit("restart",n)};l?e():d||Mr(o.scope,t,"video:canplay",e)}}catch(i){oe(o,i)}finally{re(o)}}})}const Dr=[function(t){const{template:{$video:e}}=t;it(t,"attr",{value(t,r){const n=e;if(void 0===r)return n[t];n[t]=r}})},function(t){const{i18n:e,notice:r,option:n,constructor:{instances:o},template:{$video:i}}=t;it(t,"play",{async value(){Jt(t,!0);const a=function(t){const e=te(t),r=Gt.get(t),n=r?.pauseRevision;return()=>e()&&r?.pauseRevision===n}(t),s=await i.play();if(!a())return s;const c=e.get("Play");if(!a())return s;if(r.show=c,!a())return s;if(t.emit("play"),n.mutex)for(let e=0;et.playing?t.pause():t.play()})},function(t){const{notice:e}=t;it(t,"seek",{set(r){t.currentTime=r,t.duration&&(e.show=`${tt(t.currentTime)} / ${tt(t.duration)}`),t.emit("seek",t.currentTime,r)}});const r=t;it(t,"forward",{set(e){r.seek=t.currentTime+e}}),it(t,"backward",{set(e){r.seek=t.currentTime-e}})},function(t){const{template:{$video:e},i18n:r,notice:n,storage:o}=t;it(t,"volume",{get:()=>e.volume||0,set:t=>{e.volume=J(t,0,1),n.show=`${r.get("Volume")}: ${Number.parseInt(String(100*e.volume),10)}`,0!==e.volume&&o.set("volume",e.volume)}}),it(t,"muted",{get:()=>e.muted,set:r=>{e.muted=r,t.emit("muted",r)}})},function(t){const{$video:e}=t.template;it(t,"currentTime",{get:()=>e.currentTime||0,set:r=>{const n=Number.parseFloat(r);Number.isNaN(n)||(!function(t){de.set(t,ue(t)+1)}(t),e.currentTime=J(n,0,t.duration))}})},function(t){it(t,"duration",{get:()=>{const{duration:e}=t.template.$video;return e===1/0?0:e||0}})},function(t){const e=e=>zr(t,e,0);it(t,"switchQuality",{value:e=>zr(t,e,t.currentTime)}),it(t,"switchUrl",{value:e}),it(t,"switch",{set:e})},function(t){const{template:{$video:e},i18n:r,notice:n}=t,o=t;it(t,"playbackRate",{get:()=>e.playbackRate,set(t){if(t){if(t===e.playbackRate)return;e.playbackRate=t,n.show=`${r.get("Rate")}: ${1===t?r.get("Normal"):`${t}x`}`}else o.playbackRate=1}})},function(t){const{i18n:e,notice:r,template:{$video:n,$player:o}}=t;it(t,"aspectRatio",{get:()=>o.dataset.aspectRatio||"default",set(i){if(!w(t)){if(i||(i="default"),"default"===i)n.style.width="",n.style.height="",n.style.margin="",delete o.dataset.aspectRatio;else{const e=i.split(":").map(Number),r=tr({width:o.clientWidth,height:o.clientHeight},e[0]/e[1]);if(w(t))return;"width"===r?.axis?(n.style.width=`${r.width}px`,n.style.height="100%",n.style.margin="0 auto"):r&&(n.style.width="100%",n.style.height=`${r.height}px`,n.style.margin="auto 0"),o.dataset.aspectRatio=i}r.show=`${e.get("Aspect Ratio")}: ${"default"===i?e.get("Default"):i}`,w(t)||t.emit("aspectRatio",i)}}})},function(t){const{notice:e,template:{$video:r}}=t,n=document.createElement("canvas");function o(o){const i=te(t);return new Promise((a,s)=>{const c=r=>{try{!w(t)&&i()&&(e.show=r)}catch(n){return void s(n)}s(r)};try{!function(t,e){t.width=e.videoWidth,t.height=e.videoHeight;const r=t.getContext("2d");if(!r)throw new TypeError("Canvas 2D context is unavailable");r.drawImage(e,0,0)}(n,r),o?function(t,e,r){t.toBlob(t=>{try{if(!t)throw new Error("Unable to encode screenshot blob");e(URL.createObjectURL(t))}catch(n){r(n)}})}(n,a,c):a(n.toDataURL("image/png"))}catch(l){c(l)}})}it(t,"getDataURL",{value:()=>o(!1)}),it(t,"getBlobUrl",{value:()=>o(!0)}),it(t,"screenshot",{value:async e=>{const n=te(t),o=await t.getDataURL();if(!w(t)&&n()){const i=e||`artplayer_${tt(r.currentTime)}`;!w(t)&&n()&&Z(o,`${i}.png`),!w(t)&&n()&&t.emit("screenshot",o)}return o}})},function(t){const{i18n:e,notice:r,template:{$video:n,$player:o}}=t,i=()=>{if(w(t))return;const i=function(t){const e=sr.raw,r=t.ownerDocument;if(e&&Reflect.get(r,e.fullscreenEnabled))return{document:r,target:t,get element(){return Reflect.get(r,e.fullscreenElement)},elementProperty:e.fullscreenElement,changeEvent:e.fullscreenchange,errorEvent:e.fullscreenerror,request:()=>cr(t,e.requestFullscreen,void 0),exit:()=>cr(r,e.exitFullscreen)}}(o);i?it(t,"fullscreen",fr(t,i)):n.webkitSupportsFullscreen&&"function"===typeof n.webkitEnterFullscreen&&"function"===typeof n.webkitExitFullscreen?it(t,"fullscreen",br(t)):it(t,"fullscreen",{get:()=>!1,set(){w(t)||(r.show=e.get("Fullscreen Not Supported"))}}),it(t,"fullscreen",ct(t,"fullscreen"))};t.once("video:loadedmetadata",i),b(t).add(()=>{t.off("video:loadedmetadata",i)})},function(t){const e=function(t){const{$player:e}=t.template;let r,n=0;function o(t,r){return null===t.style?e.removeAttribute("style"):e.setAttribute("style",t.style),!!r()&&(e.classList.remove("art-fullscreen-web"),!!r()&&(xr(t.placement),r()))}return b(t).add(()=>{n+=1;const t=r;if(r=void 0,t)try{o(t,()=>!0)}catch(i){try{e.parentNode!==t.placement.parent&&e.parentNode?.removeChild(e)}catch(a){throw new h([i,a])}throw i}}),i=>{if(w(t))return;const a=++n,s=()=>a===n&&!w(t),c=function(t){const e=t.ownerDocument?.activeElement,r=e&&t.contains(e);return()=>{r&&e.isConnected&&t.contains(e)&&e.ownerDocument.activeElement===e.ownerDocument.body&&e.focus({preventScroll:!0})}}(e);if(i){r||(r={placement:wr(e),style:e.getAttribute("style")});const n=r;try{const r=e.ownerDocument.body;if(t.constructor.FULLSCREEN_WEB_IN_BODY&&e.parentNode!==r&&r.appendChild(e),!s())return;if(t.state="fullscreenWeb",!s())return;e.style.width="100%",e.style.height="100%",e.classList.add("art-fullscreen-web")}catch(l){throw s()&&o(n,s)&&(r=void 0,c()),l}if(!s())return;if(c(),!s())return;t.emit("fullscreenWeb",!0)}else{if(r){if(!o(r,s))return;r=void 0}else e.classList.remove("art-fullscreen-web");if(!s())return;if(c(),!s())return;t.emit("fullscreenWeb",!1)}s()&&t.emit("resize")}}(t);it(t,"fullscreenWeb",{get:()=>t.template.$player.classList.contains("art-fullscreen-web"),set:e})},function(t){const{i18n:e,notice:r,template:{$video:n}}=t,o=n.ownerDocument;o.pictureInPictureEnabled&&"function"===typeof n.requestPictureInPicture&&"function"===typeof o.exitPictureInPicture?it(t,"pip",function(t){const{$video:e}=t.template,r=e.ownerDocument,n=b(t).child(),o=()=>r.pictureInPictureElement===e;let i=o(),a=i,s=!1,c=!1,l=0;function d(){if(o())try{r.exitPictureInPicture().catch(()=>{})}catch{}}function u(e,r,n){e.then(()=>{!r||!w(t)&&a||d()},e=>{w(t)||l!==n||(t.notice.show=e)}).finally(()=>{l===n&&(s=!1)}).catch(()=>{})}return e.disablePictureInPicture=!1,n.add(()=>{l++,a=!1,d()}),mt(n,e,"enterpictureinpicture",()=>{if(c)return void d();if(!o()||i)return;const e=l;t.state="pip",!w(t)&&e===l&&o()&&(i=!0,t.emit("pip",!0))}),mt(n,e,"leavepictureinpicture",()=>{i&&!o()&&(i=!1,t.emit("pip",!1))}),{get:()=>!w(t)&&o()?e:null,set(n){if(w(t))return;const i=++l;if(a=Boolean(n),a?c=!1:s&&(c=!0),s=!1,a){if(t.state="pip",w(t)||l!==i)return;s=!0;try{u(e.requestPictureInPicture(),!0,i)}catch(d){throw l===i&&(s=!1),d}}else o()&&u(r.exitPictureInPicture(),!1,i)}}}(t)):"function"===typeof n.webkitSupportsPresentationMode&&"function"===typeof n.webkitSetPresentationMode?it(t,"pip",function(t){const{$video:e}=t.template,r=b(t).child();let n=!1,o=!1,i=0,a=0;function s(r=!1){if(w(t)||Cr.has(e))return;const s=Sr(e);if(s&&(o=!1),s===n&&!r)return;const c=i;s&&(t.state="pip"),w(t)||i!==c||Sr(e)!==s||(n=s,a++,t.emit("pip",s))}e.webkitSetPresentationMode("inline"),r.add(()=>{i++,o&&Pr(e),Sr(e)&&e.webkitSetPresentationMode("inline")});for(const c of["webkitpresentationmodechanged","enterpictureinpicture","leavepictureinpicture"])mt(r,e,c,()=>s());return{get:()=>!w(t)&&Sr(e),set(r){if(w(t))return;const n=++i,c=a;if(r){if(!1===e.webkitSupportsPresentationMode?.("picture-in-picture"))return void(t.notice.show=t.i18n.get("PIP Not Supported"));if(Tr(e),t.state="pip",w(t)||i!==n)return;o=!0;try{e.webkitSetPresentationMode("picture-in-picture")}catch(l){throw n===i&&(o=!1),l}}else o&&(o=!1,Pr(e)),Sr(e)&&e.webkitSetPresentationMode("inline");w(t)||n!==i||c!==a||Sr(e)!==Boolean(r)||s(!0)}}}(t)):it(t,"pip",{get:()=>!1,set(){w(t)||(r.show=e.get("PIP Not Supported"))}})},function(t){const{$video:e}=t.template,r=t;it(t,"loaded",{get:()=>r.loadedTime/e.duration}),it(t,"loadedTime",{get:()=>e.buffered.length?e.buffered.end(e.buffered.length-1):0})},function(t){it(t,"played",{get:()=>t.currentTime/t.duration})},function(t){const{$video:e}=t.template;it(t,"playing",{get:()=>"boolean"===typeof e.playing?e.playing:!!(e.currentTime>0&&!e.paused&&!e.ended&&e.readyState>2)})},function(t){const{$container:e,$player:r,$video:n}=t.template;it(t,"autoSize",{value(){if(w(t))return;const o={width:n.videoWidth,height:n.videoHeight};if(!Qe(o))return;const i=M(e),a=tr(i,o.width/o.height);a&&!w(t)&&("width"===a.axis?(r.style.width=a.width/i.width*100+"%",r.style.height="100%"):(r.style.width="100%",r.style.height=a.height/i.height*100+"%"),t.emit("autoSize",{width:t.width,height:t.height}))}})},function(t){const e=t;it(t,"rect",{get:()=>M(t.template.$player)});const r=["bottom","height","left","right","top","width"];for(let n=0;ne.rect[o]})}it(t,"x",{get:()=>e.left+window.pageXOffset}),it(t,"y",{get:()=>e.top+window.pageYOffset})},function(t){const{template:{$player:e},i18n:r,notice:n}=t;it(t,"flip",{get:()=>e.dataset.flip||"normal",set(o){w(t)||(o||(o="normal"),"normal"===o?delete e.dataset.flip:e.dataset.flip=o,n.show=`${r.get("Video Flip")}: ${r.get(Q(o))}`,w(t)||t.emit("flip",o))}})},function(t){it(t,"mini",Ar(t))},function(t){const{template:{$poster:e}}=t;it(t,"poster",{get:()=>{try{return e.style.backgroundImage.match(/"(.*)"/)[1]}catch{return""}},set(t){H(e,"backgroundImage",`url(${t})`)}})},function(t){const{$container:e,$video:r}=t.template;it(t,"autoHeight",{value(){if(w(t))return;const n=function(t,e){if(!Number.isFinite(t)||t<=0||!Qe(e))return;const r=e.height*(t/e.width);return Number.isFinite(r)&&r>0?r:void 0}(e.clientWidth,{width:r.videoWidth,height:r.videoHeight});void 0===n||w(t)||(e.style.height=`${n}px`,t.emit("autoHeight",n))}})},function(t){const{$player:e}=t.template;it(t,"cssVar",{value:(t,r)=>r?e.style.setProperty(t,r):getComputedStyle(e).getPropertyValue(t)})},function(t){it(t,"theme",{get:()=>t.cssVar("--art-theme"),set(e){t.cssVar("--art-theme",e)}})},function(t){it(t,"type",{get:()=>t.option.type,set(e){t.option.type=e}})},function(t){const e=["mini","pip","fullscreen","fullscreenWeb"];it(t,"state",{get:()=>e.find(e=>t[e])||"standard",set(r){for(let n=0;nn.$track?.offset||0,set(o){const{cues:i}=t.subtitle;if(!n.$track||0===i.length)return;const a=J(o,-10,10);n.$track.offset=a;for(let e=0;et.startTime<=n&&ni[e]===t)){for(const e of r)t.removeCue(e);for(const e of r)t.addCue(e)}}(n.$track.track,n.$video,i),t.subtitle.update(),e.show=`${r.get("Subtitle Offset")}: ${o}s`,t.emit("subtitleOffset",o)}})},function(t){if(w(t))return;const{i18n:e,notice:r,proxy:n,template:{$video:o}}=t;let i=!0;const a=window.WebKitPlaybackTargetAvailabilityEvent;if(w(t))return;const s=a&&o.webkitShowPlaybackTargetPicker;w(t)||(s?n(o,"webkitplaybacktargetavailabilitychanged",e=>{if(!w(t))switch(e.availability){case"available":i=!0;break;case"not-available":i=!1}}):i=!1,w(t)||it(t,"airplay",{value(){if(!w(t))if(i){const e=o.webkitShowPlaybackTargetPicker;if(w(t))return;Reflect.apply(e,o,[]),w(t)||t.emit("airplay")}else{const n=e.get("AirPlay Not Available");w(t)||(r.show=n)}}}))},function(t){it(t,"quality",{set(e){const{controls:r,notice:n,i18n:o}=t,i=e.find(t=>t.default)||e[0];r.update({name:"quality",position:"right",index:10,style:{marginRight:"10px"},html:i?.html||"",selector:e,async onSelect(e,r,i){const a=function(t){return t&&ge.get(t)||(()=>!0)}(i);if(await t.switchQuality(e.url),!w(t)&&a()){const r=`${o.get("Switch Video")}: ${e.html}`;!w(t)&&a()&&(n.show=r)}return e.html}})}})},function(t){const{option:e,template:{$progress:r,$video:n}}=t;let o,i,a,s=b(t).child(),c=!1;function l(){const e=s;s=b(t).child(),o=void 0,c=!1,a=void 0,e.dispose()}function d(){const i=a,c=s;if(!i||!o)return;const l=()=>!w(t)&&!c.closed&&s===c&&a===i&&i.sourceActive()&&t.controls?.thumbnails===i.element;if(!l())return;const d=r.clientWidth*i.percentage;if(!(d>0&&d{const f=t.controls?.thumbnails,{url:h,scale:m}=e.thumbnails;if(!w(t)&&f&&h&&("hover"===r||"played"===r&&p&&u)){if(i!==f){const t=E(f);if(t.closed)return;i=f,t.add(()=>{i===f&&(i=void 0,l())})}if(a={percentage:n,element:f,sourceActive:te(t)},o)d();else if(!c){const t=s;c=!0,function(t,e,r){return q(t,e,r)}(h,m,t).then(e=>{s!==t||t.closed||(c=!1,o=e,d())}).catch(e=>{s!==t||t.closed||(c=!1,console.warn("ArtPlayer thumbnail load failed:",e))})}}}),it(t,"thumbnails",{get:()=>t.option.thumbnails,set:e=>{w(t)||!e.url||t.option.isLive||w(t)||(t.option.thumbnails=e,l())}})},function(t){!function(t){const{proxy:e,template:{$video:r}}=t;for(let n=0;n{w(t)||t.emit(`video:${e.type}`,e)})}(t);const e=nr(t);!function(t,e){er(t,"video:canplay",()=>{e.reset(),rr(t,[["loading",!1]])}),er(t,"video:canplay",()=>{rr(t,[["loading",!1],["controls",!0],["mask",!0]]),w(t)||(t.isReady=!0,t.emit("ready"))},!0)}(t,e),function(t){const{option:e}=t;er(t,"video:ended",()=>{if(e.loop){const e=te(t);if(t.seek=0,w(t)||!e())return;G(t.play()),e()&&rr(t,[["controls",!1],["mask",!1]],e)}else rr(t,[["controls",!0],["mask",!0]])})}(t),er(t,"video:error",e.schedule),function(t,e){const{template:{$poster:r}}=t;er(t,"video:loadedmetadata",()=>{t.emit("resize"),u&&rr(t,[["loading",!1],["controls",!0],["mask",!0]])}),er(t,"video:loadstart",()=>{e.loadStart(),rr(t,[["loading",!0],["mask",!1],["controls",!0]])}),er(t,"video:pause",()=>{rr(t,[["controls",!0],["mask",!0]])}),er(t,"video:play",()=>{rr(t,[["mask",!1]]),w(t)||H(r,"display","none")}),er(t,"video:playing",()=>rr(t,[["mask",!1]])),er(t,"video:progress",()=>{t.playing&&rr(t,[["loading",!1]])}),er(t,"video:seeked",()=>rr(t,[["loading",!1],["mask",!0]])),er(t,"video:seeking",()=>rr(t,[["loading",!0],["mask",!1]])),er(t,"video:timeupdate",()=>rr(t,[["mask",!1]])),er(t,"video:waiting",()=>rr(t,[["loading",!0],["mask",!1]]))}(t,e)},function(t){if(w(t))return;const{option:e,storage:r,template:{$video:n,$poster:o}}=t;for(const s in e.moreVideoAttr){if(w(t))return;const r=e.moreVideoAttr[s];if(w(t))return;t.attr(s,r)}if(w(t))return;if(e.muted){const r=e.muted;if(w(t))return;t.muted=r}if(w(t))return;if(e.volume){const r=J(e.volume,0,1);if(w(t))return;n.volume=r}if(w(t))return;const i=r.get("volume");if(w(t))return;if("number"===typeof i&&(n.volume=J(i,0,1)),w(t))return;if(e.poster){const r=`url(${e.poster})`;if(w(t))return;H(o,"backgroundImage",r)}if(w(t))return;if(e.autoplay){const r=e.autoplay;if(w(t))return;n.autoplay=r}if(w(t))return;if(e.playsInline){if(w(t))return;if(n.playsInline=!0,w(t))return;n["webkit-playsinline"]=!0}if(w(t))return;if(e.theme){const r=e.cssVar,n=e.theme;if(w(t))return;r["--art-theme"]=n}for(const s in e.cssVar){if(w(t))return;const r=e.cssVar[s];if(w(t))return;t.cssVar(s,r)}if(w(t))return;const a=e.url;w(t)||(t.url=a)}];class Ir{constructor(t){if(!w(t)){Or(t);for(const e of Dr){if(w(t))return;e(t)}}}}const Nr=new WeakMap,_r="art-auto-orientation-fullscreen";function Wr(t){if(Nr.get(t.orientation)===t)try{t.orientation.unlock()}catch{}}const Fr="art-auto-orientation",Vr=["width","height","transform-origin","transform"];function Yr(t){const{$player:e,$video:r}=t.template,n=()=>{const t={width:r.videoWidth,height:r.videoHeight},n=e.ownerDocument.documentElement,o={width:n.clientWidth,height:n.clientHeight};return Qe(t)&&Qe(o)&&(t.width>t.height&&o.widtho.height)},o=function(t,e){const{$player:r}=t.template,n=b(t);let o,i=()=>{};function a(){i(),i=()=>{};const e=o;if(o=void 0,e&&t.fullscreenWeb)for(const{name:t,value:o,priority:i}of e)r.style.setProperty(t,o,i);const n=r.classList.contains(Fr);r.classList.remove(Fr),n&&(t.isRotate=!1,w(t)||t.emit("resize"))}function s(n){if(!t.fullscreenWeb||!e())return;const i=z();if(w(t)||!t.fullscreenWeb)return;const a=r.ownerDocument.documentElement;o??(o=Vr.map(t=>({name:t,value:r.style.getPropertyValue(t),priority:r.style.getPropertyPriority(t)}))),r.style.width=a.clientHeight-i.top-i.bottom+"px",r.style.height=a.clientWidth-i.left-i.right+"px",r.style.transformOrigin="0 0",r.style.transform=`rotate(90deg) translate(${i.top}px, -${a.clientWidth-i.right}px)`,r.classList.add(Fr),t.isRotate=!0,n&&t.emit("resize")}return n.add(a),r=>{w(t)||(r?o?s(!1):e()&&(i(),i=gt(n,()=>{o||s(!0)},Number(t.constructor.AUTO_ORIENTATION_TIME??0))):a())}}(t,n),i=function(t,e){const{$player:r}=t.template;let n;function o(){const t=n;n=void 0,r.classList.remove(_r),t&&(t.cancelled=!0,Wr(t),t.settled&&Nr.get(t.orientation)===t&&Nr.delete(t.orientation))}return b(t).add(o),i=>{if(w(t))return;if(!i)return void o();if(n&&!n.cancelled&&Nr.get(n.orientation)===n)return;const a=r.ownerDocument.defaultView?.screen?.orientation;if("function"!==typeof a?.lock||"function"!==typeof a.unlock||!e())return;const s={orientation:a,cancelled:!1,settled:!1};n=s,Nr.set(a,s);const c=()=>!w(t)&&!s.cancelled&&n===s&&Nr.get(a)===s,l=e=>{s.settled=!0;const o=c();Nr.get(a)===s&&Nr.delete(a),n===s&&(n=void 0),o&&(r.classList.remove(_r),t.notice.show=e)};try{const t=a.lock(a.type.startsWith("portrait")?"landscape":"portrait");Promise.resolve(t).then(()=>{s.settled=!0,c()?r.classList.add(_r):(Wr(s),Nr.get(a)===s&&Nr.delete(a))}).catch(l)}catch(d){l(d)}}}(t,n);return t.on("fullscreenWeb",o),t.on("fullscreen",i),b(t).add(()=>{t.off("fullscreenWeb",o),t.off("fullscreen",i)}),{name:"autoOrientation",get state(){return e.classList.contains("art-auto-orientation")}}}function Br(t){return t.get("times")||{}}function Hr(t){const{storage:e}=t,r=function(t){const{i18n:e,icons:r,storage:n,constructor:o,template:{$poster:i}}=t,a=t.layers.add({name:"auto-playback",html:'\n
\n
\n
\n '});if(!a||w(t))return()=>{};const s=$t(".art-auto-playback-last",a),c=$t(".art-auto-playback-jump",a),l=$t(".art-auto-playback-close",a);kt(l,r.close);const d=E(a);let u,p=0;const f=()=>{const r=++p;if(u?.dispose(),d.closed||w(t)||p!==r)return;const f=d.child();u=f;const h=()=>u===f&&!f.closed&&!w(t);f.add(()=>{u===f&&(u=void 0,H(a,"display","none"))});const m=Qt(t).add(()=>{f.dispose()});f.add(()=>{m()});const g=Br(n)[t.option.id||t.option.url];if(!h())return;if(H(a,"display","none"),!h()||!g||!(g>=o.AUTO_PLAYBACK_MIN))return;if(!h())return;if(H(a,"display","flex"),!h())return;const v=`${e.get("Last Seen")} ${tt(g)}`;if(!h())return;if(s.textContent=v,!h())return;const y=e.get("Jump Play");if(!h())return;if(c.textContent=y,!h())return;const b=(e,r)=>{const n=t.events.proxy(e,"click",()=>{h()&&r()});f.add(()=>{t.events.remove(n)})};if(b(l,()=>{H(a,"display","none")}),!h())return;if(b(c,()=>{t.seek=g,h()&&(G(t.play()),h()&&(H(i,"display","none"),h()&&H(a,"display","none")))}),!h())return;let x=()=>{},k=!1;const $=()=>{!k&&h()&&(k=!0,x(),gt(f,()=>{h()&&H(a,"display","none")},o.AUTO_PLAYBACK_TIMEOUT))};t.on("video:timeupdate",$),x=f.add(()=>{t.off("video:timeupdate",$)}),k&&x()};return()=>{C(t,a,"ready",f),C(t,a,"restart",f)}}(t);return function(t){const{storage:e,constructor:r}=t;Pe(t)("video:timeupdate",()=>{if(!t.playing)return;const n=Br(e),o=Object.keys(n),i=r.AUTO_PLAYBACK_MAX,a=t.option.id||t.option.url,s=t.currentTime;w(t)||(o.length>i&&delete n[o[0]],n[a]=s,w(t)||e.set("times",n))})}(t),r(),{name:"auto-playback",get times(){return Br(e)},clear:()=>e.del("times"),delete(t){const r=Br(e);return delete r[t],e.set("times",r),r}}}function jr(t){let e,r=0;return{start:n=>{const o=++r;if(e?.scope.dispose(),o!==r||w(t)||1!==n.touches.length||!t.playing||t.isLock)return;const i={scope:Qt(t).child(),active:!1,previousRate:1};e=i,i.scope.add(()=>{if(e===i&&(e=void 0,i.active))try{t.playbackRate=i.previousRate}finally{e?.active||D(t.template.$player,"art-fast-forward")}}),gt(i.scope,()=>{if(e!==i||w(t)||!t.playing||t.isLock)i.scope.dispose();else try{if(i.previousRate=t.playbackRate,e!==i||i.scope.closed)return;i.active=!0;const r=t.constructor.FAST_FORWARD_VALUE;if(e!==i||i.scope.closed||w(t))return;t.playbackRate=r,e!==i||i.scope.closed||w(t)||O(t.template.$player,"art-fast-forward")}catch(r){try{i.scope.dispose()}catch(n){console.warn("Failed to restore fast-forward playback rate:",n)}throw r}},t.constructor.FAST_FORWARD_TIME)},stop:()=>{r++,e?.scope.dispose()}}}function qr(t){const{proxy:e,template:{$player:r,$video:n}}=t,o=jr(t),i=Pe(t);return e(n,"touchstart",t=>o.start(t)),e(n,"touchcancel",o.stop),i("document:touchmove",o.stop),i("document:touchend",o.stop),i("document:touchcancel",o.stop),i("video:pause",o.stop),i("destroy",o.stop),i("lock",t=>{t&&o.stop()}),{name:"fastForward",get state(){return I(r,"art-fast-forward")}}}function Ur(t,e,r,n){let o;const i=()=>!r.closed&&!w(t),a=t.i18n.get("Lock");if(!i())return()=>{};e.setAttribute("aria-label",a),xt(r,e),mt(r,e,"keydown",t=>{const r=t;i()&&n()&&wt(r)&&!r.defaultPrevented&&"Escape"===r.key&&(bt(r),e.click())});const s=n=>{if(i())if(e.setAttribute("aria-pressed",String(n)),n&&!o){const{$player:n,$bottom:a}=t.template,s=a.contains(a.ownerDocument.activeElement)&&n.classList.contains("art-keyboard-focus");o=r.child(),function(t,e){const r=new Map,n=e.hasAttribute("inert"),o=e.getAttribute("aria-hidden"),i=(t,e)=>{"-1"===t.getAttribute("tabindex")&&(null===e?t.removeAttribute("tabindex"):t.setAttribute("tabindex",e))};if(t.add(()=>{for(const[t,e]of r)i(t,e);r.clear(),n||""!==e.getAttribute("inert")||e.removeAttribute("inert"),"true"===e.getAttribute("aria-hidden")&&(null===o?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden",o))}),t.closed)return;n||e.setAttribute("inert",""),e.setAttribute("aria-hidden","true");const a=()=>{if(!t.closed){for(const[t,n]of r)e.contains(t)||(i(t,n),r.delete(t));for(const t of e.querySelectorAll("[tabindex],button,input,select,textarea,a[href],[contenteditable]"))r.has(t)||(r.set(t,t.getAttribute("tabindex")),t.setAttribute("tabindex","-1"))}};if(a(),"undefined"!==typeof MutationObserver){const r=new MutationObserver(a);r.observe(e,{childList:!0,subtree:!0}),t.add(()=>{r.disconnect()})}}(o,a),i()&&s&&e.focus({preventScroll:!0})}else if(!n&&o){const t=o;o=void 0,t.dispose()}};return s(n()),s}function Xr(t){const{layers:e,icons:r,template:{$player:n}}=t;function o(){return I(n,"art-lock")}function i(){w(t)||(O(n,"art-lock"),w(t)||(t.isLock=!0,w(t)||t.emit("lock",!0)))}function a(){w(t)||(D(n,"art-lock"),w(t)||(t.isLock=!1,w(t)||t.emit("lock",!1)))}return e.add({name:"lock",mounted(e){const n=E(e);if(n.closed||w(t))return;const i=kt(e,r.lock);if(n.closed||w(t))return;const a=kt(e,r.unlock);if(n.closed||w(t))return;const s=Ur(t,e,n,o);n.closed||w(t)||(o()?(H(i,"display","inline-flex"),n.closed||w(t)||H(a,"display","none")):H(i,"display","none"),C(t,e,"lock",e=>{w(t)||(H(i,"display",e?"inline-flex":"none"),n.closed||w(t)||H(a,"display",e?"none":"inline-flex"),n.closed||w(t)||s(e))}))},click(){o()?a():i()}}),{name:"lock",get state(){return o()},set state(t){t?i():a()}}}function Gr(t){return Pe(t)("control",e=>{e?D(t.template.$player,"art-mini-progress-bar"):O(t.template.$player,"art-mini-progress-bar")}),{name:"mini-progress-bar"}}class Kr{constructor(t){this.art=t,this.id=0;const{option:e}=t;!function(t,e){w(t.art)||!e.miniProgressBar||e.isLive||t.add(Gr),!w(t.art)&&e.lock&&u&&t.add(Xr),w(t.art)||!e.autoPlayback||e.isLive||t.add(Hr),!w(t.art)&&e.autoOrientation&&u&&t.add(Yr),!w(t.art)&&e.fastForward&&u&&!e.isLive&&t.add(qr)}(this,e);for(let r=0;rconsole.warn("Failed to initialize ArtPlayer plugin:",t))}}add(t){X(!w(this.art),"Cannot add a plugin after ArtPlayer is destroyed"),this.id+=1;const e=t.call(this.art,this.art);return e instanceof Promise?e.then(e=>this.next(t,e)):this.next(t,e)}next(t,e){return function(t,e,r){if(w(t.art))return t;const n=r&&r.name||e.name||`plugin${t.id}`;if(w(t.art))return t;let o=n;const i=st(t,o);if(w(t.art))return t;const a=`Cannot add a plugin that already has the same name: ${n}`;return w(t.art)||(X(!i,a),("object"===typeof n&&null!==n||"function"===typeof n)&&(o=Reflect.ownKeys({[o]:void 0})[0]),w(t.art)||it(t,o,{value:r})),t}(this,t,e)}}const Zr=new WeakMap;function Jr(t){return!t.closed&&!Zr.get(t)}function Qr(t){Zr.set(t,(Zr.get(t)||0)+1);let e=!0;return()=>{if(!e)return;e=!1;const r=(Zr.get(t)||1)-1;r?Zr.set(t,r):Zr.delete(t)}}const tn=new WeakMap,en=new WeakMap,rn=["$parent","$parents","$option","$events","$formatted"];function nn(t){const e=new Set;let r=t;for(;r&&!e.has(r);){e.add(r);const t=tn.get(r);if(!t||!t.owner.active||t.owner.scope?.closed||!t.option.includes(r))return!1;if(!t.parent)return t.owner.root===t.option;if(tn.get(t.parent)?.owner!==t.owner)return!1;r=t.parent}return!1}function on(t){let e=t;for(;e;){const r=Object.getOwnPropertyDescriptor(e,"name");if(r)return"set"in r?"function"===typeof r.set:Boolean(r.writable&&(e===t||Object.isExtensible(t)));e=Object.getPrototypeOf(e)}return Object.isExtensible(t)}function an(t){const e=tn.get(t);if(!e)throw new Error("Setting item has not been formatted");return e}function sn(t,e){for(let r=0;r{l&&l!==r&&l.dispose()},()=>hn(t,o)])try{e()}catch(d){d instanceof h?c.push(...d.errors):c.push(d)}if(r.closed||w(t)||(o.push(...i.splice(0)),fn.set(r,o),un.set(e,r),pn.set(e,n)),a(),c.length)throw new h(c)},dispose(){if(s){s=!1;try{r.dispose()}finally{a()}}}}}function bn(t,e,r,n,o,i){const a=i||gn(e);if(!Jr(a)||w(t))return;const s=t.proxy(r,n,e=>{if(Jr(a)&&!w(t))try{return o(e)}catch(r){console.warn("ArtPlayer setting callback failed:",r)}});!Jr(a)||w(t)?t.events.remove(s):(an(e).events.push(s),i&&i!==un.get(e)&&i.add(()=>{const r=an(e).events,n=r.indexOf(s);n>=0&&(r.splice(n,1),t.events.remove(s))}))}function wn(t,e,r,n){const o=gn(e);if(!Jr(o)||w(t))return;const i=(...e)=>{if(Jr(o)&&!w(t))return n(...e)};t.on(r,i),o.add(()=>{t.off(r,i)})}const xn='[tabindex="0"],button,input,select,textarea,a[href],[contenteditable]';function kn(t){if(!t.isConnected||t.matches(":disabled")||t.closest("[inert]")||"true"===t.getAttribute("aria-disabled")||!t.getClientRects().length)return!1;const e=t.ownerDocument.defaultView?.getComputedStyle(t).visibility;return"hidden"!==e&&"collapse"!==e}function $n(t){return Array.from(t.querySelectorAll(xn)).filter(t=>"-1"!==t.getAttribute("tabindex")&&kn(t))}function En(t,e,r=!1){if(!t.show||w(t.art)||!t.active)return;const n=t.cache.get(t.active);if(!n||!Jr(ln(n)))return;const o=function(t,e,r=!1){if(e&&e!==t&&t.contains(e)&&e.matches(xn)&&"-1"!==e.getAttribute("tabindex")&&kn(e))return e;const n=$n(t),o=t.querySelector(".art-setting-item.art-current");return n.find(t=>e?.contains(t))||(r?n[n.length-1]:n.find(t=>o?.contains(t))||n.find(t=>!t.classList.contains("art-setting-item-back"))||n[0])}(n,e,r);o?.focus({preventScroll:!0}),w(t.art)||o?.scrollIntoView({block:"nearest",inline:"nearest"})}function An(t){const e=t.$parent.ownerDocument,r=e.activeElement,n=t.$parent.contains(r);return o=>{n&&!w(t.art)&&(e.activeElement===e.body||e.activeElement===r&&!r?.getClientRects().length)&&En(t,o)}}function Cn(t){const{art:e}=t,r=b(e).child();if(r.closed)return;const n=()=>t.$parent.ownerDocument;let o=!1;const i=()=>{t.show=!1,r.closed||w(e)||t.render()},a=i=>{r.closed||w(e)||(i?n().activeElement===e.controls.setting&&e.template.$player.classList.contains("art-keyboard-focus")&&En(t,void 0,o):t.$parent.contains(n().activeElement)&&function(t){const{art:e,$parent:r}=t,n=e.template.$player,o=r.ownerDocument,i=e.controls.setting;!w(e)&&r.contains(o.activeElement)&&(i&&n.contains(i)&&kn(i)&&i.focus({preventScroll:!0}),(o.activeElement===o.body||r.contains(o.activeElement))&&At(e))}(t))};e.on("setting",a),r.add(()=>{e.off("setting",a)}),mt(r,e.template.$player,"keydown",r=>{const n=r;if(!wt(n)||n.defaultPrevented||w(e))return;const a=n.target;if(a===e.controls.setting){if("ArrowDown"===n.key||"ArrowUp"===n.key)if(bt(n),t.show)En(t,void 0,"ArrowUp"===n.key);else{o="ArrowUp"===n.key;try{t.show=!0}finally{o=!1}}else"Escape"===n.key&&t.show&&(bt(n),i());return}if(!t.show||!t.$parent.contains(a))return;if("Escape"===n.key)return bt(n),void i();if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"].includes(n.key))return;const s=a.closest(".art-setting-item");if(!s||a!==s&&!a.matches('button,a[href],[role="button"]'))return;const c=t.active&&t.cache.get(t.active);if(!c)return;const l=t.active?.find(t=>t.$item===s);if(!Jr(ln(c))||l&&!Jr(gn(l)))return void bt(n);const d=$n(c),u=d.indexOf(a);if(u<0)return;let p;switch(n.key){case"ArrowDown":p=Math.min(u+1,d.length-1);break;case"ArrowUp":p=Math.max(u-1,0);break;case"Home":p=0;break;case"End":p=d.length-1;break;case"ArrowLeft":{const t=c.querySelector(".art-setting-item-back");return bt(n),void t?.click()}case"ArrowRight":return bt(n),void(l?.selector?.length&&a.click());default:return}bt(n),void 0!==p&&En(t,d[p])});let s=!1;mt(r,t.$parent,"focusout",o=>{const a=o.relatedTarget;a&&(t.$parent.contains(a)||a===e.controls.setting)||s||(s=!0,gt(r,()=>{s=!1,r.closed||w(e)||!t.show||t.$parent.contains(n().activeElement)||n().activeElement===e.controls.setting||i()},0))})}function Sn(t){const{art:e,active:r}=t,{controls:n,constructor:{SETTING_WIDTH:o,SETTING_ITEM_HEIGHT:i},template:{$player:a,$setting:s,$bottom:c}}=e;if(!n.setting||!t.show||!r)return;const l=a.getBoundingClientRect(),d=n.setting.getBoundingClientRect(),p=l.width/a.offsetWidth||1,f=(d.left-l.left+d.width/2)/p-a.clientLeft,h=function(t){const{containerWidth:e,containerHeight:r,requestedWidth:n,rows:o,rowHeight:i,controlCenter:a,bottom:s,padding:c}=t,l=Math.min(Math.max(0,c),Math.max(0,e/2)),d=Math.min(Math.max(0,n),Math.max(0,e-2*l));return{width:d,height:Math.min(Math.max(0,o*i),Math.max(0,r-s-l)),left:Math.max(l,Math.min(a-d/2,e-l-d))}}({containerWidth:a.clientWidth,containerHeight:a.clientHeight,requestedWidth:r[0]?.$parent?.width||o,rows:r.length+(r===t.option?0:1),rowHeight:i,controlCenter:f,bottom:Number.parseFloat(getComputedStyle(s).bottom)||0,padding:Number.parseFloat(getComputedStyle(c).paddingLeft)||0});s.style.height=`${h.height}px`,s.style.width=`${h.width}px`,e.isRotate||u||(f+h.width/2>a.clientWidth?(s.style.left="",s.style.right=""):(s.style.left=`${h.left}px`,s.style.right="auto"))}const Tn=new WeakMap;function Ln(t){Tn.delete(t)}const Pn=new WeakMap;function Mn(t,e){e?Pn.set(t,e):Pn.delete(t)}function zn(t){const e=new Map(Reflect.ownKeys(t).map(e=>[e,Object.getOwnPropertyDescriptor(t,e)])),r=[],n=Pn.get(t),o=n?.();for(const i of["html","icon","tooltip"]){const t=e.get(i)?.value;t instanceof Node&&r.push({node:t,parent:t.parentNode,next:t.nextSibling})}return()=>{for(const r of Reflect.ownKeys(t))!e.has(r)&&Object.getOwnPropertyDescriptor(t,r)?.configurable&&Reflect.deleteProperty(t,r);for(const[r,n]of e)Object.defineProperty(t,r,n);o?.(),Mn(t,n);for(const{node:t,parent:e,next:n}of r)e?e.insertBefore(t,n?.parentNode===e?n:null):t.parentNode?.removeChild(t)}}function Rn(t){const e=t.$item?.querySelector(".art-setting-range");e&&e.setAttribute("aria-label",t.$html?.textContent||"")}const On=new WeakMap;async function Dn(t,e,r,n,o,i,a,s){try{const c=gn(e),l=gn(i),d=(On.get(i)||0)+1;On.set(i,d);const u=()=>Jr(c)&&Jr(l)&&!w(t.art)&&On.get(i)===d;if(s?.(),!u())return;const p=await o.call(t.art,e,r,n);u()&&Reflect.set(i,a,p)}catch(c){console.warn("ArtPlayer setting callback failed:",c)}}function In(t){const e=[];return function t(r){const n=Array.from(r.childNodes);e.push({node:r,children:n,attributes:1===r.nodeType?Array.from(r.attributes,t=>[t.name,t.value]):void 0,value:r.nodeValue}),n.forEach(t)}(t),()=>{for(const{node:t,children:r,attributes:n,value:o}of e){for(;t.firstChild;)t.removeChild(t.firstChild);for(const e of r)t.appendChild(e);if(n){const e=t;for(const t of Array.from(e.attributes))e.removeAttribute(t.name);for(const[t,r]of n)e.setAttribute(t,r)}else t.nodeValue=o}}}const Nn=new WeakMap;function _n(t){const e=[];for(const n of t)try{n()}catch(r){r instanceof h?e.push(...r.errors):e.push(r)}if(e.length)throw new h(e)}function Wn(t){Nn.get(t)?.()}function Fn(t,e){const r=t.find(e.name);if(w(t.art))return r||e;if(!r)return t.add(e);const n=An(t);Ln(r),Wn(r);const o=zn(r),i=r.$item,a=i?.parentNode,s=i?.nextSibling,c=i?In(i):void 0,l=t.active,d=["height","width","left","right"].map(e=>[e,t.$parent.style.getPropertyValue(e),t.$parent.style.getPropertyPriority(e)]),u=function(t,e){const r=new Set,n=new Set,o=e=>{if(!r.has(e)&&(r.add(e),e.selector)){const r=t.cache.get(e.selector);r&&n.add(r),e.selector.forEach(o)}};o(e);const i=[],a=[];try{for(const e of r){const r=yn(t.art,e);r&&i.push(r)}for(const t of n)a.push(Qr(ln(t)))}catch(c){try{_n([...i.reverse().map(t=>t.resume),...a])}catch(l){console.warn("ArtPlayer setting restore failed:",l)}throw c}let s=!0;return{items:r,resume(){s&&(s=!1,_n([...i.reverse().map(t=>t.resume),...a]))},dispose(){s&&(s=!1,_n([...i.reverse().map(t=>t.dispose),...Array.from(n).reverse().map(t=>()=>dn(t)),...a]))}}}(t,r);let p=!0,f=!1;const h=()=>{if(!p)return;p=!1;for(const t of u.items)Nn.get(t)===h&&Nn.delete(t);if(w(t.art))return void u.dispose();const e=r.$item;try{_n([u.resume,()=>{e&&e!==i&&e.remove()},o,()=>c?.(),()=>{a&&i&&a.insertBefore(i,s?.parentNode===a?s:null)},()=>t.format(),()=>{if(f){t.active=l,l&&t.cache.has(l)&&W(t.cache.get(l),"art-current");for(const[e,r,n]of d)t.$parent.style.setProperty(e,r,n)}}]),n(i)}catch(m){console.warn("ArtPlayer setting restore failed:",m)}},m=()=>p&&!w(t.art)&&Nn.get(r)===h;for(const y of u.items)Nn.set(y,h);const g=b(t.art).add(()=>{p=!1;for(const t of u.items)Nn.get(t)===h&&Nn.delete(t);u.dispose()});try{if(function(t,e,r){for(const n of Reflect.ownKeys(e)){if(!r())return;const o=Object.getOwnPropertyDescriptor(e,n);if(!o?.enumerable||!r())continue;const i=Reflect.get(e,n);if(!r())return;if(!Reflect.set(t,n,i))throw new TypeError(`Cannot assign setting item property [${String(n)}]`)}}(r,e,m),!m())return r;if(t.format(),!m())return r;if(t.createItem(r,!0),!m())return r;if(f=!0,t.render(),!m())return r;p=!1;for(const t of u.items)Nn.get(t)===h&&Nn.delete(t);return u.dispose(),n(r.$item),r}catch(v){throw m()&&h(),v}finally{g()}}const Vn=new WeakMap;function Yn(t,e,r){it(t,`$${e}`,{configurable:!0,get:()=>r}),it(t,e,{configurable:!0,get:()=>r.innerHTML,set(n){r.innerHTML="",N(r,n),"html"===e&&Rn(t)}})}function Bn(t,e,r=!1){const n=function(t){const e=Nn.get(t);return()=>!e||Nn.get(t)===e}(e);if(!t.cache.has(e.$option))return;const o=t.cache.get(e.$option),i=e.$item;let a="selector";st(e,"switch")&&(a="switch"),st(e,"range")&&(a="range"),st(e,"onClick")&&(a="button");const{icons:s,constructor:c}=t.art;if(!n())return;const l=function(t,e,r=b(t)){const n=un.get(e);(!n||Jr(n)||n.closed)&&vn(t,e);const o=r.child();return un.set(e,o),pn.set(e,r),fn.set(o,an(e).events),o.add(()=>{hn(t,fn.get(o))}),o}(t.art,e,ln(o)),d=()=>Jr(l)&&!w(t.art)&&n();if(!d())return;const u=document.createElement("div");try{if(Mn(e),O(u,"art-setting-item"),H(u,"height",`${c.SETTING_ITEM_HEIGHT}px`),u.dataset.name=e.name||"",u.dataset.value=String(e.value||""),!d())return;const n=kt(u,'
'),p=kt(u,'
'),f=document.createElement("div");switch(O(f,"art-setting-item-left-icon"),a){case"button":case"switch":case"range":{const t=e.icon||s.config;if(!d())return;N(f,t);break}case"selector":if(e.selector?.length){const t=e.icon||s.config;if(!d())return;N(f,t)}else N(f,s.check)}if(N(n,f),!d())return;Yn(e,"icon",f);const h=document.createElement("div");O(h,"art-setting-item-left-text");const m=e.html||"";if(!d())return;N(h,m),N(n,h),Yn(e,"html",h);const g=document.createElement("div");O(g,"art-setting-item-right-tooltip");const v=e.tooltip||"";if(!d())return;switch(N(g,v),N(p,g),Yn(e,"tooltip",g),a){case"switch":{const t=document.createElement("div");O(t,"art-setting-item-right-icon");const r=kt(t,s.switchOn),n=kt(t,s.switchOff),o=e.switch;if(!d())return;H(o?n:r,"display","none"),N(p,t),it(e,"$switch",{configurable:!0,get:()=>t});let i=e.switch;if(!d())return;Mn(e,()=>{const t=i;return()=>{i=t}}),it(e,"switch",{configurable:!0,get:()=>i,set(t){i=t,u.setAttribute("aria-checked",String(Boolean(t))),t?(H(n,"display","none"),H(r,"display",null)):(H(n,"display",null),H(r,"display","none"))}});break}case"range":{const t=document.createElement("div");O(t,"art-setting-item-right-icon");const r=document.createElement("input");r.type="range",N(t,r);for(const[o,i]of["value","min","max","step"].entries()){const t=e.range[o];if(!d())return;Reflect.set(r,i,String(t))}O(r,"art-setting-range"),N(p,t),it(e,"$range",{configurable:!0,get:()=>r});let n=[...e.range];if(!d())return;Mn(e,()=>{const t=n,e=[...t],o={min:r.min,max:r.max,step:r.step,value:r.value};return()=>{t.splice(0,t.length,...e),n=t,Object.assign(r,o)}}),it(e,"range",{configurable:!0,get:()=>n,set(t){n=[...t],r.value=String(t[0]),r.min=String(t[1]),r.max=String(t[2]),r.step=String(t[3])}})}break;case"selector":if(e.selector?.length){const t=document.createElement("div");O(t,"art-setting-item-right-icon"),N(t,s.arrowRight),N(p,t)}}if(!d())return;if(function(t,e,r,n){const{art:o}=t,i=gn(e),a=(t,r,n)=>bn(o,e,t,r,n,i);switch(n){case"switch":e.onSwitch&&a(r,"click",n=>Dn(t,e,r,n,e.onSwitch,e,"switch"));break;case"range":{const n=e.$range;if(n)for(const[o,i]of[["change","onRange"],["input","onChange"]])e[i]&&a(n,o,o=>Dn(t,e,r,o,e[i],e,"tooltip",()=>{e.range[0]=n.valueAsNumber}));break}case"selector":a(r,"click",n=>{if(e.selector?.length)t.render(e.selector);else{if(e.$parent?.onSelect)return Dn(t,e,r,n,e.$parent.onSelect,e.$parent,"tooltip",()=>t.check(e));t.check(e)}}),e.default&&O(r,"art-current");break;case"button":e.onClick&&a(r,"click",n=>Dn(t,e,r,n,e.onClick,e,"tooltip"))}}(t,e,u,a),!d())return;it(e,"$item",{configurable:!0,get:()=>u}),function(t,e,r,n,o){"range"!==n?r.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")||("switch"===n?(r.setAttribute("role","switch"),r.setAttribute("aria-checked",String(Boolean(e.switch))),r.setAttribute("aria-disabled",String(!e.onSwitch))):"selector"!==n||e.selector?.length||r.setAttribute("aria-current",String(Boolean(e.default))),xt(o,r,()=>r.click(),()=>Jr(o)&&!w(t.art))):Rn(e)}(t,e,u,a,l),r&&i?.parentNode?i.replaceWith(u):N(o,u),e.mounted&&d()&>(l,()=>{if(!w(t.art))try{const r=e.mounted?.call(t.art,u,e);Promise.resolve(r).catch(t=>console.warn("ArtPlayer setting mounted failed:",t))}catch(r){console.warn("ArtPlayer setting mounted failed:",r)}},0)}catch(p){try{l.dispose()}catch(f){console.warn("ArtPlayer setting cleanup failed:",f)}throw u.remove(),p}}function Hn(t,e=t.option){if(w(t.art))return;const r=An(t),n=t.cache.get(e);if(n&&!Jr(ln(n)))return;const o=(Vn.get(t)||0)+1;Vn.set(t,o);const i=()=>Vn.get(t)===o&&!w(t.art),a=t.active,s=["height","width","left","right"].map(e=>[e,t.$parent.style.getPropertyValue(e),t.$parent.style.getPropertyPriority(e)]),c=()=>{t.active=a,a&&t.cache.has(a)&&W(t.cache.get(a),"art-current");for(const[e,r,n]of s)t.$parent.style.setProperty(e,r,n)};if(t.active=e,n)try{W(n,"art-current"),t.resize()}catch(l){throw i()&&t.cache.get(e)===n&&!ln(n).closed&&c(),l}else{const r=document.createElement("div");t.cache.set(e,r);const n=function(t,e,r){const n=b(t.art).child();return cn.set(r,n),n.add(()=>{t.cache.get(e)===r&&t.cache.delete(e),r.remove()}),n}(t,e,r),o=()=>!n.closed&&!w(t.art)&&t.cache.get(e)===r,a=[];try{if(!o())return;O(r,"art-setting-panel"),r.setAttribute("role","group"),r.setAttribute("aria-label",e[0]?.$parent?.$html?.textContent||t.art.i18n.get("Settings")),N(t.$parent,r),W(r,"art-current"),e[0]?.$parent&&t.createHeader(e[0]);for(let r=0;r{!function(t){const e=en.get(t);e&&(e.active=!1,e.root=void 0,e.scope=void 0)}(this)}),e.setting&&(this.format(),this.render(),function(t){const{art:e}=t,r=b(e).child(),n=(t,n)=>{if(r.closed||w(e))return;const o=(...t)=>{if(!r.closed&&!w(e))return n(...t)};e.on(t,o),r.add(()=>{e.off(t,o)})};n("blur",()=>{t.show&&(t.show=!1,t.render())}),n("focus",r=>{const n=L(r,e.controls.setting),o=L(r,t.$parent);!t.show||n||o||(t.show=!1,t.render())}),n("resize",()=>t.resize());const o=()=>{r.closed||w(e)||t.resize()},i=e.proxy(t.$parent,"transitionend",e=>{e.target===t.$parent&&"bottom"===e.propertyName&&o()});r.add(()=>{e.events.remove(i)});const{$player:a,$controls:s}=e.template;if(!r.closed&&"undefined"!==typeof ResizeObserver){const t=new ResizeObserver(o);t.observe(a),t.observe(s),r.add(()=>{t.disconnect()})}if(!r.closed&&"undefined"!==typeof MutationObserver){const t=new MutationObserver(o);"undefined"===typeof ResizeObserver&&t.observe(s,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),t.observe(a,{attributes:!0,attributeFilter:["class","style"]}),r.add(()=>{t.disconnect()})}}(this)),Cn(this)}get builtin(){const t=[],{option:e}=this.art;return e.playbackRate&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,PLAYBACK_RATE:o}}=t;function i(t){return 1===t?e.get("Normal"):t.toFixed(1)}function a(){const e=t.setting.find(`playback-rate-${t.playbackRate}`);t.setting.check(e)}return{width:n,name:"playback-rate",html:e.get("Play Speed"),tooltip:i(t.playbackRate),icon:r.playbackRate,selector:o.map(e=>({value:e,name:`playback-rate-${e}`,default:e===t.playbackRate,html:i(e)})),onSelect:e=>(t.playbackRate=e.value,e.html),mounted:(e,r)=>{a(),wn(t,r,"video:ratechange",()=>a())}}}(this.art)),e.aspectRatio&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,ASPECT_RATIO:o}}=t;function i(t){return"default"===t?e.get("Default"):t}function a(){const e=t.setting.find(`aspect-ratio-${t.aspectRatio}`);t.setting.check(e)}return{width:n,name:"aspect-ratio",html:e.get("Aspect Ratio"),icon:r.aspectRatio,tooltip:i(t.aspectRatio),selector:o.map(e=>({value:e,name:`aspect-ratio-${e}`,default:e===t.aspectRatio,html:i(e)})),onSelect:e=>(t.aspectRatio=e.value,e.html),mounted:(e,r)=>{a(),wn(t,r,"aspectRatio",()=>a())}}}(this.art)),e.flip&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,FLIP:o}}=t;function i(t){return e.get(Q(t))}function a(){const e=t.setting.find(`flip-${t.flip}`);t.setting.check(e)}return{width:n,name:"flip",html:e.get("Video Flip"),tooltip:i(t.flip),icon:r.flip,selector:o.map(e=>({value:e,name:`flip-${e}`,default:e===t.flip,html:i(e)})),onSelect:e=>(t.flip=e.value,e.html),mounted:(e,r)=>{a(),wn(t,r,"flip",()=>a())}}}(this.art)),e.subtitleOffset&&t.push(function(t){const{i18n:e,icons:r,constructor:n}=t;return{width:n.SETTING_ITEM_WIDTH,name:"subtitle-offset",html:e.get("Subtitle Offset"),icon:r.subtitle,tooltip:"0s",range:[0,-10,10,.1],onChange:e=>(t.subtitleOffset=e.range[0],`${e.range[0]}s`),mounted:(e,r)=>{wn(t,r,"subtitleOffset",t=>{r.$range.value=String(t),r.tooltip=`${t}s`})}}}(this.art)),t}traverse(t,e=this.option){sn(e,t)}check(t){!function(t,e){e?.$parent&&(e.$parent.tooltip=e.html,t.traverse(t=>{t.default=t===e,t.$item&&t.$item.setAttribute("aria-current",String(t.default)),t.default&&t.$item&&W(t.$item,"art-current")},e.$option),t.render(e.$parents))}(this,t)}format(t=this.option,e,r,n=[]){this.option=function(t,e,r,n,o=[]){const i=en.get(t)||{active:!0},a=[],s=new Set,c=new Set(o),l=(t,e,r)=>{for(let n=0;nan(t).parent},$parents:{get:()=>an(t).parents},$option:{get:()=>an(t).option},$events:{get:()=>an(t).events},$formatted:{get:()=>!0}}),tn.set(t,{parent:r,parents:n,option:o,events:a?.events||[],owner:i}),u.generated&&(t.name=e)}for(const u of a)u.generated||o.push(u.name);return t.id=d,e}(this,t,e,r,n)}find(t=""){return function(t,e=""){let r=null;return sn(t,t=>{t.name===e&&(r=t)}),r}(this.option,t)}resize(){Sn(this)}inactivate(t){!function(t,e){const r=[],n=new Set,o=e=>{if(!n.has(e)){n.add(e);for(const t of e.selector||[])o(t);if(e.selector){const n=t.cache.get(e.selector);t.cache.delete(e.selector);try{n&&dn(n)}catch(i){r.push(i)}}try{vn(t.art,e)}catch(i){i instanceof h?r.push(...i.errors):r.push(i)}}};if(o(e),r.length)throw new h(r)}(this,t)}remove(t){const e=An(this),r=this.find(t);X(r,`Can't find [${t}] in the [setting]`),this.traverse(t=>{Ln(t),Wn(t)},[r]);const n=r.$option.indexOf(r);r.$option.splice(n,1);const o=r.$item,i=[];for(const s of[()=>this.inactivate(r),()=>o?.remove(),()=>this.render()])try{s()}catch(a){a instanceof h?i.push(...a.errors):i.push(a)}if(i.length)throw new h(i);e()}update(t){return Fn(this,t)}add(t,e=this.option){if(w(this.art))return t;let r=!1;this.traverse(e=>{r||(r=e===t)});const n=e.length,o=r?void 0:function(t){const e={};Tn.set(t,e);const r=()=>Tn.get(t)===e;return{current:r,finish(){r()&&Tn.delete(t)}}}(t);let i=!1;try{e.push(t),this.format(),i=!0,this.createItem(t),this.render()}catch(a){if(w(this.art)||o&&!o.current())throw a;if(e[n]===t&&e.splice(n,1),!r&&i){try{this.inactivate(t)}catch(s){console.warn("ArtPlayer setting cleanup failed:",s)}t.$item?.remove()}throw a}finally{o?.finish()}return t}createHeader(t){!function(t,e){if(!t.cache.has(e.$option))return;const r=t.cache.get(e.$option),{icons:{arrowLeft:n},constructor:{SETTING_ITEM_HEIGHT:o}}=t.art,i=document.createElement("div");H(i,"height",`${o}px`),O(i,"art-setting-item"),O(i,"art-setting-item-back");const a=kt(i,'
'),s=document.createElement("div");O(s,"art-setting-item-left-icon"),N(s,n),N(a,s),N(a,e.$parent.html),bn(t.art,e.$parent,i,"click",()=>t.render(e.$parents),ln(r));const c=ln(r);i.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")||xt(c,i,()=>i.click(),()=>Jr(c)&&!w(t.art)),i.setAttribute("aria-label",`${t.art.i18n.get("Back")}: ${i.textContent?.trim()||""}`),N(r,i)}(this,t)}createItem(t,e=!1){Bn(this,t,e)}render(t=this.option){Hn(this,t)}}class Un{constructor(){this.name="artplayer_settings",this.settings={}}get(t){try{const e=JSON.parse(window.localStorage.getItem(this.name))||{};return t?e[t]:e}catch{return t?this.settings[t]:this.settings}}set(t,e){try{const r=Object.assign({},this.get(),{[t]:e});window.localStorage.setItem(this.name,JSON.stringify(r))}catch{this.settings[t]=e}}del(t){try{const e=this.get();delete e[t],window.localStorage.setItem(this.name,JSON.stringify(e))}catch{delete this.settings[t]}}clear(){try{window.localStorage.removeItem(this.name)}catch{this.settings={}}}}const Xn='.art-video-player{--art-theme: #f00;--art-font-color: #fff;--art-background-color: #000;--art-text-shadow-color: rgba(0, 0, 0, .5);--art-transition-duration: .2s;--art-padding: 10px;--art-border-radius: 3px;--art-progress-height: 6px;--art-progress-color: rgba(255, 255, 255, .25);--art-progress-top-gap: 10px;--art-hover-color: rgba(255, 255, 255, .25);--art-loaded-color: rgba(255, 255, 255, .25);--art-state-size: 80px;--art-state-opacity: .8;--art-bottom-height: 100px;--art-bottom-offset: 20px;--art-bottom-gap: 5px;--art-highlight-width: 8px;--art-highlight-color: rgba(255, 255, 255, .5);--art-control-height: 46px;--art-control-opacity: .75;--art-control-icon-size: 36px;--art-control-icon-scale: 1.1;--art-volume-height: 120px;--art-volume-handle-size: 14px;--art-lock-size: 36px;--art-indicator-scale: 0;--art-indicator-size: 16px;--art-fullscreen-web-index: 9999;--art-settings-icon-size: 24px;--art-settings-max-height: 300px;--art-selector-max-height: 300px;--art-contextmenus-min-width: 250px;--art-subtitle-font-size: 20px;--art-subtitle-gap: 5px;--art-subtitle-bottom: 15px;--art-subtitle-border: #000;--art-widget-background: rgba(0, 0, 0, .85);--art-tip-background: rgba(0, 0, 0, .7);--art-scrollbar-size: 4px;--art-scrollbar-background: rgba(255, 255, 255, .25);--art-scrollbar-background-hover: rgba(255, 255, 255, .5);--art-mini-progress-height: 2px}.art-bg-cover{background-position:center center;background-repeat:no-repeat;background-size:cover}.art-bottom-gradient{background-image:linear-gradient(to top,#000,rgba(0,0,0,.4),transparent);background-repeat:repeat-x;background-position:center bottom}.art-backdrop-filter{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:#000000bf!important}.art-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-video-player{position:relative;margin:0 auto;width:100%;height:100%;outline:0;zoom:1;padding:0;text-align:left;direction:ltr;font-size:14px;line-height:1.3;user-select:none;box-sizing:border-box;color:var(--art-font-color);background-color:var(--art-background-color);text-shadow:0 0 2px var(--art-text-shadow-color);font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,Roboto,Arial,sans-serif;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-touch-action:manipulation;touch-action:manipulation;-ms-high-contrast-adjust:none}.art-video-player *,.art-video-player *:before,.art-video-player *:after{box-sizing:border-box}.art-video-player ::-webkit-scrollbar{width:var(--art-scrollbar-size);height:var(--art-scrollbar-size)}.art-video-player ::-webkit-scrollbar-thumb{background-color:var(--art-scrollbar-background)}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:var(--art-scrollbar-background-hover)}.art-video-player img{max-width:100%;vertical-align:top}.art-video-player svg{fill:var(--art-font-color)}.art-video-player a{color:var(--art-font-color);text-decoration:none}.art-icon{line-height:1;display:flex;justify-content:center;align-items:center}.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{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:#000000bf!important}.art-video{position:absolute;inset:0;z-index:10;width:100%;height:100%}.art-poster{position:absolute;inset:0;z-index:11;width:100%;height:100%;background-position:center center;background-repeat:no-repeat;background-size:cover;pointer-events:none}.art-video-player .art-subtitle{display:none;justify-content:center;align-items:center;flex-direction:column;position:absolute;z-index:20;width:100%;padding:0 5%;text-align:center;pointer-events:none;gap:var(--art-subtitle-gap);bottom:var(--art-subtitle-bottom);font-size:var(--art-subtitle-font-size);transition:bottom var(--art-transition-duration) ease;text-shadow:var(--art-subtitle-border) 1px 0 1px,var(--art-subtitle-border) 0 1px 1px,var(--art-subtitle-border) -1px 0 1px,var(--art-subtitle-border) 0 -1px 1px,var(--art-subtitle-border) 1px 1px 1px,var(--art-subtitle-border) -1px -1px 1px,var(--art-subtitle-border) 1px -1px 1px,var(--art-subtitle-border) -1px 1px 1px}.art-video-player.art-subtitle-show .art-subtitle{display:flex}.art-video-player.art-control-show .art-subtitle{bottom:calc(var(--art-controls-height, var(--art-control-height)) + var(--art-subtitle-bottom))}.art-danmuku{position:absolute;inset:0;z-index:30;width:100%;height:100%;pointer-events:none;overflow:hidden}.art-video-player .art-layers{position:absolute;inset:0;z-index:40;width:100%;height:100%;display:none;pointer-events:none}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:flex}.art-video-player .art-mask{display:flex;justify-content:center;align-items:center;position:absolute;inset:0;z-index:50;width:100%;height:100%;pointer-events:none}.art-video-player .art-mask .art-state{display:flex;justify-content:center;align-items:center;opacity:0;transform:scale(2);width:var(--art-state-size);height:var(--art-state-size);transition:all var(--art-transition-duration) ease}.art-video-player.art-mask-show .art-state{pointer-events:auto;opacity:var(--art-state-opacity);transform:scale(1)}.art-video-player.art-loading-show .art-state{display:none}.art-video-player .art-loading{display:none;justify-content:center;align-items:center;position:absolute;inset:0;z-index:70;width:100%;height:100%;pointer-events:none}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player.art-loading-show .art-mask{display:none}.art-video-player .art-bottom{position:absolute;inset:0;z-index:60;width:100%;height:100%;display:flex;flex-direction:column;justify-content:flex-end;opacity:0;overflow:hidden;pointer-events:none;padding:0 var(--art-padding);transition:all var(--art-transition-duration) ease;background-size:100% var(--art-bottom-height);background-image:linear-gradient(to top,#000,rgba(0,0,0,.4),transparent);background-repeat:repeat-x;background-position:center bottom}.art-video-player .art-bottom .art-controls,.art-video-player .art-bottom .art-progress{transform:translateY(var(--art-bottom-offset));transition:transform var(--art-transition-duration) ease}.art-video-player.art-control-show .art-bottom,.art-video-player.art-hover .art-bottom{opacity:1}.art-video-player.art-control-show .art-bottom .art-controls,.art-video-player.art-hover .art-bottom .art-controls,.art-video-player.art-control-show .art-bottom .art-progress,.art-video-player.art-hover .art-bottom .art-progress{transform:translateY(0)}.art-bottom .art-progress{position:relative;z-index:0;cursor:pointer;pointer-events:auto;padding-top:var(--art-progress-top-gap);padding-bottom:var(--art-bottom-gap)}.art-bottom .art-progress .art-control-progress{position:relative;display:flex;justify-content:center;align-items:center;height:var(--art-progress-height)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:height var(--art-transition-duration) ease;background-color:var(--art-progress-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover{position:absolute;inset:0;z-index:0;width:100%;height:100%;width:0%;background-color:var(--art-hover-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{position:absolute;inset:0;z-index:10;width:100%;height:100%;width:0%;background-color:var(--art-loaded-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{position:absolute;inset:0;z-index:20;width:100%;height:100%;width:0%;background-color:var(--art-theme)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{position:absolute;inset:0;z-index:30;width:100%;height:100%;pointer-events:none}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{position:absolute;inset:0 auto 0 0;z-index:0;width:100%;height:100%;pointer-events:auto;width:var(--art-highlight-width)!important;transform:translate(calc(var(--art-highlight-width) / -2));background-color:var(--art-highlight-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{display:flex;justify-content:center;align-items:center;position:absolute;z-index:40;left:0;border-radius:50%;width:var(--art-indicator-size);height:var(--art-indicator-size);transform:scale(var(--art-indicator-scale));margin-left:calc(var(--art-indicator-size) / -2);transition:transform var(--art-transition-duration) ease}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon{width:100%;height:100%;pointer-events:none}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover{transform:scale(1.2)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active{transform:scale(1)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;z-index:50;top:-25px;left:0;padding:3px 5px;line-height:1;font-size:12px;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease}.art-bottom .art-progress .art-control-thumbnails{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;bottom:calc(var(--art-bottom-gap) + 10px);left:0;border-radius:var(--art-border-radius);pointer-events:none;background-color:var(--art-widget-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease;box-shadow:0 1px 3px #0003,0 1px 2px -1px #0003}.art-bottom .art-progress:hover .art-control-progress .art-control-progress-inner{height:100%}.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{transform:scale(1)}.art-progress-hover .art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip,.art-progress-hover .art-bottom .art-progress .art-control-thumbnails{transform:scale(1);opacity:1}.art-video-player .art-controls{position:relative;z-index:10;pointer-events:auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;flex-shrink:0;height:auto;min-height:var(--art-control-height)}.art-video-player .art-controls .art-controls-left,.art-video-player .art-controls .art-controls-right{display:flex;flex-wrap:wrap;max-width:100%;min-height:var(--art-control-height)}.art-video-player .art-controls .art-controls-center{display:none;justify-content:center;align-items:center;flex:1;height:100%;padding:0 10px}.art-video-player .art-controls .art-controls-right{justify-content:flex-end;margin-left:auto}.art-video-player .art-controls .art-control{display:flex;justify-content:center;align-items:center;flex-shrink:0;max-width:100%;cursor:pointer;white-space:nowrap;opacity:var(--art-control-opacity);min-height:var(--art-control-height);min-width:var(--art-control-height);transition:opacity var(--art-transition-duration) ease}.art-video-player .art-controls .art-control .art-icon{height:var(--art-control-icon-size);width:var(--art-control-icon-size);transform:scale(var(--art-control-icon-scale));transition:transform var(--art-transition-duration) ease}.art-video-player .art-controls .art-control .art-icon:active{transform:scale(calc(var(--art-control-icon-scale) * .8))}.art-video-player .art-controls .art-control:hover{opacity:1}.art-control-volume{position:relative}.art-control-volume .art-volume-panel{display:flex;justify-content:center;align-items:center;position:absolute;left:0;right:0;padding:0 5px;font-size:12px;text-align:center;cursor:default;opacity:0;visibility:hidden;transform:translateY(10px);pointer-events:none;bottom:var(--art-control-height);width:var(--art-control-height);height:var(--art-volume-height);transition:opacity var(--art-transition-duration) ease,transform var(--art-transition-duration) ease}.art-control-volume .art-volume-panel .art-volume-inner{display:flex;flex-direction:column;align-items:center;gap:10px;height:100%;width:100%;padding:10px 0 12px;border-radius:var(--art-border-radius);background-color:var(--art-widget-background)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{flex:1;width:100%;display:flex;cursor:pointer;position:relative;justify-content:center}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{position:relative;display:flex;justify-content:center;width:2px;border-radius:var(--art-border-radius);overflow:hidden;background-color:#ffffff40}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded{position:absolute;inset:0;z-index:0;width:100%;height:100%;background-color:var(--art-theme)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator{position:absolute;width:var(--art-volume-handle-size);height:var(--art-volume-handle-size);margin-top:calc(var(--art-volume-handle-size) / -2);flex-shrink:0;transform:scale(1);border-radius:100%;background-color:var(--art-theme);transition:transform var(--art-transition-duration) ease}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator{transform:scale(.9)}.art-control-volume:hover .art-volume-panel,.art-control-volume:focus-within .art-volume-panel{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.art-video-player .art-notice{display:none;position:absolute;inset:0 0 auto;z-index:80;width:100%;height:100%;height:auto;padding:var(--art-padding);pointer-events:none}.art-video-player .art-notice .art-notice-inner{display:inline-flex;padding:5px;line-height:1;border-radius:var(--art-border-radius);background-color:var(--art-tip-background)}.art-video-player.art-notice-show .art-notice{display:flex}.art-video-player .art-contextmenus{display:none;flex-direction:column;position:absolute;z-index:120;padding:5px 0;border-radius:var(--art-border-radius);font-size:12px;background-color:var(--art-widget-background);min-width:var(--art-contextmenus-min-width)}.art-video-player .art-contextmenus .art-contextmenu{cursor:pointer;display:flex;padding:10px 15px;border-bottom:1px solid rgba(255,255,255,.1)}.art-video-player .art-contextmenus .art-contextmenu span{padding:0 8px}.art-video-player .art-contextmenus .art-contextmenu span:hover,.art-video-player .art-contextmenus .art-contextmenu span.art-current{color:var(--art-theme)}.art-video-player .art-contextmenus .art-contextmenu:hover{background-color:#ffffff1a}.art-video-player .art-contextmenus .art-contextmenu:last-child{border-bottom:none}.art-video-player.art-contextmenu-show .art-contextmenus{display:flex}.art-video-player .art-settings{display:none;flex-direction:column;position:absolute;z-index:90;left:auto;overflow-y:auto;overflow-x:hidden;border-radius:var(--art-border-radius);max-height:var(--art-settings-max-height);right:var(--art-padding);bottom:var(--art-controls-height, var(--art-control-height));transition:all var(--art-transition-duration) ease;background-color:var(--art-widget-background)}.art-video-player .art-settings .art-setting-panel{display:none;flex-direction:column}.art-video-player .art-settings .art-setting-panel.art-current{display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item{display:flex;justify-content:space-between;align-items:center;gap:5px;padding:0 5px;cursor:pointer;overflow:hidden;transition:background-color var(--art-transition-duration) ease}.art-video-player .art-settings .art-setting-panel .art-setting-item:hover{background-color:#ffffff1a}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current{color:var(--art-theme)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check{visibility:hidden;height:15px}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check{visibility:visible}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left{display:flex;justify-content:center;align-items:center;flex-shrink:1;min-width:0;overflow:hidden;gap:5px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;height:var(--art-settings-icon-size);width:var(--art-settings-icon-size)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right{display:flex;justify-content:center;align-items:center;flex-shrink:0;min-width:0;max-width:55%;gap:5px;font-size:12px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#ffffff80}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;min-width:32px;height:24px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{height:3px;width:80px;outline:none;appearance:none;background-color:#fff3}.art-video-player .art-settings .art-setting-panel .art-setting-item-back{border-bottom:1px solid rgba(255,255,255,.1)}.art-video-player.art-setting-show .art-settings{display:flex}.art-video-player .art-info{display:none;position:absolute;left:var(--art-padding);top:var(--art-padding);z-index:100;padding:10px;font-size:12px;border-radius:var(--art-border-radius);background-color:var(--art-widget-background)}.art-video-player .art-info .art-info-panel{display:flex;flex-direction:column;gap:5px}.art-video-player .art-info .art-info-panel .art-info-item{display:flex;align-items:center;gap:5px}.art-video-player .art-info .art-info-panel .art-info-item .art-info-title{width:100px;text-align:right}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;user-select:all}.art-video-player .art-info .art-info-close{position:absolute;top:5px;right:5px;cursor:pointer}.art-video-player.art-info-show .art-info{display:flex}.art-hide-cursor *{cursor:none!important}.art-video-player[data-aspect-ratio]{overflow:hidden}.art-video-player[data-aspect-ratio] .art-video{object-fit:fill;box-sizing:content-box}.art-fullscreen{--art-progress-height: 8px;--art-indicator-size: 20px;--art-control-height: 60px;--art-control-icon-scale: 1.3}.art-fullscreen-web{--art-progress-height: 8px;--art-indicator-size: 20px;--art-control-height: 60px;--art-control-icon-scale: 1.3;position:fixed;inset:0;z-index:var(--art-fullscreen-web-index);width:100%;height:100%}.art-mini-popup{position:fixed;z-index:9999;width:320px;height:180px;max-width:100vw;max-height:100vh;background:#000;border-radius:var(--art-border-radius);cursor:move;user-select:none;overflow:hidden;transition:opacity .2s ease;box-shadow:0 0 5px #00000080}.art-mini-popup svg{fill:#fff}.art-mini-popup .art-video{pointer-events:none}.art-mini-popup .art-mini-close{position:absolute;z-index:20;right:10px;top:10px;cursor:pointer;opacity:0;transition:opacity .2s ease}.art-mini-popup .art-mini-state{position:absolute;inset:0;z-index:30;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none;opacity:0;transition:opacity .2s ease;background-color:#00000040}.art-mini-popup .art-mini-state .art-icon{opacity:.75;cursor:pointer;transform:scale(3);pointer-events:auto;transition:transform .2s ease}.art-mini-popup .art-mini-state .art-icon:active{transform:scale(2.5)}.art-mini-popup.art-mini-dragging{opacity:.9}.art-mini-popup:hover .art-mini-close,.art-mini-popup:focus-within .art-mini-close,.art-mini-popup:hover .art-mini-state,.art-mini-popup:focus-within .art-mini-state{opacity:1}.art-mini-popup [role=button]:focus-visible{outline:2px solid #fff;outline-offset:-2px}.art-video-player[data-flip=horizontal] .art-video{transform:scaleX(-1)}.art-video-player[data-flip=vertical] .art-video{transform:scaleY(-1)}.art-video-player .art-layer-lock{display:none;justify-content:center;align-items:center;position:absolute;top:50%;border-radius:50%;transform:translateY(-50%);height:var(--art-lock-size);width:var(--art-lock-size);left:var(--art-padding);background-color:var(--art-tip-background)}.art-video-player .art-layer-auto-playback{display:none;gap:10px;align-items:center;position:absolute;border-radius:var(--art-border-radius);padding:10px;line-height:1;left:var(--art-padding);bottom:calc(var(--art-controls-height, var(--art-control-height)) + var(--art-bottom-gap) + 10px);background-color:var(--art-widget-background)}.art-video-player .art-layer-auto-playback .art-auto-playback-close{display:flex;justify-content:center;align-items:center;cursor:pointer}.art-video-player .art-layer-auto-playback .art-auto-playback-close svg{width:15px;height:15px;fill:var(--art-theme)}.art-video-player .art-layer-auto-playback .art-auto-playback-jump{color:var(--art-theme);cursor:pointer}.art-video-player.art-lock .art-layer-lock{display:flex}.art-video-player.art-lock:not(.art-control-show) .art-layer-lock{opacity:0;pointer-events:none}.art-video-player.art-lock:not(.art-control-show) .art-layer-lock:focus-within{opacity:1;pointer-events:auto}.art-video-player.art-lock .art-subtitle{bottom:var(--art-subtitle-bottom)!important}.art-video-player.art-mini-progress-bar .art-bottom,.art-video-player.art-lock .art-bottom{opacity:1;padding:0;background-image:none}.art-video-player.art-mini-progress-bar .art-bottom .art-controls,.art-video-player.art-lock .art-bottom .art-controls,.art-video-player.art-mini-progress-bar .art-bottom .art-progress,.art-video-player.art-lock .art-bottom .art-progress{transform:translateY(calc(var(--art-controls-height, var(--art-control-height)) + var(--art-bottom-gap) + var(--art-progress-height) / 4))}.art-video-player.art-mini-progress-bar .art-bottom .art-progress-indicator,.art-video-player.art-lock .art-bottom .art-progress-indicator{display:none!important}.art-video-player.art-control-show .art-layer-lock{display:flex}.art-control-selector{position:relative;display:flex;justify-content:center}.art-control-selector .art-selector-list{display:flex;flex-direction:column;align-items:center;text-align:center;position:absolute;border-radius:var(--art-border-radius);overflow-y:auto;overflow-x:hidden;opacity:0;visibility:hidden;transform:translateY(10px);pointer-events:none;bottom:var(--art-control-height);max-height:var(--art-selector-max-height);background-color:var(--art-widget-background);transition:opacity var(--art-transition-duration) ease,transform var(--art-transition-duration) ease}.art-control-selector .art-selector-list .art-selector-item{display:flex;justify-content:center;align-items:center;width:100%;padding:10px 15px;flex-shrink:0;line-height:1}.art-control-selector .art-selector-list .art-selector-item:hover{background-color:#ffffff1a}.art-control-selector .art-selector-list .art-selector-item:hover,.art-control-selector .art-selector-list .art-selector-item.art-current{color:var(--art-theme)}.art-control-selector:hover:not(.art-selector-dismissed) .art-selector-list,.art-control-selector.art-selector-open .art-selector-list{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.art-video-player [class*=hint--]{position:relative;display:inline-block;font-style:normal}.art-video-player [class*=hint--]:before,.art-video-player [class*=hint--]:after{position:absolute;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);transform:translateZ(0);visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;-webkit-transition:.3s ease;-moz-transition:.3s ease;transition:.3s ease;-webkit-transition-delay:0ms;-moz-transition-delay:0ms;transition-delay:0ms}.art-video-player [class*=hint--]:hover:before,.art-video-player [class*=hint--]:hover:after{visibility:visible;opacity:1}.art-video-player [class*=hint--]:hover:before,.art-video-player [class*=hint--]:hover:after{-webkit-transition-delay:.1s;-moz-transition-delay:.1s;transition-delay:.1s}.art-video-player [class*=hint--]:before{content:"";position:absolute;background:transparent;border:6px solid transparent;z-index:1000001}.art-video-player [class*=hint--]:after{background:#000;color:#fff;padding:8px 10px;font-size:12px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:12px;white-space:nowrap}.art-video-player [class*=hint--][aria-label]:after{content:attr(aria-label)}.art-video-player [class*=hint--][data-hint]:after{content:attr(data-hint)}.art-video-player [aria-label=""]:before,.art-video-player [aria-label=""]:after,.art-video-player [data-hint=""]:before,.art-video-player [data-hint=""]:after{display:none!important}.art-video-player .hint--top-left:before{border-top-color:#000}.art-video-player .hint--top-right:before{border-top-color:#000}.art-video-player .hint--top:before{border-top-color:#000}.art-video-player .hint--bottom-left:before{border-bottom-color:#000}.art-video-player .hint--bottom-right:before{border-bottom-color:#000}.art-video-player .hint--bottom:before{border-bottom-color:#000}.art-video-player .hint--left:before{border-left-color:#000}.art-video-player .hint--right:before{border-right-color:#000}.art-video-player .hint--top:before{margin-bottom:-11px}.art-video-player .hint--top:before,.art-video-player .hint--top:after{bottom:100%;left:50%}.art-video-player .hint--top:before{left:calc(50% - 6px)}.art-video-player .hint--top:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translate(-50%)}.art-video-player .hint--top:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top:hover:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translate(-50%) translateY(-8px)}.art-video-player .hint--bottom:before{margin-top:-11px}.art-video-player .hint--bottom:before,.art-video-player .hint--bottom:after{top:100%;left:50%}.art-video-player .hint--bottom:before{left:calc(50% - 6px)}.art-video-player .hint--bottom:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translate(-50%)}.art-video-player .hint--bottom:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom:hover:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translate(-50%) translateY(8px)}.art-video-player .hint--right:before{margin-left:-11px;margin-bottom:-6px}.art-video-player .hint--right:after{margin-bottom:-14px}.art-video-player .hint--right:before,.art-video-player .hint--right:after{left:100%;bottom:50%}.art-video-player .hint--right:hover:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--right:hover:after{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--left:before{margin-right:-11px;margin-bottom:-6px}.art-video-player .hint--left:after{margin-bottom:-14px}.art-video-player .hint--left:before,.art-video-player .hint--left:after{right:100%;bottom:50%}.art-video-player .hint--left:hover:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--left:hover:after{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--top-left:before{margin-bottom:-11px}.art-video-player .hint--top-left:before,.art-video-player .hint--top-left:after{bottom:100%;left:50%}.art-video-player .hint--top-left:before{left:calc(50% - 6px)}.art-video-player .hint--top-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translate(-100%)}.art-video-player .hint--top-left:after{margin-left:12px}.art-video-player .hint--top-left:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top-left:hover:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translate(-100%) translateY(-8px)}.art-video-player .hint--top-right:before{margin-bottom:-11px}.art-video-player .hint--top-right:before,.art-video-player .hint--top-right:after{bottom:100%;left:50%}.art-video-player .hint--top-right:before{left:calc(50% - 6px)}.art-video-player .hint--top-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translate(0)}.art-video-player .hint--top-right:after{margin-left:-12px}.art-video-player .hint--top-right:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top-right:hover:after{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--bottom-left:before{margin-top:-11px}.art-video-player .hint--bottom-left:before,.art-video-player .hint--bottom-left:after{top:100%;left:50%}.art-video-player .hint--bottom-left:before{left:calc(50% - 6px)}.art-video-player .hint--bottom-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translate(-100%)}.art-video-player .hint--bottom-left:after{margin-left:12px}.art-video-player .hint--bottom-left:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom-left:hover:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translate(-100%) translateY(8px)}.art-video-player .hint--bottom-right:before{margin-top:-11px}.art-video-player .hint--bottom-right:before,.art-video-player .hint--bottom-right:after{top:100%;left:50%}.art-video-player .hint--bottom-right:before{left:calc(50% - 6px)}.art-video-player .hint--bottom-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translate(0)}.art-video-player .hint--bottom-right:after{margin-left:-12px}.art-video-player .hint--bottom-right:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom-right:hover:after{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--small:after,.art-video-player .hint--medium:after,.art-video-player .hint--large:after{white-space:normal;line-height:1.4em;word-wrap:break-word}.art-video-player .hint--small:after{width:80px}.art-video-player .hint--medium:after{width:150px}.art-video-player .hint--large:after{width:300px}.art-video-player [class*=hint--]:after{text-shadow:0 -1px 0px black;box-shadow:4px 4px 8px #0000004d}.art-video-player .hint--error:after{background-color:#b34e4d;text-shadow:0 -1px 0px #592726}.art-video-player .hint--error.hint--top-left:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--top-right:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--top:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--bottom-left:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--bottom-right:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--left:before{border-left-color:#b34e4d}.art-video-player .hint--error.hint--right:before{border-right-color:#b34e4d}.art-video-player .hint--warning:after{background-color:#c09854;text-shadow:0 -1px 0px #6c5328}.art-video-player .hint--warning.hint--top-left:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--top-right:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--top:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--bottom-left:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--bottom-right:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--bottom:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--left:before{border-left-color:#c09854}.art-video-player .hint--warning.hint--right:before{border-right-color:#c09854}.art-video-player .hint--info:after{background-color:#3986ac;text-shadow:0 -1px 0px #1a3c4d}.art-video-player .hint--info.hint--top-left:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--top-right:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--top:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--bottom-left:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--bottom-right:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--bottom:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--left:before{border-left-color:#3986ac}.art-video-player .hint--info.hint--right:before{border-right-color:#3986ac}.art-video-player .hint--success:after{background-color:#458746;text-shadow:0 -1px 0px #1a321a}.art-video-player .hint--success.hint--top-left:before{border-top-color:#458746}.art-video-player .hint--success.hint--top-right:before{border-top-color:#458746}.art-video-player .hint--success.hint--top:before{border-top-color:#458746}.art-video-player .hint--success.hint--bottom-left:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--bottom-right:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--bottom:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--left:before{border-left-color:#458746}.art-video-player .hint--success.hint--right:before{border-right-color:#458746}.art-video-player .hint--always:after,.art-video-player .hint--always:before{opacity:1;visibility:visible}.art-video-player .hint--always.hint--top:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translate(-50%) translateY(-8px)}.art-video-player .hint--always.hint--top-left:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top-left:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translate(-100%) translateY(-8px)}.art-video-player .hint--always.hint--top-right:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top-right:after{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--bottom:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translate(-50%) translateY(8px)}.art-video-player .hint--always.hint--bottom-left:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom-left:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translate(-100%) translateY(8px)}.art-video-player .hint--always.hint--bottom-right:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom-right:after{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--left:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--always.hint--left:after{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--always.hint--right:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--always.hint--right:after{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--rounded:after{border-radius:4px}.art-video-player .hint--no-animate:before,.art-video-player .hint--no-animate:after{-webkit-transition-duration:0ms;-moz-transition-duration:0ms;transition-duration:0ms}.art-video-player .hint--bounce:before,.art-video-player .hint--bounce:after{-webkit-transition:opacity .3s ease,visibility .3s ease,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s ease,visibility .3s ease,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s ease,visibility .3s ease,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.art-video-player .hint--no-shadow:before,.art-video-player .hint--no-shadow:after{text-shadow:initial;box-shadow:initial}.art-video-player .hint--no-arrow:before{display:none}.art-video-player.art-mobile{--art-bottom-gap: 10px;--art-control-height: 38px;--art-control-icon-scale: 1;--art-state-size: 60px;--art-settings-max-height: 180px;--art-selector-max-height: 180px;--art-indicator-scale: 1;--art-control-opacity: 1}.art-video-player.art-mobile .art-controls-left{margin-left:calc(var(--art-padding) / -1)}.art-video-player.art-mobile .art-controls-right{margin-right:calc(var(--art-padding) / -1)}.art-video-player [tabindex]:focus-visible,.art-video-player input:focus-visible,.art-video-player button:focus-visible,.art-video-player a:focus-visible{outline:2px solid currentColor;outline-offset:-2px}.art-video-player.art-keyboard-focus :focus{outline:2px solid currentColor;outline-offset:-2px}.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom{opacity:1}.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom .art-controls,.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom .art-progress{transform:translateY(0)}';class Gn{constructor(t){this.scope=t.child(),this.cancelled=new Promise(t=>{this.scope.add(()=>{t(void 0)})}),this.signal=function(t){if("undefined"===typeof AbortController)return;const e=new AbortController;return t.add(()=>{e.abort()}),e}(this.scope)?.signal}get active(){return!this.scope.closed}cancel(){this.scope.dispose()}async run(t){if(this.active)try{return await Promise.race([t(),this.cancelled])}finally{this.cancel()}}}const Kn=new WeakMap;function Zn(t){return Kn.get(t)}function Jn(t){const e=t.ownedURL;t.ownedURL=void 0,e&&URL.revokeObjectURL(e)}const Qn=Ft;class to extends Qn{constructor(t){super(t),this.name="subtitle",this.option=null,this.destroyEvent=()=>null;const e=function(t,e){const r=b(e).child(),n={scope:r,revision:0,render:0,trackRevision:0};return Kn.set(t,n),r.add(()=>{Jn(n)}),n}(this,t);this.init(t.option.subtitle).catch(()=>{});let r=!1;const n=()=>{if(e.scope.closed||!this.url)return;const n=t.template.$video.webkitDisplayingFullscreen;"boolean"===typeof n&&n!==r&&(r=n,this.createTrack(n?"subtitles":"metadata",this.url))};t.on("video:timeupdate",n),e.scope.add(()=>{t.off("video:timeupdate",n)})}get url(){return this.art.template.$track.src}set url(t){this.switch(t).catch(()=>{})}get textTrack(){return this.art.template.$video?.textTracks?.[0]}get activeCues(){return Array.from(this.textTrack?.activeCues||[])}get cues(){return Array.from(this.textTrack?.cues||[])}style(t,e){const{$subtitle:r}=this.art.template;return"object"===typeof t?j(r,t):H(r,t,e)}update(){!function(t){const e=Zn(t);if(e.scope.closed)return;const r=e.revision,n=++e.render,o=()=>!e.scope.closed&&e.revision===r&&e.render===n,{art:i}=t,{$subtitle:a}=i.template;if(a.innerHTML="",!t.activeCues.length)return;if(i.emit("subtitleBeforeUpdate",t.activeCues),!o())return;const s=t.activeCues.map((t,e)=>t.text.split(/\r?\n/).filter(t=>t.trim()).map(t=>`
\n ${i.option.subtitle.escape?ot(t):t}\n
`).join("")).join("");o()&&(a.innerHTML=s,i.emit("subtitleAfterUpdate",t.activeCues))}(this)}async switch(t,e={}){const{i18n:r,notice:n,option:o}=this.art,i={...o.subtitle,...e,url:t},a=Zn(this),s=a.revision+1,c=await this.init(i);return!a.scope.closed&&a.revision===s&&e.name&&(n.show=`${r.get("Switch Subtitle")}: ${e.name}`),c}createTrack(t,e){!function(t,e,r){const n=Zn(t);if(n.scope.closed)return;const o=++n.trackRevision,{art:i}=t,{template:a}=i,s=a.$track,c=s.parentNode,l=s.nextSibling,d=document.createElement("track"),u=n.scope.child();u.add(()=>{d.onload=null,d.onerror=null});let p=!1;try{if(d.default=!0,d.kind=e,d.src=r,d.label=i.option.subtitle.name||"Artplayer",d.track.mode="hidden",d.onload=()=>{u.closed||a.$track!==d||i.emit("subtitleLoad",t.cues,t.option)},d.onerror=()=>{u.closed||a.$track!==d||(i.notice.show=new Error("Failed to load subtitle track"))},u.closed||n.trackRevision!==o)return void u.dispose();s.remove(),a.$video.appendChild(d),a.$track=d;const c=t.textTrack,l=c?i.proxy(c,"cuechange",()=>{u.closed||a.$track!==d||t.update()}):()=>{};if(u.add(()=>{i.events.remove(l)}),u.closed||n.trackRevision!==o)return u.dispose(),void d.remove();const f=n.track;n.track=u,t.destroyEvent=l,s.onload=null,s.onerror=null,p=!0;try{f?.dispose()}finally{n.ownedURL&&n.ownedURL!==r&&Jn(n)}}catch(f){if(p)throw f;if(u.dispose(),d.remove(),n.scope.closed||n.trackRevision!==o)throw f;throw a.$track=s,c&&c.insertBefore(s,l?.parentNode===c?l:null),f}}(this,t,e)}async init(t){const e=Zn(this),r=function(t){const e=t.request,r=new Gn(t.scope);return t.request=r,t.revision+=1,e?.cancel(),r}(e),{notice:n,template:{$subtitle:i}}=this.art;return r.run(async()=>{if(!this.textTrack)return null;if(o(t,_t.subtitle),!t.url)return;let a;this.option=t,this.style(t.style);try{if(!r.active)return;const n=await fetch(t.url,{signal:r.signal});if(!r.active)return;if(!n.ok)throw new Error(`Failed to load subtitle: ${n.status} ${n.statusText}`);const o=await n.arrayBuffer();if(!r.active)return;const s=function(t,e){const r=new TextDecoder(e.encoding).decode(t);switch(e.type||K(e.url)){case"srt":return{vtt:e.onVttLoad(dt(r))};case"ass":return{vtt:e.onVttLoad(pt(r))};case"vtt":return{vtt:e.onVttLoad(r)};default:return}}(o,t);if(!r.active)return;const c=void 0===s?t.url:a=ut(s.vtt);if(!r.active)return;i.innerHTML="";const l=e.trackRevision+1;if(this.url!==c&&this.createTrack("metadata",c),!r.active||e.trackRevision>l)return;return a&&(e.ownedURL=a,a=void 0),c}catch(s){if(!r.active)return;throw i.innerHTML="",n.show=s,s}finally{a&&(e.scope.closed||this.url!==a?URL.revokeObjectURL(a):e.ownedURL=a)}})}}const eo=`\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Player version:
\n
${i}
\n
\n
\n
Video url:
\n
\n
\n
\n
Video volume:
\n
\n
\n
\n
Video time:
\n
\n
\n
\n
Video duration:
\n
\n
\n
\n
Video resolution:
\n
\n x \n
\n
\n
\n
[x]
\n
\n
\n
\n `;class ro{constructor(t){this.art=t;const{option:e,constructor:r}=t;e.container instanceof Element?this.$container=e.container:(this.$container=R(e.container),X(this.$container,`No container element found by ${e.container}`)),X(P(),"The current browser does not support flex layout");const n=this.$container.tagName.toLowerCase();X("div"===n,`Unsupported container element type, only support 'div' but got '${n}'`),X(r.instances.every(t=>t.template.$container!==this.$container),"Cannot mount multiple instances on the same dom element"),this.query=this.query.bind(this),function(t,e,r){const n=v.get(e);if(n&&n!==t)throw new Error("Cannot mount multiple instances on the same dom element");const o=y(t);o.rollback=r,v.set(e,t),o.releaseContainer=()=>{v.get(e)===t&&v.delete(e)}}(t,this.$container,In(this.$container)),function(t,e,r){const n=y(t),o=n.mountingTemplate;n.mountingTemplate=e;try{r()}finally{n.mountingTemplate=o}}(t,this,()=>{this.$container.dataset.artId=String(t.id),this.init()})}static get html(){return eo}query(t){return R(t,this.$container)}init(){const{option:t}=this.art;var e;if(t.useSSR||(this.$container.innerHTML=ro.html),(e=this).$player=e.query(".art-video-player"),e.$video=e.query(".art-video"),e.$track=e.query("track"),e.$poster=e.query(".art-poster"),e.$subtitle=e.query(".art-subtitle"),e.$danmuku=e.query(".art-danmuku"),e.$bottom=e.query(".art-bottom"),e.$progress=e.query(".art-progress"),e.$controls=e.query(".art-controls"),e.$controlsLeft=e.query(".art-controls-left"),e.$controlsCenter=e.query(".art-controls-center"),e.$controlsRight=e.query(".art-controls-right"),e.$layer=e.query(".art-layers"),e.$loading=e.query(".art-loading"),e.$notice=e.query(".art-notice"),e.$noticeInner=e.query(".art-notice-inner"),e.$mask=e.query(".art-mask"),e.$state=e.query(".art-state"),e.$setting=e.query(".art-settings"),e.$info=e.query(".art-info"),e.$infoPanel=e.query(".art-info-panel"),e.$infoClose=e.query(".art-info-close"),e.$contextmenu=e.query(".art-contextmenus"),t.proxy){const e=t.proxy.call(this.art,this.art);if(w(this.art))return;!function(t){X(t instanceof HTMLVideoElement||t instanceof HTMLCanvasElement,"Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'")}(e),F(e,this.$video),e.className="art-video",this.$video=e}t.backdrop&&O(this.$player,"art-backdrop"),u&&O(this.$player,"art-mobile")}destroy(t){t?this.$container.innerHTML="":O(this.$player,"art-destroy")}}const no=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);class oo{on(t,e,r){const n=this.e||(this.e={});let o=no(n,t)?n[t]:void 0;return o||(o=[],Object.defineProperty(n,t,{value:o,enumerable:!0,configurable:!0,writable:!0})),o.push({fn:e,ctx:r}),this}once(t,e,r){const n=this,o=e;let i=!1;function a(...e){i||(i=!0,n.off(t,a),o.apply(r,e))}return a._=e,this.on(t,a,r)}emit(t,...e){const r=this.e||(this.e={}),n=(no(r,t)&&r[t]||[]).slice();for(const o of n)o.fn.apply(o.ctx,e);return this}off(t,e){const r=this.e||(this.e={}),n=no(r,t)?r[t]:void 0,o=[];if(n&&e)for(let i=0,a=n.length;i{e.destroying||e.finalizers.dispose()})}(this);try{if(this.template=new ro(this),b(this).closed)return;if(this.events=new ze(this),b(this).closed)return;if(this.storage=new Un,b(this).closed)return;if(this.icons=new Ve(this),b(this).closed)return;if(this.i18n=new We(this),b(this).closed)return;if(this.notice=new Ze(this),b(this).closed)return;if(this.player=new Ir(this),b(this).closed)return;if(this.layers=new qe(this),b(this).closed)return;if(this.controls=new ke(this),b(this).closed)return;if(this.contextmenu=new Xt(this),b(this).closed)return;if(this.subtitle=new to(this),b(this).closed)return;if(this.info=new je(this),b(this).closed)return;if(this.loading=new Ue(this),b(this).closed)return;if(this.hotkey=new Ne(this),b(this).closed)return;if(this.mask=new Xe(this),b(this).closed)return;if(this.setting=new qn(this),b(this).closed)return;if(this.plugins=new Kr(this),b(this).closed)return;if("function"===typeof e&&this.on("ready",()=>e.call(this,this)),so.DEBUG){const t=t=>console.log(`[ART.${this.id}] -> ${t}`);t(`Version@${so.version}`);for(let e=0;et(`Event@${e.type}`))}(function(t){const e=y(t);return e.rollback=void 0,!e.scope.closed})(this)&&ao.push(this)}catch(r){try{x(this,ao,!0,so.REMOVE_SRC_WHEN_DESTROY,!0)}catch(n){console.warn("Failed to clean up ArtPlayer initialization:",n)}throw r}}static get instances(){return ao}static get version(){return i}static get config(){return f}static get utils(){return ft}static get scheme(){return _t}static get Emitter(){return oo}static get validator(){return o}static get kindOf(){return o.kindOf}static get html(){return ro.html}static get option(){return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:t=>t},moreVideoAttr:{controls:!1,preload:c?"auto":"metadata"},i18n:{},icons:{},cssVar:{},customType:{},lang:"undefined"===typeof navigator?void 0:navigator?.language.toLowerCase()}}get proxy(){return this.events.proxy}get query(){return this.template.query}get video(){return this.template.$video}reset(){this.video.removeAttribute("src"),this.video.load()}destroy(t=!0){x(this,ao,t,so.REMOVE_SRC_WHEN_DESTROY)}}var co,lo;return so.STYLE=Xn,so.DEBUG=!1,so.CONTEXTMENU=!0,so.NOTICE_TIME=2e3,so.SETTING_WIDTH=250,so.SETTING_ITEM_WIDTH=200,so.SETTING_ITEM_HEIGHT=35,so.RESIZE_TIME=200,so.SCROLL_TIME=200,so.SCROLL_GAP=50,so.AUTO_PLAYBACK_MAX=10,so.AUTO_PLAYBACK_MIN=5,so.AUTO_PLAYBACK_TIMEOUT=3e3,so.RECONNECT_TIME_MAX=5,so.RECONNECT_SLEEP_TIME=1e3,so.CONTROL_HIDE_TIME=3e3,so.DBCLICK_TIME=300,so.DBCLICK_FULLSCREEN=!0,so.MOBILE_DBCLICK_PLAY=!0,so.MOBILE_CLICK_PLAY=!1,so.AUTO_ORIENTATION_TIME=200,so.INFO_LOOP_TIME=1e3,so.FAST_FORWARD_VALUE=3,so.FAST_FORWARD_TIME=1e3,so.TOUCH_MOVE_RATIO=.5,so.VOLUME_STEP=.1,so.SEEK_STEP=5,so.PLAYBACK_RATE=[.5,.75,1,1.25,1.5,2],so.ASPECT_RATIO=["default","4:3","16:9"],so.FLIP=["normal","horizontal","vertical"],so.FULLSCREEN_WEB_IN_BODY=!0,so.LOG_VERSION=!0,so.USE_RAF=!1,so.REMOVE_SRC_WHEN_DESTROY=!0,co=so,lo=Xn,p&&(window.Artplayer=co,a("artplayer-style",lo),setTimeout(()=>{co.LOG_VERSION&&console.log(`%c ArtPlayer %c ${co.version} %c https://artplayer.org`,"color: #fff; background: #5f5f5f","color: #fff; background: #4bc729","")},100)),so}); +!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.Artplayer=e(),define(function(){return t.Artplayer})):(t="undefined"!==typeof globalThis?globalThis:t||self).Artplayer=e()}(this,function(){"use strict";function t(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var e,r={exports:{}};var n=(e||(e=1,r.exports=function(){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}var e=Object.prototype.toString,r=function(r){if(void 0===r)return"undefined";if(null===r)return"null";var o=t(r);if("boolean"===o)return"boolean";if("string"===o)return"string";if("number"===o)return"number";if("symbol"===o)return"symbol";if("function"===o)return"GeneratorFunction"===n(r)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(r))return"array";if(function(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}(r))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(r))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(r))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(r))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(r))return"regexp";switch(n(r)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(r))return"generator";switch(o=e.call(r)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return o.slice(8,-1).toLowerCase().replace(/\s/g,"")};function n(t){return t.constructor?t.constructor.name:null}function o(t,e){var n=2{document.head.appendChild(r)}):(document.head||document.documentElement).appendChild(r)),r.textContent=e}const s=globalThis.CUSTOM_USER_AGENT??("undefined"===typeof navigator?"":navigator.userAgent),c=/^(?:(?!chrome|android).)*safari/i.test(s),l=/iPad|iPhone|iPod/i.test(s)&&("undefined"===typeof window||!window.MSStream),d=l||s.includes("Macintosh")&&"undefined"!==typeof navigator&&navigator.maxTouchPoints>=1,u=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(s)||d,p="undefined"!==typeof window&&"undefined"!==typeof document;const f={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webkitSupportsFullscreen","webkitDisplayingFullscreen","onenterpictureinpicture","onleavepictureinpicture","disablePictureInPicture","cancelVideoFrameCallback","requestVideoFrameCallback","getVideoPlaybackQuality","requestPictureInPicture","webkitEnterFullScreen","webkitEnterFullscreen","webkitExitFullScreen","webkitExitFullscreen"]};class h extends Error{constructor(t){super("Failed to release ArtPlayer resources"),this.errors=t,this.name="ResourceCleanupError"}}class m{constructor(){this.cleanups=new Set,this.disposed=!1}get closed(){return this.disposed}add(t){let e=!0;const r=()=>{e&&(e=!1,this.cleanups.delete(r),t())};return this.closed?r():this.cleanups.add(r),r}child(){const t=new m,e=this.add(()=>{t.dispose()});return t.add(()=>{e()}),t}dispose(){if(this.closed)return;this.disposed=!0;const t=[];for(const r of Array.from(this.cleanups).reverse())try{r()}catch(e){e instanceof h?t.push(...e.errors):t.push(e)}if(t.length)throw new h(t)}}const g=new WeakMap,v=new WeakMap;function y(t){const e=g.get(t);if(!e)throw new Error("ArtPlayer lifecycle has not been initialized");return e}function b(t){return y(t).scope}function w(t){const e=y(t);return e.destroying||e.scope.closed}function x(t,e,r,n,o=!1){const i=y(t);if(i.destroying||i.scope.closed)return;i.destroying=!0;const a=[],s=t=>{try{t()}catch(e){a.push(...e instanceof h?e.errors:[e])}};n&&t.template?.$video&&s(()=>t.reset()),s(()=>i.scope.dispose()),s(()=>(t.template||i.mountingTemplate)?.destroy(r));const c=e.indexOf(t);-1!==c&&e.splice(c,1),t.isDestroy=!0,o||(i.releaseContainer?.(),i.releaseContainer=void 0),s(()=>t.emit("destroy")),s(()=>i.finalizers.dispose()),o&&i.rollback&&s(i.rollback),i.rollback=void 0,i.releaseContainer?.(),i.releaseContainer=void 0;for(const l of a.slice(1))console.warn("Additional ArtPlayer cleanup failure:",l);if(a.length)throw a[0]}const k=new WeakMap;function $(t,e){const r=b(t).child();return k.set(e,r),r}function E(t){const e=k.get(t);if(!e)throw new Error("ArtPlayer component has not been registered");return e}function A(t){k.get(t)?.dispose()}function C(t,e,r,n){const o=E(e);if(o.closed)return;const i=(...t)=>{if(!o.closed)return n(...t)};t.on(r,i),o.add(()=>{t.off(r,i)})}function S(t,e){return{on:(r,n)=>{C(t,e,r,n)},proxy:(r,n,o)=>function(t,e,r,n,o){const i=E(e);if(i.closed)return()=>{};const a=t.events.proxy(r,n,t=>{if(!i.closed)return o(t)});return i.add(()=>{t.events.remove(a)})}(t,e,r,n,o)}}function T(t){if(t.composedPath)return t.composedPath();const e=[];let r=t.target;for(;r;)e.push(r),r=r.parentNode??null;return"undefined"===typeof window||e.includes(window)||e.push(window),e}function L(t,e){return T(t).includes(e)}function P(){const t=document.createElement("div");return t.style.display="flex","flex"===t.style.display}function M(t){return t.getBoundingClientRect()}function z(){const t=document.createElement("div");t.style.cssText="position:fixed;top:env(safe-area-inset-top,0px);right:env(safe-area-inset-right,0px);bottom:env(safe-area-inset-bottom,0px);left:env(safe-area-inset-left,0px);pointer-events:none;visibility:hidden;";try{document.body.appendChild(t);const e=getComputedStyle(t);return{top:Number.parseFloat(e.top)||0,right:Number.parseFloat(e.right)||0,bottom:Number.parseFloat(e.bottom)||0,left:Number.parseFloat(e.left)||0}}finally{t.remove()}}function R(t,e=document){return e.querySelector(t)}function O(t,e){return t.classList.add(e)}function D(t,e){return t.classList.remove(e)}function I(t,e){return t.classList.contains(e)}function N(t,e){return e instanceof Element?t.appendChild(e):t.insertAdjacentHTML("beforeend",String(e)),t.lastElementChild||t.lastChild}function _(t){return Array.from(t.parentElement.children).filter(e=>e!==t)}function W(t,e){_(t).forEach(t=>D(t,e)),O(t,e)}function F(t,e){return e.parentNode.replaceChild(t,e),t}function V(t){return document.createElement(t)}function Y(t,e,r="top"){u||(t.setAttribute("aria-label",e),O(t,"hint--rounded"),O(t,`hint--${r}`))}function B(t="",e=""){const r=V("i");return O(r,"art-icon"),O(r,`art-icon-${t}`),N(r,e),r}function H(t,e,r){return t.style[e]=r,t}function j(t,e){for(const r in e)H(t,r,e[r]);return t}function q(t,e,r){return new Promise((n,o)=>{const i=r?r.child():new m;let a=!1,s=()=>{};function c(t){if(!a){a=!0;try{i.dispose()}catch(e){console.warn("Additional image cleanup failure:",e)}try{s()}catch(e){console.warn("Additional image cleanup failure:",e)}o(t)}}function l(t){if(!a&&!i.closed){a=!0;try{i.dispose(),n(t)}catch(e){try{s()}finally{o(e)}}}}if(i.add(()=>{if(!a){a=!0;try{s()}finally{n(void 0)}}}),!i.closed)try{const n=new Image;d(n,()=>{if(!e||1===e)return void l(n);const t=document.createElement("canvas"),o=t.getContext("2d");if(t.width=n.width*e,t.height=n.height*e,!o)throw new TypeError("Canvas 2D context is unavailable");a||i.closed||(o.drawImage(n,0,0,t.width,t.height),a||i.closed||t.toBlob(t=>{if(!a&&!i.closed)try{if(!t)throw new Error("Unable to encode thumbnail image");const e=URL.createObjectURL(t);let n=!1;const o=()=>{n||(n=!0,URL.revokeObjectURL(e))};if(s=r?r.add(o):o,a||i.closed)return void s();const c=new Image;d(c,()=>l(c)),i.closed||(c.src=e)}catch(e){c(e)}}))}),i.closed||(n.src=t)}catch(u){c(u)}function d(e,r){e.onload=()=>{if(!a&&!i.closed)try{r()}catch(u){c(u)}},e.onerror=()=>c(new Error(`Image load failed: ${t}`)),i.add(()=>{e.onload=null,e.onerror=null,a||e.removeAttribute("src")})}})}class U extends Error{constructor(t,e){super(t),"captureStackTrace"in Error&&"function"===typeof Error.captureStackTrace&&Error.captureStackTrace(this,e||this.constructor),this.name="ArtPlayerError"}}function X(t,e){if(!t)throw new U(e);return t}function G(t){const e=t;return e&&"function"===typeof e.catch?e.catch(()=>{}):t}function K(t){const e=t.search(/[?#]/),r=(e<0?t:t.slice(0,e)).trim().toLowerCase();return r.slice(r.lastIndexOf(".")+1)}function Z(t,e){const r=document.createElement("a");r.style.display="none",r.href=t,r.download=e,document.body.appendChild(r);try{r.click()}finally{r.remove()}}function J(t,e,r){return Math.max(Math.min(t,Math.max(e,r)),Math.min(e,r))}function Q(t){return t.charAt(0).toUpperCase()+t.slice(1)}function tt(t){if(!t)return"00:00";const e=Math.floor(t/3600),r=Math.floor((t-3600*e)/60),n=Math.floor(t-3600*e-60*r);return(e>0?[e,r,n]:[r,n]).map(t=>t<10?`0${t}`:String(t)).join(":")}const et={"&":"&","<":"<",">":">","'":"'",'"':"""},rt={"&":"&","<":"<",">":">","'":"'",""":'"'},nt=/(&|<|>|'|")/g;function ot(t){return t.replace(/[&<>'"]/g,t=>et[t]||t)}const it=Object.defineProperty,{hasOwnProperty:at}=Object.prototype;function st(t,e){return at.call(t,e)}function ct(t,e){return Object.getOwnPropertyDescriptor(t,e)}function lt(...t){const e=t=>!!t&&"object"===typeof t&&!Array.isArray(t);return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=t[n],i=r[n];let a;a=Array.isArray(o)&&Array.isArray(i)?o.concat(...i):e(o)&&e(i)?lt(o,i):i,it(t,n,{value:a,enumerable:!0,configurable:!0,writable:!0})}),t),{})}function dt(t){return"WEBVTT \r\n\r\n".concat((e=t,e.replace(/(\d\d:\d\d:\d\d)[,.](\d+)/g,(t,e,r)=>{let n=r.slice(0,3);return 1===r.length&&(n=`${r}00`),2===r.length&&(n=`${r}0`),`${e},${n}`})).replace(/\{\\([ibu])\}/g,"").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").replace(/\{[\s\S]*?\}/g,"").concat("\r\n\r\n"));var e}function ut(t){return URL.createObjectURL(new Blob([t],{type:"text/vtt"}))}function pt(t){const e=new RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i");function r(t=""){return t.split(/[:.]/).map((t,e,r)=>{if(e===r.length-1){if(1===t.length)return`.${t}00`;if(2===t.length)return`.${t}0`}else if(1===t.length)return(0===e?"0":":0")+t;return 0===e?t:e===r.length-1?`.${t}`:`:${t}`}).join("")}return`WEBVTT\n\n${t.split(/\r?\n/).map(t=>{const n=t.match(e);if(!n)return null;const[,o="",i="",,,a=""]=n;return{start:r(o.trim()),end:r(i.trim()),text:a.replace(/\{[\s\S]*?\}/g,"").replace(/(\\N)/g,"\n").trim().split(/\r?\n/).map(t=>t.trim()).join("\n")}}).filter(t=>t).map((t,e)=>t?`${e+1}\n${t.start} --\x3e ${t.end}\n${t.text}`:"").filter(t=>t.trim()).join("\n\n")}`}const ft=Object.freeze(Object.defineProperty({__proto__:null,ArtPlayerError:U,addClass:O,append:N,assToVtt:pt,capitalize:Q,clamp:J,createElement:V,debounce:function(t,e){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>(r=void 0,t.apply(this,n)),e)}},def:it,download:Z,errorHandle:X,escape:ot,get:ct,getComposedPath:T,getExt:K,getIcon:B,getRect:M,getSafeAreaInsets:z,getStyle:function(t,e,r=!0){const n=window.getComputedStyle(t,null).getPropertyValue(e);return r?Number.parseFloat(n):n},has:st,hasClass:I,includeFromEvent:L,inverseClass:W,isBrowser:p,isIOS:l,isIOS13:d,isInViewport:function(t,e=0){const r=t.getBoundingClientRect(),n=window.innerHeight||document.documentElement.clientHeight,o=window.innerWidth||document.documentElement.clientWidth,i=r.top-e<=n&&r.top+r.height+e>=0,a=r.left-e<=o+e&&r.left+r.width+e>=0;return i&&a},isMobile:u,isSafari:c,loadImg:function(t,e){return q(t,e,void 0)},mergeDeep:lt,query:R,queryAll:function(t,e=document){return Array.from(e.querySelectorAll(t))},remove:function(t){return t.parentNode.removeChild(t)},removeClass:D,replaceElement:F,secondToTime:tt,setStyle:H,setStyleText:a,setStyles:j,siblings:_,silencePromise:G,sleep:function(t=0){return new Promise(e=>setTimeout(e,t))},srtToVtt:dt,supportsFlex:P,throttle:function(t,e){let r=!1;return function(...n){r||(t.apply(this,n),r=!0,setTimeout(()=>{r=!1},e))}},tooltip:Y,unescape:function(t){return t.replace(nt,t=>rt[t]||t)},userAgent:s,vttToBlob:ut},Symbol.toStringTag,{value:"Module"}));function ht(){}function mt(t,e,r,n,o={}){const{capture:i=!1,once:a=!1,signal:s}=o;if(t.closed||s?.aborted)return ht;let c=ht;function l(e){a&&c(),t.closed||("function"===typeof n?n.call(this,e):n.handleEvent(e))}return e.addEventListener(r,l,o),c=t.add(()=>{try{e.removeEventListener(r,l,i)}finally{s?.removeEventListener("abort",c)}}),s?.addEventListener("abort",c,{once:!0}),c}function gt(t,e,r){if(t.closed)return ht;let n=!0,o=ht;const i=setTimeout(()=>{n&&(o(),t.closed||e())},r);return o=t.add(()=>{n=!1,clearTimeout(i)}),o}function vt(t,e=0){return t.closed?Promise.resolve(!1):new Promise(r=>{let n=!1,o=ht;const i=setTimeout(()=>{n=!0,o(),r(!0)},e);o=t.add(()=>{clearTimeout(i),n||r(!1)})})}const yt=new WeakSet;function bt(t){yt.add(t),t.preventDefault()}function wt(t){return!t.altKey&&!t.ctrlKey&&!t.metaKey&&!t.isComposing&&229!==t.keyCode}function xt(t,e,r=()=>e.click(),n=()=>!0){if(t.closed)return;e.hasAttribute("role")||e.setAttribute("role","button"),e.hasAttribute("tabindex")||(e.tabIndex=0);let o=!1;const i=()=>n()&&"true"!==e.getAttribute("aria-disabled")&&!e.hasAttribute("disabled"),a=t=>(t.composedPath()[0]||t.target)===e;mt(t,e,"keydown",t=>{const e=t;a(e)&&wt(e)&&!e.defaultPrevented&&("Enter"===e.key?(bt(e),!e.repeat&&i()&&r()):" "===e.key&&(bt(e),!e.repeat&&i()&&(o=!0)))}),mt(t,e,"keyup",t=>{const n=t;if(" "!==n.key)return;const s=o;o=!1,s&&a(n)&&wt(n)&&!n.defaultPrevented&&i()&&e.ownerDocument.activeElement===e&&(bt(n),r())}),mt(t,e,"blur",()=>{o=!1}),t.add(()=>{o=!1})}function kt(t,e){return N(t,e)}function $t(t,e){return e.querySelector(t)}const Et=new WeakSet;function At(t){const e=t.template.$player;!w(t)&&e.isConnected&&(e.hasAttribute("tabindex")||(e.setAttribute("tabindex","-1"),Et.has(e)||(Et.add(e),b(t).add(()=>{Et.delete(e),"-1"===e.getAttribute("tabindex")&&e.removeAttribute("tabindex")}))),e.focus({preventScroll:!0}))}const Ct=new WeakSet,St="[tabindex],button,input,select,textarea,a[href],[contenteditable]";function Tt(t){return[t,...t.querySelectorAll(St)].find(t=>{if(!t.matches(St)||t.tabIndex<0||t.matches(":disabled")||t.closest("[inert]")||"true"===t.getAttribute("aria-disabled")||!t.getClientRects().length)return!1;const e=t.ownerDocument.defaultView?.getComputedStyle(t);return"hidden"!==e?.visibility&&"collapse"!==e?.visibility})}function Lt(t,e,r){const n=e?.ownerDocument,o=n?.activeElement;if(!["control","contextmenu"].includes(t.name??"")||Ct.has(t)||!e||!n||!o||!e.contains(o))return()=>{};const i=t.art.template.$player,a=Array.from(i.querySelectorAll(`.art-${t.name}`)),s=a.indexOf(e),c=[...a.slice(s+1),...a.slice(0,s).reverse()];return Ct.add(t),()=>{if(Ct.delete(t),w(t.art)||!i.isConnected||n.activeElement!==n.body)return;const e=r?t.cache.get(r)?.$ref:void 0;for(const t of[...e?[e]:[],...c]){if(!i.contains(t))continue;const e=Tt(t);if(e)return void e.focus({preventScroll:!0})}At(t.art)}}const Pt="array",Mt="boolean",zt="string",Rt="number",Ot="object",Dt="function";function It(t,e,r){return X(e===zt||e===Rt||t instanceof Element,`${r.join(".")} require '${zt}' or 'Element' type`)}const Nt={html:It,disable:`?${Mt}`,name:`?${zt}`,index:`?${Rt}`,style:`?${Ot}`,click:`?${Dt}`,mounted:`?${Dt}`,tooltip:`?${zt}|${Rt}`,width:`?${Rt}`,selector:`?${Pt}`,onSelect:`?${Dt}`,switch:`?${Mt}`,onSwitch:`?${Dt}`,range:`?${Pt}`,onRange:`?${Dt}`,onChange:`?${Dt}`},_t={id:zt,container:It,url:zt,poster:zt,type:zt,theme:zt,lang:zt,volume:Rt,isLive:Mt,muted:Mt,autoplay:Mt,autoSize:Mt,autoMini:Mt,loop:Mt,flip:Mt,playbackRate:Mt,aspectRatio:Mt,screenshot:Mt,setting:Mt,hotkey:Mt,pip:Mt,mutex:Mt,backdrop:Mt,fullscreen:Mt,fullscreenWeb:Mt,subtitleOffset:Mt,miniProgressBar:Mt,useSSR:Mt,playsInline:Mt,lock:Mt,gesture:Mt,fastForward:Mt,autoPlayback:Mt,autoOrientation:Mt,airplay:Mt,proxy:`?${Dt}`,plugins:[Dt],layers:[Nt],contextmenu:[Nt],settings:[Nt],controls:[{...Nt,position:(t,e,r)=>{const n=["top","left","right"];return X("string"===typeof t&&n.includes(t),`${r.join(".")} only accept ${n.toString()} as parameters`)}}],quality:[{default:`?${Mt}`,html:zt,url:zt}],highlight:[{time:Rt,text:zt}],thumbnails:{url:zt,number:Rt,column:Rt,width:Rt,height:Rt,scale:Rt},subtitle:{url:zt,name:zt,type:zt,style:Ot,escape:Mt,encoding:zt,onVttLoad:Dt},moreVideoAttr:Ot,i18n:Ot,icons:Ot,cssVar:Ot,customType:Ot},Wt=new WeakSet;class Ft{constructor(t){this.id=0,this.art=t,this.cache=new Map,this.add=this.add.bind(this),this.remove=this.remove.bind(this),this.update=this.update.bind(this)}get show(){return I(this.art.template.$player,`art-${this.name}-show`)}set show(t){const{$player:e}=this.art.template,r=`art-${this.name}-show`;t?O(e,r):D(e,r),this.art.emit(this.name,t)}toggle(){this.show=!this.show}add(t){if(w(this.art))return;const e="function"===typeof t?t(this.art):t;if(w(this.art))return;if(e.html=e.html||"",o(e,Nt),!this.$parent||!this.name||e.disable)return;const r=e.name||`${this.name}${this.id}`,n=this.cache;X(!n.has(r),`Can't add an existing [${r}] to the [${this.name}]`),this.id+=1;const i=document.createElement("div"),a=$(this.art,i),s=[],c=Object.getOwnPropertyDescriptor(this,r);let l=!1;a.add(()=>{for(const t of s)this.art.events.remove(t)});try{if(a.closed)return;if(function(t,e,r,n,o,i){O(t,`art-${r}`),O(t,`art-${r}-${n}`);const a=Array.from(e.children);t.dataset.index=String(i.index||o);const s=a.find(e=>Number(e.dataset.index)>=Number(t.dataset.index));s?s.insertAdjacentElement("beforebegin",t):N(e,t),i.html&&N(t,i.html),i.style&&j(t,i.style),i.tooltip&&Y(t,i.tooltip)}(i,this.$parent,this.name,r,this.id,e),a.closed)return;if(e.click){("control"===this.name&&!e.selector||"contextmenu"===this.name&&!i.querySelector("[data-value]"))&&!i.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")&&xt(a,i);const t=this.art.events.proxy(i,"click",t=>{a.closed||(t.preventDefault(),e.click.call(this.art,this,t))});s.push(t)}if(e.selector&&["left","right"].includes(e.position)&&this.selector(e,i,s),a.closed)return;return function(t,e,r){const n=t;"__proto__"===e?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r}(this,r,i),l=!0,n.set(r,{$ref:i,events:s,option:e}),e.mounted&&e.mounted.call(this.art,i),i}catch(d){try{A(i)}catch(u){console.warn("ArtPlayer component cleanup failed:",u)}throw n.get(r)?.$ref===i&&n.delete(r),l&&this[r]===i&&(c?Object.defineProperty(this,r,c):delete this[r]),i.remove(),d}}remove(t){X(this.cache.has(t),`Can't find [${t}] from the [${this.name}]`);const e=this.cache.get(t);if(Wt.has(e))return;const r=Lt(this,e.$ref);Wt.add(e);try{e.option.beforeUnmount&&e.option.beforeUnmount.call(this.art,e.$ref);try{A(e.$ref)}finally{this.cache.get(t)===e&&(this.cache.delete(t),delete this[t]),e.$ref.remove()}}finally{Wt.delete(e),r()}}update(t){const e=Lt(this,this.cache.get(t.name)?.$ref,t.name);try{if(this.cache.has(t.name)){const e=this.cache.get(t.name);t=Object.assign(e.option,t),this.remove(t.name)}return this.add(t)}finally{e()}}}function Vt(t){for(const e of t.querySelectorAll("[data-value]"))e.setAttribute("aria-pressed",String(e.classList.contains("art-current")))}function Yt(t,e){const r=E(t);if(!r.closed){t.setAttribute("role","group"),t.setAttribute("aria-label",e);for(const n of t.querySelectorAll("[data-value]"))xt(r,n),n.setAttribute("aria-label",`${e}: ${n.textContent?.trim()??""}`);Vt(t)}}const Bt=new WeakMap;function Ht(t,e){e?Bt.set(t,e):Bt.delete(t)}function jt(t){const e=new Set;let r=t;for(;!e.has(r);){e.add(r);let t,n=r;for(;n&&!t;)t=Bt.get(n),n=n.parentElement;if(!t)return r;r=t}return t}function qt(t){const e=t;return!!e&&(["INPUT","TEXTAREA","SELECT"].includes(e.tagName)||e.isContentEditable)}function Ut(t){const e=t.ownerDocument.defaultView?.getComputedStyle(t).visibility;return t.isConnected&&!t.matches(":disabled")&&!t.closest("[inert]")&&"true"!==t.getAttribute("aria-disabled")&&t.getClientRects().length>0&&"hidden"!==e&&"collapse"!==e}class Xt extends Ft{constructor(t){super(t),this.name="contextmenu",this.$parent=t.template.$contextmenu,$(t,this.$parent),u||this.init()}init(){const{option:t,template:{$player:e,$contextmenu:r}}=this.art,{on:n,proxy:o}=S(this.art,r);t.playbackRate&&this.add(function(t){return e=>{const{i18n:r,constructor:{PLAYBACK_RATE:n}}=e,o=n.map(t=>`${1===t?r.get("Normal"):t.toFixed(1)}`).join(""),i=r.get("Play Speed");return{...t,html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.playbackRate=Number(n),t.show=!1)},mounted:t=>{const{on:r}=S(e,t),n=R('[data-value="1"]',t);n&&W(n,"art-current"),Yt(t,i),r("video:ratechange",()=>{const r=Array.from(t.querySelectorAll("span")).find(t=>Number(t.dataset.value)===e.playbackRate);r&&(W(r,"art-current"),Vt(t))})}}}}({name:"playbackRate",index:10})),t.aspectRatio&&this.add(function(t){return e=>{const{i18n:r,constructor:{ASPECT_RATIO:n}}=e,o=n.map(t=>`${"default"===t?r.get("Default"):t}`).join(""),i=r.get("Aspect Ratio");return{...t,html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.aspectRatio=n,t.show=!1)},mounted:t=>{const{on:r}=S(e,t),n=R('[data-value="default"]',t);n&&W(n,"art-current"),Yt(t,i),r("aspectRatio",e=>{const r=Array.from(t.querySelectorAll("span")).find(t=>t.dataset.value===e);r&&(W(r,"art-current"),Vt(t))})}}}}({name:"aspectRatio",index:20})),t.flip&&this.add(function(t){return e=>{const{i18n:r,constructor:{FLIP:n}}=e,o=n.map(t=>`${r.get(Q(t))}`).join(""),i=r.get("Video Flip");return{...t,html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.flip=n.toLowerCase(),t.show=!1)},mounted:t=>{const{on:r}=S(e,t),n=R('[data-value="normal"]',t);n&&W(n,"art-current"),Yt(t,i),r("flip",e=>{const r=Array.from(t.querySelectorAll("span")).find(t=>t.dataset.value===e);r&&(W(r,"art-current"),Vt(t))})}}}}({name:"flip",index:30})),this.add(function(t){return e=>({...t,html:e.i18n.get("Video Info"),click:t=>{e.info.show=!0,t.show=!1}})}({name:"info",index:40})),this.add(function(t){return{...t,html:`ArtPlayer ${i}`}}({name:"version",index:50})),this.add(function(t){return e=>({...t,html:e.i18n.get("Close"),click:t=>{t.show=!1}})}({name:"close",index:60}));for(let i=0;i{this.show=!0,a.closed||w(this.art)||!this.show||function(t,e,r){const{$player:n,$contextmenu:o}=t.template,{height:i,width:a,left:s,top:c}=M(n),{height:l,width:d}=M(o);let u=e-s,p=r-c;e+d>s+a&&(u=a-d),r+l>c+i&&(p=i-l),w(t)||j(o,{top:`${p}px`,left:`${u}px`})}(this.art,t,e)},c=function(t,e){const{art:r}=t,{$player:n,$contextmenu:o}=r.template,i=E(o),a=()=>!i.closed&&!w(r);let s,c=!1,l="",d=0;const u=()=>{const t=n.ownerDocument.activeElement;s=t&&n.contains(t)?jt(t):n,Ht(o,s)},p=()=>Array.from(o.querySelectorAll("[tabindex],button,input,select,textarea,a[href],[contenteditable]")).filter(t=>t.tabIndex>=0&&Ut(t)),f=r.i18n.get("Context Menu");if(!a())return{pointer:()=>!1};o.setAttribute("role","group"),o.setAttribute("aria-label",f);const h=t=>{if(!a())return;if(t)return void(o.contains(n.ownerDocument.activeElement)||u());const e=n.ownerDocument.activeElement,i=o.contains(e)||c&&e===n.ownerDocument.body,d=s;s=void 0,c=!1,l="",Ht(o),i&&(d&&n.contains(d)&&Ut(d)&&d.focus({preventScroll:!0}),(n.ownerDocument.activeElement===n.ownerDocument.body||o.contains(n.ownerDocument.activeElement))&&At(r))};r.on("contextmenu",h),i.add(()=>{r.off("contextmenu",h),Ht(o)}),mt(i,o,"focusin",()=>{c=!0});let m=!1;return mt(i,o,"focusout",e=>{o.contains(e.relatedTarget)||m||(m=!0,gt(i,()=>{m=!1,a()&&t.show&&!o.contains(n.ownerDocument.activeElement)&&(t.show=!1)},0))}),mt(i,n,"keydown",n=>{const i=n;if(!a()||!wt(i)||i.defaultPrevented)return;if(("ContextMenu"===i.key||"F10"===i.key&&i.shiftKey)&&r.constructor.CONTEXTMENU&&!qt(i.target)){bt(i),u();const r=i.target.getBoundingClientRect();return e(r.left,r.bottom),void(a()&&t.show&&p()[0]?.focus({preventScroll:!0}))}if(!t.show||!o.contains(i.target))return;if("Escape"===i.key)return bt(i),void(t.show=!1);if("Tab"===i.key)return void(t.show=!1);if(qt(i.target))return;const s=p(),c=s.indexOf(i.target);let f;if("ArrowDown"===i.key||"ArrowRight"===i.key)f=s[(c+1)%s.length];else if("ArrowUp"===i.key||"ArrowLeft"===i.key)f=s[(c+s.length-1)%s.length];else if("Home"===i.key)f=s[0];else if("End"===i.key)f=s[s.length-1];else{if(1!==i.key.length||" "===i.key)return;{const t=i.key.toLowerCase();l=Date.now()-d>700?t:l+t,d=Date.now();const e=[...l].every(e=>e===t)?t:l;f=[...s.slice(c+1),...s.slice(0,c+1)].find(t=>(t.getAttribute("aria-label")||t.textContent||"").trim().toLowerCase().startsWith(e))}}bt(i),f?.focus({preventScroll:!0})}),{pointer:t=>!(!a()||!r.constructor.CONTEXTMENU||qt(t.target))&&(u(),!0)}}(this,s);o(e,"contextmenu",t=>{c.pointer(t)&&(t.preventDefault(),s(t.clientX,t.clientY))}),o(e,"click",t=>{L(t,r)||(this.show=!1)}),n("blur",()=>{this.show=!1})}}const Gt=new WeakMap,Kt=new WeakMap,Zt=new WeakMap;function Jt(t,e){const r=Gt.get(t);r?.active()&&void 0!==r.resumePlaying&&(!e&&r.internalPause?r.internalPause=!1:(r.resumePlaying=e,e||r.pauseRevision++))}function Qt(t){return Zt.get(t)||b(t)}function te(t){const e=Gt.get(t),r=Zt.get(t);return()=>Gt.get(t)===e&&(!e||e.active())&&Zt.get(t)===r&&(!r||!r.closed)}function ee(t){const e=Zt.get(t),r=b(t).child(),n=r.child();Zt.set(t,r),r.add(()=>{Zt.get(t)===r&&Zt.delete(t)});const o={scope:n,assigned:!1,acceptingEvents:!1,pauseRevision:0,active:()=>!w(t)&&!n.closed&&Gt.get(t)===o};return Gt.set(t,o),n.add(()=>{Gt.get(t)===o&&Gt.delete(t),o.onAssigned=void 0,o.onError=void 0}),e?.dispose(),o}function re(t){t.assigned=!0;const e=t.onAssigned;t.onAssigned=void 0,t.active()&&e?.()}function ne(t,e,r){Kt.set(t,e),e.acceptingEvents=!0;try{t.url=r}finally{Kt.get(t)===e&&(Kt.delete(t),re(e))}}function oe(t,e){t.active()&&(t.onError?t.onError(e):console.warn("Failed to initialize ArtPlayer source:",e),t.scope.dispose())}function ie(t,e){const{$progress:r}=t.template,{left:n}=M(r),o=J((u?e.touches[0].clientX:e.clientX)-n,0,r.clientWidth),i=o/r.clientWidth*t.duration;return{second:i,time:tt(i),width:o,percentage:J(o/r.clientWidth,0,1)}}function ae(t,e,r=()=>!0){if(r())if(t.isRotate){const n=(e.touches[0].clientY-t.top)/t.height,o=n*t.duration;if(!r())return;t.emit("setBar","played",n,e),r()&&(t.seek=o)}else{const{second:n,percentage:o}=ie(t,e);if(!r())return;t.emit("setBar","played",o,e),r()&&(t.seek=n)}}const se=new Map([["ArrowRight",1],["ArrowUp",1],["ArrowLeft",-1],["ArrowDown",-1],["PageUp",10],["PageDown",-10]]);function ce(t,e,r){t.getAttribute(e)!==r&&t.setAttribute(e,r)}function le(t,e,r,n,o,i="horizontal"){const a=t=>[t.min,t.max,t.value,t.step].every(Number.isFinite)&&t.max>t.min&&t.step>0,s=(t,e)=>Math.min(e.max,Math.max(e.min,t)),c=()=>{if(t.closed)return;const r=n(),o=a(r),i=o?s(r.value,r):0;ce(e,"aria-disabled",String(!o)),ce(e,"aria-valuemin",String(o?r.min:0)),ce(e,"aria-valuemax",String(o?r.max:0)),ce(e,"aria-valuenow",String(i)),ce(e,"aria-valuetext",r.text(i))};return t.closed||(e.setAttribute("role","slider"),e.tabIndex=0,e.setAttribute("aria-label",r),e.setAttribute("aria-orientation",i),mt(t,e,"keydown",t=>{const r=t;if((r.composedPath()[0]||r.target)!==e||!wt(r)||r.defaultPrevented)return;const i=se.get(r.key);if(void 0===i&&"Home"!==r.key&&"End"!==r.key)return;bt(r);const l=n();if(!a(l))return void c();const d="Home"===r.key?l.min:"End"===r.key?l.max:s(l.value,l)+i*l.step;o(s(d,l)),c()}),c()),c}const de=new WeakMap;function ue(t){return de.get(t)||0}function pe(t,e,r){let n,o=!1,i=!1,a=!1,s=ue(t);const c=()=>a||ue(t)!==s,l=()=>!!t.template?.$video?.seeking;return{restore(i=()=>{t.currentTime=e}){if(!r()||c())return;const d=ue(t);i(),s=ue(t),s>d+1&&(a=!0),r()&&(n=t.currentTime,r()&&!c()&&(o=l()))},manual(){a=!0},ready(){if(!r()||l())return!1;const e=void 0!==n&&Math.abs(t.currentTime-n)>.05;if(!c()&&o&&!i&&void 0!==n&&e){if(i=!0,!r())return!1;t.currentTime=n}return r()&&!l()}}}function fe(t,e){const{icons:r,option:n}=t,{$player:o}=t.template,i=E(e),{on:a}=S(t,e);let s=()=>{};const c=$t(".art-progress-hover",e),l=$t(".art-progress-loaded",e),d=$t(".art-progress-played",e),p=$t(".art-progress-highlight",e),f=$t(".art-progress-indicator",e),h=$t(".art-progress-tip",e);function m(r,n){const{width:o,time:i}=n||ie(t,r);h.textContent=i||"00:00";const a=h.clientWidth;o<=a/2?H(h,"left",0):o>e.clientWidth-a/2?H(h,"left",e.clientWidth-a+"px"):H(h,"left",o-a/2+"px")}r.indicator?N(f,r.indicator):H(f,"backgroundColor","var(--art-theme)"),a("setBar",function(r,n,a){const g="played"===r&&a&&u;if("loaded"===r&&H(l,"width",100*n+"%"),"hover"===r&&(H(c,"width",100*n+"%"),L(a,p)?function(r){const{width:n}=ie(t,r),o=r.target instanceof HTMLElement?r.target.dataset.text:void 0;h.textContent=o??"";const i=h.clientWidth;n<=i/2?H(h,"left",0):n>e.clientWidth-i/2?H(h,"left",e.clientWidth-i+"px"):H(h,"left",n-i/2+"px")}(a):m(a),0===n?D(o,"art-progress-hover"):O(o,"art-progress-hover")),"played"===r&&(H(d,"width",100*n+"%"),H(f,"left",100*n+"%")),g){O(o,"art-progress-hover");m(a,{width:e.clientWidth*n,time:tt(n*t.duration)}),s(),s=gt(i,()=>{D(o,"art-progress-hover")},500)}}),a("video:loadedmetadata",function(){p.textContent="";for(let e=0;e{t.emit("setBar","played",t.played),t.emit("setBar","loaded",t.loaded)}):(a("video:timeupdate",()=>{t.emit("setBar","played",t.played)}),a("video:progress",()=>{t.emit("setBar","loaded",t.loaded)}),a("video:ended",()=>{t.emit("setBar","played",1)})),t.emit("setBar","loaded",t.loaded||0)}function he(t){return e=>({...t,html:'\n
\n
\n
\n
\n
\n
\n
00:00
\n
\n ',mounted:t=>{fe(e,t),function(t,e){const{$progress:r}=t.template,n=e.querySelector(".art-progress-indicator"),{on:o,proxy:i}=S(t,e),a=E(e);let s=0;const c=()=>{const e=te(t);return()=>!a.closed&&!w(t)&&e()},l=()=>{const t=++s,e=c();return()=>t===s&&e()};if(!u){let e;i(r,"click",e=>{e.target!==n&&ae(t,e,l())}),i(r,"mousemove",e=>{const r=c(),{percentage:n}=ie(t,e);r()&&t.emit("setBar","hover",n,e)}),i(r,"mouseleave",e=>{t.emit("setBar","hover",0,e)}),i(r,"mousedown",t=>{e=0===t.button?l():void 0}),o("document:mousemove",r=>{const n=e;if(n?.()){const{second:o,percentage:i}=ie(t,r);if(!n()||e!==n)return;t.emit("setBar","played",i,r),n()&&e===n&&(t.seek=o)}else e=void 0}),o("document:mouseup",()=>{e=void 0})}}(e,t),function(t,e){const r=E(e),{on:n}=S(t,e);let o,i=0;const a=le(r,e,t.i18n.get("Progress"),()=>({min:0,max:t.duration,value:t.currentTime,step:t.constructor.SEEK_STEP,text:e=>`${tt(e)} / ${tt(Number.isFinite(t.duration)&&t.duration>0?t.duration:0)}`}),e=>{const n=++i;o?.dispose();const s=r.child();o=s;const c=Qt(t).add(()=>{s.dispose()});s.add(()=>{c()}),s.add(()=>{o===s&&(o=void 0)});const l=te(t),d=()=>n===i&&!s.closed&&!w(t)&&l(),u=pe(t,e,d),p=()=>{d()?u.ready()&&(s.dispose(),a()):s.dispose()};for(const r of["video:seeked","video:ended"])t.on(r,p),s.add(()=>{t.off(r,p)});try{t.emit("setBar","played",e/t.duration),d()&&u.restore(()=>{t.seek=e}),p()}catch(f){throw s.dispose(),f}});n("video:loadedmetadata",a),n("video:durationchange",a),n("video:emptied",a),n("video:timeupdate",a),n("video:seeking",a),n("video:seeked",a),n("video:ended",a)}(e,t)}})}function me(t){const{option:e}=t.art;e.isLive||t.add(he({name:"progress",position:"top",index:10})),t.add({name:"thumbnails",position:"top",index:20}),t.add(function(t){return e=>({...t,mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e,a=kt(t,o.play),s=kt(t,o.pause);function c(){t.setAttribute("aria-label",i.get("Play")),H(a,"display","flex"),H(s,"display","none")}function l(){t.setAttribute("aria-label",i.get("Pause")),H(a,"display","none"),H(s,"display","flex")}xt(E(t),t,()=>(e.playing?s:a).click()),Y(a,i.get("Play")),Y(s,i.get("Pause")),n(a,"click",()=>{G(e.play())}),n(s,"click",()=>{e.pause()}),e.playing?l():c(),r("video:playing",()=>{l()}),r("video:pause",()=>{c()})}})}({name:"playAndPause",position:"left",index:10})),t.add(function(t){return e=>({...t,mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e,a=kt(t,o.volume),s=kt(t,o.volumeClose);for(const e of[a,s])xt(E(t),e),e.setAttribute("aria-label",i.get("Mute"));const c=kt(t,'
'),l=kt(c,'
'),d=kt(l,'
'),p=kt(l,'
'),f=kt(p,'
'),h=kt(f,'
'),m=kt(p,'
'),g=E(t);let v=0;const y=le(g,p,i.get("Volume"),()=>({min:0,max:100,value:e.muted?0:100*e.volume,step:100*e.constructor.VOLUME_STEP,text:t=>`${Math.round(t)}%`}),t=>{const r=++v;e.muted=!1,r!==v||g.closed||w(e)||(e.volume=t/100)},"vertical");function b(t){const{top:e,height:r}=M(p);return 1-(t.clientY-e)/r}function x(){y();const r=t.ownerDocument.activeElement,n=e.muted||0===e.volume,o=n?s:a;if(a.setAttribute("aria-pressed",String(e.muted)),s.setAttribute("aria-pressed",String(e.muted)),n)H(a,"display","none"),H(s,"display","flex"),H(m,"top","100%"),H(h,"top","100%"),d.textContent="0";else{const t=100*e.volume;H(a,"display","flex"),H(s,"display","none"),H(m,"top",100-t+"%"),H(h,"top",100-t+"%"),d.textContent=String(Math.floor(t))}r!==a&&r!==s||r===o||o.focus({preventScroll:!0})}if(x(),r("video:volumechange",x),n(a,"click",()=>{e.muted=!0}),n(s,"click",()=>{e.muted=!1}),u)H(c,"display","none");else{let t=!1;n(p,"mousedown",r=>{t=0===r.button,e.volume=b(r)}),r("document:mousemove",r=>{t&&(e.muted=!1,e.volume=b(r))}),r("document:mouseup",()=>{t&&(t=!1)})}}})}({name:"volume",position:"left",index:20})),e.isLive||t.add(function(t){return e=>({...t,style:u?{fontSize:"12px",padding:"0 5px"}:{cursor:"auto",padding:"0 10px"},mounted:t=>{const{on:r}=S(e,t);function n(){const r=`${tt(e.currentTime)} / ${tt(e.duration)}`;r!==t.textContent&&(t.textContent=r)}n();const o=["video:loadedmetadata","video:timeupdate","video:progress"];for(let e=0;e{r&&!b(t.art).closed&&(t.art.quality=e.quality)}).catch(t=>{console.warn("ArtPlayer quality initialization failed:",t)}),e.screenshot&&!u&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("Screenshot"),mounted:t=>{const{proxy:r}=S(e,t),{icons:n}=e;xt(E(t),t),kt(t,n.screenshot),r(t,"click",()=>{G(e.screenshot())})}})}({name:"screenshot",position:"right",index:20})),e.setting&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("Show Setting"),mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e;kt(t,o.setting),xt(E(t),t),t.setAttribute("aria-expanded","false"),n(t,"click",()=>{e.setting.toggle(),e.setting.resize()}),r("setting",e=>{t.setAttribute("aria-expanded",String(e)),Y(t,i.get(e?"Hide Setting":"Show Setting"))})}})}({name:"setting",position:"right",index:30})),e.pip&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("PIP Mode"),mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e;xt(E(t),t),kt(t,o.pip),n(t,"click",()=>{e.pip=!e.pip}),r("pip",e=>{Y(t,i.get(e?"Exit PIP Mode":"PIP Mode"))})}})}({name:"pip",position:"right",index:40})),e.airplay&&"WebKitPlaybackTargetAvailabilityEvent"in window&&window.WebKitPlaybackTargetAvailabilityEvent&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("AirPlay"),mounted:t=>{const{proxy:r}=S(e,t),{icons:n}=e;xt(E(t),t),kt(t,n.airplay),r(t,"click",()=>e.airplay())}})}({name:"airplay",position:"right",index:50})),e.fullscreenWeb&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("Web Fullscreen"),mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e;xt(E(t),t);const a=kt(t,o.fullscreenWebOn),s=kt(t,o.fullscreenWebOff);H(s,"display","none"),n(t,"click",()=>{e.fullscreenWeb=!e.fullscreenWeb}),r("fullscreenWeb",e=>{e?(Y(t,i.get("Exit Web Fullscreen")),H(a,"display","none"),H(s,"display","inline-flex")):(Y(t,i.get("Web Fullscreen")),H(a,"display","inline-flex"),H(s,"display","none"))})}})}({name:"fullscreenWeb",position:"right",index:60})),e.fullscreen&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("Fullscreen"),mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e;xt(E(t),t);const a=kt(t,o.fullscreenOn),s=kt(t,o.fullscreenOff);H(s,"display","none"),n(t,"click",()=>{e.fullscreen=!e.fullscreen}),r("fullscreen",e=>{e?(Y(t,i.get("Exit Fullscreen")),H(a,"display","none"),H(s,"display","inline-flex")):(Y(t,i.get("Fullscreen")),H(a,"display","inline-flex"),H(s,"display","none"))})}})}({name:"fullscreen",position:"right",index:70}));for(let r=0;rye.get(t).option.selector}),it(t,"$control_item",{get:()=>ye.get(t).item}),it(t,"$control_value",{get:()=>ye.get(t).value})),ye.set(t,e)}function we(t,e){t.innerHTML=e}function xe(t,e,r,n,o){const{proxy:i}=t.events,a=E(n),s=r.selector;O(n,"art-control-selector");const c=document.createElement("div");O(c,"art-selector-value"),N(c,r.html),n.textContent="",N(n,c);const l=kt(n,'
');for(let f=0;f{if(a.closed)return;const o=T(n),i=r.selector.find(t=>o.includes(t.$control_item));if(!i)return;const s=++d,l=()=>!a.closed&&s===d,u=a.add(function(t,e){return ge.set(t,e),()=>{ge.get(t)===e&&ge.delete(t)}}(n,l));try{if(e(i),a.closed)return;if(r.onSelect){const e=await r.onSelect.call(t,i,i.$control_item,n);if(l()){const t=c.contains(c.ownerDocument.activeElement);we(c,e),ye.get(i)?.refresh?.(t)}}}catch(p){console.warn("ArtPlayer selector failed:",p)}finally{u()}});o.push(u);const p=function(t,e,r,n,o){if(t.closed)return()=>{};const i=Array.from(n.children),a=i.some(t=>t.querySelector(ve));n.setAttribute("role",a?"group":"listbox"),n.setAttribute("aria-label",o);let s=!1,c=!1,l=!1,d="",u=0;const p=()=>i.length>0&&(c||s&&!l),f=()=>r.querySelector('button,a[href],[role="button"]')||r,h=(e=!1)=>{if(t.closed)return;const n=f();r.querySelector(ve)?(r.removeAttribute("role"),r.removeAttribute("tabindex")):(r.setAttribute("role","button"),r.tabIndex=0),n!==r&&(r.removeAttribute("aria-haspopup"),r.removeAttribute("aria-expanded"),r.removeAttribute("aria-disabled")),a?n.removeAttribute("aria-haspopup"):n.setAttribute("aria-haspopup","listbox"),n.setAttribute("aria-expanded",String(p())),n.setAttribute("aria-disabled",String(0===i.length)),e&&r.isConnected&&r.ownerDocument.activeElement===r.ownerDocument.body&&n.focus({preventScroll:!0})},m=(t,r=!1)=>{c=t,l=r,e.classList.toggle("art-selector-open",t),e.classList.toggle("art-selector-dismissed",r),h()},g=e=>{e&&!t.closed&&((e.querySelector(ve)||e).focus({preventScroll:!0}),t.closed||e.scrollIntoView({block:"nearest",inline:"nearest"}))},v=(e=!1)=>{!t.closed&&i.length&&(m(!0),d="",g(i.find(t=>t.classList.contains("art-current"))||i[e?i.length-1:0]))},y=()=>{if(t.closed)return;const o=n.contains(e.ownerDocument.activeElement);m(!1,!0),d="",o&&r.isConnected&&f().focus({preventScroll:!0})};xt(t,r,()=>{r.click(),e.ownerDocument.activeElement===r&&v()}),h();for(const b of i){const e=b.classList.contains("art-current");a?b.setAttribute("aria-current",String(e)):(b.setAttribute("role","option"),b.setAttribute("aria-selected",String(e))),b.querySelector(ve)||(b.tabIndex=-1,xt(t,b,()=>{b.click(),y()}))}return mt(t,r,"keydown",t=>{const e=t;!wt(e)||e.defaultPrevented||e.target!==r&&e.target!==f()||("ArrowDown"===e.key||"ArrowUp"===e.key?(bt(e),v("ArrowUp"===e.key)):"Escape"===e.key&&p()&&(bt(e),y()))}),mt(t,r,"click",t=>{t.isTrusted&&0===t.detail&&f()!==r&&v()}),mt(t,n,"keydown",t=>{const e=t;if(!wt(e)||e.defaultPrevented)return;if("Escape"===e.key)return bt(e),void y();const r=i.indexOf(e.target);if(r<0)return;let n;switch(1!==e.key.length&&(d=""),e.key){case"ArrowDown":n=Math.min(r+1,i.length-1);break;case"ArrowUp":n=Math.max(r-1,0);break;case"Home":n=0;break;case"End":n=i.length-1;break;case"ArrowLeft":case"ArrowRight":return void bt(e);default:{if(1!==e.key.length||" "===e.key)return;const t=Date.now();d=t-u<500?d+e.key.toLocaleLowerCase():e.key.toLocaleLowerCase(),u=t;const o=[...d].every(t=>t===d[0])?d[0]:d;for(let e=1;e<=i.length;e++){const t=(r+e)%i.length;if(i[t].textContent?.trim().toLocaleLowerCase().startsWith(o)){n=t;break}}}}bt(e),void 0!==n&&g(i[n])}),mt(t,n,"click",t=>{t.isTrusted&&0===t.detail&&y()}),mt(t,e,"mouseenter",()=>{s=!0,m(c)}),mt(t,e,"mouseleave",()=>{s=!1,m(n.contains(e.ownerDocument.activeElement))}),mt(t,e,"focusout",t=>{e.contains(t.relatedTarget)||m(!1,!0)}),t.add(()=>{e.classList.remove("art-selector-open","art-selector-dismissed")}),h}(a,n,c,l,String(r.tooltip||r.name||c.textContent||t.i18n.get("Open")));for(const f of s)ye.get(f).refresh=p}class ke extends Ft{constructor(t){super(t),this.isHover=!1,this.name="control",this.timer=Date.now();const{constructor:e}=t,{$player:r,$bottom:n}=this.art.template,o=function(t,e,r){let n,o,i=!0;const a=()=>!t.closed&&i&&e.contains(e.ownerDocument.activeElement),s=()=>{const t=a(),n=e.classList.contains("art-keyboard-focus");e.classList.toggle("art-keyboard-focus",t),t&&!n&&r()},c=()=>{i=!0,s()},l=()=>{i=!1,s()},d=()=>{n!==e.ownerDocument&&(o?.dispose(),n=e.ownerDocument,o=t.child(),mt(o,n,"keydown",c,{capture:!0}),mt(o,n,"mousedown",l,{capture:!0}),mt(o,n,"touchstart",l,{capture:!0,passive:!0}))};return d(),mt(t,e,"keydown",c,{capture:!0}),mt(t,e,"mousedown",l,{capture:!0}),mt(t,e,"touchstart",l,{capture:!0,passive:!0}),mt(t,e,"focusin",()=>{d(),s()}),mt(t,e,"focusout",()=>{e.classList.remove("art-keyboard-focus")}),t.add(()=>{e.classList.remove("art-keyboard-focus")}),a}($(t,n),r,()=>{this.show=!0}),{on:i,proxy:a}=S(t,n);a(r,"focusin",e=>{t.isFocus=!0,t.isInput="INPUT"===e.target?.tagName}),a(r,"focusout",e=>{r.contains(e.relatedTarget)||(t.isFocus=!1,t.isInput=!1)}),i("mousemove",()=>{u||(this.show=!0)}),i("click",()=>{u?this.toggle():this.show=!0}),i("document:mousemove",t=>{this.isHover=L(t,n)}),i("video:timeupdate",()=>{!t.setting.show&&!this.isHover&&!t.isInput&&!o()&&t.playing&&this.show&&Date.now()-this.timer>=e.CONTROL_HIDE_TIME&&(this.show=!1)}),i("control",t=>{t?(D(r,"art-hide-cursor"),O(r,"art-hover"),this.timer=Date.now()):(O(r,"art-hide-cursor"),D(r,"art-hover"))}),this.init(),b(t).closed||function(t){const{$bottom:e,$controls:r,$player:n}=t.template,o=E(e),{on:i}=S(t,e),a=()=>{if(o.closed)return;const t=r.offsetHeight;t>0&&n.style.getPropertyValue("--art-controls-height")!==`${t}px`&&n.style.setProperty("--art-controls-height",`${t}px`)};if(i("resize",a),"undefined"!==typeof ResizeObserver){const t=new ResizeObserver(a);return t.observe(r),void o.add(()=>{t.disconnect()})}if("undefined"!==typeof MutationObserver){const t=new MutationObserver(a);t.observe(r,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),o.add(()=>{t.disconnect()})}a()}(t)}init(){me(this)}add(t){if(w(this.art))return;const e="function"===typeof t?t(this.art):t,{$progress:r,$controlsLeft:n,$controlsRight:o}=this.art.template;switch(e.position){case"top":this.$parent=r;break;case"left":this.$parent=n;break;case"right":this.$parent=o;break;default:X(!1,"Control option.position must one of 'top', 'left', 'right'")}super.add(e)}check(t){!function(t){if(!t)return;const e=t.$control_value.contains(t.$control_value.ownerDocument.activeElement);we(t.$control_value,t.html);for(let r=0;rthis.check(t),t,e,r)}}function $e(t,e){const{constructor:r,template:{$video:n}}=t;!function(t){const{$player:e}=t.template,r=r=>{if(w(t))return;const n=L(r,e);t.isInput=n&&"INPUT"===r.target?.tagName,t.isFocus=n,t.emit(n?"focus":"blur",r)};t.on("document:click",r),t.on("document:contextmenu",r),b(t).add(()=>{t.off("document:click",r),t.off("document:contextmenu",r)})}(t);let o=[];e.proxy(n,"click",e=>{if(w(t))return;const n=Date.now();o.push(n);const{MOBILE_CLICK_PLAY:i,DBCLICK_TIME:a,MOBILE_DBCLICK_PLAY:s,DBCLICK_FULLSCREEN:c}=r,l=o.filter(t=>n-t<=a);switch(l.length){case 1:if(t.emit("click",e),w(t))return;(!u||!t.isLock&&i)&&G(t.toggle()),o=l;break;case 2:if(t.emit("dblclick",e),w(t))return;u?!t.isLock&&s&&G(t.toggle()):c&&(t.fullscreen=!t.fullscreen),o=[];break;default:o=[]}})}function Ee(t){let e;const r=()=>{e=void 0},n=r=>e===r&&!w(t)&&!t.isLock&&!t.option.isLive&&t.isRotate===r.rotated&&r.sourceActive(),o=t=>{t&&r()};t.on("document:touchend",r),t.on("document:touchcancel",r),t.on("lock",o),b(t).add(()=>{r(),t.off("document:touchend",r),t.off("document:touchcancel",r),t.off("lock",o)});return{start:(o,i)=>{r();const a=i.touches[0];if(w(t)||t.isLock||t.option.isLive||1!==i.touches.length||!a)return;if(![a.pageX,a.pageY,a.clientX,a.clientY,t.currentTime].every(Number.isFinite))return;const s={target:o,identifier:a.identifier,x:a.pageX,y:a.pageY,time:t.currentTime,rotated:t.isRotate,sourceActive:te(t)};if(e=s,o===t.template.$progress){const o=t.isRotate?t.height:t.template.$progress.clientWidth;if(!Number.isFinite(o)||o<=0||!Number.isFinite(t.duration)||t.duration<=0)return void r();try{ae(t,i,()=>n(s))}catch(c){throw e===s&&r(),c}n(s)&&(s.time=t.currentTime)}},move:o=>{const i=e,a=o.touches[0];if(!i)return;if(!n(i)||1!==o.touches.length||!a||a.identifier!==i.identifier)return void r();const s=i.rotated?t.height:t.width,c=i.target===t.template.$video?t.constructor.TOUCH_MOVE_RATIO:1;if(![a.pageX,a.pageY,s,t.duration,c].every(Number.isFinite)||s<=0||t.duration<=0)return void r();const l=function(t,e,r,n){const o=e-n,i=r-t;if(Math.abs(i)<2&&Math.abs(o)<2)return 0;const a=180*Math.atan2(o,i)/Math.PI;return a>=-45&&a<45?4:a>=45&&a<135?1:a>=-135&&a<-45?2:a>=135&&a<=180||a>=-180&&a<-135?3:0}(i.x,i.y,a.pageX,a.pageY);if(!(i.rotated?1===l||2===l:3===l||4===l))return;const d=J((i.rotated?a.pageY-i.y:a.pageX-i.x)/s,-1,1),u=J(i.time+t.duration*d*c,0,t.duration);t.seek=u,n(i)&&(t.emit("setBar","played",J(u/t.duration,0,1),o),n(i)&&(t.notice.show=`${tt(u)} / ${tt(t.duration)}`))},cancel:r}}const Ae=["click","mouseup","keydown","touchend","touchcancel","touchmove","mousemove","pointerup","contextmenu","pointermove","visibilitychange","webkitfullscreenchange"],Ce=["resize","scroll","orientationchange"];const Se=new WeakMap;function Te(t){const e=Se.get(t);if(!e)throw new Error("ArtPlayer event registry has not been initialized");return e}function Le(t,e,r,n,o={}){if(Array.isArray(r)){const i=[];try{return r.map(r=>{const a=Le(t,e,r,n,o);return i.push(a),a})}catch(f){for(const t of i.reverse())try{t()}catch(h){console.warn("Failed to roll back event listener:",h)}throw f}}const i=r,a=Te(t);if(a.scope.closed||a.cleaning)return()=>{};const s="boolean"===typeof o?o:{capture:Boolean(o?.capture),once:Boolean(o?.once),passive:o?.passive,signal:o?.signal},c="boolean"===typeof s?s:s.capture,l="boolean"===typeof s?void 0:s.signal;if(a.scope.closed||a.cleaning||l?.aborted)return()=>{};let d=!0;function u(r=!1){(d||r)&&(e.removeEventListener(i,n,c),l?.removeEventListener("abort",p),d=!1,t.destroyEvents.delete(p))}function p(){u()}t.destroyEvents.add(p);try{e.addEventListener(i,n,s),!d||a.scope.closed||a.cleaning?u(!0):l?.aborted?p():l?.addEventListener("abort",p,{once:!0})}catch(f){try{u(!0)}catch(h){console.warn("Failed to roll back event listener:",h)}throw f}return p}function Pe(t){return(e,r)=>{if(w(t))return;const n=(...e)=>{if(!w(t))return r(...e)};t.on(e,n),b(t).add(()=>{t.off(e,n)})}}function Me(t){if(!t.constructor.USE_RAF)return;const e=b(t);let r=()=>{};const n=()=>{w(t)||(t.playing&&t.emit("raf"),w(t)||(r=function(t,e){if(t.closed)return ht;let r=!0,n=ht;const o=requestAnimationFrame(o=>{r&&(n(),t.closed||e(o))});return n=t.add(()=>{r=!1,cancelAnimationFrame(o)}),n}(e,n)))};n(),Pe(t)("destroy",()=>r())}class ze{constructor(t){this.destroyEvents=new Set,function(t,e){Se.set(t,{scope:b(e),cleaning:!1})}(this,t),b(t).add(()=>{this.destroy()}),this.proxy=this.proxy.bind(this),this.hover=this.hover.bind(this),$e(t,this),function(t,e){const{$player:r}=t.template;e.hover(r,e=>{w(t)||(O(r,"art-hover"),t.emit("hover",!0,e))},e=>{w(t)||(D(r,"art-hover"),t.emit("hover",!1,e))})}(t,this),function(t,e){const{$player:r}=t.template;e.proxy(r,"mousemove",e=>{w(t)||t.emit("mousemove",e)})}(t,this),function(t,e){const{option:r,constructor:n}=t,o=Pe(t);o("resize",()=>{const{aspectRatio:e,notice:n}=t;"standard"===t.state&&r.autoSize&&t.autoSize(),w(t)||(t.aspectRatio=e,w(t)||(n.show=""))});const i=b(t);let a=()=>{};const s=()=>{w(t)||(a(),a=gt(i,()=>t.emit("resize"),n.RESIZE_TIME))};o("window:orientationchange",s),o("window:resize",s);const c=t.template.$player.ownerDocument.defaultView?.screen?.orientation;"function"===typeof c?.addEventListener&&e.proxy(c,"change",s)}(t,this),function(t,e){if(!u||t.option.isLive)return;const{$video:r,$progress:n}=t.template,o=Ee(t),i=t=>{e.proxy(t,"touchstart",e=>o.start(t,e)),e.proxy(t,"touchmove",t=>o.move(t)),e.proxy(t,"touchcancel",o.cancel)};t.option.gesture&&i(r),i(n)}(t,this),function(t){const{option:e,constructor:r,template:{$container:n}}=t,o=r.SCROLL_TIME,i=b(t),a=Pe(t);let s=!1;a("window:scroll",()=>{s||(t.emit("view",function(t,e){const r=t.getBoundingClientRect(),n=t.ownerDocument,o=n.defaultView,i=o?.innerHeight||n.documentElement.clientHeight,a=o?.innerWidth||n.documentElement.clientWidth,s=r.top-e<=i&&r.top+r.height+e>=0,c=r.left-e<=a+e&&r.left+r.width+e>=0;return s&&c}(n,r.SCROLL_GAP)),w(t)||(s=!0,gt(i,()=>{s=!1},o)))}),a("view",r=>{e.autoMini&&(t.mini=!r)})}(t),function(t,e){let r,n=0;b(t).add(()=>{r=void 0,n++});const o=t=>{if(t){for(const r of t.disposers)e.remove(r);t.disposers.length=0}};function i(i={}){if(w(t))return;const a=++n,s={disposers:[]},c=()=>a!==n||w(t);try{const{$player:n}=t.template,o=i.document||n.ownerDocument||document,a=i.window||n.ownerDocument?.defaultView||window,l=(n,o,i)=>{for(const a of o){if(c())return;s.disposers.push(e.proxy(n,a,e=>{r!==s||w(t)||t.emit(`${i}:${a}`,e)}))}};l(o,Ae,"document"),l(a,Ce,"window")}catch(d){throw o(s),d}if(c())return void o(s);const l=r;r=s,o(l)}i(),e.bindGlobalEvents=i}(t,this),Me(t)}proxy(t,e,r,n={}){return Array.isArray(e),Le(this,t,e,r,n)}hover(t,e,r){e&&this.proxy(t,"mouseenter",e),r&&this.proxy(t,"mouseleave",r)}remove(t){!function(t,e){if(t.destroyEvents.has(e))try{e(),t.destroyEvents.delete(e)}catch(r){console.warn("Failed to remove event listener:",r)}}(this,t)}destroy(){!function(t){const e=Te(t);if(!e.cleaning){e.cleaning=!0;try{for(const e of t.destroyEvents)try{e(),t.destroyEvents.delete(e)}catch(r){console.warn("Failed to destroy event listener:",r)}}finally{e.cleaning=!1}}}(this)}}function Re(t){if(t&&1===t.nodeType)return t}function Oe(t){const e=t.tagName.toUpperCase();return"INPUT"===e||"TEXTAREA"===e||"SELECT"===e||t.isContentEditable}function De(t,e){if(function(t){return yt.has(t)}(t)||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey||t.isComposing||229===t.keyCode)return!1;const r=function(t,e){const r=t.target;return 9===r?.nodeType?r:r?.ownerDocument||t.view?.document||e}(t,e);let n=Re(r.activeElement);for(;n?.shadowRoot?.activeElement;)n=Re(n.shadowRoot.activeElement);if(n&&Oe(n))return!1;const o=Re(t.composedPath?.()[0])||Re(t.target),i="Enter"===t.key||"Enter"===t.code||"NumpadEnter"===t.code;if(i||" "===t.key||"Space"===t.code){const t='button,summary,[role="button"],[role="switch"]'+(i?",a[href]":"");if(o?.closest?.(t)||n?.closest?.(t))return!1}return!o||!Oe(o)}const Ie=new WeakMap;class Ne{constructor(t){this.art=t,this.keys={},Ie.set(this,{subscribed:!1}),u||this.init()}init(){const t=this.art;if(w(t))return;const e=Ie.get(this);if(t.option.hotkey){if(!e.defaults){const r=function(t){const{constructor:e}=t;return{Escape:()=>{t.fullscreenWeb&&(t.fullscreenWeb=!1)},Space:()=>{G(t.toggle())},ArrowLeft:()=>{t.backward=e.SEEK_STEP},ArrowUp:()=>{t.volume+=e.VOLUME_STEP},ArrowRight:()=>{t.forward=e.SEEK_STEP},ArrowDown:()=>{t.volume-=e.VOLUME_STEP}}}(t);e.defaults=()=>{for(const t of Object.keys(r))this.add(t,r[t])}}e.defaults()}if(e.subscribed)return;e.subscribed=!0;const r=e=>{if(!w(t)){if(t.isFocus&&De(e,t.template.$player.ownerDocument)){const r=Object.prototype.hasOwnProperty.call(this.keys,e.code)?this.keys[e.code]:void 0;if(r){e.preventDefault();for(let n=0;n{e.subscribed=!1,t.off("document:keydown",r)})}add(t,e){const r=Object.prototype.hasOwnProperty.call(this.keys,t)?this.keys[t]:void 0;return r?r.includes(e)||r.push(e):Object.defineProperty(this.keys,t,{value:[e],enumerable:!0,configurable:!0,writable:!0}),this}remove(t,e){const r=Object.prototype.hasOwnProperty.call(this.keys,t)?this.keys[t]:void 0;if(r){const n=r.indexOf(e);-1!==n&&r.splice(n,1),0===r.length&&delete this.keys[t]}return this}}const _e={"Context Menu":"\u5feb\u6377\u83dc\u5355",Lock:"\u9501\u5b9a",Back:"\u8fd4\u56de",Settings:"\u8bbe\u7f6e",Progress:"\u64ad\u653e\u8fdb\u5ea6","Video Info":"\u7edf\u8ba1\u4fe1\u606f",Close:"\u5173\u95ed","Video Load Failed":"\u52a0\u8f7d\u5931\u8d25",Volume:"\u97f3\u91cf",Play:"\u64ad\u653e",Pause:"\u6682\u505c",Rate:"\u901f\u5ea6",Mute:"\u9759\u97f3","Video Flip":"\u753b\u9762\u7ffb\u8f6c",Horizontal:"\u6c34\u5e73",Vertical:"\u5782\u76f4",Reconnect:"\u91cd\u65b0\u8fde\u63a5","Show Setting":"\u663e\u793a\u8bbe\u7f6e","Hide Setting":"\u9690\u85cf\u8bbe\u7f6e",Screenshot:"\u622a\u56fe","Play Speed":"\u64ad\u653e\u901f\u5ea6","Aspect Ratio":"\u753b\u9762\u6bd4\u4f8b",Default:"\u9ed8\u8ba4",Normal:"\u6b63\u5e38",Open:"\u6253\u5f00","Switch Video":"\u5207\u6362","Switch Subtitle":"\u5207\u6362\u5b57\u5e55",Fullscreen:"\u5168\u5c4f","Exit Fullscreen":"\u9000\u51fa\u5168\u5c4f","Web Fullscreen":"\u7f51\u9875\u5168\u5c4f","Exit Web Fullscreen":"\u9000\u51fa\u7f51\u9875\u5168\u5c4f","Mini Player":"\u8ff7\u4f60\u64ad\u653e\u5668","PIP Mode":"\u5f00\u542f\u753b\u4e2d\u753b","Exit PIP Mode":"\u9000\u51fa\u753b\u4e2d\u753b","PIP Not Supported":"\u4e0d\u652f\u6301\u753b\u4e2d\u753b","Fullscreen Not Supported":"\u4e0d\u652f\u6301\u5168\u5c4f","Subtitle Offset":"\u5b57\u5e55\u504f\u79fb","Last Seen":"\u4e0a\u6b21\u770b\u5230","Jump Play":"\u8df3\u8f6c\u64ad\u653e",AirPlay:"\u9694\u7a7a\u64ad\u653e","AirPlay Not Available":"\u9694\u7a7a\u64ad\u653e\u4e0d\u53ef\u7528"};!function(t,e){if("undefined"!==typeof window){window[t]=e}}("artplayer-i18n-zh-cn",_e);class We{constructor(t){this.art=t,this.languages={"zh-cn":_e},this.language={},this.update(t.option.i18n)}init(){const t=this.art.option.lang.toLowerCase();this.language=st(this.languages,t)&&this.languages[t]||{}}get(t){return st(this.language,t)&&this.language[t]||t}update(t){this.languages=lt(this.languages,t),this.init()}}const Fe={loading:'\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n',state:'\r\n\r\n\r\n',play:'\r\n \r\n',pause:'\r\n \r\n',check:'\r\n\r\n',volume:'\r\n \r\n \r\n',volumeClose:'\r\n \r\n \r\n',screenshot:'\r\n\t\r\n\r\n',setting:'\r\n \r\n \r\n',pip:'\r\n\r\n',arrowLeft:'\r\n \r\n',arrowRight:'\r\n \r\n',playbackRate:'',aspectRatio:'',config:'',lock:'\r\n\r\n\r\n\r\n\r\n',flip:'\r\n\r\n\r\n\r\n\r\n\r\n',unlock:'\r\n\r\n\r\n',fullscreenOff:'\r\n\r\n\r\n\r\n\r\n',fullscreenOn:'\r\n\r\n\r\n\r\n\r\n',fullscreenWebOff:'\r\n\r\n\r\n\r\n\r\n',fullscreenWebOn:'\r\n\r\n\r\n\r\n\r\n',switchOn:'\r\n\r\n\r\n \r\n',switchOff:'\r\n\r\n\r\n \r\n\r\n',error:'\r\n\r\n\r\n\r\n\r\n',close:'\r\n\r\n\r\n\r\n\r\n',airplay:'\r\n \r\n \r\n \r\n \r\n\r\n'};class Ve{constructor(t){const e={...Fe,...t.option.icons};for(const r in e)it(this,r,{get:()=>B(r,e[r])})}}const Ye=new WeakMap;function Be(t,e,r){const n=()=>!e.closed&&!w(t),o=t=>{try{e.dispose()}catch(r){console.warn("Failed to release info polling resources:",r)}throw t};try{const{proxy:i,constructor:a,template:{$infoPanel:s,$infoClose:c,$video:l}}=t,d=i(c,"click",()=>{n()&&r()});e.add(()=>{t.events.remove(d)});const u=Array.from(s.querySelectorAll("[data-video]")),p=()=>e.dispose();t.on("destroy",p),e.add(()=>{t.off("destroy",p)}),function(t,e,r){const{$player:n,$info:o,$infoClose:i}=t.template;if(!o)return;const a=()=>!e.closed&&!w(t),s=()=>n.classList.contains("art-info-show"),c=t.i18n.get("Close");if(!a())return;const l=t.i18n.get("Video Info");if(!a())return;i.setAttribute("aria-label",c),o.setAttribute("role","group"),o.setAttribute("aria-label",l),xt(e,i,()=>i.click(),s),mt(e,o,"keydown",t=>{const e=t;a()&&s()&&wt(e)&&!e.defaultPrevented&&"Escape"===e.key&&(bt(e),r())});const d=e=>{if(!a())return;const r=n.ownerDocument,s=r.activeElement;if(e)o.contains(s)||(Ye.delete(t),s&&n.contains(s)&&(Ye.set(t,jt(s)),n.classList.contains("art-keyboard-focus")&&i.focus({preventScroll:!0})));else{const e=Ye.get(t);if(Ye.delete(t),!o.contains(s))return;const i=e&&r.defaultView?.getComputedStyle(e).visibility;e?.isConnected&&n.contains(e)&&e.getClientRects().length&&"hidden"!==i&&"collapse"!==i&&!e.matches(":disabled")&&!e.closest("[inert]")&&"true"!==e.getAttribute("aria-disabled")?e.focus({preventScroll:!0}):At(t)}};t.on("info",d),e.add(()=>{t.off("info",d)})}(t,e,r);const f=()=>{try{for(const t of u){if(!n())return;const e=Reflect.get(l,t.dataset.video??"undefined");if(!n())return;const r="number"===typeof e?e.toFixed(2):e;if(!n())return;if(t.textContent!==r){const e=null==r?null:`${r}`;if(!n())return;t.textContent=e}}n()&>(e,f,a.INFO_LOOP_TIME)}catch(t){o(t)}};n()&&f()}catch(i){o(i)}}const He=new WeakMap;class je extends Ft{constructor(t){super(t),this.name="info",He.set(this,{revision:0}),u||this.init()}init(){const t=He.get(this),e=++t.revision;if(t.scope?.dispose(),w(this.art)||t.revision!==e)return;const r=b(this.art).child();t.scope=r,r.add(()=>{t.scope===r&&(t.scope=void 0)}),Be(this.art,r,()=>{this.show=!1})}}class qe extends Ft{constructor(t){super(t);const{option:e,template:{$layer:r}}=t;this.name="layer",this.$parent=r;for(let n=0;n{H(i,"display","none"),H(s,"display",null),w(t)&&(c=!0)};var d;t.on("destroy",l),(d=t,y(d).finalizers).add(()=>{try{c||l()}finally{t.off("destroy",l)}}),w(t)||n.proxy(e.$state,"click",()=>{w(t)||G(t.play())})}}const Ge=new WeakMap;function Ke(t){const e=Ge.get(t);e.revision++,e.pending=void 0,null!==t.timer&&(clearTimeout(t.timer),t.timer=null)}class Ze{constructor(t){this.art=t,this.timer=null,Ge.set(this,{revision:0});const e=()=>this.destroy();t.on("destroy",e),b(t).add(()=>{t.off("destroy",e)}),b(t).add(()=>{this.destroy()})}destroy(){Ke(this)}set show(t){if(w(this.art))return;const e=Ge.get(this);e.revision++;const{constructor:r,template:{$player:n,$noticeInner:o}}=this.art;if(t){Ke(this);const i=e.revision,a=()=>!w(this.art)&&e.revision===i;if(o.textContent=t instanceof Error?t.message.trim():t,!a())return;if(O(n,"art-notice-show"),!a())return;const s=r.NOTICE_TIME;if(!a())return;const c={};e.pending=c;const l=setTimeout(()=>{if(w(this.art)||e.pending!==c)return;e.pending=void 0;const t=e.revision;o.textContent="",w(this.art)||e.revision!==t||D(n,"art-notice-show")},s);a()?this.timer=l:clearTimeout(l)}else D(n,"art-notice-show")}get show(){const{template:{$player:t}}=this.art;return t.classList.contains("art-notice-show")}}function Je(t,e){return function(t,e){const r=lt(e,t);return r.container=t.container,o(r,_t)}(t,e)}function Qe({width:t,height:e}){return Number.isFinite(t)&&t>0&&Number.isFinite(e)&&e>0}function tr(t,e){if(!Qe(t)||!Number.isFinite(e)||e<=0)return;const r=t.width/t.height>e?{width:e*t.height,height:t.height,axis:"width"}:{width:t.width,height:t.width/e,axis:"height"};return Qe(r)?r:void 0}function er(t,e,r,n=!1){const o=e=>{w(t)||r(e)};t[n?"once":"on"](e,o),b(t).add(()=>{t.off(e,o)})}function rr(t,e,r){for(const[n,o]of e){if(w(t)||r&&!r())return;t[n].show=o}}function nr(t){const{option:e,constructor:r,i18n:n,notice:o,template:{$player:i}}=t;let a,s=Qt(t),c=0;return{reset(){c=0,a?.dispose(),D(i,"art-error")},loadStart(){D(i,"art-error")},schedule(l){(async l=>{if(w(t))return;const d=Qt(t);if(d!==s&&(s=d,c=0),a&&!a.closed)return;const u=d.child();a=u,u.add(()=>{a===u&&(a=void 0)});const p=()=>!w(t)&&!u.closed&&d===Qt(t),f=c{console.warn("ArtPlayer reconnect failed:",t)})}}}const or=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],ir=(()=>{if("undefined"===typeof document)return!1;const t=or[0],e={};for(const r of or){if(r[1]in document){for(const[n,o]of r.entries())e[t[n]]=o;return e}}return!1})(),ar={change:ir.fullscreenchange,error:ir.fullscreenerror},sr={request:(t=document.documentElement,e)=>new Promise((r,n)=>{const o=()=>{sr.off("change",o),r()};sr.on("change",o);const i=t[ir.requestFullscreen](e);i instanceof Promise&&i.then(o).catch(n)}),exit:()=>new Promise((t,e)=>{if(!sr.isFullscreen)return void t();const r=()=>{sr.off("change",r),t()};sr.on("change",r);const n=document[ir.exitFullscreen]();n instanceof Promise&&n.then(r).catch(e)}),toggle:(t,e)=>sr.isFullscreen?sr.exit():sr.request(t,e),onchange(t){sr.on("change",t)},onerror(t){sr.on("error",t)},on(t,e){const r=ar[t];r&&document.addEventListener(r,e,!1)},off(t,e){const r=ar[t];r&&document.removeEventListener(r,e,!1)},raw:ir};function cr(t,e,...r){const n=Reflect.get(t,e);if("function"!==typeof n)throw new TypeError(`Fullscreen method ${e} is not available`);return n.apply(t,r)}Object.defineProperties(sr,{isFullscreen:{get:()=>Boolean(document[ir.fullscreenElement])},element:{enumerable:!0,get:()=>document[ir.fullscreenElement]},isEnabled:{enumerable:!0,get:()=>Boolean(document[ir.fullscreenEnabled])}});const lr=new WeakMap;function dr(t){try{Promise.resolve(t()).catch(()=>{})}catch{}}function ur(t){const{document:e,elementProperty:r,changeEvent:n,target:o,exit:i}=t,a=function(t,e,r){let n=lr.get(t);if(!n){n=new WeakMap,lr.set(t,n);const o=n;t.addEventListener(r,()=>{const r=Reflect.get(t,e),n=r&&o.get(r);n&&(o.delete(r),dr(n))})}return n}(e,r,n);a.set(o,i),t.element===o&&(a.delete(o),dr(i))}function pr(t,e,r,n,o=()=>t.element!==t.target){const i=e.child();let a,s,c=!1,l=!1,d=!1,u=!1,p=!1;const f=new Promise((t,e)=>{a=t,s=e});function h(t=!1,e){if(!c){c=!0;try{i.dispose()}catch(r){t||(t=!0,e=r)}t?s(e):a()}}i.add(()=>{c||(c=!0,l=!0,a(),d&&!u&&r&&ur(t))});const m=()=>{d&&!u&&(r?t.element===t.target:o())&&h()};if(mt(i,t.document,t.changeEvent,m),mt(i,t.document,t.errorEvent,e=>{e.target!==t.target&&e.target!==t.document||(p=!0,d&&!u&&h(!0,new Error("Fullscreen request failed")))}),!i.closed)try{r&&function(t){lr.get(t.document)?.delete(t.target)}(t);const e=r?t.request():t.exit();u=Boolean(e&&"function"===typeof e.then),d=!0,l&&!u&&r&&ur(t),u?Promise.resolve(e).then(()=>{l?n():h()},t=>h(!0,t)).catch(()=>{}):p?h(!0,new Error("Fullscreen request failed")):m()}catch(g){h(!0,g)}return{promise:f,cancel:()=>i.dispose()}}function fr(t,e){const r=b(t).child(),{$player:n,$video:o}=t.template,i=()=>e.element===n||e.element===o;let a,s=i(),c=0,l=s,d=!1,u=!1,p=!1;function f(){if(i())try{Promise.resolve(e.exit()).catch(()=>{})}catch{}}return r.add(()=>{c+=1,l=!1,n.classList.remove("art-fullscreen"),f()}),mt(r,e.document,e.changeEvent,()=>{const r=i();if(r&&function(t){return lr.get(t.document)?.has(t.target)??!1}(e))return;if(r&&u)return void f();if(r===s||w(t))return;s=r;const o=c,a=()=>w(t)||i()!==r||o!==c&&l!==r;t.emit("fullscreen",r),a()||(r&&(t.state="fullscreen"),a()||(n.classList.toggle("art-fullscreen",r),t.emit("resize")))}),mt(r,e.document,e.errorEvent,r=>{(r.target===n||r.target===o||r.target===e.document&&(p||void 0!==a||i()))&&!w(t)&&t.emit("fullscreenError",r)}),{get:()=>!w(t)&&i(),set(n){if(w(t))return Promise.resolve();const o=++c;if(l=Boolean(n),l?u=!1:d&&(u=!0),a?.cancel(),a=void 0,d=!1,!l&&!i())return Promise.resolve();p=!0,d=l;const s=pr(e,r,l,()=>{!w(t)&&l||f()},()=>!i());p=!1,c===o?a=s:s.cancel();const h=s.promise.catch(e=>{throw w(t)||c!==o||(t.notice.show=e),e}).finally(()=>{c===o&&(a=void 0,d=!1)});return h.catch(()=>{}),h}}}const hr=new WeakSet;function mr(t,e=!1){return"string"===typeof t.webkitPresentationMode?"fullscreen"===t.webkitPresentationMode:"boolean"===typeof t.webkitDisplayingFullscreen?t.webkitDisplayingFullscreen:t.ownerDocument.fullscreenElement===t||e}function gr(t){hr.delete(t),t.removeEventListener("webkitbeginfullscreen",vr),t.removeEventListener("webkitpresentationmodechanged",vr)}function vr(t){if(hr.has(this)&&mr(this,"webkitbeginfullscreen"===t.type)){gr(this);try{this.webkitExitFullscreen?.()}catch{}}}function yr(t){hr.add(t),t.addEventListener("webkitbeginfullscreen",vr),t.addEventListener("webkitpresentationmodechanged",vr)}function br(t){const{$video:e}=t.template,r=b(t).child();let n=!1,o=mr(e),i=o,a=!1,s=0;const c=()=>mr(e,n);function l(r){if(w(t)||(l=e,hr.has(l)))return;var l;"boolean"===typeof r&&(n=r);const d=c();if(d&&(a=!1),d===o)return;o=d;const u=s,p=()=>w(t)||c()!==d||u!==s&&i!==d;t.emit("fullscreen",d),p()||(d&&(t.state="fullscreen"),p()||t.emit("resize"))}r.add(()=>{s++,i=!1,a&&yr(e),c()&&e.webkitExitFullscreen?.()}),mt(r,e,"webkitbeginfullscreen",()=>l(!0)),mt(r,e,"webkitendfullscreen",()=>l(!1)),mt(r,e,"webkitpresentationmodechanged",()=>l());const d=()=>l();return t.on("document:webkitfullscreenchange",d),r.add(()=>{t.off("document:webkitfullscreenchange",d)}),{get:()=>!w(t)&&c(),set(r){if(w(t))return;const n=++s;if(i=Boolean(r),r){if(gr(e),t.state="fullscreen",w(t)||n!==s)return;a=!0;try{e.webkitEnterFullscreen()}catch(o){throw n===s&&(a=!1),o}}else a&&(a=!1,yr(e)),c()&&e.webkitExitFullscreen()}}}function wr(t){return{node:t,parent:t.parentNode,next:t.nextSibling}}function xr({node:t,parent:e,next:r}){if(!e)return void t.parentNode?.removeChild(t);const n=r?.parentNode===e?r:null;t.parentNode===e&&t.nextSibling===n||e.insertBefore(t,n)}function kr(t,e,r){const n=Math.max(0,r.viewportWidth-r.width),o=Math.max(0,r.viewportHeight-r.height);return{left:Math.max(0,Math.min(t,n)),top:Math.max(0,Math.min(e,o))}}function $r(t){const{width:e,height:r}=t.getBoundingClientRect(),n=t.ownerDocument.defaultView;return{width:e,height:r,viewportWidth:n.innerWidth,viewportHeight:n.innerHeight}}function Er(t,e,r,n){const o=e.child();if(o.closed)return;const i=t.template.$mini;if(i){const t=i.style.display;return o.add(()=>{i.style.display=t}),{element:i,cancelDrag:()=>{},fresh:!1}}const a=t.template.$player.ownerDocument,s=a.createElement("div");s.className="art-mini-popup",o.add(()=>{s.remove()});try{const e=a.createElement("div");if(e.className="art-mini-close",e.append(t.icons.close),o.closed)return;const i=a.createElement("div");i.className="art-mini-state";const c=t.icons.play,l=t.icons.pause;if(o.closed)return;i.append(c,l),s.append(e,i),xt(o,e,()=>e.click(),r),xt(o,i,()=>(t.playing?l:c).click(),r);const d=t.i18n.get("Close");if(o.closed||w(t))return;e.setAttribute("aria-label",d);const u=t.i18n.get("Mini Player");if(o.closed||w(t))return;s.setAttribute("role","group"),s.setAttribute("aria-label",u),mt(o,s,"keydown",t=>{const e=t;r()&&wt(e)&&!e.defaultPrevented&&"Escape"===e.key&&(bt(e),n())}),mt(o,e,"click",n),mt(o,c,"click",()=>{G(t.play())}),mt(o,l,"click",()=>{t.pause()});const p=()=>{if(o.closed)return;const e=t.i18n.get(t.playing?"Pause":"Play");o.closed||w(t)||(i.setAttribute("aria-label",e),c.style.display=t.playing?"none":"flex",l.style.display=t.playing?"flex":"none")};p();for(const r of["video:playing","video:pause","video:timeupdate"])t.on(r,p),o.add(()=>{t.off(r,p)});const f=function(t,e,r,n){let o=!1,i=0,a=0;const s=()=>{o=!1,e.classList.remove("art-mini-dragging"),e.style.transform=""};mt(r,e,"mousedown",t=>{const e=t;0===e.button&&n()&&(o=!0,i=e.clientX,a=e.clientY)});const c=t=>{!r.closed&&o&&n()&&(e.classList.add("art-mini-dragging"),e.style.transform=`translate(${t.clientX-i}px, ${t.clientY-a}px)`)},l=()=>{if(r.closed||!o||!n())return;const i=e.getBoundingClientRect(),a=kr(i.left,i.top,$r(e));s(),e.style.left=`${a.left}px`,e.style.top=`${a.top}px`,t.storage.set("left",a.left),r.closed||t.storage.set("top",a.top)};return t.on("document:mousemove",c),r.add(()=>{t.off("document:mousemove",c)}),t.on("document:mouseup",l),r.add(()=>{t.off("document:mouseup",l)}),r.add(s),s}(t,s,o,r);if(o.closed)return;if(t.template.$mini=s,a.body.append(s),!o.closed)return{element:s,cancelDrag:f,fresh:!0,focus:()=>e.focus({preventScroll:!0})}}catch(c){throw o.dispose(),t.template.$mini===s&&delete t.template.$mini,c}}function Ar(t){const{$player:e,$video:r}=t.template,n=b(t).child();let o,i,a=0,s=!1,c=!1;const l=()=>!w(t)&&e.classList.contains("art-mini"),d=function(t){const e=t.template.$player;let r;return{entering(){const n=e.ownerDocument,o=n.activeElement,i=o&&e.contains(o);t.template.$mini?.contains(o)||(r=i?jt(o):void 0);const a=i&&e.classList.contains("art-keyboard-focus");return e=>{!a||w(t)||n.activeElement!==o&&n.activeElement!==n.body||e?.()}},leaving(n){const o=e.ownerDocument,i=n?.contains(o.activeElement);return()=>{if(!i||w(t)||o.activeElement!==o.body&&!n?.contains(o.activeElement))return;const e=r&&o.defaultView?.getComputedStyle(r).visibility;r?.isConnected&&r.getClientRects().length&&"hidden"!==e&&"collapse"!==e&&"true"!==r.getAttribute("aria-disabled")&&!r.matches(":disabled")&&!r.closest("[inert]")?r.focus({preventScroll:!0}):At(t)}}}}(t);function u(){if(i){const e=i,r=a;i=void 0;try{xr(e)}catch(t){throw r!==a||i||(i=e),t}}}function p(){if(w(t))return;const r=++a;c=!1;const n=d.leaving(t.template.$mini);u(),w(t)||r!==a||(o?.cancelDrag(),e.classList.remove("art-mini"),t.template.$mini&&(t.template.$mini.style.display="none",n(),w(t)||r!==a||t.emit("mini",!1)))}function f(){if(w(t))return;const h=++a;if(s)return void(c=!0);const m=d.entering();if(t.state="mini",!w(t)&&h===a){i??(i=wr(r)),e.classList.add("art-mini");try{if(!o){s=!0;try{o=Er(t,n,l,p)}finally{s=!1}}if(c)return c=!1,void f();if(!o||w(t))return;if(h!==a)return void(l()||(o.element.style.display="none"));if(o.fresh?o.element.prepend(r):o.element.append(r),w(t)||h!==a)return;o.element.style.display=o.fresh?"":"flex",o.fresh=!1;const e=t.storage.get("top"),i=function(t,e,r){return"number"===typeof t&&Number.isFinite(t)&&"number"===typeof e&&Number.isFinite(e)&&t>=0&&e>=0&&t+r.width<=r.viewportWidth&&e+r.height<=r.viewportHeight?{left:t,top:e,reset:!1}:{...kr(r.viewportWidth-r.width-50,r.viewportHeight-r.height-50,r),reset:!0}}(t.storage.get("left"),e,$r(o.element));if(w(t)||h!==a)return;if(o.element.style.left=`${i.left}px`,o.element.style.top=`${i.top}px`,i.reset){if(t.storage.set("top",i.top),w(t)||h!==a)return;t.storage.set("left",i.left)}w(t)||h!==a||m(o.focus),w(t)||h!==a||t.emit("mini",!0)}catch(g){const r=c;throw c=!1,w(t)||h!==a&&!r||(u(),e.classList.remove("art-mini"),o&&(o.element.style.display="none")),g}}}return n.add(()=>{a++;try{u()}finally{o?.cancelDrag(),e.classList.remove("art-mini")}}),{get:l,set(t){t?f():p()}}}const Cr=new WeakSet,Sr=t=>"picture-in-picture"===t.webkitPresentationMode;function Tr(t){Cr.delete(t),t.removeEventListener("webkitpresentationmodechanged",Lr),t.removeEventListener("enterpictureinpicture",Lr)}function Lr(){if(Cr.has(this)&&Sr(this)){Tr(this);try{this.webkitSetPresentationMode?.("inline")}catch{}}}function Pr(t){Cr.add(t),t.addEventListener("webkitpresentationmodechanged",Lr),t.addEventListener("enterpictureinpicture",Lr)}function Mr(t,e,r,n,o=!0){let i,a=!1;const s=e=>{t.closed||a||(o&&(a=!0,i()),n(e))};return e[o?"once":"on"](r,s),i=t.add(()=>{e.off(r,s)}),s}function zr(t,e,r){return new Promise((n,o)=>{if(w(t)||e===t.url)return void n();const i=function(t){const e=Gt.get(t);return e?.active()?e.resumePlaying:void 0}(t)??t.playing,a=ee(t);a.resumePlaying=i;const s=a.scope.child();let c=!1;const l=(t=!1,e)=>{c||(c=!0,a.resumePlaying=void 0,a.onError=void 0,a.onAssigned=void 0,s.dispose(),t?o(e):n(),t&&a.scope.dispose())};s.add(()=>{l()});const d=()=>!c&&a.active(),u=t=>l(!0,t);a.onError=u;try{const{aspectRatio:n,playbackRate:o}=t;a.internalPause=!0;try{t.pause()}finally{a.internalPause=!1}if(!d())return;const i=s.child();let c=!1,p=!1,f=!1;const h=pe(t,r,d),m=async()=>{const e=a.pauseRevision;if(t.aspectRatio=n,d()){if(a.resumePlaying)try{await t.play()}catch{}d()&&(a.pauseRevision===e&&(t.notice.show=""),l())}},g=()=>{if(d()&&!p&&c)try{if(t.template?.$video?.seeking)return;if(!d())return;if(f||(f=!0,t.playbackRate=o),!h.ready()||!d()||p)return;p=!0,i.dispose(),m().catch(u)}catch(e){u(e)}},v={"video:error":u,"video:loadedmetadata":()=>{if(d())try{h.restore()}catch(t){u(t)}},"video:canplay":()=>{c=!0,g()},"video:seeked":g,seek:h.manual},y=s.child(),b=[],w=Object.keys(v);for(const e of w)Mr(y,t,e,t=>{a.acceptingEvents&&b.push([e,t])},!1);if(ne(t,a,e),!d())return;if(t.notice.show="",!d())return;const x=()=>{if(y.dispose(),!e)return void l();const r={};for(const e of w)r[e]=Mr(i,t,e,v[e],"video:seeked"!==e);for(const[t,e]of b){if(!d()||i.closed)break;r[t](e)}b.length=0};a.assigned?x():a.onAssigned=x}catch(p){u(p)}})}function Rr(t,e){const{number:r,column:n,width:o,height:i,scale:a}=t,{imageWidth:s,videoWidth:c,videoHeight:l,progressWidth:d,position:u}=e,p=Number(n),f=Number(o)*Number(a)||s/p,h=Number(i)*Number(a)||f/(c/l),m=Math.floor(u/(d/Number(r)));return{height:`${h}px`,width:`${f}px`,backgroundPosition:`-${m%p*f}px -${Math.floor(m/p)*h}px`,left:u<=f/2?0:u>d-f/2?d-f+"px":u-f/2+"px"}}function Or(t){const{option:e,template:{$video:r}}=t;it(t,"url",{get:()=>r.src,async set(n){if(w(t))return;const o=function(t){const e=Kt.get(t);return Kt.delete(t),e||ee(t)}(t);o.acceptingEvents=!1;try{if(!n)return void(await vt(o.scope)&&o.active()&&(t.loading.show=!0));const i=t.url,a=e.type||K(n),s=e.customType[a];if(a&&s){if(!(await vt(o.scope))||!o.active())return;t.loading.show=!0}if(!o.active())return;const c=o.scope.child();let l=!1,d=!1;Mr(c,t,"video:canplay",()=>{l=!d}),Mr(c,t,"video:error",()=>{d=!0});try{if(o.acceptingEvents=!0,a&&s){const e=s.call(t,r,n,t);Promise.resolve(e).catch(t=>oe(o,t))}else{if(!o.active())return;r.src=n}}finally{c.dispose()}if(!o.active())return;if(i!==t.url&&(t.option.url=n,o.active()&&t.isReady&&i)){const e=()=>{o.active()&&t.emit("restart",n)};l?e():d||Mr(o.scope,t,"video:canplay",e)}}catch(i){oe(o,i)}finally{re(o)}}})}const Dr=[function(t){const{template:{$video:e}}=t;it(t,"attr",{value(t,r){const n=e;if(void 0===r)return n[t];n[t]=r}})},function(t){const{i18n:e,notice:r,option:n,constructor:{instances:o},template:{$video:i}}=t;it(t,"play",{async value(){Jt(t,!0);const a=function(t){const e=te(t),r=Gt.get(t),n=r?.pauseRevision;return()=>e()&&r?.pauseRevision===n}(t),s=await i.play();if(!a())return s;const c=e.get("Play");if(!a())return s;if(r.show=c,!a())return s;if(t.emit("play"),n.mutex)for(let e=0;et.playing?t.pause():t.play()})},function(t){const{notice:e}=t;it(t,"seek",{set(r){t.currentTime=r,t.duration&&(e.show=`${tt(t.currentTime)} / ${tt(t.duration)}`),t.emit("seek",t.currentTime,r)}});const r=t;it(t,"forward",{set(e){r.seek=t.currentTime+e}}),it(t,"backward",{set(e){r.seek=t.currentTime-e}})},function(t){const{template:{$video:e},i18n:r,notice:n,storage:o}=t;it(t,"volume",{get:()=>e.volume||0,set:t=>{e.volume=J(t,0,1),n.show=`${r.get("Volume")}: ${Number.parseInt(String(100*e.volume),10)}`,0!==e.volume&&o.set("volume",e.volume)}}),it(t,"muted",{get:()=>e.muted,set:r=>{e.muted=r,t.emit("muted",r)}})},function(t){const{$video:e}=t.template;it(t,"currentTime",{get:()=>e.currentTime||0,set:r=>{const n=Number.parseFloat(r);Number.isNaN(n)||(!function(t){de.set(t,ue(t)+1)}(t),e.currentTime=J(n,0,t.duration))}})},function(t){it(t,"duration",{get:()=>{const{duration:e}=t.template.$video;return e===1/0?0:e||0}})},function(t){const e=e=>zr(t,e,0);it(t,"switchQuality",{value:e=>zr(t,e,t.currentTime)}),it(t,"switchUrl",{value:e}),it(t,"switch",{set:e})},function(t){const{template:{$video:e},i18n:r,notice:n}=t,o=t;it(t,"playbackRate",{get:()=>e.playbackRate,set(t){if(t){if(t===e.playbackRate)return;e.playbackRate=t,n.show=`${r.get("Rate")}: ${1===t?r.get("Normal"):`${t}x`}`}else o.playbackRate=1}})},function(t){const{i18n:e,notice:r,template:{$video:n,$player:o}}=t;it(t,"aspectRatio",{get:()=>o.dataset.aspectRatio||"default",set(i){if(!w(t)){if(i||(i="default"),"default"===i)n.style.width="",n.style.height="",n.style.margin="",delete o.dataset.aspectRatio;else{const e=i.split(":").map(Number),r=tr({width:o.clientWidth,height:o.clientHeight},e[0]/e[1]);if(w(t))return;"width"===r?.axis?(n.style.width=`${r.width}px`,n.style.height="100%",n.style.margin="0 auto"):r&&(n.style.width="100%",n.style.height=`${r.height}px`,n.style.margin="auto 0"),o.dataset.aspectRatio=i}r.show=`${e.get("Aspect Ratio")}: ${"default"===i?e.get("Default"):i}`,w(t)||t.emit("aspectRatio",i)}}})},function(t){const{notice:e,template:{$video:r}}=t,n=document.createElement("canvas");function o(o){const i=te(t);return new Promise((a,s)=>{const c=r=>{try{!w(t)&&i()&&(e.show=r)}catch(n){return void s(n)}s(r)};try{!function(t,e){t.width=e.videoWidth,t.height=e.videoHeight;const r=t.getContext("2d");if(!r)throw new TypeError("Canvas 2D context is unavailable");r.drawImage(e,0,0)}(n,r),o?function(t,e,r){t.toBlob(t=>{try{if(!t)throw new Error("Unable to encode screenshot blob");e(URL.createObjectURL(t))}catch(n){r(n)}})}(n,a,c):a(n.toDataURL("image/png"))}catch(l){c(l)}})}it(t,"getDataURL",{value:()=>o(!1)}),it(t,"getBlobUrl",{value:()=>o(!0)}),it(t,"screenshot",{value:async e=>{const n=te(t),o=await t.getDataURL();if(!w(t)&&n()){const i=e||`artplayer_${tt(r.currentTime)}`;!w(t)&&n()&&Z(o,`${i}.png`),!w(t)&&n()&&t.emit("screenshot",o)}return o}})},function(t){const{i18n:e,notice:r,template:{$video:n,$player:o}}=t,i=()=>{if(w(t))return;const i=function(t){const e=sr.raw,r=t.ownerDocument;if(e&&Reflect.get(r,e.fullscreenEnabled))return{document:r,target:t,get element(){return Reflect.get(r,e.fullscreenElement)},elementProperty:e.fullscreenElement,changeEvent:e.fullscreenchange,errorEvent:e.fullscreenerror,request:()=>cr(t,e.requestFullscreen,void 0),exit:()=>cr(r,e.exitFullscreen)}}(o);i?it(t,"fullscreen",fr(t,i)):n.webkitSupportsFullscreen&&"function"===typeof n.webkitEnterFullscreen&&"function"===typeof n.webkitExitFullscreen?it(t,"fullscreen",br(t)):it(t,"fullscreen",{get:()=>!1,set(){w(t)||(r.show=e.get("Fullscreen Not Supported"))}}),it(t,"fullscreen",ct(t,"fullscreen"))};t.once("video:loadedmetadata",i),b(t).add(()=>{t.off("video:loadedmetadata",i)})},function(t){const e=function(t){const{$player:e}=t.template;let r,n=0;function o(t,r){return null===t.style?e.removeAttribute("style"):e.setAttribute("style",t.style),!!r()&&(e.classList.remove("art-fullscreen-web"),!!r()&&(xr(t.placement),r()))}return b(t).add(()=>{n+=1;const t=r;if(r=void 0,t)try{o(t,()=>!0)}catch(i){try{e.parentNode!==t.placement.parent&&e.parentNode?.removeChild(e)}catch(a){throw new h([i,a])}throw i}}),i=>{if(w(t))return;const a=++n,s=()=>a===n&&!w(t),c=function(t){const e=t.ownerDocument?.activeElement,r=e&&t.contains(e);return()=>{r&&e.isConnected&&t.contains(e)&&e.ownerDocument.activeElement===e.ownerDocument.body&&e.focus({preventScroll:!0})}}(e);if(i){r||(r={placement:wr(e),style:e.getAttribute("style")});const n=r;try{const r=e.ownerDocument.body;if(t.constructor.FULLSCREEN_WEB_IN_BODY&&e.parentNode!==r&&r.appendChild(e),!s())return;if(t.state="fullscreenWeb",!s())return;e.style.width="100%",e.style.height="100%",e.classList.add("art-fullscreen-web")}catch(l){throw s()&&o(n,s)&&(r=void 0,c()),l}if(!s())return;if(c(),!s())return;t.emit("fullscreenWeb",!0)}else{if(r){if(!o(r,s))return;r=void 0}else e.classList.remove("art-fullscreen-web");if(!s())return;if(c(),!s())return;t.emit("fullscreenWeb",!1)}s()&&t.emit("resize")}}(t);it(t,"fullscreenWeb",{get:()=>t.template.$player.classList.contains("art-fullscreen-web"),set:e})},function(t){const{i18n:e,notice:r,template:{$video:n}}=t,o=n.ownerDocument;o.pictureInPictureEnabled&&"function"===typeof n.requestPictureInPicture&&"function"===typeof o.exitPictureInPicture?it(t,"pip",function(t){const{$video:e}=t.template,r=e.ownerDocument,n=b(t).child(),o=()=>r.pictureInPictureElement===e;let i=o(),a=i,s=!1,c=!1,l=0;function d(){if(o())try{r.exitPictureInPicture().catch(()=>{})}catch{}}function u(e,r,n){e.then(()=>{!r||!w(t)&&a||d()},e=>{w(t)||l!==n||(t.notice.show=e)}).finally(()=>{l===n&&(s=!1)}).catch(()=>{})}return e.disablePictureInPicture=!1,n.add(()=>{l++,a=!1,d()}),mt(n,e,"enterpictureinpicture",()=>{if(c)return void d();if(!o()||i)return;const e=l;t.state="pip",!w(t)&&e===l&&o()&&(i=!0,t.emit("pip",!0))}),mt(n,e,"leavepictureinpicture",()=>{i&&!o()&&(i=!1,t.emit("pip",!1))}),{get:()=>!w(t)&&o()?e:null,set(n){if(w(t))return;const i=++l;if(a=Boolean(n),a?c=!1:s&&(c=!0),s=!1,a){if(t.state="pip",w(t)||l!==i)return;s=!0;try{u(e.requestPictureInPicture(),!0,i)}catch(d){throw l===i&&(s=!1),d}}else o()&&u(r.exitPictureInPicture(),!1,i)}}}(t)):"function"===typeof n.webkitSupportsPresentationMode&&"function"===typeof n.webkitSetPresentationMode?it(t,"pip",function(t){const{$video:e}=t.template,r=b(t).child();let n=!1,o=!1,i=0,a=0;function s(r=!1){if(w(t)||Cr.has(e))return;const s=Sr(e);if(s&&(o=!1),s===n&&!r)return;const c=i;s&&(t.state="pip"),w(t)||i!==c||Sr(e)!==s||(n=s,a++,t.emit("pip",s))}e.webkitSetPresentationMode("inline"),r.add(()=>{i++,o&&Pr(e),Sr(e)&&e.webkitSetPresentationMode("inline")});for(const c of["webkitpresentationmodechanged","enterpictureinpicture","leavepictureinpicture"])mt(r,e,c,()=>s());return{get:()=>!w(t)&&Sr(e),set(r){if(w(t))return;const n=++i,c=a;if(r){if(!1===e.webkitSupportsPresentationMode?.("picture-in-picture"))return void(t.notice.show=t.i18n.get("PIP Not Supported"));if(Tr(e),t.state="pip",w(t)||i!==n)return;o=!0;try{e.webkitSetPresentationMode("picture-in-picture")}catch(l){throw n===i&&(o=!1),l}}else o&&(o=!1,Pr(e)),Sr(e)&&e.webkitSetPresentationMode("inline");w(t)||n!==i||c!==a||Sr(e)!==Boolean(r)||s(!0)}}}(t)):it(t,"pip",{get:()=>!1,set(){w(t)||(r.show=e.get("PIP Not Supported"))}})},function(t){const{$video:e}=t.template,r=t;it(t,"loaded",{get:()=>r.loadedTime/e.duration}),it(t,"loadedTime",{get:()=>e.buffered.length?e.buffered.end(e.buffered.length-1):0})},function(t){it(t,"played",{get:()=>t.currentTime/t.duration})},function(t){const{$video:e}=t.template;it(t,"playing",{get:()=>"boolean"===typeof e.playing?e.playing:!!(e.currentTime>0&&!e.paused&&!e.ended&&e.readyState>2)})},function(t){const{$container:e,$player:r,$video:n}=t.template;it(t,"autoSize",{value(){if(w(t))return;const o={width:n.videoWidth,height:n.videoHeight};if(!Qe(o))return;const i=M(e),a=tr(i,o.width/o.height);a&&!w(t)&&("width"===a.axis?(r.style.width=a.width/i.width*100+"%",r.style.height="100%"):(r.style.width="100%",r.style.height=a.height/i.height*100+"%"),t.emit("autoSize",{width:t.width,height:t.height}))}})},function(t){const e=t;it(t,"rect",{get:()=>M(t.template.$player)});const r=["bottom","height","left","right","top","width"];for(let n=0;ne.rect[o]})}it(t,"x",{get:()=>e.left+window.pageXOffset}),it(t,"y",{get:()=>e.top+window.pageYOffset})},function(t){const{template:{$player:e},i18n:r,notice:n}=t;it(t,"flip",{get:()=>e.dataset.flip||"normal",set(o){w(t)||(o||(o="normal"),"normal"===o?delete e.dataset.flip:e.dataset.flip=o,n.show=`${r.get("Video Flip")}: ${r.get(Q(o))}`,w(t)||t.emit("flip",o))}})},function(t){it(t,"mini",Ar(t))},function(t){const{template:{$poster:e}}=t;it(t,"poster",{get:()=>{try{return e.style.backgroundImage.match(/"(.*)"/)[1]}catch{return""}},set(t){H(e,"backgroundImage",`url(${t})`)}})},function(t){const{$container:e,$video:r}=t.template;it(t,"autoHeight",{value(){if(w(t))return;const n=function(t,e){if(!Number.isFinite(t)||t<=0||!Qe(e))return;const r=e.height*(t/e.width);return Number.isFinite(r)&&r>0?r:void 0}(e.clientWidth,{width:r.videoWidth,height:r.videoHeight});void 0===n||w(t)||(e.style.height=`${n}px`,t.emit("autoHeight",n))}})},function(t){const{$player:e}=t.template;it(t,"cssVar",{value:(t,r)=>r?e.style.setProperty(t,r):getComputedStyle(e).getPropertyValue(t)})},function(t){it(t,"theme",{get:()=>t.cssVar("--art-theme"),set(e){t.cssVar("--art-theme",e)}})},function(t){it(t,"type",{get:()=>t.option.type,set(e){t.option.type=e}})},function(t){const e=["mini","pip","fullscreen","fullscreenWeb"];it(t,"state",{get:()=>e.find(e=>t[e])||"standard",set(r){for(let n=0;nn.$track?.offset||0,set(o){const{cues:i}=t.subtitle;if(!n.$track||0===i.length)return;const a=J(o,-10,10);n.$track.offset=a;for(let e=0;et.startTime<=n&&ni[e]===t)){for(const e of r)t.removeCue(e);for(const e of r)t.addCue(e)}}(n.$track.track,n.$video,i),t.subtitle.update(),e.show=`${r.get("Subtitle Offset")}: ${o}s`,t.emit("subtitleOffset",o)}})},function(t){if(w(t))return;const{i18n:e,notice:r,proxy:n,template:{$video:o}}=t;let i=!0;const a=window.WebKitPlaybackTargetAvailabilityEvent;if(w(t))return;const s=a&&o.webkitShowPlaybackTargetPicker;w(t)||(s?n(o,"webkitplaybacktargetavailabilitychanged",e=>{if(!w(t))switch(e.availability){case"available":i=!0;break;case"not-available":i=!1}}):i=!1,w(t)||it(t,"airplay",{value(){if(!w(t))if(i){const e=o.webkitShowPlaybackTargetPicker;if(w(t))return;Reflect.apply(e,o,[]),w(t)||t.emit("airplay")}else{const n=e.get("AirPlay Not Available");w(t)||(r.show=n)}}}))},function(t){it(t,"quality",{set(e){const{controls:r,notice:n,i18n:o}=t,i=e.find(t=>t.default)||e[0];r.update({name:"quality",position:"right",index:10,style:{marginRight:"10px"},html:i?.html||"",selector:e,async onSelect(e,r,i){const a=function(t){return t&&ge.get(t)||(()=>!0)}(i);if(await t.switchQuality(e.url),!w(t)&&a()){const r=`${o.get("Switch Video")}: ${e.html}`;!w(t)&&a()&&(n.show=r)}return e.html}})}})},function(t){const{option:e,template:{$progress:r,$video:n}}=t;let o,i,a,s=b(t).child(),c=!1;function l(){const e=s;s=b(t).child(),o=void 0,c=!1,a=void 0,e.dispose()}function d(){const i=a,c=s;if(!i||!o)return;const l=()=>!w(t)&&!c.closed&&s===c&&a===i&&i.sourceActive()&&t.controls?.thumbnails===i.element;if(!l())return;const d=r.clientWidth*i.percentage;if(!(d>0&&d{const f=t.controls?.thumbnails,{url:h,scale:m}=e.thumbnails;if(!w(t)&&f&&h&&("hover"===r||"played"===r&&p&&u)){if(i!==f){const t=E(f);if(t.closed)return;i=f,t.add(()=>{i===f&&(i=void 0,l())})}if(a={percentage:n,element:f,sourceActive:te(t)},o)d();else if(!c){const t=s;c=!0,function(t,e,r){return q(t,e,r)}(h,m,t).then(e=>{s!==t||t.closed||(c=!1,o=e,d())}).catch(e=>{s!==t||t.closed||(c=!1,console.warn("ArtPlayer thumbnail load failed:",e))})}}}),it(t,"thumbnails",{get:()=>t.option.thumbnails,set:e=>{w(t)||!e.url||t.option.isLive||w(t)||(t.option.thumbnails=e,l())}})},function(t){!function(t){const{proxy:e,template:{$video:r}}=t;for(let n=0;n{w(t)||t.emit(`video:${e.type}`,e)})}(t);const e=nr(t);!function(t,e){er(t,"video:canplay",()=>{e.reset(),rr(t,[["loading",!1]])}),er(t,"video:canplay",()=>{rr(t,[["loading",!1],["controls",!0],["mask",!0]]),w(t)||(t.isReady=!0,t.emit("ready"))},!0)}(t,e),function(t){const{option:e}=t;er(t,"video:ended",()=>{if(e.loop){const e=te(t);if(t.seek=0,w(t)||!e())return;G(t.play()),e()&&rr(t,[["controls",!1],["mask",!1]],e)}else rr(t,[["controls",!0],["mask",!0]])})}(t),er(t,"video:error",e.schedule),function(t,e){const{template:{$poster:r}}=t;er(t,"video:loadedmetadata",()=>{t.emit("resize"),u&&rr(t,[["loading",!1],["controls",!0],["mask",!0]])}),er(t,"video:loadstart",()=>{e.loadStart(),rr(t,[["loading",!0],["mask",!1],["controls",!0]])}),er(t,"video:pause",()=>{rr(t,[["controls",!0],["mask",!0]])}),er(t,"video:play",()=>{rr(t,[["mask",!1]]),w(t)||H(r,"display","none")}),er(t,"video:playing",()=>rr(t,[["mask",!1]])),er(t,"video:progress",()=>{t.playing&&rr(t,[["loading",!1]])}),er(t,"video:seeked",()=>rr(t,[["loading",!1],["mask",!0]])),er(t,"video:seeking",()=>rr(t,[["loading",!0],["mask",!1]])),er(t,"video:timeupdate",()=>rr(t,[["mask",!1]])),er(t,"video:waiting",()=>rr(t,[["loading",!0],["mask",!1]]))}(t,e)},function(t){if(w(t))return;const{option:e,storage:r,template:{$video:n,$poster:o}}=t;for(const s in e.moreVideoAttr){if(w(t))return;const r=e.moreVideoAttr[s];if(w(t))return;t.attr(s,r)}if(w(t))return;if(e.muted){const r=e.muted;if(w(t))return;t.muted=r}if(w(t))return;if(e.volume){const r=J(e.volume,0,1);if(w(t))return;n.volume=r}if(w(t))return;const i=r.get("volume");if(w(t))return;if("number"===typeof i&&(n.volume=J(i,0,1)),w(t))return;if(e.poster){const r=`url(${e.poster})`;if(w(t))return;H(o,"backgroundImage",r)}if(w(t))return;if(e.autoplay){const r=e.autoplay;if(w(t))return;n.autoplay=r}if(w(t))return;if(e.playsInline){if(w(t))return;if(n.playsInline=!0,w(t))return;n["webkit-playsinline"]=!0}if(w(t))return;if(e.theme){const r=e.cssVar,n=e.theme;if(w(t))return;r["--art-theme"]=n}for(const s in e.cssVar){if(w(t))return;const r=e.cssVar[s];if(w(t))return;t.cssVar(s,r)}if(w(t))return;const a=e.url;w(t)||(t.url=a)}];class Ir{constructor(t){if(!w(t)){Or(t);for(const e of Dr){if(w(t))return;e(t)}}}}const Nr=new WeakMap,_r="art-auto-orientation-fullscreen";function Wr(t){if(Nr.get(t.orientation)===t)try{t.orientation.unlock()}catch{}}const Fr="art-auto-orientation",Vr=["width","height","transform-origin","transform"];function Yr(t){const{$player:e,$video:r}=t.template,n=()=>{const t={width:r.videoWidth,height:r.videoHeight},n=e.ownerDocument.documentElement,o={width:n.clientWidth,height:n.clientHeight};return Qe(t)&&Qe(o)&&(t.width>t.height&&o.widtho.height)},o=function(t,e){const{$player:r}=t.template,n=b(t);let o,i=()=>{};function a(){i(),i=()=>{};const e=o;if(o=void 0,e&&t.fullscreenWeb)for(const{name:t,value:o,priority:i}of e)r.style.setProperty(t,o,i);const n=r.classList.contains(Fr);r.classList.remove(Fr),n&&(t.isRotate=!1,w(t)||t.emit("resize"))}function s(n){if(!t.fullscreenWeb||!e())return;const i=z();if(w(t)||!t.fullscreenWeb)return;const a=r.ownerDocument.documentElement;o??(o=Vr.map(t=>({name:t,value:r.style.getPropertyValue(t),priority:r.style.getPropertyPriority(t)}))),r.style.width=a.clientHeight-i.top-i.bottom+"px",r.style.height=a.clientWidth-i.left-i.right+"px",r.style.transformOrigin="0 0",r.style.transform=`rotate(90deg) translate(${i.top}px, -${a.clientWidth-i.right}px)`,r.classList.add(Fr),t.isRotate=!0,n&&t.emit("resize")}return n.add(a),r=>{w(t)||(r?o?s(!1):e()&&(i(),i=gt(n,()=>{o||s(!0)},Number(t.constructor.AUTO_ORIENTATION_TIME??0))):a())}}(t,n),i=function(t,e){const{$player:r}=t.template;let n;function o(){const t=n;n=void 0,r.classList.remove(_r),t&&(t.cancelled=!0,Wr(t),t.settled&&Nr.get(t.orientation)===t&&Nr.delete(t.orientation))}return b(t).add(o),i=>{if(w(t))return;if(!i)return void o();if(n&&!n.cancelled&&Nr.get(n.orientation)===n)return;const a=r.ownerDocument.defaultView?.screen?.orientation;if("function"!==typeof a?.lock||"function"!==typeof a.unlock||!e())return;const s={orientation:a,cancelled:!1,settled:!1};n=s,Nr.set(a,s);const c=()=>!w(t)&&!s.cancelled&&n===s&&Nr.get(a)===s,l=e=>{s.settled=!0;const o=c();Nr.get(a)===s&&Nr.delete(a),n===s&&(n=void 0),o&&(r.classList.remove(_r),t.notice.show=e)};try{const t=a.lock(a.type.startsWith("portrait")?"landscape":"portrait");Promise.resolve(t).then(()=>{s.settled=!0,c()?r.classList.add(_r):(Wr(s),Nr.get(a)===s&&Nr.delete(a))}).catch(l)}catch(d){l(d)}}}(t,n);return t.on("fullscreenWeb",o),t.on("fullscreen",i),b(t).add(()=>{t.off("fullscreenWeb",o),t.off("fullscreen",i)}),{name:"autoOrientation",get state(){return e.classList.contains("art-auto-orientation")}}}function Br(t){return t.get("times")||{}}function Hr(t){const{storage:e}=t,r=function(t){const{i18n:e,icons:r,storage:n,constructor:o,template:{$poster:i}}=t,a=t.layers.add({name:"auto-playback",html:'\n
\n
\n
\n '});if(!a||w(t))return()=>{};const s=$t(".art-auto-playback-last",a),c=$t(".art-auto-playback-jump",a),l=$t(".art-auto-playback-close",a);kt(l,r.close);const d=E(a);let u,p=0;const f=()=>{const r=++p;if(u?.dispose(),d.closed||w(t)||p!==r)return;const f=d.child();u=f;const h=()=>u===f&&!f.closed&&!w(t);f.add(()=>{u===f&&(u=void 0,H(a,"display","none"))});const m=Qt(t).add(()=>{f.dispose()});f.add(()=>{m()});const g=Br(n)[t.option.id||t.option.url];if(!h())return;if(H(a,"display","none"),!h()||!g||!(g>=o.AUTO_PLAYBACK_MIN))return;if(!h())return;if(H(a,"display","flex"),!h())return;const v=`${e.get("Last Seen")} ${tt(g)}`;if(!h())return;if(s.textContent=v,!h())return;const y=e.get("Jump Play");if(!h())return;if(c.textContent=y,!h())return;const b=(e,r)=>{const n=t.events.proxy(e,"click",()=>{h()&&r()});f.add(()=>{t.events.remove(n)})};if(b(l,()=>{H(a,"display","none")}),!h())return;if(b(c,()=>{t.seek=g,h()&&(G(t.play()),h()&&(H(i,"display","none"),h()&&H(a,"display","none")))}),!h())return;let x=()=>{},k=!1;const $=()=>{!k&&h()&&(k=!0,x(),gt(f,()=>{h()&&H(a,"display","none")},o.AUTO_PLAYBACK_TIMEOUT))};t.on("video:timeupdate",$),x=f.add(()=>{t.off("video:timeupdate",$)}),k&&x()};return()=>{C(t,a,"ready",f),C(t,a,"restart",f)}}(t);return function(t){const{storage:e,constructor:r}=t;Pe(t)("video:timeupdate",()=>{if(!t.playing)return;const n=Br(e),o=Object.keys(n),i=r.AUTO_PLAYBACK_MAX,a=t.option.id||t.option.url,s=t.currentTime;w(t)||(o.length>i&&delete n[o[0]],n[a]=s,w(t)||e.set("times",n))})}(t),r(),{name:"auto-playback",get times(){return Br(e)},clear:()=>e.del("times"),delete(t){const r=Br(e);return delete r[t],e.set("times",r),r}}}function jr(t){let e,r=0;return{start:n=>{const o=++r;if(e?.scope.dispose(),o!==r||w(t)||1!==n.touches.length||!t.playing||t.isLock)return;const i={scope:Qt(t).child(),active:!1,previousRate:1};e=i,i.scope.add(()=>{if(e===i&&(e=void 0,i.active))try{t.playbackRate=i.previousRate}finally{e?.active||D(t.template.$player,"art-fast-forward")}}),gt(i.scope,()=>{if(e!==i||w(t)||!t.playing||t.isLock)i.scope.dispose();else try{if(i.previousRate=t.playbackRate,e!==i||i.scope.closed)return;i.active=!0;const r=t.constructor.FAST_FORWARD_VALUE;if(e!==i||i.scope.closed||w(t))return;t.playbackRate=r,e!==i||i.scope.closed||w(t)||O(t.template.$player,"art-fast-forward")}catch(r){try{i.scope.dispose()}catch(n){console.warn("Failed to restore fast-forward playback rate:",n)}throw r}},t.constructor.FAST_FORWARD_TIME)},stop:()=>{r++,e?.scope.dispose()}}}function qr(t){const{proxy:e,template:{$player:r,$video:n}}=t,o=jr(t),i=Pe(t);return e(n,"touchstart",t=>o.start(t)),e(n,"touchcancel",o.stop),i("document:touchmove",o.stop),i("document:touchend",o.stop),i("document:touchcancel",o.stop),i("video:pause",o.stop),i("destroy",o.stop),i("lock",t=>{t&&o.stop()}),{name:"fastForward",get state(){return I(r,"art-fast-forward")}}}function Ur(t,e,r,n){let o;const i=()=>!r.closed&&!w(t),a=t.i18n.get("Lock");if(!i())return()=>{};e.setAttribute("aria-label",a),xt(r,e),mt(r,e,"keydown",t=>{const r=t;i()&&n()&&wt(r)&&!r.defaultPrevented&&"Escape"===r.key&&(bt(r),e.click())});const s=n=>{if(i())if(e.setAttribute("aria-pressed",String(n)),n&&!o){const{$player:n,$bottom:a}=t.template,s=a.contains(a.ownerDocument.activeElement)&&n.classList.contains("art-keyboard-focus");o=r.child(),function(t,e){const r=new Map,n=e.hasAttribute("inert"),o=e.getAttribute("aria-hidden"),i=(t,e)=>{"-1"===t.getAttribute("tabindex")&&(null===e?t.removeAttribute("tabindex"):t.setAttribute("tabindex",e))};if(t.add(()=>{for(const[t,e]of r)i(t,e);r.clear(),n||""!==e.getAttribute("inert")||e.removeAttribute("inert"),"true"===e.getAttribute("aria-hidden")&&(null===o?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden",o))}),t.closed)return;n||e.setAttribute("inert",""),e.setAttribute("aria-hidden","true");const a=()=>{if(!t.closed){for(const[t,n]of r)e.contains(t)||(i(t,n),r.delete(t));for(const t of e.querySelectorAll("[tabindex],button,input,select,textarea,a[href],[contenteditable]"))r.has(t)||(r.set(t,t.getAttribute("tabindex")),t.setAttribute("tabindex","-1"))}};if(a(),"undefined"!==typeof MutationObserver){const r=new MutationObserver(a);r.observe(e,{childList:!0,subtree:!0}),t.add(()=>{r.disconnect()})}}(o,a),i()&&s&&e.focus({preventScroll:!0})}else if(!n&&o){const t=o;o=void 0,t.dispose()}};return s(n()),s}function Xr(t){const{layers:e,icons:r,template:{$player:n}}=t;function o(){return I(n,"art-lock")}function i(){w(t)||(O(n,"art-lock"),w(t)||(t.isLock=!0,w(t)||t.emit("lock",!0)))}function a(){w(t)||(D(n,"art-lock"),w(t)||(t.isLock=!1,w(t)||t.emit("lock",!1)))}return e.add({name:"lock",mounted(e){const n=E(e);if(n.closed||w(t))return;const i=kt(e,r.lock);if(n.closed||w(t))return;const a=kt(e,r.unlock);if(n.closed||w(t))return;const s=Ur(t,e,n,o);n.closed||w(t)||(o()?(H(i,"display","inline-flex"),n.closed||w(t)||H(a,"display","none")):H(i,"display","none"),C(t,e,"lock",e=>{w(t)||(H(i,"display",e?"inline-flex":"none"),n.closed||w(t)||H(a,"display",e?"none":"inline-flex"),n.closed||w(t)||s(e))}))},click(){o()?a():i()}}),{name:"lock",get state(){return o()},set state(t){t?i():a()}}}function Gr(t){return Pe(t)("control",e=>{e?D(t.template.$player,"art-mini-progress-bar"):O(t.template.$player,"art-mini-progress-bar")}),{name:"mini-progress-bar"}}class Kr{constructor(t){this.art=t,this.id=0;const{option:e}=t;!function(t,e){w(t.art)||!e.miniProgressBar||e.isLive||t.add(Gr),!w(t.art)&&e.lock&&u&&t.add(Xr),w(t.art)||!e.autoPlayback||e.isLive||t.add(Hr),!w(t.art)&&e.autoOrientation&&u&&t.add(Yr),!w(t.art)&&e.fastForward&&u&&!e.isLive&&t.add(qr)}(this,e);for(let r=0;rconsole.warn("Failed to initialize ArtPlayer plugin:",t))}}add(t){X(!w(this.art),"Cannot add a plugin after ArtPlayer is destroyed"),this.id+=1;const e=t.call(this.art,this.art);return e instanceof Promise?e.then(e=>this.next(t,e)):this.next(t,e)}next(t,e){return function(t,e,r){if(w(t.art))return t;const n=r&&r.name||e.name||`plugin${t.id}`;if(w(t.art))return t;let o=n;const i=st(t,o);if(w(t.art))return t;const a=`Cannot add a plugin that already has the same name: ${n}`;return w(t.art)||(X(!i,a),("object"===typeof n&&null!==n||"function"===typeof n)&&(o=Reflect.ownKeys({[o]:void 0})[0]),w(t.art)||it(t,o,{value:r})),t}(this,t,e)}}const Zr=new WeakMap;function Jr(t){return!t.closed&&!Zr.get(t)}function Qr(t){Zr.set(t,(Zr.get(t)||0)+1);let e=!0;return()=>{if(!e)return;e=!1;const r=(Zr.get(t)||1)-1;r?Zr.set(t,r):Zr.delete(t)}}const tn=new WeakMap,en=new WeakMap,rn=["$parent","$parents","$option","$events","$formatted"];function nn(t){const e=new Set;let r=t;for(;r&&!e.has(r);){e.add(r);const t=tn.get(r);if(!t||!t.owner.active||t.owner.scope?.closed||!t.option.includes(r))return!1;if(!t.parent)return t.owner.root===t.option;if(tn.get(t.parent)?.owner!==t.owner)return!1;r=t.parent}return!1}function on(t){let e=t;for(;e;){const r=Object.getOwnPropertyDescriptor(e,"name");if(r)return"set"in r?"function"===typeof r.set:Boolean(r.writable&&(e===t||Object.isExtensible(t)));e=Object.getPrototypeOf(e)}return Object.isExtensible(t)}function an(t){const e=tn.get(t);if(!e)throw new Error("Setting item has not been formatted");return e}function sn(t,e){for(let r=0;r{l&&l!==r&&l.dispose()},()=>hn(t,o)])try{e()}catch(d){d instanceof h?c.push(...d.errors):c.push(d)}if(r.closed||w(t)||(o.push(...i.splice(0)),fn.set(r,o),un.set(e,r),pn.set(e,n)),a(),c.length)throw new h(c)},dispose(){if(s){s=!1;try{r.dispose()}finally{a()}}}}}function bn(t,e,r,n,o,i){const a=i||gn(e);if(!Jr(a)||w(t))return;const s=t.proxy(r,n,e=>{if(Jr(a)&&!w(t))try{return o(e)}catch(r){console.warn("ArtPlayer setting callback failed:",r)}});!Jr(a)||w(t)?t.events.remove(s):(an(e).events.push(s),i&&i!==un.get(e)&&i.add(()=>{const r=an(e).events,n=r.indexOf(s);n>=0&&(r.splice(n,1),t.events.remove(s))}))}function wn(t,e,r,n){const o=gn(e);if(!Jr(o)||w(t))return;const i=(...e)=>{if(Jr(o)&&!w(t))return n(...e)};t.on(r,i),o.add(()=>{t.off(r,i)})}const xn='[tabindex="0"],button,input,select,textarea,a[href],[contenteditable]';function kn(t){if(!t.isConnected||t.matches(":disabled")||t.closest("[inert]")||"true"===t.getAttribute("aria-disabled")||!t.getClientRects().length)return!1;const e=t.ownerDocument.defaultView?.getComputedStyle(t).visibility;return"hidden"!==e&&"collapse"!==e}function $n(t){return Array.from(t.querySelectorAll(xn)).filter(t=>"-1"!==t.getAttribute("tabindex")&&kn(t))}function En(t,e,r=!1){if(!t.show||w(t.art)||!t.active)return;const n=t.cache.get(t.active);if(!n||!Jr(ln(n)))return;const o=function(t,e,r=!1){if(e&&e!==t&&t.contains(e)&&e.matches(xn)&&"-1"!==e.getAttribute("tabindex")&&kn(e))return e;const n=$n(t),o=t.querySelector(".art-setting-item.art-current");return n.find(t=>e?.contains(t))||(r?n[n.length-1]:n.find(t=>o?.contains(t))||n.find(t=>!t.classList.contains("art-setting-item-back"))||n[0])}(n,e,r);o?.focus({preventScroll:!0}),w(t.art)||o?.scrollIntoView({block:"nearest",inline:"nearest"})}function An(t){const e=t.$parent.ownerDocument,r=e.activeElement,n=t.$parent.contains(r);return o=>{n&&!w(t.art)&&(e.activeElement===e.body||e.activeElement===r&&!r?.getClientRects().length)&&En(t,o)}}function Cn(t){const{art:e}=t,r=b(e).child();if(r.closed)return;const n=()=>t.$parent.ownerDocument;let o=!1;const i=()=>{t.show=!1,r.closed||w(e)||t.render()},a=i=>{r.closed||w(e)||(i?n().activeElement===e.controls.setting&&e.template.$player.classList.contains("art-keyboard-focus")&&En(t,void 0,o):t.$parent.contains(n().activeElement)&&function(t){const{art:e,$parent:r}=t,n=e.template.$player,o=r.ownerDocument,i=e.controls.setting;!w(e)&&r.contains(o.activeElement)&&(i&&n.contains(i)&&kn(i)&&i.focus({preventScroll:!0}),(o.activeElement===o.body||r.contains(o.activeElement))&&At(e))}(t))};e.on("setting",a),r.add(()=>{e.off("setting",a)}),mt(r,e.template.$player,"keydown",r=>{const n=r;if(!wt(n)||n.defaultPrevented||w(e))return;const a=n.target;if(a===e.controls.setting){if("ArrowDown"===n.key||"ArrowUp"===n.key)if(bt(n),t.show)En(t,void 0,"ArrowUp"===n.key);else{o="ArrowUp"===n.key;try{t.show=!0}finally{o=!1}}else"Escape"===n.key&&t.show&&(bt(n),i());return}if(!t.show||!t.$parent.contains(a))return;if("Escape"===n.key)return bt(n),void i();if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"].includes(n.key))return;const s=a.closest(".art-setting-item");if(!s||a!==s&&!a.matches('button,a[href],[role="button"]'))return;const c=t.active&&t.cache.get(t.active);if(!c)return;const l=t.active?.find(t=>t.$item===s);if(!Jr(ln(c))||l&&!Jr(gn(l)))return void bt(n);const d=$n(c),u=d.indexOf(a);if(u<0)return;let p;switch(n.key){case"ArrowDown":p=Math.min(u+1,d.length-1);break;case"ArrowUp":p=Math.max(u-1,0);break;case"Home":p=0;break;case"End":p=d.length-1;break;case"ArrowLeft":{const t=c.querySelector(".art-setting-item-back");return bt(n),void t?.click()}case"ArrowRight":return bt(n),void(l?.selector?.length&&a.click());default:return}bt(n),void 0!==p&&En(t,d[p])});let s=!1;mt(r,t.$parent,"focusout",o=>{const a=o.relatedTarget;a&&(t.$parent.contains(a)||a===e.controls.setting)||s||(s=!0,gt(r,()=>{s=!1,r.closed||w(e)||!t.show||t.$parent.contains(n().activeElement)||n().activeElement===e.controls.setting||i()},0))})}function Sn(t){const{art:e,active:r}=t,{controls:n,constructor:{SETTING_WIDTH:o,SETTING_ITEM_HEIGHT:i},template:{$player:a,$setting:s,$bottom:c}}=e;if(!n.setting||!t.show||!r)return;const l=a.getBoundingClientRect(),d=n.setting.getBoundingClientRect(),p=l.width/a.offsetWidth||1,f=(d.left-l.left+d.width/2)/p-a.clientLeft,h=function(t){const{containerWidth:e,containerHeight:r,requestedWidth:n,rows:o,rowHeight:i,controlCenter:a,bottom:s,padding:c}=t,l=Math.min(Math.max(0,c),Math.max(0,e/2)),d=Math.min(Math.max(0,n),Math.max(0,e-2*l));return{width:d,height:Math.min(Math.max(0,o*i),Math.max(0,r-s-l)),left:Math.max(l,Math.min(a-d/2,e-l-d))}}({containerWidth:a.clientWidth,containerHeight:a.clientHeight,requestedWidth:r[0]?.$parent?.width||o,rows:r.length+(r===t.option?0:1),rowHeight:i,controlCenter:f,bottom:Number.parseFloat(getComputedStyle(s).bottom)||0,padding:Number.parseFloat(getComputedStyle(c).paddingLeft)||0});s.style.height=`${h.height}px`,s.style.width=`${h.width}px`,e.isRotate||u||(f+h.width/2>a.clientWidth?(s.style.left="",s.style.right=""):(s.style.left=`${h.left}px`,s.style.right="auto"))}const Tn=new WeakMap;function Ln(t){Tn.delete(t)}const Pn=new WeakMap;function Mn(t,e){e?Pn.set(t,e):Pn.delete(t)}function zn(t){const e=new Map(Reflect.ownKeys(t).map(e=>[e,Object.getOwnPropertyDescriptor(t,e)])),r=[],n=Pn.get(t),o=n?.();for(const i of["html","icon","tooltip"]){const t=e.get(i)?.value;t instanceof Node&&r.push({node:t,parent:t.parentNode,next:t.nextSibling})}return()=>{for(const r of Reflect.ownKeys(t))!e.has(r)&&Object.getOwnPropertyDescriptor(t,r)?.configurable&&Reflect.deleteProperty(t,r);for(const[r,n]of e)Object.defineProperty(t,r,n);o?.(),Mn(t,n);for(const{node:t,parent:e,next:n}of r)e?e.insertBefore(t,n?.parentNode===e?n:null):t.parentNode?.removeChild(t)}}function Rn(t){const e=t.$item?.querySelector(".art-setting-range");e&&e.setAttribute("aria-label",t.$html?.textContent||"")}const On=new WeakMap;async function Dn(t,e,r,n,o,i,a,s){try{const c=gn(e),l=gn(i),d=(On.get(i)||0)+1;On.set(i,d);const u=()=>Jr(c)&&Jr(l)&&!w(t.art)&&On.get(i)===d;if(s?.(),!u())return;const p=await o.call(t.art,e,r,n);u()&&Reflect.set(i,a,p)}catch(c){console.warn("ArtPlayer setting callback failed:",c)}}function In(t){const e=[];return function t(r){const n=Array.from(r.childNodes);e.push({node:r,children:n,attributes:1===r.nodeType?Array.from(r.attributes,t=>[t.name,t.value]):void 0,value:r.nodeValue}),n.forEach(t)}(t),()=>{for(const{node:t,children:r,attributes:n,value:o}of e){for(;t.firstChild;)t.removeChild(t.firstChild);for(const e of r)t.appendChild(e);if(n){const e=t;for(const t of Array.from(e.attributes))e.removeAttribute(t.name);for(const[t,r]of n)e.setAttribute(t,r)}else t.nodeValue=o}}}const Nn=new WeakMap;function _n(t){const e=[];for(const n of t)try{n()}catch(r){r instanceof h?e.push(...r.errors):e.push(r)}if(e.length)throw new h(e)}function Wn(t){Nn.get(t)?.()}function Fn(t,e){const r=t.find(e.name);if(w(t.art))return r||e;if(!r)return t.add(e);const n=An(t);Ln(r),Wn(r);const o=zn(r),i=r.$item,a=i?.parentNode,s=i?.nextSibling,c=i?In(i):void 0,l=t.active,d=["height","width","left","right"].map(e=>[e,t.$parent.style.getPropertyValue(e),t.$parent.style.getPropertyPriority(e)]),u=function(t,e){const r=new Set,n=new Set,o=e=>{if(!r.has(e)&&(r.add(e),e.selector)){const r=t.cache.get(e.selector);r&&n.add(r),e.selector.forEach(o)}};o(e);const i=[],a=[];try{for(const e of r){const r=yn(t.art,e);r&&i.push(r)}for(const t of n)a.push(Qr(ln(t)))}catch(c){try{_n([...i.reverse().map(t=>t.resume),...a])}catch(l){console.warn("ArtPlayer setting restore failed:",l)}throw c}let s=!0;return{items:r,resume(){s&&(s=!1,_n([...i.reverse().map(t=>t.resume),...a]))},dispose(){s&&(s=!1,_n([...i.reverse().map(t=>t.dispose),...Array.from(n).reverse().map(t=>()=>dn(t)),...a]))}}}(t,r);let p=!0,f=!1;const h=()=>{if(!p)return;p=!1;for(const t of u.items)Nn.get(t)===h&&Nn.delete(t);if(w(t.art))return void u.dispose();const e=r.$item;try{_n([u.resume,()=>{e&&e!==i&&e.remove()},o,()=>c?.(),()=>{a&&i&&a.insertBefore(i,s?.parentNode===a?s:null)},()=>t.format(),()=>{if(f){t.active=l,l&&t.cache.has(l)&&W(t.cache.get(l),"art-current");for(const[e,r,n]of d)t.$parent.style.setProperty(e,r,n)}}]),n(i)}catch(m){console.warn("ArtPlayer setting restore failed:",m)}},m=()=>p&&!w(t.art)&&Nn.get(r)===h;for(const y of u.items)Nn.set(y,h);const g=b(t.art).add(()=>{p=!1;for(const t of u.items)Nn.get(t)===h&&Nn.delete(t);u.dispose()});try{if(function(t,e,r){for(const n of Reflect.ownKeys(e)){if(!r())return;const o=Object.getOwnPropertyDescriptor(e,n);if(!o?.enumerable||!r())continue;const i=Reflect.get(e,n);if(!r())return;if(!Reflect.set(t,n,i))throw new TypeError(`Cannot assign setting item property [${String(n)}]`)}}(r,e,m),!m())return r;if(t.format(),!m())return r;if(t.createItem(r,!0),!m())return r;if(f=!0,t.render(),!m())return r;p=!1;for(const t of u.items)Nn.get(t)===h&&Nn.delete(t);return u.dispose(),n(r.$item),r}catch(v){throw m()&&h(),v}finally{g()}}const Vn=new WeakMap;function Yn(t,e,r){it(t,`$${e}`,{configurable:!0,get:()=>r}),it(t,e,{configurable:!0,get:()=>r.innerHTML,set(n){r.innerHTML="",N(r,n),"html"===e&&Rn(t)}})}function Bn(t,e,r=!1){const n=function(t){const e=Nn.get(t);return()=>!e||Nn.get(t)===e}(e);if(!t.cache.has(e.$option))return;const o=t.cache.get(e.$option),i=e.$item;let a="selector";st(e,"switch")&&(a="switch"),st(e,"range")&&(a="range"),st(e,"onClick")&&(a="button");const{icons:s,constructor:c}=t.art;if(!n())return;const l=function(t,e,r=b(t)){const n=un.get(e);(!n||Jr(n)||n.closed)&&vn(t,e);const o=r.child();return un.set(e,o),pn.set(e,r),fn.set(o,an(e).events),o.add(()=>{hn(t,fn.get(o))}),o}(t.art,e,ln(o)),d=()=>Jr(l)&&!w(t.art)&&n();if(!d())return;const u=document.createElement("div");try{if(Mn(e),O(u,"art-setting-item"),H(u,"height",`${c.SETTING_ITEM_HEIGHT}px`),u.dataset.name=e.name||"",u.dataset.value=String(e.value||""),!d())return;const n=kt(u,'
'),p=kt(u,'
'),f=document.createElement("div");switch(O(f,"art-setting-item-left-icon"),a){case"button":case"switch":case"range":{const t=e.icon||s.config;if(!d())return;N(f,t);break}case"selector":if(e.selector?.length){const t=e.icon||s.config;if(!d())return;N(f,t)}else N(f,s.check)}if(N(n,f),!d())return;Yn(e,"icon",f);const h=document.createElement("div");O(h,"art-setting-item-left-text");const m=e.html||"";if(!d())return;N(h,m),N(n,h),Yn(e,"html",h);const g=document.createElement("div");O(g,"art-setting-item-right-tooltip");const v=e.tooltip||"";if(!d())return;switch(N(g,v),N(p,g),Yn(e,"tooltip",g),a){case"switch":{const t=document.createElement("div");O(t,"art-setting-item-right-icon");const r=kt(t,s.switchOn),n=kt(t,s.switchOff),o=e.switch;if(!d())return;H(o?n:r,"display","none"),N(p,t),it(e,"$switch",{configurable:!0,get:()=>t});let i=e.switch;if(!d())return;Mn(e,()=>{const t=i;return()=>{i=t}}),it(e,"switch",{configurable:!0,get:()=>i,set(t){i=t,u.setAttribute("aria-checked",String(Boolean(t))),t?(H(n,"display","none"),H(r,"display",null)):(H(n,"display",null),H(r,"display","none"))}});break}case"range":{const t=document.createElement("div");O(t,"art-setting-item-right-icon");const r=document.createElement("input");r.type="range",N(t,r);for(const[o,i]of["value","min","max","step"].entries()){const t=e.range[o];if(!d())return;Reflect.set(r,i,String(t))}O(r,"art-setting-range"),N(p,t),it(e,"$range",{configurable:!0,get:()=>r});let n=[...e.range];if(!d())return;Mn(e,()=>{const t=n,e=[...t],o={min:r.min,max:r.max,step:r.step,value:r.value};return()=>{t.splice(0,t.length,...e),n=t,Object.assign(r,o)}}),it(e,"range",{configurable:!0,get:()=>n,set(t){n=[...t],r.value=String(t[0]),r.min=String(t[1]),r.max=String(t[2]),r.step=String(t[3])}})}break;case"selector":if(e.selector?.length){const t=document.createElement("div");O(t,"art-setting-item-right-icon"),N(t,s.arrowRight),N(p,t)}}if(!d())return;if(function(t,e,r,n){const{art:o}=t,i=gn(e),a=(t,r,n)=>bn(o,e,t,r,n,i);switch(n){case"switch":e.onSwitch&&a(r,"click",n=>Dn(t,e,r,n,e.onSwitch,e,"switch"));break;case"range":{const n=e.$range;if(n)for(const[o,i]of[["change","onRange"],["input","onChange"]])e[i]&&a(n,o,o=>Dn(t,e,r,o,e[i],e,"tooltip",()=>{e.range[0]=n.valueAsNumber}));break}case"selector":a(r,"click",n=>{if(e.selector?.length)t.render(e.selector);else{if(e.$parent?.onSelect)return Dn(t,e,r,n,e.$parent.onSelect,e.$parent,"tooltip",()=>t.check(e));t.check(e)}}),e.default&&O(r,"art-current");break;case"button":e.onClick&&a(r,"click",n=>Dn(t,e,r,n,e.onClick,e,"tooltip"))}}(t,e,u,a),!d())return;it(e,"$item",{configurable:!0,get:()=>u}),function(t,e,r,n,o){"range"!==n?r.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")||("switch"===n?(r.setAttribute("role","switch"),r.setAttribute("aria-checked",String(Boolean(e.switch))),r.setAttribute("aria-disabled",String(!e.onSwitch))):"selector"!==n||e.selector?.length||r.setAttribute("aria-current",String(Boolean(e.default))),xt(o,r,()=>r.click(),()=>Jr(o)&&!w(t.art))):Rn(e)}(t,e,u,a,l),r&&i?.parentNode?i.replaceWith(u):N(o,u),e.mounted&&d()&>(l,()=>{if(!w(t.art))try{const r=e.mounted?.call(t.art,u,e);Promise.resolve(r).catch(t=>console.warn("ArtPlayer setting mounted failed:",t))}catch(r){console.warn("ArtPlayer setting mounted failed:",r)}},0)}catch(p){try{l.dispose()}catch(f){console.warn("ArtPlayer setting cleanup failed:",f)}throw u.remove(),p}}function Hn(t,e=t.option){if(w(t.art))return;const r=An(t),n=t.cache.get(e);if(n&&!Jr(ln(n)))return;const o=(Vn.get(t)||0)+1;Vn.set(t,o);const i=()=>Vn.get(t)===o&&!w(t.art),a=t.active,s=["height","width","left","right"].map(e=>[e,t.$parent.style.getPropertyValue(e),t.$parent.style.getPropertyPriority(e)]),c=()=>{t.active=a,a&&t.cache.has(a)&&W(t.cache.get(a),"art-current");for(const[e,r,n]of s)t.$parent.style.setProperty(e,r,n)};if(t.active=e,n)try{W(n,"art-current"),t.resize()}catch(l){throw i()&&t.cache.get(e)===n&&!ln(n).closed&&c(),l}else{const r=document.createElement("div");t.cache.set(e,r);const n=function(t,e,r){const n=b(t.art).child();return cn.set(r,n),n.add(()=>{t.cache.get(e)===r&&t.cache.delete(e),r.remove()}),n}(t,e,r),o=()=>!n.closed&&!w(t.art)&&t.cache.get(e)===r,a=[];try{if(!o())return;O(r,"art-setting-panel"),r.setAttribute("role","group"),r.setAttribute("aria-label",e[0]?.$parent?.$html?.textContent||t.art.i18n.get("Settings")),N(t.$parent,r),W(r,"art-current"),e[0]?.$parent&&t.createHeader(e[0]);for(let r=0;r{!function(t){const e=en.get(t);e&&(e.active=!1,e.root=void 0,e.scope=void 0)}(this)}),e.setting&&(this.format(),this.render(),function(t){const{art:e}=t,r=b(e).child(),n=(t,n)=>{if(r.closed||w(e))return;const o=(...t)=>{if(!r.closed&&!w(e))return n(...t)};e.on(t,o),r.add(()=>{e.off(t,o)})};n("blur",()=>{t.show&&(t.show=!1,t.render())}),n("focus",r=>{const n=L(r,e.controls.setting),o=L(r,t.$parent);!t.show||n||o||(t.show=!1,t.render())}),n("resize",()=>t.resize());const o=()=>{r.closed||w(e)||t.resize()},i=e.proxy(t.$parent,"transitionend",e=>{e.target===t.$parent&&"bottom"===e.propertyName&&o()});r.add(()=>{e.events.remove(i)});const{$player:a,$controls:s}=e.template;if(!r.closed&&"undefined"!==typeof ResizeObserver){const t=new ResizeObserver(o);t.observe(a),t.observe(s),r.add(()=>{t.disconnect()})}if(!r.closed&&"undefined"!==typeof MutationObserver){const t=new MutationObserver(o);"undefined"===typeof ResizeObserver&&t.observe(s,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),t.observe(a,{attributes:!0,attributeFilter:["class","style"]}),r.add(()=>{t.disconnect()})}}(this)),Cn(this)}get builtin(){const t=[],{option:e}=this.art;return e.playbackRate&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,PLAYBACK_RATE:o}}=t;function i(t){return 1===t?e.get("Normal"):t.toFixed(1)}function a(){const e=t.setting.find(`playback-rate-${t.playbackRate}`);t.setting.check(e)}return{width:n,name:"playback-rate",html:e.get("Play Speed"),tooltip:i(t.playbackRate),icon:r.playbackRate,selector:o.map(e=>({value:e,name:`playback-rate-${e}`,default:e===t.playbackRate,html:i(e)})),onSelect:e=>(t.playbackRate=e.value,e.html),mounted:(e,r)=>{a(),wn(t,r,"video:ratechange",()=>a())}}}(this.art)),e.aspectRatio&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,ASPECT_RATIO:o}}=t;function i(t){return"default"===t?e.get("Default"):t}function a(){const e=t.setting.find(`aspect-ratio-${t.aspectRatio}`);t.setting.check(e)}return{width:n,name:"aspect-ratio",html:e.get("Aspect Ratio"),icon:r.aspectRatio,tooltip:i(t.aspectRatio),selector:o.map(e=>({value:e,name:`aspect-ratio-${e}`,default:e===t.aspectRatio,html:i(e)})),onSelect:e=>(t.aspectRatio=e.value,e.html),mounted:(e,r)=>{a(),wn(t,r,"aspectRatio",()=>a())}}}(this.art)),e.flip&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,FLIP:o}}=t;function i(t){return e.get(Q(t))}function a(){const e=t.setting.find(`flip-${t.flip}`);t.setting.check(e)}return{width:n,name:"flip",html:e.get("Video Flip"),tooltip:i(t.flip),icon:r.flip,selector:o.map(e=>({value:e,name:`flip-${e}`,default:e===t.flip,html:i(e)})),onSelect:e=>(t.flip=e.value,e.html),mounted:(e,r)=>{a(),wn(t,r,"flip",()=>a())}}}(this.art)),e.subtitleOffset&&t.push(function(t){const{i18n:e,icons:r,constructor:n}=t;return{width:n.SETTING_ITEM_WIDTH,name:"subtitle-offset",html:e.get("Subtitle Offset"),icon:r.subtitle,tooltip:"0s",range:[0,-10,10,.1],onChange:e=>(t.subtitleOffset=e.range[0],`${e.range[0]}s`),mounted:(e,r)=>{wn(t,r,"subtitleOffset",t=>{r.$range.value=String(t),r.tooltip=`${t}s`})}}}(this.art)),t}traverse(t,e=this.option){sn(e,t)}check(t){!function(t,e){e?.$parent&&(e.$parent.tooltip=e.html,t.traverse(t=>{t.default=t===e,t.$item&&t.$item.setAttribute("aria-current",String(t.default)),t.default&&t.$item&&W(t.$item,"art-current")},e.$option),t.render(e.$parents))}(this,t)}format(t=this.option,e,r,n=[]){this.option=function(t,e,r,n,o=[]){const i=en.get(t)||{active:!0},a=[],s=new Set,c=new Set(o),l=(t,e,r)=>{for(let n=0;nan(t).parent},$parents:{get:()=>an(t).parents},$option:{get:()=>an(t).option},$events:{get:()=>an(t).events},$formatted:{get:()=>!0}}),tn.set(t,{parent:r,parents:n,option:o,events:a?.events||[],owner:i}),u.generated&&(t.name=e)}for(const u of a)u.generated||o.push(u.name);return t.id=d,e}(this,t,e,r,n)}find(t=""){return function(t,e=""){let r=null;return sn(t,t=>{t.name===e&&(r=t)}),r}(this.option,t)}resize(){Sn(this)}inactivate(t){!function(t,e){const r=[],n=new Set,o=e=>{if(!n.has(e)){n.add(e);for(const t of e.selector||[])o(t);if(e.selector){const n=t.cache.get(e.selector);t.cache.delete(e.selector);try{n&&dn(n)}catch(i){r.push(i)}}try{vn(t.art,e)}catch(i){i instanceof h?r.push(...i.errors):r.push(i)}}};if(o(e),r.length)throw new h(r)}(this,t)}remove(t){const e=An(this),r=this.find(t);X(r,`Can't find [${t}] in the [setting]`),this.traverse(t=>{Ln(t),Wn(t)},[r]);const n=r.$option.indexOf(r);r.$option.splice(n,1);const o=r.$item,i=[];for(const s of[()=>this.inactivate(r),()=>o?.remove(),()=>this.render()])try{s()}catch(a){a instanceof h?i.push(...a.errors):i.push(a)}if(i.length)throw new h(i);e()}update(t){return Fn(this,t)}add(t,e=this.option){if(w(this.art))return t;let r=!1;this.traverse(e=>{r||(r=e===t)});const n=e.length,o=r?void 0:function(t){const e={};Tn.set(t,e);const r=()=>Tn.get(t)===e;return{current:r,finish(){r()&&Tn.delete(t)}}}(t);let i=!1;try{e.push(t),this.format(),i=!0,this.createItem(t),this.render()}catch(a){if(w(this.art)||o&&!o.current())throw a;if(e[n]===t&&e.splice(n,1),!r&&i){try{this.inactivate(t)}catch(s){console.warn("ArtPlayer setting cleanup failed:",s)}t.$item?.remove()}throw a}finally{o?.finish()}return t}createHeader(t){!function(t,e){if(!t.cache.has(e.$option))return;const r=t.cache.get(e.$option),{icons:{arrowLeft:n},constructor:{SETTING_ITEM_HEIGHT:o}}=t.art,i=document.createElement("div");H(i,"height",`${o}px`),O(i,"art-setting-item"),O(i,"art-setting-item-back");const a=kt(i,'
'),s=document.createElement("div");O(s,"art-setting-item-left-icon"),N(s,n),N(a,s),N(a,e.$parent.html),bn(t.art,e.$parent,i,"click",()=>t.render(e.$parents),ln(r));const c=ln(r);i.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")||xt(c,i,()=>i.click(),()=>Jr(c)&&!w(t.art)),i.setAttribute("aria-label",`${t.art.i18n.get("Back")}: ${i.textContent?.trim()||""}`),N(r,i)}(this,t)}createItem(t,e=!1){Bn(this,t,e)}render(t=this.option){Hn(this,t)}}class Un{constructor(){this.name="artplayer_settings",this.settings={}}get(t){try{const e=JSON.parse(window.localStorage.getItem(this.name))||{};return t?e[t]:e}catch{return t?this.settings[t]:this.settings}}set(t,e){try{const r=Object.assign({},this.get(),{[t]:e});window.localStorage.setItem(this.name,JSON.stringify(r))}catch{this.settings[t]=e}}del(t){try{const e=this.get();delete e[t],window.localStorage.setItem(this.name,JSON.stringify(e))}catch{delete this.settings[t]}}clear(){try{window.localStorage.removeItem(this.name)}catch{this.settings={}}}}const Xn='.art-video-player{--art-theme: #f00;--art-font-color: #fff;--art-background-color: #000;--art-text-shadow-color: rgba(0, 0, 0, .5);--art-transition-duration: .2s;--art-padding: 10px;--art-border-radius: 3px;--art-progress-height: 6px;--art-progress-color: rgba(255, 255, 255, .25);--art-progress-top-gap: 10px;--art-hover-color: rgba(255, 255, 255, .25);--art-loaded-color: rgba(255, 255, 255, .25);--art-state-size: 80px;--art-state-opacity: .8;--art-bottom-height: 100px;--art-bottom-offset: 20px;--art-bottom-gap: 5px;--art-highlight-width: 8px;--art-highlight-color: rgba(255, 255, 255, .5);--art-control-height: 46px;--art-control-opacity: .75;--art-control-icon-size: 36px;--art-control-icon-scale: 1.1;--art-volume-height: 120px;--art-volume-handle-size: 14px;--art-lock-size: 36px;--art-indicator-scale: 0;--art-indicator-size: 16px;--art-fullscreen-web-index: 9999;--art-settings-icon-size: 24px;--art-settings-max-height: 300px;--art-selector-max-height: 300px;--art-contextmenus-min-width: 250px;--art-subtitle-font-size: 20px;--art-subtitle-gap: 5px;--art-subtitle-bottom: 15px;--art-subtitle-border: #000;--art-widget-background: rgba(0, 0, 0, .85);--art-tip-background: rgba(0, 0, 0, .7);--art-scrollbar-size: 4px;--art-scrollbar-background: rgba(255, 255, 255, .25);--art-scrollbar-background-hover: rgba(255, 255, 255, .5);--art-mini-progress-height: 2px}.art-bg-cover{background-position:center center;background-repeat:no-repeat;background-size:cover}.art-bottom-gradient{background-image:linear-gradient(to top,#000,rgba(0,0,0,.4),transparent);background-repeat:repeat-x;background-position:center bottom}.art-backdrop-filter{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:#000000bf!important}.art-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-video-player{position:relative;margin:0 auto;width:100%;height:100%;outline:0;zoom:1;padding:0;text-align:left;direction:ltr;font-size:14px;line-height:1.3;user-select:none;box-sizing:border-box;color:var(--art-font-color);background-color:var(--art-background-color);text-shadow:0 0 2px var(--art-text-shadow-color);font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,Roboto,Arial,sans-serif;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-touch-action:manipulation;touch-action:manipulation;-ms-high-contrast-adjust:none}.art-video-player *,.art-video-player *:before,.art-video-player *:after{box-sizing:border-box}.art-video-player ::-webkit-scrollbar{width:var(--art-scrollbar-size);height:var(--art-scrollbar-size)}.art-video-player ::-webkit-scrollbar-thumb{background-color:var(--art-scrollbar-background)}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:var(--art-scrollbar-background-hover)}.art-video-player img{max-width:100%;vertical-align:top}.art-video-player svg{fill:var(--art-font-color)}.art-video-player a{color:var(--art-font-color);text-decoration:none}.art-icon{line-height:1;display:flex;justify-content:center;align-items:center}.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{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:#000000bf!important}.art-video{position:absolute;inset:0;z-index:10;width:100%;height:100%}.art-poster{position:absolute;inset:0;z-index:11;width:100%;height:100%;background-position:center center;background-repeat:no-repeat;background-size:cover;pointer-events:none}.art-video-player .art-subtitle{display:none;justify-content:center;align-items:center;flex-direction:column;position:absolute;z-index:20;width:100%;padding:0 5%;text-align:center;pointer-events:none;gap:var(--art-subtitle-gap);bottom:var(--art-subtitle-bottom);font-size:var(--art-subtitle-font-size);transition:bottom var(--art-transition-duration) ease;text-shadow:var(--art-subtitle-border) 1px 0 1px,var(--art-subtitle-border) 0 1px 1px,var(--art-subtitle-border) -1px 0 1px,var(--art-subtitle-border) 0 -1px 1px,var(--art-subtitle-border) 1px 1px 1px,var(--art-subtitle-border) -1px -1px 1px,var(--art-subtitle-border) 1px -1px 1px,var(--art-subtitle-border) -1px 1px 1px}.art-video-player.art-subtitle-show .art-subtitle{display:flex}.art-video-player.art-control-show .art-subtitle{bottom:calc(var(--art-controls-height, var(--art-control-height)) + var(--art-subtitle-bottom))}.art-danmuku{position:absolute;inset:0;z-index:30;width:100%;height:100%;pointer-events:none;overflow:hidden}.art-video-player .art-layers{position:absolute;inset:0;z-index:40;width:100%;height:100%;display:none;pointer-events:none}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:flex}.art-video-player .art-mask{display:flex;justify-content:center;align-items:center;position:absolute;inset:0;z-index:50;width:100%;height:100%;pointer-events:none}.art-video-player .art-mask .art-state{display:flex;justify-content:center;align-items:center;opacity:0;transform:scale(2);width:var(--art-state-size);height:var(--art-state-size);transition:all var(--art-transition-duration) ease}.art-video-player.art-mask-show .art-state{pointer-events:auto;opacity:var(--art-state-opacity);transform:scale(1)}.art-video-player.art-loading-show .art-state{display:none}.art-video-player .art-loading{display:none;justify-content:center;align-items:center;position:absolute;inset:0;z-index:70;width:100%;height:100%;pointer-events:none}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player.art-loading-show .art-mask{display:none}.art-video-player .art-bottom{position:absolute;inset:0;z-index:60;width:100%;height:100%;display:flex;flex-direction:column;justify-content:flex-end;opacity:0;overflow:hidden;pointer-events:none;padding:0 var(--art-padding);transition:all var(--art-transition-duration) ease;background-size:100% var(--art-bottom-height);background-image:linear-gradient(to top,#000,rgba(0,0,0,.4),transparent);background-repeat:repeat-x;background-position:center bottom}.art-video-player .art-bottom .art-controls,.art-video-player .art-bottom .art-progress{transform:translateY(var(--art-bottom-offset));transition:transform var(--art-transition-duration) ease}.art-video-player.art-control-show .art-bottom,.art-video-player.art-hover .art-bottom{opacity:1}.art-video-player.art-control-show .art-bottom .art-controls,.art-video-player.art-hover .art-bottom .art-controls,.art-video-player.art-control-show .art-bottom .art-progress,.art-video-player.art-hover .art-bottom .art-progress{transform:translateY(0)}.art-bottom .art-progress{position:relative;z-index:0;cursor:pointer;pointer-events:auto;padding-top:var(--art-progress-top-gap);padding-bottom:var(--art-bottom-gap)}.art-bottom .art-progress .art-control-progress{position:relative;display:flex;justify-content:center;align-items:center;height:var(--art-progress-height)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:height var(--art-transition-duration) ease;background-color:var(--art-progress-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover{position:absolute;inset:0;z-index:0;width:100%;height:100%;width:0%;background-color:var(--art-hover-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{position:absolute;inset:0;z-index:10;width:100%;height:100%;width:0%;background-color:var(--art-loaded-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{position:absolute;inset:0;z-index:20;width:100%;height:100%;width:0%;background-color:var(--art-theme)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{position:absolute;inset:0;z-index:30;width:100%;height:100%;pointer-events:none}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{position:absolute;inset:0 auto 0 0;z-index:0;width:100%;height:100%;pointer-events:auto;width:var(--art-highlight-width)!important;transform:translate(calc(var(--art-highlight-width) / -2));background-color:var(--art-highlight-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{display:flex;justify-content:center;align-items:center;position:absolute;z-index:40;left:0;border-radius:50%;width:var(--art-indicator-size);height:var(--art-indicator-size);transform:scale(var(--art-indicator-scale));margin-left:calc(var(--art-indicator-size) / -2);transition:transform var(--art-transition-duration) ease}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon{width:100%;height:100%;pointer-events:none}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover{transform:scale(1.2)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active{transform:scale(1)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;z-index:50;top:-25px;left:0;padding:3px 5px;line-height:1;font-size:12px;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease}.art-bottom .art-progress .art-control-thumbnails{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;bottom:calc(var(--art-bottom-gap) + 10px);left:0;border-radius:var(--art-border-radius);pointer-events:none;background-color:var(--art-widget-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease;box-shadow:0 1px 3px #0003,0 1px 2px -1px #0003}.art-bottom .art-progress:hover .art-control-progress .art-control-progress-inner{height:100%}.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{transform:scale(1)}.art-progress-hover .art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip,.art-progress-hover .art-bottom .art-progress .art-control-thumbnails{transform:scale(1);opacity:1}.art-video-player .art-controls{position:relative;z-index:10;pointer-events:auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;flex-shrink:0;height:auto;min-height:var(--art-control-height)}.art-video-player .art-controls .art-controls-left,.art-video-player .art-controls .art-controls-right{display:flex;flex-wrap:wrap;max-width:100%;min-height:var(--art-control-height)}.art-video-player .art-controls .art-controls-center{display:none;justify-content:center;align-items:center;flex:1;height:100%;padding:0 10px}.art-video-player .art-controls .art-controls-right{justify-content:flex-end;margin-left:auto}.art-video-player .art-controls .art-control{display:flex;justify-content:center;align-items:center;flex-shrink:0;max-width:100%;cursor:pointer;white-space:nowrap;opacity:var(--art-control-opacity);min-height:var(--art-control-height);min-width:var(--art-control-height);transition:opacity var(--art-transition-duration) ease}.art-video-player .art-controls .art-control .art-icon{height:var(--art-control-icon-size);width:var(--art-control-icon-size);transform:scale(var(--art-control-icon-scale));transition:transform var(--art-transition-duration) ease}.art-video-player .art-controls .art-control .art-icon:active{transform:scale(calc(var(--art-control-icon-scale) * .8))}.art-video-player .art-controls .art-control:hover{opacity:1}.art-control-volume{position:relative}.art-control-volume .art-volume-panel{display:flex;justify-content:center;align-items:center;position:absolute;left:0;right:0;padding:0 5px;font-size:12px;text-align:center;cursor:default;opacity:0;visibility:hidden;transform:translateY(10px);pointer-events:none;bottom:var(--art-control-height);width:var(--art-control-height);height:var(--art-volume-height);transition:opacity var(--art-transition-duration) ease,transform var(--art-transition-duration) ease}.art-control-volume .art-volume-panel .art-volume-inner{display:flex;flex-direction:column;align-items:center;gap:10px;height:100%;width:100%;padding:10px 0 12px;border-radius:var(--art-border-radius);background-color:var(--art-widget-background)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{flex:1;width:100%;display:flex;cursor:pointer;position:relative;justify-content:center}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{position:relative;display:flex;justify-content:center;width:2px;border-radius:var(--art-border-radius);overflow:hidden;background-color:#ffffff40}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded{position:absolute;inset:0;z-index:0;width:100%;height:100%;background-color:var(--art-theme)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator{position:absolute;width:var(--art-volume-handle-size);height:var(--art-volume-handle-size);margin-top:calc(var(--art-volume-handle-size) / -2);flex-shrink:0;transform:scale(1);border-radius:100%;background-color:var(--art-theme);transition:transform var(--art-transition-duration) ease}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator{transform:scale(.9)}.art-control-volume:hover .art-volume-panel,.art-control-volume:focus-within .art-volume-panel{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.art-video-player .art-notice{display:none;position:absolute;inset:0 0 auto;z-index:80;width:100%;height:100%;height:auto;padding:var(--art-padding);pointer-events:none}.art-video-player .art-notice .art-notice-inner{display:inline-flex;padding:5px;line-height:1;border-radius:var(--art-border-radius);background-color:var(--art-tip-background)}.art-video-player.art-notice-show .art-notice{display:flex}.art-video-player .art-contextmenus{display:none;flex-direction:column;position:absolute;z-index:120;padding:5px 0;border-radius:var(--art-border-radius);font-size:12px;background-color:var(--art-widget-background);min-width:var(--art-contextmenus-min-width)}.art-video-player .art-contextmenus .art-contextmenu{cursor:pointer;display:flex;padding:10px 15px;border-bottom:1px solid rgba(255,255,255,.1)}.art-video-player .art-contextmenus .art-contextmenu span{padding:0 8px}.art-video-player .art-contextmenus .art-contextmenu span:hover,.art-video-player .art-contextmenus .art-contextmenu span.art-current{color:var(--art-theme)}.art-video-player .art-contextmenus .art-contextmenu:hover{background-color:#ffffff1a}.art-video-player .art-contextmenus .art-contextmenu:last-child{border-bottom:none}.art-video-player.art-contextmenu-show .art-contextmenus{display:flex}.art-video-player .art-settings{display:none;flex-direction:column;position:absolute;z-index:90;left:auto;overflow-y:auto;overflow-x:hidden;border-radius:var(--art-border-radius);max-height:var(--art-settings-max-height);right:var(--art-padding);bottom:var(--art-controls-height, var(--art-control-height));transition:all var(--art-transition-duration) ease;background-color:var(--art-widget-background)}.art-video-player .art-settings .art-setting-panel{display:none;flex-direction:column}.art-video-player .art-settings .art-setting-panel.art-current{display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item{display:flex;justify-content:space-between;align-items:center;gap:5px;padding:0 5px;cursor:pointer;overflow:hidden;transition:background-color var(--art-transition-duration) ease}.art-video-player .art-settings .art-setting-panel .art-setting-item:hover{background-color:#ffffff1a}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current{color:var(--art-theme)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check{visibility:hidden;height:15px}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check{visibility:visible}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left{display:flex;justify-content:center;align-items:center;flex-shrink:1;min-width:0;overflow:hidden;gap:5px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;height:var(--art-settings-icon-size);width:var(--art-settings-icon-size)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right{display:flex;justify-content:center;align-items:center;flex-shrink:0;min-width:0;max-width:55%;gap:5px;font-size:12px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#ffffff80}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;min-width:32px;height:24px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{height:3px;width:80px;outline:none;appearance:none;background-color:#fff3}.art-video-player .art-settings .art-setting-panel .art-setting-item-back{border-bottom:1px solid rgba(255,255,255,.1)}.art-video-player.art-setting-show .art-settings{display:flex}.art-video-player .art-info{display:none;position:absolute;left:var(--art-padding);top:var(--art-padding);z-index:100;padding:10px;font-size:12px;border-radius:var(--art-border-radius);background-color:var(--art-widget-background)}.art-video-player .art-info .art-info-panel{display:flex;flex-direction:column;gap:5px}.art-video-player .art-info .art-info-panel .art-info-item{display:flex;align-items:center;gap:5px}.art-video-player .art-info .art-info-panel .art-info-item .art-info-title{width:100px;text-align:right}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;user-select:all}.art-video-player .art-info .art-info-close{position:absolute;top:5px;right:5px;cursor:pointer}.art-video-player.art-info-show .art-info{display:flex}.art-hide-cursor *{cursor:none!important}.art-video-player[data-aspect-ratio]{overflow:hidden}.art-video-player[data-aspect-ratio] .art-video{object-fit:fill;box-sizing:content-box}.art-fullscreen{--art-progress-height: 8px;--art-indicator-size: 20px;--art-control-height: 60px;--art-control-icon-scale: 1.3}.art-fullscreen-web{--art-progress-height: 8px;--art-indicator-size: 20px;--art-control-height: 60px;--art-control-icon-scale: 1.3;position:fixed;inset:0;z-index:var(--art-fullscreen-web-index);width:100%;height:100%}.art-mini-popup{position:fixed;z-index:9999;width:320px;height:180px;max-width:100vw;max-height:100vh;background:#000;border-radius:var(--art-border-radius);cursor:move;user-select:none;overflow:hidden;transition:opacity .2s ease;box-shadow:0 0 5px #00000080}.art-mini-popup svg{fill:#fff}.art-mini-popup .art-video{pointer-events:none}.art-mini-popup .art-mini-close{position:absolute;z-index:20;right:10px;top:10px;cursor:pointer;opacity:0;transition:opacity .2s ease}.art-mini-popup .art-mini-state{position:absolute;inset:0;z-index:30;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none;opacity:0;transition:opacity .2s ease;background-color:#00000040}.art-mini-popup .art-mini-state .art-icon{opacity:.75;cursor:pointer;transform:scale(3);pointer-events:auto;transition:transform .2s ease}.art-mini-popup .art-mini-state .art-icon:active{transform:scale(2.5)}.art-mini-popup.art-mini-dragging{opacity:.9}.art-mini-popup:hover .art-mini-close,.art-mini-popup:focus-within .art-mini-close,.art-mini-popup:hover .art-mini-state,.art-mini-popup:focus-within .art-mini-state{opacity:1}.art-mini-popup [role=button]:focus-visible{outline:2px solid #fff;outline-offset:-2px}.art-video-player[data-flip=horizontal] .art-video{transform:scaleX(-1)}.art-video-player[data-flip=vertical] .art-video{transform:scaleY(-1)}.art-video-player .art-layer-lock{display:none;justify-content:center;align-items:center;position:absolute;top:50%;border-radius:50%;transform:translateY(-50%);height:var(--art-lock-size);width:var(--art-lock-size);left:var(--art-padding);background-color:var(--art-tip-background)}.art-video-player .art-layer-auto-playback{display:none;gap:10px;align-items:center;position:absolute;border-radius:var(--art-border-radius);padding:10px;line-height:1;left:var(--art-padding);bottom:calc(var(--art-controls-height, var(--art-control-height)) + var(--art-bottom-gap) + 10px);background-color:var(--art-widget-background)}.art-video-player .art-layer-auto-playback .art-auto-playback-close{display:flex;justify-content:center;align-items:center;cursor:pointer}.art-video-player .art-layer-auto-playback .art-auto-playback-close svg{width:15px;height:15px;fill:var(--art-theme)}.art-video-player .art-layer-auto-playback .art-auto-playback-jump{color:var(--art-theme);cursor:pointer}.art-video-player.art-lock .art-layer-lock{display:flex}.art-video-player.art-lock:not(.art-control-show) .art-layer-lock{opacity:0;pointer-events:none}.art-video-player.art-lock:not(.art-control-show) .art-layer-lock:focus-within{opacity:1;pointer-events:auto}.art-video-player.art-lock .art-subtitle{bottom:var(--art-subtitle-bottom)!important}.art-video-player.art-mini-progress-bar .art-bottom,.art-video-player.art-lock .art-bottom{opacity:1;padding:0;background-image:none}.art-video-player.art-mini-progress-bar .art-bottom .art-controls,.art-video-player.art-lock .art-bottom .art-controls,.art-video-player.art-mini-progress-bar .art-bottom .art-progress,.art-video-player.art-lock .art-bottom .art-progress{transform:translateY(calc(var(--art-controls-height, var(--art-control-height)) + var(--art-bottom-gap) + var(--art-progress-height) / 4))}.art-video-player.art-mini-progress-bar .art-bottom .art-progress-indicator,.art-video-player.art-lock .art-bottom .art-progress-indicator{display:none!important}.art-video-player.art-control-show .art-layer-lock{display:flex}.art-control-selector{position:relative;display:flex;justify-content:center}.art-control-selector .art-selector-list{display:flex;flex-direction:column;align-items:center;text-align:center;position:absolute;border-radius:var(--art-border-radius);overflow-y:auto;overflow-x:hidden;opacity:0;visibility:hidden;transform:translateY(10px);pointer-events:none;bottom:var(--art-control-height);max-height:var(--art-selector-max-height);background-color:var(--art-widget-background);transition:opacity var(--art-transition-duration) ease,transform var(--art-transition-duration) ease}.art-control-selector .art-selector-list .art-selector-item{display:flex;justify-content:center;align-items:center;width:100%;padding:10px 15px;flex-shrink:0;line-height:1}.art-control-selector .art-selector-list .art-selector-item:hover{background-color:#ffffff1a}.art-control-selector .art-selector-list .art-selector-item:hover,.art-control-selector .art-selector-list .art-selector-item.art-current{color:var(--art-theme)}.art-control-selector:hover:not(.art-selector-dismissed) .art-selector-list,.art-control-selector.art-selector-open .art-selector-list{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.art-video-player [class*=hint--]{position:relative;display:inline-block;font-style:normal}.art-video-player [class*=hint--]:before,.art-video-player [class*=hint--]:after{position:absolute;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);transform:translateZ(0);visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;-webkit-transition:.3s ease;-moz-transition:.3s ease;transition:.3s ease;-webkit-transition-delay:0ms;-moz-transition-delay:0ms;transition-delay:0ms}.art-video-player [class*=hint--]:hover:before,.art-video-player [class*=hint--]:hover:after{visibility:visible;opacity:1}.art-video-player [class*=hint--]:hover:before,.art-video-player [class*=hint--]:hover:after{-webkit-transition-delay:.1s;-moz-transition-delay:.1s;transition-delay:.1s}.art-video-player [class*=hint--]:before{content:"";position:absolute;background:transparent;border:6px solid transparent;z-index:1000001}.art-video-player [class*=hint--]:after{background:#000;color:#fff;padding:8px 10px;font-size:12px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:12px;white-space:nowrap}.art-video-player [class*=hint--][aria-label]:after{content:attr(aria-label)}.art-video-player [class*=hint--][data-hint]:after{content:attr(data-hint)}.art-video-player [aria-label=""]:before,.art-video-player [aria-label=""]:after,.art-video-player [data-hint=""]:before,.art-video-player [data-hint=""]:after{display:none!important}.art-video-player .hint--top-left:before{border-top-color:#000}.art-video-player .hint--top-right:before{border-top-color:#000}.art-video-player .hint--top:before{border-top-color:#000}.art-video-player .hint--bottom-left:before{border-bottom-color:#000}.art-video-player .hint--bottom-right:before{border-bottom-color:#000}.art-video-player .hint--bottom:before{border-bottom-color:#000}.art-video-player .hint--left:before{border-left-color:#000}.art-video-player .hint--right:before{border-right-color:#000}.art-video-player .hint--top:before{margin-bottom:-11px}.art-video-player .hint--top:before,.art-video-player .hint--top:after{bottom:100%;left:50%}.art-video-player .hint--top:before{left:calc(50% - 6px)}.art-video-player .hint--top:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translate(-50%)}.art-video-player .hint--top:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top:hover:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translate(-50%) translateY(-8px)}.art-video-player .hint--bottom:before{margin-top:-11px}.art-video-player .hint--bottom:before,.art-video-player .hint--bottom:after{top:100%;left:50%}.art-video-player .hint--bottom:before{left:calc(50% - 6px)}.art-video-player .hint--bottom:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translate(-50%)}.art-video-player .hint--bottom:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom:hover:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translate(-50%) translateY(8px)}.art-video-player .hint--right:before{margin-left:-11px;margin-bottom:-6px}.art-video-player .hint--right:after{margin-bottom:-14px}.art-video-player .hint--right:before,.art-video-player .hint--right:after{left:100%;bottom:50%}.art-video-player .hint--right:hover:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--right:hover:after{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--left:before{margin-right:-11px;margin-bottom:-6px}.art-video-player .hint--left:after{margin-bottom:-14px}.art-video-player .hint--left:before,.art-video-player .hint--left:after{right:100%;bottom:50%}.art-video-player .hint--left:hover:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--left:hover:after{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--top-left:before{margin-bottom:-11px}.art-video-player .hint--top-left:before,.art-video-player .hint--top-left:after{bottom:100%;left:50%}.art-video-player .hint--top-left:before{left:calc(50% - 6px)}.art-video-player .hint--top-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translate(-100%)}.art-video-player .hint--top-left:after{margin-left:12px}.art-video-player .hint--top-left:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top-left:hover:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translate(-100%) translateY(-8px)}.art-video-player .hint--top-right:before{margin-bottom:-11px}.art-video-player .hint--top-right:before,.art-video-player .hint--top-right:after{bottom:100%;left:50%}.art-video-player .hint--top-right:before{left:calc(50% - 6px)}.art-video-player .hint--top-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translate(0)}.art-video-player .hint--top-right:after{margin-left:-12px}.art-video-player .hint--top-right:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top-right:hover:after{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--bottom-left:before{margin-top:-11px}.art-video-player .hint--bottom-left:before,.art-video-player .hint--bottom-left:after{top:100%;left:50%}.art-video-player .hint--bottom-left:before{left:calc(50% - 6px)}.art-video-player .hint--bottom-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translate(-100%)}.art-video-player .hint--bottom-left:after{margin-left:12px}.art-video-player .hint--bottom-left:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom-left:hover:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translate(-100%) translateY(8px)}.art-video-player .hint--bottom-right:before{margin-top:-11px}.art-video-player .hint--bottom-right:before,.art-video-player .hint--bottom-right:after{top:100%;left:50%}.art-video-player .hint--bottom-right:before{left:calc(50% - 6px)}.art-video-player .hint--bottom-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translate(0)}.art-video-player .hint--bottom-right:after{margin-left:-12px}.art-video-player .hint--bottom-right:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom-right:hover:after{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--small:after,.art-video-player .hint--medium:after,.art-video-player .hint--large:after{white-space:normal;line-height:1.4em;word-wrap:break-word}.art-video-player .hint--small:after{width:80px}.art-video-player .hint--medium:after{width:150px}.art-video-player .hint--large:after{width:300px}.art-video-player [class*=hint--]:after{text-shadow:0 -1px 0px black;box-shadow:4px 4px 8px #0000004d}.art-video-player .hint--error:after{background-color:#b34e4d;text-shadow:0 -1px 0px #592726}.art-video-player .hint--error.hint--top-left:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--top-right:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--top:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--bottom-left:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--bottom-right:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--left:before{border-left-color:#b34e4d}.art-video-player .hint--error.hint--right:before{border-right-color:#b34e4d}.art-video-player .hint--warning:after{background-color:#c09854;text-shadow:0 -1px 0px #6c5328}.art-video-player .hint--warning.hint--top-left:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--top-right:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--top:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--bottom-left:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--bottom-right:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--bottom:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--left:before{border-left-color:#c09854}.art-video-player .hint--warning.hint--right:before{border-right-color:#c09854}.art-video-player .hint--info:after{background-color:#3986ac;text-shadow:0 -1px 0px #1a3c4d}.art-video-player .hint--info.hint--top-left:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--top-right:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--top:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--bottom-left:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--bottom-right:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--bottom:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--left:before{border-left-color:#3986ac}.art-video-player .hint--info.hint--right:before{border-right-color:#3986ac}.art-video-player .hint--success:after{background-color:#458746;text-shadow:0 -1px 0px #1a321a}.art-video-player .hint--success.hint--top-left:before{border-top-color:#458746}.art-video-player .hint--success.hint--top-right:before{border-top-color:#458746}.art-video-player .hint--success.hint--top:before{border-top-color:#458746}.art-video-player .hint--success.hint--bottom-left:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--bottom-right:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--bottom:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--left:before{border-left-color:#458746}.art-video-player .hint--success.hint--right:before{border-right-color:#458746}.art-video-player .hint--always:after,.art-video-player .hint--always:before{opacity:1;visibility:visible}.art-video-player .hint--always.hint--top:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translate(-50%) translateY(-8px)}.art-video-player .hint--always.hint--top-left:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top-left:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translate(-100%) translateY(-8px)}.art-video-player .hint--always.hint--top-right:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top-right:after{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--bottom:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translate(-50%) translateY(8px)}.art-video-player .hint--always.hint--bottom-left:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom-left:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translate(-100%) translateY(8px)}.art-video-player .hint--always.hint--bottom-right:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom-right:after{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--left:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--always.hint--left:after{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--always.hint--right:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--always.hint--right:after{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--rounded:after{border-radius:4px}.art-video-player .hint--no-animate:before,.art-video-player .hint--no-animate:after{-webkit-transition-duration:0ms;-moz-transition-duration:0ms;transition-duration:0ms}.art-video-player .hint--bounce:before,.art-video-player .hint--bounce:after{-webkit-transition:opacity .3s ease,visibility .3s ease,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s ease,visibility .3s ease,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s ease,visibility .3s ease,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.art-video-player .hint--no-shadow:before,.art-video-player .hint--no-shadow:after{text-shadow:initial;box-shadow:initial}.art-video-player .hint--no-arrow:before{display:none}.art-video-player.art-mobile{--art-bottom-gap: 10px;--art-control-height: 38px;--art-control-icon-scale: 1;--art-state-size: 60px;--art-settings-max-height: 180px;--art-selector-max-height: 180px;--art-indicator-scale: 1;--art-control-opacity: 1}.art-video-player.art-mobile .art-controls-left{margin-left:calc(var(--art-padding) / -1)}.art-video-player.art-mobile .art-controls-right{margin-right:calc(var(--art-padding) / -1)}.art-video-player [tabindex]:focus-visible,.art-video-player input:focus-visible,.art-video-player button:focus-visible,.art-video-player a:focus-visible{outline:2px solid currentColor;outline-offset:-2px}.art-video-player.art-keyboard-focus :focus{outline:2px solid currentColor;outline-offset:-2px}.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom{opacity:1}.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom .art-controls,.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom .art-progress{transform:translateY(0)}';class Gn{constructor(t){this.scope=t.child(),this.cancelled=new Promise(t=>{this.scope.add(()=>{t(void 0)})}),this.signal=function(t){if("undefined"===typeof AbortController)return;const e=new AbortController;return t.add(()=>{e.abort()}),e}(this.scope)?.signal}get active(){return!this.scope.closed}cancel(){this.scope.dispose()}async run(t){if(this.active)try{return await Promise.race([t(),this.cancelled])}finally{this.cancel()}}}const Kn=new WeakMap;function Zn(t){return Kn.get(t)}function Jn(t){const e=t.ownedURL;t.ownedURL=void 0,e&&URL.revokeObjectURL(e)}const Qn=Ft;class to extends Qn{constructor(t){super(t),this.name="subtitle",this.option=null,this.destroyEvent=()=>null;const e=function(t,e){const r=b(e).child(),n={scope:r,revision:0,render:0,trackRevision:0};return Kn.set(t,n),r.add(()=>{Jn(n)}),n}(this,t);this.init(t.option.subtitle).catch(()=>{});let r=!1;const n=()=>{if(e.scope.closed||!this.url)return;const n=t.template.$video.webkitDisplayingFullscreen;"boolean"===typeof n&&n!==r&&(r=n,this.createTrack(n?"subtitles":"metadata",this.url))};t.on("video:timeupdate",n),e.scope.add(()=>{t.off("video:timeupdate",n)})}get url(){return this.art.template.$track.src}set url(t){this.switch(t).catch(()=>{})}get textTrack(){return this.art.template.$video?.textTracks?.[0]}get activeCues(){return Array.from(this.textTrack?.activeCues||[])}get cues(){return Array.from(this.textTrack?.cues||[])}style(t,e){const{$subtitle:r}=this.art.template;return"object"===typeof t?j(r,t):H(r,t,e)}update(){!function(t){const e=Zn(t);if(e.scope.closed)return;const r=e.revision,n=++e.render,o=()=>!e.scope.closed&&e.revision===r&&e.render===n,{art:i}=t,{$subtitle:a}=i.template;if(a.innerHTML="",!t.activeCues.length)return;if(i.emit("subtitleBeforeUpdate",t.activeCues),!o())return;const s=t.activeCues.map((t,e)=>t.text.split(/\r?\n/).filter(t=>t.trim()).map(t=>`
\n ${i.option.subtitle.escape?ot(t):t}\n
`).join("")).join("");o()&&(a.innerHTML=s,i.emit("subtitleAfterUpdate",t.activeCues))}(this)}async switch(t,e={}){const{i18n:r,notice:n,option:o}=this.art,i={...o.subtitle,...e,url:t},a=Zn(this),s=a.revision+1,c=await this.init(i);return!a.scope.closed&&a.revision===s&&e.name&&(n.show=`${r.get("Switch Subtitle")}: ${e.name}`),c}createTrack(t,e){!function(t,e,r){const n=Zn(t);if(n.scope.closed)return;const o=++n.trackRevision,{art:i}=t,{template:a}=i,s=a.$track,c=s.parentNode,l=s.nextSibling,d=document.createElement("track"),u=n.scope.child();u.add(()=>{d.onload=null,d.onerror=null});let p=!1;try{if(d.default=!0,d.kind=e,d.src=r,d.label=i.option.subtitle.name||"Artplayer",d.track.mode="hidden",d.onload=()=>{u.closed||a.$track!==d||i.emit("subtitleLoad",t.cues,t.option)},d.onerror=()=>{u.closed||a.$track!==d||(i.notice.show=new Error("Failed to load subtitle track"))},u.closed||n.trackRevision!==o)return void u.dispose();s.remove(),a.$video.appendChild(d),a.$track=d;const c=t.textTrack,l=c?i.proxy(c,"cuechange",()=>{u.closed||a.$track!==d||t.update()}):()=>{};if(u.add(()=>{i.events.remove(l)}),u.closed||n.trackRevision!==o)return u.dispose(),void d.remove();const f=n.track;n.track=u,t.destroyEvent=l,s.onload=null,s.onerror=null,p=!0;try{f?.dispose()}finally{n.ownedURL&&n.ownedURL!==r&&Jn(n)}}catch(f){if(p)throw f;if(u.dispose(),d.remove(),n.scope.closed||n.trackRevision!==o)throw f;throw a.$track=s,c&&c.insertBefore(s,l?.parentNode===c?l:null),f}}(this,t,e)}async init(t){const e=Zn(this),r=function(t){const e=t.request,r=new Gn(t.scope);return t.request=r,t.revision+=1,e?.cancel(),r}(e),{notice:n,template:{$subtitle:i}}=this.art;return r.run(async()=>{if(!this.textTrack)return null;if(o(t,_t.subtitle),!t.url)return;let a;this.option=t,this.style(t.style);try{if(!r.active)return;const n=await fetch(t.url,{signal:r.signal});if(!r.active)return;if(!n.ok)throw new Error(`Failed to load subtitle: ${n.status} ${n.statusText}`);const o=await n.arrayBuffer();if(!r.active)return;const s=function(t,e){const r=new TextDecoder(e.encoding).decode(t);switch(e.type||K(e.url)){case"srt":return{vtt:e.onVttLoad(dt(r))};case"ass":return{vtt:e.onVttLoad(pt(r))};case"vtt":return{vtt:e.onVttLoad(r)};default:return}}(o,t);if(!r.active)return;const c=void 0===s?t.url:a=ut(s.vtt);if(!r.active)return;i.innerHTML="";const l=e.trackRevision+1;if(this.url!==c&&this.createTrack("metadata",c),!r.active||e.trackRevision>l)return;return a&&(e.ownedURL=a,a=void 0),c}catch(s){if(!r.active)return;throw i.innerHTML="",n.show=s,s}finally{a&&(e.scope.closed||this.url!==a?URL.revokeObjectURL(a):e.ownedURL=a)}})}}const eo=`\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Player version:
\n
${i}
\n
\n
\n
Video url:
\n
\n
\n
\n
Video volume:
\n
\n
\n
\n
Video time:
\n
\n
\n
\n
Video duration:
\n
\n
\n
\n
Video resolution:
\n
\n x \n
\n
\n
\n
[x]
\n
\n
\n
\n `;class ro{constructor(t){this.art=t;const{option:e,constructor:r}=t;e.container instanceof Element?this.$container=e.container:(this.$container=R(e.container),X(this.$container,`No container element found by ${e.container}`)),X(P(),"The current browser does not support flex layout");const n=this.$container.tagName.toLowerCase();X("div"===n,`Unsupported container element type, only support 'div' but got '${n}'`),X(r.instances.every(t=>t.template.$container!==this.$container),"Cannot mount multiple instances on the same dom element"),this.query=this.query.bind(this),function(t,e,r){const n=v.get(e);if(n&&n!==t)throw new Error("Cannot mount multiple instances on the same dom element");const o=y(t);o.rollback=r,v.set(e,t),o.releaseContainer=()=>{v.get(e)===t&&v.delete(e)}}(t,this.$container,In(this.$container)),function(t,e,r){const n=y(t),o=n.mountingTemplate;n.mountingTemplate=e;try{r()}finally{n.mountingTemplate=o}}(t,this,()=>{this.$container.dataset.artId=String(t.id),this.init()})}static get html(){return eo}query(t){return R(t,this.$container)}init(){const{option:t}=this.art;var e;if(t.useSSR||(this.$container.innerHTML=ro.html),(e=this).$player=e.query(".art-video-player"),e.$video=e.query(".art-video"),e.$track=e.query("track"),e.$poster=e.query(".art-poster"),e.$subtitle=e.query(".art-subtitle"),e.$danmuku=e.query(".art-danmuku"),e.$bottom=e.query(".art-bottom"),e.$progress=e.query(".art-progress"),e.$controls=e.query(".art-controls"),e.$controlsLeft=e.query(".art-controls-left"),e.$controlsCenter=e.query(".art-controls-center"),e.$controlsRight=e.query(".art-controls-right"),e.$layer=e.query(".art-layers"),e.$loading=e.query(".art-loading"),e.$notice=e.query(".art-notice"),e.$noticeInner=e.query(".art-notice-inner"),e.$mask=e.query(".art-mask"),e.$state=e.query(".art-state"),e.$setting=e.query(".art-settings"),e.$info=e.query(".art-info"),e.$infoPanel=e.query(".art-info-panel"),e.$infoClose=e.query(".art-info-close"),e.$contextmenu=e.query(".art-contextmenus"),t.proxy){const e=t.proxy.call(this.art,this.art);if(w(this.art))return;!function(t){X(t instanceof HTMLVideoElement||t instanceof HTMLCanvasElement,"Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'")}(e),F(e,this.$video),e.className="art-video",this.$video=e}t.backdrop&&O(this.$player,"art-backdrop"),u&&O(this.$player,"art-mobile")}destroy(t){t?this.$container.innerHTML="":O(this.$player,"art-destroy")}}const no=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);class oo{on(t,e,r){const n=this.e||(this.e={});let o=no(n,t)?n[t]:void 0;return o||(o=[],Object.defineProperty(n,t,{value:o,enumerable:!0,configurable:!0,writable:!0})),o.push({fn:e,ctx:r}),this}once(t,e,r){const n=this,o=e;let i=!1;function a(...e){i||(i=!0,n.off(t,a),o.apply(r,e))}return a._=e,this.on(t,a,r)}emit(t,...e){const r=this.e||(this.e={}),n=(no(r,t)&&r[t]||[]).slice();for(const o of n)o.fn.apply(o.ctx,e);return this}off(t,e){const r=this.e||(this.e={}),n=no(r,t)?r[t]:void 0,o=[];if(n&&e)for(let i=0,a=n.length;i{e.destroying||e.finalizers.dispose()})}(this);try{if(this.template=new ro(this),b(this).closed)return;if(this.events=new ze(this),b(this).closed)return;if(this.storage=new Un,b(this).closed)return;if(this.icons=new Ve(this),b(this).closed)return;if(this.i18n=new We(this),b(this).closed)return;if(this.notice=new Ze(this),b(this).closed)return;if(this.player=new Ir(this),b(this).closed)return;if(this.layers=new qe(this),b(this).closed)return;if(this.controls=new ke(this),b(this).closed)return;if(this.contextmenu=new Xt(this),b(this).closed)return;if(this.subtitle=new to(this),b(this).closed)return;if(this.info=new je(this),b(this).closed)return;if(this.loading=new Ue(this),b(this).closed)return;if(this.hotkey=new Ne(this),b(this).closed)return;if(this.mask=new Xe(this),b(this).closed)return;if(this.setting=new qn(this),b(this).closed)return;if(this.plugins=new Kr(this),b(this).closed)return;if("function"===typeof e&&this.on("ready",()=>e.call(this,this)),so.DEBUG){const t=t=>console.log(`[ART.${this.id}] -> ${t}`);t(`Version@${so.version}`);for(let e=0;et(`Event@${e.type}`))}(function(t){const e=y(t);return e.rollback=void 0,!e.scope.closed})(this)&&ao.push(this)}catch(r){try{x(this,ao,!0,so.REMOVE_SRC_WHEN_DESTROY,!0)}catch(n){console.warn("Failed to clean up ArtPlayer initialization:",n)}throw r}}static get instances(){return ao}static get version(){return i}static get config(){return f}static get utils(){return ft}static get scheme(){return _t}static get Emitter(){return oo}static get validator(){return o}static get kindOf(){return o.kindOf}static get html(){return ro.html}static get option(){return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:t=>t},moreVideoAttr:{controls:!1,preload:c?"auto":"metadata"},i18n:{},icons:{},cssVar:{},customType:{},lang:"undefined"===typeof navigator?void 0:navigator?.language.toLowerCase()}}get proxy(){return this.events.proxy}get query(){return this.template.query}get video(){return this.template.$video}reset(){this.video.removeAttribute("src"),this.video.load()}destroy(t=!0){x(this,ao,t,so.REMOVE_SRC_WHEN_DESTROY)}}var co,lo;return so.STYLE=Xn,so.DEBUG=!1,so.CONTEXTMENU=!0,so.NOTICE_TIME=2e3,so.SETTING_WIDTH=250,so.SETTING_ITEM_WIDTH=200,so.SETTING_ITEM_HEIGHT=35,so.RESIZE_TIME=200,so.SCROLL_TIME=200,so.SCROLL_GAP=50,so.AUTO_PLAYBACK_MAX=10,so.AUTO_PLAYBACK_MIN=5,so.AUTO_PLAYBACK_TIMEOUT=3e3,so.RECONNECT_TIME_MAX=5,so.RECONNECT_SLEEP_TIME=1e3,so.CONTROL_HIDE_TIME=3e3,so.DBCLICK_TIME=300,so.DBCLICK_FULLSCREEN=!0,so.MOBILE_DBCLICK_PLAY=!0,so.MOBILE_CLICK_PLAY=!1,so.AUTO_ORIENTATION_TIME=200,so.INFO_LOOP_TIME=1e3,so.FAST_FORWARD_VALUE=3,so.FAST_FORWARD_TIME=1e3,so.TOUCH_MOVE_RATIO=.5,so.VOLUME_STEP=.1,so.SEEK_STEP=5,so.PLAYBACK_RATE=[.5,.75,1,1.25,1.5,2],so.ASPECT_RATIO=["default","4:3","16:9"],so.FLIP=["normal","horizontal","vertical"],so.FULLSCREEN_WEB_IN_BODY=!0,so.LOG_VERSION=!0,so.USE_RAF=!1,so.REMOVE_SRC_WHEN_DESTROY=!0,co=so,lo=Xn,p&&(window.Artplayer=co,a("artplayer-style",lo),setTimeout(()=>{co.LOG_VERSION&&console.log(`%c ArtPlayer %c ${co.version} %c https://artplayer.org`,"color: #fff; background: #5f5f5f","color: #fff; background: #4bc729","")},100)),so}); diff --git a/docs/compiled/artplayer.legacy.js b/docs/compiled/artplayer.legacy.js index 0430cccb7..3d0ba4290 100644 --- a/docs/compiled/artplayer.legacy.js +++ b/docs/compiled/artplayer.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer.js v5.4.1 + * artplayer.js v6.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. @@ -67,4 +67,4 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.Artplayer=e(),define(function(){return t.Artplayer})):(t="undefined"!==typeof globalThis?globalThis:t||self).Artplayer=e()}(this,function(){"use strict";var t=Object.defineProperty,e=Object.defineProperties,r=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable,a=(e,r,n)=>r in e?t(e,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[r]=n,s=(t,e)=>{for(var r in e||(e={}))o.call(e,r)&&a(t,r,e[r]);if(n)for(var r of n(e))i.call(e,r)&&a(t,r,e[r]);return t},l=(t,n)=>e(t,r(n)),c=(t,e,r)=>new Promise((n,o)=>{var i=t=>{try{s(r.next(t))}catch(e){o(e)}},a=t=>{try{s(r.throw(t))}catch(e){o(e)}},s=t=>t.done?n(t.value):Promise.resolve(t.value).then(i,a);s((r=r.apply(t,e)).next())});function d(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var u,p={exports:{}};var f=(u||(u=1,p.exports=function(){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}var e=Object.prototype.toString,r=function(r){if(void 0===r)return"undefined";if(null===r)return"null";var o=t(r);if("boolean"===o)return"boolean";if("string"===o)return"string";if("number"===o)return"number";if("symbol"===o)return"symbol";if("function"===o)return"GeneratorFunction"===n(r)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(r))return"array";if(function(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}(r))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(r))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(r))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(r))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(r))return"regexp";switch(n(r)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(r))return"generator";switch(o=e.call(r)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return o.slice(8,-1).toLowerCase().replace(/\s/g,"")};function n(t){return t.constructor?t.constructor.name:null}function o(t,e){var n=2{document.head.appendChild(r)}):(document.head||document.documentElement).appendChild(r)),r.textContent=e}const g=globalThis.CUSTOM_USER_AGENT,y=null!=g?g:"undefined"===typeof navigator?"":navigator.userAgent,b=/^(?:(?!chrome|android).)*safari/i.test(y),w=/iPad|iPhone|iPod/i.test(y)&&("undefined"===typeof window||!window.MSStream),x=w||y.includes("Macintosh")&&"undefined"!==typeof navigator&&navigator.maxTouchPoints>=1,k=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(y)||x,$="undefined"!==typeof window&&"undefined"!==typeof document;const E={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webkitSupportsFullscreen","webkitDisplayingFullscreen","onenterpictureinpicture","onleavepictureinpicture","disablePictureInPicture","cancelVideoFrameCallback","requestVideoFrameCallback","getVideoPlaybackQuality","requestPictureInPicture","webkitEnterFullScreen","webkitEnterFullscreen","webkitExitFullScreen","webkitExitFullscreen"]};class A extends Error{constructor(t){super("Failed to release ArtPlayer resources"),this.errors=t,this.name="ResourceCleanupError"}}class C{constructor(){this.cleanups=new Set,this.disposed=!1}get closed(){return this.disposed}add(t){let e=!0;const r=()=>{e&&(e=!1,this.cleanups.delete(r),t())};return this.closed?r():this.cleanups.add(r),r}child(){const t=new C,e=this.add(()=>{t.dispose()});return t.add(()=>{e()}),t}dispose(){if(this.closed)return;this.disposed=!0;const t=[];for(const r of Array.from(this.cleanups).reverse())try{r()}catch(e){e instanceof A?t.push(...e.errors):t.push(e)}if(t.length)throw new A(t)}}const S=new WeakMap,T=new WeakMap;function L(t){const e=S.get(t);if(!e)throw new Error("ArtPlayer lifecycle has not been initialized");return e}function P(t){return L(t).scope}function M(t){const e=L(t);return e.destroying||e.scope.closed}function z(t,e,r,n,o=!1){var i,a,s;const l=L(t);if(l.destroying||l.scope.closed)return;l.destroying=!0;const c=[],d=t=>{try{t()}catch(e){c.push(...e instanceof A?e.errors:[e])}};n&&(null==(i=t.template)?void 0:i.$video)&&d(()=>t.reset()),d(()=>l.scope.dispose()),d(()=>{var e;return null==(e=t.template||l.mountingTemplate)?void 0:e.destroy(r)});const u=e.indexOf(t);-1!==u&&e.splice(u,1),t.isDestroy=!0,o||(null==(a=l.releaseContainer)||a.call(l),l.releaseContainer=void 0),d(()=>t.emit("destroy")),d(()=>l.finalizers.dispose()),o&&l.rollback&&d(l.rollback),l.rollback=void 0,null==(s=l.releaseContainer)||s.call(l),l.releaseContainer=void 0;for(const p of c.slice(1))console.warn("Additional ArtPlayer cleanup failure:",p);if(c.length)throw c[0]}const R=new WeakMap;function O(t,e){const r=P(t).child();return R.set(e,r),r}function D(t){const e=R.get(t);if(!e)throw new Error("ArtPlayer component has not been registered");return e}function I(t){var e;null==(e=R.get(t))||e.dispose()}function N(t,e,r,n){const o=D(e);if(o.closed)return;const i=(...t)=>{if(!o.closed)return n(...t)};t.on(r,i),o.add(()=>{t.off(r,i)})}function _(t,e){return{on:(r,n)=>{N(t,e,r,n)},proxy:(r,n,o)=>function(t,e,r,n,o){const i=D(e);if(i.closed)return()=>{};const a=t.events.proxy(r,n,t=>{if(!i.closed)return o(t)});return i.add(()=>{t.events.remove(a)})}(t,e,r,n,o)}}function W(t){var e;if(t.composedPath)return t.composedPath();const r=[];let n=t.target;for(;n;)r.push(n),n=null!=(e=n.parentNode)?e:null;return"undefined"===typeof window||r.includes(window)||r.push(window),r}function F(t,e){return W(t).includes(e)}function V(){const t=document.createElement("div");return t.style.display="flex","flex"===t.style.display}function Y(t){return t.getBoundingClientRect()}function B(){const t=document.createElement("div");t.style.cssText="position:fixed;top:env(safe-area-inset-top,0px);right:env(safe-area-inset-right,0px);bottom:env(safe-area-inset-bottom,0px);left:env(safe-area-inset-left,0px);pointer-events:none;visibility:hidden;";try{document.body.appendChild(t);const e=getComputedStyle(t);return{top:Number.parseFloat(e.top)||0,right:Number.parseFloat(e.right)||0,bottom:Number.parseFloat(e.bottom)||0,left:Number.parseFloat(e.left)||0}}finally{t.remove()}}function H(t,e=document){return e.querySelector(t)}function j(t,e){return t.classList.add(e)}function q(t,e){return t.classList.remove(e)}function U(t,e){return t.classList.contains(e)}function X(t,e){return e instanceof Element?t.appendChild(e):t.insertAdjacentHTML("beforeend",String(e)),t.lastElementChild||t.lastChild}function G(t){return Array.from(t.parentElement.children).filter(e=>e!==t)}function K(t,e){G(t).forEach(t=>q(t,e)),j(t,e)}function Z(t,e){return e.parentNode.replaceChild(t,e),t}function J(t){return document.createElement(t)}function Q(t,e,r="top"){k||(t.setAttribute("aria-label",e),j(t,"hint--rounded"),j(t,`hint--${r}`))}function tt(t="",e=""){const r=J("i");return j(r,"art-icon"),j(r,`art-icon-${t}`),X(r,e),r}function et(t,e,r){return t.style[e]=r,t}function rt(t,e){for(const r in e)et(t,r,e[r]);return t}function nt(t,e,r){return new Promise((n,o)=>{const i=r?r.child():new C;let a=!1,s=()=>{};function l(t){if(!a){a=!0;try{i.dispose()}catch(e){console.warn("Additional image cleanup failure:",e)}try{s()}catch(e){console.warn("Additional image cleanup failure:",e)}o(t)}}function c(t){if(!a&&!i.closed){a=!0;try{i.dispose(),n(t)}catch(e){try{s()}finally{o(e)}}}}if(i.add(()=>{if(!a){a=!0;try{s()}finally{n(void 0)}}}),!i.closed)try{const n=new Image;d(n,()=>{if(!e||1===e)return void c(n);const t=document.createElement("canvas"),o=t.getContext("2d");if(t.width=n.width*e,t.height=n.height*e,!o)throw new TypeError("Canvas 2D context is unavailable");a||i.closed||(o.drawImage(n,0,0,t.width,t.height),a||i.closed||t.toBlob(t=>{if(!a&&!i.closed)try{if(!t)throw new Error("Unable to encode thumbnail image");const e=URL.createObjectURL(t);let n=!1;const o=()=>{n||(n=!0,URL.revokeObjectURL(e))};if(s=r?r.add(o):o,a||i.closed)return void s();const l=new Image;d(l,()=>c(l)),i.closed||(l.src=e)}catch(e){l(e)}}))}),i.closed||(n.src=t)}catch(u){l(u)}function d(e,r){e.onload=()=>{if(!a&&!i.closed)try{r()}catch(u){l(u)}},e.onerror=()=>l(new Error(`Image load failed: ${t}`)),i.add(()=>{e.onload=null,e.onerror=null,a||e.removeAttribute("src")})}})}class ot extends Error{constructor(t,e){super(t),"captureStackTrace"in Error&&"function"===typeof Error.captureStackTrace&&Error.captureStackTrace(this,e||this.constructor),this.name="ArtPlayerError"}}function it(t,e){if(!t)throw new ot(e);return t}function at(t){const e=t;return e&&"function"===typeof e.catch?e.catch(()=>{}):t}function st(t){const e=t.search(/[?#]/),r=(e<0?t:t.slice(0,e)).trim().toLowerCase();return r.slice(r.lastIndexOf(".")+1)}function lt(t,e){const r=document.createElement("a");r.style.display="none",r.href=t,r.download=e,document.body.appendChild(r);try{r.click()}finally{r.remove()}}function ct(t,e,r){return Math.max(Math.min(t,Math.max(e,r)),Math.min(e,r))}function dt(t){return t.charAt(0).toUpperCase()+t.slice(1)}function ut(t){if(!t)return"00:00";const e=Math.floor(t/3600),r=Math.floor((t-3600*e)/60),n=Math.floor(t-3600*e-60*r);return(e>0?[e,r,n]:[r,n]).map(t=>t<10?`0${t}`:String(t)).join(":")}const pt={"&":"&","<":"<",">":">","'":"'",'"':"""},ft={"&":"&","<":"<",">":">","'":"'",""":'"'},ht=/(&|<|>|'|")/g;function mt(t){return t.replace(/[&<>'"]/g,t=>pt[t]||t)}const vt=Object.defineProperty,{hasOwnProperty:gt}=Object.prototype;function yt(t,e){return gt.call(t,e)}function bt(t,e){return Object.getOwnPropertyDescriptor(t,e)}function wt(...t){const e=t=>!!t&&"object"===typeof t&&!Array.isArray(t);return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=t[n],i=r[n];let a;a=Array.isArray(o)&&Array.isArray(i)?o.concat(...i):e(o)&&e(i)?wt(o,i):i,vt(t,n,{value:a,enumerable:!0,configurable:!0,writable:!0})}),t),{})}function xt(t){return"WEBVTT \r\n\r\n".concat((e=t,e.replace(/(\d\d:\d\d:\d\d)[,.](\d+)/g,(t,e,r)=>{let n=r.slice(0,3);return 1===r.length&&(n=`${r}00`),2===r.length&&(n=`${r}0`),`${e},${n}`})).replace(/\{\\([ibu])\}/g,"").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").replace(/\{[\s\S]*?\}/g,"").concat("\r\n\r\n"));var e}function kt(t){return URL.createObjectURL(new Blob([t],{type:"text/vtt"}))}function $t(t){const e=new RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i");function r(t=""){return t.split(/[:.]/).map((t,e,r)=>{if(e===r.length-1){if(1===t.length)return`.${t}00`;if(2===t.length)return`.${t}0`}else if(1===t.length)return(0===e?"0":":0")+t;return 0===e?t:e===r.length-1?`.${t}`:`:${t}`}).join("")}return`WEBVTT\n\n${t.split(/\r?\n/).map(t=>{const n=t.match(e);if(!n)return null;const[,o="",i="",,,a=""]=n;return{start:r(o.trim()),end:r(i.trim()),text:a.replace(/\{[\s\S]*?\}/g,"").replace(/(\\N)/g,"\n").trim().split(/\r?\n/).map(t=>t.trim()).join("\n")}}).filter(t=>t).map((t,e)=>t?`${e+1}\n${t.start} --\x3e ${t.end}\n${t.text}`:"").filter(t=>t.trim()).join("\n\n")}`}const Et=Object.freeze(Object.defineProperty({__proto__:null,ArtPlayerError:ot,addClass:j,append:X,assToVtt:$t,capitalize:dt,clamp:ct,createElement:J,debounce:function(t,e){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>(r=void 0,t.apply(this,n)),e)}},def:vt,download:lt,errorHandle:it,escape:mt,get:bt,getComposedPath:W,getExt:st,getIcon:tt,getRect:Y,getSafeAreaInsets:B,getStyle:function(t,e,r=!0){const n=window.getComputedStyle(t,null).getPropertyValue(e);return r?Number.parseFloat(n):n},has:yt,hasClass:U,includeFromEvent:F,inverseClass:K,isBrowser:$,isIOS:w,isIOS13:x,isInViewport:function(t,e=0){const r=t.getBoundingClientRect(),n=window.innerHeight||document.documentElement.clientHeight,o=window.innerWidth||document.documentElement.clientWidth,i=r.top-e<=n&&r.top+r.height+e>=0,a=r.left-e<=o+e&&r.left+r.width+e>=0;return i&&a},isMobile:k,isSafari:b,loadImg:function(t,e){return nt(t,e,void 0)},mergeDeep:wt,query:H,queryAll:function(t,e=document){return Array.from(e.querySelectorAll(t))},remove:function(t){return t.parentNode.removeChild(t)},removeClass:q,replaceElement:Z,secondToTime:ut,setStyle:et,setStyleText:v,setStyles:rt,siblings:G,silencePromise:at,sleep:function(t=0){return new Promise(e=>setTimeout(e,t))},srtToVtt:xt,supportsFlex:V,throttle:function(t,e){let r=!1;return function(...n){r||(t.apply(this,n),r=!0,setTimeout(()=>{r=!1},e))}},tooltip:Q,unescape:function(t){return t.replace(ht,t=>ft[t]||t)},userAgent:y,vttToBlob:kt},Symbol.toStringTag,{value:"Module"}));function At(){}function Ct(t,e,r,n,o={}){const{capture:i=!1,once:a=!1,signal:s}=o;if(t.closed||(null==s?void 0:s.aborted))return At;let l=At;function c(e){a&&l(),t.closed||("function"===typeof n?n.call(this,e):n.handleEvent(e))}return e.addEventListener(r,c,o),l=t.add(()=>{try{e.removeEventListener(r,c,i)}finally{null==s||s.removeEventListener("abort",l)}}),null==s||s.addEventListener("abort",l,{once:!0}),l}function St(t,e,r){if(t.closed)return At;let n=!0,o=At;const i=setTimeout(()=>{n&&(o(),t.closed||e())},r);return o=t.add(()=>{n=!1,clearTimeout(i)}),o}function Tt(t,e=0){return t.closed?Promise.resolve(!1):new Promise(r=>{let n=!1,o=At;const i=setTimeout(()=>{n=!0,o(),r(!0)},e);o=t.add(()=>{clearTimeout(i),n||r(!1)})})}const Lt=new WeakSet;function Pt(t){Lt.add(t),t.preventDefault()}function Mt(t){return!t.altKey&&!t.ctrlKey&&!t.metaKey&&!t.isComposing&&229!==t.keyCode}function zt(t,e,r=()=>e.click(),n=()=>!0){if(t.closed)return;e.hasAttribute("role")||e.setAttribute("role","button"),e.hasAttribute("tabindex")||(e.tabIndex=0);let o=!1;const i=()=>n()&&"true"!==e.getAttribute("aria-disabled")&&!e.hasAttribute("disabled"),a=t=>(t.composedPath()[0]||t.target)===e;Ct(t,e,"keydown",t=>{const e=t;a(e)&&Mt(e)&&!e.defaultPrevented&&("Enter"===e.key?(Pt(e),!e.repeat&&i()&&r()):" "===e.key&&(Pt(e),!e.repeat&&i()&&(o=!0)))}),Ct(t,e,"keyup",t=>{const n=t;if(" "!==n.key)return;const s=o;o=!1,s&&a(n)&&Mt(n)&&!n.defaultPrevented&&i()&&e.ownerDocument.activeElement===e&&(Pt(n),r())}),Ct(t,e,"blur",()=>{o=!1}),t.add(()=>{o=!1})}function Rt(t,e){return X(t,e)}function Ot(t,e){return e.querySelector(t)}const Dt=new WeakSet;function It(t){const e=t.template.$player;!M(t)&&e.isConnected&&(e.hasAttribute("tabindex")||(e.setAttribute("tabindex","-1"),Dt.has(e)||(Dt.add(e),P(t).add(()=>{Dt.delete(e),"-1"===e.getAttribute("tabindex")&&e.removeAttribute("tabindex")}))),e.focus({preventScroll:!0}))}const Nt=new WeakSet,_t="[tabindex],button,input,select,textarea,a[href],[contenteditable]";function Wt(t){return[t,...t.querySelectorAll(_t)].find(t=>{var e;if(!t.matches(_t)||t.tabIndex<0||t.matches(":disabled")||t.closest("[inert]")||"true"===t.getAttribute("aria-disabled")||!t.getClientRects().length)return!1;const r=null==(e=t.ownerDocument.defaultView)?void 0:e.getComputedStyle(t);return"hidden"!==(null==r?void 0:r.visibility)&&"collapse"!==(null==r?void 0:r.visibility)})}function Ft(t,e,r){var n;const o=null==e?void 0:e.ownerDocument,i=null==o?void 0:o.activeElement;if(!["control","contextmenu"].includes(null!=(n=t.name)?n:"")||Nt.has(t)||!e||!o||!i||!e.contains(i))return()=>{};const a=t.art.template.$player,s=Array.from(a.querySelectorAll(`.art-${t.name}`)),l=s.indexOf(e),c=[...s.slice(l+1),...s.slice(0,l).reverse()];return Nt.add(t),()=>{var e;if(Nt.delete(t),M(t.art)||!a.isConnected||o.activeElement!==o.body)return;const n=r?null==(e=t.cache.get(r))?void 0:e.$ref:void 0;for(const t of[...n?[n]:[],...c]){if(!a.contains(t))continue;const e=Wt(t);if(e)return void e.focus({preventScroll:!0})}It(t.art)}}const Vt="array",Yt="boolean",Bt="string",Ht="number",jt="object",qt="function";function Ut(t,e,r){return it(e===Bt||e===Ht||t instanceof Element,`${r.join(".")} require '${Bt}' or 'Element' type`)}const Xt={html:Ut,disable:`?${Yt}`,name:`?${Bt}`,index:`?${Ht}`,style:`?${jt}`,click:`?${qt}`,mounted:`?${qt}`,tooltip:`?${Bt}|${Ht}`,width:`?${Ht}`,selector:`?${Vt}`,onSelect:`?${qt}`,switch:`?${Yt}`,onSwitch:`?${qt}`,range:`?${Vt}`,onRange:`?${qt}`,onChange:`?${qt}`},Gt={id:Bt,container:Ut,url:Bt,poster:Bt,type:Bt,theme:Bt,lang:Bt,volume:Ht,isLive:Yt,muted:Yt,autoplay:Yt,autoSize:Yt,autoMini:Yt,loop:Yt,flip:Yt,playbackRate:Yt,aspectRatio:Yt,screenshot:Yt,setting:Yt,hotkey:Yt,pip:Yt,mutex:Yt,backdrop:Yt,fullscreen:Yt,fullscreenWeb:Yt,subtitleOffset:Yt,miniProgressBar:Yt,useSSR:Yt,playsInline:Yt,lock:Yt,gesture:Yt,fastForward:Yt,autoPlayback:Yt,autoOrientation:Yt,airplay:Yt,proxy:`?${qt}`,plugins:[qt],layers:[Xt],contextmenu:[Xt],settings:[Xt],controls:[l(s({},Xt),{position:(t,e,r)=>{const n=["top","left","right"];return it("string"===typeof t&&n.includes(t),`${r.join(".")} only accept ${n.toString()} as parameters`)}})],quality:[{default:`?${Yt}`,html:Bt,url:Bt}],highlight:[{time:Ht,text:Bt}],thumbnails:{url:Bt,number:Ht,column:Ht,width:Ht,height:Ht,scale:Ht},subtitle:{url:Bt,name:Bt,type:Bt,style:jt,escape:Yt,encoding:Bt,onVttLoad:qt},moreVideoAttr:jt,i18n:jt,icons:jt,cssVar:jt,customType:jt},Kt=new WeakSet;class Zt{constructor(t){this.id=0,this.art=t,this.cache=new Map,this.add=this.add.bind(this),this.remove=this.remove.bind(this),this.update=this.update.bind(this)}get show(){return U(this.art.template.$player,`art-${this.name}-show`)}set show(t){const{$player:e}=this.art.template,r=`art-${this.name}-show`;t?j(e,r):q(e,r),this.art.emit(this.name,t)}toggle(){this.show=!this.show}add(t){var e;if(M(this.art))return;const r="function"===typeof t?t(this.art):t;if(M(this.art))return;if(r.html=r.html||"",h(r,Xt),!this.$parent||!this.name||r.disable)return;const n=r.name||`${this.name}${this.id}`,o=this.cache;it(!o.has(n),`Can't add an existing [${n}] to the [${this.name}]`),this.id+=1;const i=document.createElement("div"),a=O(this.art,i),s=[],l=Object.getOwnPropertyDescriptor(this,n);let c=!1;a.add(()=>{for(const t of s)this.art.events.remove(t)});try{if(a.closed)return;if(function(t,e,r,n,o,i){j(t,`art-${r}`),j(t,`art-${r}-${n}`);const a=Array.from(e.children);t.dataset.index=String(i.index||o);const s=a.find(e=>Number(e.dataset.index)>=Number(t.dataset.index));s?s.insertAdjacentElement("beforebegin",t):X(e,t),i.html&&X(t,i.html),i.style&&rt(t,i.style),i.tooltip&&Q(t,i.tooltip)}(i,this.$parent,this.name,n,this.id,r),a.closed)return;if(r.click){("control"===this.name&&!r.selector||"contextmenu"===this.name&&!i.querySelector("[data-value]"))&&!i.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")&&zt(a,i);const t=this.art.events.proxy(i,"click",t=>{a.closed||(t.preventDefault(),r.click.call(this.art,this,t))});s.push(t)}if(r.selector&&["left","right"].includes(r.position)&&this.selector(r,i,s),a.closed)return;return function(t,e,r){const n=t;"__proto__"===e?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r}(this,n,i),c=!0,o.set(n,{$ref:i,events:s,option:r}),r.mounted&&r.mounted.call(this.art,i),i}catch(d){try{I(i)}catch(u){console.warn("ArtPlayer component cleanup failed:",u)}throw(null==(e=o.get(n))?void 0:e.$ref)===i&&o.delete(n),c&&this[n]===i&&(l?Object.defineProperty(this,n,l):delete this[n]),i.remove(),d}}remove(t){it(this.cache.has(t),`Can't find [${t}] from the [${this.name}]`);const e=this.cache.get(t);if(Kt.has(e))return;const r=Ft(this,e.$ref);Kt.add(e);try{e.option.beforeUnmount&&e.option.beforeUnmount.call(this.art,e.$ref);try{I(e.$ref)}finally{this.cache.get(t)===e&&(this.cache.delete(t),delete this[t]),e.$ref.remove()}}finally{Kt.delete(e),r()}}update(t){var e;const r=Ft(this,null==(e=this.cache.get(t.name))?void 0:e.$ref,t.name);try{if(this.cache.has(t.name)){const e=this.cache.get(t.name);t=Object.assign(e.option,t),this.remove(t.name)}return this.add(t)}finally{r()}}}function Jt(t){for(const e of t.querySelectorAll("[data-value]"))e.setAttribute("aria-pressed",String(e.classList.contains("art-current")))}function Qt(t,e){var r,n;const o=D(t);if(!o.closed){t.setAttribute("role","group"),t.setAttribute("aria-label",e);for(const i of t.querySelectorAll("[data-value]"))zt(o,i),i.setAttribute("aria-label",`${e}: ${null!=(n=null==(r=i.textContent)?void 0:r.trim())?n:""}`);Jt(t)}}const te=new WeakMap;function ee(t,e){e?te.set(t,e):te.delete(t)}function re(t){const e=new Set;let r=t;for(;!e.has(r);){e.add(r);let t,n=r;for(;n&&!t;)t=te.get(n),n=n.parentElement;if(!t)return r;r=t}return t}function ne(t){const e=t;return!!e&&(["INPUT","TEXTAREA","SELECT"].includes(e.tagName)||e.isContentEditable)}function oe(t){var e;const r=null==(e=t.ownerDocument.defaultView)?void 0:e.getComputedStyle(t).visibility;return t.isConnected&&!t.matches(":disabled")&&!t.closest("[inert]")&&"true"!==t.getAttribute("aria-disabled")&&t.getClientRects().length>0&&"hidden"!==r&&"collapse"!==r}class ie extends Zt{constructor(t){super(t),this.name="contextmenu",this.$parent=t.template.$contextmenu,O(t,this.$parent),k||this.init()}init(){const{option:t,template:{$player:e,$contextmenu:r}}=this.art,{on:n,proxy:o}=_(this.art,r);t.playbackRate&&this.add(function(t){return e=>{const{i18n:r,constructor:{PLAYBACK_RATE:n}}=e,o=n.map(t=>`${1===t?r.get("Normal"):t.toFixed(1)}`).join(""),i=r.get("Play Speed");return l(s({},t),{html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.playbackRate=Number(n),t.show=!1)},mounted:t=>{const{on:r}=_(e,t),n=H('[data-value="1"]',t);n&&K(n,"art-current"),Qt(t,i),r("video:ratechange",()=>{const r=Array.from(t.querySelectorAll("span")).find(t=>Number(t.dataset.value)===e.playbackRate);r&&(K(r,"art-current"),Jt(t))})}})}}({name:"playbackRate",index:10})),t.aspectRatio&&this.add(function(t){return e=>{const{i18n:r,constructor:{ASPECT_RATIO:n}}=e,o=n.map(t=>`${"default"===t?r.get("Default"):t}`).join(""),i=r.get("Aspect Ratio");return l(s({},t),{html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.aspectRatio=n,t.show=!1)},mounted:t=>{const{on:r}=_(e,t),n=H('[data-value="default"]',t);n&&K(n,"art-current"),Qt(t,i),r("aspectRatio",e=>{const r=Array.from(t.querySelectorAll("span")).find(t=>t.dataset.value===e);r&&(K(r,"art-current"),Jt(t))})}})}}({name:"aspectRatio",index:20})),t.flip&&this.add(function(t){return e=>{const{i18n:r,constructor:{FLIP:n}}=e,o=n.map(t=>`${r.get(dt(t))}`).join(""),i=r.get("Video Flip");return l(s({},t),{html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.flip=n.toLowerCase(),t.show=!1)},mounted:t=>{const{on:r}=_(e,t),n=H('[data-value="normal"]',t);n&&K(n,"art-current"),Qt(t,i),r("flip",e=>{const r=Array.from(t.querySelectorAll("span")).find(t=>t.dataset.value===e);r&&(K(r,"art-current"),Jt(t))})}})}}({name:"flip",index:30})),this.add(function(t){return e=>l(s({},t),{html:e.i18n.get("Video Info"),click:t=>{e.info.show=!0,t.show=!1}})}({name:"info",index:40})),this.add(function(t){return l(s({},t),{html:`ArtPlayer ${m}`})}({name:"version",index:50})),this.add(function(t){return e=>l(s({},t),{html:e.i18n.get("Close"),click:t=>{t.show=!1}})}({name:"close",index:60}));for(let s=0;s{this.show=!0,i.closed||M(this.art)||!this.show||function(t,e,r){const{$player:n,$contextmenu:o}=t.template,{height:i,width:a,left:s,top:l}=Y(n),{height:c,width:d}=Y(o);let u=e-s,p=r-l;e+d>s+a&&(u=a-d),r+c>l+i&&(p=i-c),M(t)||rt(o,{top:`${p}px`,left:`${u}px`})}(this.art,t,e)},c=function(t,e){const{art:r}=t,{$player:n,$contextmenu:o}=r.template,i=D(o),a=()=>!i.closed&&!M(r);let s,l=!1,c="",d=0;const u=()=>{const t=n.ownerDocument.activeElement;s=t&&n.contains(t)?re(t):n,ee(o,s)},p=()=>Array.from(o.querySelectorAll("[tabindex],button,input,select,textarea,a[href],[contenteditable]")).filter(t=>t.tabIndex>=0&&oe(t)),f=r.i18n.get("Context Menu");if(!a())return{pointer:()=>!1};o.setAttribute("role","group"),o.setAttribute("aria-label",f);const h=t=>{if(!a())return;if(t)return void(o.contains(n.ownerDocument.activeElement)||u());const e=n.ownerDocument.activeElement,i=o.contains(e)||l&&e===n.ownerDocument.body,d=s;s=void 0,l=!1,c="",ee(o),i&&(d&&n.contains(d)&&oe(d)&&d.focus({preventScroll:!0}),(n.ownerDocument.activeElement===n.ownerDocument.body||o.contains(n.ownerDocument.activeElement))&&It(r))};r.on("contextmenu",h),i.add(()=>{r.off("contextmenu",h),ee(o)}),Ct(i,o,"focusin",()=>{l=!0});let m=!1;return Ct(i,o,"focusout",e=>{o.contains(e.relatedTarget)||m||(m=!0,St(i,()=>{m=!1,a()&&t.show&&!o.contains(n.ownerDocument.activeElement)&&(t.show=!1)},0))}),Ct(i,n,"keydown",n=>{var i;const s=n;if(!a()||!Mt(s)||s.defaultPrevented)return;if(("ContextMenu"===s.key||"F10"===s.key&&s.shiftKey)&&r.constructor.CONTEXTMENU&&!ne(s.target)){Pt(s),u();const r=s.target.getBoundingClientRect();return e(r.left,r.bottom),void(a()&&t.show&&(null==(i=p()[0])||i.focus({preventScroll:!0})))}if(!t.show||!o.contains(s.target))return;if("Escape"===s.key)return Pt(s),void(t.show=!1);if("Tab"===s.key)return void(t.show=!1);if(ne(s.target))return;const l=p(),f=l.indexOf(s.target);let h;if("ArrowDown"===s.key||"ArrowRight"===s.key)h=l[(f+1)%l.length];else if("ArrowUp"===s.key||"ArrowLeft"===s.key)h=l[(f+l.length-1)%l.length];else if("Home"===s.key)h=l[0];else if("End"===s.key)h=l[l.length-1];else{if(1!==s.key.length||" "===s.key)return;{const t=s.key.toLowerCase();c=Date.now()-d>700?t:c+t,d=Date.now();const e=[...c].every(e=>e===t)?t:c;h=[...l.slice(f+1),...l.slice(0,f+1)].find(t=>(t.getAttribute("aria-label")||t.textContent||"").trim().toLowerCase().startsWith(e))}}Pt(s),null==h||h.focus({preventScroll:!0})}),{pointer:t=>!(!a()||!r.constructor.CONTEXTMENU||ne(t.target))&&(u(),!0)}}(this,a);o(e,"contextmenu",t=>{c.pointer(t)&&(t.preventDefault(),a(t.clientX,t.clientY))}),o(e,"click",t=>{F(t,r)||(this.show=!1)}),n("blur",()=>{this.show=!1})}}const ae=new WeakMap,se=new WeakMap,le=new WeakMap;function ce(t,e){const r=ae.get(t);(null==r?void 0:r.active())&&void 0!==r.resumePlaying&&(!e&&r.internalPause?r.internalPause=!1:(r.resumePlaying=e,e||r.pauseRevision++))}function de(t){return le.get(t)||P(t)}function ue(t){const e=ae.get(t),r=le.get(t);return()=>ae.get(t)===e&&(!e||e.active())&&le.get(t)===r&&(!r||!r.closed)}function pe(t){const e=le.get(t),r=P(t).child(),n=r.child();le.set(t,r),r.add(()=>{le.get(t)===r&&le.delete(t)});const o={scope:n,assigned:!1,acceptingEvents:!1,pauseRevision:0,active:()=>!M(t)&&!n.closed&&ae.get(t)===o};return ae.set(t,o),n.add(()=>{ae.get(t)===o&&ae.delete(t),o.onAssigned=void 0,o.onError=void 0}),null==e||e.dispose(),o}function fe(t){t.assigned=!0;const e=t.onAssigned;t.onAssigned=void 0,t.active()&&(null==e||e())}function he(t,e,r){se.set(t,e),e.acceptingEvents=!0;try{t.url=r}finally{se.get(t)===e&&(se.delete(t),fe(e))}}function me(t,e){t.active()&&(t.onError?t.onError(e):console.warn("Failed to initialize ArtPlayer source:",e),t.scope.dispose())}function ve(t,e){const{$progress:r}=t.template,{left:n}=Y(r),o=ct((k?e.touches[0].clientX:e.clientX)-n,0,r.clientWidth),i=o/r.clientWidth*t.duration;return{second:i,time:ut(i),width:o,percentage:ct(o/r.clientWidth,0,1)}}function ge(t,e,r=()=>!0){if(r())if(t.isRotate){const n=(e.touches[0].clientY-t.top)/t.height,o=n*t.duration;if(!r())return;t.emit("setBar","played",n,e),r()&&(t.seek=o)}else{const{second:n,percentage:o}=ve(t,e);if(!r())return;t.emit("setBar","played",o,e),r()&&(t.seek=n)}}const ye=new Map([["ArrowRight",1],["ArrowUp",1],["ArrowLeft",-1],["ArrowDown",-1],["PageUp",10],["PageDown",-10]]);function be(t,e,r){t.getAttribute(e)!==r&&t.setAttribute(e,r)}function we(t,e,r,n,o,i="horizontal"){const a=t=>[t.min,t.max,t.value,t.step].every(Number.isFinite)&&t.max>t.min&&t.step>0,s=(t,e)=>Math.min(e.max,Math.max(e.min,t)),l=()=>{if(t.closed)return;const r=n(),o=a(r),i=o?s(r.value,r):0;be(e,"aria-disabled",String(!o)),be(e,"aria-valuemin",String(o?r.min:0)),be(e,"aria-valuemax",String(o?r.max:0)),be(e,"aria-valuenow",String(i)),be(e,"aria-valuetext",r.text(i))};return t.closed||(e.setAttribute("role","slider"),e.tabIndex=0,e.setAttribute("aria-label",r),e.setAttribute("aria-orientation",i),Ct(t,e,"keydown",t=>{const r=t;if((r.composedPath()[0]||r.target)!==e||!Mt(r)||r.defaultPrevented)return;const i=ye.get(r.key);if(void 0===i&&"Home"!==r.key&&"End"!==r.key)return;Pt(r);const c=n();if(!a(c))return void l();const d="Home"===r.key?c.min:"End"===r.key?c.max:s(c.value,c)+i*c.step;o(s(d,c)),l()}),l()),l}const xe=new WeakMap;function ke(t){return xe.get(t)||0}function $e(t,e,r){let n,o=!1,i=!1,a=!1,s=ke(t);const l=()=>a||ke(t)!==s,c=()=>{var e,r;return!!(null==(r=null==(e=t.template)?void 0:e.$video)?void 0:r.seeking)};return{restore(i=()=>{t.currentTime=e}){if(!r()||l())return;const d=ke(t);i(),s=ke(t),s>d+1&&(a=!0),r()&&(n=t.currentTime,r()&&!l()&&(o=c()))},manual(){a=!0},ready(){if(!r()||c())return!1;const e=void 0!==n&&Math.abs(t.currentTime-n)>.05;if(!l()&&o&&!i&&void 0!==n&&e){if(i=!0,!r())return!1;t.currentTime=n}return r()&&!c()}}}function Ee(t,e){const{icons:r,option:n}=t,{$player:o}=t.template,i=D(e),{on:a}=_(t,e);let s=()=>{};const l=Ot(".art-progress-hover",e),c=Ot(".art-progress-loaded",e),d=Ot(".art-progress-played",e),u=Ot(".art-progress-highlight",e),p=Ot(".art-progress-indicator",e),f=Ot(".art-progress-tip",e);function h(r,n){const{width:o,time:i}=n||ve(t,r);f.textContent=i||"00:00";const a=f.clientWidth;o<=a/2?et(f,"left",0):o>e.clientWidth-a/2?et(f,"left",e.clientWidth-a+"px"):et(f,"left",o-a/2+"px")}r.indicator?X(p,r.indicator):et(p,"backgroundColor","var(--art-theme)"),a("setBar",function(r,n,a){const m="played"===r&&a&&k;if("loaded"===r&&et(c,"width",100*n+"%"),"hover"===r&&(et(l,"width",100*n+"%"),F(a,u)?function(r){const{width:n}=ve(t,r),o=r.target instanceof HTMLElement?r.target.dataset.text:void 0;f.textContent=null!=o?o:"";const i=f.clientWidth;n<=i/2?et(f,"left",0):n>e.clientWidth-i/2?et(f,"left",e.clientWidth-i+"px"):et(f,"left",n-i/2+"px")}(a):h(a),0===n?q(o,"art-progress-hover"):j(o,"art-progress-hover")),"played"===r&&(et(d,"width",100*n+"%"),et(p,"left",100*n+"%")),m){j(o,"art-progress-hover");h(a,{width:e.clientWidth*n,time:ut(n*t.duration)}),s(),s=St(i,()=>{q(o,"art-progress-hover")},500)}}),a("video:loadedmetadata",function(){u.textContent="";for(let e=0;e{t.emit("setBar","played",t.played),t.emit("setBar","loaded",t.loaded)}):(a("video:timeupdate",()=>{t.emit("setBar","played",t.played)}),a("video:progress",()=>{t.emit("setBar","loaded",t.loaded)}),a("video:ended",()=>{t.emit("setBar","played",1)})),t.emit("setBar","loaded",t.loaded||0)}function Ae(t){return e=>l(s({},t),{html:'\n
\n
\n
\n
\n
\n
\n
00:00
\n
\n ',mounted:t=>{Ee(e,t),function(t,e){const{$progress:r}=t.template,n=e.querySelector(".art-progress-indicator"),{on:o,proxy:i}=_(t,e),a=D(e);let s=0;const l=()=>{const e=ue(t);return()=>!a.closed&&!M(t)&&e()},c=()=>{const t=++s,e=l();return()=>t===s&&e()};if(!k){let e;i(r,"click",e=>{e.target!==n&&ge(t,e,c())}),i(r,"mousemove",e=>{const r=l(),{percentage:n}=ve(t,e);r()&&t.emit("setBar","hover",n,e)}),i(r,"mouseleave",e=>{t.emit("setBar","hover",0,e)}),i(r,"mousedown",t=>{e=0===t.button?c():void 0}),o("document:mousemove",r=>{const n=e;if(null==n?void 0:n()){const{second:o,percentage:i}=ve(t,r);if(!n()||e!==n)return;t.emit("setBar","played",i,r),n()&&e===n&&(t.seek=o)}else e=void 0}),o("document:mouseup",()=>{e=void 0})}}(e,t),function(t,e){const r=D(e),{on:n}=_(t,e);let o,i=0;const a=we(r,e,t.i18n.get("Progress"),()=>({min:0,max:t.duration,value:t.currentTime,step:t.constructor.SEEK_STEP,text:e=>`${ut(e)} / ${ut(Number.isFinite(t.duration)&&t.duration>0?t.duration:0)}`}),e=>{const n=++i;null==o||o.dispose();const s=r.child();o=s;const l=de(t).add(()=>{s.dispose()});s.add(()=>{l()}),s.add(()=>{o===s&&(o=void 0)});const c=ue(t),d=()=>n===i&&!s.closed&&!M(t)&&c(),u=$e(t,e,d),p=()=>{d()?u.ready()&&(s.dispose(),a()):s.dispose()};for(const r of["video:seeked","video:ended"])t.on(r,p),s.add(()=>{t.off(r,p)});try{t.emit("setBar","played",e/t.duration),d()&&u.restore(()=>{t.seek=e}),p()}catch(f){throw s.dispose(),f}});n("video:loadedmetadata",a),n("video:durationchange",a),n("video:emptied",a),n("video:timeupdate",a),n("video:seeking",a),n("video:seeked",a),n("video:ended",a)}(e,t)}})}function Ce(t){const{option:e}=t.art;e.isLive||t.add(Ae({name:"progress",position:"top",index:10})),t.add({name:"thumbnails",position:"top",index:20}),t.add(function(t){return e=>l(s({},t),{mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e,a=Rt(t,o.play),s=Rt(t,o.pause);function l(){t.setAttribute("aria-label",i.get("Play")),et(a,"display","flex"),et(s,"display","none")}function c(){t.setAttribute("aria-label",i.get("Pause")),et(a,"display","none"),et(s,"display","flex")}zt(D(t),t,()=>(e.playing?s:a).click()),Q(a,i.get("Play")),Q(s,i.get("Pause")),n(a,"click",()=>{at(e.play())}),n(s,"click",()=>{e.pause()}),e.playing?c():l(),r("video:playing",()=>{c()}),r("video:pause",()=>{l()})}})}({name:"playAndPause",position:"left",index:10})),t.add(function(t){return e=>l(s({},t),{mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e,a=Rt(t,o.volume),s=Rt(t,o.volumeClose);for(const e of[a,s])zt(D(t),e),e.setAttribute("aria-label",i.get("Mute"));const l=Rt(t,'
'),c=Rt(l,'
'),d=Rt(c,'
'),u=Rt(c,'
'),p=Rt(u,'
'),f=Rt(p,'
'),h=Rt(u,'
'),m=D(t);let v=0;const g=we(m,u,i.get("Volume"),()=>({min:0,max:100,value:e.muted?0:100*e.volume,step:100*e.constructor.VOLUME_STEP,text:t=>`${Math.round(t)}%`}),t=>{const r=++v;e.muted=!1,r!==v||m.closed||M(e)||(e.volume=t/100)},"vertical");function y(t){const{top:e,height:r}=Y(u);return 1-(t.clientY-e)/r}function b(){g();const r=t.ownerDocument.activeElement,n=e.muted||0===e.volume,o=n?s:a;if(a.setAttribute("aria-pressed",String(e.muted)),s.setAttribute("aria-pressed",String(e.muted)),n)et(a,"display","none"),et(s,"display","flex"),et(h,"top","100%"),et(f,"top","100%"),d.textContent="0";else{const t=100*e.volume;et(a,"display","flex"),et(s,"display","none"),et(h,"top",100-t+"%"),et(f,"top",100-t+"%"),d.textContent=String(Math.floor(t))}r!==a&&r!==s||r===o||o.focus({preventScroll:!0})}if(b(),r("video:volumechange",b),n(a,"click",()=>{e.muted=!0}),n(s,"click",()=>{e.muted=!1}),k)et(l,"display","none");else{let t=!1;n(u,"mousedown",r=>{t=0===r.button,e.volume=y(r)}),r("document:mousemove",r=>{t&&(e.muted=!1,e.volume=y(r))}),r("document:mouseup",()=>{t&&(t=!1)})}}})}({name:"volume",position:"left",index:20})),e.isLive||t.add(function(t){return e=>l(s({},t),{style:k?{fontSize:"12px",padding:"0 5px"}:{cursor:"auto",padding:"0 10px"},mounted:t=>{const{on:r}=_(e,t);function n(){const r=`${ut(e.currentTime)} / ${ut(e.duration)}`;r!==t.textContent&&(t.textContent=r)}n();const o=["video:loadedmetadata","video:timeupdate","video:progress"];for(let e=0;e{r&&!P(t.art).closed&&(t.art.quality=e.quality)}).catch(t=>{console.warn("ArtPlayer quality initialization failed:",t)}),e.screenshot&&!k&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("Screenshot"),mounted:t=>{const{proxy:r}=_(e,t),{icons:n}=e;zt(D(t),t),Rt(t,n.screenshot),r(t,"click",()=>{at(e.screenshot())})}})}({name:"screenshot",position:"right",index:20})),e.setting&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("Show Setting"),mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e;Rt(t,o.setting),zt(D(t),t),t.setAttribute("aria-expanded","false"),n(t,"click",()=>{e.setting.toggle(),e.setting.resize()}),r("setting",e=>{t.setAttribute("aria-expanded",String(e)),Q(t,i.get(e?"Hide Setting":"Show Setting"))})}})}({name:"setting",position:"right",index:30})),e.pip&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("PIP Mode"),mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e;zt(D(t),t),Rt(t,o.pip),n(t,"click",()=>{e.pip=!e.pip}),r("pip",e=>{Q(t,i.get(e?"Exit PIP Mode":"PIP Mode"))})}})}({name:"pip",position:"right",index:40})),e.airplay&&"WebKitPlaybackTargetAvailabilityEvent"in window&&window.WebKitPlaybackTargetAvailabilityEvent&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("AirPlay"),mounted:t=>{const{proxy:r}=_(e,t),{icons:n}=e;zt(D(t),t),Rt(t,n.airplay),r(t,"click",()=>e.airplay())}})}({name:"airplay",position:"right",index:50})),e.fullscreenWeb&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("Web Fullscreen"),mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e;zt(D(t),t);const a=Rt(t,o.fullscreenWebOn),s=Rt(t,o.fullscreenWebOff);et(s,"display","none"),n(t,"click",()=>{e.fullscreenWeb=!e.fullscreenWeb}),r("fullscreenWeb",e=>{e?(Q(t,i.get("Exit Web Fullscreen")),et(a,"display","none"),et(s,"display","inline-flex")):(Q(t,i.get("Web Fullscreen")),et(a,"display","inline-flex"),et(s,"display","none"))})}})}({name:"fullscreenWeb",position:"right",index:60})),e.fullscreen&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("Fullscreen"),mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e;zt(D(t),t);const a=Rt(t,o.fullscreenOn),s=Rt(t,o.fullscreenOff);et(s,"display","none"),n(t,"click",()=>{e.fullscreen=!e.fullscreen}),r("fullscreen",e=>{e?(Q(t,i.get("Exit Fullscreen")),et(a,"display","none"),et(s,"display","inline-flex")):(Q(t,i.get("Fullscreen")),et(a,"display","inline-flex"),et(s,"display","none"))})}})}({name:"fullscreen",position:"right",index:70}));for(let r=0;rLe.get(t).option.selector}),vt(t,"$control_item",{get:()=>Le.get(t).item}),vt(t,"$control_value",{get:()=>Le.get(t).value})),Le.set(t,e)}function Me(t,e){t.innerHTML=e}function ze(t,e,r,n,o){const{proxy:i}=t.events,a=D(n),s=r.selector;j(n,"art-control-selector");const l=document.createElement("div");j(l,"art-selector-value"),X(l,r.html),n.textContent="",X(n,l);const d=Rt(n,'
');for(let c=0;cc(null,null,function*(){var o,i;if(a.closed)return;const s=W(n),c=r.selector.find(t=>s.includes(t.$control_item));if(!c)return;const d=++u,p=()=>!a.closed&&d===u,f=a.add(function(t,e){return Se.set(t,e),()=>{Se.get(t)===e&&Se.delete(t)}}(n,p));try{if(e(c),a.closed)return;if(r.onSelect){const e=yield r.onSelect.call(t,c,c.$control_item,n);if(p()){const t=l.contains(l.ownerDocument.activeElement);Me(l,e),null==(i=null==(o=Le.get(c))?void 0:o.refresh)||i.call(o,t)}}}catch(h){console.warn("ArtPlayer selector failed:",h)}finally{f()}}));o.push(p);const f=function(t,e,r,n,o){if(t.closed)return()=>{};const i=Array.from(n.children),a=i.some(t=>t.querySelector(Te));n.setAttribute("role",a?"group":"listbox"),n.setAttribute("aria-label",o);let s=!1,l=!1,c=!1,d="",u=0;const p=()=>i.length>0&&(l||s&&!c),f=()=>r.querySelector('button,a[href],[role="button"]')||r,h=(e=!1)=>{if(t.closed)return;const n=f();r.querySelector(Te)?(r.removeAttribute("role"),r.removeAttribute("tabindex")):(r.setAttribute("role","button"),r.tabIndex=0),n!==r&&(r.removeAttribute("aria-haspopup"),r.removeAttribute("aria-expanded"),r.removeAttribute("aria-disabled")),a?n.removeAttribute("aria-haspopup"):n.setAttribute("aria-haspopup","listbox"),n.setAttribute("aria-expanded",String(p())),n.setAttribute("aria-disabled",String(0===i.length)),e&&r.isConnected&&r.ownerDocument.activeElement===r.ownerDocument.body&&n.focus({preventScroll:!0})},m=(t,r=!1)=>{l=t,c=r,e.classList.toggle("art-selector-open",t),e.classList.toggle("art-selector-dismissed",r),h()},v=e=>{e&&!t.closed&&((e.querySelector(Te)||e).focus({preventScroll:!0}),t.closed||e.scrollIntoView({block:"nearest",inline:"nearest"}))},g=(e=!1)=>{!t.closed&&i.length&&(m(!0),d="",v(i.find(t=>t.classList.contains("art-current"))||i[e?i.length-1:0]))},y=()=>{if(t.closed)return;const o=n.contains(e.ownerDocument.activeElement);m(!1,!0),d="",o&&r.isConnected&&f().focus({preventScroll:!0})};zt(t,r,()=>{r.click(),e.ownerDocument.activeElement===r&&g()}),h();for(const b of i){const e=b.classList.contains("art-current");a?b.setAttribute("aria-current",String(e)):(b.setAttribute("role","option"),b.setAttribute("aria-selected",String(e))),b.querySelector(Te)||(b.tabIndex=-1,zt(t,b,()=>{b.click(),y()}))}return Ct(t,r,"keydown",t=>{const e=t;!Mt(e)||e.defaultPrevented||e.target!==r&&e.target!==f()||("ArrowDown"===e.key||"ArrowUp"===e.key?(Pt(e),g("ArrowUp"===e.key)):"Escape"===e.key&&p()&&(Pt(e),y()))}),Ct(t,r,"click",t=>{t.isTrusted&&0===t.detail&&f()!==r&&g()}),Ct(t,n,"keydown",t=>{var e;const r=t;if(!Mt(r)||r.defaultPrevented)return;if("Escape"===r.key)return Pt(r),void y();const n=i.indexOf(r.target);if(n<0)return;let o;switch(1!==r.key.length&&(d=""),r.key){case"ArrowDown":o=Math.min(n+1,i.length-1);break;case"ArrowUp":o=Math.max(n-1,0);break;case"Home":o=0;break;case"End":o=i.length-1;break;case"ArrowLeft":case"ArrowRight":return void Pt(r);default:{if(1!==r.key.length||" "===r.key)return;const t=Date.now();d=t-u<500?d+r.key.toLocaleLowerCase():r.key.toLocaleLowerCase(),u=t;const a=[...d].every(t=>t===d[0])?d[0]:d;for(let r=1;r<=i.length;r++){const t=(n+r)%i.length;if(null==(e=i[t].textContent)?void 0:e.trim().toLocaleLowerCase().startsWith(a)){o=t;break}}}}Pt(r),void 0!==o&&v(i[o])}),Ct(t,n,"click",t=>{t.isTrusted&&0===t.detail&&y()}),Ct(t,e,"mouseenter",()=>{s=!0,m(l)}),Ct(t,e,"mouseleave",()=>{s=!1,m(n.contains(e.ownerDocument.activeElement))}),Ct(t,e,"focusout",t=>{e.contains(t.relatedTarget)||m(!1,!0)}),t.add(()=>{e.classList.remove("art-selector-open","art-selector-dismissed")}),h}(a,n,l,d,String(r.tooltip||r.name||l.textContent||t.i18n.get("Open")));for(const c of s)Le.get(c).refresh=f}class Re extends Zt{constructor(t){super(t),this.isHover=!1,this.name="control",this.timer=Date.now();const{constructor:e}=t,{$player:r,$bottom:n}=this.art.template,o=function(t,e,r){let n,o,i=!0;const a=()=>!t.closed&&i&&e.contains(e.ownerDocument.activeElement),s=()=>{const t=a(),n=e.classList.contains("art-keyboard-focus");e.classList.toggle("art-keyboard-focus",t),t&&!n&&r()},l=()=>{i=!0,s()},c=()=>{i=!1,s()},d=()=>{n!==e.ownerDocument&&(null==o||o.dispose(),n=e.ownerDocument,o=t.child(),Ct(o,n,"keydown",l,{capture:!0}),Ct(o,n,"mousedown",c,{capture:!0}),Ct(o,n,"touchstart",c,{capture:!0,passive:!0}))};return d(),Ct(t,e,"keydown",l,{capture:!0}),Ct(t,e,"mousedown",c,{capture:!0}),Ct(t,e,"touchstart",c,{capture:!0,passive:!0}),Ct(t,e,"focusin",()=>{d(),s()}),Ct(t,e,"focusout",()=>{e.classList.remove("art-keyboard-focus")}),t.add(()=>{e.classList.remove("art-keyboard-focus")}),a}(O(t,n),r,()=>{this.show=!0}),{on:i,proxy:a}=_(t,n);a(r,"focusin",e=>{var r;t.isFocus=!0,t.isInput="INPUT"===(null==(r=e.target)?void 0:r.tagName)}),a(r,"focusout",e=>{r.contains(e.relatedTarget)||(t.isFocus=!1,t.isInput=!1)}),i("mousemove",()=>{k||(this.show=!0)}),i("click",()=>{k?this.toggle():this.show=!0}),i("document:mousemove",t=>{this.isHover=F(t,n)}),i("video:timeupdate",()=>{!t.setting.show&&!this.isHover&&!t.isInput&&!o()&&t.playing&&this.show&&Date.now()-this.timer>=e.CONTROL_HIDE_TIME&&(this.show=!1)}),i("control",t=>{t?(q(r,"art-hide-cursor"),j(r,"art-hover"),this.timer=Date.now()):(j(r,"art-hide-cursor"),q(r,"art-hover"))}),this.init(),P(t).closed||function(t){const{$bottom:e,$controls:r,$player:n}=t.template,o=D(e),{on:i}=_(t,e),a=()=>{if(o.closed)return;const t=r.offsetHeight;t>0&&n.style.getPropertyValue("--art-controls-height")!==`${t}px`&&n.style.setProperty("--art-controls-height",`${t}px`)};if(i("resize",a),"undefined"!==typeof ResizeObserver){const t=new ResizeObserver(a);return t.observe(r),void o.add(()=>{t.disconnect()})}if("undefined"!==typeof MutationObserver){const t=new MutationObserver(a);t.observe(r,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),o.add(()=>{t.disconnect()})}a()}(t)}init(){Ce(this)}add(t){if(M(this.art))return;const e="function"===typeof t?t(this.art):t,{$progress:r,$controlsLeft:n,$controlsRight:o}=this.art.template;switch(e.position){case"top":this.$parent=r;break;case"left":this.$parent=n;break;case"right":this.$parent=o;break;default:it(!1,"Control option.position must one of 'top', 'left', 'right'")}super.add(e)}check(t){!function(t){var e,r;if(!t)return;const n=t.$control_value.contains(t.$control_value.ownerDocument.activeElement);Me(t.$control_value,t.html);for(let o=0;othis.check(t),t,e,r)}}function Oe(t,e){const{constructor:r,template:{$video:n}}=t;!function(t){const{$player:e}=t.template,r=r=>{var n;if(M(t))return;const o=F(r,e);t.isInput=o&&"INPUT"===(null==(n=r.target)?void 0:n.tagName),t.isFocus=o,t.emit(o?"focus":"blur",r)};t.on("document:click",r),t.on("document:contextmenu",r),P(t).add(()=>{t.off("document:click",r),t.off("document:contextmenu",r)})}(t);let o=[];e.proxy(n,"click",e=>{if(M(t))return;const n=Date.now();o.push(n);const{MOBILE_CLICK_PLAY:i,DBCLICK_TIME:a,MOBILE_DBCLICK_PLAY:s,DBCLICK_FULLSCREEN:l}=r,c=o.filter(t=>n-t<=a);switch(c.length){case 1:if(t.emit("click",e),M(t))return;(!k||!t.isLock&&i)&&at(t.toggle()),o=c;break;case 2:if(t.emit("dblclick",e),M(t))return;k?!t.isLock&&s&&at(t.toggle()):l&&(t.fullscreen=!t.fullscreen),o=[];break;default:o=[]}})}function De(t){let e;const r=()=>{e=void 0},n=r=>e===r&&!M(t)&&!t.isLock&&!t.option.isLive&&t.isRotate===r.rotated&&r.sourceActive(),o=t=>{t&&r()};t.on("document:touchend",r),t.on("document:touchcancel",r),t.on("lock",o),P(t).add(()=>{r(),t.off("document:touchend",r),t.off("document:touchcancel",r),t.off("lock",o)});return{start:(o,i)=>{r();const a=i.touches[0];if(M(t)||t.isLock||t.option.isLive||1!==i.touches.length||!a)return;if(![a.pageX,a.pageY,a.clientX,a.clientY,t.currentTime].every(Number.isFinite))return;const s={target:o,identifier:a.identifier,x:a.pageX,y:a.pageY,time:t.currentTime,rotated:t.isRotate,sourceActive:ue(t)};if(e=s,o===t.template.$progress){const o=t.isRotate?t.height:t.template.$progress.clientWidth;if(!Number.isFinite(o)||o<=0||!Number.isFinite(t.duration)||t.duration<=0)return void r();try{ge(t,i,()=>n(s))}catch(l){throw e===s&&r(),l}n(s)&&(s.time=t.currentTime)}},move:o=>{const i=e,a=o.touches[0];if(!i)return;if(!n(i)||1!==o.touches.length||!a||a.identifier!==i.identifier)return void r();const s=i.rotated?t.height:t.width,l=i.target===t.template.$video?t.constructor.TOUCH_MOVE_RATIO:1;if(![a.pageX,a.pageY,s,t.duration,l].every(Number.isFinite)||s<=0||t.duration<=0)return void r();const c=function(t,e,r,n){const o=e-n,i=r-t;if(Math.abs(i)<2&&Math.abs(o)<2)return 0;const a=180*Math.atan2(o,i)/Math.PI;return a>=-45&&a<45?4:a>=45&&a<135?1:a>=-135&&a<-45?2:a>=135&&a<=180||a>=-180&&a<-135?3:0}(i.x,i.y,a.pageX,a.pageY);if(!(i.rotated?1===c||2===c:3===c||4===c))return;const d=ct((i.rotated?a.pageY-i.y:a.pageX-i.x)/s,-1,1),u=ct(i.time+t.duration*d*l,0,t.duration);t.seek=u,n(i)&&(t.emit("setBar","played",ct(u/t.duration,0,1),o),n(i)&&(t.notice.show=`${ut(u)} / ${ut(t.duration)}`))},cancel:r}}const Ie=["click","mouseup","keydown","touchend","touchcancel","touchmove","mousemove","pointerup","contextmenu","pointermove","visibilitychange","webkitfullscreenchange"],Ne=["resize","scroll","orientationchange"];const _e=new WeakMap;function We(t){const e=_e.get(t);if(!e)throw new Error("ArtPlayer event registry has not been initialized");return e}function Fe(t,e,r,n,o={}){if(Array.isArray(r)){const i=[];try{return r.map(r=>{const a=Fe(t,e,r,n,o);return i.push(a),a})}catch(f){for(const t of i.reverse())try{t()}catch(h){console.warn("Failed to roll back event listener:",h)}throw f}}const i=r,a=We(t);if(a.scope.closed||a.cleaning)return()=>{};const s="boolean"===typeof o?o:{capture:Boolean(null==o?void 0:o.capture),once:Boolean(null==o?void 0:o.once),passive:null==o?void 0:o.passive,signal:null==o?void 0:o.signal},l="boolean"===typeof s?s:s.capture,c="boolean"===typeof s?void 0:s.signal;if(a.scope.closed||a.cleaning||(null==c?void 0:c.aborted))return()=>{};let d=!0;function u(r=!1){(d||r)&&(e.removeEventListener(i,n,l),null==c||c.removeEventListener("abort",p),d=!1,t.destroyEvents.delete(p))}function p(){u()}t.destroyEvents.add(p);try{e.addEventListener(i,n,s),!d||a.scope.closed||a.cleaning?u(!0):(null==c?void 0:c.aborted)?p():null==c||c.addEventListener("abort",p,{once:!0})}catch(f){try{u(!0)}catch(h){console.warn("Failed to roll back event listener:",h)}throw f}return p}function Ve(t){return(e,r)=>{if(M(t))return;const n=(...e)=>{if(!M(t))return r(...e)};t.on(e,n),P(t).add(()=>{t.off(e,n)})}}function Ye(t){if(!t.constructor.USE_RAF)return;const e=P(t);let r=()=>{};const n=()=>{M(t)||(t.playing&&t.emit("raf"),M(t)||(r=function(t,e){if(t.closed)return At;let r=!0,n=At;const o=requestAnimationFrame(o=>{r&&(n(),t.closed||e(o))});return n=t.add(()=>{r=!1,cancelAnimationFrame(o)}),n}(e,n)))};n(),Ve(t)("destroy",()=>r())}class Be{constructor(t){this.destroyEvents=new Set,function(t,e){_e.set(t,{scope:P(e),cleaning:!1})}(this,t),P(t).add(()=>{this.destroy()}),this.proxy=this.proxy.bind(this),this.hover=this.hover.bind(this),Oe(t,this),function(t,e){const{$player:r}=t.template;e.hover(r,e=>{M(t)||(j(r,"art-hover"),t.emit("hover",!0,e))},e=>{M(t)||(q(r,"art-hover"),t.emit("hover",!1,e))})}(t,this),function(t,e){const{$player:r}=t.template;e.proxy(r,"mousemove",e=>{M(t)||t.emit("mousemove",e)})}(t,this),function(t,e){var r,n;const{option:o,constructor:i}=t,a=Ve(t);a("resize",()=>{const{aspectRatio:e,notice:r}=t;"standard"===t.state&&o.autoSize&&t.autoSize(),M(t)||(t.aspectRatio=e,M(t)||(r.show=""))});const s=P(t);let l=()=>{};const c=()=>{M(t)||(l(),l=St(s,()=>t.emit("resize"),i.RESIZE_TIME))};a("window:orientationchange",c),a("window:resize",c);const d=null==(n=null==(r=t.template.$player.ownerDocument.defaultView)?void 0:r.screen)?void 0:n.orientation;"function"===typeof(null==d?void 0:d.addEventListener)&&e.proxy(d,"change",c)}(t,this),function(t,e){if(!k||t.option.isLive)return;const{$video:r,$progress:n}=t.template,o=De(t),i=t=>{e.proxy(t,"touchstart",e=>o.start(t,e)),e.proxy(t,"touchmove",t=>o.move(t)),e.proxy(t,"touchcancel",o.cancel)};t.option.gesture&&i(r),i(n)}(t,this),function(t){const{option:e,constructor:r,template:{$container:n}}=t,o=r.SCROLL_TIME,i=P(t),a=Ve(t);let s=!1;a("window:scroll",()=>{s||(t.emit("view",function(t,e){const r=t.getBoundingClientRect(),n=t.ownerDocument,o=n.defaultView,i=(null==o?void 0:o.innerHeight)||n.documentElement.clientHeight,a=(null==o?void 0:o.innerWidth)||n.documentElement.clientWidth,s=r.top-e<=i&&r.top+r.height+e>=0,l=r.left-e<=a+e&&r.left+r.width+e>=0;return s&&l}(n,r.SCROLL_GAP)),M(t)||(s=!0,St(i,()=>{s=!1},o)))}),a("view",r=>{e.autoMini&&(t.mini=!r)})}(t),function(t,e){let r,n=0;P(t).add(()=>{r=void 0,n++});const o=t=>{if(t){for(const r of t.disposers)e.remove(r);t.disposers.length=0}};function i(i={}){var a;if(M(t))return;const s=++n,l={disposers:[]},c=()=>s!==n||M(t);try{const{$player:n}=t.template,o=i.document||n.ownerDocument||document,s=i.window||(null==(a=n.ownerDocument)?void 0:a.defaultView)||window,d=(n,o,i)=>{for(const a of o){if(c())return;l.disposers.push(e.proxy(n,a,e=>{r!==l||M(t)||t.emit(`${i}:${a}`,e)}))}};d(o,Ie,"document"),d(s,Ne,"window")}catch(u){throw o(l),u}if(c())return void o(l);const d=r;r=l,o(d)}i(),e.bindGlobalEvents=i}(t,this),Ye(t)}proxy(t,e,r,n={}){return Array.isArray(e),Fe(this,t,e,r,n)}hover(t,e,r){e&&this.proxy(t,"mouseenter",e),r&&this.proxy(t,"mouseleave",r)}remove(t){!function(t,e){if(t.destroyEvents.has(e))try{e(),t.destroyEvents.delete(e)}catch(r){console.warn("Failed to remove event listener:",r)}}(this,t)}destroy(){!function(t){const e=We(t);if(!e.cleaning){e.cleaning=!0;try{for(const e of t.destroyEvents)try{e(),t.destroyEvents.delete(e)}catch(r){console.warn("Failed to destroy event listener:",r)}}finally{e.cleaning=!1}}}(this)}}function He(t){if(t&&1===t.nodeType)return t}function je(t){const e=t.tagName.toUpperCase();return"INPUT"===e||"TEXTAREA"===e||"SELECT"===e||t.isContentEditable}function qe(t,e){var r,n,o,i;if(function(t){return Lt.has(t)}(t)||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey||t.isComposing||229===t.keyCode)return!1;const a=function(t,e){var r;const n=t.target;return 9===(null==n?void 0:n.nodeType)?n:(null==n?void 0:n.ownerDocument)||(null==(r=t.view)?void 0:r.document)||e}(t,e);let s=He(a.activeElement);for(;null==(r=null==s?void 0:s.shadowRoot)?void 0:r.activeElement;)s=He(s.shadowRoot.activeElement);if(s&&je(s))return!1;const l=He(null==(n=t.composedPath)?void 0:n.call(t)[0])||He(t.target),c="Enter"===t.key||"Enter"===t.code||"NumpadEnter"===t.code;if(c||" "===t.key||"Space"===t.code){const t='button,summary,[role="button"],[role="switch"]'+(c?",a[href]":"");if((null==(o=null==l?void 0:l.closest)?void 0:o.call(l,t))||(null==(i=null==s?void 0:s.closest)?void 0:i.call(s,t)))return!1}return!l||!je(l)}const Ue=new WeakMap;class Xe{constructor(t){this.art=t,this.keys={},Ue.set(this,{subscribed:!1}),k||this.init()}init(){const t=this.art;if(M(t))return;const e=Ue.get(this);if(t.option.hotkey){if(!e.defaults){const r=function(t){const{constructor:e}=t;return{Escape:()=>{t.fullscreenWeb&&(t.fullscreenWeb=!1)},Space:()=>{at(t.toggle())},ArrowLeft:()=>{t.backward=e.SEEK_STEP},ArrowUp:()=>{t.volume+=e.VOLUME_STEP},ArrowRight:()=>{t.forward=e.SEEK_STEP},ArrowDown:()=>{t.volume-=e.VOLUME_STEP}}}(t);e.defaults=()=>{for(const t of Object.keys(r))this.add(t,r[t])}}e.defaults()}if(e.subscribed)return;e.subscribed=!0;const r=e=>{if(!M(t)){if(t.isFocus&&qe(e,t.template.$player.ownerDocument)){const r=Object.prototype.hasOwnProperty.call(this.keys,e.code)?this.keys[e.code]:void 0;if(r){e.preventDefault();for(let n=0;n{e.subscribed=!1,t.off("document:keydown",r)})}add(t,e){const r=Object.prototype.hasOwnProperty.call(this.keys,t)?this.keys[t]:void 0;return r?r.includes(e)||r.push(e):Object.defineProperty(this.keys,t,{value:[e],enumerable:!0,configurable:!0,writable:!0}),this}remove(t,e){const r=Object.prototype.hasOwnProperty.call(this.keys,t)?this.keys[t]:void 0;if(r){const n=r.indexOf(e);-1!==n&&r.splice(n,1),0===r.length&&delete this.keys[t]}return this}}const Ge={"Context Menu":"\u5feb\u6377\u83dc\u5355",Lock:"\u9501\u5b9a",Back:"\u8fd4\u56de",Settings:"\u8bbe\u7f6e",Progress:"\u64ad\u653e\u8fdb\u5ea6","Video Info":"\u7edf\u8ba1\u4fe1\u606f",Close:"\u5173\u95ed","Video Load Failed":"\u52a0\u8f7d\u5931\u8d25",Volume:"\u97f3\u91cf",Play:"\u64ad\u653e",Pause:"\u6682\u505c",Rate:"\u901f\u5ea6",Mute:"\u9759\u97f3","Video Flip":"\u753b\u9762\u7ffb\u8f6c",Horizontal:"\u6c34\u5e73",Vertical:"\u5782\u76f4",Reconnect:"\u91cd\u65b0\u8fde\u63a5","Show Setting":"\u663e\u793a\u8bbe\u7f6e","Hide Setting":"\u9690\u85cf\u8bbe\u7f6e",Screenshot:"\u622a\u56fe","Play Speed":"\u64ad\u653e\u901f\u5ea6","Aspect Ratio":"\u753b\u9762\u6bd4\u4f8b",Default:"\u9ed8\u8ba4",Normal:"\u6b63\u5e38",Open:"\u6253\u5f00","Switch Video":"\u5207\u6362","Switch Subtitle":"\u5207\u6362\u5b57\u5e55",Fullscreen:"\u5168\u5c4f","Exit Fullscreen":"\u9000\u51fa\u5168\u5c4f","Web Fullscreen":"\u7f51\u9875\u5168\u5c4f","Exit Web Fullscreen":"\u9000\u51fa\u7f51\u9875\u5168\u5c4f","Mini Player":"\u8ff7\u4f60\u64ad\u653e\u5668","PIP Mode":"\u5f00\u542f\u753b\u4e2d\u753b","Exit PIP Mode":"\u9000\u51fa\u753b\u4e2d\u753b","PIP Not Supported":"\u4e0d\u652f\u6301\u753b\u4e2d\u753b","Fullscreen Not Supported":"\u4e0d\u652f\u6301\u5168\u5c4f","Subtitle Offset":"\u5b57\u5e55\u504f\u79fb","Last Seen":"\u4e0a\u6b21\u770b\u5230","Jump Play":"\u8df3\u8f6c\u64ad\u653e",AirPlay:"\u9694\u7a7a\u64ad\u653e","AirPlay Not Available":"\u9694\u7a7a\u64ad\u653e\u4e0d\u53ef\u7528"};!function(t,e){if("undefined"!==typeof window){window[t]=e}}("artplayer-i18n-zh-cn",Ge);class Ke{constructor(t){this.art=t,this.languages={"zh-cn":Ge},this.language={},this.update(t.option.i18n)}init(){const t=this.art.option.lang.toLowerCase();this.language=yt(this.languages,t)&&this.languages[t]||{}}get(t){return yt(this.language,t)&&this.language[t]||t}update(t){this.languages=wt(this.languages,t),this.init()}}const Ze={loading:'\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n',state:'\r\n\r\n\r\n',play:'\r\n \r\n',pause:'\r\n \r\n',check:'\r\n\r\n',volume:'\r\n \r\n \r\n',volumeClose:'\r\n \r\n \r\n',screenshot:'\r\n\t\r\n\r\n',setting:'\r\n \r\n \r\n',pip:'\r\n\r\n',arrowLeft:'\r\n \r\n',arrowRight:'\r\n \r\n',playbackRate:'',aspectRatio:'',config:'',lock:'\r\n\r\n\r\n\r\n\r\n',flip:'\r\n\r\n\r\n\r\n\r\n\r\n',unlock:'\r\n\r\n\r\n',fullscreenOff:'\r\n\r\n\r\n\r\n\r\n',fullscreenOn:'\r\n\r\n\r\n\r\n\r\n',fullscreenWebOff:'\r\n\r\n\r\n\r\n\r\n',fullscreenWebOn:'\r\n\r\n\r\n\r\n\r\n',switchOn:'\r\n\r\n\r\n \r\n',switchOff:'\r\n\r\n\r\n \r\n\r\n',error:'\r\n\r\n\r\n\r\n\r\n',close:'\r\n\r\n\r\n\r\n\r\n',airplay:'\r\n \r\n \r\n \r\n \r\n\r\n'};class Je{constructor(t){const e=s(s({},Ze),t.option.icons);for(const r in e)vt(this,r,{get:()=>tt(r,e[r])})}}const Qe=new WeakMap;function tr(t,e,r){const n=()=>!e.closed&&!M(t),o=t=>{try{e.dispose()}catch(r){console.warn("Failed to release info polling resources:",r)}throw t};try{const{proxy:i,constructor:a,template:{$infoPanel:s,$infoClose:l,$video:c}}=t,d=i(l,"click",()=>{n()&&r()});e.add(()=>{t.events.remove(d)});const u=Array.from(s.querySelectorAll("[data-video]")),p=()=>e.dispose();t.on("destroy",p),e.add(()=>{t.off("destroy",p)}),function(t,e,r){const{$player:n,$info:o,$infoClose:i}=t.template;if(!o)return;const a=()=>!e.closed&&!M(t),s=()=>n.classList.contains("art-info-show"),l=t.i18n.get("Close");if(!a())return;const c=t.i18n.get("Video Info");if(!a())return;i.setAttribute("aria-label",l),o.setAttribute("role","group"),o.setAttribute("aria-label",c),zt(e,i,()=>i.click(),s),Ct(e,o,"keydown",t=>{const e=t;a()&&s()&&Mt(e)&&!e.defaultPrevented&&"Escape"===e.key&&(Pt(e),r())});const d=e=>{var r;if(!a())return;const s=n.ownerDocument,l=s.activeElement;if(e)o.contains(l)||(Qe.delete(t),l&&n.contains(l)&&(Qe.set(t,re(l)),n.classList.contains("art-keyboard-focus")&&i.focus({preventScroll:!0})));else{const e=Qe.get(t);if(Qe.delete(t),!o.contains(l))return;const i=e&&(null==(r=s.defaultView)?void 0:r.getComputedStyle(e).visibility);(null==e?void 0:e.isConnected)&&n.contains(e)&&e.getClientRects().length&&"hidden"!==i&&"collapse"!==i&&!e.matches(":disabled")&&!e.closest("[inert]")&&"true"!==e.getAttribute("aria-disabled")?e.focus({preventScroll:!0}):It(t)}};t.on("info",d),e.add(()=>{t.off("info",d)})}(t,e,r);const f=()=>{var t;try{for(const e of u){if(!n())return;const r=Reflect.get(c,null!=(t=e.dataset.video)?t:"undefined");if(!n())return;const o="number"===typeof r?r.toFixed(2):r;if(!n())return;if(e.textContent!==o){const t=null==o?null:`${o}`;if(!n())return;e.textContent=t}}n()&&St(e,f,a.INFO_LOOP_TIME)}catch(r){o(r)}};n()&&f()}catch(i){o(i)}}const er=new WeakMap;class rr extends Zt{constructor(t){super(t),this.name="info",er.set(this,{revision:0}),k||this.init()}init(){var t;const e=er.get(this),r=++e.revision;if(null==(t=e.scope)||t.dispose(),M(this.art)||e.revision!==r)return;const n=P(this.art).child();e.scope=n,n.add(()=>{e.scope===n&&(e.scope=void 0)}),tr(this.art,n,()=>{this.show=!1})}}class nr extends Zt{constructor(t){super(t);const{option:e,template:{$layer:r}}=t;this.name="layer",this.$parent=r;for(let n=0;n{et(i,"display","none"),et(s,"display",null),M(t)&&(l=!0)};var d;t.on("destroy",c),(d=t,L(d).finalizers).add(()=>{try{l||c()}finally{t.off("destroy",c)}}),M(t)||n.proxy(e.$state,"click",()=>{M(t)||at(t.play())})}}const ar=new WeakMap;function sr(t){const e=ar.get(t);e.revision++,e.pending=void 0,null!==t.timer&&(clearTimeout(t.timer),t.timer=null)}class lr{constructor(t){this.art=t,this.timer=null,ar.set(this,{revision:0});const e=()=>this.destroy();t.on("destroy",e),P(t).add(()=>{t.off("destroy",e)}),P(t).add(()=>{this.destroy()})}destroy(){sr(this)}set show(t){if(M(this.art))return;const e=ar.get(this);e.revision++;const{constructor:r,template:{$player:n,$noticeInner:o}}=this.art;if(t){sr(this);const i=e.revision,a=()=>!M(this.art)&&e.revision===i;if(o.textContent=t instanceof Error?t.message.trim():t,!a())return;if(j(n,"art-notice-show"),!a())return;const s=r.NOTICE_TIME;if(!a())return;const l={};e.pending=l;const c=setTimeout(()=>{if(M(this.art)||e.pending!==l)return;e.pending=void 0;const t=e.revision;o.textContent="",M(this.art)||e.revision!==t||q(n,"art-notice-show")},s);a()?this.timer=c:clearTimeout(c)}else q(n,"art-notice-show")}get show(){const{template:{$player:t}}=this.art;return t.classList.contains("art-notice-show")}}function cr(t,e){return function(t,e){const r=wt(e,t);return r.container=t.container,h(r,Gt)}(t,e)}function dr({width:t,height:e}){return Number.isFinite(t)&&t>0&&Number.isFinite(e)&&e>0}function ur(t,e){if(!dr(t)||!Number.isFinite(e)||e<=0)return;const r=t.width/t.height>e?{width:e*t.height,height:t.height,axis:"width"}:{width:t.width,height:t.width/e,axis:"height"};return dr(r)?r:void 0}function pr(t,e,r,n=!1){const o=e=>{M(t)||r(e)};t[n?"once":"on"](e,o),P(t).add(()=>{t.off(e,o)})}function fr(t,e,r){for(const[n,o]of e){if(M(t)||r&&!r())return;t[n].show=o}}function hr(t){const{option:e,constructor:r,i18n:n,notice:o,template:{$player:i}}=t;let a,s=de(t),l=0;return{reset(){l=0,null==a||a.dispose(),q(i,"art-error")},loadStart(){q(i,"art-error")},schedule(d){(d=>c(null,null,function*(){if(M(t))return;const c=de(t);if(c!==s&&(s=c,l=0),a&&!a.closed)return;const u=c.child();a=u,u.add(()=>{a===u&&(a=void 0)});const p=()=>!M(t)&&!u.closed&&c===de(t),f=l{console.warn("ArtPlayer reconnect failed:",t)})}}}const mr=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],vr=(()=>{if("undefined"===typeof document)return!1;const t=mr[0],e={};for(const r of mr){if(r[1]in document){for(const[n,o]of r.entries())e[t[n]]=o;return e}}return!1})(),gr={change:vr.fullscreenchange,error:vr.fullscreenerror},yr={request:(t=document.documentElement,e)=>new Promise((r,n)=>{const o=()=>{yr.off("change",o),r()};yr.on("change",o);const i=t[vr.requestFullscreen](e);i instanceof Promise&&i.then(o).catch(n)}),exit:()=>new Promise((t,e)=>{if(!yr.isFullscreen)return void t();const r=()=>{yr.off("change",r),t()};yr.on("change",r);const n=document[vr.exitFullscreen]();n instanceof Promise&&n.then(r).catch(e)}),toggle:(t,e)=>yr.isFullscreen?yr.exit():yr.request(t,e),onchange(t){yr.on("change",t)},onerror(t){yr.on("error",t)},on(t,e){const r=gr[t];r&&document.addEventListener(r,e,!1)},off(t,e){const r=gr[t];r&&document.removeEventListener(r,e,!1)},raw:vr};function br(t,e,...r){const n=Reflect.get(t,e);if("function"!==typeof n)throw new TypeError(`Fullscreen method ${e} is not available`);return n.apply(t,r)}Object.defineProperties(yr,{isFullscreen:{get:()=>Boolean(document[vr.fullscreenElement])},element:{enumerable:!0,get:()=>document[vr.fullscreenElement]},isEnabled:{enumerable:!0,get:()=>Boolean(document[vr.fullscreenEnabled])}});const wr=new WeakMap;function xr(t){try{Promise.resolve(t()).catch(()=>{})}catch(e){}}function kr(t){const{document:e,elementProperty:r,changeEvent:n,target:o,exit:i}=t,a=function(t,e,r){let n=wr.get(t);if(!n){n=new WeakMap,wr.set(t,n);const o=n;t.addEventListener(r,()=>{const r=Reflect.get(t,e),n=r&&o.get(r);n&&(o.delete(r),xr(n))})}return n}(e,r,n);a.set(o,i),t.element===o&&(a.delete(o),xr(i))}function $r(t,e,r,n,o=()=>t.element!==t.target){const i=e.child();let a,s,l=!1,c=!1,d=!1,u=!1,p=!1;const f=new Promise((t,e)=>{a=t,s=e});function h(t=!1,e){if(!l){l=!0;try{i.dispose()}catch(r){t||(t=!0,e=r)}t?s(e):a()}}i.add(()=>{l||(l=!0,c=!0,a(),d&&!u&&r&&kr(t))});const m=()=>{d&&!u&&(r?t.element===t.target:o())&&h()};if(Ct(i,t.document,t.changeEvent,m),Ct(i,t.document,t.errorEvent,e=>{e.target!==t.target&&e.target!==t.document||(p=!0,d&&!u&&h(!0,new Error("Fullscreen request failed")))}),!i.closed)try{r&&function(t){var e;null==(e=wr.get(t.document))||e.delete(t.target)}(t);const e=r?t.request():t.exit();u=Boolean(e&&"function"===typeof e.then),d=!0,c&&!u&&r&&kr(t),u?Promise.resolve(e).then(()=>{c?n():h()},t=>h(!0,t)).catch(()=>{}):p?h(!0,new Error("Fullscreen request failed")):m()}catch(v){h(!0,v)}return{promise:f,cancel:()=>i.dispose()}}function Er(t,e){const r=P(t).child(),{$player:n,$video:o}=t.template,i=()=>e.element===n||e.element===o;let a,s=i(),l=0,c=s,d=!1,u=!1,p=!1;function f(){if(i())try{Promise.resolve(e.exit()).catch(()=>{})}catch(t){}}return r.add(()=>{l+=1,c=!1,n.classList.remove("art-fullscreen"),f()}),Ct(r,e.document,e.changeEvent,()=>{const r=i();if(r&&function(t){var e,r;return null!=(r=null==(e=wr.get(t.document))?void 0:e.has(t.target))&&r}(e))return;if(r&&u)return void f();if(r===s||M(t))return;s=r;const o=l,a=()=>M(t)||i()!==r||o!==l&&c!==r;t.emit("fullscreen",r),a()||(r&&(t.state="fullscreen"),a()||(n.classList.toggle("art-fullscreen",r),t.emit("resize")))}),Ct(r,e.document,e.errorEvent,r=>{(r.target===n||r.target===o||r.target===e.document&&(p||void 0!==a||i()))&&!M(t)&&t.emit("fullscreenError",r)}),{get:()=>!M(t)&&i(),set(n){if(M(t))return Promise.resolve();const o=++l;if(c=Boolean(n),c?u=!1:d&&(u=!0),null==a||a.cancel(),a=void 0,d=!1,!c&&!i())return Promise.resolve();p=!0,d=c;const s=$r(e,r,c,()=>{!M(t)&&c||f()},()=>!i());p=!1,l===o?a=s:s.cancel();const h=s.promise.catch(e=>{throw M(t)||l!==o||(t.notice.show=e),e}).finally(()=>{l===o&&(a=void 0,d=!1)});return h.catch(()=>{}),h}}}const Ar=new WeakSet;function Cr(t,e=!1){return"string"===typeof t.webkitPresentationMode?"fullscreen"===t.webkitPresentationMode:"boolean"===typeof t.webkitDisplayingFullscreen?t.webkitDisplayingFullscreen:t.ownerDocument.fullscreenElement===t||e}function Sr(t){Ar.delete(t),t.removeEventListener("webkitbeginfullscreen",Tr),t.removeEventListener("webkitpresentationmodechanged",Tr)}function Tr(t){var e;if(Ar.has(this)&&Cr(this,"webkitbeginfullscreen"===t.type)){Sr(this);try{null==(e=this.webkitExitFullscreen)||e.call(this)}catch(r){}}}function Lr(t){Ar.add(t),t.addEventListener("webkitbeginfullscreen",Tr),t.addEventListener("webkitpresentationmodechanged",Tr)}function Pr(t){const{$video:e}=t.template,r=P(t).child();let n=!1,o=Cr(e),i=o,a=!1,s=0;const l=()=>Cr(e,n);function c(r){if(M(t)||(c=e,Ar.has(c)))return;var c;"boolean"===typeof r&&(n=r);const d=l();if(d&&(a=!1),d===o)return;o=d;const u=s,p=()=>M(t)||l()!==d||u!==s&&i!==d;t.emit("fullscreen",d),p()||(d&&(t.state="fullscreen"),p()||t.emit("resize"))}r.add(()=>{var t;s++,i=!1,a&&Lr(e),l()&&(null==(t=e.webkitExitFullscreen)||t.call(e))}),Ct(r,e,"webkitbeginfullscreen",()=>c(!0)),Ct(r,e,"webkitendfullscreen",()=>c(!1)),Ct(r,e,"webkitpresentationmodechanged",()=>c());const d=()=>c();return t.on("document:webkitfullscreenchange",d),r.add(()=>{t.off("document:webkitfullscreenchange",d)}),{get:()=>!M(t)&&l(),set(r){if(M(t))return;const n=++s;if(i=Boolean(r),r){if(Sr(e),t.state="fullscreen",M(t)||n!==s)return;a=!0;try{e.webkitEnterFullscreen()}catch(o){throw n===s&&(a=!1),o}}else a&&(a=!1,Lr(e)),l()&&e.webkitExitFullscreen()}}}function Mr(t){return{node:t,parent:t.parentNode,next:t.nextSibling}}function zr({node:t,parent:e,next:r}){var n;if(!e)return void(null==(n=t.parentNode)||n.removeChild(t));const o=(null==r?void 0:r.parentNode)===e?r:null;t.parentNode===e&&t.nextSibling===o||e.insertBefore(t,o)}function Rr(t,e,r){const n=Math.max(0,r.viewportWidth-r.width),o=Math.max(0,r.viewportHeight-r.height);return{left:Math.max(0,Math.min(t,n)),top:Math.max(0,Math.min(e,o))}}function Or(t){const{width:e,height:r}=t.getBoundingClientRect(),n=t.ownerDocument.defaultView;return{width:e,height:r,viewportWidth:n.innerWidth,viewportHeight:n.innerHeight}}function Dr(t,e,r,n){const o=e.child();if(o.closed)return;const i=t.template.$mini;if(i){const t=i.style.display;return o.add(()=>{i.style.display=t}),{element:i,cancelDrag:()=>{},fresh:!1}}const a=t.template.$player.ownerDocument,s=a.createElement("div");s.className="art-mini-popup",o.add(()=>{s.remove()});try{const e=a.createElement("div");if(e.className="art-mini-close",e.append(t.icons.close),o.closed)return;const i=a.createElement("div");i.className="art-mini-state";const l=t.icons.play,c=t.icons.pause;if(o.closed)return;i.append(l,c),s.append(e,i),zt(o,e,()=>e.click(),r),zt(o,i,()=>(t.playing?c:l).click(),r);const d=t.i18n.get("Close");if(o.closed||M(t))return;e.setAttribute("aria-label",d);const u=t.i18n.get("Mini Player");if(o.closed||M(t))return;s.setAttribute("role","group"),s.setAttribute("aria-label",u),Ct(o,s,"keydown",t=>{const e=t;r()&&Mt(e)&&!e.defaultPrevented&&"Escape"===e.key&&(Pt(e),n())}),Ct(o,e,"click",n),Ct(o,l,"click",()=>{at(t.play())}),Ct(o,c,"click",()=>{t.pause()});const p=()=>{if(o.closed)return;const e=t.i18n.get(t.playing?"Pause":"Play");o.closed||M(t)||(i.setAttribute("aria-label",e),l.style.display=t.playing?"none":"flex",c.style.display=t.playing?"flex":"none")};p();for(const r of["video:playing","video:pause","video:timeupdate"])t.on(r,p),o.add(()=>{t.off(r,p)});const f=function(t,e,r,n){let o=!1,i=0,a=0;const s=()=>{o=!1,e.classList.remove("art-mini-dragging"),e.style.transform=""};Ct(r,e,"mousedown",t=>{const e=t;0===e.button&&n()&&(o=!0,i=e.clientX,a=e.clientY)});const l=t=>{!r.closed&&o&&n()&&(e.classList.add("art-mini-dragging"),e.style.transform=`translate(${t.clientX-i}px, ${t.clientY-a}px)`)},c=()=>{if(r.closed||!o||!n())return;const i=e.getBoundingClientRect(),a=Rr(i.left,i.top,Or(e));s(),e.style.left=`${a.left}px`,e.style.top=`${a.top}px`,t.storage.set("left",a.left),r.closed||t.storage.set("top",a.top)};return t.on("document:mousemove",l),r.add(()=>{t.off("document:mousemove",l)}),t.on("document:mouseup",c),r.add(()=>{t.off("document:mouseup",c)}),r.add(s),s}(t,s,o,r);if(o.closed)return;if(t.template.$mini=s,a.body.append(s),!o.closed)return{element:s,cancelDrag:f,fresh:!0,focus:()=>e.focus({preventScroll:!0})}}catch(l){throw o.dispose(),t.template.$mini===s&&delete t.template.$mini,l}}function Ir(t){const{$player:e,$video:r}=t.template,n=P(t).child();let o,i,a=0,c=!1,d=!1;const u=()=>!M(t)&&e.classList.contains("art-mini"),p=function(t){const e=t.template.$player;let r;return{entering(){var n;const o=e.ownerDocument,i=o.activeElement,a=i&&e.contains(i);(null==(n=t.template.$mini)?void 0:n.contains(i))||(r=a?re(i):void 0);const s=a&&e.classList.contains("art-keyboard-focus");return e=>{!s||M(t)||o.activeElement!==i&&o.activeElement!==o.body||null==e||e()}},leaving(n){const o=e.ownerDocument,i=null==n?void 0:n.contains(o.activeElement);return()=>{var e;if(!i||M(t)||o.activeElement!==o.body&&!(null==n?void 0:n.contains(o.activeElement)))return;const a=r&&(null==(e=o.defaultView)?void 0:e.getComputedStyle(r).visibility);(null==r?void 0:r.isConnected)&&r.getClientRects().length&&"hidden"!==a&&"collapse"!==a&&"true"!==r.getAttribute("aria-disabled")&&!r.matches(":disabled")&&!r.closest("[inert]")?r.focus({preventScroll:!0}):It(t)}}}}(t);function f(){if(i){const e=i,r=a;i=void 0;try{zr(e)}catch(t){throw r!==a||i||(i=e),t}}}function h(){if(M(t))return;const r=++a;d=!1;const n=p.leaving(t.template.$mini);f(),M(t)||r!==a||(null==o||o.cancelDrag(),e.classList.remove("art-mini"),t.template.$mini&&(t.template.$mini.style.display="none",n(),M(t)||r!==a||t.emit("mini",!1)))}function m(){if(M(t))return;const v=++a;if(c)return void(d=!0);const g=p.entering();if(t.state="mini",!M(t)&&v===a){null!=i||(i=Mr(r)),e.classList.add("art-mini");try{if(!o){c=!0;try{o=Dr(t,n,u,h)}finally{c=!1}}if(d)return d=!1,void m();if(!o||M(t))return;if(v!==a)return void(u()||(o.element.style.display="none"));if(o.fresh?o.element.prepend(r):o.element.append(r),M(t)||v!==a)return;o.element.style.display=o.fresh?"":"flex",o.fresh=!1;const e=t.storage.get("top"),i=function(t,e,r){return"number"===typeof t&&Number.isFinite(t)&&"number"===typeof e&&Number.isFinite(e)&&t>=0&&e>=0&&t+r.width<=r.viewportWidth&&e+r.height<=r.viewportHeight?{left:t,top:e,reset:!1}:l(s({},Rr(r.viewportWidth-r.width-50,r.viewportHeight-r.height-50,r)),{reset:!0})}(t.storage.get("left"),e,Or(o.element));if(M(t)||v!==a)return;if(o.element.style.left=`${i.left}px`,o.element.style.top=`${i.top}px`,i.reset){if(t.storage.set("top",i.top),M(t)||v!==a)return;t.storage.set("left",i.left)}M(t)||v!==a||g(o.focus),M(t)||v!==a||t.emit("mini",!0)}catch(y){const r=d;throw d=!1,M(t)||v!==a&&!r||(f(),e.classList.remove("art-mini"),o&&(o.element.style.display="none")),y}}}return n.add(()=>{a++;try{f()}finally{null==o||o.cancelDrag(),e.classList.remove("art-mini")}}),{get:u,set(t){t?m():h()}}}const Nr=new WeakSet,_r=t=>"picture-in-picture"===t.webkitPresentationMode;function Wr(t){Nr.delete(t),t.removeEventListener("webkitpresentationmodechanged",Fr),t.removeEventListener("enterpictureinpicture",Fr)}function Fr(){var t;if(Nr.has(this)&&_r(this)){Wr(this);try{null==(t=this.webkitSetPresentationMode)||t.call(this,"inline")}catch(e){}}}function Vr(t){Nr.add(t),t.addEventListener("webkitpresentationmodechanged",Fr),t.addEventListener("enterpictureinpicture",Fr)}function Yr(t,e,r,n,o=!0){let i,a=!1;const s=e=>{t.closed||a||(o&&(a=!0,i()),n(e))};return e[o?"once":"on"](r,s),i=t.add(()=>{e.off(r,s)}),s}function Br(t,e,r){return new Promise((n,o)=>{var i;if(M(t)||e===t.url)return void n();const a=null!=(i=function(t){const e=ae.get(t);return(null==e?void 0:e.active())?e.resumePlaying:void 0}(t))?i:t.playing,s=pe(t);s.resumePlaying=a;const l=s.scope.child();let d=!1;const u=(t=!1,e)=>{d||(d=!0,s.resumePlaying=void 0,s.onError=void 0,s.onAssigned=void 0,l.dispose(),t?o(e):n(),t&&s.scope.dispose())};l.add(()=>{u()});const p=()=>!d&&s.active(),f=t=>u(!0,t);s.onError=f;try{const{aspectRatio:n,playbackRate:o}=t;s.internalPause=!0;try{t.pause()}finally{s.internalPause=!1}if(!p())return;const i=l.child();let a=!1,d=!1,h=!1;const m=$e(t,r,p),v=()=>c(null,null,function*(){const e=s.pauseRevision;if(t.aspectRatio=n,p()){if(s.resumePlaying)try{yield t.play()}catch(r){}p()&&(s.pauseRevision===e&&(t.notice.show=""),u())}}),g=()=>{var e,r;if(p()&&!d&&a)try{if(null==(r=null==(e=t.template)?void 0:e.$video)?void 0:r.seeking)return;if(!p())return;if(h||(h=!0,t.playbackRate=o),!m.ready()||!p()||d)return;d=!0,i.dispose(),v().catch(f)}catch(n){f(n)}},y={"video:error":f,"video:loadedmetadata":()=>{if(p())try{m.restore()}catch(t){f(t)}},"video:canplay":()=>{a=!0,g()},"video:seeked":g,seek:m.manual},b=l.child(),w=[],x=Object.keys(y);for(const e of x)Yr(b,t,e,t=>{s.acceptingEvents&&w.push([e,t])},!1);if(he(t,s,e),!p())return;if(t.notice.show="",!p())return;const k=()=>{if(b.dispose(),!e)return void u();const r={};for(const e of x)r[e]=Yr(i,t,e,y[e],"video:seeked"!==e);for(const[t,e]of w){if(!p()||i.closed)break;r[t](e)}w.length=0};s.assigned?k():s.onAssigned=k}catch(h){f(h)}})}function Hr(t){const{option:e,template:{$video:r}}=t;vt(t,"url",{get:()=>r.src,set(n){return c(this,null,function*(){if(M(t))return;const o=function(t){const e=se.get(t);return se.delete(t),e||pe(t)}(t);o.acceptingEvents=!1;try{if(!n)return void((yield Tt(o.scope))&&o.active()&&(t.loading.show=!0));const i=t.url,a=e.type||st(n),s=e.customType[a];if(a&&s){if(!(yield Tt(o.scope))||!o.active())return;t.loading.show=!0}if(!o.active())return;const l=o.scope.child();let c=!1,d=!1;Yr(l,t,"video:canplay",()=>{c=!d}),Yr(l,t,"video:error",()=>{d=!0});try{if(o.acceptingEvents=!0,a&&s){const e=s.call(t,r,n,t);Promise.resolve(e).catch(t=>me(o,t))}else{if(!o.active())return;r.src=n}}finally{l.dispose()}if(!o.active())return;if(i!==t.url&&(t.option.url=n,o.active()&&t.isReady&&i)){const e=()=>{o.active()&&t.emit("restart",n)};c?e():d||Yr(o.scope,t,"video:canplay",e)}}catch(i){me(o,i)}finally{fe(o)}})}})}const jr=[function(t){const{template:{$video:e}}=t;vt(t,"attr",{value(t,r){const n=e;if(void 0===r)return n[t];n[t]=r}})},function(t){const{i18n:e,notice:r,option:n,constructor:{instances:o},template:{$video:i}}=t;vt(t,"play",{value(){return c(this,null,function*(){ce(t,!0);const a=function(t){const e=ue(t),r=ae.get(t),n=null==r?void 0:r.pauseRevision;return()=>e()&&(null==r?void 0:r.pauseRevision)===n}(t),s=yield i.play();if(!a())return s;const l=e.get("Play");if(!a())return s;if(r.show=l,!a())return s;if(t.emit("play"),n.mutex)for(let e=0;et.playing?t.pause():t.play()})},function(t){const{notice:e}=t;vt(t,"seek",{set(r){t.currentTime=r,t.duration&&(e.show=`${ut(t.currentTime)} / ${ut(t.duration)}`),t.emit("seek",t.currentTime,r)}});const r=t;vt(t,"forward",{set(e){r.seek=t.currentTime+e}}),vt(t,"backward",{set(e){r.seek=t.currentTime-e}})},function(t){const{template:{$video:e},i18n:r,notice:n,storage:o}=t;vt(t,"volume",{get:()=>e.volume||0,set:t=>{e.volume=ct(t,0,1),n.show=`${r.get("Volume")}: ${Number.parseInt(String(100*e.volume),10)}`,0!==e.volume&&o.set("volume",e.volume)}}),vt(t,"muted",{get:()=>e.muted,set:r=>{e.muted=r,t.emit("muted",r)}})},function(t){const{$video:e}=t.template;vt(t,"currentTime",{get:()=>e.currentTime||0,set:r=>{const n=Number.parseFloat(r);Number.isNaN(n)||(!function(t){xe.set(t,ke(t)+1)}(t),e.currentTime=ct(n,0,t.duration))}})},function(t){vt(t,"duration",{get:()=>{const{duration:e}=t.template.$video;return e===1/0?0:e||0}})},function(t){const e=e=>Br(t,e,0);vt(t,"switchQuality",{value:e=>Br(t,e,t.currentTime)}),vt(t,"switchUrl",{value:e}),vt(t,"switch",{set:e})},function(t){const{template:{$video:e},i18n:r,notice:n}=t,o=t;vt(t,"playbackRate",{get:()=>e.playbackRate,set(t){if(t){if(t===e.playbackRate)return;e.playbackRate=t,n.show=`${r.get("Rate")}: ${1===t?r.get("Normal"):`${t}x`}`}else o.playbackRate=1}})},function(t){const{i18n:e,notice:r,template:{$video:n,$player:o}}=t;vt(t,"aspectRatio",{get:()=>o.dataset.aspectRatio||"default",set(i){if(!M(t)){if(i||(i="default"),"default"===i)n.style.width="",n.style.height="",n.style.margin="",delete o.dataset.aspectRatio;else{const e=i.split(":").map(Number),r=ur({width:o.clientWidth,height:o.clientHeight},e[0]/e[1]);if(M(t))return;"width"===(null==r?void 0:r.axis)?(n.style.width=`${r.width}px`,n.style.height="100%",n.style.margin="0 auto"):r&&(n.style.width="100%",n.style.height=`${r.height}px`,n.style.margin="auto 0"),o.dataset.aspectRatio=i}r.show=`${e.get("Aspect Ratio")}: ${"default"===i?e.get("Default"):i}`,M(t)||t.emit("aspectRatio",i)}}})},function(t){const{notice:e,template:{$video:r}}=t,n=document.createElement("canvas");function o(o){const i=ue(t);return new Promise((a,s)=>{const l=r=>{try{!M(t)&&i()&&(e.show=r)}catch(n){return void s(n)}s(r)};try{!function(t,e){t.width=e.videoWidth,t.height=e.videoHeight;const r=t.getContext("2d");if(!r)throw new TypeError("Canvas 2D context is unavailable");r.drawImage(e,0,0)}(n,r),o?function(t,e,r){t.toBlob(t=>{try{if(!t)throw new Error("Unable to encode screenshot blob");e(URL.createObjectURL(t))}catch(n){r(n)}})}(n,a,l):a(n.toDataURL("image/png"))}catch(c){l(c)}})}vt(t,"getDataURL",{value:()=>o(!1)}),vt(t,"getBlobUrl",{value:()=>o(!0)}),vt(t,"screenshot",{value:e=>c(null,null,function*(){const n=ue(t),o=yield t.getDataURL();if(!M(t)&&n()){const i=e||`artplayer_${ut(r.currentTime)}`;!M(t)&&n()&<(o,`${i}.png`),!M(t)&&n()&&t.emit("screenshot",o)}return o})})},function(t){const{i18n:e,notice:r,template:{$video:n,$player:o}}=t,i=()=>{if(M(t))return;const i=function(t){const e=yr.raw,r=t.ownerDocument;if(e&&Reflect.get(r,e.fullscreenEnabled))return{document:r,target:t,get element(){return Reflect.get(r,e.fullscreenElement)},elementProperty:e.fullscreenElement,changeEvent:e.fullscreenchange,errorEvent:e.fullscreenerror,request:()=>br(t,e.requestFullscreen,void 0),exit:()=>br(r,e.exitFullscreen)}}(o);i?vt(t,"fullscreen",Er(t,i)):n.webkitSupportsFullscreen&&"function"===typeof n.webkitEnterFullscreen&&"function"===typeof n.webkitExitFullscreen?vt(t,"fullscreen",Pr(t)):vt(t,"fullscreen",{get:()=>!1,set(){M(t)||(r.show=e.get("Fullscreen Not Supported"))}}),vt(t,"fullscreen",bt(t,"fullscreen"))};t.once("video:loadedmetadata",i),P(t).add(()=>{t.off("video:loadedmetadata",i)})},function(t){const e=function(t){const{$player:e}=t.template;let r,n=0;function o(t,r){return null===t.style?e.removeAttribute("style"):e.setAttribute("style",t.style),!!r()&&(e.classList.remove("art-fullscreen-web"),!!r()&&(zr(t.placement),r()))}return P(t).add(()=>{var t;n+=1;const i=r;if(r=void 0,i)try{o(i,()=>!0)}catch(a){try{e.parentNode!==i.placement.parent&&(null==(t=e.parentNode)||t.removeChild(e))}catch(s){throw new A([a,s])}throw a}}),i=>{if(M(t))return;const a=++n,s=()=>a===n&&!M(t),l=function(t){var e;const r=null==(e=t.ownerDocument)?void 0:e.activeElement,n=r&&t.contains(r);return()=>{n&&r.isConnected&&t.contains(r)&&r.ownerDocument.activeElement===r.ownerDocument.body&&r.focus({preventScroll:!0})}}(e);if(i){r||(r={placement:Mr(e),style:e.getAttribute("style")});const n=r;try{const r=e.ownerDocument.body;if(t.constructor.FULLSCREEN_WEB_IN_BODY&&e.parentNode!==r&&r.appendChild(e),!s())return;if(t.state="fullscreenWeb",!s())return;e.style.width="100%",e.style.height="100%",e.classList.add("art-fullscreen-web")}catch(c){throw s()&&o(n,s)&&(r=void 0,l()),c}if(!s())return;if(l(),!s())return;t.emit("fullscreenWeb",!0)}else{if(r){if(!o(r,s))return;r=void 0}else e.classList.remove("art-fullscreen-web");if(!s())return;if(l(),!s())return;t.emit("fullscreenWeb",!1)}s()&&t.emit("resize")}}(t);vt(t,"fullscreenWeb",{get:()=>t.template.$player.classList.contains("art-fullscreen-web"),set:e})},function(t){const{i18n:e,notice:r,template:{$video:n}}=t,o=n.ownerDocument;o.pictureInPictureEnabled&&"function"===typeof n.requestPictureInPicture&&"function"===typeof o.exitPictureInPicture?vt(t,"pip",function(t){const{$video:e}=t.template,r=e.ownerDocument,n=P(t).child(),o=()=>r.pictureInPictureElement===e;let i=o(),a=i,s=!1,l=!1,c=0;function d(){if(o())try{r.exitPictureInPicture().catch(()=>{})}catch(t){}}function u(e,r,n){e.then(()=>{!r||!M(t)&&a||d()},e=>{M(t)||c!==n||(t.notice.show=e)}).finally(()=>{c===n&&(s=!1)}).catch(()=>{})}return e.disablePictureInPicture=!1,n.add(()=>{c++,a=!1,d()}),Ct(n,e,"enterpictureinpicture",()=>{if(l)return void d();if(!o()||i)return;const e=c;t.state="pip",!M(t)&&e===c&&o()&&(i=!0,t.emit("pip",!0))}),Ct(n,e,"leavepictureinpicture",()=>{i&&!o()&&(i=!1,t.emit("pip",!1))}),{get:()=>!M(t)&&o()?e:null,set(n){if(M(t))return;const i=++c;if(a=Boolean(n),a?l=!1:s&&(l=!0),s=!1,a){if(t.state="pip",M(t)||c!==i)return;s=!0;try{u(e.requestPictureInPicture(),!0,i)}catch(d){throw c===i&&(s=!1),d}}else o()&&u(r.exitPictureInPicture(),!1,i)}}}(t)):"function"===typeof n.webkitSupportsPresentationMode&&"function"===typeof n.webkitSetPresentationMode?vt(t,"pip",function(t){const{$video:e}=t.template,r=P(t).child();let n=!1,o=!1,i=0,a=0;function s(r=!1){if(M(t)||Nr.has(e))return;const s=_r(e);if(s&&(o=!1),s===n&&!r)return;const l=i;s&&(t.state="pip"),M(t)||i!==l||_r(e)!==s||(n=s,a++,t.emit("pip",s))}e.webkitSetPresentationMode("inline"),r.add(()=>{i++,o&&Vr(e),_r(e)&&e.webkitSetPresentationMode("inline")});for(const l of["webkitpresentationmodechanged","enterpictureinpicture","leavepictureinpicture"])Ct(r,e,l,()=>s());return{get:()=>!M(t)&&_r(e),set(r){var n;if(M(t))return;const l=++i,c=a;if(r){if(!1===(null==(n=e.webkitSupportsPresentationMode)?void 0:n.call(e,"picture-in-picture")))return void(t.notice.show=t.i18n.get("PIP Not Supported"));if(Wr(e),t.state="pip",M(t)||i!==l)return;o=!0;try{e.webkitSetPresentationMode("picture-in-picture")}catch(d){throw l===i&&(o=!1),d}}else o&&(o=!1,Vr(e)),_r(e)&&e.webkitSetPresentationMode("inline");M(t)||l!==i||c!==a||_r(e)!==Boolean(r)||s(!0)}}}(t)):vt(t,"pip",{get:()=>!1,set(){M(t)||(r.show=e.get("PIP Not Supported"))}})},function(t){const{$video:e}=t.template,r=t;vt(t,"loaded",{get:()=>r.loadedTime/e.duration}),vt(t,"loadedTime",{get:()=>e.buffered.length?e.buffered.end(e.buffered.length-1):0})},function(t){vt(t,"played",{get:()=>t.currentTime/t.duration})},function(t){const{$video:e}=t.template;vt(t,"playing",{get:()=>"boolean"===typeof e.playing?e.playing:!!(e.currentTime>0&&!e.paused&&!e.ended&&e.readyState>2)})},function(t){const{$container:e,$player:r,$video:n}=t.template;vt(t,"autoSize",{value(){if(M(t))return;const o={width:n.videoWidth,height:n.videoHeight};if(!dr(o))return;const i=Y(e),a=ur(i,o.width/o.height);a&&!M(t)&&("width"===a.axis?(r.style.width=a.width/i.width*100+"%",r.style.height="100%"):(r.style.width="100%",r.style.height=a.height/i.height*100+"%"),t.emit("autoSize",{width:t.width,height:t.height}))}})},function(t){const e=t;vt(t,"rect",{get:()=>Y(t.template.$player)});const r=["bottom","height","left","right","top","width"];for(let n=0;ne.rect[o]})}vt(t,"x",{get:()=>e.left+window.pageXOffset}),vt(t,"y",{get:()=>e.top+window.pageYOffset})},function(t){const{template:{$player:e},i18n:r,notice:n}=t;vt(t,"flip",{get:()=>e.dataset.flip||"normal",set(o){M(t)||(o||(o="normal"),"normal"===o?delete e.dataset.flip:e.dataset.flip=o,n.show=`${r.get("Video Flip")}: ${r.get(dt(o))}`,M(t)||t.emit("flip",o))}})},function(t){vt(t,"mini",Ir(t))},function(t){const{template:{$poster:e}}=t;vt(t,"poster",{get:()=>{try{return e.style.backgroundImage.match(/"(.*)"/)[1]}catch(t){return""}},set(t){et(e,"backgroundImage",`url(${t})`)}})},function(t){const{$container:e,$video:r}=t.template;vt(t,"autoHeight",{value(){if(M(t))return;const n=function(t,e){if(!Number.isFinite(t)||t<=0||!dr(e))return;const r=e.height*(t/e.width);return Number.isFinite(r)&&r>0?r:void 0}(e.clientWidth,{width:r.videoWidth,height:r.videoHeight});void 0===n||M(t)||(e.style.height=`${n}px`,t.emit("autoHeight",n))}})},function(t){const{$player:e}=t.template;vt(t,"cssVar",{value:(t,r)=>r?e.style.setProperty(t,r):getComputedStyle(e).getPropertyValue(t)})},function(t){vt(t,"theme",{get:()=>t.cssVar("--art-theme"),set(e){t.cssVar("--art-theme",e)}})},function(t){vt(t,"type",{get:()=>t.option.type,set(e){t.option.type=e}})},function(t){const e=["mini","pip","fullscreen","fullscreenWeb"];vt(t,"state",{get:()=>e.find(e=>t[e])||"standard",set(r){for(let n=0;nt.startTime<=n&&ni[e]===t)){for(const e of r)t.removeCue(e);for(const e of r)t.addCue(e)}}(n.$track.track,n.$video,s),t.subtitle.update(),e.show=`${r.get("Subtitle Offset")}: ${o}s`,t.emit("subtitleOffset",o)}})},function(t){if(M(t))return;const{i18n:e,notice:r,proxy:n,template:{$video:o}}=t;let i=!0;const a=window.WebKitPlaybackTargetAvailabilityEvent;if(M(t))return;const s=a&&o.webkitShowPlaybackTargetPicker;M(t)||(s?n(o,"webkitplaybacktargetavailabilitychanged",e=>{if(!M(t))switch(e.availability){case"available":i=!0;break;case"not-available":i=!1}}):i=!1,M(t)||vt(t,"airplay",{value(){if(!M(t))if(i){const e=o.webkitShowPlaybackTargetPicker;if(M(t))return;Reflect.apply(e,o,[]),M(t)||t.emit("airplay")}else{const n=e.get("AirPlay Not Available");M(t)||(r.show=n)}}}))},function(t){vt(t,"quality",{set(e){const{controls:r,notice:n,i18n:o}=t,i=e.find(t=>t.default)||e[0];r.update({name:"quality",position:"right",index:10,style:{marginRight:"10px"},html:(null==i?void 0:i.html)||"",selector:e,onSelect(e,r,i){return c(this,null,function*(){const r=function(t){return t&&Se.get(t)||(()=>!0)}(i);if(yield t.switchQuality(e.url),!M(t)&&r()){const i=`${o.get("Switch Video")}: ${e.html}`;!M(t)&&r()&&(n.show=i)}return e.html})}})}})},function(t){const{option:e,template:{$progress:r,$video:n}}=t;let o,i,a,l=P(t).child(),c=!1;function d(){const e=l;l=P(t).child(),o=void 0,c=!1,a=void 0,e.dispose()}function u(){const i=a,c=l;if(!i||!o)return;const d=()=>{var e;return!M(t)&&!c.closed&&l===c&&a===i&&i.sourceActive()&&(null==(e=t.controls)?void 0:e.thumbnails)===i.element};if(!d())return;const u=r.clientWidth*i.percentage;if(!(u>0&&ud-f/2?d-f+"px":u-f/2+"px"}}(e.thumbnails,{imageWidth:o.naturalWidth,videoWidth:n.videoWidth,videoHeight:n.videoHeight,progressWidth:r.clientWidth,position:u}));for(const[t,e]of Object.entries(p)){if(!d())return;et(i.element,t,e)}}Ve(t)("setBar",(r,n,s)=>{var p;const f=null==(p=t.controls)?void 0:p.thumbnails,{url:h,scale:m}=e.thumbnails;if(!M(t)&&f&&h&&("hover"===r||"played"===r&&s&&k)){if(i!==f){const t=D(f);if(t.closed)return;i=f,t.add(()=>{i===f&&(i=void 0,d())})}if(a={percentage:n,element:f,sourceActive:ue(t)},o)u();else if(!c){const t=l;c=!0,function(t,e,r){return nt(t,e,r)}(h,m,t).then(e=>{l!==t||t.closed||(c=!1,o=e,u())}).catch(e=>{l!==t||t.closed||(c=!1,console.warn("ArtPlayer thumbnail load failed:",e))})}}}),vt(t,"thumbnails",{get:()=>t.option.thumbnails,set:e=>{M(t)||!e.url||t.option.isLive||M(t)||(t.option.thumbnails=e,d())}})},function(t){!function(t){const{proxy:e,template:{$video:r}}=t;for(let n=0;n{M(t)||t.emit(`video:${e.type}`,e)})}(t);const e=hr(t);!function(t,e){pr(t,"video:canplay",()=>{e.reset(),fr(t,[["loading",!1]])}),pr(t,"video:canplay",()=>{fr(t,[["loading",!1],["controls",!0],["mask",!0]]),M(t)||(t.isReady=!0,t.emit("ready"))},!0)}(t,e),function(t){const{option:e}=t;pr(t,"video:ended",()=>{if(e.loop){const e=ue(t);if(t.seek=0,M(t)||!e())return;at(t.play()),e()&&fr(t,[["controls",!1],["mask",!1]],e)}else fr(t,[["controls",!0],["mask",!0]])})}(t),pr(t,"video:error",e.schedule),function(t,e){const{template:{$poster:r}}=t;pr(t,"video:loadedmetadata",()=>{t.emit("resize"),k&&fr(t,[["loading",!1],["controls",!0],["mask",!0]])}),pr(t,"video:loadstart",()=>{e.loadStart(),fr(t,[["loading",!0],["mask",!1],["controls",!0]])}),pr(t,"video:pause",()=>{fr(t,[["controls",!0],["mask",!0]])}),pr(t,"video:play",()=>{fr(t,[["mask",!1]]),M(t)||et(r,"display","none")}),pr(t,"video:playing",()=>fr(t,[["mask",!1]])),pr(t,"video:progress",()=>{t.playing&&fr(t,[["loading",!1]])}),pr(t,"video:seeked",()=>fr(t,[["loading",!1],["mask",!0]])),pr(t,"video:seeking",()=>fr(t,[["loading",!0],["mask",!1]])),pr(t,"video:timeupdate",()=>fr(t,[["mask",!1]])),pr(t,"video:waiting",()=>fr(t,[["loading",!0],["mask",!1]]))}(t,e)},function(t){if(M(t))return;const{option:e,storage:r,template:{$video:n,$poster:o}}=t;for(const s in e.moreVideoAttr){if(M(t))return;const r=e.moreVideoAttr[s];if(M(t))return;t.attr(s,r)}if(M(t))return;if(e.muted){const r=e.muted;if(M(t))return;t.muted=r}if(M(t))return;if(e.volume){const r=ct(e.volume,0,1);if(M(t))return;n.volume=r}if(M(t))return;const i=r.get("volume");if(M(t))return;if("number"===typeof i&&(n.volume=ct(i,0,1)),M(t))return;if(e.poster){const r=`url(${e.poster})`;if(M(t))return;et(o,"backgroundImage",r)}if(M(t))return;if(e.autoplay){const r=e.autoplay;if(M(t))return;n.autoplay=r}if(M(t))return;if(e.playsInline){if(M(t))return;if(n.playsInline=!0,M(t))return;n["webkit-playsinline"]=!0}if(M(t))return;if(e.theme){const r=e.cssVar,n=e.theme;if(M(t))return;r["--art-theme"]=n}for(const s in e.cssVar){if(M(t))return;const r=e.cssVar[s];if(M(t))return;t.cssVar(s,r)}if(M(t))return;const a=e.url;M(t)||(t.url=a)}];class qr{constructor(t){if(!M(t)){Hr(t);for(const e of jr){if(M(t))return;e(t)}}}}const Ur=new WeakMap,Xr="art-auto-orientation-fullscreen";function Gr(t){if(Ur.get(t.orientation)===t)try{t.orientation.unlock()}catch(e){}}const Kr="art-auto-orientation",Zr=["width","height","transform-origin","transform"];function Jr(t){const{$player:e,$video:r}=t.template,n=()=>{const t={width:r.videoWidth,height:r.videoHeight},n=e.ownerDocument.documentElement,o={width:n.clientWidth,height:n.clientHeight};return dr(t)&&dr(o)&&(t.width>t.height&&o.widtho.height)},o=function(t,e){const{$player:r}=t.template,n=P(t);let o,i=()=>{};function a(){i(),i=()=>{};const e=o;if(o=void 0,e&&t.fullscreenWeb)for(const{name:t,value:o,priority:i}of e)r.style.setProperty(t,o,i);const n=r.classList.contains(Kr);r.classList.remove(Kr),n&&(t.isRotate=!1,M(t)||t.emit("resize"))}function s(n){if(!t.fullscreenWeb||!e())return;const i=B();if(M(t)||!t.fullscreenWeb)return;const a=r.ownerDocument.documentElement;null!=o||(o=Zr.map(t=>({name:t,value:r.style.getPropertyValue(t),priority:r.style.getPropertyPriority(t)}))),r.style.width=a.clientHeight-i.top-i.bottom+"px",r.style.height=a.clientWidth-i.left-i.right+"px",r.style.transformOrigin="0 0",r.style.transform=`rotate(90deg) translate(${i.top}px, -${a.clientWidth-i.right}px)`,r.classList.add(Kr),t.isRotate=!0,n&&t.emit("resize")}return n.add(a),r=>{var l;M(t)||(r?o?s(!1):e()&&(i(),i=St(n,()=>{o||s(!0)},Number(null!=(l=t.constructor.AUTO_ORIENTATION_TIME)?l:0))):a())}}(t,n),i=function(t,e){const{$player:r}=t.template;let n;function o(){const t=n;n=void 0,r.classList.remove(Xr),t&&(t.cancelled=!0,Gr(t),t.settled&&Ur.get(t.orientation)===t&&Ur.delete(t.orientation))}return P(t).add(o),i=>{var a,s;if(M(t))return;if(!i)return void o();if(n&&!n.cancelled&&Ur.get(n.orientation)===n)return;const l=null==(s=null==(a=r.ownerDocument.defaultView)?void 0:a.screen)?void 0:s.orientation;if("function"!==typeof(null==l?void 0:l.lock)||"function"!==typeof l.unlock||!e())return;const c={orientation:l,cancelled:!1,settled:!1};n=c,Ur.set(l,c);const d=()=>!M(t)&&!c.cancelled&&n===c&&Ur.get(l)===c,u=e=>{c.settled=!0;const o=d();Ur.get(l)===c&&Ur.delete(l),n===c&&(n=void 0),o&&(r.classList.remove(Xr),t.notice.show=e)};try{const t=l.lock(l.type.startsWith("portrait")?"landscape":"portrait");Promise.resolve(t).then(()=>{c.settled=!0,d()?r.classList.add(Xr):(Gr(c),Ur.get(l)===c&&Ur.delete(l))}).catch(u)}catch(p){u(p)}}}(t,n);return t.on("fullscreenWeb",o),t.on("fullscreen",i),P(t).add(()=>{t.off("fullscreenWeb",o),t.off("fullscreen",i)}),{name:"autoOrientation",get state(){return e.classList.contains("art-auto-orientation")}}}function Qr(t){return t.get("times")||{}}function tn(t){const{storage:e}=t,r=function(t){const{i18n:e,icons:r,storage:n,constructor:o,template:{$poster:i}}=t,a=t.layers.add({name:"auto-playback",html:'\n
\n
\n
\n '});if(!a||M(t))return()=>{};const s=Ot(".art-auto-playback-last",a),l=Ot(".art-auto-playback-jump",a),c=Ot(".art-auto-playback-close",a);Rt(c,r.close);const d=D(a);let u,p=0;const f=()=>{const r=++p;if(null==u||u.dispose(),d.closed||M(t)||p!==r)return;const f=d.child();u=f;const h=()=>u===f&&!f.closed&&!M(t);f.add(()=>{u===f&&(u=void 0,et(a,"display","none"))});const m=de(t).add(()=>{f.dispose()});f.add(()=>{m()});const v=Qr(n)[t.option.id||t.option.url];if(!h())return;if(et(a,"display","none"),!h()||!v||!(v>=o.AUTO_PLAYBACK_MIN))return;if(!h())return;if(et(a,"display","flex"),!h())return;const g=`${e.get("Last Seen")} ${ut(v)}`;if(!h())return;if(s.textContent=g,!h())return;const y=e.get("Jump Play");if(!h())return;if(l.textContent=y,!h())return;const b=(e,r)=>{const n=t.events.proxy(e,"click",()=>{h()&&r()});f.add(()=>{t.events.remove(n)})};if(b(c,()=>{et(a,"display","none")}),!h())return;if(b(l,()=>{t.seek=v,h()&&(at(t.play()),h()&&(et(i,"display","none"),h()&&et(a,"display","none")))}),!h())return;let w=()=>{},x=!1;const k=()=>{!x&&h()&&(x=!0,w(),St(f,()=>{h()&&et(a,"display","none")},o.AUTO_PLAYBACK_TIMEOUT))};t.on("video:timeupdate",k),w=f.add(()=>{t.off("video:timeupdate",k)}),x&&w()};return()=>{N(t,a,"ready",f),N(t,a,"restart",f)}}(t);return function(t){const{storage:e,constructor:r}=t;Ve(t)("video:timeupdate",()=>{if(!t.playing)return;const n=Qr(e),o=Object.keys(n),i=r.AUTO_PLAYBACK_MAX,a=t.option.id||t.option.url,s=t.currentTime;M(t)||(o.length>i&&delete n[o[0]],n[a]=s,M(t)||e.set("times",n))})}(t),r(),{name:"auto-playback",get times(){return Qr(e)},clear:()=>e.del("times"),delete(t){const r=Qr(e);return delete r[t],e.set("times",r),r}}}function en(t){let e,r=0;return{start:n=>{const o=++r;if(null==e||e.scope.dispose(),o!==r||M(t)||1!==n.touches.length||!t.playing||t.isLock)return;const i={scope:de(t).child(),active:!1,previousRate:1};e=i,i.scope.add(()=>{if(e===i&&(e=void 0,i.active))try{t.playbackRate=i.previousRate}finally{(null==e?void 0:e.active)||q(t.template.$player,"art-fast-forward")}}),St(i.scope,()=>{if(e!==i||M(t)||!t.playing||t.isLock)i.scope.dispose();else try{if(i.previousRate=t.playbackRate,e!==i||i.scope.closed)return;i.active=!0;const r=t.constructor.FAST_FORWARD_VALUE;if(e!==i||i.scope.closed||M(t))return;t.playbackRate=r,e!==i||i.scope.closed||M(t)||j(t.template.$player,"art-fast-forward")}catch(r){try{i.scope.dispose()}catch(n){console.warn("Failed to restore fast-forward playback rate:",n)}throw r}},t.constructor.FAST_FORWARD_TIME)},stop:()=>{r++,null==e||e.scope.dispose()}}}function rn(t){const{proxy:e,template:{$player:r,$video:n}}=t,o=en(t),i=Ve(t);return e(n,"touchstart",t=>o.start(t)),e(n,"touchcancel",o.stop),i("document:touchmove",o.stop),i("document:touchend",o.stop),i("document:touchcancel",o.stop),i("video:pause",o.stop),i("destroy",o.stop),i("lock",t=>{t&&o.stop()}),{name:"fastForward",get state(){return U(r,"art-fast-forward")}}}function nn(t,e,r,n){let o;const i=()=>!r.closed&&!M(t),a=t.i18n.get("Lock");if(!i())return()=>{};e.setAttribute("aria-label",a),zt(r,e),Ct(r,e,"keydown",t=>{const r=t;i()&&n()&&Mt(r)&&!r.defaultPrevented&&"Escape"===r.key&&(Pt(r),e.click())});const s=n=>{if(i())if(e.setAttribute("aria-pressed",String(n)),n&&!o){const{$player:n,$bottom:a}=t.template,s=a.contains(a.ownerDocument.activeElement)&&n.classList.contains("art-keyboard-focus");o=r.child(),function(t,e){const r=new Map,n=e.hasAttribute("inert"),o=e.getAttribute("aria-hidden"),i=(t,e)=>{"-1"===t.getAttribute("tabindex")&&(null===e?t.removeAttribute("tabindex"):t.setAttribute("tabindex",e))};if(t.add(()=>{for(const[t,e]of r)i(t,e);r.clear(),n||""!==e.getAttribute("inert")||e.removeAttribute("inert"),"true"===e.getAttribute("aria-hidden")&&(null===o?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden",o))}),t.closed)return;n||e.setAttribute("inert",""),e.setAttribute("aria-hidden","true");const a=()=>{if(!t.closed){for(const[t,n]of r)e.contains(t)||(i(t,n),r.delete(t));for(const t of e.querySelectorAll("[tabindex],button,input,select,textarea,a[href],[contenteditable]"))r.has(t)||(r.set(t,t.getAttribute("tabindex")),t.setAttribute("tabindex","-1"))}};if(a(),"undefined"!==typeof MutationObserver){const r=new MutationObserver(a);r.observe(e,{childList:!0,subtree:!0}),t.add(()=>{r.disconnect()})}}(o,a),i()&&s&&e.focus({preventScroll:!0})}else if(!n&&o){const t=o;o=void 0,t.dispose()}};return s(n()),s}function on(t){const{layers:e,icons:r,template:{$player:n}}=t;function o(){return U(n,"art-lock")}function i(){M(t)||(j(n,"art-lock"),M(t)||(t.isLock=!0,M(t)||t.emit("lock",!0)))}function a(){M(t)||(q(n,"art-lock"),M(t)||(t.isLock=!1,M(t)||t.emit("lock",!1)))}return e.add({name:"lock",mounted(e){const n=D(e);if(n.closed||M(t))return;const i=Rt(e,r.lock);if(n.closed||M(t))return;const a=Rt(e,r.unlock);if(n.closed||M(t))return;const s=nn(t,e,n,o);n.closed||M(t)||(o()?(et(i,"display","inline-flex"),n.closed||M(t)||et(a,"display","none")):et(i,"display","none"),N(t,e,"lock",e=>{M(t)||(et(i,"display",e?"inline-flex":"none"),n.closed||M(t)||et(a,"display",e?"none":"inline-flex"),n.closed||M(t)||s(e))}))},click(){o()?a():i()}}),{name:"lock",get state(){return o()},set state(t){t?i():a()}}}function an(t){return Ve(t)("control",e=>{e?q(t.template.$player,"art-mini-progress-bar"):j(t.template.$player,"art-mini-progress-bar")}),{name:"mini-progress-bar"}}class sn{constructor(t){this.art=t,this.id=0;const{option:e}=t;!function(t,e){M(t.art)||!e.miniProgressBar||e.isLive||t.add(an),!M(t.art)&&e.lock&&k&&t.add(on),M(t.art)||!e.autoPlayback||e.isLive||t.add(tn),!M(t.art)&&e.autoOrientation&&k&&t.add(Jr),!M(t.art)&&e.fastForward&&k&&!e.isLive&&t.add(rn)}(this,e);for(let r=0;rconsole.warn("Failed to initialize ArtPlayer plugin:",t))}}add(t){it(!M(this.art),"Cannot add a plugin after ArtPlayer is destroyed"),this.id+=1;const e=t.call(this.art,this.art);return e instanceof Promise?e.then(e=>this.next(t,e)):this.next(t,e)}next(t,e){return function(t,e,r){if(M(t.art))return t;const n=r&&r.name||e.name||`plugin${t.id}`;if(M(t.art))return t;let o=n;const i=yt(t,o);if(M(t.art))return t;const a=`Cannot add a plugin that already has the same name: ${n}`;return M(t.art)||(it(!i,a),("object"===typeof n&&null!==n||"function"===typeof n)&&(o=Reflect.ownKeys({[o]:void 0})[0]),M(t.art)||vt(t,o,{value:r})),t}(this,t,e)}}const ln=new WeakMap;function cn(t){return!t.closed&&!ln.get(t)}function dn(t){ln.set(t,(ln.get(t)||0)+1);let e=!0;return()=>{if(!e)return;e=!1;const r=(ln.get(t)||1)-1;r?ln.set(t,r):ln.delete(t)}}const un=new WeakMap,pn=new WeakMap,fn=["$parent","$parents","$option","$events","$formatted"];function hn(t){var e,r;const n=new Set;let o=t;for(;o&&!n.has(o);){n.add(o);const t=un.get(o);if(!t||!t.owner.active||(null==(e=t.owner.scope)?void 0:e.closed)||!t.option.includes(o))return!1;if(!t.parent)return t.owner.root===t.option;if((null==(r=un.get(t.parent))?void 0:r.owner)!==t.owner)return!1;o=t.parent}return!1}function mn(t){let e=t;for(;e;){const r=Object.getOwnPropertyDescriptor(e,"name");if(r)return"set"in r?"function"===typeof r.set:Boolean(r.writable&&(e===t||Object.isExtensible(t)));e=Object.getPrototypeOf(e)}return Object.isExtensible(t)}function vn(t){const e=un.get(t);if(!e)throw new Error("Setting item has not been formatted");return e}function gn(t,e){var r;for(let n=0;n{c&&c!==r&&c.dispose()},()=>En(t,o)])try{e()}catch(d){d instanceof A?l.push(...d.errors):l.push(d)}if(r.closed||M(t)||(o.push(...i.splice(0)),$n.set(r,o),xn.set(e,r),kn.set(e,n)),a(),l.length)throw new A(l)},dispose(){if(s){s=!1;try{r.dispose()}finally{a()}}}}}function Ln(t,e,r,n,o,i){const a=i||Cn(e);if(!cn(a)||M(t))return;const s=t.proxy(r,n,e=>{if(cn(a)&&!M(t))try{return o(e)}catch(r){console.warn("ArtPlayer setting callback failed:",r)}});!cn(a)||M(t)?t.events.remove(s):(vn(e).events.push(s),i&&i!==xn.get(e)&&i.add(()=>{const r=vn(e).events,n=r.indexOf(s);n>=0&&(r.splice(n,1),t.events.remove(s))}))}function Pn(t,e,r,n){const o=Cn(e);if(!cn(o)||M(t))return;const i=(...e)=>{if(cn(o)&&!M(t))return n(...e)};t.on(r,i),o.add(()=>{t.off(r,i)})}const Mn='[tabindex="0"],button,input,select,textarea,a[href],[contenteditable]';function zn(t){var e;if(!t.isConnected||t.matches(":disabled")||t.closest("[inert]")||"true"===t.getAttribute("aria-disabled")||!t.getClientRects().length)return!1;const r=null==(e=t.ownerDocument.defaultView)?void 0:e.getComputedStyle(t).visibility;return"hidden"!==r&&"collapse"!==r}function Rn(t){return Array.from(t.querySelectorAll(Mn)).filter(t=>"-1"!==t.getAttribute("tabindex")&&zn(t))}function On(t,e,r=!1){if(!t.show||M(t.art)||!t.active)return;const n=t.cache.get(t.active);if(!n||!cn(bn(n)))return;const o=function(t,e,r=!1){if(e&&e!==t&&t.contains(e)&&e.matches(Mn)&&"-1"!==e.getAttribute("tabindex")&&zn(e))return e;const n=Rn(t),o=t.querySelector(".art-setting-item.art-current");return n.find(t=>null==e?void 0:e.contains(t))||(r?n[n.length-1]:n.find(t=>null==o?void 0:o.contains(t))||n.find(t=>!t.classList.contains("art-setting-item-back"))||n[0])}(n,e,r);null==o||o.focus({preventScroll:!0}),M(t.art)||null==o||o.scrollIntoView({block:"nearest",inline:"nearest"})}function Dn(t){const e=t.$parent.ownerDocument,r=e.activeElement,n=t.$parent.contains(r);return o=>{n&&!M(t.art)&&(e.activeElement===e.body||e.activeElement===r&&!(null==r?void 0:r.getClientRects().length))&&On(t,o)}}function In(t){const{art:e}=t,r=P(e).child();if(r.closed)return;const n=()=>t.$parent.ownerDocument;let o=!1;const i=()=>{t.show=!1,r.closed||M(e)||t.render()},a=i=>{r.closed||M(e)||(i?n().activeElement===e.controls.setting&&e.template.$player.classList.contains("art-keyboard-focus")&&On(t,void 0,o):t.$parent.contains(n().activeElement)&&function(t){const{art:e,$parent:r}=t,n=e.template.$player,o=r.ownerDocument,i=e.controls.setting;!M(e)&&r.contains(o.activeElement)&&(i&&n.contains(i)&&zn(i)&&i.focus({preventScroll:!0}),(o.activeElement===o.body||r.contains(o.activeElement))&&It(e))}(t))};e.on("setting",a),r.add(()=>{e.off("setting",a)}),Ct(r,e.template.$player,"keydown",r=>{var n,a;const s=r;if(!Mt(s)||s.defaultPrevented||M(e))return;const l=s.target;if(l===e.controls.setting){if("ArrowDown"===s.key||"ArrowUp"===s.key)if(Pt(s),t.show)On(t,void 0,"ArrowUp"===s.key);else{o="ArrowUp"===s.key;try{t.show=!0}finally{o=!1}}else"Escape"===s.key&&t.show&&(Pt(s),i());return}if(!t.show||!t.$parent.contains(l))return;if("Escape"===s.key)return Pt(s),void i();if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"].includes(s.key))return;const c=l.closest(".art-setting-item");if(!c||l!==c&&!l.matches('button,a[href],[role="button"]'))return;const d=t.active&&t.cache.get(t.active);if(!d)return;const u=null==(n=t.active)?void 0:n.find(t=>t.$item===c);if(!cn(bn(d))||u&&!cn(Cn(u)))return void Pt(s);const p=Rn(d),f=p.indexOf(l);if(f<0)return;let h;switch(s.key){case"ArrowDown":h=Math.min(f+1,p.length-1);break;case"ArrowUp":h=Math.max(f-1,0);break;case"Home":h=0;break;case"End":h=p.length-1;break;case"ArrowLeft":{const t=d.querySelector(".art-setting-item-back");return Pt(s),void(null==t||t.click())}case"ArrowRight":return Pt(s),void((null==(a=null==u?void 0:u.selector)?void 0:a.length)&&l.click());default:return}Pt(s),void 0!==h&&On(t,p[h])});let s=!1;Ct(r,t.$parent,"focusout",o=>{const a=o.relatedTarget;a&&(t.$parent.contains(a)||a===e.controls.setting)||s||(s=!0,St(r,()=>{s=!1,r.closed||M(e)||!t.show||t.$parent.contains(n().activeElement)||n().activeElement===e.controls.setting||i()},0))})}function Nn(t){var e,r;const{art:n,active:o}=t,{controls:i,constructor:{SETTING_WIDTH:a,SETTING_ITEM_HEIGHT:s},template:{$player:l,$setting:c,$bottom:d}}=n;if(!i.setting||!t.show||!o)return;const u=l.getBoundingClientRect(),p=i.setting.getBoundingClientRect(),f=u.width/l.offsetWidth||1,h=(p.left-u.left+p.width/2)/f-l.clientLeft,m=function(t){const{containerWidth:e,containerHeight:r,requestedWidth:n,rows:o,rowHeight:i,controlCenter:a,bottom:s,padding:l}=t,c=Math.min(Math.max(0,l),Math.max(0,e/2)),d=Math.min(Math.max(0,n),Math.max(0,e-2*c));return{width:d,height:Math.min(Math.max(0,o*i),Math.max(0,r-s-c)),left:Math.max(c,Math.min(a-d/2,e-c-d))}}({containerWidth:l.clientWidth,containerHeight:l.clientHeight,requestedWidth:(null==(r=null==(e=o[0])?void 0:e.$parent)?void 0:r.width)||a,rows:o.length+(o===t.option?0:1),rowHeight:s,controlCenter:h,bottom:Number.parseFloat(getComputedStyle(c).bottom)||0,padding:Number.parseFloat(getComputedStyle(d).paddingLeft)||0});c.style.height=`${m.height}px`,c.style.width=`${m.width}px`,n.isRotate||k||(h+m.width/2>l.clientWidth?(c.style.left="",c.style.right=""):(c.style.left=`${m.left}px`,c.style.right="auto"))}const _n=new WeakMap;function Wn(t){_n.delete(t)}const Fn=new WeakMap;function Vn(t,e){e?Fn.set(t,e):Fn.delete(t)}function Yn(t){var e;const r=new Map(Reflect.ownKeys(t).map(e=>[e,Object.getOwnPropertyDescriptor(t,e)])),n=[],o=Fn.get(t),i=null==o?void 0:o();for(const a of["html","icon","tooltip"]){const t=null==(e=r.get(a))?void 0:e.value;t instanceof Node&&n.push({node:t,parent:t.parentNode,next:t.nextSibling})}return()=>{var e,a;for(const n of Reflect.ownKeys(t))!r.has(n)&&(null==(e=Object.getOwnPropertyDescriptor(t,n))?void 0:e.configurable)&&Reflect.deleteProperty(t,n);for(const[n,o]of r)Object.defineProperty(t,n,o);null==i||i(),Vn(t,o);for(const{node:t,parent:r,next:o}of n)r?r.insertBefore(t,(null==o?void 0:o.parentNode)===r?o:null):null==(a=t.parentNode)||a.removeChild(t)}}function Bn(t){var e,r;const n=null==(e=t.$item)?void 0:e.querySelector(".art-setting-range");n&&n.setAttribute("aria-label",(null==(r=t.$html)?void 0:r.textContent)||"")}const Hn=new WeakMap;function jn(t,e,r,n,o,i,a,s){return c(this,null,function*(){try{const l=Cn(e),c=Cn(i),d=(Hn.get(i)||0)+1;Hn.set(i,d);const u=()=>cn(l)&&cn(c)&&!M(t.art)&&Hn.get(i)===d;if(null==s||s(),!u())return;const p=yield o.call(t.art,e,r,n);u()&&Reflect.set(i,a,p)}catch(l){console.warn("ArtPlayer setting callback failed:",l)}})}function qn(t){const e=[];return function t(r){const n=Array.from(r.childNodes);e.push({node:r,children:n,attributes:1===r.nodeType?Array.from(r.attributes,t=>[t.name,t.value]):void 0,value:r.nodeValue}),n.forEach(t)}(t),()=>{for(const{node:t,children:r,attributes:n,value:o}of e){for(;t.firstChild;)t.removeChild(t.firstChild);for(const e of r)t.appendChild(e);if(n){const e=t;for(const t of Array.from(e.attributes))e.removeAttribute(t.name);for(const[t,r]of n)e.setAttribute(t,r)}else t.nodeValue=o}}}const Un=new WeakMap;function Xn(t){const e=[];for(const n of t)try{n()}catch(r){r instanceof A?e.push(...r.errors):e.push(r)}if(e.length)throw new A(e)}function Gn(t){var e;null==(e=Un.get(t))||e()}function Kn(t,e){const r=t.find(e.name);if(M(t.art))return r||e;if(!r)return t.add(e);const n=Dn(t);Wn(r),Gn(r);const o=Yn(r),i=r.$item,a=null==i?void 0:i.parentNode,s=null==i?void 0:i.nextSibling,l=i?qn(i):void 0,c=t.active,d=["height","width","left","right"].map(e=>[e,t.$parent.style.getPropertyValue(e),t.$parent.style.getPropertyPriority(e)]),u=function(t,e){const r=new Set,n=new Set,o=e=>{if(!r.has(e)&&(r.add(e),e.selector)){const r=t.cache.get(e.selector);r&&n.add(r),e.selector.forEach(o)}};o(e);const i=[],a=[];try{for(const e of r){const r=Tn(t.art,e);r&&i.push(r)}for(const t of n)a.push(dn(bn(t)))}catch(l){try{Xn([...i.reverse().map(t=>t.resume),...a])}catch(c){console.warn("ArtPlayer setting restore failed:",c)}throw l}let s=!0;return{items:r,resume(){s&&(s=!1,Xn([...i.reverse().map(t=>t.resume),...a]))},dispose(){s&&(s=!1,Xn([...i.reverse().map(t=>t.dispose),...Array.from(n).reverse().map(t=>()=>wn(t)),...a]))}}}(t,r);let p=!0,f=!1;const h=()=>{if(!p)return;p=!1;for(const t of u.items)Un.get(t)===h&&Un.delete(t);if(M(t.art))return void u.dispose();const e=r.$item;try{Xn([u.resume,()=>{e&&e!==i&&e.remove()},o,()=>null==l?void 0:l(),()=>{a&&i&&a.insertBefore(i,(null==s?void 0:s.parentNode)===a?s:null)},()=>t.format(),()=>{if(f){t.active=c,c&&t.cache.has(c)&&K(t.cache.get(c),"art-current");for(const[e,r,n]of d)t.$parent.style.setProperty(e,r,n)}}]),n(i)}catch(m){console.warn("ArtPlayer setting restore failed:",m)}},m=()=>p&&!M(t.art)&&Un.get(r)===h;for(const y of u.items)Un.set(y,h);const v=P(t.art).add(()=>{p=!1;for(const t of u.items)Un.get(t)===h&&Un.delete(t);u.dispose()});try{if(function(t,e,r){for(const n of Reflect.ownKeys(e)){if(!r())return;const o=Object.getOwnPropertyDescriptor(e,n);if(!(null==o?void 0:o.enumerable)||!r())continue;const i=Reflect.get(e,n);if(!r())return;if(!Reflect.set(t,n,i))throw new TypeError(`Cannot assign setting item property [${String(n)}]`)}}(r,e,m),!m())return r;if(t.format(),!m())return r;if(t.createItem(r,!0),!m())return r;if(f=!0,t.render(),!m())return r;p=!1;for(const t of u.items)Un.get(t)===h&&Un.delete(t);return u.dispose(),n(r.$item),r}catch(g){throw m()&&h(),g}finally{v()}}const Zn=new WeakMap;function Jn(t,e,r){vt(t,`$${e}`,{configurable:!0,get:()=>r}),vt(t,e,{configurable:!0,get:()=>r.innerHTML,set(n){r.innerHTML="",X(r,n),"html"===e&&Bn(t)}})}function Qn(t,e,r=!1){var n,o;const i=function(t){const e=Un.get(t);return()=>!e||Un.get(t)===e}(e);if(!t.cache.has(e.$option))return;const a=t.cache.get(e.$option),s=e.$item;let l="selector";yt(e,"switch")&&(l="switch"),yt(e,"range")&&(l="range"),yt(e,"onClick")&&(l="button");const{icons:c,constructor:d}=t.art;if(!i())return;const u=function(t,e,r=P(t)){const n=xn.get(e);(!n||cn(n)||n.closed)&&Sn(t,e);const o=r.child();return xn.set(e,o),kn.set(e,r),$n.set(o,vn(e).events),o.add(()=>{En(t,$n.get(o))}),o}(t.art,e,bn(a)),p=()=>cn(u)&&!M(t.art)&&i();if(!p())return;const f=document.createElement("div");try{if(Vn(e),j(f,"art-setting-item"),et(f,"height",`${d.SETTING_ITEM_HEIGHT}px`),f.dataset.name=e.name||"",f.dataset.value=String(e.value||""),!p())return;const i=Rt(f,'
'),h=Rt(f,'
'),m=document.createElement("div");switch(j(m,"art-setting-item-left-icon"),l){case"button":case"switch":case"range":{const t=e.icon||c.config;if(!p())return;X(m,t);break}case"selector":if(null==(n=e.selector)?void 0:n.length){const t=e.icon||c.config;if(!p())return;X(m,t)}else X(m,c.check)}if(X(i,m),!p())return;Jn(e,"icon",m);const v=document.createElement("div");j(v,"art-setting-item-left-text");const g=e.html||"";if(!p())return;X(v,g),X(i,v),Jn(e,"html",v);const y=document.createElement("div");j(y,"art-setting-item-right-tooltip");const b=e.tooltip||"";if(!p())return;switch(X(y,b),X(h,y),Jn(e,"tooltip",y),l){case"switch":{const t=document.createElement("div");j(t,"art-setting-item-right-icon");const r=Rt(t,c.switchOn),n=Rt(t,c.switchOff),o=e.switch;if(!p())return;et(o?n:r,"display","none"),X(h,t),vt(e,"$switch",{configurable:!0,get:()=>t});let i=e.switch;if(!p())return;Vn(e,()=>{const t=i;return()=>{i=t}}),vt(e,"switch",{configurable:!0,get:()=>i,set(t){i=t,f.setAttribute("aria-checked",String(Boolean(t))),t?(et(n,"display","none"),et(r,"display",null)):(et(n,"display",null),et(r,"display","none"))}});break}case"range":{const t=document.createElement("div");j(t,"art-setting-item-right-icon");const r=document.createElement("input");r.type="range",X(t,r);for(const[o,i]of["value","min","max","step"].entries()){const t=e.range[o];if(!p())return;Reflect.set(r,i,String(t))}j(r,"art-setting-range"),X(h,t),vt(e,"$range",{configurable:!0,get:()=>r});let n=[...e.range];if(!p())return;Vn(e,()=>{const t=n,e=[...t],o={min:r.min,max:r.max,step:r.step,value:r.value};return()=>{t.splice(0,t.length,...e),n=t,Object.assign(r,o)}}),vt(e,"range",{configurable:!0,get:()=>n,set(t){n=[...t],r.value=String(t[0]),r.min=String(t[1]),r.max=String(t[2]),r.step=String(t[3])}})}break;case"selector":if(null==(o=e.selector)?void 0:o.length){const t=document.createElement("div");j(t,"art-setting-item-right-icon"),X(t,c.arrowRight),X(h,t)}}if(!p())return;if(function(t,e,r,n){const{art:o}=t,i=Cn(e),a=(t,r,n)=>Ln(o,e,t,r,n,i);switch(n){case"switch":e.onSwitch&&a(r,"click",n=>jn(t,e,r,n,e.onSwitch,e,"switch"));break;case"range":{const n=e.$range;if(n)for(const[o,i]of[["change","onRange"],["input","onChange"]])e[i]&&a(n,o,o=>jn(t,e,r,o,e[i],e,"tooltip",()=>{e.range[0]=n.valueAsNumber}));break}case"selector":a(r,"click",n=>{var o,i;if(null==(o=e.selector)?void 0:o.length)t.render(e.selector);else{if(null==(i=e.$parent)?void 0:i.onSelect)return jn(t,e,r,n,e.$parent.onSelect,e.$parent,"tooltip",()=>t.check(e));t.check(e)}}),e.default&&j(r,"art-current");break;case"button":e.onClick&&a(r,"click",n=>jn(t,e,r,n,e.onClick,e,"tooltip"))}}(t,e,f,l),!p())return;vt(e,"$item",{configurable:!0,get:()=>f}),function(t,e,r,n,o){var i;"range"!==n?r.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")||("switch"===n?(r.setAttribute("role","switch"),r.setAttribute("aria-checked",String(Boolean(e.switch))),r.setAttribute("aria-disabled",String(!e.onSwitch))):"selector"!==n||(null==(i=e.selector)?void 0:i.length)||r.setAttribute("aria-current",String(Boolean(e.default))),zt(o,r,()=>r.click(),()=>cn(o)&&!M(t.art))):Bn(e)}(t,e,f,l,u),r&&(null==s?void 0:s.parentNode)?s.replaceWith(f):X(a,f),e.mounted&&p()&&St(u,()=>{var r;if(!M(t.art))try{const n=null==(r=e.mounted)?void 0:r.call(t.art,f,e);Promise.resolve(n).catch(t=>console.warn("ArtPlayer setting mounted failed:",t))}catch(n){console.warn("ArtPlayer setting mounted failed:",n)}},0)}catch(h){try{u.dispose()}catch(m){console.warn("ArtPlayer setting cleanup failed:",m)}throw f.remove(),h}}function to(t,e=t.option){var r,n,o,i,a,s;if(M(t.art))return;const l=Dn(t),c=t.cache.get(e);if(c&&!cn(bn(c)))return;const d=(Zn.get(t)||0)+1;Zn.set(t,d);const u=()=>Zn.get(t)===d&&!M(t.art),p=t.active,f=["height","width","left","right"].map(e=>[e,t.$parent.style.getPropertyValue(e),t.$parent.style.getPropertyPriority(e)]),h=()=>{t.active=p,p&&t.cache.has(p)&&K(t.cache.get(p),"art-current");for(const[e,r,n]of f)t.$parent.style.setProperty(e,r,n)};if(t.active=e,c)try{K(c,"art-current"),t.resize()}catch(m){throw u()&&t.cache.get(e)===c&&!bn(c).closed&&h(),m}else{const a=document.createElement("div");t.cache.set(e,a);const s=function(t,e,r){const n=P(t.art).child();return yn.set(r,n),n.add(()=>{t.cache.get(e)===r&&t.cache.delete(e),r.remove()}),n}(t,e,a),l=()=>!s.closed&&!M(t.art)&&t.cache.get(e)===a,c=[];try{if(!l())return;j(a,"art-setting-panel"),a.setAttribute("role","group"),a.setAttribute("aria-label",(null==(o=null==(n=null==(r=e[0])?void 0:r.$parent)?void 0:n.$html)?void 0:o.textContent)||t.art.i18n.get("Settings")),X(t.$parent,a),K(a,"art-current"),(null==(i=e[0])?void 0:i.$parent)&&t.createHeader(e[0]);for(let r=0;r{!function(t){const e=pn.get(t);e&&(e.active=!1,e.root=void 0,e.scope=void 0)}(this)}),e.setting&&(this.format(),this.render(),function(t){const{art:e}=t,r=P(e).child(),n=(t,n)=>{if(r.closed||M(e))return;const o=(...t)=>{if(!r.closed&&!M(e))return n(...t)};e.on(t,o),r.add(()=>{e.off(t,o)})};n("blur",()=>{t.show&&(t.show=!1,t.render())}),n("focus",r=>{const n=F(r,e.controls.setting),o=F(r,t.$parent);!t.show||n||o||(t.show=!1,t.render())}),n("resize",()=>t.resize());const o=()=>{r.closed||M(e)||t.resize()},i=e.proxy(t.$parent,"transitionend",e=>{e.target===t.$parent&&"bottom"===e.propertyName&&o()});r.add(()=>{e.events.remove(i)});const{$player:a,$controls:s}=e.template;if(!r.closed&&"undefined"!==typeof ResizeObserver){const t=new ResizeObserver(o);t.observe(a),t.observe(s),r.add(()=>{t.disconnect()})}if(!r.closed&&"undefined"!==typeof MutationObserver){const t=new MutationObserver(o);"undefined"===typeof ResizeObserver&&t.observe(s,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),t.observe(a,{attributes:!0,attributeFilter:["class","style"]}),r.add(()=>{t.disconnect()})}}(this)),In(this)}get builtin(){const t=[],{option:e}=this.art;return e.playbackRate&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,PLAYBACK_RATE:o}}=t;function i(t){return 1===t?e.get("Normal"):t.toFixed(1)}function a(){const e=t.setting.find(`playback-rate-${t.playbackRate}`);t.setting.check(e)}return{width:n,name:"playback-rate",html:e.get("Play Speed"),tooltip:i(t.playbackRate),icon:r.playbackRate,selector:o.map(e=>({value:e,name:`playback-rate-${e}`,default:e===t.playbackRate,html:i(e)})),onSelect:e=>(t.playbackRate=e.value,e.html),mounted:(e,r)=>{a(),Pn(t,r,"video:ratechange",()=>a())}}}(this.art)),e.aspectRatio&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,ASPECT_RATIO:o}}=t;function i(t){return"default"===t?e.get("Default"):t}function a(){const e=t.setting.find(`aspect-ratio-${t.aspectRatio}`);t.setting.check(e)}return{width:n,name:"aspect-ratio",html:e.get("Aspect Ratio"),icon:r.aspectRatio,tooltip:i(t.aspectRatio),selector:o.map(e=>({value:e,name:`aspect-ratio-${e}`,default:e===t.aspectRatio,html:i(e)})),onSelect:e=>(t.aspectRatio=e.value,e.html),mounted:(e,r)=>{a(),Pn(t,r,"aspectRatio",()=>a())}}}(this.art)),e.flip&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,FLIP:o}}=t;function i(t){return e.get(dt(t))}function a(){const e=t.setting.find(`flip-${t.flip}`);t.setting.check(e)}return{width:n,name:"flip",html:e.get("Video Flip"),tooltip:i(t.flip),icon:r.flip,selector:o.map(e=>({value:e,name:`flip-${e}`,default:e===t.flip,html:i(e)})),onSelect:e=>(t.flip=e.value,e.html),mounted:(e,r)=>{a(),Pn(t,r,"flip",()=>a())}}}(this.art)),e.subtitleOffset&&t.push(function(t){const{i18n:e,icons:r,constructor:n}=t;return{width:n.SETTING_ITEM_WIDTH,name:"subtitle-offset",html:e.get("Subtitle Offset"),icon:r.subtitle,tooltip:"0s",range:[0,-10,10,.1],onChange:e=>(t.subtitleOffset=e.range[0],`${e.range[0]}s`),mounted:(e,r)=>{Pn(t,r,"subtitleOffset",t=>{r.$range.value=String(t),r.tooltip=`${t}s`})}}}(this.art)),t}traverse(t,e=this.option){gn(e,t)}check(t){!function(t,e){(null==e?void 0:e.$parent)&&(e.$parent.tooltip=e.html,t.traverse(t=>{t.default=t===e,t.$item&&t.$item.setAttribute("aria-current",String(t.default)),t.default&&t.$item&&K(t.$item,"art-current")},e.$option),t.render(e.$parents))}(this,t)}format(t=this.option,e,r,n=[]){this.option=function(t,e,r,n,o=[]){const i=pn.get(t)||{active:!0},a=[],s=new Set,l=new Set(o),c=(t,e,r)=>{var n;for(let o=0;ovn(t).parent},$parents:{get:()=>vn(t).parents},$option:{get:()=>vn(t).option},$events:{get:()=>vn(t).events},$formatted:{get:()=>!0}}),un.set(t,{parent:r,parents:n,option:o,events:(null==a?void 0:a.events)||[],owner:i}),u.generated&&(t.name=e)}for(const u of a)u.generated||o.push(u.name);return t.id=d,e}(this,t,e,r,n)}find(t=""){return function(t,e=""){let r=null;return gn(t,t=>{t.name===e&&(r=t)}),r}(this.option,t)}resize(){Nn(this)}inactivate(t){!function(t,e){const r=[],n=new Set,o=e=>{if(!n.has(e)){n.add(e);for(const t of e.selector||[])o(t);if(e.selector){const n=t.cache.get(e.selector);t.cache.delete(e.selector);try{n&&wn(n)}catch(i){r.push(i)}}try{Sn(t.art,e)}catch(i){i instanceof A?r.push(...i.errors):r.push(i)}}};if(o(e),r.length)throw new A(r)}(this,t)}remove(t){const e=Dn(this),r=this.find(t);it(r,`Can't find [${t}] in the [setting]`),this.traverse(t=>{Wn(t),Gn(t)},[r]);const n=r.$option.indexOf(r);r.$option.splice(n,1);const o=r.$item,i=[];for(const s of[()=>this.inactivate(r),()=>null==o?void 0:o.remove(),()=>this.render()])try{s()}catch(a){a instanceof A?i.push(...a.errors):i.push(a)}if(i.length)throw new A(i);e()}update(t){return Kn(this,t)}add(t,e=this.option){var r;if(M(this.art))return t;let n=!1;this.traverse(e=>{n||(n=e===t)});const o=e.length,i=n?void 0:function(t){const e={};_n.set(t,e);const r=()=>_n.get(t)===e;return{current:r,finish(){r()&&_n.delete(t)}}}(t);let a=!1;try{e.push(t),this.format(),a=!0,this.createItem(t),this.render()}catch(s){if(M(this.art)||i&&!i.current())throw s;if(e[o]===t&&e.splice(o,1),!n&&a){try{this.inactivate(t)}catch(l){console.warn("ArtPlayer setting cleanup failed:",l)}null==(r=t.$item)||r.remove()}throw s}finally{null==i||i.finish()}return t}createHeader(t){!function(t,e){var r;if(!t.cache.has(e.$option))return;const n=t.cache.get(e.$option),{icons:{arrowLeft:o},constructor:{SETTING_ITEM_HEIGHT:i}}=t.art,a=document.createElement("div");et(a,"height",`${i}px`),j(a,"art-setting-item"),j(a,"art-setting-item-back");const s=Rt(a,'
'),l=document.createElement("div");j(l,"art-setting-item-left-icon"),X(l,o),X(s,l),X(s,e.$parent.html),Ln(t.art,e.$parent,a,"click",()=>t.render(e.$parents),bn(n));const c=bn(n);a.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")||zt(c,a,()=>a.click(),()=>cn(c)&&!M(t.art)),a.setAttribute("aria-label",`${t.art.i18n.get("Back")}: ${(null==(r=a.textContent)?void 0:r.trim())||""}`),X(n,a)}(this,t)}createItem(t,e=!1){Qn(this,t,e)}render(t=this.option){to(this,t)}}class no{constructor(){this.name="artplayer_settings",this.settings={}}get(t){try{const e=JSON.parse(window.localStorage.getItem(this.name))||{};return t?e[t]:e}catch(e){return t?this.settings[t]:this.settings}}set(t,e){try{const r=Object.assign({},this.get(),{[t]:e});window.localStorage.setItem(this.name,JSON.stringify(r))}catch(r){this.settings[t]=e}}del(t){try{const e=this.get();delete e[t],window.localStorage.setItem(this.name,JSON.stringify(e))}catch(e){delete this.settings[t]}}clear(){try{window.localStorage.removeItem(this.name)}catch(t){this.settings={}}}}const oo='.art-video-player{--art-theme: #f00;--art-font-color: #fff;--art-background-color: #000;--art-text-shadow-color: rgba(0, 0, 0, .5);--art-transition-duration: .2s;--art-padding: 10px;--art-border-radius: 3px;--art-progress-height: 6px;--art-progress-color: rgba(255, 255, 255, .25);--art-progress-top-gap: 10px;--art-hover-color: rgba(255, 255, 255, .25);--art-loaded-color: rgba(255, 255, 255, .25);--art-state-size: 80px;--art-state-opacity: .8;--art-bottom-height: 100px;--art-bottom-offset: 20px;--art-bottom-gap: 5px;--art-highlight-width: 8px;--art-highlight-color: rgba(255, 255, 255, .5);--art-control-height: 46px;--art-control-opacity: .75;--art-control-icon-size: 36px;--art-control-icon-scale: 1.1;--art-volume-height: 120px;--art-volume-handle-size: 14px;--art-lock-size: 36px;--art-indicator-scale: 0;--art-indicator-size: 16px;--art-fullscreen-web-index: 9999;--art-settings-icon-size: 24px;--art-settings-max-height: 300px;--art-selector-max-height: 300px;--art-contextmenus-min-width: 250px;--art-subtitle-font-size: 20px;--art-subtitle-gap: 5px;--art-subtitle-bottom: 15px;--art-subtitle-border: #000;--art-widget-background: rgba(0, 0, 0, .85);--art-tip-background: rgba(0, 0, 0, .7);--art-scrollbar-size: 4px;--art-scrollbar-background: rgba(255, 255, 255, .25);--art-scrollbar-background-hover: rgba(255, 255, 255, .5);--art-mini-progress-height: 2px}.art-bg-cover{background-position:center center;background-repeat:no-repeat;background-size:cover}.art-bottom-gradient{background-image:linear-gradient(to top,#000,rgba(0,0,0,.4),transparent);background-repeat:repeat-x;background-position:center bottom}.art-backdrop-filter{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:#000000bf!important}.art-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-video-player{position:relative;margin:0 auto;width:100%;height:100%;outline:0;zoom:1;padding:0;text-align:left;direction:ltr;font-size:14px;line-height:1.3;user-select:none;box-sizing:border-box;color:var(--art-font-color);background-color:var(--art-background-color);text-shadow:0 0 2px var(--art-text-shadow-color);font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,Roboto,Arial,sans-serif;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-touch-action:manipulation;touch-action:manipulation;-ms-high-contrast-adjust:none}.art-video-player *,.art-video-player *:before,.art-video-player *:after{box-sizing:border-box}.art-video-player ::-webkit-scrollbar{width:var(--art-scrollbar-size);height:var(--art-scrollbar-size)}.art-video-player ::-webkit-scrollbar-thumb{background-color:var(--art-scrollbar-background)}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:var(--art-scrollbar-background-hover)}.art-video-player img{max-width:100%;vertical-align:top}.art-video-player svg{fill:var(--art-font-color)}.art-video-player a{color:var(--art-font-color);text-decoration:none}.art-icon{line-height:1;display:flex;justify-content:center;align-items:center}.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{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:#000000bf!important}.art-video{position:absolute;inset:0;z-index:10;width:100%;height:100%}.art-poster{position:absolute;inset:0;z-index:11;width:100%;height:100%;background-position:center center;background-repeat:no-repeat;background-size:cover;pointer-events:none}.art-video-player .art-subtitle{display:none;justify-content:center;align-items:center;flex-direction:column;position:absolute;z-index:20;width:100%;padding:0 5%;text-align:center;pointer-events:none;gap:var(--art-subtitle-gap);bottom:var(--art-subtitle-bottom);font-size:var(--art-subtitle-font-size);transition:bottom var(--art-transition-duration) ease;text-shadow:var(--art-subtitle-border) 1px 0 1px,var(--art-subtitle-border) 0 1px 1px,var(--art-subtitle-border) -1px 0 1px,var(--art-subtitle-border) 0 -1px 1px,var(--art-subtitle-border) 1px 1px 1px,var(--art-subtitle-border) -1px -1px 1px,var(--art-subtitle-border) 1px -1px 1px,var(--art-subtitle-border) -1px 1px 1px}.art-video-player.art-subtitle-show .art-subtitle{display:flex}.art-video-player.art-control-show .art-subtitle{bottom:calc(var(--art-controls-height, var(--art-control-height)) + var(--art-subtitle-bottom))}.art-danmuku{position:absolute;inset:0;z-index:30;width:100%;height:100%;pointer-events:none;overflow:hidden}.art-video-player .art-layers{position:absolute;inset:0;z-index:40;width:100%;height:100%;display:none;pointer-events:none}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:flex}.art-video-player .art-mask{display:flex;justify-content:center;align-items:center;position:absolute;inset:0;z-index:50;width:100%;height:100%;pointer-events:none}.art-video-player .art-mask .art-state{display:flex;justify-content:center;align-items:center;opacity:0;transform:scale(2);width:var(--art-state-size);height:var(--art-state-size);transition:all var(--art-transition-duration) ease}.art-video-player.art-mask-show .art-state{pointer-events:auto;opacity:var(--art-state-opacity);transform:scale(1)}.art-video-player.art-loading-show .art-state{display:none}.art-video-player .art-loading{display:none;justify-content:center;align-items:center;position:absolute;inset:0;z-index:70;width:100%;height:100%;pointer-events:none}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player.art-loading-show .art-mask{display:none}.art-video-player .art-bottom{position:absolute;inset:0;z-index:60;width:100%;height:100%;display:flex;flex-direction:column;justify-content:flex-end;opacity:0;overflow:hidden;pointer-events:none;padding:0 var(--art-padding);transition:all var(--art-transition-duration) ease;background-size:100% var(--art-bottom-height);background-image:linear-gradient(to top,#000,rgba(0,0,0,.4),transparent);background-repeat:repeat-x;background-position:center bottom}.art-video-player .art-bottom .art-controls,.art-video-player .art-bottom .art-progress{transform:translateY(var(--art-bottom-offset));transition:transform var(--art-transition-duration) ease}.art-video-player.art-control-show .art-bottom,.art-video-player.art-hover .art-bottom{opacity:1}.art-video-player.art-control-show .art-bottom .art-controls,.art-video-player.art-hover .art-bottom .art-controls,.art-video-player.art-control-show .art-bottom .art-progress,.art-video-player.art-hover .art-bottom .art-progress{transform:translateY(0)}.art-bottom .art-progress{position:relative;z-index:0;cursor:pointer;pointer-events:auto;padding-top:var(--art-progress-top-gap);padding-bottom:var(--art-bottom-gap)}.art-bottom .art-progress .art-control-progress{position:relative;display:flex;justify-content:center;align-items:center;height:var(--art-progress-height)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:height var(--art-transition-duration) ease;background-color:var(--art-progress-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover{position:absolute;inset:0;z-index:0;width:100%;height:100%;width:0%;background-color:var(--art-hover-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{position:absolute;inset:0;z-index:10;width:100%;height:100%;width:0%;background-color:var(--art-loaded-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{position:absolute;inset:0;z-index:20;width:100%;height:100%;width:0%;background-color:var(--art-theme)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{position:absolute;inset:0;z-index:30;width:100%;height:100%;pointer-events:none}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{position:absolute;inset:0 auto 0 0;z-index:0;width:100%;height:100%;pointer-events:auto;width:var(--art-highlight-width)!important;transform:translate(calc(var(--art-highlight-width) / -2));background-color:var(--art-highlight-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{display:flex;justify-content:center;align-items:center;position:absolute;z-index:40;left:0;border-radius:50%;width:var(--art-indicator-size);height:var(--art-indicator-size);transform:scale(var(--art-indicator-scale));margin-left:calc(var(--art-indicator-size) / -2);transition:transform var(--art-transition-duration) ease}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon{width:100%;height:100%;pointer-events:none}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover{transform:scale(1.2)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active{transform:scale(1)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;z-index:50;top:-25px;left:0;padding:3px 5px;line-height:1;font-size:12px;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease}.art-bottom .art-progress .art-control-thumbnails{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;bottom:calc(var(--art-bottom-gap) + 10px);left:0;border-radius:var(--art-border-radius);pointer-events:none;background-color:var(--art-widget-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease;box-shadow:0 1px 3px #0003,0 1px 2px -1px #0003}.art-bottom .art-progress:hover .art-control-progress .art-control-progress-inner{height:100%}.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{transform:scale(1)}.art-progress-hover .art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip,.art-progress-hover .art-bottom .art-progress .art-control-thumbnails{transform:scale(1);opacity:1}.art-video-player .art-controls{position:relative;z-index:10;pointer-events:auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;flex-shrink:0;height:auto;min-height:var(--art-control-height)}.art-video-player .art-controls .art-controls-left,.art-video-player .art-controls .art-controls-right{display:flex;flex-wrap:wrap;max-width:100%;min-height:var(--art-control-height)}.art-video-player .art-controls .art-controls-center{display:none;justify-content:center;align-items:center;flex:1;height:100%;padding:0 10px}.art-video-player .art-controls .art-controls-right{justify-content:flex-end;margin-left:auto}.art-video-player .art-controls .art-control{display:flex;justify-content:center;align-items:center;flex-shrink:0;max-width:100%;cursor:pointer;white-space:nowrap;opacity:var(--art-control-opacity);min-height:var(--art-control-height);min-width:var(--art-control-height);transition:opacity var(--art-transition-duration) ease}.art-video-player .art-controls .art-control .art-icon{height:var(--art-control-icon-size);width:var(--art-control-icon-size);transform:scale(var(--art-control-icon-scale));transition:transform var(--art-transition-duration) ease}.art-video-player .art-controls .art-control .art-icon:active{transform:scale(calc(var(--art-control-icon-scale) * .8))}.art-video-player .art-controls .art-control:hover{opacity:1}.art-control-volume{position:relative}.art-control-volume .art-volume-panel{display:flex;justify-content:center;align-items:center;position:absolute;left:0;right:0;padding:0 5px;font-size:12px;text-align:center;cursor:default;opacity:0;visibility:hidden;transform:translateY(10px);pointer-events:none;bottom:var(--art-control-height);width:var(--art-control-height);height:var(--art-volume-height);transition:opacity var(--art-transition-duration) ease,transform var(--art-transition-duration) ease}.art-control-volume .art-volume-panel .art-volume-inner{display:flex;flex-direction:column;align-items:center;gap:10px;height:100%;width:100%;padding:10px 0 12px;border-radius:var(--art-border-radius);background-color:var(--art-widget-background)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{flex:1;width:100%;display:flex;cursor:pointer;position:relative;justify-content:center}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{position:relative;display:flex;justify-content:center;width:2px;border-radius:var(--art-border-radius);overflow:hidden;background-color:#ffffff40}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded{position:absolute;inset:0;z-index:0;width:100%;height:100%;background-color:var(--art-theme)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator{position:absolute;width:var(--art-volume-handle-size);height:var(--art-volume-handle-size);margin-top:calc(var(--art-volume-handle-size) / -2);flex-shrink:0;transform:scale(1);border-radius:100%;background-color:var(--art-theme);transition:transform var(--art-transition-duration) ease}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator{transform:scale(.9)}.art-control-volume:hover .art-volume-panel,.art-control-volume:focus-within .art-volume-panel{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.art-video-player .art-notice{display:none;position:absolute;inset:0 0 auto;z-index:80;width:100%;height:100%;height:auto;padding:var(--art-padding);pointer-events:none}.art-video-player .art-notice .art-notice-inner{display:inline-flex;padding:5px;line-height:1;border-radius:var(--art-border-radius);background-color:var(--art-tip-background)}.art-video-player.art-notice-show .art-notice{display:flex}.art-video-player .art-contextmenus{display:none;flex-direction:column;position:absolute;z-index:120;padding:5px 0;border-radius:var(--art-border-radius);font-size:12px;background-color:var(--art-widget-background);min-width:var(--art-contextmenus-min-width)}.art-video-player .art-contextmenus .art-contextmenu{cursor:pointer;display:flex;padding:10px 15px;border-bottom:1px solid rgba(255,255,255,.1)}.art-video-player .art-contextmenus .art-contextmenu span{padding:0 8px}.art-video-player .art-contextmenus .art-contextmenu span:hover,.art-video-player .art-contextmenus .art-contextmenu span.art-current{color:var(--art-theme)}.art-video-player .art-contextmenus .art-contextmenu:hover{background-color:#ffffff1a}.art-video-player .art-contextmenus .art-contextmenu:last-child{border-bottom:none}.art-video-player.art-contextmenu-show .art-contextmenus{display:flex}.art-video-player .art-settings{display:none;flex-direction:column;position:absolute;z-index:90;left:auto;overflow-y:auto;overflow-x:hidden;border-radius:var(--art-border-radius);max-height:var(--art-settings-max-height);right:var(--art-padding);bottom:var(--art-controls-height, var(--art-control-height));transition:all var(--art-transition-duration) ease;background-color:var(--art-widget-background)}.art-video-player .art-settings .art-setting-panel{display:none;flex-direction:column}.art-video-player .art-settings .art-setting-panel.art-current{display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item{display:flex;justify-content:space-between;align-items:center;gap:5px;padding:0 5px;cursor:pointer;overflow:hidden;transition:background-color var(--art-transition-duration) ease}.art-video-player .art-settings .art-setting-panel .art-setting-item:hover{background-color:#ffffff1a}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current{color:var(--art-theme)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check{visibility:hidden;height:15px}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check{visibility:visible}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left{display:flex;justify-content:center;align-items:center;flex-shrink:1;min-width:0;overflow:hidden;gap:5px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;height:var(--art-settings-icon-size);width:var(--art-settings-icon-size)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right{display:flex;justify-content:center;align-items:center;flex-shrink:0;min-width:0;max-width:55%;gap:5px;font-size:12px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#ffffff80}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;min-width:32px;height:24px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{height:3px;width:80px;outline:none;appearance:none;background-color:#fff3}.art-video-player .art-settings .art-setting-panel .art-setting-item-back{border-bottom:1px solid rgba(255,255,255,.1)}.art-video-player.art-setting-show .art-settings{display:flex}.art-video-player .art-info{display:none;position:absolute;left:var(--art-padding);top:var(--art-padding);z-index:100;padding:10px;font-size:12px;border-radius:var(--art-border-radius);background-color:var(--art-widget-background)}.art-video-player .art-info .art-info-panel{display:flex;flex-direction:column;gap:5px}.art-video-player .art-info .art-info-panel .art-info-item{display:flex;align-items:center;gap:5px}.art-video-player .art-info .art-info-panel .art-info-item .art-info-title{width:100px;text-align:right}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;user-select:all}.art-video-player .art-info .art-info-close{position:absolute;top:5px;right:5px;cursor:pointer}.art-video-player.art-info-show .art-info{display:flex}.art-hide-cursor *{cursor:none!important}.art-video-player[data-aspect-ratio]{overflow:hidden}.art-video-player[data-aspect-ratio] .art-video{object-fit:fill;box-sizing:content-box}.art-fullscreen{--art-progress-height: 8px;--art-indicator-size: 20px;--art-control-height: 60px;--art-control-icon-scale: 1.3}.art-fullscreen-web{--art-progress-height: 8px;--art-indicator-size: 20px;--art-control-height: 60px;--art-control-icon-scale: 1.3;position:fixed;inset:0;z-index:var(--art-fullscreen-web-index);width:100%;height:100%}.art-mini-popup{position:fixed;z-index:9999;width:320px;height:180px;max-width:100vw;max-height:100vh;background:#000;border-radius:var(--art-border-radius);cursor:move;user-select:none;overflow:hidden;transition:opacity .2s ease;box-shadow:0 0 5px #00000080}.art-mini-popup svg{fill:#fff}.art-mini-popup .art-video{pointer-events:none}.art-mini-popup .art-mini-close{position:absolute;z-index:20;right:10px;top:10px;cursor:pointer;opacity:0;transition:opacity .2s ease}.art-mini-popup .art-mini-state{position:absolute;inset:0;z-index:30;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none;opacity:0;transition:opacity .2s ease;background-color:#00000040}.art-mini-popup .art-mini-state .art-icon{opacity:.75;cursor:pointer;transform:scale(3);pointer-events:auto;transition:transform .2s ease}.art-mini-popup .art-mini-state .art-icon:active{transform:scale(2.5)}.art-mini-popup.art-mini-dragging{opacity:.9}.art-mini-popup:hover .art-mini-close,.art-mini-popup:focus-within .art-mini-close,.art-mini-popup:hover .art-mini-state,.art-mini-popup:focus-within .art-mini-state{opacity:1}.art-mini-popup [role=button]:focus-visible{outline:2px solid #fff;outline-offset:-2px}.art-video-player[data-flip=horizontal] .art-video{transform:scaleX(-1)}.art-video-player[data-flip=vertical] .art-video{transform:scaleY(-1)}.art-video-player .art-layer-lock{display:none;justify-content:center;align-items:center;position:absolute;top:50%;border-radius:50%;transform:translateY(-50%);height:var(--art-lock-size);width:var(--art-lock-size);left:var(--art-padding);background-color:var(--art-tip-background)}.art-video-player .art-layer-auto-playback{display:none;gap:10px;align-items:center;position:absolute;border-radius:var(--art-border-radius);padding:10px;line-height:1;left:var(--art-padding);bottom:calc(var(--art-controls-height, var(--art-control-height)) + var(--art-bottom-gap) + 10px);background-color:var(--art-widget-background)}.art-video-player .art-layer-auto-playback .art-auto-playback-close{display:flex;justify-content:center;align-items:center;cursor:pointer}.art-video-player .art-layer-auto-playback .art-auto-playback-close svg{width:15px;height:15px;fill:var(--art-theme)}.art-video-player .art-layer-auto-playback .art-auto-playback-jump{color:var(--art-theme);cursor:pointer}.art-video-player.art-lock .art-layer-lock{display:flex}.art-video-player.art-lock:not(.art-control-show) .art-layer-lock{opacity:0;pointer-events:none}.art-video-player.art-lock:not(.art-control-show) .art-layer-lock:focus-within{opacity:1;pointer-events:auto}.art-video-player.art-lock .art-subtitle{bottom:var(--art-subtitle-bottom)!important}.art-video-player.art-mini-progress-bar .art-bottom,.art-video-player.art-lock .art-bottom{opacity:1;padding:0;background-image:none}.art-video-player.art-mini-progress-bar .art-bottom .art-controls,.art-video-player.art-lock .art-bottom .art-controls,.art-video-player.art-mini-progress-bar .art-bottom .art-progress,.art-video-player.art-lock .art-bottom .art-progress{transform:translateY(calc(var(--art-controls-height, var(--art-control-height)) + var(--art-bottom-gap) + var(--art-progress-height) / 4))}.art-video-player.art-mini-progress-bar .art-bottom .art-progress-indicator,.art-video-player.art-lock .art-bottom .art-progress-indicator{display:none!important}.art-video-player.art-control-show .art-layer-lock{display:flex}.art-control-selector{position:relative;display:flex;justify-content:center}.art-control-selector .art-selector-list{display:flex;flex-direction:column;align-items:center;text-align:center;position:absolute;border-radius:var(--art-border-radius);overflow-y:auto;overflow-x:hidden;opacity:0;visibility:hidden;transform:translateY(10px);pointer-events:none;bottom:var(--art-control-height);max-height:var(--art-selector-max-height);background-color:var(--art-widget-background);transition:opacity var(--art-transition-duration) ease,transform var(--art-transition-duration) ease}.art-control-selector .art-selector-list .art-selector-item{display:flex;justify-content:center;align-items:center;width:100%;padding:10px 15px;flex-shrink:0;line-height:1}.art-control-selector .art-selector-list .art-selector-item:hover{background-color:#ffffff1a}.art-control-selector .art-selector-list .art-selector-item:hover,.art-control-selector .art-selector-list .art-selector-item.art-current{color:var(--art-theme)}.art-control-selector:hover:not(.art-selector-dismissed) .art-selector-list,.art-control-selector.art-selector-open .art-selector-list{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.art-video-player [class*=hint--]{position:relative;display:inline-block;font-style:normal}.art-video-player [class*=hint--]:before,.art-video-player [class*=hint--]:after{position:absolute;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);transform:translateZ(0);visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;-webkit-transition:.3s ease;-moz-transition:.3s ease;transition:.3s ease;-webkit-transition-delay:0ms;-moz-transition-delay:0ms;transition-delay:0ms}.art-video-player [class*=hint--]:hover:before,.art-video-player [class*=hint--]:hover:after{visibility:visible;opacity:1}.art-video-player [class*=hint--]:hover:before,.art-video-player [class*=hint--]:hover:after{-webkit-transition-delay:.1s;-moz-transition-delay:.1s;transition-delay:.1s}.art-video-player [class*=hint--]:before{content:"";position:absolute;background:transparent;border:6px solid transparent;z-index:1000001}.art-video-player [class*=hint--]:after{background:#000;color:#fff;padding:8px 10px;font-size:12px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:12px;white-space:nowrap}.art-video-player [class*=hint--][aria-label]:after{content:attr(aria-label)}.art-video-player [class*=hint--][data-hint]:after{content:attr(data-hint)}.art-video-player [aria-label=""]:before,.art-video-player [aria-label=""]:after,.art-video-player [data-hint=""]:before,.art-video-player [data-hint=""]:after{display:none!important}.art-video-player .hint--top-left:before{border-top-color:#000}.art-video-player .hint--top-right:before{border-top-color:#000}.art-video-player .hint--top:before{border-top-color:#000}.art-video-player .hint--bottom-left:before{border-bottom-color:#000}.art-video-player .hint--bottom-right:before{border-bottom-color:#000}.art-video-player .hint--bottom:before{border-bottom-color:#000}.art-video-player .hint--left:before{border-left-color:#000}.art-video-player .hint--right:before{border-right-color:#000}.art-video-player .hint--top:before{margin-bottom:-11px}.art-video-player .hint--top:before,.art-video-player .hint--top:after{bottom:100%;left:50%}.art-video-player .hint--top:before{left:calc(50% - 6px)}.art-video-player .hint--top:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translate(-50%)}.art-video-player .hint--top:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top:hover:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translate(-50%) translateY(-8px)}.art-video-player .hint--bottom:before{margin-top:-11px}.art-video-player .hint--bottom:before,.art-video-player .hint--bottom:after{top:100%;left:50%}.art-video-player .hint--bottom:before{left:calc(50% - 6px)}.art-video-player .hint--bottom:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translate(-50%)}.art-video-player .hint--bottom:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom:hover:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translate(-50%) translateY(8px)}.art-video-player .hint--right:before{margin-left:-11px;margin-bottom:-6px}.art-video-player .hint--right:after{margin-bottom:-14px}.art-video-player .hint--right:before,.art-video-player .hint--right:after{left:100%;bottom:50%}.art-video-player .hint--right:hover:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--right:hover:after{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--left:before{margin-right:-11px;margin-bottom:-6px}.art-video-player .hint--left:after{margin-bottom:-14px}.art-video-player .hint--left:before,.art-video-player .hint--left:after{right:100%;bottom:50%}.art-video-player .hint--left:hover:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--left:hover:after{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--top-left:before{margin-bottom:-11px}.art-video-player .hint--top-left:before,.art-video-player .hint--top-left:after{bottom:100%;left:50%}.art-video-player .hint--top-left:before{left:calc(50% - 6px)}.art-video-player .hint--top-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translate(-100%)}.art-video-player .hint--top-left:after{margin-left:12px}.art-video-player .hint--top-left:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top-left:hover:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translate(-100%) translateY(-8px)}.art-video-player .hint--top-right:before{margin-bottom:-11px}.art-video-player .hint--top-right:before,.art-video-player .hint--top-right:after{bottom:100%;left:50%}.art-video-player .hint--top-right:before{left:calc(50% - 6px)}.art-video-player .hint--top-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translate(0)}.art-video-player .hint--top-right:after{margin-left:-12px}.art-video-player .hint--top-right:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top-right:hover:after{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--bottom-left:before{margin-top:-11px}.art-video-player .hint--bottom-left:before,.art-video-player .hint--bottom-left:after{top:100%;left:50%}.art-video-player .hint--bottom-left:before{left:calc(50% - 6px)}.art-video-player .hint--bottom-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translate(-100%)}.art-video-player .hint--bottom-left:after{margin-left:12px}.art-video-player .hint--bottom-left:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom-left:hover:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translate(-100%) translateY(8px)}.art-video-player .hint--bottom-right:before{margin-top:-11px}.art-video-player .hint--bottom-right:before,.art-video-player .hint--bottom-right:after{top:100%;left:50%}.art-video-player .hint--bottom-right:before{left:calc(50% - 6px)}.art-video-player .hint--bottom-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translate(0)}.art-video-player .hint--bottom-right:after{margin-left:-12px}.art-video-player .hint--bottom-right:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom-right:hover:after{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--small:after,.art-video-player .hint--medium:after,.art-video-player .hint--large:after{white-space:normal;line-height:1.4em;word-wrap:break-word}.art-video-player .hint--small:after{width:80px}.art-video-player .hint--medium:after{width:150px}.art-video-player .hint--large:after{width:300px}.art-video-player [class*=hint--]:after{text-shadow:0 -1px 0px black;box-shadow:4px 4px 8px #0000004d}.art-video-player .hint--error:after{background-color:#b34e4d;text-shadow:0 -1px 0px #592726}.art-video-player .hint--error.hint--top-left:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--top-right:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--top:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--bottom-left:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--bottom-right:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--left:before{border-left-color:#b34e4d}.art-video-player .hint--error.hint--right:before{border-right-color:#b34e4d}.art-video-player .hint--warning:after{background-color:#c09854;text-shadow:0 -1px 0px #6c5328}.art-video-player .hint--warning.hint--top-left:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--top-right:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--top:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--bottom-left:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--bottom-right:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--bottom:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--left:before{border-left-color:#c09854}.art-video-player .hint--warning.hint--right:before{border-right-color:#c09854}.art-video-player .hint--info:after{background-color:#3986ac;text-shadow:0 -1px 0px #1a3c4d}.art-video-player .hint--info.hint--top-left:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--top-right:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--top:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--bottom-left:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--bottom-right:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--bottom:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--left:before{border-left-color:#3986ac}.art-video-player .hint--info.hint--right:before{border-right-color:#3986ac}.art-video-player .hint--success:after{background-color:#458746;text-shadow:0 -1px 0px #1a321a}.art-video-player .hint--success.hint--top-left:before{border-top-color:#458746}.art-video-player .hint--success.hint--top-right:before{border-top-color:#458746}.art-video-player .hint--success.hint--top:before{border-top-color:#458746}.art-video-player .hint--success.hint--bottom-left:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--bottom-right:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--bottom:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--left:before{border-left-color:#458746}.art-video-player .hint--success.hint--right:before{border-right-color:#458746}.art-video-player .hint--always:after,.art-video-player .hint--always:before{opacity:1;visibility:visible}.art-video-player .hint--always.hint--top:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translate(-50%) translateY(-8px)}.art-video-player .hint--always.hint--top-left:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top-left:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translate(-100%) translateY(-8px)}.art-video-player .hint--always.hint--top-right:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top-right:after{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--bottom:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translate(-50%) translateY(8px)}.art-video-player .hint--always.hint--bottom-left:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom-left:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translate(-100%) translateY(8px)}.art-video-player .hint--always.hint--bottom-right:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom-right:after{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--left:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--always.hint--left:after{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--always.hint--right:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--always.hint--right:after{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--rounded:after{border-radius:4px}.art-video-player .hint--no-animate:before,.art-video-player .hint--no-animate:after{-webkit-transition-duration:0ms;-moz-transition-duration:0ms;transition-duration:0ms}.art-video-player .hint--bounce:before,.art-video-player .hint--bounce:after{-webkit-transition:opacity .3s ease,visibility .3s ease,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s ease,visibility .3s ease,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s ease,visibility .3s ease,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.art-video-player .hint--no-shadow:before,.art-video-player .hint--no-shadow:after{text-shadow:initial;box-shadow:initial}.art-video-player .hint--no-arrow:before{display:none}.art-video-player.art-mobile{--art-bottom-gap: 10px;--art-control-height: 38px;--art-control-icon-scale: 1;--art-state-size: 60px;--art-settings-max-height: 180px;--art-selector-max-height: 180px;--art-indicator-scale: 1;--art-control-opacity: 1}.art-video-player.art-mobile .art-controls-left{margin-left:calc(var(--art-padding) / -1)}.art-video-player.art-mobile .art-controls-right{margin-right:calc(var(--art-padding) / -1)}.art-video-player [tabindex]:focus-visible,.art-video-player input:focus-visible,.art-video-player button:focus-visible,.art-video-player a:focus-visible{outline:2px solid currentColor;outline-offset:-2px}.art-video-player.art-keyboard-focus :focus{outline:2px solid currentColor;outline-offset:-2px}.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom{opacity:1}.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom .art-controls,.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom .art-progress{transform:translateY(0)}';class io{constructor(t){var e;this.scope=t.child(),this.cancelled=new Promise(t=>{this.scope.add(()=>{t(void 0)})}),this.signal=null==(e=function(t){if("undefined"===typeof AbortController)return;const e=new AbortController;return t.add(()=>{e.abort()}),e}(this.scope))?void 0:e.signal}get active(){return!this.scope.closed}cancel(){this.scope.dispose()}run(t){return c(this,null,function*(){if(this.active)try{return yield Promise.race([t(),this.cancelled])}finally{this.cancel()}})}}const ao=new WeakMap;function so(t){return ao.get(t)}function lo(t){const e=t.ownedURL;t.ownedURL=void 0,e&&URL.revokeObjectURL(e)}const co=Zt;class uo extends co{constructor(t){super(t),this.name="subtitle",this.option=null,this.destroyEvent=()=>null;const e=function(t,e){const r=P(e).child(),n={scope:r,revision:0,render:0,trackRevision:0};return ao.set(t,n),r.add(()=>{lo(n)}),n}(this,t);this.init(t.option.subtitle).catch(()=>{});let r=!1;const n=()=>{if(e.scope.closed||!this.url)return;const n=t.template.$video.webkitDisplayingFullscreen;"boolean"===typeof n&&n!==r&&(r=n,this.createTrack(n?"subtitles":"metadata",this.url))};t.on("video:timeupdate",n),e.scope.add(()=>{t.off("video:timeupdate",n)})}get url(){return this.art.template.$track.src}set url(t){this.switch(t).catch(()=>{})}get textTrack(){var t,e;return null==(e=null==(t=this.art.template.$video)?void 0:t.textTracks)?void 0:e[0]}get activeCues(){var t;return Array.from((null==(t=this.textTrack)?void 0:t.activeCues)||[])}get cues(){var t;return Array.from((null==(t=this.textTrack)?void 0:t.cues)||[])}style(t,e){const{$subtitle:r}=this.art.template;return"object"===typeof t?rt(r,t):et(r,t,e)}update(){!function(t){const e=so(t);if(e.scope.closed)return;const r=e.revision,n=++e.render,o=()=>!e.scope.closed&&e.revision===r&&e.render===n,{art:i}=t,{$subtitle:a}=i.template;if(a.innerHTML="",!t.activeCues.length)return;if(i.emit("subtitleBeforeUpdate",t.activeCues),!o())return;const s=t.activeCues.map((t,e)=>t.text.split(/\r?\n/).filter(t=>t.trim()).map(t=>`
\n ${i.option.subtitle.escape?mt(t):t}\n
`).join("")).join("");o()&&(a.innerHTML=s,i.emit("subtitleAfterUpdate",t.activeCues))}(this)}switch(t){return c(this,arguments,function*(t,e={}){const{i18n:r,notice:n,option:o}=this.art,i=l(s(s({},o.subtitle),e),{url:t}),a=so(this),c=a.revision+1,d=yield this.init(i);return!a.scope.closed&&a.revision===c&&e.name&&(n.show=`${r.get("Switch Subtitle")}: ${e.name}`),d})}createTrack(t,e){!function(t,e,r){const n=so(t);if(n.scope.closed)return;const o=++n.trackRevision,{art:i}=t,{template:a}=i,s=a.$track,l=s.parentNode,c=s.nextSibling,d=document.createElement("track"),u=n.scope.child();u.add(()=>{d.onload=null,d.onerror=null});let p=!1;try{if(d.default=!0,d.kind=e,d.src=r,d.label=i.option.subtitle.name||"Artplayer",d.track.mode="hidden",d.onload=()=>{u.closed||a.$track!==d||i.emit("subtitleLoad",t.cues,t.option)},d.onerror=()=>{u.closed||a.$track!==d||(i.notice.show=new Error("Failed to load subtitle track"))},u.closed||n.trackRevision!==o)return void u.dispose();s.remove(),a.$video.appendChild(d),a.$track=d;const l=t.textTrack,c=l?i.proxy(l,"cuechange",()=>{u.closed||a.$track!==d||t.update()}):()=>{};if(u.add(()=>{i.events.remove(c)}),u.closed||n.trackRevision!==o)return u.dispose(),void d.remove();const f=n.track;n.track=u,t.destroyEvent=c,s.onload=null,s.onerror=null,p=!0;try{null==f||f.dispose()}finally{n.ownedURL&&n.ownedURL!==r&&lo(n)}}catch(f){if(p)throw f;if(u.dispose(),d.remove(),n.scope.closed||n.trackRevision!==o)throw f;throw a.$track=s,l&&l.insertBefore(s,(null==c?void 0:c.parentNode)===l?c:null),f}}(this,t,e)}init(t){return c(this,null,function*(){const e=so(this),r=function(t){const e=t.request,r=new io(t.scope);return t.request=r,t.revision+=1,null==e||e.cancel(),r}(e),{notice:n,template:{$subtitle:o}}=this.art;return r.run(()=>c(this,null,function*(){if(!this.textTrack)return null;if(h(t,Gt.subtitle),!t.url)return;let i;this.option=t,this.style(t.style);try{if(!r.active)return;const n=yield fetch(t.url,{signal:r.signal});if(!r.active)return;if(!n.ok)throw new Error(`Failed to load subtitle: ${n.status} ${n.statusText}`);const a=yield n.arrayBuffer();if(!r.active)return;const s=function(t,e){const r=new TextDecoder(e.encoding).decode(t);switch(e.type||st(e.url)){case"srt":return{vtt:e.onVttLoad(xt(r))};case"ass":return{vtt:e.onVttLoad($t(r))};case"vtt":return{vtt:e.onVttLoad(r)};default:return}}(a,t);if(!r.active)return;const l=void 0===s?t.url:i=kt(s.vtt);if(!r.active)return;o.innerHTML="";const c=e.trackRevision+1;if(this.url!==l&&this.createTrack("metadata",l),!r.active||e.trackRevision>c)return;return i&&(e.ownedURL=i,i=void 0),l}catch(a){if(!r.active)return;throw o.innerHTML="",n.show=a,a}finally{i&&(e.scope.closed||this.url!==i?URL.revokeObjectURL(i):e.ownedURL=i)}}))})}}const po=`\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Player version:
\n
${m}
\n
\n
\n
Video url:
\n
\n
\n
\n
Video volume:
\n
\n
\n
\n
Video time:
\n
\n
\n
\n
Video duration:
\n
\n
\n
\n
Video resolution:
\n
\n x \n
\n
\n
\n
[x]
\n
\n
\n
\n `;class fo{constructor(t){this.art=t;const{option:e,constructor:r}=t;e.container instanceof Element?this.$container=e.container:(this.$container=H(e.container),it(this.$container,`No container element found by ${e.container}`)),it(V(),"The current browser does not support flex layout");const n=this.$container.tagName.toLowerCase();it("div"===n,`Unsupported container element type, only support 'div' but got '${n}'`),it(r.instances.every(t=>t.template.$container!==this.$container),"Cannot mount multiple instances on the same dom element"),this.query=this.query.bind(this),function(t,e,r){const n=T.get(e);if(n&&n!==t)throw new Error("Cannot mount multiple instances on the same dom element");const o=L(t);o.rollback=r,T.set(e,t),o.releaseContainer=()=>{T.get(e)===t&&T.delete(e)}}(t,this.$container,qn(this.$container)),function(t,e,r){const n=L(t),o=n.mountingTemplate;n.mountingTemplate=e;try{r()}finally{n.mountingTemplate=o}}(t,this,()=>{this.$container.dataset.artId=String(t.id),this.init()})}static get html(){return po}query(t){return H(t,this.$container)}init(){const{option:t}=this.art;var e;if(t.useSSR||(this.$container.innerHTML=fo.html),(e=this).$player=e.query(".art-video-player"),e.$video=e.query(".art-video"),e.$track=e.query("track"),e.$poster=e.query(".art-poster"),e.$subtitle=e.query(".art-subtitle"),e.$danmuku=e.query(".art-danmuku"),e.$bottom=e.query(".art-bottom"),e.$progress=e.query(".art-progress"),e.$controls=e.query(".art-controls"),e.$controlsLeft=e.query(".art-controls-left"),e.$controlsCenter=e.query(".art-controls-center"),e.$controlsRight=e.query(".art-controls-right"),e.$layer=e.query(".art-layers"),e.$loading=e.query(".art-loading"),e.$notice=e.query(".art-notice"),e.$noticeInner=e.query(".art-notice-inner"),e.$mask=e.query(".art-mask"),e.$state=e.query(".art-state"),e.$setting=e.query(".art-settings"),e.$info=e.query(".art-info"),e.$infoPanel=e.query(".art-info-panel"),e.$infoClose=e.query(".art-info-close"),e.$contextmenu=e.query(".art-contextmenus"),t.proxy){const e=t.proxy.call(this.art,this.art);if(M(this.art))return;!function(t){it(t instanceof HTMLVideoElement||t instanceof HTMLCanvasElement,"Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'")}(e),Z(e,this.$video),e.className="art-video",this.$video=e}t.backdrop&&j(this.$player,"art-backdrop"),k&&j(this.$player,"art-mobile")}destroy(t){t?this.$container.innerHTML="":j(this.$player,"art-destroy")}}const ho=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);class mo{on(t,e,r){const n=this.e||(this.e={});let o=ho(n,t)?n[t]:void 0;return o||(o=[],Object.defineProperty(n,t,{value:o,enumerable:!0,configurable:!0,writable:!0})),o.push({fn:e,ctx:r}),this}once(t,e,r){const n=this,o=e;let i=!1;function a(...e){i||(i=!0,n.off(t,a),o.apply(r,e))}return a._=e,this.on(t,a,r)}emit(t,...e){const r=this.e||(this.e={}),n=(ho(r,t)&&r[t]||[]).slice();for(const o of n)o.fn.apply(o.ctx,e);return this}off(t,e){const r=this.e||(this.e={}),n=ho(r,t)?r[t]:void 0,o=[];if(n&&e)for(let i=0,a=n.length;i{e.destroying||e.finalizers.dispose()})}(this);try{if(this.template=new fo(this),P(this).closed)return;if(this.events=new Be(this),P(this).closed)return;if(this.storage=new no,P(this).closed)return;if(this.icons=new Je(this),P(this).closed)return;if(this.i18n=new Ke(this),P(this).closed)return;if(this.notice=new lr(this),P(this).closed)return;if(this.player=new qr(this),P(this).closed)return;if(this.layers=new nr(this),P(this).closed)return;if(this.controls=new Re(this),P(this).closed)return;if(this.contextmenu=new ie(this),P(this).closed)return;if(this.subtitle=new uo(this),P(this).closed)return;if(this.info=new rr(this),P(this).closed)return;if(this.loading=new or(this),P(this).closed)return;if(this.hotkey=new Xe(this),P(this).closed)return;if(this.mask=new ir(this),P(this).closed)return;if(this.setting=new ro(this),P(this).closed)return;if(this.plugins=new sn(this),P(this).closed)return;if("function"===typeof e&&this.on("ready",()=>e.call(this,this)),yo.DEBUG){const t=t=>console.log(`[ART.${this.id}] -> ${t}`);t(`Version@${yo.version}`);for(let e=0;et(`Event@${e.type}`))}(function(t){const e=L(t);return e.rollback=void 0,!e.scope.closed})(this)&&go.push(this)}catch(r){try{z(this,go,!0,yo.REMOVE_SRC_WHEN_DESTROY,!0)}catch(n){console.warn("Failed to clean up ArtPlayer initialization:",n)}throw r}}static get instances(){return go}static get version(){return m}static get config(){return E}static get utils(){return Et}static get scheme(){return Gt}static get Emitter(){return mo}static get validator(){return h}static get kindOf(){return h.kindOf}static get html(){return fo.html}static get option(){return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:t=>t},moreVideoAttr:{controls:!1,preload:b?"auto":"metadata"},i18n:{},icons:{},cssVar:{},customType:{},lang:"undefined"===typeof navigator||null==navigator?void 0:navigator.language.toLowerCase()}}get proxy(){return this.events.proxy}get query(){return this.template.query}get video(){return this.template.$video}reset(){this.video.removeAttribute("src"),this.video.load()}destroy(t=!0){z(this,go,t,yo.REMOVE_SRC_WHEN_DESTROY)}}var bo,wo;return yo.STYLE=oo,yo.DEBUG=!1,yo.CONTEXTMENU=!0,yo.NOTICE_TIME=2e3,yo.SETTING_WIDTH=250,yo.SETTING_ITEM_WIDTH=200,yo.SETTING_ITEM_HEIGHT=35,yo.RESIZE_TIME=200,yo.SCROLL_TIME=200,yo.SCROLL_GAP=50,yo.AUTO_PLAYBACK_MAX=10,yo.AUTO_PLAYBACK_MIN=5,yo.AUTO_PLAYBACK_TIMEOUT=3e3,yo.RECONNECT_TIME_MAX=5,yo.RECONNECT_SLEEP_TIME=1e3,yo.CONTROL_HIDE_TIME=3e3,yo.DBCLICK_TIME=300,yo.DBCLICK_FULLSCREEN=!0,yo.MOBILE_DBCLICK_PLAY=!0,yo.MOBILE_CLICK_PLAY=!1,yo.AUTO_ORIENTATION_TIME=200,yo.INFO_LOOP_TIME=1e3,yo.FAST_FORWARD_VALUE=3,yo.FAST_FORWARD_TIME=1e3,yo.TOUCH_MOVE_RATIO=.5,yo.VOLUME_STEP=.1,yo.SEEK_STEP=5,yo.PLAYBACK_RATE=[.5,.75,1,1.25,1.5,2],yo.ASPECT_RATIO=["default","4:3","16:9"],yo.FLIP=["normal","horizontal","vertical"],yo.FULLSCREEN_WEB_IN_BODY=!0,yo.LOG_VERSION=!0,yo.USE_RAF=!1,yo.REMOVE_SRC_WHEN_DESTROY=!0,bo=yo,wo=oo,$&&(window.Artplayer=bo,v("artplayer-style",wo),setTimeout(()=>{bo.LOG_VERSION&&console.log(`%c ArtPlayer %c ${bo.version} %c https://artplayer.org`,"color: #fff; background: #5f5f5f","color: #fff; background: #4bc729","")},100)),yo}); +!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.Artplayer=e(),define(function(){return t.Artplayer})):(t="undefined"!==typeof globalThis?globalThis:t||self).Artplayer=e()}(this,function(){"use strict";var t=Object.defineProperty,e=Object.defineProperties,r=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable,a=(e,r,n)=>r in e?t(e,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[r]=n,s=(t,e)=>{for(var r in e||(e={}))o.call(e,r)&&a(t,r,e[r]);if(n)for(var r of n(e))i.call(e,r)&&a(t,r,e[r]);return t},l=(t,n)=>e(t,r(n)),c=(t,e,r)=>new Promise((n,o)=>{var i=t=>{try{s(r.next(t))}catch(e){o(e)}},a=t=>{try{s(r.throw(t))}catch(e){o(e)}},s=t=>t.done?n(t.value):Promise.resolve(t.value).then(i,a);s((r=r.apply(t,e)).next())});function d(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var u,p={exports:{}};var f=(u||(u=1,p.exports=function(){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}var e=Object.prototype.toString,r=function(r){if(void 0===r)return"undefined";if(null===r)return"null";var o=t(r);if("boolean"===o)return"boolean";if("string"===o)return"string";if("number"===o)return"number";if("symbol"===o)return"symbol";if("function"===o)return"GeneratorFunction"===n(r)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(r))return"array";if(function(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}(r))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(r))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(r))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(r))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(r))return"regexp";switch(n(r)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(r))return"generator";switch(o=e.call(r)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return o.slice(8,-1).toLowerCase().replace(/\s/g,"")};function n(t){return t.constructor?t.constructor.name:null}function o(t,e){var n=2{document.head.appendChild(r)}):(document.head||document.documentElement).appendChild(r)),r.textContent=e}const g=globalThis.CUSTOM_USER_AGENT,y=null!=g?g:"undefined"===typeof navigator?"":navigator.userAgent,b=/^(?:(?!chrome|android).)*safari/i.test(y),w=/iPad|iPhone|iPod/i.test(y)&&("undefined"===typeof window||!window.MSStream),x=w||y.includes("Macintosh")&&"undefined"!==typeof navigator&&navigator.maxTouchPoints>=1,k=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(y)||x,$="undefined"!==typeof window&&"undefined"!==typeof document;const E={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webkitSupportsFullscreen","webkitDisplayingFullscreen","onenterpictureinpicture","onleavepictureinpicture","disablePictureInPicture","cancelVideoFrameCallback","requestVideoFrameCallback","getVideoPlaybackQuality","requestPictureInPicture","webkitEnterFullScreen","webkitEnterFullscreen","webkitExitFullScreen","webkitExitFullscreen"]};class A extends Error{constructor(t){super("Failed to release ArtPlayer resources"),this.errors=t,this.name="ResourceCleanupError"}}class C{constructor(){this.cleanups=new Set,this.disposed=!1}get closed(){return this.disposed}add(t){let e=!0;const r=()=>{e&&(e=!1,this.cleanups.delete(r),t())};return this.closed?r():this.cleanups.add(r),r}child(){const t=new C,e=this.add(()=>{t.dispose()});return t.add(()=>{e()}),t}dispose(){if(this.closed)return;this.disposed=!0;const t=[];for(const r of Array.from(this.cleanups).reverse())try{r()}catch(e){e instanceof A?t.push(...e.errors):t.push(e)}if(t.length)throw new A(t)}}const S=new WeakMap,T=new WeakMap;function L(t){const e=S.get(t);if(!e)throw new Error("ArtPlayer lifecycle has not been initialized");return e}function P(t){return L(t).scope}function M(t){const e=L(t);return e.destroying||e.scope.closed}function z(t,e,r,n,o=!1){var i,a,s;const l=L(t);if(l.destroying||l.scope.closed)return;l.destroying=!0;const c=[],d=t=>{try{t()}catch(e){c.push(...e instanceof A?e.errors:[e])}};n&&(null==(i=t.template)?void 0:i.$video)&&d(()=>t.reset()),d(()=>l.scope.dispose()),d(()=>{var e;return null==(e=t.template||l.mountingTemplate)?void 0:e.destroy(r)});const u=e.indexOf(t);-1!==u&&e.splice(u,1),t.isDestroy=!0,o||(null==(a=l.releaseContainer)||a.call(l),l.releaseContainer=void 0),d(()=>t.emit("destroy")),d(()=>l.finalizers.dispose()),o&&l.rollback&&d(l.rollback),l.rollback=void 0,null==(s=l.releaseContainer)||s.call(l),l.releaseContainer=void 0;for(const p of c.slice(1))console.warn("Additional ArtPlayer cleanup failure:",p);if(c.length)throw c[0]}const R=new WeakMap;function O(t,e){const r=P(t).child();return R.set(e,r),r}function D(t){const e=R.get(t);if(!e)throw new Error("ArtPlayer component has not been registered");return e}function I(t){var e;null==(e=R.get(t))||e.dispose()}function N(t,e,r,n){const o=D(e);if(o.closed)return;const i=(...t)=>{if(!o.closed)return n(...t)};t.on(r,i),o.add(()=>{t.off(r,i)})}function _(t,e){return{on:(r,n)=>{N(t,e,r,n)},proxy:(r,n,o)=>function(t,e,r,n,o){const i=D(e);if(i.closed)return()=>{};const a=t.events.proxy(r,n,t=>{if(!i.closed)return o(t)});return i.add(()=>{t.events.remove(a)})}(t,e,r,n,o)}}function W(t){var e;if(t.composedPath)return t.composedPath();const r=[];let n=t.target;for(;n;)r.push(n),n=null!=(e=n.parentNode)?e:null;return"undefined"===typeof window||r.includes(window)||r.push(window),r}function F(t,e){return W(t).includes(e)}function V(){const t=document.createElement("div");return t.style.display="flex","flex"===t.style.display}function Y(t){return t.getBoundingClientRect()}function B(){const t=document.createElement("div");t.style.cssText="position:fixed;top:env(safe-area-inset-top,0px);right:env(safe-area-inset-right,0px);bottom:env(safe-area-inset-bottom,0px);left:env(safe-area-inset-left,0px);pointer-events:none;visibility:hidden;";try{document.body.appendChild(t);const e=getComputedStyle(t);return{top:Number.parseFloat(e.top)||0,right:Number.parseFloat(e.right)||0,bottom:Number.parseFloat(e.bottom)||0,left:Number.parseFloat(e.left)||0}}finally{t.remove()}}function H(t,e=document){return e.querySelector(t)}function j(t,e){return t.classList.add(e)}function q(t,e){return t.classList.remove(e)}function U(t,e){return t.classList.contains(e)}function X(t,e){return e instanceof Element?t.appendChild(e):t.insertAdjacentHTML("beforeend",String(e)),t.lastElementChild||t.lastChild}function G(t){return Array.from(t.parentElement.children).filter(e=>e!==t)}function K(t,e){G(t).forEach(t=>q(t,e)),j(t,e)}function Z(t,e){return e.parentNode.replaceChild(t,e),t}function J(t){return document.createElement(t)}function Q(t,e,r="top"){k||(t.setAttribute("aria-label",e),j(t,"hint--rounded"),j(t,`hint--${r}`))}function tt(t="",e=""){const r=J("i");return j(r,"art-icon"),j(r,`art-icon-${t}`),X(r,e),r}function et(t,e,r){return t.style[e]=r,t}function rt(t,e){for(const r in e)et(t,r,e[r]);return t}function nt(t,e,r){return new Promise((n,o)=>{const i=r?r.child():new C;let a=!1,s=()=>{};function l(t){if(!a){a=!0;try{i.dispose()}catch(e){console.warn("Additional image cleanup failure:",e)}try{s()}catch(e){console.warn("Additional image cleanup failure:",e)}o(t)}}function c(t){if(!a&&!i.closed){a=!0;try{i.dispose(),n(t)}catch(e){try{s()}finally{o(e)}}}}if(i.add(()=>{if(!a){a=!0;try{s()}finally{n(void 0)}}}),!i.closed)try{const n=new Image;d(n,()=>{if(!e||1===e)return void c(n);const t=document.createElement("canvas"),o=t.getContext("2d");if(t.width=n.width*e,t.height=n.height*e,!o)throw new TypeError("Canvas 2D context is unavailable");a||i.closed||(o.drawImage(n,0,0,t.width,t.height),a||i.closed||t.toBlob(t=>{if(!a&&!i.closed)try{if(!t)throw new Error("Unable to encode thumbnail image");const e=URL.createObjectURL(t);let n=!1;const o=()=>{n||(n=!0,URL.revokeObjectURL(e))};if(s=r?r.add(o):o,a||i.closed)return void s();const l=new Image;d(l,()=>c(l)),i.closed||(l.src=e)}catch(e){l(e)}}))}),i.closed||(n.src=t)}catch(u){l(u)}function d(e,r){e.onload=()=>{if(!a&&!i.closed)try{r()}catch(u){l(u)}},e.onerror=()=>l(new Error(`Image load failed: ${t}`)),i.add(()=>{e.onload=null,e.onerror=null,a||e.removeAttribute("src")})}})}class ot extends Error{constructor(t,e){super(t),"captureStackTrace"in Error&&"function"===typeof Error.captureStackTrace&&Error.captureStackTrace(this,e||this.constructor),this.name="ArtPlayerError"}}function it(t,e){if(!t)throw new ot(e);return t}function at(t){const e=t;return e&&"function"===typeof e.catch?e.catch(()=>{}):t}function st(t){const e=t.search(/[?#]/),r=(e<0?t:t.slice(0,e)).trim().toLowerCase();return r.slice(r.lastIndexOf(".")+1)}function lt(t,e){const r=document.createElement("a");r.style.display="none",r.href=t,r.download=e,document.body.appendChild(r);try{r.click()}finally{r.remove()}}function ct(t,e,r){return Math.max(Math.min(t,Math.max(e,r)),Math.min(e,r))}function dt(t){return t.charAt(0).toUpperCase()+t.slice(1)}function ut(t){if(!t)return"00:00";const e=Math.floor(t/3600),r=Math.floor((t-3600*e)/60),n=Math.floor(t-3600*e-60*r);return(e>0?[e,r,n]:[r,n]).map(t=>t<10?`0${t}`:String(t)).join(":")}const pt={"&":"&","<":"<",">":">","'":"'",'"':"""},ft={"&":"&","<":"<",">":">","'":"'",""":'"'},ht=/(&|<|>|'|")/g;function mt(t){return t.replace(/[&<>'"]/g,t=>pt[t]||t)}const vt=Object.defineProperty,{hasOwnProperty:gt}=Object.prototype;function yt(t,e){return gt.call(t,e)}function bt(t,e){return Object.getOwnPropertyDescriptor(t,e)}function wt(...t){const e=t=>!!t&&"object"===typeof t&&!Array.isArray(t);return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=t[n],i=r[n];let a;a=Array.isArray(o)&&Array.isArray(i)?o.concat(...i):e(o)&&e(i)?wt(o,i):i,vt(t,n,{value:a,enumerable:!0,configurable:!0,writable:!0})}),t),{})}function xt(t){return"WEBVTT \r\n\r\n".concat((e=t,e.replace(/(\d\d:\d\d:\d\d)[,.](\d+)/g,(t,e,r)=>{let n=r.slice(0,3);return 1===r.length&&(n=`${r}00`),2===r.length&&(n=`${r}0`),`${e},${n}`})).replace(/\{\\([ibu])\}/g,"").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").replace(/\{[\s\S]*?\}/g,"").concat("\r\n\r\n"));var e}function kt(t){return URL.createObjectURL(new Blob([t],{type:"text/vtt"}))}function $t(t){const e=new RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i");function r(t=""){return t.split(/[:.]/).map((t,e,r)=>{if(e===r.length-1){if(1===t.length)return`.${t}00`;if(2===t.length)return`.${t}0`}else if(1===t.length)return(0===e?"0":":0")+t;return 0===e?t:e===r.length-1?`.${t}`:`:${t}`}).join("")}return`WEBVTT\n\n${t.split(/\r?\n/).map(t=>{const n=t.match(e);if(!n)return null;const[,o="",i="",,,a=""]=n;return{start:r(o.trim()),end:r(i.trim()),text:a.replace(/\{[\s\S]*?\}/g,"").replace(/(\\N)/g,"\n").trim().split(/\r?\n/).map(t=>t.trim()).join("\n")}}).filter(t=>t).map((t,e)=>t?`${e+1}\n${t.start} --\x3e ${t.end}\n${t.text}`:"").filter(t=>t.trim()).join("\n\n")}`}const Et=Object.freeze(Object.defineProperty({__proto__:null,ArtPlayerError:ot,addClass:j,append:X,assToVtt:$t,capitalize:dt,clamp:ct,createElement:J,debounce:function(t,e){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>(r=void 0,t.apply(this,n)),e)}},def:vt,download:lt,errorHandle:it,escape:mt,get:bt,getComposedPath:W,getExt:st,getIcon:tt,getRect:Y,getSafeAreaInsets:B,getStyle:function(t,e,r=!0){const n=window.getComputedStyle(t,null).getPropertyValue(e);return r?Number.parseFloat(n):n},has:yt,hasClass:U,includeFromEvent:F,inverseClass:K,isBrowser:$,isIOS:w,isIOS13:x,isInViewport:function(t,e=0){const r=t.getBoundingClientRect(),n=window.innerHeight||document.documentElement.clientHeight,o=window.innerWidth||document.documentElement.clientWidth,i=r.top-e<=n&&r.top+r.height+e>=0,a=r.left-e<=o+e&&r.left+r.width+e>=0;return i&&a},isMobile:k,isSafari:b,loadImg:function(t,e){return nt(t,e,void 0)},mergeDeep:wt,query:H,queryAll:function(t,e=document){return Array.from(e.querySelectorAll(t))},remove:function(t){return t.parentNode.removeChild(t)},removeClass:q,replaceElement:Z,secondToTime:ut,setStyle:et,setStyleText:v,setStyles:rt,siblings:G,silencePromise:at,sleep:function(t=0){return new Promise(e=>setTimeout(e,t))},srtToVtt:xt,supportsFlex:V,throttle:function(t,e){let r=!1;return function(...n){r||(t.apply(this,n),r=!0,setTimeout(()=>{r=!1},e))}},tooltip:Q,unescape:function(t){return t.replace(ht,t=>ft[t]||t)},userAgent:y,vttToBlob:kt},Symbol.toStringTag,{value:"Module"}));function At(){}function Ct(t,e,r,n,o={}){const{capture:i=!1,once:a=!1,signal:s}=o;if(t.closed||(null==s?void 0:s.aborted))return At;let l=At;function c(e){a&&l(),t.closed||("function"===typeof n?n.call(this,e):n.handleEvent(e))}return e.addEventListener(r,c,o),l=t.add(()=>{try{e.removeEventListener(r,c,i)}finally{null==s||s.removeEventListener("abort",l)}}),null==s||s.addEventListener("abort",l,{once:!0}),l}function St(t,e,r){if(t.closed)return At;let n=!0,o=At;const i=setTimeout(()=>{n&&(o(),t.closed||e())},r);return o=t.add(()=>{n=!1,clearTimeout(i)}),o}function Tt(t,e=0){return t.closed?Promise.resolve(!1):new Promise(r=>{let n=!1,o=At;const i=setTimeout(()=>{n=!0,o(),r(!0)},e);o=t.add(()=>{clearTimeout(i),n||r(!1)})})}const Lt=new WeakSet;function Pt(t){Lt.add(t),t.preventDefault()}function Mt(t){return!t.altKey&&!t.ctrlKey&&!t.metaKey&&!t.isComposing&&229!==t.keyCode}function zt(t,e,r=()=>e.click(),n=()=>!0){if(t.closed)return;e.hasAttribute("role")||e.setAttribute("role","button"),e.hasAttribute("tabindex")||(e.tabIndex=0);let o=!1;const i=()=>n()&&"true"!==e.getAttribute("aria-disabled")&&!e.hasAttribute("disabled"),a=t=>(t.composedPath()[0]||t.target)===e;Ct(t,e,"keydown",t=>{const e=t;a(e)&&Mt(e)&&!e.defaultPrevented&&("Enter"===e.key?(Pt(e),!e.repeat&&i()&&r()):" "===e.key&&(Pt(e),!e.repeat&&i()&&(o=!0)))}),Ct(t,e,"keyup",t=>{const n=t;if(" "!==n.key)return;const s=o;o=!1,s&&a(n)&&Mt(n)&&!n.defaultPrevented&&i()&&e.ownerDocument.activeElement===e&&(Pt(n),r())}),Ct(t,e,"blur",()=>{o=!1}),t.add(()=>{o=!1})}function Rt(t,e){return X(t,e)}function Ot(t,e){return e.querySelector(t)}const Dt=new WeakSet;function It(t){const e=t.template.$player;!M(t)&&e.isConnected&&(e.hasAttribute("tabindex")||(e.setAttribute("tabindex","-1"),Dt.has(e)||(Dt.add(e),P(t).add(()=>{Dt.delete(e),"-1"===e.getAttribute("tabindex")&&e.removeAttribute("tabindex")}))),e.focus({preventScroll:!0}))}const Nt=new WeakSet,_t="[tabindex],button,input,select,textarea,a[href],[contenteditable]";function Wt(t){return[t,...t.querySelectorAll(_t)].find(t=>{var e;if(!t.matches(_t)||t.tabIndex<0||t.matches(":disabled")||t.closest("[inert]")||"true"===t.getAttribute("aria-disabled")||!t.getClientRects().length)return!1;const r=null==(e=t.ownerDocument.defaultView)?void 0:e.getComputedStyle(t);return"hidden"!==(null==r?void 0:r.visibility)&&"collapse"!==(null==r?void 0:r.visibility)})}function Ft(t,e,r){var n;const o=null==e?void 0:e.ownerDocument,i=null==o?void 0:o.activeElement;if(!["control","contextmenu"].includes(null!=(n=t.name)?n:"")||Nt.has(t)||!e||!o||!i||!e.contains(i))return()=>{};const a=t.art.template.$player,s=Array.from(a.querySelectorAll(`.art-${t.name}`)),l=s.indexOf(e),c=[...s.slice(l+1),...s.slice(0,l).reverse()];return Nt.add(t),()=>{var e;if(Nt.delete(t),M(t.art)||!a.isConnected||o.activeElement!==o.body)return;const n=r?null==(e=t.cache.get(r))?void 0:e.$ref:void 0;for(const t of[...n?[n]:[],...c]){if(!a.contains(t))continue;const e=Wt(t);if(e)return void e.focus({preventScroll:!0})}It(t.art)}}const Vt="array",Yt="boolean",Bt="string",Ht="number",jt="object",qt="function";function Ut(t,e,r){return it(e===Bt||e===Ht||t instanceof Element,`${r.join(".")} require '${Bt}' or 'Element' type`)}const Xt={html:Ut,disable:`?${Yt}`,name:`?${Bt}`,index:`?${Ht}`,style:`?${jt}`,click:`?${qt}`,mounted:`?${qt}`,tooltip:`?${Bt}|${Ht}`,width:`?${Ht}`,selector:`?${Vt}`,onSelect:`?${qt}`,switch:`?${Yt}`,onSwitch:`?${qt}`,range:`?${Vt}`,onRange:`?${qt}`,onChange:`?${qt}`},Gt={id:Bt,container:Ut,url:Bt,poster:Bt,type:Bt,theme:Bt,lang:Bt,volume:Ht,isLive:Yt,muted:Yt,autoplay:Yt,autoSize:Yt,autoMini:Yt,loop:Yt,flip:Yt,playbackRate:Yt,aspectRatio:Yt,screenshot:Yt,setting:Yt,hotkey:Yt,pip:Yt,mutex:Yt,backdrop:Yt,fullscreen:Yt,fullscreenWeb:Yt,subtitleOffset:Yt,miniProgressBar:Yt,useSSR:Yt,playsInline:Yt,lock:Yt,gesture:Yt,fastForward:Yt,autoPlayback:Yt,autoOrientation:Yt,airplay:Yt,proxy:`?${qt}`,plugins:[qt],layers:[Xt],contextmenu:[Xt],settings:[Xt],controls:[l(s({},Xt),{position:(t,e,r)=>{const n=["top","left","right"];return it("string"===typeof t&&n.includes(t),`${r.join(".")} only accept ${n.toString()} as parameters`)}})],quality:[{default:`?${Yt}`,html:Bt,url:Bt}],highlight:[{time:Ht,text:Bt}],thumbnails:{url:Bt,number:Ht,column:Ht,width:Ht,height:Ht,scale:Ht},subtitle:{url:Bt,name:Bt,type:Bt,style:jt,escape:Yt,encoding:Bt,onVttLoad:qt},moreVideoAttr:jt,i18n:jt,icons:jt,cssVar:jt,customType:jt},Kt=new WeakSet;class Zt{constructor(t){this.id=0,this.art=t,this.cache=new Map,this.add=this.add.bind(this),this.remove=this.remove.bind(this),this.update=this.update.bind(this)}get show(){return U(this.art.template.$player,`art-${this.name}-show`)}set show(t){const{$player:e}=this.art.template,r=`art-${this.name}-show`;t?j(e,r):q(e,r),this.art.emit(this.name,t)}toggle(){this.show=!this.show}add(t){var e;if(M(this.art))return;const r="function"===typeof t?t(this.art):t;if(M(this.art))return;if(r.html=r.html||"",h(r,Xt),!this.$parent||!this.name||r.disable)return;const n=r.name||`${this.name}${this.id}`,o=this.cache;it(!o.has(n),`Can't add an existing [${n}] to the [${this.name}]`),this.id+=1;const i=document.createElement("div"),a=O(this.art,i),s=[],l=Object.getOwnPropertyDescriptor(this,n);let c=!1;a.add(()=>{for(const t of s)this.art.events.remove(t)});try{if(a.closed)return;if(function(t,e,r,n,o,i){j(t,`art-${r}`),j(t,`art-${r}-${n}`);const a=Array.from(e.children);t.dataset.index=String(i.index||o);const s=a.find(e=>Number(e.dataset.index)>=Number(t.dataset.index));s?s.insertAdjacentElement("beforebegin",t):X(e,t),i.html&&X(t,i.html),i.style&&rt(t,i.style),i.tooltip&&Q(t,i.tooltip)}(i,this.$parent,this.name,n,this.id,r),a.closed)return;if(r.click){("control"===this.name&&!r.selector||"contextmenu"===this.name&&!i.querySelector("[data-value]"))&&!i.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")&&zt(a,i);const t=this.art.events.proxy(i,"click",t=>{a.closed||(t.preventDefault(),r.click.call(this.art,this,t))});s.push(t)}if(r.selector&&["left","right"].includes(r.position)&&this.selector(r,i,s),a.closed)return;return function(t,e,r){const n=t;"__proto__"===e?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r}(this,n,i),c=!0,o.set(n,{$ref:i,events:s,option:r}),r.mounted&&r.mounted.call(this.art,i),i}catch(d){try{I(i)}catch(u){console.warn("ArtPlayer component cleanup failed:",u)}throw(null==(e=o.get(n))?void 0:e.$ref)===i&&o.delete(n),c&&this[n]===i&&(l?Object.defineProperty(this,n,l):delete this[n]),i.remove(),d}}remove(t){it(this.cache.has(t),`Can't find [${t}] from the [${this.name}]`);const e=this.cache.get(t);if(Kt.has(e))return;const r=Ft(this,e.$ref);Kt.add(e);try{e.option.beforeUnmount&&e.option.beforeUnmount.call(this.art,e.$ref);try{I(e.$ref)}finally{this.cache.get(t)===e&&(this.cache.delete(t),delete this[t]),e.$ref.remove()}}finally{Kt.delete(e),r()}}update(t){var e;const r=Ft(this,null==(e=this.cache.get(t.name))?void 0:e.$ref,t.name);try{if(this.cache.has(t.name)){const e=this.cache.get(t.name);t=Object.assign(e.option,t),this.remove(t.name)}return this.add(t)}finally{r()}}}function Jt(t){for(const e of t.querySelectorAll("[data-value]"))e.setAttribute("aria-pressed",String(e.classList.contains("art-current")))}function Qt(t,e){var r,n;const o=D(t);if(!o.closed){t.setAttribute("role","group"),t.setAttribute("aria-label",e);for(const i of t.querySelectorAll("[data-value]"))zt(o,i),i.setAttribute("aria-label",`${e}: ${null!=(n=null==(r=i.textContent)?void 0:r.trim())?n:""}`);Jt(t)}}const te=new WeakMap;function ee(t,e){e?te.set(t,e):te.delete(t)}function re(t){const e=new Set;let r=t;for(;!e.has(r);){e.add(r);let t,n=r;for(;n&&!t;)t=te.get(n),n=n.parentElement;if(!t)return r;r=t}return t}function ne(t){const e=t;return!!e&&(["INPUT","TEXTAREA","SELECT"].includes(e.tagName)||e.isContentEditable)}function oe(t){var e;const r=null==(e=t.ownerDocument.defaultView)?void 0:e.getComputedStyle(t).visibility;return t.isConnected&&!t.matches(":disabled")&&!t.closest("[inert]")&&"true"!==t.getAttribute("aria-disabled")&&t.getClientRects().length>0&&"hidden"!==r&&"collapse"!==r}class ie extends Zt{constructor(t){super(t),this.name="contextmenu",this.$parent=t.template.$contextmenu,O(t,this.$parent),k||this.init()}init(){const{option:t,template:{$player:e,$contextmenu:r}}=this.art,{on:n,proxy:o}=_(this.art,r);t.playbackRate&&this.add(function(t){return e=>{const{i18n:r,constructor:{PLAYBACK_RATE:n}}=e,o=n.map(t=>`${1===t?r.get("Normal"):t.toFixed(1)}`).join(""),i=r.get("Play Speed");return l(s({},t),{html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.playbackRate=Number(n),t.show=!1)},mounted:t=>{const{on:r}=_(e,t),n=H('[data-value="1"]',t);n&&K(n,"art-current"),Qt(t,i),r("video:ratechange",()=>{const r=Array.from(t.querySelectorAll("span")).find(t=>Number(t.dataset.value)===e.playbackRate);r&&(K(r,"art-current"),Jt(t))})}})}}({name:"playbackRate",index:10})),t.aspectRatio&&this.add(function(t){return e=>{const{i18n:r,constructor:{ASPECT_RATIO:n}}=e,o=n.map(t=>`${"default"===t?r.get("Default"):t}`).join(""),i=r.get("Aspect Ratio");return l(s({},t),{html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.aspectRatio=n,t.show=!1)},mounted:t=>{const{on:r}=_(e,t),n=H('[data-value="default"]',t);n&&K(n,"art-current"),Qt(t,i),r("aspectRatio",e=>{const r=Array.from(t.querySelectorAll("span")).find(t=>t.dataset.value===e);r&&(K(r,"art-current"),Jt(t))})}})}}({name:"aspectRatio",index:20})),t.flip&&this.add(function(t){return e=>{const{i18n:r,constructor:{FLIP:n}}=e,o=n.map(t=>`${r.get(dt(t))}`).join(""),i=r.get("Video Flip");return l(s({},t),{html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.flip=n.toLowerCase(),t.show=!1)},mounted:t=>{const{on:r}=_(e,t),n=H('[data-value="normal"]',t);n&&K(n,"art-current"),Qt(t,i),r("flip",e=>{const r=Array.from(t.querySelectorAll("span")).find(t=>t.dataset.value===e);r&&(K(r,"art-current"),Jt(t))})}})}}({name:"flip",index:30})),this.add(function(t){return e=>l(s({},t),{html:e.i18n.get("Video Info"),click:t=>{e.info.show=!0,t.show=!1}})}({name:"info",index:40})),this.add(function(t){return l(s({},t),{html:`ArtPlayer ${m}`})}({name:"version",index:50})),this.add(function(t){return e=>l(s({},t),{html:e.i18n.get("Close"),click:t=>{t.show=!1}})}({name:"close",index:60}));for(let s=0;s{this.show=!0,i.closed||M(this.art)||!this.show||function(t,e,r){const{$player:n,$contextmenu:o}=t.template,{height:i,width:a,left:s,top:l}=Y(n),{height:c,width:d}=Y(o);let u=e-s,p=r-l;e+d>s+a&&(u=a-d),r+c>l+i&&(p=i-c),M(t)||rt(o,{top:`${p}px`,left:`${u}px`})}(this.art,t,e)},c=function(t,e){const{art:r}=t,{$player:n,$contextmenu:o}=r.template,i=D(o),a=()=>!i.closed&&!M(r);let s,l=!1,c="",d=0;const u=()=>{const t=n.ownerDocument.activeElement;s=t&&n.contains(t)?re(t):n,ee(o,s)},p=()=>Array.from(o.querySelectorAll("[tabindex],button,input,select,textarea,a[href],[contenteditable]")).filter(t=>t.tabIndex>=0&&oe(t)),f=r.i18n.get("Context Menu");if(!a())return{pointer:()=>!1};o.setAttribute("role","group"),o.setAttribute("aria-label",f);const h=t=>{if(!a())return;if(t)return void(o.contains(n.ownerDocument.activeElement)||u());const e=n.ownerDocument.activeElement,i=o.contains(e)||l&&e===n.ownerDocument.body,d=s;s=void 0,l=!1,c="",ee(o),i&&(d&&n.contains(d)&&oe(d)&&d.focus({preventScroll:!0}),(n.ownerDocument.activeElement===n.ownerDocument.body||o.contains(n.ownerDocument.activeElement))&&It(r))};r.on("contextmenu",h),i.add(()=>{r.off("contextmenu",h),ee(o)}),Ct(i,o,"focusin",()=>{l=!0});let m=!1;return Ct(i,o,"focusout",e=>{o.contains(e.relatedTarget)||m||(m=!0,St(i,()=>{m=!1,a()&&t.show&&!o.contains(n.ownerDocument.activeElement)&&(t.show=!1)},0))}),Ct(i,n,"keydown",n=>{var i;const s=n;if(!a()||!Mt(s)||s.defaultPrevented)return;if(("ContextMenu"===s.key||"F10"===s.key&&s.shiftKey)&&r.constructor.CONTEXTMENU&&!ne(s.target)){Pt(s),u();const r=s.target.getBoundingClientRect();return e(r.left,r.bottom),void(a()&&t.show&&(null==(i=p()[0])||i.focus({preventScroll:!0})))}if(!t.show||!o.contains(s.target))return;if("Escape"===s.key)return Pt(s),void(t.show=!1);if("Tab"===s.key)return void(t.show=!1);if(ne(s.target))return;const l=p(),f=l.indexOf(s.target);let h;if("ArrowDown"===s.key||"ArrowRight"===s.key)h=l[(f+1)%l.length];else if("ArrowUp"===s.key||"ArrowLeft"===s.key)h=l[(f+l.length-1)%l.length];else if("Home"===s.key)h=l[0];else if("End"===s.key)h=l[l.length-1];else{if(1!==s.key.length||" "===s.key)return;{const t=s.key.toLowerCase();c=Date.now()-d>700?t:c+t,d=Date.now();const e=[...c].every(e=>e===t)?t:c;h=[...l.slice(f+1),...l.slice(0,f+1)].find(t=>(t.getAttribute("aria-label")||t.textContent||"").trim().toLowerCase().startsWith(e))}}Pt(s),null==h||h.focus({preventScroll:!0})}),{pointer:t=>!(!a()||!r.constructor.CONTEXTMENU||ne(t.target))&&(u(),!0)}}(this,a);o(e,"contextmenu",t=>{c.pointer(t)&&(t.preventDefault(),a(t.clientX,t.clientY))}),o(e,"click",t=>{F(t,r)||(this.show=!1)}),n("blur",()=>{this.show=!1})}}const ae=new WeakMap,se=new WeakMap,le=new WeakMap;function ce(t,e){const r=ae.get(t);(null==r?void 0:r.active())&&void 0!==r.resumePlaying&&(!e&&r.internalPause?r.internalPause=!1:(r.resumePlaying=e,e||r.pauseRevision++))}function de(t){return le.get(t)||P(t)}function ue(t){const e=ae.get(t),r=le.get(t);return()=>ae.get(t)===e&&(!e||e.active())&&le.get(t)===r&&(!r||!r.closed)}function pe(t){const e=le.get(t),r=P(t).child(),n=r.child();le.set(t,r),r.add(()=>{le.get(t)===r&&le.delete(t)});const o={scope:n,assigned:!1,acceptingEvents:!1,pauseRevision:0,active:()=>!M(t)&&!n.closed&&ae.get(t)===o};return ae.set(t,o),n.add(()=>{ae.get(t)===o&&ae.delete(t),o.onAssigned=void 0,o.onError=void 0}),null==e||e.dispose(),o}function fe(t){t.assigned=!0;const e=t.onAssigned;t.onAssigned=void 0,t.active()&&(null==e||e())}function he(t,e,r){se.set(t,e),e.acceptingEvents=!0;try{t.url=r}finally{se.get(t)===e&&(se.delete(t),fe(e))}}function me(t,e){t.active()&&(t.onError?t.onError(e):console.warn("Failed to initialize ArtPlayer source:",e),t.scope.dispose())}function ve(t,e){const{$progress:r}=t.template,{left:n}=Y(r),o=ct((k?e.touches[0].clientX:e.clientX)-n,0,r.clientWidth),i=o/r.clientWidth*t.duration;return{second:i,time:ut(i),width:o,percentage:ct(o/r.clientWidth,0,1)}}function ge(t,e,r=()=>!0){if(r())if(t.isRotate){const n=(e.touches[0].clientY-t.top)/t.height,o=n*t.duration;if(!r())return;t.emit("setBar","played",n,e),r()&&(t.seek=o)}else{const{second:n,percentage:o}=ve(t,e);if(!r())return;t.emit("setBar","played",o,e),r()&&(t.seek=n)}}const ye=new Map([["ArrowRight",1],["ArrowUp",1],["ArrowLeft",-1],["ArrowDown",-1],["PageUp",10],["PageDown",-10]]);function be(t,e,r){t.getAttribute(e)!==r&&t.setAttribute(e,r)}function we(t,e,r,n,o,i="horizontal"){const a=t=>[t.min,t.max,t.value,t.step].every(Number.isFinite)&&t.max>t.min&&t.step>0,s=(t,e)=>Math.min(e.max,Math.max(e.min,t)),l=()=>{if(t.closed)return;const r=n(),o=a(r),i=o?s(r.value,r):0;be(e,"aria-disabled",String(!o)),be(e,"aria-valuemin",String(o?r.min:0)),be(e,"aria-valuemax",String(o?r.max:0)),be(e,"aria-valuenow",String(i)),be(e,"aria-valuetext",r.text(i))};return t.closed||(e.setAttribute("role","slider"),e.tabIndex=0,e.setAttribute("aria-label",r),e.setAttribute("aria-orientation",i),Ct(t,e,"keydown",t=>{const r=t;if((r.composedPath()[0]||r.target)!==e||!Mt(r)||r.defaultPrevented)return;const i=ye.get(r.key);if(void 0===i&&"Home"!==r.key&&"End"!==r.key)return;Pt(r);const c=n();if(!a(c))return void l();const d="Home"===r.key?c.min:"End"===r.key?c.max:s(c.value,c)+i*c.step;o(s(d,c)),l()}),l()),l}const xe=new WeakMap;function ke(t){return xe.get(t)||0}function $e(t,e,r){let n,o=!1,i=!1,a=!1,s=ke(t);const l=()=>a||ke(t)!==s,c=()=>{var e,r;return!!(null==(r=null==(e=t.template)?void 0:e.$video)?void 0:r.seeking)};return{restore(i=()=>{t.currentTime=e}){if(!r()||l())return;const d=ke(t);i(),s=ke(t),s>d+1&&(a=!0),r()&&(n=t.currentTime,r()&&!l()&&(o=c()))},manual(){a=!0},ready(){if(!r()||c())return!1;const e=void 0!==n&&Math.abs(t.currentTime-n)>.05;if(!l()&&o&&!i&&void 0!==n&&e){if(i=!0,!r())return!1;t.currentTime=n}return r()&&!c()}}}function Ee(t,e){const{icons:r,option:n}=t,{$player:o}=t.template,i=D(e),{on:a}=_(t,e);let s=()=>{};const l=Ot(".art-progress-hover",e),c=Ot(".art-progress-loaded",e),d=Ot(".art-progress-played",e),u=Ot(".art-progress-highlight",e),p=Ot(".art-progress-indicator",e),f=Ot(".art-progress-tip",e);function h(r,n){const{width:o,time:i}=n||ve(t,r);f.textContent=i||"00:00";const a=f.clientWidth;o<=a/2?et(f,"left",0):o>e.clientWidth-a/2?et(f,"left",e.clientWidth-a+"px"):et(f,"left",o-a/2+"px")}r.indicator?X(p,r.indicator):et(p,"backgroundColor","var(--art-theme)"),a("setBar",function(r,n,a){const m="played"===r&&a&&k;if("loaded"===r&&et(c,"width",100*n+"%"),"hover"===r&&(et(l,"width",100*n+"%"),F(a,u)?function(r){const{width:n}=ve(t,r),o=r.target instanceof HTMLElement?r.target.dataset.text:void 0;f.textContent=null!=o?o:"";const i=f.clientWidth;n<=i/2?et(f,"left",0):n>e.clientWidth-i/2?et(f,"left",e.clientWidth-i+"px"):et(f,"left",n-i/2+"px")}(a):h(a),0===n?q(o,"art-progress-hover"):j(o,"art-progress-hover")),"played"===r&&(et(d,"width",100*n+"%"),et(p,"left",100*n+"%")),m){j(o,"art-progress-hover");h(a,{width:e.clientWidth*n,time:ut(n*t.duration)}),s(),s=St(i,()=>{q(o,"art-progress-hover")},500)}}),a("video:loadedmetadata",function(){u.textContent="";for(let e=0;e{t.emit("setBar","played",t.played),t.emit("setBar","loaded",t.loaded)}):(a("video:timeupdate",()=>{t.emit("setBar","played",t.played)}),a("video:progress",()=>{t.emit("setBar","loaded",t.loaded)}),a("video:ended",()=>{t.emit("setBar","played",1)})),t.emit("setBar","loaded",t.loaded||0)}function Ae(t){return e=>l(s({},t),{html:'\n
\n
\n
\n
\n
\n
\n
00:00
\n
\n ',mounted:t=>{Ee(e,t),function(t,e){const{$progress:r}=t.template,n=e.querySelector(".art-progress-indicator"),{on:o,proxy:i}=_(t,e),a=D(e);let s=0;const l=()=>{const e=ue(t);return()=>!a.closed&&!M(t)&&e()},c=()=>{const t=++s,e=l();return()=>t===s&&e()};if(!k){let e;i(r,"click",e=>{e.target!==n&&ge(t,e,c())}),i(r,"mousemove",e=>{const r=l(),{percentage:n}=ve(t,e);r()&&t.emit("setBar","hover",n,e)}),i(r,"mouseleave",e=>{t.emit("setBar","hover",0,e)}),i(r,"mousedown",t=>{e=0===t.button?c():void 0}),o("document:mousemove",r=>{const n=e;if(null==n?void 0:n()){const{second:o,percentage:i}=ve(t,r);if(!n()||e!==n)return;t.emit("setBar","played",i,r),n()&&e===n&&(t.seek=o)}else e=void 0}),o("document:mouseup",()=>{e=void 0})}}(e,t),function(t,e){const r=D(e),{on:n}=_(t,e);let o,i=0;const a=we(r,e,t.i18n.get("Progress"),()=>({min:0,max:t.duration,value:t.currentTime,step:t.constructor.SEEK_STEP,text:e=>`${ut(e)} / ${ut(Number.isFinite(t.duration)&&t.duration>0?t.duration:0)}`}),e=>{const n=++i;null==o||o.dispose();const s=r.child();o=s;const l=de(t).add(()=>{s.dispose()});s.add(()=>{l()}),s.add(()=>{o===s&&(o=void 0)});const c=ue(t),d=()=>n===i&&!s.closed&&!M(t)&&c(),u=$e(t,e,d),p=()=>{d()?u.ready()&&(s.dispose(),a()):s.dispose()};for(const r of["video:seeked","video:ended"])t.on(r,p),s.add(()=>{t.off(r,p)});try{t.emit("setBar","played",e/t.duration),d()&&u.restore(()=>{t.seek=e}),p()}catch(f){throw s.dispose(),f}});n("video:loadedmetadata",a),n("video:durationchange",a),n("video:emptied",a),n("video:timeupdate",a),n("video:seeking",a),n("video:seeked",a),n("video:ended",a)}(e,t)}})}function Ce(t){const{option:e}=t.art;e.isLive||t.add(Ae({name:"progress",position:"top",index:10})),t.add({name:"thumbnails",position:"top",index:20}),t.add(function(t){return e=>l(s({},t),{mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e,a=Rt(t,o.play),s=Rt(t,o.pause);function l(){t.setAttribute("aria-label",i.get("Play")),et(a,"display","flex"),et(s,"display","none")}function c(){t.setAttribute("aria-label",i.get("Pause")),et(a,"display","none"),et(s,"display","flex")}zt(D(t),t,()=>(e.playing?s:a).click()),Q(a,i.get("Play")),Q(s,i.get("Pause")),n(a,"click",()=>{at(e.play())}),n(s,"click",()=>{e.pause()}),e.playing?c():l(),r("video:playing",()=>{c()}),r("video:pause",()=>{l()})}})}({name:"playAndPause",position:"left",index:10})),t.add(function(t){return e=>l(s({},t),{mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e,a=Rt(t,o.volume),s=Rt(t,o.volumeClose);for(const e of[a,s])zt(D(t),e),e.setAttribute("aria-label",i.get("Mute"));const l=Rt(t,'
'),c=Rt(l,'
'),d=Rt(c,'
'),u=Rt(c,'
'),p=Rt(u,'
'),f=Rt(p,'
'),h=Rt(u,'
'),m=D(t);let v=0;const g=we(m,u,i.get("Volume"),()=>({min:0,max:100,value:e.muted?0:100*e.volume,step:100*e.constructor.VOLUME_STEP,text:t=>`${Math.round(t)}%`}),t=>{const r=++v;e.muted=!1,r!==v||m.closed||M(e)||(e.volume=t/100)},"vertical");function y(t){const{top:e,height:r}=Y(u);return 1-(t.clientY-e)/r}function b(){g();const r=t.ownerDocument.activeElement,n=e.muted||0===e.volume,o=n?s:a;if(a.setAttribute("aria-pressed",String(e.muted)),s.setAttribute("aria-pressed",String(e.muted)),n)et(a,"display","none"),et(s,"display","flex"),et(h,"top","100%"),et(f,"top","100%"),d.textContent="0";else{const t=100*e.volume;et(a,"display","flex"),et(s,"display","none"),et(h,"top",100-t+"%"),et(f,"top",100-t+"%"),d.textContent=String(Math.floor(t))}r!==a&&r!==s||r===o||o.focus({preventScroll:!0})}if(b(),r("video:volumechange",b),n(a,"click",()=>{e.muted=!0}),n(s,"click",()=>{e.muted=!1}),k)et(l,"display","none");else{let t=!1;n(u,"mousedown",r=>{t=0===r.button,e.volume=y(r)}),r("document:mousemove",r=>{t&&(e.muted=!1,e.volume=y(r))}),r("document:mouseup",()=>{t&&(t=!1)})}}})}({name:"volume",position:"left",index:20})),e.isLive||t.add(function(t){return e=>l(s({},t),{style:k?{fontSize:"12px",padding:"0 5px"}:{cursor:"auto",padding:"0 10px"},mounted:t=>{const{on:r}=_(e,t);function n(){const r=`${ut(e.currentTime)} / ${ut(e.duration)}`;r!==t.textContent&&(t.textContent=r)}n();const o=["video:loadedmetadata","video:timeupdate","video:progress"];for(let e=0;e{r&&!P(t.art).closed&&(t.art.quality=e.quality)}).catch(t=>{console.warn("ArtPlayer quality initialization failed:",t)}),e.screenshot&&!k&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("Screenshot"),mounted:t=>{const{proxy:r}=_(e,t),{icons:n}=e;zt(D(t),t),Rt(t,n.screenshot),r(t,"click",()=>{at(e.screenshot())})}})}({name:"screenshot",position:"right",index:20})),e.setting&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("Show Setting"),mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e;Rt(t,o.setting),zt(D(t),t),t.setAttribute("aria-expanded","false"),n(t,"click",()=>{e.setting.toggle(),e.setting.resize()}),r("setting",e=>{t.setAttribute("aria-expanded",String(e)),Q(t,i.get(e?"Hide Setting":"Show Setting"))})}})}({name:"setting",position:"right",index:30})),e.pip&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("PIP Mode"),mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e;zt(D(t),t),Rt(t,o.pip),n(t,"click",()=>{e.pip=!e.pip}),r("pip",e=>{Q(t,i.get(e?"Exit PIP Mode":"PIP Mode"))})}})}({name:"pip",position:"right",index:40})),e.airplay&&"WebKitPlaybackTargetAvailabilityEvent"in window&&window.WebKitPlaybackTargetAvailabilityEvent&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("AirPlay"),mounted:t=>{const{proxy:r}=_(e,t),{icons:n}=e;zt(D(t),t),Rt(t,n.airplay),r(t,"click",()=>e.airplay())}})}({name:"airplay",position:"right",index:50})),e.fullscreenWeb&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("Web Fullscreen"),mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e;zt(D(t),t);const a=Rt(t,o.fullscreenWebOn),s=Rt(t,o.fullscreenWebOff);et(s,"display","none"),n(t,"click",()=>{e.fullscreenWeb=!e.fullscreenWeb}),r("fullscreenWeb",e=>{e?(Q(t,i.get("Exit Web Fullscreen")),et(a,"display","none"),et(s,"display","inline-flex")):(Q(t,i.get("Web Fullscreen")),et(a,"display","inline-flex"),et(s,"display","none"))})}})}({name:"fullscreenWeb",position:"right",index:60})),e.fullscreen&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("Fullscreen"),mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e;zt(D(t),t);const a=Rt(t,o.fullscreenOn),s=Rt(t,o.fullscreenOff);et(s,"display","none"),n(t,"click",()=>{e.fullscreen=!e.fullscreen}),r("fullscreen",e=>{e?(Q(t,i.get("Exit Fullscreen")),et(a,"display","none"),et(s,"display","inline-flex")):(Q(t,i.get("Fullscreen")),et(a,"display","inline-flex"),et(s,"display","none"))})}})}({name:"fullscreen",position:"right",index:70}));for(let r=0;rLe.get(t).option.selector}),vt(t,"$control_item",{get:()=>Le.get(t).item}),vt(t,"$control_value",{get:()=>Le.get(t).value})),Le.set(t,e)}function Me(t,e){t.innerHTML=e}function ze(t,e,r,n,o){const{proxy:i}=t.events,a=D(n),s=r.selector;j(n,"art-control-selector");const l=document.createElement("div");j(l,"art-selector-value"),X(l,r.html),n.textContent="",X(n,l);const d=Rt(n,'
');for(let c=0;cc(null,null,function*(){var o,i;if(a.closed)return;const s=W(n),c=r.selector.find(t=>s.includes(t.$control_item));if(!c)return;const d=++u,p=()=>!a.closed&&d===u,f=a.add(function(t,e){return Se.set(t,e),()=>{Se.get(t)===e&&Se.delete(t)}}(n,p));try{if(e(c),a.closed)return;if(r.onSelect){const e=yield r.onSelect.call(t,c,c.$control_item,n);if(p()){const t=l.contains(l.ownerDocument.activeElement);Me(l,e),null==(i=null==(o=Le.get(c))?void 0:o.refresh)||i.call(o,t)}}}catch(h){console.warn("ArtPlayer selector failed:",h)}finally{f()}}));o.push(p);const f=function(t,e,r,n,o){if(t.closed)return()=>{};const i=Array.from(n.children),a=i.some(t=>t.querySelector(Te));n.setAttribute("role",a?"group":"listbox"),n.setAttribute("aria-label",o);let s=!1,l=!1,c=!1,d="",u=0;const p=()=>i.length>0&&(l||s&&!c),f=()=>r.querySelector('button,a[href],[role="button"]')||r,h=(e=!1)=>{if(t.closed)return;const n=f();r.querySelector(Te)?(r.removeAttribute("role"),r.removeAttribute("tabindex")):(r.setAttribute("role","button"),r.tabIndex=0),n!==r&&(r.removeAttribute("aria-haspopup"),r.removeAttribute("aria-expanded"),r.removeAttribute("aria-disabled")),a?n.removeAttribute("aria-haspopup"):n.setAttribute("aria-haspopup","listbox"),n.setAttribute("aria-expanded",String(p())),n.setAttribute("aria-disabled",String(0===i.length)),e&&r.isConnected&&r.ownerDocument.activeElement===r.ownerDocument.body&&n.focus({preventScroll:!0})},m=(t,r=!1)=>{l=t,c=r,e.classList.toggle("art-selector-open",t),e.classList.toggle("art-selector-dismissed",r),h()},v=e=>{e&&!t.closed&&((e.querySelector(Te)||e).focus({preventScroll:!0}),t.closed||e.scrollIntoView({block:"nearest",inline:"nearest"}))},g=(e=!1)=>{!t.closed&&i.length&&(m(!0),d="",v(i.find(t=>t.classList.contains("art-current"))||i[e?i.length-1:0]))},y=()=>{if(t.closed)return;const o=n.contains(e.ownerDocument.activeElement);m(!1,!0),d="",o&&r.isConnected&&f().focus({preventScroll:!0})};zt(t,r,()=>{r.click(),e.ownerDocument.activeElement===r&&g()}),h();for(const b of i){const e=b.classList.contains("art-current");a?b.setAttribute("aria-current",String(e)):(b.setAttribute("role","option"),b.setAttribute("aria-selected",String(e))),b.querySelector(Te)||(b.tabIndex=-1,zt(t,b,()=>{b.click(),y()}))}return Ct(t,r,"keydown",t=>{const e=t;!Mt(e)||e.defaultPrevented||e.target!==r&&e.target!==f()||("ArrowDown"===e.key||"ArrowUp"===e.key?(Pt(e),g("ArrowUp"===e.key)):"Escape"===e.key&&p()&&(Pt(e),y()))}),Ct(t,r,"click",t=>{t.isTrusted&&0===t.detail&&f()!==r&&g()}),Ct(t,n,"keydown",t=>{var e;const r=t;if(!Mt(r)||r.defaultPrevented)return;if("Escape"===r.key)return Pt(r),void y();const n=i.indexOf(r.target);if(n<0)return;let o;switch(1!==r.key.length&&(d=""),r.key){case"ArrowDown":o=Math.min(n+1,i.length-1);break;case"ArrowUp":o=Math.max(n-1,0);break;case"Home":o=0;break;case"End":o=i.length-1;break;case"ArrowLeft":case"ArrowRight":return void Pt(r);default:{if(1!==r.key.length||" "===r.key)return;const t=Date.now();d=t-u<500?d+r.key.toLocaleLowerCase():r.key.toLocaleLowerCase(),u=t;const a=[...d].every(t=>t===d[0])?d[0]:d;for(let r=1;r<=i.length;r++){const t=(n+r)%i.length;if(null==(e=i[t].textContent)?void 0:e.trim().toLocaleLowerCase().startsWith(a)){o=t;break}}}}Pt(r),void 0!==o&&v(i[o])}),Ct(t,n,"click",t=>{t.isTrusted&&0===t.detail&&y()}),Ct(t,e,"mouseenter",()=>{s=!0,m(l)}),Ct(t,e,"mouseleave",()=>{s=!1,m(n.contains(e.ownerDocument.activeElement))}),Ct(t,e,"focusout",t=>{e.contains(t.relatedTarget)||m(!1,!0)}),t.add(()=>{e.classList.remove("art-selector-open","art-selector-dismissed")}),h}(a,n,l,d,String(r.tooltip||r.name||l.textContent||t.i18n.get("Open")));for(const c of s)Le.get(c).refresh=f}class Re extends Zt{constructor(t){super(t),this.isHover=!1,this.name="control",this.timer=Date.now();const{constructor:e}=t,{$player:r,$bottom:n}=this.art.template,o=function(t,e,r){let n,o,i=!0;const a=()=>!t.closed&&i&&e.contains(e.ownerDocument.activeElement),s=()=>{const t=a(),n=e.classList.contains("art-keyboard-focus");e.classList.toggle("art-keyboard-focus",t),t&&!n&&r()},l=()=>{i=!0,s()},c=()=>{i=!1,s()},d=()=>{n!==e.ownerDocument&&(null==o||o.dispose(),n=e.ownerDocument,o=t.child(),Ct(o,n,"keydown",l,{capture:!0}),Ct(o,n,"mousedown",c,{capture:!0}),Ct(o,n,"touchstart",c,{capture:!0,passive:!0}))};return d(),Ct(t,e,"keydown",l,{capture:!0}),Ct(t,e,"mousedown",c,{capture:!0}),Ct(t,e,"touchstart",c,{capture:!0,passive:!0}),Ct(t,e,"focusin",()=>{d(),s()}),Ct(t,e,"focusout",()=>{e.classList.remove("art-keyboard-focus")}),t.add(()=>{e.classList.remove("art-keyboard-focus")}),a}(O(t,n),r,()=>{this.show=!0}),{on:i,proxy:a}=_(t,n);a(r,"focusin",e=>{var r;t.isFocus=!0,t.isInput="INPUT"===(null==(r=e.target)?void 0:r.tagName)}),a(r,"focusout",e=>{r.contains(e.relatedTarget)||(t.isFocus=!1,t.isInput=!1)}),i("mousemove",()=>{k||(this.show=!0)}),i("click",()=>{k?this.toggle():this.show=!0}),i("document:mousemove",t=>{this.isHover=F(t,n)}),i("video:timeupdate",()=>{!t.setting.show&&!this.isHover&&!t.isInput&&!o()&&t.playing&&this.show&&Date.now()-this.timer>=e.CONTROL_HIDE_TIME&&(this.show=!1)}),i("control",t=>{t?(q(r,"art-hide-cursor"),j(r,"art-hover"),this.timer=Date.now()):(j(r,"art-hide-cursor"),q(r,"art-hover"))}),this.init(),P(t).closed||function(t){const{$bottom:e,$controls:r,$player:n}=t.template,o=D(e),{on:i}=_(t,e),a=()=>{if(o.closed)return;const t=r.offsetHeight;t>0&&n.style.getPropertyValue("--art-controls-height")!==`${t}px`&&n.style.setProperty("--art-controls-height",`${t}px`)};if(i("resize",a),"undefined"!==typeof ResizeObserver){const t=new ResizeObserver(a);return t.observe(r),void o.add(()=>{t.disconnect()})}if("undefined"!==typeof MutationObserver){const t=new MutationObserver(a);t.observe(r,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),o.add(()=>{t.disconnect()})}a()}(t)}init(){Ce(this)}add(t){if(M(this.art))return;const e="function"===typeof t?t(this.art):t,{$progress:r,$controlsLeft:n,$controlsRight:o}=this.art.template;switch(e.position){case"top":this.$parent=r;break;case"left":this.$parent=n;break;case"right":this.$parent=o;break;default:it(!1,"Control option.position must one of 'top', 'left', 'right'")}super.add(e)}check(t){!function(t){var e,r;if(!t)return;const n=t.$control_value.contains(t.$control_value.ownerDocument.activeElement);Me(t.$control_value,t.html);for(let o=0;othis.check(t),t,e,r)}}function Oe(t,e){const{constructor:r,template:{$video:n}}=t;!function(t){const{$player:e}=t.template,r=r=>{var n;if(M(t))return;const o=F(r,e);t.isInput=o&&"INPUT"===(null==(n=r.target)?void 0:n.tagName),t.isFocus=o,t.emit(o?"focus":"blur",r)};t.on("document:click",r),t.on("document:contextmenu",r),P(t).add(()=>{t.off("document:click",r),t.off("document:contextmenu",r)})}(t);let o=[];e.proxy(n,"click",e=>{if(M(t))return;const n=Date.now();o.push(n);const{MOBILE_CLICK_PLAY:i,DBCLICK_TIME:a,MOBILE_DBCLICK_PLAY:s,DBCLICK_FULLSCREEN:l}=r,c=o.filter(t=>n-t<=a);switch(c.length){case 1:if(t.emit("click",e),M(t))return;(!k||!t.isLock&&i)&&at(t.toggle()),o=c;break;case 2:if(t.emit("dblclick",e),M(t))return;k?!t.isLock&&s&&at(t.toggle()):l&&(t.fullscreen=!t.fullscreen),o=[];break;default:o=[]}})}function De(t){let e;const r=()=>{e=void 0},n=r=>e===r&&!M(t)&&!t.isLock&&!t.option.isLive&&t.isRotate===r.rotated&&r.sourceActive(),o=t=>{t&&r()};t.on("document:touchend",r),t.on("document:touchcancel",r),t.on("lock",o),P(t).add(()=>{r(),t.off("document:touchend",r),t.off("document:touchcancel",r),t.off("lock",o)});return{start:(o,i)=>{r();const a=i.touches[0];if(M(t)||t.isLock||t.option.isLive||1!==i.touches.length||!a)return;if(![a.pageX,a.pageY,a.clientX,a.clientY,t.currentTime].every(Number.isFinite))return;const s={target:o,identifier:a.identifier,x:a.pageX,y:a.pageY,time:t.currentTime,rotated:t.isRotate,sourceActive:ue(t)};if(e=s,o===t.template.$progress){const o=t.isRotate?t.height:t.template.$progress.clientWidth;if(!Number.isFinite(o)||o<=0||!Number.isFinite(t.duration)||t.duration<=0)return void r();try{ge(t,i,()=>n(s))}catch(l){throw e===s&&r(),l}n(s)&&(s.time=t.currentTime)}},move:o=>{const i=e,a=o.touches[0];if(!i)return;if(!n(i)||1!==o.touches.length||!a||a.identifier!==i.identifier)return void r();const s=i.rotated?t.height:t.width,l=i.target===t.template.$video?t.constructor.TOUCH_MOVE_RATIO:1;if(![a.pageX,a.pageY,s,t.duration,l].every(Number.isFinite)||s<=0||t.duration<=0)return void r();const c=function(t,e,r,n){const o=e-n,i=r-t;if(Math.abs(i)<2&&Math.abs(o)<2)return 0;const a=180*Math.atan2(o,i)/Math.PI;return a>=-45&&a<45?4:a>=45&&a<135?1:a>=-135&&a<-45?2:a>=135&&a<=180||a>=-180&&a<-135?3:0}(i.x,i.y,a.pageX,a.pageY);if(!(i.rotated?1===c||2===c:3===c||4===c))return;const d=ct((i.rotated?a.pageY-i.y:a.pageX-i.x)/s,-1,1),u=ct(i.time+t.duration*d*l,0,t.duration);t.seek=u,n(i)&&(t.emit("setBar","played",ct(u/t.duration,0,1),o),n(i)&&(t.notice.show=`${ut(u)} / ${ut(t.duration)}`))},cancel:r}}const Ie=["click","mouseup","keydown","touchend","touchcancel","touchmove","mousemove","pointerup","contextmenu","pointermove","visibilitychange","webkitfullscreenchange"],Ne=["resize","scroll","orientationchange"];const _e=new WeakMap;function We(t){const e=_e.get(t);if(!e)throw new Error("ArtPlayer event registry has not been initialized");return e}function Fe(t,e,r,n,o={}){if(Array.isArray(r)){const i=[];try{return r.map(r=>{const a=Fe(t,e,r,n,o);return i.push(a),a})}catch(f){for(const t of i.reverse())try{t()}catch(h){console.warn("Failed to roll back event listener:",h)}throw f}}const i=r,a=We(t);if(a.scope.closed||a.cleaning)return()=>{};const s="boolean"===typeof o?o:{capture:Boolean(null==o?void 0:o.capture),once:Boolean(null==o?void 0:o.once),passive:null==o?void 0:o.passive,signal:null==o?void 0:o.signal},l="boolean"===typeof s?s:s.capture,c="boolean"===typeof s?void 0:s.signal;if(a.scope.closed||a.cleaning||(null==c?void 0:c.aborted))return()=>{};let d=!0;function u(r=!1){(d||r)&&(e.removeEventListener(i,n,l),null==c||c.removeEventListener("abort",p),d=!1,t.destroyEvents.delete(p))}function p(){u()}t.destroyEvents.add(p);try{e.addEventListener(i,n,s),!d||a.scope.closed||a.cleaning?u(!0):(null==c?void 0:c.aborted)?p():null==c||c.addEventListener("abort",p,{once:!0})}catch(f){try{u(!0)}catch(h){console.warn("Failed to roll back event listener:",h)}throw f}return p}function Ve(t){return(e,r)=>{if(M(t))return;const n=(...e)=>{if(!M(t))return r(...e)};t.on(e,n),P(t).add(()=>{t.off(e,n)})}}function Ye(t){if(!t.constructor.USE_RAF)return;const e=P(t);let r=()=>{};const n=()=>{M(t)||(t.playing&&t.emit("raf"),M(t)||(r=function(t,e){if(t.closed)return At;let r=!0,n=At;const o=requestAnimationFrame(o=>{r&&(n(),t.closed||e(o))});return n=t.add(()=>{r=!1,cancelAnimationFrame(o)}),n}(e,n)))};n(),Ve(t)("destroy",()=>r())}class Be{constructor(t){this.destroyEvents=new Set,function(t,e){_e.set(t,{scope:P(e),cleaning:!1})}(this,t),P(t).add(()=>{this.destroy()}),this.proxy=this.proxy.bind(this),this.hover=this.hover.bind(this),Oe(t,this),function(t,e){const{$player:r}=t.template;e.hover(r,e=>{M(t)||(j(r,"art-hover"),t.emit("hover",!0,e))},e=>{M(t)||(q(r,"art-hover"),t.emit("hover",!1,e))})}(t,this),function(t,e){const{$player:r}=t.template;e.proxy(r,"mousemove",e=>{M(t)||t.emit("mousemove",e)})}(t,this),function(t,e){var r,n;const{option:o,constructor:i}=t,a=Ve(t);a("resize",()=>{const{aspectRatio:e,notice:r}=t;"standard"===t.state&&o.autoSize&&t.autoSize(),M(t)||(t.aspectRatio=e,M(t)||(r.show=""))});const s=P(t);let l=()=>{};const c=()=>{M(t)||(l(),l=St(s,()=>t.emit("resize"),i.RESIZE_TIME))};a("window:orientationchange",c),a("window:resize",c);const d=null==(n=null==(r=t.template.$player.ownerDocument.defaultView)?void 0:r.screen)?void 0:n.orientation;"function"===typeof(null==d?void 0:d.addEventListener)&&e.proxy(d,"change",c)}(t,this),function(t,e){if(!k||t.option.isLive)return;const{$video:r,$progress:n}=t.template,o=De(t),i=t=>{e.proxy(t,"touchstart",e=>o.start(t,e)),e.proxy(t,"touchmove",t=>o.move(t)),e.proxy(t,"touchcancel",o.cancel)};t.option.gesture&&i(r),i(n)}(t,this),function(t){const{option:e,constructor:r,template:{$container:n}}=t,o=r.SCROLL_TIME,i=P(t),a=Ve(t);let s=!1;a("window:scroll",()=>{s||(t.emit("view",function(t,e){const r=t.getBoundingClientRect(),n=t.ownerDocument,o=n.defaultView,i=(null==o?void 0:o.innerHeight)||n.documentElement.clientHeight,a=(null==o?void 0:o.innerWidth)||n.documentElement.clientWidth,s=r.top-e<=i&&r.top+r.height+e>=0,l=r.left-e<=a+e&&r.left+r.width+e>=0;return s&&l}(n,r.SCROLL_GAP)),M(t)||(s=!0,St(i,()=>{s=!1},o)))}),a("view",r=>{e.autoMini&&(t.mini=!r)})}(t),function(t,e){let r,n=0;P(t).add(()=>{r=void 0,n++});const o=t=>{if(t){for(const r of t.disposers)e.remove(r);t.disposers.length=0}};function i(i={}){var a;if(M(t))return;const s=++n,l={disposers:[]},c=()=>s!==n||M(t);try{const{$player:n}=t.template,o=i.document||n.ownerDocument||document,s=i.window||(null==(a=n.ownerDocument)?void 0:a.defaultView)||window,d=(n,o,i)=>{for(const a of o){if(c())return;l.disposers.push(e.proxy(n,a,e=>{r!==l||M(t)||t.emit(`${i}:${a}`,e)}))}};d(o,Ie,"document"),d(s,Ne,"window")}catch(u){throw o(l),u}if(c())return void o(l);const d=r;r=l,o(d)}i(),e.bindGlobalEvents=i}(t,this),Ye(t)}proxy(t,e,r,n={}){return Array.isArray(e),Fe(this,t,e,r,n)}hover(t,e,r){e&&this.proxy(t,"mouseenter",e),r&&this.proxy(t,"mouseleave",r)}remove(t){!function(t,e){if(t.destroyEvents.has(e))try{e(),t.destroyEvents.delete(e)}catch(r){console.warn("Failed to remove event listener:",r)}}(this,t)}destroy(){!function(t){const e=We(t);if(!e.cleaning){e.cleaning=!0;try{for(const e of t.destroyEvents)try{e(),t.destroyEvents.delete(e)}catch(r){console.warn("Failed to destroy event listener:",r)}}finally{e.cleaning=!1}}}(this)}}function He(t){if(t&&1===t.nodeType)return t}function je(t){const e=t.tagName.toUpperCase();return"INPUT"===e||"TEXTAREA"===e||"SELECT"===e||t.isContentEditable}function qe(t,e){var r,n,o,i;if(function(t){return Lt.has(t)}(t)||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey||t.isComposing||229===t.keyCode)return!1;const a=function(t,e){var r;const n=t.target;return 9===(null==n?void 0:n.nodeType)?n:(null==n?void 0:n.ownerDocument)||(null==(r=t.view)?void 0:r.document)||e}(t,e);let s=He(a.activeElement);for(;null==(r=null==s?void 0:s.shadowRoot)?void 0:r.activeElement;)s=He(s.shadowRoot.activeElement);if(s&&je(s))return!1;const l=He(null==(n=t.composedPath)?void 0:n.call(t)[0])||He(t.target),c="Enter"===t.key||"Enter"===t.code||"NumpadEnter"===t.code;if(c||" "===t.key||"Space"===t.code){const t='button,summary,[role="button"],[role="switch"]'+(c?",a[href]":"");if((null==(o=null==l?void 0:l.closest)?void 0:o.call(l,t))||(null==(i=null==s?void 0:s.closest)?void 0:i.call(s,t)))return!1}return!l||!je(l)}const Ue=new WeakMap;class Xe{constructor(t){this.art=t,this.keys={},Ue.set(this,{subscribed:!1}),k||this.init()}init(){const t=this.art;if(M(t))return;const e=Ue.get(this);if(t.option.hotkey){if(!e.defaults){const r=function(t){const{constructor:e}=t;return{Escape:()=>{t.fullscreenWeb&&(t.fullscreenWeb=!1)},Space:()=>{at(t.toggle())},ArrowLeft:()=>{t.backward=e.SEEK_STEP},ArrowUp:()=>{t.volume+=e.VOLUME_STEP},ArrowRight:()=>{t.forward=e.SEEK_STEP},ArrowDown:()=>{t.volume-=e.VOLUME_STEP}}}(t);e.defaults=()=>{for(const t of Object.keys(r))this.add(t,r[t])}}e.defaults()}if(e.subscribed)return;e.subscribed=!0;const r=e=>{if(!M(t)){if(t.isFocus&&qe(e,t.template.$player.ownerDocument)){const r=Object.prototype.hasOwnProperty.call(this.keys,e.code)?this.keys[e.code]:void 0;if(r){e.preventDefault();for(let n=0;n{e.subscribed=!1,t.off("document:keydown",r)})}add(t,e){const r=Object.prototype.hasOwnProperty.call(this.keys,t)?this.keys[t]:void 0;return r?r.includes(e)||r.push(e):Object.defineProperty(this.keys,t,{value:[e],enumerable:!0,configurable:!0,writable:!0}),this}remove(t,e){const r=Object.prototype.hasOwnProperty.call(this.keys,t)?this.keys[t]:void 0;if(r){const n=r.indexOf(e);-1!==n&&r.splice(n,1),0===r.length&&delete this.keys[t]}return this}}const Ge={"Context Menu":"\u5feb\u6377\u83dc\u5355",Lock:"\u9501\u5b9a",Back:"\u8fd4\u56de",Settings:"\u8bbe\u7f6e",Progress:"\u64ad\u653e\u8fdb\u5ea6","Video Info":"\u7edf\u8ba1\u4fe1\u606f",Close:"\u5173\u95ed","Video Load Failed":"\u52a0\u8f7d\u5931\u8d25",Volume:"\u97f3\u91cf",Play:"\u64ad\u653e",Pause:"\u6682\u505c",Rate:"\u901f\u5ea6",Mute:"\u9759\u97f3","Video Flip":"\u753b\u9762\u7ffb\u8f6c",Horizontal:"\u6c34\u5e73",Vertical:"\u5782\u76f4",Reconnect:"\u91cd\u65b0\u8fde\u63a5","Show Setting":"\u663e\u793a\u8bbe\u7f6e","Hide Setting":"\u9690\u85cf\u8bbe\u7f6e",Screenshot:"\u622a\u56fe","Play Speed":"\u64ad\u653e\u901f\u5ea6","Aspect Ratio":"\u753b\u9762\u6bd4\u4f8b",Default:"\u9ed8\u8ba4",Normal:"\u6b63\u5e38",Open:"\u6253\u5f00","Switch Video":"\u5207\u6362","Switch Subtitle":"\u5207\u6362\u5b57\u5e55",Fullscreen:"\u5168\u5c4f","Exit Fullscreen":"\u9000\u51fa\u5168\u5c4f","Web Fullscreen":"\u7f51\u9875\u5168\u5c4f","Exit Web Fullscreen":"\u9000\u51fa\u7f51\u9875\u5168\u5c4f","Mini Player":"\u8ff7\u4f60\u64ad\u653e\u5668","PIP Mode":"\u5f00\u542f\u753b\u4e2d\u753b","Exit PIP Mode":"\u9000\u51fa\u753b\u4e2d\u753b","PIP Not Supported":"\u4e0d\u652f\u6301\u753b\u4e2d\u753b","Fullscreen Not Supported":"\u4e0d\u652f\u6301\u5168\u5c4f","Subtitle Offset":"\u5b57\u5e55\u504f\u79fb","Last Seen":"\u4e0a\u6b21\u770b\u5230","Jump Play":"\u8df3\u8f6c\u64ad\u653e",AirPlay:"\u9694\u7a7a\u64ad\u653e","AirPlay Not Available":"\u9694\u7a7a\u64ad\u653e\u4e0d\u53ef\u7528"};!function(t,e){if("undefined"!==typeof window){window[t]=e}}("artplayer-i18n-zh-cn",Ge);class Ke{constructor(t){this.art=t,this.languages={"zh-cn":Ge},this.language={},this.update(t.option.i18n)}init(){const t=this.art.option.lang.toLowerCase();this.language=yt(this.languages,t)&&this.languages[t]||{}}get(t){return yt(this.language,t)&&this.language[t]||t}update(t){this.languages=wt(this.languages,t),this.init()}}const Ze={loading:'\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n',state:'\r\n\r\n\r\n',play:'\r\n \r\n',pause:'\r\n \r\n',check:'\r\n\r\n',volume:'\r\n \r\n \r\n',volumeClose:'\r\n \r\n \r\n',screenshot:'\r\n\t\r\n\r\n',setting:'\r\n \r\n \r\n',pip:'\r\n\r\n',arrowLeft:'\r\n \r\n',arrowRight:'\r\n \r\n',playbackRate:'',aspectRatio:'',config:'',lock:'\r\n\r\n\r\n\r\n\r\n',flip:'\r\n\r\n\r\n\r\n\r\n\r\n',unlock:'\r\n\r\n\r\n',fullscreenOff:'\r\n\r\n\r\n\r\n\r\n',fullscreenOn:'\r\n\r\n\r\n\r\n\r\n',fullscreenWebOff:'\r\n\r\n\r\n\r\n\r\n',fullscreenWebOn:'\r\n\r\n\r\n\r\n\r\n',switchOn:'\r\n\r\n\r\n \r\n',switchOff:'\r\n\r\n\r\n \r\n\r\n',error:'\r\n\r\n\r\n\r\n\r\n',close:'\r\n\r\n\r\n\r\n\r\n',airplay:'\r\n \r\n \r\n \r\n \r\n\r\n'};class Je{constructor(t){const e=s(s({},Ze),t.option.icons);for(const r in e)vt(this,r,{get:()=>tt(r,e[r])})}}const Qe=new WeakMap;function tr(t,e,r){const n=()=>!e.closed&&!M(t),o=t=>{try{e.dispose()}catch(r){console.warn("Failed to release info polling resources:",r)}throw t};try{const{proxy:i,constructor:a,template:{$infoPanel:s,$infoClose:l,$video:c}}=t,d=i(l,"click",()=>{n()&&r()});e.add(()=>{t.events.remove(d)});const u=Array.from(s.querySelectorAll("[data-video]")),p=()=>e.dispose();t.on("destroy",p),e.add(()=>{t.off("destroy",p)}),function(t,e,r){const{$player:n,$info:o,$infoClose:i}=t.template;if(!o)return;const a=()=>!e.closed&&!M(t),s=()=>n.classList.contains("art-info-show"),l=t.i18n.get("Close");if(!a())return;const c=t.i18n.get("Video Info");if(!a())return;i.setAttribute("aria-label",l),o.setAttribute("role","group"),o.setAttribute("aria-label",c),zt(e,i,()=>i.click(),s),Ct(e,o,"keydown",t=>{const e=t;a()&&s()&&Mt(e)&&!e.defaultPrevented&&"Escape"===e.key&&(Pt(e),r())});const d=e=>{var r;if(!a())return;const s=n.ownerDocument,l=s.activeElement;if(e)o.contains(l)||(Qe.delete(t),l&&n.contains(l)&&(Qe.set(t,re(l)),n.classList.contains("art-keyboard-focus")&&i.focus({preventScroll:!0})));else{const e=Qe.get(t);if(Qe.delete(t),!o.contains(l))return;const i=e&&(null==(r=s.defaultView)?void 0:r.getComputedStyle(e).visibility);(null==e?void 0:e.isConnected)&&n.contains(e)&&e.getClientRects().length&&"hidden"!==i&&"collapse"!==i&&!e.matches(":disabled")&&!e.closest("[inert]")&&"true"!==e.getAttribute("aria-disabled")?e.focus({preventScroll:!0}):It(t)}};t.on("info",d),e.add(()=>{t.off("info",d)})}(t,e,r);const f=()=>{var t;try{for(const e of u){if(!n())return;const r=Reflect.get(c,null!=(t=e.dataset.video)?t:"undefined");if(!n())return;const o="number"===typeof r?r.toFixed(2):r;if(!n())return;if(e.textContent!==o){const t=null==o?null:`${o}`;if(!n())return;e.textContent=t}}n()&&St(e,f,a.INFO_LOOP_TIME)}catch(r){o(r)}};n()&&f()}catch(i){o(i)}}const er=new WeakMap;class rr extends Zt{constructor(t){super(t),this.name="info",er.set(this,{revision:0}),k||this.init()}init(){var t;const e=er.get(this),r=++e.revision;if(null==(t=e.scope)||t.dispose(),M(this.art)||e.revision!==r)return;const n=P(this.art).child();e.scope=n,n.add(()=>{e.scope===n&&(e.scope=void 0)}),tr(this.art,n,()=>{this.show=!1})}}class nr extends Zt{constructor(t){super(t);const{option:e,template:{$layer:r}}=t;this.name="layer",this.$parent=r;for(let n=0;n{et(i,"display","none"),et(s,"display",null),M(t)&&(l=!0)};var d;t.on("destroy",c),(d=t,L(d).finalizers).add(()=>{try{l||c()}finally{t.off("destroy",c)}}),M(t)||n.proxy(e.$state,"click",()=>{M(t)||at(t.play())})}}const ar=new WeakMap;function sr(t){const e=ar.get(t);e.revision++,e.pending=void 0,null!==t.timer&&(clearTimeout(t.timer),t.timer=null)}class lr{constructor(t){this.art=t,this.timer=null,ar.set(this,{revision:0});const e=()=>this.destroy();t.on("destroy",e),P(t).add(()=>{t.off("destroy",e)}),P(t).add(()=>{this.destroy()})}destroy(){sr(this)}set show(t){if(M(this.art))return;const e=ar.get(this);e.revision++;const{constructor:r,template:{$player:n,$noticeInner:o}}=this.art;if(t){sr(this);const i=e.revision,a=()=>!M(this.art)&&e.revision===i;if(o.textContent=t instanceof Error?t.message.trim():t,!a())return;if(j(n,"art-notice-show"),!a())return;const s=r.NOTICE_TIME;if(!a())return;const l={};e.pending=l;const c=setTimeout(()=>{if(M(this.art)||e.pending!==l)return;e.pending=void 0;const t=e.revision;o.textContent="",M(this.art)||e.revision!==t||q(n,"art-notice-show")},s);a()?this.timer=c:clearTimeout(c)}else q(n,"art-notice-show")}get show(){const{template:{$player:t}}=this.art;return t.classList.contains("art-notice-show")}}function cr(t,e){return function(t,e){const r=wt(e,t);return r.container=t.container,h(r,Gt)}(t,e)}function dr({width:t,height:e}){return Number.isFinite(t)&&t>0&&Number.isFinite(e)&&e>0}function ur(t,e){if(!dr(t)||!Number.isFinite(e)||e<=0)return;const r=t.width/t.height>e?{width:e*t.height,height:t.height,axis:"width"}:{width:t.width,height:t.width/e,axis:"height"};return dr(r)?r:void 0}function pr(t,e,r,n=!1){const o=e=>{M(t)||r(e)};t[n?"once":"on"](e,o),P(t).add(()=>{t.off(e,o)})}function fr(t,e,r){for(const[n,o]of e){if(M(t)||r&&!r())return;t[n].show=o}}function hr(t){const{option:e,constructor:r,i18n:n,notice:o,template:{$player:i}}=t;let a,s=de(t),l=0;return{reset(){l=0,null==a||a.dispose(),q(i,"art-error")},loadStart(){q(i,"art-error")},schedule(d){(d=>c(null,null,function*(){if(M(t))return;const c=de(t);if(c!==s&&(s=c,l=0),a&&!a.closed)return;const u=c.child();a=u,u.add(()=>{a===u&&(a=void 0)});const p=()=>!M(t)&&!u.closed&&c===de(t),f=l{console.warn("ArtPlayer reconnect failed:",t)})}}}const mr=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],vr=(()=>{if("undefined"===typeof document)return!1;const t=mr[0],e={};for(const r of mr){if(r[1]in document){for(const[n,o]of r.entries())e[t[n]]=o;return e}}return!1})(),gr={change:vr.fullscreenchange,error:vr.fullscreenerror},yr={request:(t=document.documentElement,e)=>new Promise((r,n)=>{const o=()=>{yr.off("change",o),r()};yr.on("change",o);const i=t[vr.requestFullscreen](e);i instanceof Promise&&i.then(o).catch(n)}),exit:()=>new Promise((t,e)=>{if(!yr.isFullscreen)return void t();const r=()=>{yr.off("change",r),t()};yr.on("change",r);const n=document[vr.exitFullscreen]();n instanceof Promise&&n.then(r).catch(e)}),toggle:(t,e)=>yr.isFullscreen?yr.exit():yr.request(t,e),onchange(t){yr.on("change",t)},onerror(t){yr.on("error",t)},on(t,e){const r=gr[t];r&&document.addEventListener(r,e,!1)},off(t,e){const r=gr[t];r&&document.removeEventListener(r,e,!1)},raw:vr};function br(t,e,...r){const n=Reflect.get(t,e);if("function"!==typeof n)throw new TypeError(`Fullscreen method ${e} is not available`);return n.apply(t,r)}Object.defineProperties(yr,{isFullscreen:{get:()=>Boolean(document[vr.fullscreenElement])},element:{enumerable:!0,get:()=>document[vr.fullscreenElement]},isEnabled:{enumerable:!0,get:()=>Boolean(document[vr.fullscreenEnabled])}});const wr=new WeakMap;function xr(t){try{Promise.resolve(t()).catch(()=>{})}catch(e){}}function kr(t){const{document:e,elementProperty:r,changeEvent:n,target:o,exit:i}=t,a=function(t,e,r){let n=wr.get(t);if(!n){n=new WeakMap,wr.set(t,n);const o=n;t.addEventListener(r,()=>{const r=Reflect.get(t,e),n=r&&o.get(r);n&&(o.delete(r),xr(n))})}return n}(e,r,n);a.set(o,i),t.element===o&&(a.delete(o),xr(i))}function $r(t,e,r,n,o=()=>t.element!==t.target){const i=e.child();let a,s,l=!1,c=!1,d=!1,u=!1,p=!1;const f=new Promise((t,e)=>{a=t,s=e});function h(t=!1,e){if(!l){l=!0;try{i.dispose()}catch(r){t||(t=!0,e=r)}t?s(e):a()}}i.add(()=>{l||(l=!0,c=!0,a(),d&&!u&&r&&kr(t))});const m=()=>{d&&!u&&(r?t.element===t.target:o())&&h()};if(Ct(i,t.document,t.changeEvent,m),Ct(i,t.document,t.errorEvent,e=>{e.target!==t.target&&e.target!==t.document||(p=!0,d&&!u&&h(!0,new Error("Fullscreen request failed")))}),!i.closed)try{r&&function(t){var e;null==(e=wr.get(t.document))||e.delete(t.target)}(t);const e=r?t.request():t.exit();u=Boolean(e&&"function"===typeof e.then),d=!0,c&&!u&&r&&kr(t),u?Promise.resolve(e).then(()=>{c?n():h()},t=>h(!0,t)).catch(()=>{}):p?h(!0,new Error("Fullscreen request failed")):m()}catch(v){h(!0,v)}return{promise:f,cancel:()=>i.dispose()}}function Er(t,e){const r=P(t).child(),{$player:n,$video:o}=t.template,i=()=>e.element===n||e.element===o;let a,s=i(),l=0,c=s,d=!1,u=!1,p=!1;function f(){if(i())try{Promise.resolve(e.exit()).catch(()=>{})}catch(t){}}return r.add(()=>{l+=1,c=!1,n.classList.remove("art-fullscreen"),f()}),Ct(r,e.document,e.changeEvent,()=>{const r=i();if(r&&function(t){var e,r;return null!=(r=null==(e=wr.get(t.document))?void 0:e.has(t.target))&&r}(e))return;if(r&&u)return void f();if(r===s||M(t))return;s=r;const o=l,a=()=>M(t)||i()!==r||o!==l&&c!==r;t.emit("fullscreen",r),a()||(r&&(t.state="fullscreen"),a()||(n.classList.toggle("art-fullscreen",r),t.emit("resize")))}),Ct(r,e.document,e.errorEvent,r=>{(r.target===n||r.target===o||r.target===e.document&&(p||void 0!==a||i()))&&!M(t)&&t.emit("fullscreenError",r)}),{get:()=>!M(t)&&i(),set(n){if(M(t))return Promise.resolve();const o=++l;if(c=Boolean(n),c?u=!1:d&&(u=!0),null==a||a.cancel(),a=void 0,d=!1,!c&&!i())return Promise.resolve();p=!0,d=c;const s=$r(e,r,c,()=>{!M(t)&&c||f()},()=>!i());p=!1,l===o?a=s:s.cancel();const h=s.promise.catch(e=>{throw M(t)||l!==o||(t.notice.show=e),e}).finally(()=>{l===o&&(a=void 0,d=!1)});return h.catch(()=>{}),h}}}const Ar=new WeakSet;function Cr(t,e=!1){return"string"===typeof t.webkitPresentationMode?"fullscreen"===t.webkitPresentationMode:"boolean"===typeof t.webkitDisplayingFullscreen?t.webkitDisplayingFullscreen:t.ownerDocument.fullscreenElement===t||e}function Sr(t){Ar.delete(t),t.removeEventListener("webkitbeginfullscreen",Tr),t.removeEventListener("webkitpresentationmodechanged",Tr)}function Tr(t){var e;if(Ar.has(this)&&Cr(this,"webkitbeginfullscreen"===t.type)){Sr(this);try{null==(e=this.webkitExitFullscreen)||e.call(this)}catch(r){}}}function Lr(t){Ar.add(t),t.addEventListener("webkitbeginfullscreen",Tr),t.addEventListener("webkitpresentationmodechanged",Tr)}function Pr(t){const{$video:e}=t.template,r=P(t).child();let n=!1,o=Cr(e),i=o,a=!1,s=0;const l=()=>Cr(e,n);function c(r){if(M(t)||(c=e,Ar.has(c)))return;var c;"boolean"===typeof r&&(n=r);const d=l();if(d&&(a=!1),d===o)return;o=d;const u=s,p=()=>M(t)||l()!==d||u!==s&&i!==d;t.emit("fullscreen",d),p()||(d&&(t.state="fullscreen"),p()||t.emit("resize"))}r.add(()=>{var t;s++,i=!1,a&&Lr(e),l()&&(null==(t=e.webkitExitFullscreen)||t.call(e))}),Ct(r,e,"webkitbeginfullscreen",()=>c(!0)),Ct(r,e,"webkitendfullscreen",()=>c(!1)),Ct(r,e,"webkitpresentationmodechanged",()=>c());const d=()=>c();return t.on("document:webkitfullscreenchange",d),r.add(()=>{t.off("document:webkitfullscreenchange",d)}),{get:()=>!M(t)&&l(),set(r){if(M(t))return;const n=++s;if(i=Boolean(r),r){if(Sr(e),t.state="fullscreen",M(t)||n!==s)return;a=!0;try{e.webkitEnterFullscreen()}catch(o){throw n===s&&(a=!1),o}}else a&&(a=!1,Lr(e)),l()&&e.webkitExitFullscreen()}}}function Mr(t){return{node:t,parent:t.parentNode,next:t.nextSibling}}function zr({node:t,parent:e,next:r}){var n;if(!e)return void(null==(n=t.parentNode)||n.removeChild(t));const o=(null==r?void 0:r.parentNode)===e?r:null;t.parentNode===e&&t.nextSibling===o||e.insertBefore(t,o)}function Rr(t,e,r){const n=Math.max(0,r.viewportWidth-r.width),o=Math.max(0,r.viewportHeight-r.height);return{left:Math.max(0,Math.min(t,n)),top:Math.max(0,Math.min(e,o))}}function Or(t){const{width:e,height:r}=t.getBoundingClientRect(),n=t.ownerDocument.defaultView;return{width:e,height:r,viewportWidth:n.innerWidth,viewportHeight:n.innerHeight}}function Dr(t,e,r,n){const o=e.child();if(o.closed)return;const i=t.template.$mini;if(i){const t=i.style.display;return o.add(()=>{i.style.display=t}),{element:i,cancelDrag:()=>{},fresh:!1}}const a=t.template.$player.ownerDocument,s=a.createElement("div");s.className="art-mini-popup",o.add(()=>{s.remove()});try{const e=a.createElement("div");if(e.className="art-mini-close",e.append(t.icons.close),o.closed)return;const i=a.createElement("div");i.className="art-mini-state";const l=t.icons.play,c=t.icons.pause;if(o.closed)return;i.append(l,c),s.append(e,i),zt(o,e,()=>e.click(),r),zt(o,i,()=>(t.playing?c:l).click(),r);const d=t.i18n.get("Close");if(o.closed||M(t))return;e.setAttribute("aria-label",d);const u=t.i18n.get("Mini Player");if(o.closed||M(t))return;s.setAttribute("role","group"),s.setAttribute("aria-label",u),Ct(o,s,"keydown",t=>{const e=t;r()&&Mt(e)&&!e.defaultPrevented&&"Escape"===e.key&&(Pt(e),n())}),Ct(o,e,"click",n),Ct(o,l,"click",()=>{at(t.play())}),Ct(o,c,"click",()=>{t.pause()});const p=()=>{if(o.closed)return;const e=t.i18n.get(t.playing?"Pause":"Play");o.closed||M(t)||(i.setAttribute("aria-label",e),l.style.display=t.playing?"none":"flex",c.style.display=t.playing?"flex":"none")};p();for(const r of["video:playing","video:pause","video:timeupdate"])t.on(r,p),o.add(()=>{t.off(r,p)});const f=function(t,e,r,n){let o=!1,i=0,a=0;const s=()=>{o=!1,e.classList.remove("art-mini-dragging"),e.style.transform=""};Ct(r,e,"mousedown",t=>{const e=t;0===e.button&&n()&&(o=!0,i=e.clientX,a=e.clientY)});const l=t=>{!r.closed&&o&&n()&&(e.classList.add("art-mini-dragging"),e.style.transform=`translate(${t.clientX-i}px, ${t.clientY-a}px)`)},c=()=>{if(r.closed||!o||!n())return;const i=e.getBoundingClientRect(),a=Rr(i.left,i.top,Or(e));s(),e.style.left=`${a.left}px`,e.style.top=`${a.top}px`,t.storage.set("left",a.left),r.closed||t.storage.set("top",a.top)};return t.on("document:mousemove",l),r.add(()=>{t.off("document:mousemove",l)}),t.on("document:mouseup",c),r.add(()=>{t.off("document:mouseup",c)}),r.add(s),s}(t,s,o,r);if(o.closed)return;if(t.template.$mini=s,a.body.append(s),!o.closed)return{element:s,cancelDrag:f,fresh:!0,focus:()=>e.focus({preventScroll:!0})}}catch(l){throw o.dispose(),t.template.$mini===s&&delete t.template.$mini,l}}function Ir(t){const{$player:e,$video:r}=t.template,n=P(t).child();let o,i,a=0,c=!1,d=!1;const u=()=>!M(t)&&e.classList.contains("art-mini"),p=function(t){const e=t.template.$player;let r;return{entering(){var n;const o=e.ownerDocument,i=o.activeElement,a=i&&e.contains(i);(null==(n=t.template.$mini)?void 0:n.contains(i))||(r=a?re(i):void 0);const s=a&&e.classList.contains("art-keyboard-focus");return e=>{!s||M(t)||o.activeElement!==i&&o.activeElement!==o.body||null==e||e()}},leaving(n){const o=e.ownerDocument,i=null==n?void 0:n.contains(o.activeElement);return()=>{var e;if(!i||M(t)||o.activeElement!==o.body&&!(null==n?void 0:n.contains(o.activeElement)))return;const a=r&&(null==(e=o.defaultView)?void 0:e.getComputedStyle(r).visibility);(null==r?void 0:r.isConnected)&&r.getClientRects().length&&"hidden"!==a&&"collapse"!==a&&"true"!==r.getAttribute("aria-disabled")&&!r.matches(":disabled")&&!r.closest("[inert]")?r.focus({preventScroll:!0}):It(t)}}}}(t);function f(){if(i){const e=i,r=a;i=void 0;try{zr(e)}catch(t){throw r!==a||i||(i=e),t}}}function h(){if(M(t))return;const r=++a;d=!1;const n=p.leaving(t.template.$mini);f(),M(t)||r!==a||(null==o||o.cancelDrag(),e.classList.remove("art-mini"),t.template.$mini&&(t.template.$mini.style.display="none",n(),M(t)||r!==a||t.emit("mini",!1)))}function m(){if(M(t))return;const v=++a;if(c)return void(d=!0);const g=p.entering();if(t.state="mini",!M(t)&&v===a){null!=i||(i=Mr(r)),e.classList.add("art-mini");try{if(!o){c=!0;try{o=Dr(t,n,u,h)}finally{c=!1}}if(d)return d=!1,void m();if(!o||M(t))return;if(v!==a)return void(u()||(o.element.style.display="none"));if(o.fresh?o.element.prepend(r):o.element.append(r),M(t)||v!==a)return;o.element.style.display=o.fresh?"":"flex",o.fresh=!1;const e=t.storage.get("top"),i=function(t,e,r){return"number"===typeof t&&Number.isFinite(t)&&"number"===typeof e&&Number.isFinite(e)&&t>=0&&e>=0&&t+r.width<=r.viewportWidth&&e+r.height<=r.viewportHeight?{left:t,top:e,reset:!1}:l(s({},Rr(r.viewportWidth-r.width-50,r.viewportHeight-r.height-50,r)),{reset:!0})}(t.storage.get("left"),e,Or(o.element));if(M(t)||v!==a)return;if(o.element.style.left=`${i.left}px`,o.element.style.top=`${i.top}px`,i.reset){if(t.storage.set("top",i.top),M(t)||v!==a)return;t.storage.set("left",i.left)}M(t)||v!==a||g(o.focus),M(t)||v!==a||t.emit("mini",!0)}catch(y){const r=d;throw d=!1,M(t)||v!==a&&!r||(f(),e.classList.remove("art-mini"),o&&(o.element.style.display="none")),y}}}return n.add(()=>{a++;try{f()}finally{null==o||o.cancelDrag(),e.classList.remove("art-mini")}}),{get:u,set(t){t?m():h()}}}const Nr=new WeakSet,_r=t=>"picture-in-picture"===t.webkitPresentationMode;function Wr(t){Nr.delete(t),t.removeEventListener("webkitpresentationmodechanged",Fr),t.removeEventListener("enterpictureinpicture",Fr)}function Fr(){var t;if(Nr.has(this)&&_r(this)){Wr(this);try{null==(t=this.webkitSetPresentationMode)||t.call(this,"inline")}catch(e){}}}function Vr(t){Nr.add(t),t.addEventListener("webkitpresentationmodechanged",Fr),t.addEventListener("enterpictureinpicture",Fr)}function Yr(t,e,r,n,o=!0){let i,a=!1;const s=e=>{t.closed||a||(o&&(a=!0,i()),n(e))};return e[o?"once":"on"](r,s),i=t.add(()=>{e.off(r,s)}),s}function Br(t,e,r){return new Promise((n,o)=>{var i;if(M(t)||e===t.url)return void n();const a=null!=(i=function(t){const e=ae.get(t);return(null==e?void 0:e.active())?e.resumePlaying:void 0}(t))?i:t.playing,s=pe(t);s.resumePlaying=a;const l=s.scope.child();let d=!1;const u=(t=!1,e)=>{d||(d=!0,s.resumePlaying=void 0,s.onError=void 0,s.onAssigned=void 0,l.dispose(),t?o(e):n(),t&&s.scope.dispose())};l.add(()=>{u()});const p=()=>!d&&s.active(),f=t=>u(!0,t);s.onError=f;try{const{aspectRatio:n,playbackRate:o}=t;s.internalPause=!0;try{t.pause()}finally{s.internalPause=!1}if(!p())return;const i=l.child();let a=!1,d=!1,h=!1;const m=$e(t,r,p),v=()=>c(null,null,function*(){const e=s.pauseRevision;if(t.aspectRatio=n,p()){if(s.resumePlaying)try{yield t.play()}catch(r){}p()&&(s.pauseRevision===e&&(t.notice.show=""),u())}}),g=()=>{var e,r;if(p()&&!d&&a)try{if(null==(r=null==(e=t.template)?void 0:e.$video)?void 0:r.seeking)return;if(!p())return;if(h||(h=!0,t.playbackRate=o),!m.ready()||!p()||d)return;d=!0,i.dispose(),v().catch(f)}catch(n){f(n)}},y={"video:error":f,"video:loadedmetadata":()=>{if(p())try{m.restore()}catch(t){f(t)}},"video:canplay":()=>{a=!0,g()},"video:seeked":g,seek:m.manual},b=l.child(),w=[],x=Object.keys(y);for(const e of x)Yr(b,t,e,t=>{s.acceptingEvents&&w.push([e,t])},!1);if(he(t,s,e),!p())return;if(t.notice.show="",!p())return;const k=()=>{if(b.dispose(),!e)return void u();const r={};for(const e of x)r[e]=Yr(i,t,e,y[e],"video:seeked"!==e);for(const[t,e]of w){if(!p()||i.closed)break;r[t](e)}w.length=0};s.assigned?k():s.onAssigned=k}catch(h){f(h)}})}function Hr(t){const{option:e,template:{$video:r}}=t;vt(t,"url",{get:()=>r.src,set(n){return c(this,null,function*(){if(M(t))return;const o=function(t){const e=se.get(t);return se.delete(t),e||pe(t)}(t);o.acceptingEvents=!1;try{if(!n)return void((yield Tt(o.scope))&&o.active()&&(t.loading.show=!0));const i=t.url,a=e.type||st(n),s=e.customType[a];if(a&&s){if(!(yield Tt(o.scope))||!o.active())return;t.loading.show=!0}if(!o.active())return;const l=o.scope.child();let c=!1,d=!1;Yr(l,t,"video:canplay",()=>{c=!d}),Yr(l,t,"video:error",()=>{d=!0});try{if(o.acceptingEvents=!0,a&&s){const e=s.call(t,r,n,t);Promise.resolve(e).catch(t=>me(o,t))}else{if(!o.active())return;r.src=n}}finally{l.dispose()}if(!o.active())return;if(i!==t.url&&(t.option.url=n,o.active()&&t.isReady&&i)){const e=()=>{o.active()&&t.emit("restart",n)};c?e():d||Yr(o.scope,t,"video:canplay",e)}}catch(i){me(o,i)}finally{fe(o)}})}})}const jr=[function(t){const{template:{$video:e}}=t;vt(t,"attr",{value(t,r){const n=e;if(void 0===r)return n[t];n[t]=r}})},function(t){const{i18n:e,notice:r,option:n,constructor:{instances:o},template:{$video:i}}=t;vt(t,"play",{value(){return c(this,null,function*(){ce(t,!0);const a=function(t){const e=ue(t),r=ae.get(t),n=null==r?void 0:r.pauseRevision;return()=>e()&&(null==r?void 0:r.pauseRevision)===n}(t),s=yield i.play();if(!a())return s;const l=e.get("Play");if(!a())return s;if(r.show=l,!a())return s;if(t.emit("play"),n.mutex)for(let e=0;et.playing?t.pause():t.play()})},function(t){const{notice:e}=t;vt(t,"seek",{set(r){t.currentTime=r,t.duration&&(e.show=`${ut(t.currentTime)} / ${ut(t.duration)}`),t.emit("seek",t.currentTime,r)}});const r=t;vt(t,"forward",{set(e){r.seek=t.currentTime+e}}),vt(t,"backward",{set(e){r.seek=t.currentTime-e}})},function(t){const{template:{$video:e},i18n:r,notice:n,storage:o}=t;vt(t,"volume",{get:()=>e.volume||0,set:t=>{e.volume=ct(t,0,1),n.show=`${r.get("Volume")}: ${Number.parseInt(String(100*e.volume),10)}`,0!==e.volume&&o.set("volume",e.volume)}}),vt(t,"muted",{get:()=>e.muted,set:r=>{e.muted=r,t.emit("muted",r)}})},function(t){const{$video:e}=t.template;vt(t,"currentTime",{get:()=>e.currentTime||0,set:r=>{const n=Number.parseFloat(r);Number.isNaN(n)||(!function(t){xe.set(t,ke(t)+1)}(t),e.currentTime=ct(n,0,t.duration))}})},function(t){vt(t,"duration",{get:()=>{const{duration:e}=t.template.$video;return e===1/0?0:e||0}})},function(t){const e=e=>Br(t,e,0);vt(t,"switchQuality",{value:e=>Br(t,e,t.currentTime)}),vt(t,"switchUrl",{value:e}),vt(t,"switch",{set:e})},function(t){const{template:{$video:e},i18n:r,notice:n}=t,o=t;vt(t,"playbackRate",{get:()=>e.playbackRate,set(t){if(t){if(t===e.playbackRate)return;e.playbackRate=t,n.show=`${r.get("Rate")}: ${1===t?r.get("Normal"):`${t}x`}`}else o.playbackRate=1}})},function(t){const{i18n:e,notice:r,template:{$video:n,$player:o}}=t;vt(t,"aspectRatio",{get:()=>o.dataset.aspectRatio||"default",set(i){if(!M(t)){if(i||(i="default"),"default"===i)n.style.width="",n.style.height="",n.style.margin="",delete o.dataset.aspectRatio;else{const e=i.split(":").map(Number),r=ur({width:o.clientWidth,height:o.clientHeight},e[0]/e[1]);if(M(t))return;"width"===(null==r?void 0:r.axis)?(n.style.width=`${r.width}px`,n.style.height="100%",n.style.margin="0 auto"):r&&(n.style.width="100%",n.style.height=`${r.height}px`,n.style.margin="auto 0"),o.dataset.aspectRatio=i}r.show=`${e.get("Aspect Ratio")}: ${"default"===i?e.get("Default"):i}`,M(t)||t.emit("aspectRatio",i)}}})},function(t){const{notice:e,template:{$video:r}}=t,n=document.createElement("canvas");function o(o){const i=ue(t);return new Promise((a,s)=>{const l=r=>{try{!M(t)&&i()&&(e.show=r)}catch(n){return void s(n)}s(r)};try{!function(t,e){t.width=e.videoWidth,t.height=e.videoHeight;const r=t.getContext("2d");if(!r)throw new TypeError("Canvas 2D context is unavailable");r.drawImage(e,0,0)}(n,r),o?function(t,e,r){t.toBlob(t=>{try{if(!t)throw new Error("Unable to encode screenshot blob");e(URL.createObjectURL(t))}catch(n){r(n)}})}(n,a,l):a(n.toDataURL("image/png"))}catch(c){l(c)}})}vt(t,"getDataURL",{value:()=>o(!1)}),vt(t,"getBlobUrl",{value:()=>o(!0)}),vt(t,"screenshot",{value:e=>c(null,null,function*(){const n=ue(t),o=yield t.getDataURL();if(!M(t)&&n()){const i=e||`artplayer_${ut(r.currentTime)}`;!M(t)&&n()&<(o,`${i}.png`),!M(t)&&n()&&t.emit("screenshot",o)}return o})})},function(t){const{i18n:e,notice:r,template:{$video:n,$player:o}}=t,i=()=>{if(M(t))return;const i=function(t){const e=yr.raw,r=t.ownerDocument;if(e&&Reflect.get(r,e.fullscreenEnabled))return{document:r,target:t,get element(){return Reflect.get(r,e.fullscreenElement)},elementProperty:e.fullscreenElement,changeEvent:e.fullscreenchange,errorEvent:e.fullscreenerror,request:()=>br(t,e.requestFullscreen,void 0),exit:()=>br(r,e.exitFullscreen)}}(o);i?vt(t,"fullscreen",Er(t,i)):n.webkitSupportsFullscreen&&"function"===typeof n.webkitEnterFullscreen&&"function"===typeof n.webkitExitFullscreen?vt(t,"fullscreen",Pr(t)):vt(t,"fullscreen",{get:()=>!1,set(){M(t)||(r.show=e.get("Fullscreen Not Supported"))}}),vt(t,"fullscreen",bt(t,"fullscreen"))};t.once("video:loadedmetadata",i),P(t).add(()=>{t.off("video:loadedmetadata",i)})},function(t){const e=function(t){const{$player:e}=t.template;let r,n=0;function o(t,r){return null===t.style?e.removeAttribute("style"):e.setAttribute("style",t.style),!!r()&&(e.classList.remove("art-fullscreen-web"),!!r()&&(zr(t.placement),r()))}return P(t).add(()=>{var t;n+=1;const i=r;if(r=void 0,i)try{o(i,()=>!0)}catch(a){try{e.parentNode!==i.placement.parent&&(null==(t=e.parentNode)||t.removeChild(e))}catch(s){throw new A([a,s])}throw a}}),i=>{if(M(t))return;const a=++n,s=()=>a===n&&!M(t),l=function(t){var e;const r=null==(e=t.ownerDocument)?void 0:e.activeElement,n=r&&t.contains(r);return()=>{n&&r.isConnected&&t.contains(r)&&r.ownerDocument.activeElement===r.ownerDocument.body&&r.focus({preventScroll:!0})}}(e);if(i){r||(r={placement:Mr(e),style:e.getAttribute("style")});const n=r;try{const r=e.ownerDocument.body;if(t.constructor.FULLSCREEN_WEB_IN_BODY&&e.parentNode!==r&&r.appendChild(e),!s())return;if(t.state="fullscreenWeb",!s())return;e.style.width="100%",e.style.height="100%",e.classList.add("art-fullscreen-web")}catch(c){throw s()&&o(n,s)&&(r=void 0,l()),c}if(!s())return;if(l(),!s())return;t.emit("fullscreenWeb",!0)}else{if(r){if(!o(r,s))return;r=void 0}else e.classList.remove("art-fullscreen-web");if(!s())return;if(l(),!s())return;t.emit("fullscreenWeb",!1)}s()&&t.emit("resize")}}(t);vt(t,"fullscreenWeb",{get:()=>t.template.$player.classList.contains("art-fullscreen-web"),set:e})},function(t){const{i18n:e,notice:r,template:{$video:n}}=t,o=n.ownerDocument;o.pictureInPictureEnabled&&"function"===typeof n.requestPictureInPicture&&"function"===typeof o.exitPictureInPicture?vt(t,"pip",function(t){const{$video:e}=t.template,r=e.ownerDocument,n=P(t).child(),o=()=>r.pictureInPictureElement===e;let i=o(),a=i,s=!1,l=!1,c=0;function d(){if(o())try{r.exitPictureInPicture().catch(()=>{})}catch(t){}}function u(e,r,n){e.then(()=>{!r||!M(t)&&a||d()},e=>{M(t)||c!==n||(t.notice.show=e)}).finally(()=>{c===n&&(s=!1)}).catch(()=>{})}return e.disablePictureInPicture=!1,n.add(()=>{c++,a=!1,d()}),Ct(n,e,"enterpictureinpicture",()=>{if(l)return void d();if(!o()||i)return;const e=c;t.state="pip",!M(t)&&e===c&&o()&&(i=!0,t.emit("pip",!0))}),Ct(n,e,"leavepictureinpicture",()=>{i&&!o()&&(i=!1,t.emit("pip",!1))}),{get:()=>!M(t)&&o()?e:null,set(n){if(M(t))return;const i=++c;if(a=Boolean(n),a?l=!1:s&&(l=!0),s=!1,a){if(t.state="pip",M(t)||c!==i)return;s=!0;try{u(e.requestPictureInPicture(),!0,i)}catch(d){throw c===i&&(s=!1),d}}else o()&&u(r.exitPictureInPicture(),!1,i)}}}(t)):"function"===typeof n.webkitSupportsPresentationMode&&"function"===typeof n.webkitSetPresentationMode?vt(t,"pip",function(t){const{$video:e}=t.template,r=P(t).child();let n=!1,o=!1,i=0,a=0;function s(r=!1){if(M(t)||Nr.has(e))return;const s=_r(e);if(s&&(o=!1),s===n&&!r)return;const l=i;s&&(t.state="pip"),M(t)||i!==l||_r(e)!==s||(n=s,a++,t.emit("pip",s))}e.webkitSetPresentationMode("inline"),r.add(()=>{i++,o&&Vr(e),_r(e)&&e.webkitSetPresentationMode("inline")});for(const l of["webkitpresentationmodechanged","enterpictureinpicture","leavepictureinpicture"])Ct(r,e,l,()=>s());return{get:()=>!M(t)&&_r(e),set(r){var n;if(M(t))return;const l=++i,c=a;if(r){if(!1===(null==(n=e.webkitSupportsPresentationMode)?void 0:n.call(e,"picture-in-picture")))return void(t.notice.show=t.i18n.get("PIP Not Supported"));if(Wr(e),t.state="pip",M(t)||i!==l)return;o=!0;try{e.webkitSetPresentationMode("picture-in-picture")}catch(d){throw l===i&&(o=!1),d}}else o&&(o=!1,Vr(e)),_r(e)&&e.webkitSetPresentationMode("inline");M(t)||l!==i||c!==a||_r(e)!==Boolean(r)||s(!0)}}}(t)):vt(t,"pip",{get:()=>!1,set(){M(t)||(r.show=e.get("PIP Not Supported"))}})},function(t){const{$video:e}=t.template,r=t;vt(t,"loaded",{get:()=>r.loadedTime/e.duration}),vt(t,"loadedTime",{get:()=>e.buffered.length?e.buffered.end(e.buffered.length-1):0})},function(t){vt(t,"played",{get:()=>t.currentTime/t.duration})},function(t){const{$video:e}=t.template;vt(t,"playing",{get:()=>"boolean"===typeof e.playing?e.playing:!!(e.currentTime>0&&!e.paused&&!e.ended&&e.readyState>2)})},function(t){const{$container:e,$player:r,$video:n}=t.template;vt(t,"autoSize",{value(){if(M(t))return;const o={width:n.videoWidth,height:n.videoHeight};if(!dr(o))return;const i=Y(e),a=ur(i,o.width/o.height);a&&!M(t)&&("width"===a.axis?(r.style.width=a.width/i.width*100+"%",r.style.height="100%"):(r.style.width="100%",r.style.height=a.height/i.height*100+"%"),t.emit("autoSize",{width:t.width,height:t.height}))}})},function(t){const e=t;vt(t,"rect",{get:()=>Y(t.template.$player)});const r=["bottom","height","left","right","top","width"];for(let n=0;ne.rect[o]})}vt(t,"x",{get:()=>e.left+window.pageXOffset}),vt(t,"y",{get:()=>e.top+window.pageYOffset})},function(t){const{template:{$player:e},i18n:r,notice:n}=t;vt(t,"flip",{get:()=>e.dataset.flip||"normal",set(o){M(t)||(o||(o="normal"),"normal"===o?delete e.dataset.flip:e.dataset.flip=o,n.show=`${r.get("Video Flip")}: ${r.get(dt(o))}`,M(t)||t.emit("flip",o))}})},function(t){vt(t,"mini",Ir(t))},function(t){const{template:{$poster:e}}=t;vt(t,"poster",{get:()=>{try{return e.style.backgroundImage.match(/"(.*)"/)[1]}catch(t){return""}},set(t){et(e,"backgroundImage",`url(${t})`)}})},function(t){const{$container:e,$video:r}=t.template;vt(t,"autoHeight",{value(){if(M(t))return;const n=function(t,e){if(!Number.isFinite(t)||t<=0||!dr(e))return;const r=e.height*(t/e.width);return Number.isFinite(r)&&r>0?r:void 0}(e.clientWidth,{width:r.videoWidth,height:r.videoHeight});void 0===n||M(t)||(e.style.height=`${n}px`,t.emit("autoHeight",n))}})},function(t){const{$player:e}=t.template;vt(t,"cssVar",{value:(t,r)=>r?e.style.setProperty(t,r):getComputedStyle(e).getPropertyValue(t)})},function(t){vt(t,"theme",{get:()=>t.cssVar("--art-theme"),set(e){t.cssVar("--art-theme",e)}})},function(t){vt(t,"type",{get:()=>t.option.type,set(e){t.option.type=e}})},function(t){const e=["mini","pip","fullscreen","fullscreenWeb"];vt(t,"state",{get:()=>e.find(e=>t[e])||"standard",set(r){for(let n=0;nt.startTime<=n&&ni[e]===t)){for(const e of r)t.removeCue(e);for(const e of r)t.addCue(e)}}(n.$track.track,n.$video,s),t.subtitle.update(),e.show=`${r.get("Subtitle Offset")}: ${o}s`,t.emit("subtitleOffset",o)}})},function(t){if(M(t))return;const{i18n:e,notice:r,proxy:n,template:{$video:o}}=t;let i=!0;const a=window.WebKitPlaybackTargetAvailabilityEvent;if(M(t))return;const s=a&&o.webkitShowPlaybackTargetPicker;M(t)||(s?n(o,"webkitplaybacktargetavailabilitychanged",e=>{if(!M(t))switch(e.availability){case"available":i=!0;break;case"not-available":i=!1}}):i=!1,M(t)||vt(t,"airplay",{value(){if(!M(t))if(i){const e=o.webkitShowPlaybackTargetPicker;if(M(t))return;Reflect.apply(e,o,[]),M(t)||t.emit("airplay")}else{const n=e.get("AirPlay Not Available");M(t)||(r.show=n)}}}))},function(t){vt(t,"quality",{set(e){const{controls:r,notice:n,i18n:o}=t,i=e.find(t=>t.default)||e[0];r.update({name:"quality",position:"right",index:10,style:{marginRight:"10px"},html:(null==i?void 0:i.html)||"",selector:e,onSelect(e,r,i){return c(this,null,function*(){const r=function(t){return t&&Se.get(t)||(()=>!0)}(i);if(yield t.switchQuality(e.url),!M(t)&&r()){const i=`${o.get("Switch Video")}: ${e.html}`;!M(t)&&r()&&(n.show=i)}return e.html})}})}})},function(t){const{option:e,template:{$progress:r,$video:n}}=t;let o,i,a,l=P(t).child(),c=!1;function d(){const e=l;l=P(t).child(),o=void 0,c=!1,a=void 0,e.dispose()}function u(){const i=a,c=l;if(!i||!o)return;const d=()=>{var e;return!M(t)&&!c.closed&&l===c&&a===i&&i.sourceActive()&&(null==(e=t.controls)?void 0:e.thumbnails)===i.element};if(!d())return;const u=r.clientWidth*i.percentage;if(!(u>0&&ud-f/2?d-f+"px":u-f/2+"px"}}(e.thumbnails,{imageWidth:o.naturalWidth,videoWidth:n.videoWidth,videoHeight:n.videoHeight,progressWidth:r.clientWidth,position:u}));for(const[t,e]of Object.entries(p)){if(!d())return;et(i.element,t,e)}}Ve(t)("setBar",(r,n,s)=>{var p;const f=null==(p=t.controls)?void 0:p.thumbnails,{url:h,scale:m}=e.thumbnails;if(!M(t)&&f&&h&&("hover"===r||"played"===r&&s&&k)){if(i!==f){const t=D(f);if(t.closed)return;i=f,t.add(()=>{i===f&&(i=void 0,d())})}if(a={percentage:n,element:f,sourceActive:ue(t)},o)u();else if(!c){const t=l;c=!0,function(t,e,r){return nt(t,e,r)}(h,m,t).then(e=>{l!==t||t.closed||(c=!1,o=e,u())}).catch(e=>{l!==t||t.closed||(c=!1,console.warn("ArtPlayer thumbnail load failed:",e))})}}}),vt(t,"thumbnails",{get:()=>t.option.thumbnails,set:e=>{M(t)||!e.url||t.option.isLive||M(t)||(t.option.thumbnails=e,d())}})},function(t){!function(t){const{proxy:e,template:{$video:r}}=t;for(let n=0;n{M(t)||t.emit(`video:${e.type}`,e)})}(t);const e=hr(t);!function(t,e){pr(t,"video:canplay",()=>{e.reset(),fr(t,[["loading",!1]])}),pr(t,"video:canplay",()=>{fr(t,[["loading",!1],["controls",!0],["mask",!0]]),M(t)||(t.isReady=!0,t.emit("ready"))},!0)}(t,e),function(t){const{option:e}=t;pr(t,"video:ended",()=>{if(e.loop){const e=ue(t);if(t.seek=0,M(t)||!e())return;at(t.play()),e()&&fr(t,[["controls",!1],["mask",!1]],e)}else fr(t,[["controls",!0],["mask",!0]])})}(t),pr(t,"video:error",e.schedule),function(t,e){const{template:{$poster:r}}=t;pr(t,"video:loadedmetadata",()=>{t.emit("resize"),k&&fr(t,[["loading",!1],["controls",!0],["mask",!0]])}),pr(t,"video:loadstart",()=>{e.loadStart(),fr(t,[["loading",!0],["mask",!1],["controls",!0]])}),pr(t,"video:pause",()=>{fr(t,[["controls",!0],["mask",!0]])}),pr(t,"video:play",()=>{fr(t,[["mask",!1]]),M(t)||et(r,"display","none")}),pr(t,"video:playing",()=>fr(t,[["mask",!1]])),pr(t,"video:progress",()=>{t.playing&&fr(t,[["loading",!1]])}),pr(t,"video:seeked",()=>fr(t,[["loading",!1],["mask",!0]])),pr(t,"video:seeking",()=>fr(t,[["loading",!0],["mask",!1]])),pr(t,"video:timeupdate",()=>fr(t,[["mask",!1]])),pr(t,"video:waiting",()=>fr(t,[["loading",!0],["mask",!1]]))}(t,e)},function(t){if(M(t))return;const{option:e,storage:r,template:{$video:n,$poster:o}}=t;for(const s in e.moreVideoAttr){if(M(t))return;const r=e.moreVideoAttr[s];if(M(t))return;t.attr(s,r)}if(M(t))return;if(e.muted){const r=e.muted;if(M(t))return;t.muted=r}if(M(t))return;if(e.volume){const r=ct(e.volume,0,1);if(M(t))return;n.volume=r}if(M(t))return;const i=r.get("volume");if(M(t))return;if("number"===typeof i&&(n.volume=ct(i,0,1)),M(t))return;if(e.poster){const r=`url(${e.poster})`;if(M(t))return;et(o,"backgroundImage",r)}if(M(t))return;if(e.autoplay){const r=e.autoplay;if(M(t))return;n.autoplay=r}if(M(t))return;if(e.playsInline){if(M(t))return;if(n.playsInline=!0,M(t))return;n["webkit-playsinline"]=!0}if(M(t))return;if(e.theme){const r=e.cssVar,n=e.theme;if(M(t))return;r["--art-theme"]=n}for(const s in e.cssVar){if(M(t))return;const r=e.cssVar[s];if(M(t))return;t.cssVar(s,r)}if(M(t))return;const a=e.url;M(t)||(t.url=a)}];class qr{constructor(t){if(!M(t)){Hr(t);for(const e of jr){if(M(t))return;e(t)}}}}const Ur=new WeakMap,Xr="art-auto-orientation-fullscreen";function Gr(t){if(Ur.get(t.orientation)===t)try{t.orientation.unlock()}catch(e){}}const Kr="art-auto-orientation",Zr=["width","height","transform-origin","transform"];function Jr(t){const{$player:e,$video:r}=t.template,n=()=>{const t={width:r.videoWidth,height:r.videoHeight},n=e.ownerDocument.documentElement,o={width:n.clientWidth,height:n.clientHeight};return dr(t)&&dr(o)&&(t.width>t.height&&o.widtho.height)},o=function(t,e){const{$player:r}=t.template,n=P(t);let o,i=()=>{};function a(){i(),i=()=>{};const e=o;if(o=void 0,e&&t.fullscreenWeb)for(const{name:t,value:o,priority:i}of e)r.style.setProperty(t,o,i);const n=r.classList.contains(Kr);r.classList.remove(Kr),n&&(t.isRotate=!1,M(t)||t.emit("resize"))}function s(n){if(!t.fullscreenWeb||!e())return;const i=B();if(M(t)||!t.fullscreenWeb)return;const a=r.ownerDocument.documentElement;null!=o||(o=Zr.map(t=>({name:t,value:r.style.getPropertyValue(t),priority:r.style.getPropertyPriority(t)}))),r.style.width=a.clientHeight-i.top-i.bottom+"px",r.style.height=a.clientWidth-i.left-i.right+"px",r.style.transformOrigin="0 0",r.style.transform=`rotate(90deg) translate(${i.top}px, -${a.clientWidth-i.right}px)`,r.classList.add(Kr),t.isRotate=!0,n&&t.emit("resize")}return n.add(a),r=>{var l;M(t)||(r?o?s(!1):e()&&(i(),i=St(n,()=>{o||s(!0)},Number(null!=(l=t.constructor.AUTO_ORIENTATION_TIME)?l:0))):a())}}(t,n),i=function(t,e){const{$player:r}=t.template;let n;function o(){const t=n;n=void 0,r.classList.remove(Xr),t&&(t.cancelled=!0,Gr(t),t.settled&&Ur.get(t.orientation)===t&&Ur.delete(t.orientation))}return P(t).add(o),i=>{var a,s;if(M(t))return;if(!i)return void o();if(n&&!n.cancelled&&Ur.get(n.orientation)===n)return;const l=null==(s=null==(a=r.ownerDocument.defaultView)?void 0:a.screen)?void 0:s.orientation;if("function"!==typeof(null==l?void 0:l.lock)||"function"!==typeof l.unlock||!e())return;const c={orientation:l,cancelled:!1,settled:!1};n=c,Ur.set(l,c);const d=()=>!M(t)&&!c.cancelled&&n===c&&Ur.get(l)===c,u=e=>{c.settled=!0;const o=d();Ur.get(l)===c&&Ur.delete(l),n===c&&(n=void 0),o&&(r.classList.remove(Xr),t.notice.show=e)};try{const t=l.lock(l.type.startsWith("portrait")?"landscape":"portrait");Promise.resolve(t).then(()=>{c.settled=!0,d()?r.classList.add(Xr):(Gr(c),Ur.get(l)===c&&Ur.delete(l))}).catch(u)}catch(p){u(p)}}}(t,n);return t.on("fullscreenWeb",o),t.on("fullscreen",i),P(t).add(()=>{t.off("fullscreenWeb",o),t.off("fullscreen",i)}),{name:"autoOrientation",get state(){return e.classList.contains("art-auto-orientation")}}}function Qr(t){return t.get("times")||{}}function tn(t){const{storage:e}=t,r=function(t){const{i18n:e,icons:r,storage:n,constructor:o,template:{$poster:i}}=t,a=t.layers.add({name:"auto-playback",html:'\n
\n
\n
\n '});if(!a||M(t))return()=>{};const s=Ot(".art-auto-playback-last",a),l=Ot(".art-auto-playback-jump",a),c=Ot(".art-auto-playback-close",a);Rt(c,r.close);const d=D(a);let u,p=0;const f=()=>{const r=++p;if(null==u||u.dispose(),d.closed||M(t)||p!==r)return;const f=d.child();u=f;const h=()=>u===f&&!f.closed&&!M(t);f.add(()=>{u===f&&(u=void 0,et(a,"display","none"))});const m=de(t).add(()=>{f.dispose()});f.add(()=>{m()});const v=Qr(n)[t.option.id||t.option.url];if(!h())return;if(et(a,"display","none"),!h()||!v||!(v>=o.AUTO_PLAYBACK_MIN))return;if(!h())return;if(et(a,"display","flex"),!h())return;const g=`${e.get("Last Seen")} ${ut(v)}`;if(!h())return;if(s.textContent=g,!h())return;const y=e.get("Jump Play");if(!h())return;if(l.textContent=y,!h())return;const b=(e,r)=>{const n=t.events.proxy(e,"click",()=>{h()&&r()});f.add(()=>{t.events.remove(n)})};if(b(c,()=>{et(a,"display","none")}),!h())return;if(b(l,()=>{t.seek=v,h()&&(at(t.play()),h()&&(et(i,"display","none"),h()&&et(a,"display","none")))}),!h())return;let w=()=>{},x=!1;const k=()=>{!x&&h()&&(x=!0,w(),St(f,()=>{h()&&et(a,"display","none")},o.AUTO_PLAYBACK_TIMEOUT))};t.on("video:timeupdate",k),w=f.add(()=>{t.off("video:timeupdate",k)}),x&&w()};return()=>{N(t,a,"ready",f),N(t,a,"restart",f)}}(t);return function(t){const{storage:e,constructor:r}=t;Ve(t)("video:timeupdate",()=>{if(!t.playing)return;const n=Qr(e),o=Object.keys(n),i=r.AUTO_PLAYBACK_MAX,a=t.option.id||t.option.url,s=t.currentTime;M(t)||(o.length>i&&delete n[o[0]],n[a]=s,M(t)||e.set("times",n))})}(t),r(),{name:"auto-playback",get times(){return Qr(e)},clear:()=>e.del("times"),delete(t){const r=Qr(e);return delete r[t],e.set("times",r),r}}}function en(t){let e,r=0;return{start:n=>{const o=++r;if(null==e||e.scope.dispose(),o!==r||M(t)||1!==n.touches.length||!t.playing||t.isLock)return;const i={scope:de(t).child(),active:!1,previousRate:1};e=i,i.scope.add(()=>{if(e===i&&(e=void 0,i.active))try{t.playbackRate=i.previousRate}finally{(null==e?void 0:e.active)||q(t.template.$player,"art-fast-forward")}}),St(i.scope,()=>{if(e!==i||M(t)||!t.playing||t.isLock)i.scope.dispose();else try{if(i.previousRate=t.playbackRate,e!==i||i.scope.closed)return;i.active=!0;const r=t.constructor.FAST_FORWARD_VALUE;if(e!==i||i.scope.closed||M(t))return;t.playbackRate=r,e!==i||i.scope.closed||M(t)||j(t.template.$player,"art-fast-forward")}catch(r){try{i.scope.dispose()}catch(n){console.warn("Failed to restore fast-forward playback rate:",n)}throw r}},t.constructor.FAST_FORWARD_TIME)},stop:()=>{r++,null==e||e.scope.dispose()}}}function rn(t){const{proxy:e,template:{$player:r,$video:n}}=t,o=en(t),i=Ve(t);return e(n,"touchstart",t=>o.start(t)),e(n,"touchcancel",o.stop),i("document:touchmove",o.stop),i("document:touchend",o.stop),i("document:touchcancel",o.stop),i("video:pause",o.stop),i("destroy",o.stop),i("lock",t=>{t&&o.stop()}),{name:"fastForward",get state(){return U(r,"art-fast-forward")}}}function nn(t,e,r,n){let o;const i=()=>!r.closed&&!M(t),a=t.i18n.get("Lock");if(!i())return()=>{};e.setAttribute("aria-label",a),zt(r,e),Ct(r,e,"keydown",t=>{const r=t;i()&&n()&&Mt(r)&&!r.defaultPrevented&&"Escape"===r.key&&(Pt(r),e.click())});const s=n=>{if(i())if(e.setAttribute("aria-pressed",String(n)),n&&!o){const{$player:n,$bottom:a}=t.template,s=a.contains(a.ownerDocument.activeElement)&&n.classList.contains("art-keyboard-focus");o=r.child(),function(t,e){const r=new Map,n=e.hasAttribute("inert"),o=e.getAttribute("aria-hidden"),i=(t,e)=>{"-1"===t.getAttribute("tabindex")&&(null===e?t.removeAttribute("tabindex"):t.setAttribute("tabindex",e))};if(t.add(()=>{for(const[t,e]of r)i(t,e);r.clear(),n||""!==e.getAttribute("inert")||e.removeAttribute("inert"),"true"===e.getAttribute("aria-hidden")&&(null===o?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden",o))}),t.closed)return;n||e.setAttribute("inert",""),e.setAttribute("aria-hidden","true");const a=()=>{if(!t.closed){for(const[t,n]of r)e.contains(t)||(i(t,n),r.delete(t));for(const t of e.querySelectorAll("[tabindex],button,input,select,textarea,a[href],[contenteditable]"))r.has(t)||(r.set(t,t.getAttribute("tabindex")),t.setAttribute("tabindex","-1"))}};if(a(),"undefined"!==typeof MutationObserver){const r=new MutationObserver(a);r.observe(e,{childList:!0,subtree:!0}),t.add(()=>{r.disconnect()})}}(o,a),i()&&s&&e.focus({preventScroll:!0})}else if(!n&&o){const t=o;o=void 0,t.dispose()}};return s(n()),s}function on(t){const{layers:e,icons:r,template:{$player:n}}=t;function o(){return U(n,"art-lock")}function i(){M(t)||(j(n,"art-lock"),M(t)||(t.isLock=!0,M(t)||t.emit("lock",!0)))}function a(){M(t)||(q(n,"art-lock"),M(t)||(t.isLock=!1,M(t)||t.emit("lock",!1)))}return e.add({name:"lock",mounted(e){const n=D(e);if(n.closed||M(t))return;const i=Rt(e,r.lock);if(n.closed||M(t))return;const a=Rt(e,r.unlock);if(n.closed||M(t))return;const s=nn(t,e,n,o);n.closed||M(t)||(o()?(et(i,"display","inline-flex"),n.closed||M(t)||et(a,"display","none")):et(i,"display","none"),N(t,e,"lock",e=>{M(t)||(et(i,"display",e?"inline-flex":"none"),n.closed||M(t)||et(a,"display",e?"none":"inline-flex"),n.closed||M(t)||s(e))}))},click(){o()?a():i()}}),{name:"lock",get state(){return o()},set state(t){t?i():a()}}}function an(t){return Ve(t)("control",e=>{e?q(t.template.$player,"art-mini-progress-bar"):j(t.template.$player,"art-mini-progress-bar")}),{name:"mini-progress-bar"}}class sn{constructor(t){this.art=t,this.id=0;const{option:e}=t;!function(t,e){M(t.art)||!e.miniProgressBar||e.isLive||t.add(an),!M(t.art)&&e.lock&&k&&t.add(on),M(t.art)||!e.autoPlayback||e.isLive||t.add(tn),!M(t.art)&&e.autoOrientation&&k&&t.add(Jr),!M(t.art)&&e.fastForward&&k&&!e.isLive&&t.add(rn)}(this,e);for(let r=0;rconsole.warn("Failed to initialize ArtPlayer plugin:",t))}}add(t){it(!M(this.art),"Cannot add a plugin after ArtPlayer is destroyed"),this.id+=1;const e=t.call(this.art,this.art);return e instanceof Promise?e.then(e=>this.next(t,e)):this.next(t,e)}next(t,e){return function(t,e,r){if(M(t.art))return t;const n=r&&r.name||e.name||`plugin${t.id}`;if(M(t.art))return t;let o=n;const i=yt(t,o);if(M(t.art))return t;const a=`Cannot add a plugin that already has the same name: ${n}`;return M(t.art)||(it(!i,a),("object"===typeof n&&null!==n||"function"===typeof n)&&(o=Reflect.ownKeys({[o]:void 0})[0]),M(t.art)||vt(t,o,{value:r})),t}(this,t,e)}}const ln=new WeakMap;function cn(t){return!t.closed&&!ln.get(t)}function dn(t){ln.set(t,(ln.get(t)||0)+1);let e=!0;return()=>{if(!e)return;e=!1;const r=(ln.get(t)||1)-1;r?ln.set(t,r):ln.delete(t)}}const un=new WeakMap,pn=new WeakMap,fn=["$parent","$parents","$option","$events","$formatted"];function hn(t){var e,r;const n=new Set;let o=t;for(;o&&!n.has(o);){n.add(o);const t=un.get(o);if(!t||!t.owner.active||(null==(e=t.owner.scope)?void 0:e.closed)||!t.option.includes(o))return!1;if(!t.parent)return t.owner.root===t.option;if((null==(r=un.get(t.parent))?void 0:r.owner)!==t.owner)return!1;o=t.parent}return!1}function mn(t){let e=t;for(;e;){const r=Object.getOwnPropertyDescriptor(e,"name");if(r)return"set"in r?"function"===typeof r.set:Boolean(r.writable&&(e===t||Object.isExtensible(t)));e=Object.getPrototypeOf(e)}return Object.isExtensible(t)}function vn(t){const e=un.get(t);if(!e)throw new Error("Setting item has not been formatted");return e}function gn(t,e){var r;for(let n=0;n{c&&c!==r&&c.dispose()},()=>En(t,o)])try{e()}catch(d){d instanceof A?l.push(...d.errors):l.push(d)}if(r.closed||M(t)||(o.push(...i.splice(0)),$n.set(r,o),xn.set(e,r),kn.set(e,n)),a(),l.length)throw new A(l)},dispose(){if(s){s=!1;try{r.dispose()}finally{a()}}}}}function Ln(t,e,r,n,o,i){const a=i||Cn(e);if(!cn(a)||M(t))return;const s=t.proxy(r,n,e=>{if(cn(a)&&!M(t))try{return o(e)}catch(r){console.warn("ArtPlayer setting callback failed:",r)}});!cn(a)||M(t)?t.events.remove(s):(vn(e).events.push(s),i&&i!==xn.get(e)&&i.add(()=>{const r=vn(e).events,n=r.indexOf(s);n>=0&&(r.splice(n,1),t.events.remove(s))}))}function Pn(t,e,r,n){const o=Cn(e);if(!cn(o)||M(t))return;const i=(...e)=>{if(cn(o)&&!M(t))return n(...e)};t.on(r,i),o.add(()=>{t.off(r,i)})}const Mn='[tabindex="0"],button,input,select,textarea,a[href],[contenteditable]';function zn(t){var e;if(!t.isConnected||t.matches(":disabled")||t.closest("[inert]")||"true"===t.getAttribute("aria-disabled")||!t.getClientRects().length)return!1;const r=null==(e=t.ownerDocument.defaultView)?void 0:e.getComputedStyle(t).visibility;return"hidden"!==r&&"collapse"!==r}function Rn(t){return Array.from(t.querySelectorAll(Mn)).filter(t=>"-1"!==t.getAttribute("tabindex")&&zn(t))}function On(t,e,r=!1){if(!t.show||M(t.art)||!t.active)return;const n=t.cache.get(t.active);if(!n||!cn(bn(n)))return;const o=function(t,e,r=!1){if(e&&e!==t&&t.contains(e)&&e.matches(Mn)&&"-1"!==e.getAttribute("tabindex")&&zn(e))return e;const n=Rn(t),o=t.querySelector(".art-setting-item.art-current");return n.find(t=>null==e?void 0:e.contains(t))||(r?n[n.length-1]:n.find(t=>null==o?void 0:o.contains(t))||n.find(t=>!t.classList.contains("art-setting-item-back"))||n[0])}(n,e,r);null==o||o.focus({preventScroll:!0}),M(t.art)||null==o||o.scrollIntoView({block:"nearest",inline:"nearest"})}function Dn(t){const e=t.$parent.ownerDocument,r=e.activeElement,n=t.$parent.contains(r);return o=>{n&&!M(t.art)&&(e.activeElement===e.body||e.activeElement===r&&!(null==r?void 0:r.getClientRects().length))&&On(t,o)}}function In(t){const{art:e}=t,r=P(e).child();if(r.closed)return;const n=()=>t.$parent.ownerDocument;let o=!1;const i=()=>{t.show=!1,r.closed||M(e)||t.render()},a=i=>{r.closed||M(e)||(i?n().activeElement===e.controls.setting&&e.template.$player.classList.contains("art-keyboard-focus")&&On(t,void 0,o):t.$parent.contains(n().activeElement)&&function(t){const{art:e,$parent:r}=t,n=e.template.$player,o=r.ownerDocument,i=e.controls.setting;!M(e)&&r.contains(o.activeElement)&&(i&&n.contains(i)&&zn(i)&&i.focus({preventScroll:!0}),(o.activeElement===o.body||r.contains(o.activeElement))&&It(e))}(t))};e.on("setting",a),r.add(()=>{e.off("setting",a)}),Ct(r,e.template.$player,"keydown",r=>{var n,a;const s=r;if(!Mt(s)||s.defaultPrevented||M(e))return;const l=s.target;if(l===e.controls.setting){if("ArrowDown"===s.key||"ArrowUp"===s.key)if(Pt(s),t.show)On(t,void 0,"ArrowUp"===s.key);else{o="ArrowUp"===s.key;try{t.show=!0}finally{o=!1}}else"Escape"===s.key&&t.show&&(Pt(s),i());return}if(!t.show||!t.$parent.contains(l))return;if("Escape"===s.key)return Pt(s),void i();if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"].includes(s.key))return;const c=l.closest(".art-setting-item");if(!c||l!==c&&!l.matches('button,a[href],[role="button"]'))return;const d=t.active&&t.cache.get(t.active);if(!d)return;const u=null==(n=t.active)?void 0:n.find(t=>t.$item===c);if(!cn(bn(d))||u&&!cn(Cn(u)))return void Pt(s);const p=Rn(d),f=p.indexOf(l);if(f<0)return;let h;switch(s.key){case"ArrowDown":h=Math.min(f+1,p.length-1);break;case"ArrowUp":h=Math.max(f-1,0);break;case"Home":h=0;break;case"End":h=p.length-1;break;case"ArrowLeft":{const t=d.querySelector(".art-setting-item-back");return Pt(s),void(null==t||t.click())}case"ArrowRight":return Pt(s),void((null==(a=null==u?void 0:u.selector)?void 0:a.length)&&l.click());default:return}Pt(s),void 0!==h&&On(t,p[h])});let s=!1;Ct(r,t.$parent,"focusout",o=>{const a=o.relatedTarget;a&&(t.$parent.contains(a)||a===e.controls.setting)||s||(s=!0,St(r,()=>{s=!1,r.closed||M(e)||!t.show||t.$parent.contains(n().activeElement)||n().activeElement===e.controls.setting||i()},0))})}function Nn(t){var e,r;const{art:n,active:o}=t,{controls:i,constructor:{SETTING_WIDTH:a,SETTING_ITEM_HEIGHT:s},template:{$player:l,$setting:c,$bottom:d}}=n;if(!i.setting||!t.show||!o)return;const u=l.getBoundingClientRect(),p=i.setting.getBoundingClientRect(),f=u.width/l.offsetWidth||1,h=(p.left-u.left+p.width/2)/f-l.clientLeft,m=function(t){const{containerWidth:e,containerHeight:r,requestedWidth:n,rows:o,rowHeight:i,controlCenter:a,bottom:s,padding:l}=t,c=Math.min(Math.max(0,l),Math.max(0,e/2)),d=Math.min(Math.max(0,n),Math.max(0,e-2*c));return{width:d,height:Math.min(Math.max(0,o*i),Math.max(0,r-s-c)),left:Math.max(c,Math.min(a-d/2,e-c-d))}}({containerWidth:l.clientWidth,containerHeight:l.clientHeight,requestedWidth:(null==(r=null==(e=o[0])?void 0:e.$parent)?void 0:r.width)||a,rows:o.length+(o===t.option?0:1),rowHeight:s,controlCenter:h,bottom:Number.parseFloat(getComputedStyle(c).bottom)||0,padding:Number.parseFloat(getComputedStyle(d).paddingLeft)||0});c.style.height=`${m.height}px`,c.style.width=`${m.width}px`,n.isRotate||k||(h+m.width/2>l.clientWidth?(c.style.left="",c.style.right=""):(c.style.left=`${m.left}px`,c.style.right="auto"))}const _n=new WeakMap;function Wn(t){_n.delete(t)}const Fn=new WeakMap;function Vn(t,e){e?Fn.set(t,e):Fn.delete(t)}function Yn(t){var e;const r=new Map(Reflect.ownKeys(t).map(e=>[e,Object.getOwnPropertyDescriptor(t,e)])),n=[],o=Fn.get(t),i=null==o?void 0:o();for(const a of["html","icon","tooltip"]){const t=null==(e=r.get(a))?void 0:e.value;t instanceof Node&&n.push({node:t,parent:t.parentNode,next:t.nextSibling})}return()=>{var e,a;for(const n of Reflect.ownKeys(t))!r.has(n)&&(null==(e=Object.getOwnPropertyDescriptor(t,n))?void 0:e.configurable)&&Reflect.deleteProperty(t,n);for(const[n,o]of r)Object.defineProperty(t,n,o);null==i||i(),Vn(t,o);for(const{node:t,parent:r,next:o}of n)r?r.insertBefore(t,(null==o?void 0:o.parentNode)===r?o:null):null==(a=t.parentNode)||a.removeChild(t)}}function Bn(t){var e,r;const n=null==(e=t.$item)?void 0:e.querySelector(".art-setting-range");n&&n.setAttribute("aria-label",(null==(r=t.$html)?void 0:r.textContent)||"")}const Hn=new WeakMap;function jn(t,e,r,n,o,i,a,s){return c(this,null,function*(){try{const l=Cn(e),c=Cn(i),d=(Hn.get(i)||0)+1;Hn.set(i,d);const u=()=>cn(l)&&cn(c)&&!M(t.art)&&Hn.get(i)===d;if(null==s||s(),!u())return;const p=yield o.call(t.art,e,r,n);u()&&Reflect.set(i,a,p)}catch(l){console.warn("ArtPlayer setting callback failed:",l)}})}function qn(t){const e=[];return function t(r){const n=Array.from(r.childNodes);e.push({node:r,children:n,attributes:1===r.nodeType?Array.from(r.attributes,t=>[t.name,t.value]):void 0,value:r.nodeValue}),n.forEach(t)}(t),()=>{for(const{node:t,children:r,attributes:n,value:o}of e){for(;t.firstChild;)t.removeChild(t.firstChild);for(const e of r)t.appendChild(e);if(n){const e=t;for(const t of Array.from(e.attributes))e.removeAttribute(t.name);for(const[t,r]of n)e.setAttribute(t,r)}else t.nodeValue=o}}}const Un=new WeakMap;function Xn(t){const e=[];for(const n of t)try{n()}catch(r){r instanceof A?e.push(...r.errors):e.push(r)}if(e.length)throw new A(e)}function Gn(t){var e;null==(e=Un.get(t))||e()}function Kn(t,e){const r=t.find(e.name);if(M(t.art))return r||e;if(!r)return t.add(e);const n=Dn(t);Wn(r),Gn(r);const o=Yn(r),i=r.$item,a=null==i?void 0:i.parentNode,s=null==i?void 0:i.nextSibling,l=i?qn(i):void 0,c=t.active,d=["height","width","left","right"].map(e=>[e,t.$parent.style.getPropertyValue(e),t.$parent.style.getPropertyPriority(e)]),u=function(t,e){const r=new Set,n=new Set,o=e=>{if(!r.has(e)&&(r.add(e),e.selector)){const r=t.cache.get(e.selector);r&&n.add(r),e.selector.forEach(o)}};o(e);const i=[],a=[];try{for(const e of r){const r=Tn(t.art,e);r&&i.push(r)}for(const t of n)a.push(dn(bn(t)))}catch(l){try{Xn([...i.reverse().map(t=>t.resume),...a])}catch(c){console.warn("ArtPlayer setting restore failed:",c)}throw l}let s=!0;return{items:r,resume(){s&&(s=!1,Xn([...i.reverse().map(t=>t.resume),...a]))},dispose(){s&&(s=!1,Xn([...i.reverse().map(t=>t.dispose),...Array.from(n).reverse().map(t=>()=>wn(t)),...a]))}}}(t,r);let p=!0,f=!1;const h=()=>{if(!p)return;p=!1;for(const t of u.items)Un.get(t)===h&&Un.delete(t);if(M(t.art))return void u.dispose();const e=r.$item;try{Xn([u.resume,()=>{e&&e!==i&&e.remove()},o,()=>null==l?void 0:l(),()=>{a&&i&&a.insertBefore(i,(null==s?void 0:s.parentNode)===a?s:null)},()=>t.format(),()=>{if(f){t.active=c,c&&t.cache.has(c)&&K(t.cache.get(c),"art-current");for(const[e,r,n]of d)t.$parent.style.setProperty(e,r,n)}}]),n(i)}catch(m){console.warn("ArtPlayer setting restore failed:",m)}},m=()=>p&&!M(t.art)&&Un.get(r)===h;for(const y of u.items)Un.set(y,h);const v=P(t.art).add(()=>{p=!1;for(const t of u.items)Un.get(t)===h&&Un.delete(t);u.dispose()});try{if(function(t,e,r){for(const n of Reflect.ownKeys(e)){if(!r())return;const o=Object.getOwnPropertyDescriptor(e,n);if(!(null==o?void 0:o.enumerable)||!r())continue;const i=Reflect.get(e,n);if(!r())return;if(!Reflect.set(t,n,i))throw new TypeError(`Cannot assign setting item property [${String(n)}]`)}}(r,e,m),!m())return r;if(t.format(),!m())return r;if(t.createItem(r,!0),!m())return r;if(f=!0,t.render(),!m())return r;p=!1;for(const t of u.items)Un.get(t)===h&&Un.delete(t);return u.dispose(),n(r.$item),r}catch(g){throw m()&&h(),g}finally{v()}}const Zn=new WeakMap;function Jn(t,e,r){vt(t,`$${e}`,{configurable:!0,get:()=>r}),vt(t,e,{configurable:!0,get:()=>r.innerHTML,set(n){r.innerHTML="",X(r,n),"html"===e&&Bn(t)}})}function Qn(t,e,r=!1){var n,o;const i=function(t){const e=Un.get(t);return()=>!e||Un.get(t)===e}(e);if(!t.cache.has(e.$option))return;const a=t.cache.get(e.$option),s=e.$item;let l="selector";yt(e,"switch")&&(l="switch"),yt(e,"range")&&(l="range"),yt(e,"onClick")&&(l="button");const{icons:c,constructor:d}=t.art;if(!i())return;const u=function(t,e,r=P(t)){const n=xn.get(e);(!n||cn(n)||n.closed)&&Sn(t,e);const o=r.child();return xn.set(e,o),kn.set(e,r),$n.set(o,vn(e).events),o.add(()=>{En(t,$n.get(o))}),o}(t.art,e,bn(a)),p=()=>cn(u)&&!M(t.art)&&i();if(!p())return;const f=document.createElement("div");try{if(Vn(e),j(f,"art-setting-item"),et(f,"height",`${d.SETTING_ITEM_HEIGHT}px`),f.dataset.name=e.name||"",f.dataset.value=String(e.value||""),!p())return;const i=Rt(f,'
'),h=Rt(f,'
'),m=document.createElement("div");switch(j(m,"art-setting-item-left-icon"),l){case"button":case"switch":case"range":{const t=e.icon||c.config;if(!p())return;X(m,t);break}case"selector":if(null==(n=e.selector)?void 0:n.length){const t=e.icon||c.config;if(!p())return;X(m,t)}else X(m,c.check)}if(X(i,m),!p())return;Jn(e,"icon",m);const v=document.createElement("div");j(v,"art-setting-item-left-text");const g=e.html||"";if(!p())return;X(v,g),X(i,v),Jn(e,"html",v);const y=document.createElement("div");j(y,"art-setting-item-right-tooltip");const b=e.tooltip||"";if(!p())return;switch(X(y,b),X(h,y),Jn(e,"tooltip",y),l){case"switch":{const t=document.createElement("div");j(t,"art-setting-item-right-icon");const r=Rt(t,c.switchOn),n=Rt(t,c.switchOff),o=e.switch;if(!p())return;et(o?n:r,"display","none"),X(h,t),vt(e,"$switch",{configurable:!0,get:()=>t});let i=e.switch;if(!p())return;Vn(e,()=>{const t=i;return()=>{i=t}}),vt(e,"switch",{configurable:!0,get:()=>i,set(t){i=t,f.setAttribute("aria-checked",String(Boolean(t))),t?(et(n,"display","none"),et(r,"display",null)):(et(n,"display",null),et(r,"display","none"))}});break}case"range":{const t=document.createElement("div");j(t,"art-setting-item-right-icon");const r=document.createElement("input");r.type="range",X(t,r);for(const[o,i]of["value","min","max","step"].entries()){const t=e.range[o];if(!p())return;Reflect.set(r,i,String(t))}j(r,"art-setting-range"),X(h,t),vt(e,"$range",{configurable:!0,get:()=>r});let n=[...e.range];if(!p())return;Vn(e,()=>{const t=n,e=[...t],o={min:r.min,max:r.max,step:r.step,value:r.value};return()=>{t.splice(0,t.length,...e),n=t,Object.assign(r,o)}}),vt(e,"range",{configurable:!0,get:()=>n,set(t){n=[...t],r.value=String(t[0]),r.min=String(t[1]),r.max=String(t[2]),r.step=String(t[3])}})}break;case"selector":if(null==(o=e.selector)?void 0:o.length){const t=document.createElement("div");j(t,"art-setting-item-right-icon"),X(t,c.arrowRight),X(h,t)}}if(!p())return;if(function(t,e,r,n){const{art:o}=t,i=Cn(e),a=(t,r,n)=>Ln(o,e,t,r,n,i);switch(n){case"switch":e.onSwitch&&a(r,"click",n=>jn(t,e,r,n,e.onSwitch,e,"switch"));break;case"range":{const n=e.$range;if(n)for(const[o,i]of[["change","onRange"],["input","onChange"]])e[i]&&a(n,o,o=>jn(t,e,r,o,e[i],e,"tooltip",()=>{e.range[0]=n.valueAsNumber}));break}case"selector":a(r,"click",n=>{var o,i;if(null==(o=e.selector)?void 0:o.length)t.render(e.selector);else{if(null==(i=e.$parent)?void 0:i.onSelect)return jn(t,e,r,n,e.$parent.onSelect,e.$parent,"tooltip",()=>t.check(e));t.check(e)}}),e.default&&j(r,"art-current");break;case"button":e.onClick&&a(r,"click",n=>jn(t,e,r,n,e.onClick,e,"tooltip"))}}(t,e,f,l),!p())return;vt(e,"$item",{configurable:!0,get:()=>f}),function(t,e,r,n,o){var i;"range"!==n?r.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")||("switch"===n?(r.setAttribute("role","switch"),r.setAttribute("aria-checked",String(Boolean(e.switch))),r.setAttribute("aria-disabled",String(!e.onSwitch))):"selector"!==n||(null==(i=e.selector)?void 0:i.length)||r.setAttribute("aria-current",String(Boolean(e.default))),zt(o,r,()=>r.click(),()=>cn(o)&&!M(t.art))):Bn(e)}(t,e,f,l,u),r&&(null==s?void 0:s.parentNode)?s.replaceWith(f):X(a,f),e.mounted&&p()&&St(u,()=>{var r;if(!M(t.art))try{const n=null==(r=e.mounted)?void 0:r.call(t.art,f,e);Promise.resolve(n).catch(t=>console.warn("ArtPlayer setting mounted failed:",t))}catch(n){console.warn("ArtPlayer setting mounted failed:",n)}},0)}catch(h){try{u.dispose()}catch(m){console.warn("ArtPlayer setting cleanup failed:",m)}throw f.remove(),h}}function to(t,e=t.option){var r,n,o,i,a,s;if(M(t.art))return;const l=Dn(t),c=t.cache.get(e);if(c&&!cn(bn(c)))return;const d=(Zn.get(t)||0)+1;Zn.set(t,d);const u=()=>Zn.get(t)===d&&!M(t.art),p=t.active,f=["height","width","left","right"].map(e=>[e,t.$parent.style.getPropertyValue(e),t.$parent.style.getPropertyPriority(e)]),h=()=>{t.active=p,p&&t.cache.has(p)&&K(t.cache.get(p),"art-current");for(const[e,r,n]of f)t.$parent.style.setProperty(e,r,n)};if(t.active=e,c)try{K(c,"art-current"),t.resize()}catch(m){throw u()&&t.cache.get(e)===c&&!bn(c).closed&&h(),m}else{const a=document.createElement("div");t.cache.set(e,a);const s=function(t,e,r){const n=P(t.art).child();return yn.set(r,n),n.add(()=>{t.cache.get(e)===r&&t.cache.delete(e),r.remove()}),n}(t,e,a),l=()=>!s.closed&&!M(t.art)&&t.cache.get(e)===a,c=[];try{if(!l())return;j(a,"art-setting-panel"),a.setAttribute("role","group"),a.setAttribute("aria-label",(null==(o=null==(n=null==(r=e[0])?void 0:r.$parent)?void 0:n.$html)?void 0:o.textContent)||t.art.i18n.get("Settings")),X(t.$parent,a),K(a,"art-current"),(null==(i=e[0])?void 0:i.$parent)&&t.createHeader(e[0]);for(let r=0;r{!function(t){const e=pn.get(t);e&&(e.active=!1,e.root=void 0,e.scope=void 0)}(this)}),e.setting&&(this.format(),this.render(),function(t){const{art:e}=t,r=P(e).child(),n=(t,n)=>{if(r.closed||M(e))return;const o=(...t)=>{if(!r.closed&&!M(e))return n(...t)};e.on(t,o),r.add(()=>{e.off(t,o)})};n("blur",()=>{t.show&&(t.show=!1,t.render())}),n("focus",r=>{const n=F(r,e.controls.setting),o=F(r,t.$parent);!t.show||n||o||(t.show=!1,t.render())}),n("resize",()=>t.resize());const o=()=>{r.closed||M(e)||t.resize()},i=e.proxy(t.$parent,"transitionend",e=>{e.target===t.$parent&&"bottom"===e.propertyName&&o()});r.add(()=>{e.events.remove(i)});const{$player:a,$controls:s}=e.template;if(!r.closed&&"undefined"!==typeof ResizeObserver){const t=new ResizeObserver(o);t.observe(a),t.observe(s),r.add(()=>{t.disconnect()})}if(!r.closed&&"undefined"!==typeof MutationObserver){const t=new MutationObserver(o);"undefined"===typeof ResizeObserver&&t.observe(s,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),t.observe(a,{attributes:!0,attributeFilter:["class","style"]}),r.add(()=>{t.disconnect()})}}(this)),In(this)}get builtin(){const t=[],{option:e}=this.art;return e.playbackRate&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,PLAYBACK_RATE:o}}=t;function i(t){return 1===t?e.get("Normal"):t.toFixed(1)}function a(){const e=t.setting.find(`playback-rate-${t.playbackRate}`);t.setting.check(e)}return{width:n,name:"playback-rate",html:e.get("Play Speed"),tooltip:i(t.playbackRate),icon:r.playbackRate,selector:o.map(e=>({value:e,name:`playback-rate-${e}`,default:e===t.playbackRate,html:i(e)})),onSelect:e=>(t.playbackRate=e.value,e.html),mounted:(e,r)=>{a(),Pn(t,r,"video:ratechange",()=>a())}}}(this.art)),e.aspectRatio&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,ASPECT_RATIO:o}}=t;function i(t){return"default"===t?e.get("Default"):t}function a(){const e=t.setting.find(`aspect-ratio-${t.aspectRatio}`);t.setting.check(e)}return{width:n,name:"aspect-ratio",html:e.get("Aspect Ratio"),icon:r.aspectRatio,tooltip:i(t.aspectRatio),selector:o.map(e=>({value:e,name:`aspect-ratio-${e}`,default:e===t.aspectRatio,html:i(e)})),onSelect:e=>(t.aspectRatio=e.value,e.html),mounted:(e,r)=>{a(),Pn(t,r,"aspectRatio",()=>a())}}}(this.art)),e.flip&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,FLIP:o}}=t;function i(t){return e.get(dt(t))}function a(){const e=t.setting.find(`flip-${t.flip}`);t.setting.check(e)}return{width:n,name:"flip",html:e.get("Video Flip"),tooltip:i(t.flip),icon:r.flip,selector:o.map(e=>({value:e,name:`flip-${e}`,default:e===t.flip,html:i(e)})),onSelect:e=>(t.flip=e.value,e.html),mounted:(e,r)=>{a(),Pn(t,r,"flip",()=>a())}}}(this.art)),e.subtitleOffset&&t.push(function(t){const{i18n:e,icons:r,constructor:n}=t;return{width:n.SETTING_ITEM_WIDTH,name:"subtitle-offset",html:e.get("Subtitle Offset"),icon:r.subtitle,tooltip:"0s",range:[0,-10,10,.1],onChange:e=>(t.subtitleOffset=e.range[0],`${e.range[0]}s`),mounted:(e,r)=>{Pn(t,r,"subtitleOffset",t=>{r.$range.value=String(t),r.tooltip=`${t}s`})}}}(this.art)),t}traverse(t,e=this.option){gn(e,t)}check(t){!function(t,e){(null==e?void 0:e.$parent)&&(e.$parent.tooltip=e.html,t.traverse(t=>{t.default=t===e,t.$item&&t.$item.setAttribute("aria-current",String(t.default)),t.default&&t.$item&&K(t.$item,"art-current")},e.$option),t.render(e.$parents))}(this,t)}format(t=this.option,e,r,n=[]){this.option=function(t,e,r,n,o=[]){const i=pn.get(t)||{active:!0},a=[],s=new Set,l=new Set(o),c=(t,e,r)=>{var n;for(let o=0;ovn(t).parent},$parents:{get:()=>vn(t).parents},$option:{get:()=>vn(t).option},$events:{get:()=>vn(t).events},$formatted:{get:()=>!0}}),un.set(t,{parent:r,parents:n,option:o,events:(null==a?void 0:a.events)||[],owner:i}),u.generated&&(t.name=e)}for(const u of a)u.generated||o.push(u.name);return t.id=d,e}(this,t,e,r,n)}find(t=""){return function(t,e=""){let r=null;return gn(t,t=>{t.name===e&&(r=t)}),r}(this.option,t)}resize(){Nn(this)}inactivate(t){!function(t,e){const r=[],n=new Set,o=e=>{if(!n.has(e)){n.add(e);for(const t of e.selector||[])o(t);if(e.selector){const n=t.cache.get(e.selector);t.cache.delete(e.selector);try{n&&wn(n)}catch(i){r.push(i)}}try{Sn(t.art,e)}catch(i){i instanceof A?r.push(...i.errors):r.push(i)}}};if(o(e),r.length)throw new A(r)}(this,t)}remove(t){const e=Dn(this),r=this.find(t);it(r,`Can't find [${t}] in the [setting]`),this.traverse(t=>{Wn(t),Gn(t)},[r]);const n=r.$option.indexOf(r);r.$option.splice(n,1);const o=r.$item,i=[];for(const s of[()=>this.inactivate(r),()=>null==o?void 0:o.remove(),()=>this.render()])try{s()}catch(a){a instanceof A?i.push(...a.errors):i.push(a)}if(i.length)throw new A(i);e()}update(t){return Kn(this,t)}add(t,e=this.option){var r;if(M(this.art))return t;let n=!1;this.traverse(e=>{n||(n=e===t)});const o=e.length,i=n?void 0:function(t){const e={};_n.set(t,e);const r=()=>_n.get(t)===e;return{current:r,finish(){r()&&_n.delete(t)}}}(t);let a=!1;try{e.push(t),this.format(),a=!0,this.createItem(t),this.render()}catch(s){if(M(this.art)||i&&!i.current())throw s;if(e[o]===t&&e.splice(o,1),!n&&a){try{this.inactivate(t)}catch(l){console.warn("ArtPlayer setting cleanup failed:",l)}null==(r=t.$item)||r.remove()}throw s}finally{null==i||i.finish()}return t}createHeader(t){!function(t,e){var r;if(!t.cache.has(e.$option))return;const n=t.cache.get(e.$option),{icons:{arrowLeft:o},constructor:{SETTING_ITEM_HEIGHT:i}}=t.art,a=document.createElement("div");et(a,"height",`${i}px`),j(a,"art-setting-item"),j(a,"art-setting-item-back");const s=Rt(a,'
'),l=document.createElement("div");j(l,"art-setting-item-left-icon"),X(l,o),X(s,l),X(s,e.$parent.html),Ln(t.art,e.$parent,a,"click",()=>t.render(e.$parents),bn(n));const c=bn(n);a.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")||zt(c,a,()=>a.click(),()=>cn(c)&&!M(t.art)),a.setAttribute("aria-label",`${t.art.i18n.get("Back")}: ${(null==(r=a.textContent)?void 0:r.trim())||""}`),X(n,a)}(this,t)}createItem(t,e=!1){Qn(this,t,e)}render(t=this.option){to(this,t)}}class no{constructor(){this.name="artplayer_settings",this.settings={}}get(t){try{const e=JSON.parse(window.localStorage.getItem(this.name))||{};return t?e[t]:e}catch(e){return t?this.settings[t]:this.settings}}set(t,e){try{const r=Object.assign({},this.get(),{[t]:e});window.localStorage.setItem(this.name,JSON.stringify(r))}catch(r){this.settings[t]=e}}del(t){try{const e=this.get();delete e[t],window.localStorage.setItem(this.name,JSON.stringify(e))}catch(e){delete this.settings[t]}}clear(){try{window.localStorage.removeItem(this.name)}catch(t){this.settings={}}}}const oo='.art-video-player{--art-theme: #f00;--art-font-color: #fff;--art-background-color: #000;--art-text-shadow-color: rgba(0, 0, 0, .5);--art-transition-duration: .2s;--art-padding: 10px;--art-border-radius: 3px;--art-progress-height: 6px;--art-progress-color: rgba(255, 255, 255, .25);--art-progress-top-gap: 10px;--art-hover-color: rgba(255, 255, 255, .25);--art-loaded-color: rgba(255, 255, 255, .25);--art-state-size: 80px;--art-state-opacity: .8;--art-bottom-height: 100px;--art-bottom-offset: 20px;--art-bottom-gap: 5px;--art-highlight-width: 8px;--art-highlight-color: rgba(255, 255, 255, .5);--art-control-height: 46px;--art-control-opacity: .75;--art-control-icon-size: 36px;--art-control-icon-scale: 1.1;--art-volume-height: 120px;--art-volume-handle-size: 14px;--art-lock-size: 36px;--art-indicator-scale: 0;--art-indicator-size: 16px;--art-fullscreen-web-index: 9999;--art-settings-icon-size: 24px;--art-settings-max-height: 300px;--art-selector-max-height: 300px;--art-contextmenus-min-width: 250px;--art-subtitle-font-size: 20px;--art-subtitle-gap: 5px;--art-subtitle-bottom: 15px;--art-subtitle-border: #000;--art-widget-background: rgba(0, 0, 0, .85);--art-tip-background: rgba(0, 0, 0, .7);--art-scrollbar-size: 4px;--art-scrollbar-background: rgba(255, 255, 255, .25);--art-scrollbar-background-hover: rgba(255, 255, 255, .5);--art-mini-progress-height: 2px}.art-bg-cover{background-position:center center;background-repeat:no-repeat;background-size:cover}.art-bottom-gradient{background-image:linear-gradient(to top,#000,rgba(0,0,0,.4),transparent);background-repeat:repeat-x;background-position:center bottom}.art-backdrop-filter{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:#000000bf!important}.art-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-video-player{position:relative;margin:0 auto;width:100%;height:100%;outline:0;zoom:1;padding:0;text-align:left;direction:ltr;font-size:14px;line-height:1.3;user-select:none;box-sizing:border-box;color:var(--art-font-color);background-color:var(--art-background-color);text-shadow:0 0 2px var(--art-text-shadow-color);font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,Roboto,Arial,sans-serif;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-touch-action:manipulation;touch-action:manipulation;-ms-high-contrast-adjust:none}.art-video-player *,.art-video-player *:before,.art-video-player *:after{box-sizing:border-box}.art-video-player ::-webkit-scrollbar{width:var(--art-scrollbar-size);height:var(--art-scrollbar-size)}.art-video-player ::-webkit-scrollbar-thumb{background-color:var(--art-scrollbar-background)}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:var(--art-scrollbar-background-hover)}.art-video-player img{max-width:100%;vertical-align:top}.art-video-player svg{fill:var(--art-font-color)}.art-video-player a{color:var(--art-font-color);text-decoration:none}.art-icon{line-height:1;display:flex;justify-content:center;align-items:center}.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{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:#000000bf!important}.art-video{position:absolute;inset:0;z-index:10;width:100%;height:100%}.art-poster{position:absolute;inset:0;z-index:11;width:100%;height:100%;background-position:center center;background-repeat:no-repeat;background-size:cover;pointer-events:none}.art-video-player .art-subtitle{display:none;justify-content:center;align-items:center;flex-direction:column;position:absolute;z-index:20;width:100%;padding:0 5%;text-align:center;pointer-events:none;gap:var(--art-subtitle-gap);bottom:var(--art-subtitle-bottom);font-size:var(--art-subtitle-font-size);transition:bottom var(--art-transition-duration) ease;text-shadow:var(--art-subtitle-border) 1px 0 1px,var(--art-subtitle-border) 0 1px 1px,var(--art-subtitle-border) -1px 0 1px,var(--art-subtitle-border) 0 -1px 1px,var(--art-subtitle-border) 1px 1px 1px,var(--art-subtitle-border) -1px -1px 1px,var(--art-subtitle-border) 1px -1px 1px,var(--art-subtitle-border) -1px 1px 1px}.art-video-player.art-subtitle-show .art-subtitle{display:flex}.art-video-player.art-control-show .art-subtitle{bottom:calc(var(--art-controls-height, var(--art-control-height)) + var(--art-subtitle-bottom))}.art-danmuku{position:absolute;inset:0;z-index:30;width:100%;height:100%;pointer-events:none;overflow:hidden}.art-video-player .art-layers{position:absolute;inset:0;z-index:40;width:100%;height:100%;display:none;pointer-events:none}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:flex}.art-video-player .art-mask{display:flex;justify-content:center;align-items:center;position:absolute;inset:0;z-index:50;width:100%;height:100%;pointer-events:none}.art-video-player .art-mask .art-state{display:flex;justify-content:center;align-items:center;opacity:0;transform:scale(2);width:var(--art-state-size);height:var(--art-state-size);transition:all var(--art-transition-duration) ease}.art-video-player.art-mask-show .art-state{pointer-events:auto;opacity:var(--art-state-opacity);transform:scale(1)}.art-video-player.art-loading-show .art-state{display:none}.art-video-player .art-loading{display:none;justify-content:center;align-items:center;position:absolute;inset:0;z-index:70;width:100%;height:100%;pointer-events:none}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player.art-loading-show .art-mask{display:none}.art-video-player .art-bottom{position:absolute;inset:0;z-index:60;width:100%;height:100%;display:flex;flex-direction:column;justify-content:flex-end;opacity:0;overflow:hidden;pointer-events:none;padding:0 var(--art-padding);transition:all var(--art-transition-duration) ease;background-size:100% var(--art-bottom-height);background-image:linear-gradient(to top,#000,rgba(0,0,0,.4),transparent);background-repeat:repeat-x;background-position:center bottom}.art-video-player .art-bottom .art-controls,.art-video-player .art-bottom .art-progress{transform:translateY(var(--art-bottom-offset));transition:transform var(--art-transition-duration) ease}.art-video-player.art-control-show .art-bottom,.art-video-player.art-hover .art-bottom{opacity:1}.art-video-player.art-control-show .art-bottom .art-controls,.art-video-player.art-hover .art-bottom .art-controls,.art-video-player.art-control-show .art-bottom .art-progress,.art-video-player.art-hover .art-bottom .art-progress{transform:translateY(0)}.art-bottom .art-progress{position:relative;z-index:0;cursor:pointer;pointer-events:auto;padding-top:var(--art-progress-top-gap);padding-bottom:var(--art-bottom-gap)}.art-bottom .art-progress .art-control-progress{position:relative;display:flex;justify-content:center;align-items:center;height:var(--art-progress-height)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:height var(--art-transition-duration) ease;background-color:var(--art-progress-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover{position:absolute;inset:0;z-index:0;width:100%;height:100%;width:0%;background-color:var(--art-hover-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{position:absolute;inset:0;z-index:10;width:100%;height:100%;width:0%;background-color:var(--art-loaded-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{position:absolute;inset:0;z-index:20;width:100%;height:100%;width:0%;background-color:var(--art-theme)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{position:absolute;inset:0;z-index:30;width:100%;height:100%;pointer-events:none}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{position:absolute;inset:0 auto 0 0;z-index:0;width:100%;height:100%;pointer-events:auto;width:var(--art-highlight-width)!important;transform:translate(calc(var(--art-highlight-width) / -2));background-color:var(--art-highlight-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{display:flex;justify-content:center;align-items:center;position:absolute;z-index:40;left:0;border-radius:50%;width:var(--art-indicator-size);height:var(--art-indicator-size);transform:scale(var(--art-indicator-scale));margin-left:calc(var(--art-indicator-size) / -2);transition:transform var(--art-transition-duration) ease}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon{width:100%;height:100%;pointer-events:none}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover{transform:scale(1.2)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active{transform:scale(1)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;z-index:50;top:-25px;left:0;padding:3px 5px;line-height:1;font-size:12px;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease}.art-bottom .art-progress .art-control-thumbnails{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;bottom:calc(var(--art-bottom-gap) + 10px);left:0;border-radius:var(--art-border-radius);pointer-events:none;background-color:var(--art-widget-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease;box-shadow:0 1px 3px #0003,0 1px 2px -1px #0003}.art-bottom .art-progress:hover .art-control-progress .art-control-progress-inner{height:100%}.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{transform:scale(1)}.art-progress-hover .art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip,.art-progress-hover .art-bottom .art-progress .art-control-thumbnails{transform:scale(1);opacity:1}.art-video-player .art-controls{position:relative;z-index:10;pointer-events:auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;flex-shrink:0;height:auto;min-height:var(--art-control-height)}.art-video-player .art-controls .art-controls-left,.art-video-player .art-controls .art-controls-right{display:flex;flex-wrap:wrap;max-width:100%;min-height:var(--art-control-height)}.art-video-player .art-controls .art-controls-center{display:none;justify-content:center;align-items:center;flex:1;height:100%;padding:0 10px}.art-video-player .art-controls .art-controls-right{justify-content:flex-end;margin-left:auto}.art-video-player .art-controls .art-control{display:flex;justify-content:center;align-items:center;flex-shrink:0;max-width:100%;cursor:pointer;white-space:nowrap;opacity:var(--art-control-opacity);min-height:var(--art-control-height);min-width:var(--art-control-height);transition:opacity var(--art-transition-duration) ease}.art-video-player .art-controls .art-control .art-icon{height:var(--art-control-icon-size);width:var(--art-control-icon-size);transform:scale(var(--art-control-icon-scale));transition:transform var(--art-transition-duration) ease}.art-video-player .art-controls .art-control .art-icon:active{transform:scale(calc(var(--art-control-icon-scale) * .8))}.art-video-player .art-controls .art-control:hover{opacity:1}.art-control-volume{position:relative}.art-control-volume .art-volume-panel{display:flex;justify-content:center;align-items:center;position:absolute;left:0;right:0;padding:0 5px;font-size:12px;text-align:center;cursor:default;opacity:0;visibility:hidden;transform:translateY(10px);pointer-events:none;bottom:var(--art-control-height);width:var(--art-control-height);height:var(--art-volume-height);transition:opacity var(--art-transition-duration) ease,transform var(--art-transition-duration) ease}.art-control-volume .art-volume-panel .art-volume-inner{display:flex;flex-direction:column;align-items:center;gap:10px;height:100%;width:100%;padding:10px 0 12px;border-radius:var(--art-border-radius);background-color:var(--art-widget-background)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{flex:1;width:100%;display:flex;cursor:pointer;position:relative;justify-content:center}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{position:relative;display:flex;justify-content:center;width:2px;border-radius:var(--art-border-radius);overflow:hidden;background-color:#ffffff40}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded{position:absolute;inset:0;z-index:0;width:100%;height:100%;background-color:var(--art-theme)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator{position:absolute;width:var(--art-volume-handle-size);height:var(--art-volume-handle-size);margin-top:calc(var(--art-volume-handle-size) / -2);flex-shrink:0;transform:scale(1);border-radius:100%;background-color:var(--art-theme);transition:transform var(--art-transition-duration) ease}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator{transform:scale(.9)}.art-control-volume:hover .art-volume-panel,.art-control-volume:focus-within .art-volume-panel{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.art-video-player .art-notice{display:none;position:absolute;inset:0 0 auto;z-index:80;width:100%;height:100%;height:auto;padding:var(--art-padding);pointer-events:none}.art-video-player .art-notice .art-notice-inner{display:inline-flex;padding:5px;line-height:1;border-radius:var(--art-border-radius);background-color:var(--art-tip-background)}.art-video-player.art-notice-show .art-notice{display:flex}.art-video-player .art-contextmenus{display:none;flex-direction:column;position:absolute;z-index:120;padding:5px 0;border-radius:var(--art-border-radius);font-size:12px;background-color:var(--art-widget-background);min-width:var(--art-contextmenus-min-width)}.art-video-player .art-contextmenus .art-contextmenu{cursor:pointer;display:flex;padding:10px 15px;border-bottom:1px solid rgba(255,255,255,.1)}.art-video-player .art-contextmenus .art-contextmenu span{padding:0 8px}.art-video-player .art-contextmenus .art-contextmenu span:hover,.art-video-player .art-contextmenus .art-contextmenu span.art-current{color:var(--art-theme)}.art-video-player .art-contextmenus .art-contextmenu:hover{background-color:#ffffff1a}.art-video-player .art-contextmenus .art-contextmenu:last-child{border-bottom:none}.art-video-player.art-contextmenu-show .art-contextmenus{display:flex}.art-video-player .art-settings{display:none;flex-direction:column;position:absolute;z-index:90;left:auto;overflow-y:auto;overflow-x:hidden;border-radius:var(--art-border-radius);max-height:var(--art-settings-max-height);right:var(--art-padding);bottom:var(--art-controls-height, var(--art-control-height));transition:all var(--art-transition-duration) ease;background-color:var(--art-widget-background)}.art-video-player .art-settings .art-setting-panel{display:none;flex-direction:column}.art-video-player .art-settings .art-setting-panel.art-current{display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item{display:flex;justify-content:space-between;align-items:center;gap:5px;padding:0 5px;cursor:pointer;overflow:hidden;transition:background-color var(--art-transition-duration) ease}.art-video-player .art-settings .art-setting-panel .art-setting-item:hover{background-color:#ffffff1a}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current{color:var(--art-theme)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check{visibility:hidden;height:15px}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check{visibility:visible}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left{display:flex;justify-content:center;align-items:center;flex-shrink:1;min-width:0;overflow:hidden;gap:5px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;height:var(--art-settings-icon-size);width:var(--art-settings-icon-size)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right{display:flex;justify-content:center;align-items:center;flex-shrink:0;min-width:0;max-width:55%;gap:5px;font-size:12px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#ffffff80}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;min-width:32px;height:24px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{height:3px;width:80px;outline:none;appearance:none;background-color:#fff3}.art-video-player .art-settings .art-setting-panel .art-setting-item-back{border-bottom:1px solid rgba(255,255,255,.1)}.art-video-player.art-setting-show .art-settings{display:flex}.art-video-player .art-info{display:none;position:absolute;left:var(--art-padding);top:var(--art-padding);z-index:100;padding:10px;font-size:12px;border-radius:var(--art-border-radius);background-color:var(--art-widget-background)}.art-video-player .art-info .art-info-panel{display:flex;flex-direction:column;gap:5px}.art-video-player .art-info .art-info-panel .art-info-item{display:flex;align-items:center;gap:5px}.art-video-player .art-info .art-info-panel .art-info-item .art-info-title{width:100px;text-align:right}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;user-select:all}.art-video-player .art-info .art-info-close{position:absolute;top:5px;right:5px;cursor:pointer}.art-video-player.art-info-show .art-info{display:flex}.art-hide-cursor *{cursor:none!important}.art-video-player[data-aspect-ratio]{overflow:hidden}.art-video-player[data-aspect-ratio] .art-video{object-fit:fill;box-sizing:content-box}.art-fullscreen{--art-progress-height: 8px;--art-indicator-size: 20px;--art-control-height: 60px;--art-control-icon-scale: 1.3}.art-fullscreen-web{--art-progress-height: 8px;--art-indicator-size: 20px;--art-control-height: 60px;--art-control-icon-scale: 1.3;position:fixed;inset:0;z-index:var(--art-fullscreen-web-index);width:100%;height:100%}.art-mini-popup{position:fixed;z-index:9999;width:320px;height:180px;max-width:100vw;max-height:100vh;background:#000;border-radius:var(--art-border-radius);cursor:move;user-select:none;overflow:hidden;transition:opacity .2s ease;box-shadow:0 0 5px #00000080}.art-mini-popup svg{fill:#fff}.art-mini-popup .art-video{pointer-events:none}.art-mini-popup .art-mini-close{position:absolute;z-index:20;right:10px;top:10px;cursor:pointer;opacity:0;transition:opacity .2s ease}.art-mini-popup .art-mini-state{position:absolute;inset:0;z-index:30;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none;opacity:0;transition:opacity .2s ease;background-color:#00000040}.art-mini-popup .art-mini-state .art-icon{opacity:.75;cursor:pointer;transform:scale(3);pointer-events:auto;transition:transform .2s ease}.art-mini-popup .art-mini-state .art-icon:active{transform:scale(2.5)}.art-mini-popup.art-mini-dragging{opacity:.9}.art-mini-popup:hover .art-mini-close,.art-mini-popup:focus-within .art-mini-close,.art-mini-popup:hover .art-mini-state,.art-mini-popup:focus-within .art-mini-state{opacity:1}.art-mini-popup [role=button]:focus-visible{outline:2px solid #fff;outline-offset:-2px}.art-video-player[data-flip=horizontal] .art-video{transform:scaleX(-1)}.art-video-player[data-flip=vertical] .art-video{transform:scaleY(-1)}.art-video-player .art-layer-lock{display:none;justify-content:center;align-items:center;position:absolute;top:50%;border-radius:50%;transform:translateY(-50%);height:var(--art-lock-size);width:var(--art-lock-size);left:var(--art-padding);background-color:var(--art-tip-background)}.art-video-player .art-layer-auto-playback{display:none;gap:10px;align-items:center;position:absolute;border-radius:var(--art-border-radius);padding:10px;line-height:1;left:var(--art-padding);bottom:calc(var(--art-controls-height, var(--art-control-height)) + var(--art-bottom-gap) + 10px);background-color:var(--art-widget-background)}.art-video-player .art-layer-auto-playback .art-auto-playback-close{display:flex;justify-content:center;align-items:center;cursor:pointer}.art-video-player .art-layer-auto-playback .art-auto-playback-close svg{width:15px;height:15px;fill:var(--art-theme)}.art-video-player .art-layer-auto-playback .art-auto-playback-jump{color:var(--art-theme);cursor:pointer}.art-video-player.art-lock .art-layer-lock{display:flex}.art-video-player.art-lock:not(.art-control-show) .art-layer-lock{opacity:0;pointer-events:none}.art-video-player.art-lock:not(.art-control-show) .art-layer-lock:focus-within{opacity:1;pointer-events:auto}.art-video-player.art-lock .art-subtitle{bottom:var(--art-subtitle-bottom)!important}.art-video-player.art-mini-progress-bar .art-bottom,.art-video-player.art-lock .art-bottom{opacity:1;padding:0;background-image:none}.art-video-player.art-mini-progress-bar .art-bottom .art-controls,.art-video-player.art-lock .art-bottom .art-controls,.art-video-player.art-mini-progress-bar .art-bottom .art-progress,.art-video-player.art-lock .art-bottom .art-progress{transform:translateY(calc(var(--art-controls-height, var(--art-control-height)) + var(--art-bottom-gap) + var(--art-progress-height) / 4))}.art-video-player.art-mini-progress-bar .art-bottom .art-progress-indicator,.art-video-player.art-lock .art-bottom .art-progress-indicator{display:none!important}.art-video-player.art-control-show .art-layer-lock{display:flex}.art-control-selector{position:relative;display:flex;justify-content:center}.art-control-selector .art-selector-list{display:flex;flex-direction:column;align-items:center;text-align:center;position:absolute;border-radius:var(--art-border-radius);overflow-y:auto;overflow-x:hidden;opacity:0;visibility:hidden;transform:translateY(10px);pointer-events:none;bottom:var(--art-control-height);max-height:var(--art-selector-max-height);background-color:var(--art-widget-background);transition:opacity var(--art-transition-duration) ease,transform var(--art-transition-duration) ease}.art-control-selector .art-selector-list .art-selector-item{display:flex;justify-content:center;align-items:center;width:100%;padding:10px 15px;flex-shrink:0;line-height:1}.art-control-selector .art-selector-list .art-selector-item:hover{background-color:#ffffff1a}.art-control-selector .art-selector-list .art-selector-item:hover,.art-control-selector .art-selector-list .art-selector-item.art-current{color:var(--art-theme)}.art-control-selector:hover:not(.art-selector-dismissed) .art-selector-list,.art-control-selector.art-selector-open .art-selector-list{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.art-video-player [class*=hint--]{position:relative;display:inline-block;font-style:normal}.art-video-player [class*=hint--]:before,.art-video-player [class*=hint--]:after{position:absolute;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);transform:translateZ(0);visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;-webkit-transition:.3s ease;-moz-transition:.3s ease;transition:.3s ease;-webkit-transition-delay:0ms;-moz-transition-delay:0ms;transition-delay:0ms}.art-video-player [class*=hint--]:hover:before,.art-video-player [class*=hint--]:hover:after{visibility:visible;opacity:1}.art-video-player [class*=hint--]:hover:before,.art-video-player [class*=hint--]:hover:after{-webkit-transition-delay:.1s;-moz-transition-delay:.1s;transition-delay:.1s}.art-video-player [class*=hint--]:before{content:"";position:absolute;background:transparent;border:6px solid transparent;z-index:1000001}.art-video-player [class*=hint--]:after{background:#000;color:#fff;padding:8px 10px;font-size:12px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:12px;white-space:nowrap}.art-video-player [class*=hint--][aria-label]:after{content:attr(aria-label)}.art-video-player [class*=hint--][data-hint]:after{content:attr(data-hint)}.art-video-player [aria-label=""]:before,.art-video-player [aria-label=""]:after,.art-video-player [data-hint=""]:before,.art-video-player [data-hint=""]:after{display:none!important}.art-video-player .hint--top-left:before{border-top-color:#000}.art-video-player .hint--top-right:before{border-top-color:#000}.art-video-player .hint--top:before{border-top-color:#000}.art-video-player .hint--bottom-left:before{border-bottom-color:#000}.art-video-player .hint--bottom-right:before{border-bottom-color:#000}.art-video-player .hint--bottom:before{border-bottom-color:#000}.art-video-player .hint--left:before{border-left-color:#000}.art-video-player .hint--right:before{border-right-color:#000}.art-video-player .hint--top:before{margin-bottom:-11px}.art-video-player .hint--top:before,.art-video-player .hint--top:after{bottom:100%;left:50%}.art-video-player .hint--top:before{left:calc(50% - 6px)}.art-video-player .hint--top:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translate(-50%)}.art-video-player .hint--top:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top:hover:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translate(-50%) translateY(-8px)}.art-video-player .hint--bottom:before{margin-top:-11px}.art-video-player .hint--bottom:before,.art-video-player .hint--bottom:after{top:100%;left:50%}.art-video-player .hint--bottom:before{left:calc(50% - 6px)}.art-video-player .hint--bottom:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translate(-50%)}.art-video-player .hint--bottom:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom:hover:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translate(-50%) translateY(8px)}.art-video-player .hint--right:before{margin-left:-11px;margin-bottom:-6px}.art-video-player .hint--right:after{margin-bottom:-14px}.art-video-player .hint--right:before,.art-video-player .hint--right:after{left:100%;bottom:50%}.art-video-player .hint--right:hover:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--right:hover:after{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--left:before{margin-right:-11px;margin-bottom:-6px}.art-video-player .hint--left:after{margin-bottom:-14px}.art-video-player .hint--left:before,.art-video-player .hint--left:after{right:100%;bottom:50%}.art-video-player .hint--left:hover:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--left:hover:after{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--top-left:before{margin-bottom:-11px}.art-video-player .hint--top-left:before,.art-video-player .hint--top-left:after{bottom:100%;left:50%}.art-video-player .hint--top-left:before{left:calc(50% - 6px)}.art-video-player .hint--top-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translate(-100%)}.art-video-player .hint--top-left:after{margin-left:12px}.art-video-player .hint--top-left:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top-left:hover:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translate(-100%) translateY(-8px)}.art-video-player .hint--top-right:before{margin-bottom:-11px}.art-video-player .hint--top-right:before,.art-video-player .hint--top-right:after{bottom:100%;left:50%}.art-video-player .hint--top-right:before{left:calc(50% - 6px)}.art-video-player .hint--top-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translate(0)}.art-video-player .hint--top-right:after{margin-left:-12px}.art-video-player .hint--top-right:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top-right:hover:after{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--bottom-left:before{margin-top:-11px}.art-video-player .hint--bottom-left:before,.art-video-player .hint--bottom-left:after{top:100%;left:50%}.art-video-player .hint--bottom-left:before{left:calc(50% - 6px)}.art-video-player .hint--bottom-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translate(-100%)}.art-video-player .hint--bottom-left:after{margin-left:12px}.art-video-player .hint--bottom-left:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom-left:hover:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translate(-100%) translateY(8px)}.art-video-player .hint--bottom-right:before{margin-top:-11px}.art-video-player .hint--bottom-right:before,.art-video-player .hint--bottom-right:after{top:100%;left:50%}.art-video-player .hint--bottom-right:before{left:calc(50% - 6px)}.art-video-player .hint--bottom-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translate(0)}.art-video-player .hint--bottom-right:after{margin-left:-12px}.art-video-player .hint--bottom-right:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom-right:hover:after{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--small:after,.art-video-player .hint--medium:after,.art-video-player .hint--large:after{white-space:normal;line-height:1.4em;word-wrap:break-word}.art-video-player .hint--small:after{width:80px}.art-video-player .hint--medium:after{width:150px}.art-video-player .hint--large:after{width:300px}.art-video-player [class*=hint--]:after{text-shadow:0 -1px 0px black;box-shadow:4px 4px 8px #0000004d}.art-video-player .hint--error:after{background-color:#b34e4d;text-shadow:0 -1px 0px #592726}.art-video-player .hint--error.hint--top-left:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--top-right:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--top:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--bottom-left:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--bottom-right:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--left:before{border-left-color:#b34e4d}.art-video-player .hint--error.hint--right:before{border-right-color:#b34e4d}.art-video-player .hint--warning:after{background-color:#c09854;text-shadow:0 -1px 0px #6c5328}.art-video-player .hint--warning.hint--top-left:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--top-right:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--top:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--bottom-left:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--bottom-right:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--bottom:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--left:before{border-left-color:#c09854}.art-video-player .hint--warning.hint--right:before{border-right-color:#c09854}.art-video-player .hint--info:after{background-color:#3986ac;text-shadow:0 -1px 0px #1a3c4d}.art-video-player .hint--info.hint--top-left:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--top-right:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--top:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--bottom-left:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--bottom-right:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--bottom:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--left:before{border-left-color:#3986ac}.art-video-player .hint--info.hint--right:before{border-right-color:#3986ac}.art-video-player .hint--success:after{background-color:#458746;text-shadow:0 -1px 0px #1a321a}.art-video-player .hint--success.hint--top-left:before{border-top-color:#458746}.art-video-player .hint--success.hint--top-right:before{border-top-color:#458746}.art-video-player .hint--success.hint--top:before{border-top-color:#458746}.art-video-player .hint--success.hint--bottom-left:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--bottom-right:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--bottom:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--left:before{border-left-color:#458746}.art-video-player .hint--success.hint--right:before{border-right-color:#458746}.art-video-player .hint--always:after,.art-video-player .hint--always:before{opacity:1;visibility:visible}.art-video-player .hint--always.hint--top:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translate(-50%) translateY(-8px)}.art-video-player .hint--always.hint--top-left:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top-left:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translate(-100%) translateY(-8px)}.art-video-player .hint--always.hint--top-right:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top-right:after{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--bottom:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translate(-50%) translateY(8px)}.art-video-player .hint--always.hint--bottom-left:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom-left:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translate(-100%) translateY(8px)}.art-video-player .hint--always.hint--bottom-right:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom-right:after{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--left:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--always.hint--left:after{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--always.hint--right:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--always.hint--right:after{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--rounded:after{border-radius:4px}.art-video-player .hint--no-animate:before,.art-video-player .hint--no-animate:after{-webkit-transition-duration:0ms;-moz-transition-duration:0ms;transition-duration:0ms}.art-video-player .hint--bounce:before,.art-video-player .hint--bounce:after{-webkit-transition:opacity .3s ease,visibility .3s ease,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s ease,visibility .3s ease,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s ease,visibility .3s ease,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.art-video-player .hint--no-shadow:before,.art-video-player .hint--no-shadow:after{text-shadow:initial;box-shadow:initial}.art-video-player .hint--no-arrow:before{display:none}.art-video-player.art-mobile{--art-bottom-gap: 10px;--art-control-height: 38px;--art-control-icon-scale: 1;--art-state-size: 60px;--art-settings-max-height: 180px;--art-selector-max-height: 180px;--art-indicator-scale: 1;--art-control-opacity: 1}.art-video-player.art-mobile .art-controls-left{margin-left:calc(var(--art-padding) / -1)}.art-video-player.art-mobile .art-controls-right{margin-right:calc(var(--art-padding) / -1)}.art-video-player [tabindex]:focus-visible,.art-video-player input:focus-visible,.art-video-player button:focus-visible,.art-video-player a:focus-visible{outline:2px solid currentColor;outline-offset:-2px}.art-video-player.art-keyboard-focus :focus{outline:2px solid currentColor;outline-offset:-2px}.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom{opacity:1}.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom .art-controls,.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom .art-progress{transform:translateY(0)}';class io{constructor(t){var e;this.scope=t.child(),this.cancelled=new Promise(t=>{this.scope.add(()=>{t(void 0)})}),this.signal=null==(e=function(t){if("undefined"===typeof AbortController)return;const e=new AbortController;return t.add(()=>{e.abort()}),e}(this.scope))?void 0:e.signal}get active(){return!this.scope.closed}cancel(){this.scope.dispose()}run(t){return c(this,null,function*(){if(this.active)try{return yield Promise.race([t(),this.cancelled])}finally{this.cancel()}})}}const ao=new WeakMap;function so(t){return ao.get(t)}function lo(t){const e=t.ownedURL;t.ownedURL=void 0,e&&URL.revokeObjectURL(e)}const co=Zt;class uo extends co{constructor(t){super(t),this.name="subtitle",this.option=null,this.destroyEvent=()=>null;const e=function(t,e){const r=P(e).child(),n={scope:r,revision:0,render:0,trackRevision:0};return ao.set(t,n),r.add(()=>{lo(n)}),n}(this,t);this.init(t.option.subtitle).catch(()=>{});let r=!1;const n=()=>{if(e.scope.closed||!this.url)return;const n=t.template.$video.webkitDisplayingFullscreen;"boolean"===typeof n&&n!==r&&(r=n,this.createTrack(n?"subtitles":"metadata",this.url))};t.on("video:timeupdate",n),e.scope.add(()=>{t.off("video:timeupdate",n)})}get url(){return this.art.template.$track.src}set url(t){this.switch(t).catch(()=>{})}get textTrack(){var t,e;return null==(e=null==(t=this.art.template.$video)?void 0:t.textTracks)?void 0:e[0]}get activeCues(){var t;return Array.from((null==(t=this.textTrack)?void 0:t.activeCues)||[])}get cues(){var t;return Array.from((null==(t=this.textTrack)?void 0:t.cues)||[])}style(t,e){const{$subtitle:r}=this.art.template;return"object"===typeof t?rt(r,t):et(r,t,e)}update(){!function(t){const e=so(t);if(e.scope.closed)return;const r=e.revision,n=++e.render,o=()=>!e.scope.closed&&e.revision===r&&e.render===n,{art:i}=t,{$subtitle:a}=i.template;if(a.innerHTML="",!t.activeCues.length)return;if(i.emit("subtitleBeforeUpdate",t.activeCues),!o())return;const s=t.activeCues.map((t,e)=>t.text.split(/\r?\n/).filter(t=>t.trim()).map(t=>`
\n ${i.option.subtitle.escape?mt(t):t}\n
`).join("")).join("");o()&&(a.innerHTML=s,i.emit("subtitleAfterUpdate",t.activeCues))}(this)}switch(t){return c(this,arguments,function*(t,e={}){const{i18n:r,notice:n,option:o}=this.art,i=l(s(s({},o.subtitle),e),{url:t}),a=so(this),c=a.revision+1,d=yield this.init(i);return!a.scope.closed&&a.revision===c&&e.name&&(n.show=`${r.get("Switch Subtitle")}: ${e.name}`),d})}createTrack(t,e){!function(t,e,r){const n=so(t);if(n.scope.closed)return;const o=++n.trackRevision,{art:i}=t,{template:a}=i,s=a.$track,l=s.parentNode,c=s.nextSibling,d=document.createElement("track"),u=n.scope.child();u.add(()=>{d.onload=null,d.onerror=null});let p=!1;try{if(d.default=!0,d.kind=e,d.src=r,d.label=i.option.subtitle.name||"Artplayer",d.track.mode="hidden",d.onload=()=>{u.closed||a.$track!==d||i.emit("subtitleLoad",t.cues,t.option)},d.onerror=()=>{u.closed||a.$track!==d||(i.notice.show=new Error("Failed to load subtitle track"))},u.closed||n.trackRevision!==o)return void u.dispose();s.remove(),a.$video.appendChild(d),a.$track=d;const l=t.textTrack,c=l?i.proxy(l,"cuechange",()=>{u.closed||a.$track!==d||t.update()}):()=>{};if(u.add(()=>{i.events.remove(c)}),u.closed||n.trackRevision!==o)return u.dispose(),void d.remove();const f=n.track;n.track=u,t.destroyEvent=c,s.onload=null,s.onerror=null,p=!0;try{null==f||f.dispose()}finally{n.ownedURL&&n.ownedURL!==r&&lo(n)}}catch(f){if(p)throw f;if(u.dispose(),d.remove(),n.scope.closed||n.trackRevision!==o)throw f;throw a.$track=s,l&&l.insertBefore(s,(null==c?void 0:c.parentNode)===l?c:null),f}}(this,t,e)}init(t){return c(this,null,function*(){const e=so(this),r=function(t){const e=t.request,r=new io(t.scope);return t.request=r,t.revision+=1,null==e||e.cancel(),r}(e),{notice:n,template:{$subtitle:o}}=this.art;return r.run(()=>c(this,null,function*(){if(!this.textTrack)return null;if(h(t,Gt.subtitle),!t.url)return;let i;this.option=t,this.style(t.style);try{if(!r.active)return;const n=yield fetch(t.url,{signal:r.signal});if(!r.active)return;if(!n.ok)throw new Error(`Failed to load subtitle: ${n.status} ${n.statusText}`);const a=yield n.arrayBuffer();if(!r.active)return;const s=function(t,e){const r=new TextDecoder(e.encoding).decode(t);switch(e.type||st(e.url)){case"srt":return{vtt:e.onVttLoad(xt(r))};case"ass":return{vtt:e.onVttLoad($t(r))};case"vtt":return{vtt:e.onVttLoad(r)};default:return}}(a,t);if(!r.active)return;const l=void 0===s?t.url:i=kt(s.vtt);if(!r.active)return;o.innerHTML="";const c=e.trackRevision+1;if(this.url!==l&&this.createTrack("metadata",l),!r.active||e.trackRevision>c)return;return i&&(e.ownedURL=i,i=void 0),l}catch(a){if(!r.active)return;throw o.innerHTML="",n.show=a,a}finally{i&&(e.scope.closed||this.url!==i?URL.revokeObjectURL(i):e.ownedURL=i)}}))})}}const po=`\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Player version:
\n
${m}
\n
\n
\n
Video url:
\n
\n
\n
\n
Video volume:
\n
\n
\n
\n
Video time:
\n
\n
\n
\n
Video duration:
\n
\n
\n
\n
Video resolution:
\n
\n x \n
\n
\n
\n
[x]
\n
\n
\n
\n `;class fo{constructor(t){this.art=t;const{option:e,constructor:r}=t;e.container instanceof Element?this.$container=e.container:(this.$container=H(e.container),it(this.$container,`No container element found by ${e.container}`)),it(V(),"The current browser does not support flex layout");const n=this.$container.tagName.toLowerCase();it("div"===n,`Unsupported container element type, only support 'div' but got '${n}'`),it(r.instances.every(t=>t.template.$container!==this.$container),"Cannot mount multiple instances on the same dom element"),this.query=this.query.bind(this),function(t,e,r){const n=T.get(e);if(n&&n!==t)throw new Error("Cannot mount multiple instances on the same dom element");const o=L(t);o.rollback=r,T.set(e,t),o.releaseContainer=()=>{T.get(e)===t&&T.delete(e)}}(t,this.$container,qn(this.$container)),function(t,e,r){const n=L(t),o=n.mountingTemplate;n.mountingTemplate=e;try{r()}finally{n.mountingTemplate=o}}(t,this,()=>{this.$container.dataset.artId=String(t.id),this.init()})}static get html(){return po}query(t){return H(t,this.$container)}init(){const{option:t}=this.art;var e;if(t.useSSR||(this.$container.innerHTML=fo.html),(e=this).$player=e.query(".art-video-player"),e.$video=e.query(".art-video"),e.$track=e.query("track"),e.$poster=e.query(".art-poster"),e.$subtitle=e.query(".art-subtitle"),e.$danmuku=e.query(".art-danmuku"),e.$bottom=e.query(".art-bottom"),e.$progress=e.query(".art-progress"),e.$controls=e.query(".art-controls"),e.$controlsLeft=e.query(".art-controls-left"),e.$controlsCenter=e.query(".art-controls-center"),e.$controlsRight=e.query(".art-controls-right"),e.$layer=e.query(".art-layers"),e.$loading=e.query(".art-loading"),e.$notice=e.query(".art-notice"),e.$noticeInner=e.query(".art-notice-inner"),e.$mask=e.query(".art-mask"),e.$state=e.query(".art-state"),e.$setting=e.query(".art-settings"),e.$info=e.query(".art-info"),e.$infoPanel=e.query(".art-info-panel"),e.$infoClose=e.query(".art-info-close"),e.$contextmenu=e.query(".art-contextmenus"),t.proxy){const e=t.proxy.call(this.art,this.art);if(M(this.art))return;!function(t){it(t instanceof HTMLVideoElement||t instanceof HTMLCanvasElement,"Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'")}(e),Z(e,this.$video),e.className="art-video",this.$video=e}t.backdrop&&j(this.$player,"art-backdrop"),k&&j(this.$player,"art-mobile")}destroy(t){t?this.$container.innerHTML="":j(this.$player,"art-destroy")}}const ho=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);class mo{on(t,e,r){const n=this.e||(this.e={});let o=ho(n,t)?n[t]:void 0;return o||(o=[],Object.defineProperty(n,t,{value:o,enumerable:!0,configurable:!0,writable:!0})),o.push({fn:e,ctx:r}),this}once(t,e,r){const n=this,o=e;let i=!1;function a(...e){i||(i=!0,n.off(t,a),o.apply(r,e))}return a._=e,this.on(t,a,r)}emit(t,...e){const r=this.e||(this.e={}),n=(ho(r,t)&&r[t]||[]).slice();for(const o of n)o.fn.apply(o.ctx,e);return this}off(t,e){const r=this.e||(this.e={}),n=ho(r,t)?r[t]:void 0,o=[];if(n&&e)for(let i=0,a=n.length;i{e.destroying||e.finalizers.dispose()})}(this);try{if(this.template=new fo(this),P(this).closed)return;if(this.events=new Be(this),P(this).closed)return;if(this.storage=new no,P(this).closed)return;if(this.icons=new Je(this),P(this).closed)return;if(this.i18n=new Ke(this),P(this).closed)return;if(this.notice=new lr(this),P(this).closed)return;if(this.player=new qr(this),P(this).closed)return;if(this.layers=new nr(this),P(this).closed)return;if(this.controls=new Re(this),P(this).closed)return;if(this.contextmenu=new ie(this),P(this).closed)return;if(this.subtitle=new uo(this),P(this).closed)return;if(this.info=new rr(this),P(this).closed)return;if(this.loading=new or(this),P(this).closed)return;if(this.hotkey=new Xe(this),P(this).closed)return;if(this.mask=new ir(this),P(this).closed)return;if(this.setting=new ro(this),P(this).closed)return;if(this.plugins=new sn(this),P(this).closed)return;if("function"===typeof e&&this.on("ready",()=>e.call(this,this)),yo.DEBUG){const t=t=>console.log(`[ART.${this.id}] -> ${t}`);t(`Version@${yo.version}`);for(let e=0;et(`Event@${e.type}`))}(function(t){const e=L(t);return e.rollback=void 0,!e.scope.closed})(this)&&go.push(this)}catch(r){try{z(this,go,!0,yo.REMOVE_SRC_WHEN_DESTROY,!0)}catch(n){console.warn("Failed to clean up ArtPlayer initialization:",n)}throw r}}static get instances(){return go}static get version(){return m}static get config(){return E}static get utils(){return Et}static get scheme(){return Gt}static get Emitter(){return mo}static get validator(){return h}static get kindOf(){return h.kindOf}static get html(){return fo.html}static get option(){return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:t=>t},moreVideoAttr:{controls:!1,preload:b?"auto":"metadata"},i18n:{},icons:{},cssVar:{},customType:{},lang:"undefined"===typeof navigator||null==navigator?void 0:navigator.language.toLowerCase()}}get proxy(){return this.events.proxy}get query(){return this.template.query}get video(){return this.template.$video}reset(){this.video.removeAttribute("src"),this.video.load()}destroy(t=!0){z(this,go,t,yo.REMOVE_SRC_WHEN_DESTROY)}}var bo,wo;return yo.STYLE=oo,yo.DEBUG=!1,yo.CONTEXTMENU=!0,yo.NOTICE_TIME=2e3,yo.SETTING_WIDTH=250,yo.SETTING_ITEM_WIDTH=200,yo.SETTING_ITEM_HEIGHT=35,yo.RESIZE_TIME=200,yo.SCROLL_TIME=200,yo.SCROLL_GAP=50,yo.AUTO_PLAYBACK_MAX=10,yo.AUTO_PLAYBACK_MIN=5,yo.AUTO_PLAYBACK_TIMEOUT=3e3,yo.RECONNECT_TIME_MAX=5,yo.RECONNECT_SLEEP_TIME=1e3,yo.CONTROL_HIDE_TIME=3e3,yo.DBCLICK_TIME=300,yo.DBCLICK_FULLSCREEN=!0,yo.MOBILE_DBCLICK_PLAY=!0,yo.MOBILE_CLICK_PLAY=!1,yo.AUTO_ORIENTATION_TIME=200,yo.INFO_LOOP_TIME=1e3,yo.FAST_FORWARD_VALUE=3,yo.FAST_FORWARD_TIME=1e3,yo.TOUCH_MOVE_RATIO=.5,yo.VOLUME_STEP=.1,yo.SEEK_STEP=5,yo.PLAYBACK_RATE=[.5,.75,1,1.25,1.5,2],yo.ASPECT_RATIO=["default","4:3","16:9"],yo.FLIP=["normal","horizontal","vertical"],yo.FULLSCREEN_WEB_IN_BODY=!0,yo.LOG_VERSION=!0,yo.USE_RAF=!1,yo.REMOVE_SRC_WHEN_DESTROY=!0,bo=yo,wo=oo,$&&(window.Artplayer=bo,v("artplayer-style",wo),setTimeout(()=>{bo.LOG_VERSION&&console.log(`%c ArtPlayer %c ${bo.version} %c https://artplayer.org`,"color: #fff; background: #5f5f5f","color: #fff; background: #4bc729","")},100)),yo}); diff --git a/docs/compiled/artplayer.mjs b/docs/compiled/artplayer.mjs index 2687ec25f..58b62c0bc 100644 --- a/docs/compiled/artplayer.mjs +++ b/docs/compiled/artplayer.mjs @@ -1,5 +1,5 @@ /*! - * artplayer.js v5.4.1 + * artplayer.js v6.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. @@ -220,7 +220,7 @@ function requireOptionValidator() { } var optionValidatorExports = requireOptionValidator(); const validator = /* @__PURE__ */ getDefaultExportFromCjs(optionValidatorExports); -const version$1 = "5.4.1"; +const version$1 = "6.0.0"; function setStyleText(id2, style) { let $style = document.getElementById(id2); if (!$style) { diff --git a/docs/document/404.html b/docs/document/404.html index 3672fb967..c224b21f8 100644 --- a/docs/document/404.html +++ b/docs/document/404.html @@ -21,7 +21,7 @@
- + \ No newline at end of file diff --git a/docs/document/advanced/built-in.html b/docs/document/advanced/built-in.html index fffb27bee..f338d09e7 100644 --- a/docs/document/advanced/built-in.html +++ b/docs/document/advanced/built-in.html @@ -217,7 +217,7 @@ art.on('ready', () => { art.plugins.add(myPlugin); }); - + \ No newline at end of file diff --git a/docs/document/advanced/class.html b/docs/document/advanced/class.html index cb4670768..1b6eb0b35 100644 --- a/docs/document/advanced/class.html +++ b/docs/document/advanced/class.html @@ -31,7 +31,7 @@ }); console.info([...Artplayer.instances]);

version ​

返回播放器的版本信息

▶ Run Code
js
console.info(Artplayer.version);

env ​

返回播放器的环境变量

▶ Run Code
js
console.info(Artplayer.env);

build ​

返回播放器的打包时间

▶ Run Code
js
console.info(Artplayer.build);

config ​

返回视频的默认配置

▶ Run Code
js
console.info(Artplayer.config);

utils ​

返回播放器的工具函数集合

▶ Run Code
js
console.info(Artplayer.utils);

全部工具函数请参考以下地址:

artplayer/types/utils.d.ts

scheme ​

返回播放器选项的校验方案

▶ Run Code
js
console.info(Artplayer.scheme);

Emitter ​

返回事件分发器的构造函数

▶ Run Code
js
console.info(Artplayer.Emitter);

validator ​

返回选项的校验函数

▶ Run Code
js
console.info(Artplayer.validator);

kindOf ​

返回类型检测的函数工具

▶ Run Code
js
console.info(Artplayer.kindOf);

html ​

返回播放器所需的 html 字符串

▶ Run Code
js
console.info(Artplayer.html);

option ​

返回播放器的默认选项

▶ Run Code
js
console.info(Artplayer.option);
- + \ No newline at end of file diff --git a/docs/document/advanced/event.html b/docs/document/advanced/event.html index 2b1ded7be..48ddee7da 100644 --- a/docs/document/advanced/event.html +++ b/docs/document/advanced/event.html @@ -385,7 +385,7 @@ art.on('keydown', (event) => { console.log(event.code); });

video:canplay ​

浏览器可以播放媒体文件了,但估计没有足够的数据来支撑播放到结束,不必停下来进一步缓冲内容

video:canplaythrough ​

浏览器估计它可以在不停止内容缓冲的情况下播放媒体直到结束

video:complete ​

OfflineAudioContext 渲染完成

video:durationchange ​

duration 属性的值改变时触发

video:emptied ​

媒体内容变为空;例如,当这个 media 已经加载完成(或者部分加载完成),则发送此事件,并调用 load() 方法重新加载它

video:ended ​

视频停止播放,因为 media 已经到达结束点

video:error ​

获取媒体数据时出错,或者资源类型不是受支持的媒体格式

video:loadeddata ​

media 中的首帧已经完成加载

video:loadedmetadata ​

已加载元数据

video:pause ​

播放已暂停

video:play ​

播放已开始

video:playing ​

由于缺乏数据而暂停或延迟后,播放准备开始

video:progress ​

在浏览器加载资源时周期性触发

video:ratechange ​

播放速率发生变化

video:seeked ​

跳帧(seek)操作完成

video:seeking ​

跳帧(seek)操作开始

video:stalled ​

用户代理(user agent)正在尝试获取媒体数据,但数据意外未出现

video:suspend ​

媒体数据加载已暂停

video:timeupdate ​

currentTime 属性指定的时间发生变化

video:volumechange ​

音量发生变化

video:waiting ​

由于暂时缺少数据,播放已停止

- + \ No newline at end of file diff --git a/docs/document/advanced/global.html b/docs/document/advanced/global.html index b1dd3067d..89fc18cf4 100644 --- a/docs/document/advanced/global.html +++ b/docs/document/advanced/global.html @@ -248,7 +248,7 @@ // 只销毁界面,不主动清空 src art.destroy(); - + \ No newline at end of file diff --git a/docs/document/advanced/plugin.html b/docs/document/advanced/plugin.html index 14786c74b..5bb7bc99e 100644 --- a/docs/document/advanced/plugin.html +++ b/docs/document/advanced/plugin.html @@ -122,7 +122,7 @@ }) ], }); - + \ No newline at end of file diff --git a/docs/document/advanced/property.html b/docs/document/advanced/property.html index 3c5dc9ead..5b39eaa28 100644 --- a/docs/document/advanced/property.html +++ b/docs/document/advanced/property.html @@ -457,7 +457,7 @@ art.on('ready', () => { art.subtitleOffset = 1; }); - + \ No newline at end of file diff --git a/docs/document/assets/en_plugin_vtt-thumbnail.md.CI6T1LST.lean.js b/docs/document/assets/en_plugin_vtt-thumbnail.md.CI6T1LST.lean.js deleted file mode 100644 index 05ef53840..000000000 --- a/docs/document/assets/en_plugin_vtt-thumbnail.md.CI6T1LST.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,o as i,c as n,ak as a,j as t}from"./chunks/framework.xxfEszSJ.js";const u=JSON.parse('{"title":"VTT Thumbnail","description":"","frontmatter":{},"headers":[],"relativePath":"en/plugin/vtt-thumbnail.md","filePath":"en/plugin/vtt-thumbnail.md","lastUpdated":null}'),l={name:"en/plugin/vtt-thumbnail.md"};function p(r,s,h,o,d,c){return i(),n("div",null,s[0]||(s[0]=[a("",10),t("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-vtt-thumbnail/index.js"},null,-1),a("",24)]))}const m=e(l,[["render",p]]);export{u as __pageData,m as default}; diff --git a/docs/document/assets/en_plugin_vtt-thumbnail.md.CI6T1LST.js b/docs/document/assets/en_plugin_vtt-thumbnail.md.D4KIZyUV.js similarity index 88% rename from docs/document/assets/en_plugin_vtt-thumbnail.md.CI6T1LST.js rename to docs/document/assets/en_plugin_vtt-thumbnail.md.D4KIZyUV.js index 6a0fe7243..84413216c 100644 --- a/docs/document/assets/en_plugin_vtt-thumbnail.md.CI6T1LST.js +++ b/docs/document/assets/en_plugin_vtt-thumbnail.md.D4KIZyUV.js @@ -1,4 +1,4 @@ -import{_ as e,o as i,c as n,ak as a,j as t}from"./chunks/framework.xxfEszSJ.js";const u=JSON.parse('{"title":"VTT Thumbnail","description":"","frontmatter":{},"headers":[],"relativePath":"en/plugin/vtt-thumbnail.md","filePath":"en/plugin/vtt-thumbnail.md","lastUpdated":null}'),l={name:"en/plugin/vtt-thumbnail.md"};function p(r,s,h,o,d,c){return i(),n("div",null,s[0]||(s[0]=[a(`

VTT Thumbnail ​

中文

Load a WebVTT thumbnail index and show the selected sprite region when hovering over the progress bar. Generate the index and images beforehand; this plugin does not scan the video or require another SDK.

This page describes the current refactor branch. Parser and lifecycle fixes and the precise /runtime types are not published yet. An unpinned npm or CDN installation is not evidence of this branch's behavior.

Installation ​

sh
yarn add artplayer artplayer-plugin-vtt-thumbnail
js
import Artplayer from 'artplayer';
+import{_ as e,o as i,c as n,ak as a,j as t}from"./chunks/framework.xxfEszSJ.js";const u=JSON.parse('{"title":"VTT Thumbnail","description":"","frontmatter":{},"headers":[],"relativePath":"en/plugin/vtt-thumbnail.md","filePath":"en/plugin/vtt-thumbnail.md","lastUpdated":1789470404000}'),l={name:"en/plugin/vtt-thumbnail.md"};function p(r,s,h,o,d,c){return i(),n("div",null,s[0]||(s[0]=[a(`

VTT Thumbnail ​

中文

Load a WebVTT thumbnail index and show the selected sprite region when hovering over the progress bar. Generate the index and images beforehand; this plugin does not scan the video or require another SDK.

This page describes the current refactor branch. Parser and lifecycle fixes and the precise /runtime types are not published yet. An unpinned npm or CDN installation is not evidence of this branch's behavior.

Installation ​

sh
yarn add artplayer artplayer-plugin-vtt-thumbnail
js
import Artplayer from 'artplayer';
 import artplayerPluginVttThumbnail from 'artplayer-plugin-vtt-thumbnail';

For script loading, load ArtPlayer first, followed by dist/artplayer-plugin-vtt-thumbnail.js. The global is artplayerPluginVttThumbnail. Pin dependency versions and make the VTT and images accessible. Cross-origin VTT requests require appropriate server CORS headers.

Complete example ​

This is the exact code from the online thumbnail example. The demo site supplies the media and .artplayer-app container; replace them in your application.

`,10),t("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-vtt-thumbnail/index.js"},null,-1),a(`
js
// npm i artplayer-plugin-vtt-thumbnail
 // import artplayerPluginVttThumbnail from 'artplayer-plugin-vtt-thumbnail';
 
diff --git a/docs/document/assets/en_plugin_vtt-thumbnail.md.D4KIZyUV.lean.js b/docs/document/assets/en_plugin_vtt-thumbnail.md.D4KIZyUV.lean.js
new file mode 100644
index 000000000..e6a8ea892
--- /dev/null
+++ b/docs/document/assets/en_plugin_vtt-thumbnail.md.D4KIZyUV.lean.js
@@ -0,0 +1 @@
+import{_ as e,o as i,c as n,ak as a,j as t}from"./chunks/framework.xxfEszSJ.js";const u=JSON.parse('{"title":"VTT Thumbnail","description":"","frontmatter":{},"headers":[],"relativePath":"en/plugin/vtt-thumbnail.md","filePath":"en/plugin/vtt-thumbnail.md","lastUpdated":1789470404000}'),l={name:"en/plugin/vtt-thumbnail.md"};function p(r,s,h,o,d,c){return i(),n("div",null,s[0]||(s[0]=[a("",10),t("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-vtt-thumbnail/index.js"},null,-1),a("",24)]))}const m=e(l,[["render",p]]);export{u as __pageData,m as default};
diff --git a/docs/document/assets/plugin_vtt-thumbnail.md.CqZZ5Lk3.lean.js b/docs/document/assets/plugin_vtt-thumbnail.md.CqZZ5Lk3.lean.js
deleted file mode 100644
index 760ec301f..000000000
--- a/docs/document/assets/plugin_vtt-thumbnail.md.CqZZ5Lk3.lean.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as i,o as n,c as e,ak as a,j as l}from"./chunks/framework.xxfEszSJ.js";const b=JSON.parse('{"title":"VTT 缩略图","description":"","frontmatter":{},"headers":[],"relativePath":"plugin/vtt-thumbnail.md","filePath":"plugin/vtt-thumbnail.md","lastUpdated":null}'),p={name:"plugin/vtt-thumbnail.md"};function t(r,s,h,k,d,c){return n(),e("div",null,s[0]||(s[0]=[a("",10),l("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-vtt-thumbnail/index.js"},null,-1),a("",24)]))}const E=i(p,[["render",t]]);export{b as __pageData,E as default};
diff --git a/docs/document/assets/plugin_vtt-thumbnail.md.CqZZ5Lk3.js b/docs/document/assets/plugin_vtt-thumbnail.md.DCY21cNd.js
similarity index 88%
rename from docs/document/assets/plugin_vtt-thumbnail.md.CqZZ5Lk3.js
rename to docs/document/assets/plugin_vtt-thumbnail.md.DCY21cNd.js
index cb82e11b1..9c58408ec 100644
--- a/docs/document/assets/plugin_vtt-thumbnail.md.CqZZ5Lk3.js
+++ b/docs/document/assets/plugin_vtt-thumbnail.md.DCY21cNd.js
@@ -1,4 +1,4 @@
-import{_ as i,o as n,c as e,ak as a,j as l}from"./chunks/framework.xxfEszSJ.js";const b=JSON.parse('{"title":"VTT 缩略图","description":"","frontmatter":{},"headers":[],"relativePath":"plugin/vtt-thumbnail.md","filePath":"plugin/vtt-thumbnail.md","lastUpdated":null}'),p={name:"plugin/vtt-thumbnail.md"};function t(r,s,h,k,d,c){return n(),e("div",null,s[0]||(s[0]=[a(`

VTT 缩略图 ​

English

读取一份 WebVTT 缩略图索引,在进度条悬停时显示对应的精灵图区域。图片和索引需要提前生成;插件不扫描视频,也不需要额外 SDK。

本页描述当前重构分支。解析和生命周期修复、/runtime 精确类型尚未发布;未固定版本的 npm/CDN 安装不能当作本分支代码。

安装 ​

sh
yarn add artplayer artplayer-plugin-vtt-thumbnail
js
import Artplayer from 'artplayer';
+import{_ as i,o as n,c as e,ak as a,j as l}from"./chunks/framework.xxfEszSJ.js";const b=JSON.parse('{"title":"VTT 缩略图","description":"","frontmatter":{},"headers":[],"relativePath":"plugin/vtt-thumbnail.md","filePath":"plugin/vtt-thumbnail.md","lastUpdated":1789470404000}'),p={name:"plugin/vtt-thumbnail.md"};function t(r,s,h,k,d,c){return n(),e("div",null,s[0]||(s[0]=[a(`

VTT 缩略图 ​

English

读取一份 WebVTT 缩略图索引,在进度条悬停时显示对应的精灵图区域。图片和索引需要提前生成;插件不扫描视频,也不需要额外 SDK。

本页描述当前重构分支。解析和生命周期修复、/runtime 精确类型尚未发布;未固定版本的 npm/CDN 安装不能当作本分支代码。

安装 ​

sh
yarn add artplayer artplayer-plugin-vtt-thumbnail
js
import Artplayer from 'artplayer';
 import artplayerPluginVttThumbnail from 'artplayer-plugin-vtt-thumbnail';

通过 script 使用时先加载 ArtPlayer,再加载插件的 dist/artplayer-plugin-vtt-thumbnail.js。全局名称为 artplayerPluginVttThumbnail。固定依赖版本,并确保页面能读取 VTT、加载图片;跨域 VTT 请求需要服务器允许 CORS。

完整示例 ​

下面与在线缩略图示例使用同一份代码。站点提供媒体和 .artplayer-app 容器,自己的应用需要替换对应地址。

`,10),l("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-vtt-thumbnail/index.js"},null,-1),a(`
js
// npm i artplayer-plugin-vtt-thumbnail
 // import artplayerPluginVttThumbnail from 'artplayer-plugin-vtt-thumbnail';
 
diff --git a/docs/document/assets/plugin_vtt-thumbnail.md.DCY21cNd.lean.js b/docs/document/assets/plugin_vtt-thumbnail.md.DCY21cNd.lean.js
new file mode 100644
index 000000000..46186d8b8
--- /dev/null
+++ b/docs/document/assets/plugin_vtt-thumbnail.md.DCY21cNd.lean.js
@@ -0,0 +1 @@
+import{_ as i,o as n,c as e,ak as a,j as l}from"./chunks/framework.xxfEszSJ.js";const b=JSON.parse('{"title":"VTT 缩略图","description":"","frontmatter":{},"headers":[],"relativePath":"plugin/vtt-thumbnail.md","filePath":"plugin/vtt-thumbnail.md","lastUpdated":1789470404000}'),p={name:"plugin/vtt-thumbnail.md"};function t(r,s,h,k,d,c){return n(),e("div",null,s[0]||(s[0]=[a("",10),l("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-vtt-thumbnail/index.js"},null,-1),a("",24)]))}const E=i(p,[["render",t]]);export{b as __pageData,E as default};
diff --git a/docs/document/component/contextmenu.html b/docs/document/component/contextmenu.html
index a38a67b3c..ebc919e18 100644
--- a/docs/document/component/contextmenu.html
+++ b/docs/document/component/contextmenu.html
@@ -106,7 +106,7 @@
         })
     }, 3000);
 });
- + \ No newline at end of file diff --git a/docs/document/component/controls.html b/docs/document/component/controls.html index 890c76f14..95d9c269b 100644 --- a/docs/document/component/controls.html +++ b/docs/document/component/controls.html @@ -153,7 +153,7 @@ }); }, 3000); }); - + \ No newline at end of file diff --git a/docs/document/component/layers.html b/docs/document/component/layers.html index 441a413f2..6d157ccc5 100644 --- a/docs/document/component/layers.html +++ b/docs/document/component/layers.html @@ -125,7 +125,7 @@ }); }, 3000); }); - + \ No newline at end of file diff --git a/docs/document/component/setting.html b/docs/document/component/setting.html index 4e174dd1c..6dfa53447 100644 --- a/docs/document/component/setting.html +++ b/docs/document/component/setting.html @@ -245,7 +245,7 @@ }); }, 3000); }); - + \ No newline at end of file diff --git a/docs/document/en/advanced/built-in.html b/docs/document/en/advanced/built-in.html index e42b1850b..0b8385d97 100644 --- a/docs/document/en/advanced/built-in.html +++ b/docs/document/en/advanced/built-in.html @@ -217,7 +217,7 @@ art.on('ready', () => { art.plugins.add(myPlugin); }); - + \ No newline at end of file diff --git a/docs/document/en/advanced/class.html b/docs/document/en/advanced/class.html index d3d87d07c..84493b773 100644 --- a/docs/document/en/advanced/class.html +++ b/docs/document/en/advanced/class.html @@ -31,7 +31,7 @@ }); console.info([...Artplayer.instances]);

version ​

Returns the version information of the player.

▶ Run Code
js
console.info(Artplayer.version);

env ​

Returns the environment variables of the player.

▶ Run Code
js
console.info(Artplayer.env);

build ​

Returns the build timestamp of the player.

▶ Run Code
js
console.info(Artplayer.build);

config ​

Returns the default configuration for videos.

▶ Run Code
js
console.info(Artplayer.config);

utils ​

Returns the collection of utility functions for the player.

▶ Run Code
js
console.info(Artplayer.utils);

For all utility functions, please refer to the following address:

artplayer/types/utils.d.ts

scheme ​

Returns the validation schema for player options.

▶ Run Code
js
console.info(Artplayer.scheme);

Emitter ​

Returns the constructor of the event emitter.

▶ Run Code
js
console.info(Artplayer.Emitter);

validator ​

Returns the validation function for options.

▶ Run Code
js
console.info(Artplayer.validator);

kindOf ​

Returns the type detection utility function.

▶ Run Code
js
console.info(Artplayer.kindOf);

html ​

Returns the html string required by the player.

▶ Run Code
js
console.info(Artplayer.html);

option ​

Returns the default options of the player.

▶ Run Code
js
console.info(Artplayer.option);
- + \ No newline at end of file diff --git a/docs/document/en/advanced/event.html b/docs/document/en/advanced/event.html index 436c0e3ac..0a96709f4 100644 --- a/docs/document/en/advanced/event.html +++ b/docs/document/en/advanced/event.html @@ -385,7 +385,7 @@ art.on('keydown', (event) => { console.log(event.code); });

video:canplay ​

The browser can start playing the media, but estimates there is not enough data to play through to the end without stopping for further buffering.

video:canplaythrough ​

The browser estimates it can play the media through to the end without stopping for buffering.

video:complete ​

The OfflineAudioContext rendering is complete.

video:durationchange ​

Triggered when the value of the duration property changes.

video:emptied ​

The media has become empty; for example, this event is sent when the media has already been loaded (or partially loaded), and the load() method is called to reload it.

video:ended ​

Playback has stopped because the media has reached its end.

video:error ​

An error occurred while fetching the media data, or the resource type is not a supported media format.

video:loadeddata ​

The first frame of the media has finished loading.

video:loadedmetadata ​

Metadata has been loaded.

video:pause ​

Playback has been paused.

video:play ​

Playback has begun.

video:playing ​

Playback is ready to start after having been paused or delayed due to lack of data.

video:progress ​

Fired periodically as the browser loads the resource.

video:ratechange ​

The playback rate has changed.

video:seeked ​

A seek operation has completed.

video:seeking ​

A seek operation has begun.

video:stalled ​

The user agent is trying to fetch media data, but data is unexpectedly not forthcoming.

video:suspend ​

Media data loading has been suspended.

video:timeupdate ​

The time indicated by the currentTime property has changed.

video:volumechange ​

The volume has changed.

video:waiting ​

Playback has stopped because of a temporary lack of data.

- + \ No newline at end of file diff --git a/docs/document/en/advanced/global.html b/docs/document/en/advanced/global.html index 3307de83a..211b01293 100644 --- a/docs/document/en/advanced/global.html +++ b/docs/document/en/advanced/global.html @@ -248,7 +248,7 @@ // Only destroy the UI, do not actively clear the src art.destroy(); - + \ No newline at end of file diff --git a/docs/document/en/advanced/plugin.html b/docs/document/en/advanced/plugin.html index 0c72e2a50..494b3a317 100644 --- a/docs/document/en/advanced/plugin.html +++ b/docs/document/en/advanced/plugin.html @@ -122,7 +122,7 @@ }) ], }); - + \ No newline at end of file diff --git a/docs/document/en/advanced/property.html b/docs/document/en/advanced/property.html index e56b5742a..c7e734f7b 100644 --- a/docs/document/en/advanced/property.html +++ b/docs/document/en/advanced/property.html @@ -457,7 +457,7 @@ art.on('ready', () => { art.subtitleOffset = 1; }); - + \ No newline at end of file diff --git a/docs/document/en/component/contextmenu.html b/docs/document/en/component/contextmenu.html index 5e9fd38bb..1af5d782a 100644 --- a/docs/document/en/component/contextmenu.html +++ b/docs/document/en/component/contextmenu.html @@ -106,7 +106,7 @@ }) }, 3000); }); - + \ No newline at end of file diff --git a/docs/document/en/component/controls.html b/docs/document/en/component/controls.html index 9e9e6682c..e10a9ab13 100644 --- a/docs/document/en/component/controls.html +++ b/docs/document/en/component/controls.html @@ -153,7 +153,7 @@ }); }, 3000); }); - + \ No newline at end of file diff --git a/docs/document/en/component/layers.html b/docs/document/en/component/layers.html index 38cd0cec4..cd61becff 100644 --- a/docs/document/en/component/layers.html +++ b/docs/document/en/component/layers.html @@ -125,7 +125,7 @@ }); }, 3000); }); - + \ No newline at end of file diff --git a/docs/document/en/component/setting.html b/docs/document/en/component/setting.html index ddc5d1618..a0f2e2204 100644 --- a/docs/document/en/component/setting.html +++ b/docs/document/en/component/setting.html @@ -245,7 +245,7 @@ }); }, 3000); }); - + \ No newline at end of file diff --git a/docs/document/en/index.html b/docs/document/en/index.html index 3841ff1e5..b33259a1e 100644 --- a/docs/document/en/index.html +++ b/docs/document/en/index.html @@ -237,7 +237,7 @@ </script> </body> </html>

Note

You need to modify it before importing the Artplayer dependency for it to take effect.

- + \ No newline at end of file diff --git a/docs/document/en/plugin/audio-track.html b/docs/document/en/plugin/audio-track.html index 99f5a6001..2bb3e3e4c 100644 --- a/docs/document/en/plugin/audio-track.html +++ b/docs/document/en/plugin/audio-track.html @@ -52,7 +52,7 @@ return track; }], });

Named types include Option, UpdateOption, the old Result, RuntimeResult and RuntimeFactory. The online editor's default global retains legacy inference too. To select precise update typing, explicitly use artplayerPluginAudioTrack as artplayerPluginAudioTrack.RuntimeFactory. This does not create a second plugin implementation.

Actual desktop tests cover audio/video playback, pause, seeking, updates and destruction. They do not establish support for every mobile device, proxy player, audio format or long-running synchronization combination. Check browser decoding capabilities and the project's validation records for the applicable scope.

- + \ No newline at end of file diff --git a/docs/document/en/plugin/danmuku.html b/docs/document/en/plugin/danmuku.html index b8a99d010..3dbc547db 100644 --- a/docs/document/en/plugin/danmuku.html +++ b/docs/document/en/plugin/danmuku.html @@ -125,7 +125,7 @@ const onError = (...[error]: EventMap['artplayerPluginDanmuku:error']) => console.error(error); const art = new Artplayer({ container: '#player', url: '/video.mp4', plugins: [danmuku(option)] }); art.on('artplayerPluginDanmuku:error', onError);

The explicit EventMap describes payloads; it does not augment the core's historical event declarations automatically. The factory also exposes the existing icons object for customization. Package README.md and ARCHITECTURE.md describe module ownership, maintenance commands and remaining device/combination validation.

- + \ No newline at end of file diff --git a/docs/document/en/plugin/dash-control.html b/docs/document/en/plugin/dash-control.html index 2714dd363..b3d5c1ab6 100644 --- a/docs/document/en/plugin/dash-control.html +++ b/docs/document/en/plugin/dash-control.html @@ -104,7 +104,7 @@ getName: track => track.lang?.toUpperCase() || String(track.id ?? 'Audio'), }, });

Option, Config, QualityLevel, AudioTrack and Result are exported from the root. Root and legacy paths remain available. If using actual SDK declarations, dash.js 4.5.2 exposes BitrateInfo for quality; 5.2.1 uses Representation. Its declarations have different compiler/module-resolution requirements, so test your actual SDK and TypeScript combination. Describe the externally attached art.dash in your application's integration types.

Validation scope ​

The refactor tests fixed dash.js 4.5.2 and 5.2.1 with local adaptive media and old/new core combinations. Those are tested points, not a new blanket support range. The plugin includes a targeted 4.5.2 paused-seek recovery for stale empty-buffer metrics while preserving the caller's SDK settings and media time. Windows Playwright WebKit lacks the MSE path used by these tests; it is not Safari/device playback acceptance. Test your own MPDs, DRM and target devices before adopting the unpublished refactor.

- + \ No newline at end of file diff --git a/docs/document/en/plugin/hls-control.html b/docs/document/en/plugin/hls-control.html index e3d29d6a2..83492e362 100644 --- a/docs/document/en/plugin/hls-control.html +++ b/docs/document/en/plugin/hls-control.html @@ -108,7 +108,7 @@ getName: track => track.name || track.lang || 'Audio', }, });

Public Option, Config, QualityLevel, AudioTrack and Result types are exported from the root entry. The root and legacy import paths remain available. The types do not pretend every ArtPlayer instance already owns an Hls.js engine; describe art.hls in your application's integration types.

Validation scope ​

The refactor tests Hls.js 1.5.17 and 1.7.2 with local media and real workers; these are tested points, not a newly declared supported range. Firefox grouped-stream crashes and a separate switching stall remain under investigation. Windows Playwright WebKit lacks the MSE path used in those tests; it does not establish Safari/iOS native-HLS acceptance. Verify your actual streams and target devices before adopting the unpublished refactor.

- + \ No newline at end of file diff --git a/docs/document/en/plugin/vtt-thumbnail.html b/docs/document/en/plugin/vtt-thumbnail.html index a91071139..ab6d63691 100644 --- a/docs/document/en/plugin/vtt-thumbnail.html +++ b/docs/document/en/plugin/vtt-thumbnail.html @@ -13,7 +13,7 @@ - + @@ -58,8 +58,8 @@ console.error('Unable to load thumbnails', error); } } -void installThumbnails();

Request and format errors reject registration; format errors include a line number. Registration completion establishes that the VTT was parsed and the control created, not that every image has decoded. Images load when the browser displays them; a later image failure does not reject an already settled registration Promise.

There is no update, reload or independent destroy method. Switching the main video does not refetch the VTT. For a different video and thumbnail set, you can destroy and recreate the player. Removing a control is not a complete uninstall; repeated installation is not an update API.

Destroying the player cancels outstanding requests where AbortController is available, settles canceled registration, removes owned listeners and timers, and removes the control only if this installation still owns it. Cancellation still returns the name object, so the name alone does not prove an image is available. Late requests cannot remount the interface.

TypeScript compatibility ​

The root and /legacy entrances preserve the latest published 1.1.0 synchronous return declaration and replacement-function shape, although registration is asynchronous at runtime. The /runtime entrance above uses the same JavaScript implementation and accurately declares the Promise and runtime .default self-alias. It also exposes Option, Result, Factory and RuntimeFactory types.

The older 1.0.x export = shape cannot preserve the same type extraction as the 1.1.0 default export. TypeScript consumers relying on those earlier CommonJS declarations should migrate to /runtime. NodeNext ESM consumers should also prefer this entrance to avoid the historical namespace shape retained by the root. Legal older JavaScript calls and distribution file entrances remain available.

Browser checks cover cropping and cleanup with published and candidate cores. Complete mobile, plugin combination and release-artifact acceptance remains tracked separately.

- +void installThumbnails();

Request and format errors reject registration; format errors include a line number. Registration completion establishes that the VTT was parsed and the control created, not that every image has decoded. Images load when the browser displays them; a later image failure does not reject an already settled registration Promise.

There is no update, reload or independent destroy method. Switching the main video does not refetch the VTT. For a different video and thumbnail set, you can destroy and recreate the player. Removing a control is not a complete uninstall; repeated installation is not an update API.

Destroying the player cancels outstanding requests where AbortController is available, settles canceled registration, removes owned listeners and timers, and removes the control only if this installation still owns it. Cancellation still returns the name object, so the name alone does not prove an image is available. Late requests cannot remount the interface.

TypeScript compatibility ​

The root and /legacy entrances preserve the latest published 1.1.0 synchronous return declaration and replacement-function shape, although registration is asynchronous at runtime. The /runtime entrance above uses the same JavaScript implementation and accurately declares the Promise and runtime .default self-alias. It also exposes Option, Result, Factory and RuntimeFactory types.

The older 1.0.x export = shape cannot preserve the same type extraction as the 1.1.0 default export. TypeScript consumers relying on those earlier CommonJS declarations should migrate to /runtime. NodeNext ESM consumers should also prefer this entrance to avoid the historical namespace shape retained by the root. Legal older JavaScript calls and distribution file entrances remain available.

Browser checks cover cropping and cleanup with published and candidate cores. Complete mobile, plugin combination and release-artifact acceptance remains tracked separately.

+ \ No newline at end of file diff --git a/docs/document/en/start/i18n.html b/docs/document/en/start/i18n.html index d0c139577..232c8327d 100644 --- a/docs/document/en/start/i18n.html +++ b/docs/document/en/start/i18n.html @@ -75,7 +75,7 @@ }, }, }); - + \ No newline at end of file diff --git a/docs/document/en/start/option.html b/docs/document/en/start/option.html index 0c91c2d25..1aaa1dc12 100644 --- a/docs/document/en/start/option.html +++ b/docs/document/en/start/option.html @@ -415,7 +415,7 @@ url: '/assets/sample/video.mp4', proxy: () => document.createElement('video') }); - + \ No newline at end of file diff --git a/docs/document/hashmap.json b/docs/document/hashmap.json index df4b9893b..7ed4b45c2 100644 --- a/docs/document/hashmap.json +++ b/docs/document/hashmap.json @@ -1 +1 @@ -{"advanced_built-in.md":"DbXkhR8l","advanced_class.md":"BE9Wp7q6","advanced_event.md":"DoIgqIU9","advanced_global.md":"Db4VcykV","advanced_plugin.md":"CVp3Oe2x","advanced_property.md":"C_nOKniE","component_contextmenu.md":"lsIURdc3","component_controls.md":"CKAl0l5Z","component_layers.md":"D34Y4OkH","component_setting.md":"BwCpY3NU","en_advanced_built-in.md":"yQHjIPvf","en_advanced_class.md":"DklNHOdd","en_advanced_event.md":"opkwpdYa","en_advanced_global.md":"C8Y_RPho","en_advanced_plugin.md":"C22jhoxt","en_advanced_property.md":"BBsrm5xX","en_component_contextmenu.md":"BZMIBA5Z","en_component_controls.md":"CzJX3V-W","en_component_layers.md":"CMe9ljjt","en_component_setting.md":"BEB18u4V","en_index.md":"BBeGRjus","en_plugin_audio-track.md":"Xma2a2v1","en_plugin_danmuku.md":"BA2ZgDal","en_plugin_dash-control.md":"CbDDZFkI","en_plugin_hls-control.md":"D-g42K7T","en_plugin_vtt-thumbnail.md":"CI6T1LST","en_start_i18n.md":"DxgNQ6qb","en_start_option.md":"CTPFIwzU","index.md":"CvYUO2aO","plugin_audio-track.md":"KDB-Z6pp","plugin_danmuku.md":"NvAEp3Xn","plugin_dash-control.md":"zyZmCxY4","plugin_hls-control.md":"IVFa-2v4","plugin_vtt-thumbnail.md":"CqZZ5Lk3","start_i18n.md":"D_Yw7TSy","start_option.md":"DRwrMHeQ"} +{"advanced_built-in.md":"DbXkhR8l","advanced_class.md":"BE9Wp7q6","advanced_event.md":"DoIgqIU9","advanced_global.md":"Db4VcykV","advanced_plugin.md":"CVp3Oe2x","advanced_property.md":"C_nOKniE","component_contextmenu.md":"lsIURdc3","component_controls.md":"CKAl0l5Z","component_layers.md":"D34Y4OkH","component_setting.md":"BwCpY3NU","en_advanced_built-in.md":"yQHjIPvf","en_advanced_class.md":"DklNHOdd","en_advanced_event.md":"opkwpdYa","en_advanced_global.md":"C8Y_RPho","en_advanced_plugin.md":"C22jhoxt","en_advanced_property.md":"BBsrm5xX","en_component_contextmenu.md":"BZMIBA5Z","en_component_controls.md":"CzJX3V-W","en_component_layers.md":"CMe9ljjt","en_component_setting.md":"BEB18u4V","en_index.md":"BBeGRjus","en_plugin_audio-track.md":"Xma2a2v1","en_plugin_danmuku.md":"BA2ZgDal","en_plugin_dash-control.md":"CbDDZFkI","en_plugin_hls-control.md":"D-g42K7T","en_plugin_vtt-thumbnail.md":"D4KIZyUV","en_start_i18n.md":"DxgNQ6qb","en_start_option.md":"CTPFIwzU","index.md":"CvYUO2aO","plugin_audio-track.md":"KDB-Z6pp","plugin_danmuku.md":"NvAEp3Xn","plugin_dash-control.md":"zyZmCxY4","plugin_hls-control.md":"IVFa-2v4","plugin_vtt-thumbnail.md":"DCY21cNd","start_i18n.md":"D_Yw7TSy","start_option.md":"DRwrMHeQ"} diff --git a/docs/document/index.html b/docs/document/index.html index 894aeb9e0..6455280e8 100644 --- a/docs/document/index.html +++ b/docs/document/index.html @@ -237,7 +237,7 @@ </script> </body> </html>

提示

你需要在引入 Artplayer 依赖前来修改它才会生效

- + \ No newline at end of file diff --git a/docs/document/plugin/audio-track.html b/docs/document/plugin/audio-track.html index a570e53db..788b04c22 100644 --- a/docs/document/plugin/audio-track.html +++ b/docs/document/plugin/audio-track.html @@ -52,7 +52,7 @@ return track; }], });

命名类型包括 Option、UpdateOption、旧 Result、RuntimeResult 与 RuntimeFactory。在线编辑器的全局默认类型也保留旧推导;选择精确更新类型时,可显式使用 artplayerPluginAudioTrack as artplayerPluginAudioTrack.RuntimeFactory。这不会创建第二份插件实现。

真实桌面测试覆盖音频/视频播放、暂停、seek、更新和销毁;它们不证明所有移动设备、代理播放器、音频格式或长时间同步组合都通过。完整支持范围仍需结合对应浏览器的解码能力与项目验收记录。

- + \ No newline at end of file diff --git a/docs/document/plugin/danmuku.html b/docs/document/plugin/danmuku.html index e8f55fa10..a7eb8c831 100644 --- a/docs/document/plugin/danmuku.html +++ b/docs/document/plugin/danmuku.html @@ -393,7 +393,7 @@ const onError = (...[error]: EventMap['artplayerPluginDanmuku:error']) => console.error(error); const art = new Artplayer({ container: '#player', url: '/video.mp4', plugins: [danmuku(option)] }); art.on('artplayerPluginDanmuku:error', onError);

EventMap 显式描述事件参数,不会自动扩展核心历史事件声明。工厂仍暴露 icons 对象供自定义图标。 包内 README.md 和 ARCHITECTURE.md 维护模块职责、验证命令及尚未完成的设备和组合验收。

- + \ No newline at end of file diff --git a/docs/document/plugin/dash-control.html b/docs/document/plugin/dash-control.html index 7e8fff90c..be2dc80cd 100644 --- a/docs/document/plugin/dash-control.html +++ b/docs/document/plugin/dash-control.html @@ -104,7 +104,7 @@ getName: track => track.lang?.toUpperCase() || String(track.id ?? 'Audio'), }, });

根入口导出 Option、Config、QualityLevel、AudioTrack 和 Result,原根入口与 legacy 路径继续保留。使用实际 SDK 声明时,dash.js 4.5.2 的画质类型为 BitrateInfo,5.2.1 使用 Representation;其编译器与模块解析要求不同,应验证实际 SDK/TypeScript 组合。在应用的集成类型中描述外部附加的 art.dash。

验证范围 ​

重构使用固定 dash.js 4.5.2 / 5.2.1、本地自适应媒体和新旧核心组合验证;这两个版本是验证点,不是新定义的完整支持范围。插件对4.5.2暂停拖动后空缓冲指标陈旧的问题有定向恢复,保留调用方 SDK 设置和媒体时间。Windows Playwright WebKit 缺少相关 MSE 路径,不能代表 Safari 或真机播放已验收。采用未发布重构前,应验证自己的 MPD、DRM 和目标设备。

- + \ No newline at end of file diff --git a/docs/document/plugin/hls-control.html b/docs/document/plugin/hls-control.html index b3b0030d5..71cb95502 100644 --- a/docs/document/plugin/hls-control.html +++ b/docs/document/plugin/hls-control.html @@ -108,7 +108,7 @@ getName: track => track.name || track.lang || 'Audio', }, });

根入口导出 Option、Config、QualityLevel、AudioTrack 和 Result 类型,原根入口及 legacy 路径继续保留。声明不会假定每个 ArtPlayer 实例都有 Hls.js;请在应用的集成类型中描述 art.hls。

验证范围 ​

重构使用本地媒体和真实 worker 验证 Hls.js 1.5.17 / 1.7.2;这两个版本是验证点,不是新定义的支持范围。Firefox 的分组播放崩溃和另一项切组停滞仍在排查。Windows Playwright WebKit 缺少测试所需的 MSE 路径,不能代表 Safari/iOS 原生 HLS 已验收。采用尚未发布的重构前,应验证实际媒体与目标设备。

- + \ No newline at end of file diff --git a/docs/document/plugin/vtt-thumbnail.html b/docs/document/plugin/vtt-thumbnail.html index 5ad0ffcbe..f544c14b2 100644 --- a/docs/document/plugin/vtt-thumbnail.html +++ b/docs/document/plugin/vtt-thumbnail.html @@ -13,7 +13,7 @@ - + @@ -58,8 +58,8 @@ console.error('Unable to load thumbnails', error); } } -void installThumbnails();

请求失败或格式错误会拒绝注册,格式错误包含行号。注册完成只说明 VTT 已加载解析并创建控件,不表示所有图片已解码;图片在浏览器显示时加载,图片请求失败不会变成已经完成的注册 Promise 的拒绝。

插件没有 update、reload 或独立 destroy 方法。切换主视频不会自动重新请求 VTT;切换到另一套视频和缩略图时,可销毁并重建播放器。不要把 controls.remove() 当作完整卸载,也不要用重复安装模拟一个没有提供的更新接口。

销毁播放器会取消待处理请求(环境支持 AbortController 时),结算取消的注册、移除自己的监听器和计时器,并移除仍由本次安装持有的控件。取消结算仍返回名称对象,因此名称本身不是图片可用的证明。迟到请求不会重新挂载界面。

TypeScript 兼容 ​

根入口和 /legacy 保留最新已发布 1.1.0 的旧同步返回类型与函数替换形状,实际注册始终是异步的。上面的 /runtime 使用相同 JavaScript 实现,准确声明 Promise 和运行时 .default 自引用别名,并提供 Option、Result、Factory、RuntimeFactory 类型。

1.0.x 的旧 export = 与 1.1.0 的默认导出声明无法同时保持相同类型提取。依赖较早 CommonJS 声明的 TypeScript 代码应迁移到 /runtime;NodeNext ESM 消费者也优先使用此入口,避免根入口保留的历史命名空间形状。合法旧 JavaScript 调用和历史文件入口继续保留。

浏览器验证覆盖新旧核心的进度条裁剪和清理;完整移动端、插件组合与发布产物验收仍以项目记录为准。

- +void installThumbnails();

请求失败或格式错误会拒绝注册,格式错误包含行号。注册完成只说明 VTT 已加载解析并创建控件,不表示所有图片已解码;图片在浏览器显示时加载,图片请求失败不会变成已经完成的注册 Promise 的拒绝。

插件没有 update、reload 或独立 destroy 方法。切换主视频不会自动重新请求 VTT;切换到另一套视频和缩略图时,可销毁并重建播放器。不要把 controls.remove() 当作完整卸载,也不要用重复安装模拟一个没有提供的更新接口。

销毁播放器会取消待处理请求(环境支持 AbortController 时),结算取消的注册、移除自己的监听器和计时器,并移除仍由本次安装持有的控件。取消结算仍返回名称对象,因此名称本身不是图片可用的证明。迟到请求不会重新挂载界面。

TypeScript 兼容 ​

根入口和 /legacy 保留最新已发布 1.1.0 的旧同步返回类型与函数替换形状,实际注册始终是异步的。上面的 /runtime 使用相同 JavaScript 实现,准确声明 Promise 和运行时 .default 自引用别名,并提供 Option、Result、Factory、RuntimeFactory 类型。

1.0.x 的旧 export = 与 1.1.0 的默认导出声明无法同时保持相同类型提取。依赖较早 CommonJS 声明的 TypeScript 代码应迁移到 /runtime;NodeNext ESM 消费者也优先使用此入口,避免根入口保留的历史命名空间形状。合法旧 JavaScript 调用和历史文件入口继续保留。

浏览器验证覆盖新旧核心的进度条裁剪和清理;完整移动端、插件组合与发布产物验收仍以项目记录为准。

+ \ No newline at end of file diff --git a/docs/document/start/i18n.html b/docs/document/start/i18n.html index ab58a009f..a67fa4a54 100644 --- a/docs/document/start/i18n.html +++ b/docs/document/start/i18n.html @@ -75,7 +75,7 @@ }, }, }); - + \ No newline at end of file diff --git a/docs/document/start/option.html b/docs/document/start/option.html index 7fd1fad23..dcc4830b2 100644 --- a/docs/document/start/option.html +++ b/docs/document/start/option.html @@ -415,7 +415,7 @@ url: '/assets/sample/video.mp4', proxy: () => document.createElement('video') }); - + \ No newline at end of file diff --git a/docs/llms.manifest.json b/docs/llms.manifest.json index 3899117e4..4729bff18 100644 --- a/docs/llms.manifest.json +++ b/docs/llms.manifest.json @@ -152,7 +152,7 @@ }, { "file": "docs/assets/ts/artplayer-tool-thumbnail.d.ts", - "sha256Lf": "9b72d10a1fe964d54fcf4774770074058ea739b4f734b52b8f4adebb37fc83e6" + "sha256Lf": "f2845ec0a890d001829dbca089ccc450f8e77817e497c5738f964c2920772f3f" }, { "file": "docs/assets/ts/artplayer.d.ts", @@ -287,5 +287,5 @@ "sha256Lf": "967db6e5026a2fd3cc24d8a04e5c78859f543d0c0f6d4f9599c103e4e93c9b29" } ], - "outputSha256Lf": "95acc15ff00744f6a03d8de4170dae370c06952a4c2d0463b0ab3408176bea27" + "outputSha256Lf": "876007aa4a3a83186a2615b12ca2262c921e568ae0f4a67847da9b95a4572b26" } diff --git a/docs/llms.txt b/docs/llms.txt index 8bba3aa29..e413452cd 100644 --- a/docs/llms.txt +++ b/docs/llms.txt @@ -8115,7 +8115,7 @@ export as namespace ArtplayerToolIframe; /** Extract PNG thumbnail sheets from a locally selected video file. */ declare class ArtplayerToolThumbnail { constructor(option?: ArtplayerToolThumbnail.Option) - static readonly DEFAULTS: ArtplayerToolThumbnail.SheetOptions + static readonly DEFAULTS: ArtplayerToolThumbnail.DefaultOptions static ondragover(event: DragEvent): void static creatVideo(): HTMLVideoElement processing: boolean @@ -8152,13 +8152,22 @@ declare namespace ArtplayerToolThumbnail { begin: number end: number } + type Compatibility = 'published-3.5' | 'workspace-4.4' + interface DefaultOptions extends SheetOptions { + delay: number + } /** fileInput must be a file input or an Element wrapper when constructing. */ interface Option extends Partial { fileInput?: Element + compatibility?: Compatibility + /** Published mode delay in milliseconds, clamped to 10-1000. */ + delay?: number [name: string]: unknown } interface ResolvedOption extends SheetOptions { fileInput: HTMLInputElement + compatibility?: Compatibility + delay?: number [name: string]: unknown } interface ScreenshotPoint { diff --git a/example/react.js/README.md b/example/react.js/README.md index e82de06d3..bba5bafd2 100644 --- a/example/react.js/README.md +++ b/example/react.js/README.md @@ -5,6 +5,7 @@ Run from the repository root with Node from .node-version and Yarn Classic yarn.lock in version control. ```sh +yarn build artplayer artplayer-plugin-danmuku artplayer-plugin-document-pip yarn dev:react yarn typecheck:react yarn lint:react @@ -12,6 +13,12 @@ yarn build:react yarn test:react-consumer ``` +The example's three ArtPlayer dependencies use local `file:../../packages/...` +references while the next major versions are unpublished. Run the commands above +from the repository root; do not create a separate example lockfile. External +applications should install their chosen published versions. Historical consumer +fixtures remain separate from this current-workspace example. + build:react writes to refactor/.cache/react-example-dist. It uses built workspace package entrypoints. Rebuild a changed library with `yarn build ` before testing its integration. The consumer test packs the current core, Danmuku and Document PiP distributions, installs them outside the workspace, diff --git a/example/react.js/package.json b/example/react.js/package.json index bf4eb3c3c..3758041b1 100644 --- a/example/react.js/package.json +++ b/example/react.js/package.json @@ -12,9 +12,9 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "artplayer": "^5.3.0-beta.4", - "artplayer-plugin-danmuku": "^5.2.0", - "artplayer-plugin-document-pip": "^1.0.2", + "artplayer": "file:../../packages/artplayer", + "artplayer-plugin-danmuku": "file:../../packages/artplayer-plugin-danmuku", + "artplayer-plugin-document-pip": "file:../../packages/artplayer-plugin-document-pip", "react": "19.1.1", "react-dom": "19.1.1" }, diff --git a/example/vue.js/README.md b/example/vue.js/README.md index ecccd11bd..af53b229a 100644 --- a/example/vue.js/README.md +++ b/example/vue.js/README.md @@ -4,6 +4,7 @@ Run the example from the repository root with Node from .node-version and Yarn Classic 1.22.22. Use yarn install --frozen-lockfile and only the root yarn.lock. ```sh +yarn build artplayer artplayer-plugin-danmuku artplayer-plugin-document-pip yarn dev:vue yarn typecheck:vue yarn lint:vue @@ -11,6 +12,12 @@ yarn build:vue yarn test:vue-consumer ``` +The example's three ArtPlayer dependencies use local `file:../../packages/...` +references while the next major versions are unpublished. Build those packages +first and run the example commands from the repository root. Keep only the root +yarn.lock; external applications should select published versions. The isolated +consumer checks still replace these inputs with actual packed artifacts. + The build output is refactor/.cache/vue-example-dist. Rebuild changed library distributions with yarn build followed by the package name. diff --git a/example/vue.js/package.json b/example/vue.js/package.json index ac018af96..ecc53df39 100644 --- a/example/vue.js/package.json +++ b/example/vue.js/package.json @@ -15,9 +15,9 @@ "lint": "eslint ." }, "dependencies": { - "artplayer": "^5.3.0-beta.4", - "artplayer-plugin-danmuku": "^5.2.0", - "artplayer-plugin-document-pip": "^1.0.2", + "artplayer": "file:../../packages/artplayer", + "artplayer-plugin-danmuku": "file:../../packages/artplayer-plugin-danmuku", + "artplayer-plugin-document-pip": "file:../../packages/artplayer-plugin-document-pip", "vue": "3.5.28" }, "devDependencies": { diff --git a/package.json b/package.json index 8f0bc43bc..a73bea910 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "check:plan": "node refactor/scripts/plan.mjs --check", "test:node": "yarn test:unit && node --test test/toolchain.test.js test/build-docs.test.js test/package-check.test.js test/declarations.test.js test/editor-types.test.js test/coverage.test.js test/performance-report.test.js test/media-gate.test.js test/ci-summary.test.js test/package-runtime.test.js test/library-build.test.js test/site-loading.test.js test/documentation-pipeline.test.js test/site-build.test.js test/site-markdown.test.js test/site-editor.test.js test/plugin-scaffold.test.js test/dev-server.test.js test/pages-artifact.test.js test/site-notices.test.js test/monaco-provenance.test.js test/monaco-unicode.test.js test/site-console.test.js test/vconsole-lifecycle.test.js test/browser-validation.test.js test/rollback-files.test.js test/pages-recovery.test.js test/installed-types.test.js test/ecosystem-types.test.js", "test:baseline": "node --test refactor/scripts/*.test.mjs", - "ci:check": "yarn check:toolchain --strict && yarn check:commits --report && yarn check:impact --report && yarn check:ci && yarn test:contracts && yarn check:contracts --report && yarn check:plan && yarn check:release-ledger && yarn typecheck:release && yarn check:rollback-inventory && yarn lint && yarn typecheck:library && yarn typecheck:scaffold && yarn typecheck:docs-tools && yarn check:docs-smoke && yarn check:editor-types && yarn check:llm && yarn check:vconsole && yarn check:console && yarn check:site-notices && yarn typecheck:site-assets && yarn check:site-assets && yarn check:types && yarn typecheck && yarn typecheck:react && yarn lint:react && yarn typecheck:vue && yarn lint:vue && yarn test", + "ci:check": "yarn check:toolchain --strict && yarn check:commits --report && yarn check:impact --report && yarn check:ci && yarn test:contracts && yarn check:contracts --report && yarn check:plan && yarn check:versions && yarn check:release-ledger && yarn typecheck:release && yarn check:rollback-inventory && yarn lint && yarn typecheck:library && yarn typecheck:scaffold && yarn typecheck:docs-tools && yarn check:docs-smoke && yarn check:editor-types && yarn check:llm && yarn check:vconsole && yarn check:console && yarn check:site-notices && yarn typecheck:site-assets && yarn check:site-assets && yarn check:types && yarn typecheck && yarn typecheck:react && yarn lint:react && yarn typecheck:vue && yarn lint:vue && yarn test", "ci:build": "yarn build:types && yarn build all && yarn build:i18n && yarn build:ts && yarn build:llm && yarn build:vconsole && yarn build:console && yarn build:site-notices && yarn build:test && yarn build:docs && yarn test:imports", "test:imports": "node --test test/esm.test.js test/i18n.test.js test/ssr.test.js test/asr-distribution.test.js", "typecheck": "node scripts/typecheck.mjs", @@ -179,7 +179,8 @@ "release:bundle": "yarn check:toolchain --strict && node scripts/prepare-release.mjs", "typecheck:release": "node node_modules/typescript/bin/tsc -p scripts/tsconfig.release.json --noEmit", "test:release-bundle": "node --test refactor/scripts/release-bundle.test.mjs", - "test:ecosystem-types": "node scripts/consumers/ecosystem.ts" + "test:ecosystem-types": "node scripts/consumers/ecosystem.ts", + "check:versions": "node refactor/scripts/version-plan.mjs --prepared" }, "browserslist": "last 1 Chrome version", "devDependencies": { diff --git a/packages/artplayer-plugin-ads/CHANGELOG.md b/packages/artplayer-plugin-ads/CHANGELOG.md new file mode 100644 index 000000000..a0d05c1f2 --- /dev/null +++ b/packages/artplayer-plugin-ads/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 3.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed ad lifecycle and cleanup with preserved published defaults. +- Approved totalDuration type inference correction; migration explanation remains mandatory. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-plugin-ads/dist/artplayer-plugin-ads.js b/packages/artplayer-plugin-ads/dist/artplayer-plugin-ads.js index 94810bdaf..d96b47734 100644 --- a/packages/artplayer-plugin-ads/dist/artplayer-plugin-ads.js +++ b/packages/artplayer-plugin-ads/dist/artplayer-plugin-ads.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-ads.js v2.1.0 + * artplayer-plugin-ads.js v3.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-ads/dist/artplayer-plugin-ads.legacy.js b/packages/artplayer-plugin-ads/dist/artplayer-plugin-ads.legacy.js index ce8ae6c7a..ad0fb2b3d 100644 --- a/packages/artplayer-plugin-ads/dist/artplayer-plugin-ads.legacy.js +++ b/packages/artplayer-plugin-ads/dist/artplayer-plugin-ads.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-ads.js v2.1.0 + * artplayer-plugin-ads.js v3.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-ads/dist/artplayer-plugin-ads.mjs b/packages/artplayer-plugin-ads/dist/artplayer-plugin-ads.mjs index 7b7e55437..f1a5d6f03 100644 --- a/packages/artplayer-plugin-ads/dist/artplayer-plugin-ads.mjs +++ b/packages/artplayer-plugin-ads/dist/artplayer-plugin-ads.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-ads.js v2.1.0 + * artplayer-plugin-ads.js v3.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-ads/package.json b/packages/artplayer-plugin-ads/package.json index 8820322b0..a8b10c468 100644 --- a/packages/artplayer-plugin-ads/package.json +++ b/packages/artplayer-plugin-ads/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-plugin-ads", - "version": "2.1.0", + "version": "3.0.0", "description": "Ads plugin for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", diff --git a/packages/artplayer-plugin-ambilight/CHANGELOG.md b/packages/artplayer-plugin-ambilight/CHANGELOG.md new file mode 100644 index 000000000..47f5bad5a --- /dev/null +++ b/packages/artplayer-plugin-ambilight/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed rendering and cleanup with legacy factory behavior. +- Published root types retained; precise /runtime entry and older conflicting declaration migration. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-plugin-ambilight/dist/artplayer-plugin-ambilight.js b/packages/artplayer-plugin-ambilight/dist/artplayer-plugin-ambilight.js index e7396874a..7952cbc16 100644 --- a/packages/artplayer-plugin-ambilight/dist/artplayer-plugin-ambilight.js +++ b/packages/artplayer-plugin-ambilight/dist/artplayer-plugin-ambilight.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-ambilight.js v1.1.0 + * artplayer-plugin-ambilight.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-ambilight/dist/artplayer-plugin-ambilight.legacy.js b/packages/artplayer-plugin-ambilight/dist/artplayer-plugin-ambilight.legacy.js index 6c52b4c6f..e1042f39b 100644 --- a/packages/artplayer-plugin-ambilight/dist/artplayer-plugin-ambilight.legacy.js +++ b/packages/artplayer-plugin-ambilight/dist/artplayer-plugin-ambilight.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-ambilight.js v1.1.0 + * artplayer-plugin-ambilight.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-ambilight/dist/artplayer-plugin-ambilight.mjs b/packages/artplayer-plugin-ambilight/dist/artplayer-plugin-ambilight.mjs index b6f4eadca..d7fd43be3 100644 --- a/packages/artplayer-plugin-ambilight/dist/artplayer-plugin-ambilight.mjs +++ b/packages/artplayer-plugin-ambilight/dist/artplayer-plugin-ambilight.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-ambilight.js v1.1.0 + * artplayer-plugin-ambilight.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-ambilight/package.json b/packages/artplayer-plugin-ambilight/package.json index 59a1c3b90..14563df1a 100644 --- a/packages/artplayer-plugin-ambilight/package.json +++ b/packages/artplayer-plugin-ambilight/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-plugin-ambilight", - "version": "1.1.0", + "version": "2.0.0", "description": "ambilight plugin for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", diff --git a/packages/artplayer-plugin-asr/CHANGELOG.md b/packages/artplayer-plugin-asr/CHANGELOG.md new file mode 100644 index 000000000..e09e66975 --- /dev/null +++ b/packages/artplayer-plugin-asr/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 3.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed recognition, media/audio ownership, fallback routing and explicit capture. +- Preserve capability errors and cleanup; supported devices and WebAudio remain release gates. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js b/packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js index fa9e94228..8681a85c8 100644 --- a/packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js +++ b/packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-asr.js v2.1.0 + * artplayer-plugin-asr.js v3.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.legacy.js b/packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.legacy.js index a0f44ac8e..4bea7fc33 100644 --- a/packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.legacy.js +++ b/packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-asr.js v2.1.0 + * artplayer-plugin-asr.js v3.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.mjs b/packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.mjs index fbae88cbe..90a4c231f 100644 --- a/packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.mjs +++ b/packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-asr.js v2.1.0 + * artplayer-plugin-asr.js v3.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-asr/package.json b/packages/artplayer-plugin-asr/package.json index 87b00c8f5..4c4b81143 100644 --- a/packages/artplayer-plugin-asr/package.json +++ b/packages/artplayer-plugin-asr/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-plugin-asr", - "version": "2.1.0", + "version": "3.0.0", "description": "Asr plugin for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", diff --git a/packages/artplayer-plugin-audio-track/CHANGELOG.md b/packages/artplayer-plugin-audio-track/CHANGELOG.md new file mode 100644 index 000000000..db97c47c8 --- /dev/null +++ b/packages/artplayer-plugin-audio-track/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed dual-media synchronization and owned track listeners. +- Buffer starvation/recovery validation remains open; do not claim a fully green playback matrix. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-plugin-audio-track/dist/artplayer-plugin-audio-track.js b/packages/artplayer-plugin-audio-track/dist/artplayer-plugin-audio-track.js index 69c7f2693..0697f039b 100644 --- a/packages/artplayer-plugin-audio-track/dist/artplayer-plugin-audio-track.js +++ b/packages/artplayer-plugin-audio-track/dist/artplayer-plugin-audio-track.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-audio-track.js v1.1.0 + * artplayer-plugin-audio-track.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-audio-track/dist/artplayer-plugin-audio-track.legacy.js b/packages/artplayer-plugin-audio-track/dist/artplayer-plugin-audio-track.legacy.js index 12cd4abb8..e9abcd163 100644 --- a/packages/artplayer-plugin-audio-track/dist/artplayer-plugin-audio-track.legacy.js +++ b/packages/artplayer-plugin-audio-track/dist/artplayer-plugin-audio-track.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-audio-track.js v1.1.0 + * artplayer-plugin-audio-track.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-audio-track/dist/artplayer-plugin-audio-track.mjs b/packages/artplayer-plugin-audio-track/dist/artplayer-plugin-audio-track.mjs index 450af29e3..31a5ed8c7 100644 --- a/packages/artplayer-plugin-audio-track/dist/artplayer-plugin-audio-track.mjs +++ b/packages/artplayer-plugin-audio-track/dist/artplayer-plugin-audio-track.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-audio-track.js v1.1.0 + * artplayer-plugin-audio-track.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-audio-track/package.json b/packages/artplayer-plugin-audio-track/package.json index 79add7c53..fc596fdc9 100644 --- a/packages/artplayer-plugin-audio-track/package.json +++ b/packages/artplayer-plugin-audio-track/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-plugin-audio-track", - "version": "1.1.0", + "version": "2.0.0", "description": "audio-track plugin for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", diff --git a/packages/artplayer-plugin-auto-thumbnail/CHANGELOG.md b/packages/artplayer-plugin-auto-thumbnail/CHANGELOG.md new file mode 100644 index 000000000..1d36a882e --- /dev/null +++ b/packages/artplayer-plugin-auto-thumbnail/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Separated metadata, frame capture, encoding and plugin cleanup in TypeScript. +- Native frame readiness/pixel issues remain tracked; migration does not claim all browsers passed. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-plugin-auto-thumbnail/dist/artplayer-plugin-auto-thumbnail.js b/packages/artplayer-plugin-auto-thumbnail/dist/artplayer-plugin-auto-thumbnail.js index 775593a8e..a48df8e24 100644 --- a/packages/artplayer-plugin-auto-thumbnail/dist/artplayer-plugin-auto-thumbnail.js +++ b/packages/artplayer-plugin-auto-thumbnail/dist/artplayer-plugin-auto-thumbnail.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-auto-thumbnail.js v1.1.0 + * artplayer-plugin-auto-thumbnail.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-auto-thumbnail/dist/artplayer-plugin-auto-thumbnail.legacy.js b/packages/artplayer-plugin-auto-thumbnail/dist/artplayer-plugin-auto-thumbnail.legacy.js index e0069461a..c90b3e418 100644 --- a/packages/artplayer-plugin-auto-thumbnail/dist/artplayer-plugin-auto-thumbnail.legacy.js +++ b/packages/artplayer-plugin-auto-thumbnail/dist/artplayer-plugin-auto-thumbnail.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-auto-thumbnail.js v1.1.0 + * artplayer-plugin-auto-thumbnail.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-auto-thumbnail/dist/artplayer-plugin-auto-thumbnail.mjs b/packages/artplayer-plugin-auto-thumbnail/dist/artplayer-plugin-auto-thumbnail.mjs index 0539d23b8..3ae054652 100644 --- a/packages/artplayer-plugin-auto-thumbnail/dist/artplayer-plugin-auto-thumbnail.mjs +++ b/packages/artplayer-plugin-auto-thumbnail/dist/artplayer-plugin-auto-thumbnail.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-auto-thumbnail.js v1.1.0 + * artplayer-plugin-auto-thumbnail.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-auto-thumbnail/package.json b/packages/artplayer-plugin-auto-thumbnail/package.json index 7b85d65c0..f1cf49611 100644 --- a/packages/artplayer-plugin-auto-thumbnail/package.json +++ b/packages/artplayer-plugin-auto-thumbnail/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-plugin-auto-thumbnail", - "version": "1.1.0", + "version": "2.0.0", "description": "auto-thumbnail plugin for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", diff --git a/packages/artplayer-plugin-chapter/CHANGELOG.md b/packages/artplayer-plugin-chapter/CHANGELOG.md new file mode 100644 index 000000000..2a69aff39 --- /dev/null +++ b/packages/artplayer-plugin-chapter/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed parsing, chapter UI and lifecycle integration. +- Preserve chapter selection/events; remaining restart timing and distribution gates are explicit. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-plugin-chapter/dist/artplayer-plugin-chapter.js b/packages/artplayer-plugin-chapter/dist/artplayer-plugin-chapter.js index af7b8bddf..ef5408e15 100644 --- a/packages/artplayer-plugin-chapter/dist/artplayer-plugin-chapter.js +++ b/packages/artplayer-plugin-chapter/dist/artplayer-plugin-chapter.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-chapter.js v1.1.0 + * artplayer-plugin-chapter.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-chapter/dist/artplayer-plugin-chapter.legacy.js b/packages/artplayer-plugin-chapter/dist/artplayer-plugin-chapter.legacy.js index 31087aeff..7a97c51c7 100644 --- a/packages/artplayer-plugin-chapter/dist/artplayer-plugin-chapter.legacy.js +++ b/packages/artplayer-plugin-chapter/dist/artplayer-plugin-chapter.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-chapter.js v1.1.0 + * artplayer-plugin-chapter.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-chapter/dist/artplayer-plugin-chapter.mjs b/packages/artplayer-plugin-chapter/dist/artplayer-plugin-chapter.mjs index ee8cad7c8..e8ec95806 100644 --- a/packages/artplayer-plugin-chapter/dist/artplayer-plugin-chapter.mjs +++ b/packages/artplayer-plugin-chapter/dist/artplayer-plugin-chapter.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-chapter.js v1.1.0 + * artplayer-plugin-chapter.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-chapter/package.json b/packages/artplayer-plugin-chapter/package.json index bc34abe57..bd736dc17 100644 --- a/packages/artplayer-plugin-chapter/package.json +++ b/packages/artplayer-plugin-chapter/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-plugin-chapter", - "version": "1.1.0", + "version": "2.0.0", "description": "chapter plugin for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", diff --git a/packages/artplayer-plugin-chromecast/CHANGELOG.md b/packages/artplayer-plugin-chromecast/CHANGELOG.md new file mode 100644 index 000000000..fd88389a9 --- /dev/null +++ b/packages/artplayer-plugin-chromecast/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed SDK initialization, session/receiver state and failure ownership. +- Keep old public plugin surface; physical Cast/receiver verification is separate. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-plugin-chromecast/dist/artplayer-plugin-chromecast.js b/packages/artplayer-plugin-chromecast/dist/artplayer-plugin-chromecast.js index ee2470036..0420b3f5e 100644 --- a/packages/artplayer-plugin-chromecast/dist/artplayer-plugin-chromecast.js +++ b/packages/artplayer-plugin-chromecast/dist/artplayer-plugin-chromecast.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-chromecast.js v1.1.0 + * artplayer-plugin-chromecast.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-chromecast/dist/artplayer-plugin-chromecast.legacy.js b/packages/artplayer-plugin-chromecast/dist/artplayer-plugin-chromecast.legacy.js index b53bb0487..6519ae95c 100644 --- a/packages/artplayer-plugin-chromecast/dist/artplayer-plugin-chromecast.legacy.js +++ b/packages/artplayer-plugin-chromecast/dist/artplayer-plugin-chromecast.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-chromecast.js v1.1.0 + * artplayer-plugin-chromecast.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-chromecast/dist/artplayer-plugin-chromecast.mjs b/packages/artplayer-plugin-chromecast/dist/artplayer-plugin-chromecast.mjs index 6d2367326..674ad736a 100644 --- a/packages/artplayer-plugin-chromecast/dist/artplayer-plugin-chromecast.mjs +++ b/packages/artplayer-plugin-chromecast/dist/artplayer-plugin-chromecast.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-chromecast.js v1.1.0 + * artplayer-plugin-chromecast.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-chromecast/package.json b/packages/artplayer-plugin-chromecast/package.json index 1a6130e78..a7497a225 100644 --- a/packages/artplayer-plugin-chromecast/package.json +++ b/packages/artplayer-plugin-chromecast/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-plugin-chromecast", - "version": "1.1.0", + "version": "2.0.0", "description": "Chromecast plugin for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", @@ -46,8 +46,12 @@ "browserslist": "last 1 Chrome version", "typesVersions": { "*": { - "legacy": ["types/artplayer-plugin-chromecast.d.ts"], - "runtime": ["types/runtime.d.ts"] + "legacy": [ + "types/artplayer-plugin-chromecast.d.ts" + ], + "runtime": [ + "types/runtime.d.ts" + ] } } } diff --git a/packages/artplayer-plugin-danmuku-mask/CHANGELOG.md b/packages/artplayer-plugin-danmuku-mask/CHANGELOG.md new file mode 100644 index 000000000..95920584a --- /dev/null +++ b/packages/artplayer-plugin-danmuku-mask/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed model/SDK lifecycle, rendering and cancellation. +- Preserve model behavior; combined native load and final SDK/device resource evidence stay explicit. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md), [types/README.md](./types/README.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-plugin-danmuku-mask/dist/artplayer-plugin-danmuku-mask.js b/packages/artplayer-plugin-danmuku-mask/dist/artplayer-plugin-danmuku-mask.js index 4b0e69a87..5b0ee757a 100644 --- a/packages/artplayer-plugin-danmuku-mask/dist/artplayer-plugin-danmuku-mask.js +++ b/packages/artplayer-plugin-danmuku-mask/dist/artplayer-plugin-danmuku-mask.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-danmuku-mask.js v1.1.0 + * artplayer-plugin-danmuku-mask.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-danmuku-mask/dist/artplayer-plugin-danmuku-mask.legacy.js b/packages/artplayer-plugin-danmuku-mask/dist/artplayer-plugin-danmuku-mask.legacy.js index ae25b32f6..1d22daa4c 100644 --- a/packages/artplayer-plugin-danmuku-mask/dist/artplayer-plugin-danmuku-mask.legacy.js +++ b/packages/artplayer-plugin-danmuku-mask/dist/artplayer-plugin-danmuku-mask.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-danmuku-mask.js v1.1.0 + * artplayer-plugin-danmuku-mask.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-danmuku-mask/dist/artplayer-plugin-danmuku-mask.mjs b/packages/artplayer-plugin-danmuku-mask/dist/artplayer-plugin-danmuku-mask.mjs index 8f566cad9..600b99468 100644 --- a/packages/artplayer-plugin-danmuku-mask/dist/artplayer-plugin-danmuku-mask.mjs +++ b/packages/artplayer-plugin-danmuku-mask/dist/artplayer-plugin-danmuku-mask.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-danmuku-mask.js v1.1.0 + * artplayer-plugin-danmuku-mask.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-danmuku-mask/package.json b/packages/artplayer-plugin-danmuku-mask/package.json index afa1b0493..731dbf17e 100644 --- a/packages/artplayer-plugin-danmuku-mask/package.json +++ b/packages/artplayer-plugin-danmuku-mask/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-plugin-danmuku-mask", - "version": "1.1.0", + "version": "2.0.0", "description": "Danmuku mask plugin for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", diff --git a/packages/artplayer-plugin-danmuku/CHANGELOG.md b/packages/artplayer-plugin-danmuku/CHANGELOG.md new file mode 100644 index 000000000..040eee6b8 --- /dev/null +++ b/packages/artplayer-plugin-danmuku/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 6.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed input, scheduling, Worker placement, renderer, UI and resource ownership. +- Fix issue #958 heatmap density and CPU/async/first-frame scheduling loss; retain root published types with precise /runtime. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js b/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js index 712bb2bea..96f8d765f 100644 --- a/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js +++ b/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js @@ -1,7 +1,7 @@ /*! - * artplayer-plugin-danmuku.js v5.3.0 + * artplayer-plugin-danmuku.js v6.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. */ -!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.artplayerPluginDanmuku=e(),define(function(){return t.artplayerPluginDanmuku})):(t="undefined"!==typeof globalThis?globalThis:t||self).artplayerPluginDanmuku=e()}(this,function(){"use strict";function t(t){return t instanceof Promise||"[object Promise]"===Object.prototype.toString.call(t)}function e(t){switch(t){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function i(t){if("string"!==typeof t)return[];const i=t.matchAll(/]*?p="(?

[^"]+)"[^>]*>(?.*?)<\/d>/gs);return Array.from(i).map(t=>{const i=t.groups.p.split(",");if(i.length>=8){return{text:t.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(i[0]),mode:e(Number(i[1])),fontSize:Number(i[2]),color:`#${Number(i[3]).toString(16)}`,timestamp:Number(i[4]),pool:Number(i[5]),userID:i[6],rowID:Number(i[7])}}return null}).filter(Boolean)}function n({data:t}){const{xml:e,id:n}=t,s=i(e);globalThis.postMessage({danmus:s,id:n})}let s=0;function a(t,{signal:a,onCancel:r}={}){return new Promise((o,l)=>{let d,h,c,p=!1;const u=++s,m=()=>g(void 0,function(t){if(void 0!==t?.reason)return t.reason;const e=new Error("Bilibili Danmu loading cancelled");return e.name="AbortError",e}(a));function f(){let t,e=!1;try{if(d){const t=d;d=void 0,t.onmessage=null,t.onerror=null,t.onmessageerror=null,t.terminate()}}catch(i){t=i,e=!0}if(void 0!==h){const n=h;h=void 0;try{URL.revokeObjectURL(n)}catch(i){e||(t=i),e=!0}}if(e)throw t}function g(t,e){if(p)return;p=!0;let i=arguments.length>1;a?.removeEventListener("abort",m),c?.();try{f()}catch(n){i||(e=n),i=!0}i?l(e):o(t)}function y(t,e){if(!p){console.error("Error parsing Bilibili Danmu:",e);try{g(i(t))}catch(n){g(void 0,n)}}}a?.aborted?m():(a?.addEventListener("abort",m),c=r?.(m),p?c?.():async function(){const s=a?await fetch(t,{signal:a}):await fetch(t);if(p)return;const r=await s.text();if(!p)try{const t=`\n ${e.toString()}\n ${i.toString()}\n onmessage = ${n.toString()}\n `;if(h=URL.createObjectURL(new Blob([t],{type:"application/javascript"})),p)return void f();if(d=new Worker(h),p)return void f();d.onmessage=t=>{if(p||t.data?.id!==u)return;const{danmus:e}=t.data;Array.isArray(e)?g(e):g(void 0,new Error("Invalid Bilibili Danmu worker response"))},d.onerror=t=>{t.preventDefault?.(),y(r,t.error||t)},d.onmessageerror=t=>y(r,t.error||t),d.postMessage({xml:r,id:u})}catch(o){y(r,o)}}().catch(t=>g(void 0,t)))})}const r=new WeakMap,o=Symbol("cancelled danmuku input");function l(t){return r.has(t)||r.set(t,{closed:!1,tasks:new Set,emitting:[]}),r.get(t)}function d(t){const e=l(t),i=e.emitting[e.emitting.length-1];return!e.closed&&!t.art.isDestroy&&(!i||i.active())}function h(t){const e=l(t);e.closed=!0;for(const i of[...e.tasks])i.cancel()}function c(t,e,i){const n=t.states[e]||[];for(let s=0;s{const s=n.$ref.offsetTop,a=this.owner.getLeft(n.$ref)-i,r=n.$ref.clientHeight,o=n.$ref.clientWidth,l=a+o,d=e-l,h=l/n.$restTime,c={};c.top=s,c.left=a,c.height=r,c.width=o,c.right=d,c.speed=h,c.distance=l,c.time=n.$restTime,c.mode=n.mode,t.push(c)}),t}left(t){const e=t.getBoundingClientRect();return this.owner.isRotate?e.top:e.left}makeWait(t){this.owner.setState(t,"wait"),t.$ref&&(t.$ref.style.cssText=this.owner.constructor.cssText,t.$ref.style.visibility="hidden",t.$ref.style.marginLeft="0px",t.$ref.style.transform="translateX(0px)",t.$ref.style.transition="transform 0s linear 0s",this.owner.$refs.push(t.$ref),t.$ref=null)}resize(){const{clientWidth:t}=this.owner.$player;this.owner.filter("stop",e=>{if(0===e.mode)e.$ref.style.left=`${t}px`}),this.owner.filter("emit",e=>{switch(e.$lastStartTime=Date.now(),e.mode){case 0:{const i=t+e.$ref.clientWidth;e.$ref.style.left=`${t}px`,e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`;break}}})}continue(){const{clientWidth:t}=this.owner.$player;return this.owner.filter("stop",e=>{switch(this.owner.setState(e,"emit"),e.$lastStartTime=Date.now(),e.mode){case 0:{const i=t+e.$ref.clientWidth;e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`;break}}}),this}suspend(){const{clientWidth:t}=this.owner.$player;return this.owner.filter("emit",e=>{switch(this.owner.setState(e,"stop"),e.mode){case 0:{const i=t-(this.owner.getLeft(e.$ref)-this.owner.getLeft(this.owner.$player));e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition="transform 0s linear 0s";break}}}),this}prepare(t,e){const i=this.owner,n=i.$ref;return e.danmu=t,e.ref=n,t.$ref=n,n.textContent=t.text,i.$danmuku.appendChild(n),n.style.opacity=i.option.opacity,n.style.fontSize=`${i.fontSize}px`,n.style.color=t.color,n.style.border=t.border?`1px solid ${t.color}`:null,n.style.backgroundColor=t.border?"rgb(0 0 0 / 50%)":null,i.utils.setStyles(n,t.style),n}place(t,e,i,n,s){switch(e.style.top=`${i}px`,e.style.visibility="visible",e.dataset.mode=t.mode,e.dataset.id=t.id||"",t.mode){case 0:e.style.left=`${s}px`,e.style.marginLeft="0px",e.style.transform=`translateX(${-n}px)`,e.style.transition=`transform ${t.$restTime}s linear 0s`;break;case 1:case 2:e.style.left="50%",e.style.marginLeft=`-${e.clientWidth/2}px`}}release(t){const{danmu:e,ref:i}=t;i&&e.$ref===i&&(i.style.cssText=this.owner.constructor.cssText,i.style.visibility="hidden",this.owner.$refs.push(i),e.$ref=null),t.ref=null}clear(){this.destroy(),this.owner.$refs=[],this.owner.$danmuku.textContent=""}destroy(){for(const t of this.nodes)t.parentElement&&t.parentElement.removeChild(t);for(const t of this.owner.queue)t.$ref=null;this.owner.$refs.length=0,this.nodes.clear()}}function u({target:t,visibles:e,clientWidth:i,clientHeight:n,marginBottom:s,marginTop:a,antiOverlap:r}){const o=n-s,l=e.filter(e=>e.mode===t.mode&&e.top<=o).sort((t,e)=>t.top-e.top);if(0===l.length)return 2===t.mode?o-t.height:a;if(l.unshift({type:"top",top:0,left:0,right:0,height:a,width:i,speed:0,distance:i}),l.push({type:"bottom",top:o,left:0,right:0,height:s,width:i,speed:0,distance:i}),2===t.mode)for(let h=l.length-2;h>=0;h-=1){const e=l[h],i=l[h+1],n=e.top+e.height;if(i.top-n>=t.height)return i.top-t.height}else for(let h=1;h=t.height)return n}const d=[];for(let h=1;h{const i=Math.min(...e.map(t=>t.right)),n=Math.min(...t.map(t=>t.right));return i*e.length-n*t.length});break;case 1:case 2:d.sort((t,e)=>{const i=Math.max(...e.map(t=>t.width));return Math.max(...t.map(t=>t.width))*t.length-i*e.length})}return d[0][0].top}switch(t.mode){case 0:{const e=d.find(e=>e.every(e=>{if(ie.time}));return e&&e[0]?e[0].top:void 0}case 1:case 2:return}}class m{constructor(){this.rows=new Set,this.waiting=new Set,this.visibility=()=>this.clear()}begin(t){void 0===this.time&&this.capture(t,[],t.art.currentTime)}capture(t,e,i){const n=t.$player.ownerDocument;if(n!==this.document&&(this.document?.removeEventListener("visibilitychange",this.visibility),this.document=n,n?.addEventListener("visibilitychange",this.visibility),this.clear()),!Number.isFinite(i)||"hidden"===n?.visibilityState||t.art.video?.seeking)return this.clear(),e;const s=this.time,a=this.rows,r=this.waiting;if(this.time=i,this.rows=new Set(e),this.waiting=new Set(t.states.wait),void 0===s||i<=s)return e;const o=t.states.wait.filter(t=>r.has(t)&&!a.has(t)&&t.time>=s-.1&&t.time"ready"===t.$state),...o,...e.filter(t=>"ready"!==t.$state)]}clear(){this.time=void 0,this.rows.clear(),this.waiting.clear()}destroy(){this.document?.removeEventListener("visibilitychange",this.visibility),this.document=void 0,this.clear()}}class f{constructor(){this.pending=new Set,this.reserved=new Set}capture(t,e){for(const i of t)this.reserved.has(i)||e.has(i)||this.pending.add(i)}take(){const t=[],e=[];for(const n of this.pending)"ready"===n.$state?t.push(n):"wait"===n.$state&&e.push(n);this.pending.clear();const i=[...t,...e];return this.reserved=new Set(i),i}complete(){this.reserved.clear()}clear(){this.pending.clear(),this.reserved.clear()}}const g=Symbol("cancelled danmuku frame");class y{constructor(t){this.owner=t,this.generation=0,this.starts=0,this.frame=null,this.operation=null,this.closed=!1,this.running=!1,this.fault=!1,this.failedItems=new Set,this.buffer=new f,this.sampling=new m}active(t){const e=this.owner;return!this.closed&&!this.fault&&!e.art.isDestroy&&!e.isStop&&!e.isHide&&t.generation===this.generation}release(t){this.owner.renderer.release(t)}invalidate(){if(this.generation++,null!==this.frame&&window.cancelAnimationFrame(this.frame),this.frame=null,this.owner.timer=null,this.operation){const t=this.operation;this.operation=null,t.cancel(),this.release(t)}this.owner.workerClient?.cancel(),this.failedItems.clear(),this.buffer.clear(),this.sampling.clear()}report(t){try{this.owner.art.emit("artplayerPluginDanmuku:error",t)}catch(e){console.warn("Failed to report danmuku scheduling error:",e)}}fail(t){this.closed||this.fault||(this.fault=!0,this.invalidate(),this.report(t))}recover(){if(!this.closed&&!this.owner.art.isDestroy&&(this.failedItems.clear(),this.fault))try{this.owner.workerClient?.dispose(),this.owner.createWorker(),this.fault=!1}catch(t){this.report(t)}}schedule(){const t=this.owner;if(!(!this.running||this.closed||this.fault||t.art.isDestroy||t.isStop)){try{const e=t.art.video;(t.art.playing||!1===e?.paused&&!e.ended&&e.readyState>2)&&!t.isHide&&this.sampling.begin(t)}catch(e){return void this.fail(e)}null===this.frame&&(this.frame=window.requestAnimationFrame(()=>{if(this.frame=null,t.timer=null,this.closed||this.fault||t.isStop||t.art.isDestroy)return;const i=this.generation;try{if(t.art.playing&&!t.isHide){t.filter("emit",e=>{const i=Date.now();e.$restTime-=(i-e.$lastStartTime)/1e3,e.$lastStartTime=i,e.$restTime<=0&&t.makeWait(e)});const e=t.art.currentTime,n=t.readys;if(i!==this.generation)return;this.buffer.capture(this.sampling.capture(t,n,e),this.failedItems)}}catch(e){return void(i===this.generation&&this.fail(e))}if(this.schedule(),this.operation||!t.art.playing||t.isHide)return;const n=this.buffer.take();if(!n.length)return;let s;const a=new Promise(t=>s=()=>t(g)),r={generation:this.generation,cancel:s,wait:t=>Promise.race([t,a]),ref:null};return this.operation=r,this.run(r,n).catch(t=>{this.active(r)&&this.fail(t)}).finally(()=>{this.release(r),this.operation===r&&(this.operation=null,this.buffer.complete())})}),t.timer=this.frame)}}async run(t,e){const i=this.owner;if(i.art.playing&&this.active(t))for(const s of e){if(!this.active(t))return;if(this.failedItems.has(s))continue;let e;try{e=await t.wait(i.option.beforeVisible(s))}catch(n){if(!this.active(t))return;this.failedItems.add(s),this.report(n);continue}if(!this.active(t))return;if(!e)continue;const{clientWidth:a,clientHeight:r}=i.$player,o=i.renderer.prepare(s,t);if(!this.active(t))return;s.$lastStartTime=Date.now(),s.$restTime=i.speed;const l=a+o.clientWidth,d={type:"getDanmuTop",target:{mode:s.mode,height:o.clientHeight,speed:l/s.$restTime},visibles:i.visibles,antiOverlap:i.option.antiOverlap,clientWidth:a,clientHeight:r,marginBottom:i.marginBottom,marginTop:i.marginTop},h=d.antiOverlap?await t.wait(i.postMessage(d)):{result:u(d)},c="symbol"===typeof h?void 0:h.result;if(!this.active(t)||s.$ref!==o)return;void 0!==c?(s.$lastStartTime=Date.now(),i.setState(s,"emit"),i.renderer.place(s,o,c,l,a),t.ref=null,i.art.emit("artplayerPluginDanmuku:visible",s)):(i.setState(s,"ready"),this.release(t))}}destroy(){this.closed=!0,this.invalidate(),this.sampling.destroy()}}let v=0;class w{constructor(t,e){this.pending=new Map,this.closed=!1,this.failed=!1,this.onFailure=e,this.worker=t();try{this.worker.onmessage=t=>{const e=this.pending.get(t.data?.id);e&&(this.pending.delete(t.data.id),e.resolve(t.data))},this.worker.onerror=t=>{t.preventDefault?.(),this.fail(t.error||t)},this.worker.onmessageerror=t=>this.fail(t.error||t)}catch(i){try{this.dispose()}catch{}throw i}}request(t){t.id=++v;const{id:e}=t;return this.closed||this.failed?Promise.resolve({id:e,result:void 0}):new Promise((i,n)=>{this.pending.set(e,{resolve:i,reject:n});try{this.worker.postMessage(t)}catch(s){this.fail(s)}})}fail(t){if(!this.closed&&!this.failed){this.failed=!0;for(const e of this.pending.values())e.reject(t);this.pending.clear();try{this.dispose()}catch{}this.onFailure(t)}}cancel(){for(const[t,e]of this.pending)e.resolve({id:t,result:void 0});this.pending.clear()}dispose(){if(this.closed)return;this.closed=!0,this.cancel();let t,e=!1;const i=i=>{try{i()}catch(n){e||(t=n),e=!0}};for(const n of["onmessage","onerror","onmessageerror"])i(()=>this.worker[n]=null);if(i(()=>this.worker.terminate()),e)throw t}}const k='/*!\n * artplayer-plugin-danmuku.js v5.3.0\n * Github: https://github.com/zhw2590582/ArtPlayer\n * (c) 2017-2026 Harvey Zhao\n * Released under the MIT License.\n */\nfunction t({target:t,visibles:e,clientWidth:i,clientHeight:h,marginBottom:n,marginTop:o,antiOverlap:s}){const r=h-n,p=e.filter(e=>e.mode===t.mode&&e.top<=r).sort((t,e)=>t.top-e.top);if(0===p.length)return 2===t.mode?r-t.height:o;if(p.unshift({type:"top",top:0,left:0,right:0,height:o,width:i,speed:0,distance:i}),p.push({type:"bottom",top:r,left:0,right:0,height:n,width:i,speed:0,distance:i}),2===t.mode)for(let g=p.length-2;g>=0;g-=1){const e=p[g],i=p[g+1],h=e.top+e.height;if(i.top-h>=t.height)return i.top-t.height}else for(let g=1;g=t.height)return h}const a=[];for(let g=1;g{const i=Math.min(...e.map(t=>t.right)),h=Math.min(...t.map(t=>t.right));return i*e.length-h*t.length});break;case 1:case 2:a.sort((t,e)=>{const i=Math.max(...e.map(t=>t.width));return Math.max(...t.map(t=>t.width))*t.length-i*e.length})}return a[0][0].top}switch(t.mode){case 0:{const e=a.find(e=>e.every(e=>{if(ie.time}));return e&&e[0]?e[0].top:void 0}case 1:case 2:return}}onmessage=e=>{const{data:i}=e;if(!i.id||!i.type)return;const h=(0,{getDanmuTop:t}[i.type])(i);globalThis.postMessage({result:h,id:i.id})};\n',x="undefined"!==typeof self&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",k],{type:"text/javascript;charset=utf-8"});function b(t){let e;try{if(e=x&&(self.URL||self.webkitURL).createObjectURL(x),!e)throw"";const i=new Worker(e,{type:"module",name:t?.name});return i.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(e)}),i}catch(i){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(k),{type:"module",name:t?.name})}}class ${constructor(t,e){const{constructor:i,template:n}=t;this.utils=i.utils,this.validator=i.validator,this.$danmuku=n.$danmuku,this.$player=n.$player,this.art=t,this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.worker=null,this.workerClient=null,this.renderer=new p(this),this.scheduler=new y(this),this.option=$.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.reset=this.reset.bind(this),this.resize=this.resize.bind(this),this.destroy=this.destroy.bind(this),this.seek=this.seek.bind(this),d(this),t.on("destroy",this.destroy);try{if(this.config(e,!0),!d(this))return;this.createWorker()}catch(s){throw t.off("destroy",this.destroy),h(this),this.scheduler.destroy(),s}t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("resize",this.resize),t.on("video:seeking",this.seek),this.load().catch(t=>console.warn("Failed to load initial danmuku:",t))}static get option(){return{danmuku:[],speed:5,margin:[10,"25%"],opacity:1,color:"#FFFFFF",mode:0,modes:[0,1,2],fontSize:25,antiOverlap:!0,synchronousPlayback:!1,mount:void 0,heatmap:!1,width:512,points:[],filter:()=>!0,beforeEmit:()=>!0,beforeVisible:()=>!0,visible:!0,emitter:!0,maxLength:200,lockTime:5,theme:"dark",OPACITY:{},FONT_SIZE:{},MARGIN:{},SPEED:{},COLOR:[]}}static get scheme(){return{danmuku:"array|function|string|promise",speed:"number",margin:"array",opacity:"number",color:"string",mode:"number",modes:"array",fontSize:"number|string",antiOverlap:"boolean",synchronousPlayback:"boolean",mount:"?htmldivelement|string",heatmap:"object|boolean",width:"number",points:"array",filter:"function",beforeEmit:"function",beforeVisible:"function",visible:"boolean",emitter:"boolean",maxLength:"number",lockTime:"number",theme:"string",OPACITY:"object",FONT_SIZE:"object",MARGIN:"object",SPEED:"object",COLOR:"array"}}static get cssText(){return'\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 '}get isRotate(){return this.art.plugins?.autoOrientation?.state}get marginTop(){const{clamp:t}=this.utils,e=this.option.margin[0],{clientHeight:i}=this.$player;if("number"===typeof e)return t(e,0,i);if("string"===typeof e&&e.endsWith("%")){return t(i*(Number.parseFloat(e)/100),0,i)}return $.option.margin[0]}get marginBottom(){const{clamp:t}=this.utils,e=this.option.margin[1],{clientHeight:i}=this.$player;if("number"===typeof e)return t(e,0,i);if("string"===typeof e&&e.endsWith("%")){return t(i*(Number.parseFloat(e)/100),0,i)}return $.option.margin[1]}get fontSize(){const{clamp:t}=this.utils,{clientHeight:e}=this.$player,i=this.option.fontSize;if("number"===typeof i)return Math.round(t(i,12,e));if("string"===typeof i&&i.endsWith("%")){const n=Number.parseFloat(i)/100;return Math.round(t(e*n,12,e))}return $.option.fontSize}get $ref(){return this.renderer.acquire()}get readys(){return function(t){const{currentTime:e}=t.art,i=[];return c(t,"ready",t=>i.push(t)),c(t,"wait",t=>{e+.1>=t.time&&t.time>=e-.1&&i.push(t)}),i}(this)}get visibles(){return this.renderer.visibles}get speed(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}async load(e){const{errorHandle:i}=this.utils,n=function(t,e){const i=l(t);if(e)for(const o of[...i.tasks])o.replace&&o.cancel();let n,s=i.closed||t.art.isDestroy;const a=new Promise(t=>n=t),r=new Set,d="function"===typeof AbortController?new AbortController:void 0,h={replace:e,signal:d?.signal,active:()=>!s&&!i.closed&&!t.art.isDestroy,onCancel:t=>h.active()?(r.add(t),()=>r.delete(t)):(t(),()=>{}),cancel(){if(!s){s=!0,n(o),d?.abort();for(const t of[...r])t();r.clear()}},wait:t=>Promise.race([t,a]),emit(e){i.emitting.push(h);try{return t.emit(e)}finally{i.emitting.pop()}},finish(){i.tasks.delete(h),r.clear()}};return s?n(o):i.tasks.add(h),h}(this,void 0===e);try{if(!n.active())return this;const s=function(e,i){return"function"===typeof e?{asynchronous:!0,value:e()}:t(e)?{asynchronous:!0,value:e}:"string"===typeof e?{asynchronous:!0,value:a(e,i)}:{asynchronous:!1,value:Array.isArray(e)?e:[]}}(e||this.option.danmuku,n),r=s.asynchronous?await n.wait(s.value):s.value;if(!n.active())return this;i(Array.isArray(r),"Danmuku need return an array as result");const o=r;if(void 0===e){if(this.reset(),!n.active())return this;this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.renderer.clear()}for(let t=0;t{const i=a[e],n=r[e];return"function"===typeof i||"function"===typeof n||t(i)||t(n)?i!==n:JSON.stringify(i)!==JSON.stringify(n)}))&&!i)return this;const o=function(t,e,{defaults:i,validate:n,clamp:s,mount:a}){const r=Object.assign({},i,t,e);return n(r),r.mode=s(r.mode,0,2),r.speed=s(r.speed,1,10),r.opacity=s(r.opacity,0,1),r.lockTime=s(r.lockTime,1,60),r.maxLength=s(r.maxLength,1,1e3),r.mount=r.mount||a,r}(this.option,e,{defaults:$.option,validate:t=>this.validator(t,$.scheme),clamp:n,mount:s});if(!d(this))return this;const l=this.option.beforeVisible!==o.beforeVisible;return this.option=o,l&&(this.scheduler.invalidate(),this.scheduler.schedule()),e.fontSize&&(this.reset(),!d(this))||(this.option.visible?this.show():this.hide(),d(this)&&this.art.emit("artplayerPluginDanmuku:config",this.option)),this}getLeft(t){return this.renderer.left(t)}postMessage(t={}){return this.workerClient.request(t)}createWorker(){this.workerClient=new w(()=>new b,t=>this.scheduler.fail(t)),this.worker=this.workerClient.worker}filter(t,e){return c(this,t,e)}setState(t,e){!function(t,e,i){t.states[e.$state]=t.states[e.$state].filter(t=>t!==e),e.$state=i,e.$ref&&(e.$ref.dataset.state=i),t.states[i].push(e)}(this,t,e)}makeWait(t){this.renderer.makeWait(t)}update(){return this.scheduler.running=!0,this.scheduler.schedule(),this}resize(){this.renderer.resize()}continue(){return this.renderer.continue(),this}suspend(){return this.renderer.suspend(),this}stop(){return this.isStop=!0,this.scheduler.running=!1,this.scheduler.invalidate(),this.suspend(),this.art.emit("artplayerPluginDanmuku:stop"),this}start(){if(this.scheduler.closed||this.art.isDestroy)return this;const t=++this.scheduler.starts,e=this.scheduler.generation;this.isStop=!1,this.scheduler.recover();return this.scheduler.closed||this.art.isDestroy||this.isStop||this.scheduler.fault||e!==this.scheduler.generation||t!==this.scheduler.starts||(this.continue(),this.update(),this.art.emit("artplayerPluginDanmuku:start")),this}reset(){return this.scheduler.invalidate(),this.queue.forEach(t=>this.makeWait(t)),this.art.emit("artplayerPluginDanmuku:reset"),this.scheduler.recover(),this.scheduler.schedule(),this}seek(){this.scheduler.invalidate(),this.scheduler.schedule()}show(){return this.isHide=!1,this.$danmuku.style.opacity=1,this.option.visible=!0,this.art.emit("artplayerPluginDanmuku:show"),this}hide(){return this.isHide=!0,this.scheduler.invalidate(),this.$danmuku.style.opacity=0,this.option.visible=!1,this.art.emit("artplayerPluginDanmuku:hide"),this.scheduler.schedule(),this}destroy(){h(this),this.scheduler.destroy();try{try{this.stop()}finally{this.workerClient?.dispose()}}finally{this.renderer.destroy(),this.art.off("video:play",this.start),this.art.off("video:playing",this.start),this.art.off("video:pause",this.stop),this.art.off("video:waiting",this.stop),this.art.off("resize",this.resize),this.art.off("video:seeking",this.seek),this.art.off("destroy",this.destroy),this.art.emit("artplayerPluginDanmuku:destroy")}}}const M=4294967295;function S(t,e){let i=0,n=t.length;for(;iNumber.isFinite(t)&&t>0))return null;const r={xMin:0,xMax:t,yMin:0,yMax:128,scale:.25,opacity:.2,minHeight:Math.floor(.05*e),sampling:Math.max(1,Math.floor(t/100)),smoothing:.2,flattening:.2},o=Object.assign({},"object"===typeof s?s:{}),l=Object.assign({},r,o);for(const b of Object.keys(r))Number.isFinite(l[b])||(l[b]=r[b]);if(l.sampling<=0&&(l.sampling=r.sampling),l.xMin===l.xMax||l.yMin===l.yMax)return null;const d=Array.isArray(a)&&a.length>0,h=d?[...a]:function(t,e,i,n){if(!Number.isFinite(e)||e<=0||!Number.isFinite(i)||i<=0||!Number.isFinite(n)||n<=0||Math.floor(e/n)+1>M)return[];const s=t.map(t=>t.time).filter(t=>"number"===typeof t&&!Number.isNaN(t)).sort((t,e)=>t-e),a=[],r=i/e;if(!Number.isFinite(r))return[];for(let o=0;o<=e;o+=n){if(a.length>=M||o+n===o)return[];const t=o*r,e=(o+n)*r;a.push([o,S(s,e)-S(s,t)])}return a}(n,t,i,l.sampling);if(!h.length||!h.every(t=>Array.isArray(t)&&Number.isFinite(t[0])&&Number.isFinite(t[1])))return null;const c=h[h.length-1];if(c[0]!==t){if(h.length===M)return null;h.push([t,c[1]])}let p=1/0,u=-1/0;for(const b of h)p=Math.min(p,b[1]),u=Math.max(u,b[1]);const m=(p+u)/2;for(const b of h){const t=b[1];b[1]=t*(t>m?1+l.scale:1-l.scale)+l.minHeight}const f=!d&&!Number.isFinite(o.yMin)&&!Number.isFinite(o.yMax);let g=0;for(const b of h)g=Math.max(g,b[1]);const y=f&&g>r.yMax/4;y&&(l.yMax=4*g);const v=t=>y?Math.min(e,Math.max(.75*e,t)):t,w=(t,e,i,n)=>{const s=function(t,e){const i=e[0]-t[0],n=e[1]-t[1];return{length:Math.sqrt(i**2+n**2),angle:Math.atan2(n,i)}}(e||t,i||t),a=z(Math.cos(s.angle)*l.flattening,0,1,1,0),r=s.angle*a+(n?Math.PI:0),o=s.length*l.smoothing;return[t[0]+Math.cos(r)*o,v(t[1]+Math.sin(r)*o)]},k=h.map(i=>[z(i[0],l.xMin,l.xMax,0,t),v(z(i[1],l.yMin,l.yMax,e,0))]);if(!k.every(t=>t.every(Number.isFinite)))return null;const x=k.map((t,i,n)=>{if(0===i)return`M ${n[n.length-1][0]},${e} L ${t[0]},${e} L ${t[0]},${t[1]}`;const s=w(n[i-1],n[i-2],t),a=w(t,n[i-1],n[i+1],!0);return`C ${s[0]},${s[1]} ${a[0]},${a[1]} ${t[0]},${t[1]}${i===n.length-1?" z":""}`}).join(" ");return/NaN|Infinity/u.test(x)?null:{path:x,opacity:l.opacity,width:t,height:e}}let F=0;function C(t,e,i){if(t.isDestroy)return;const{query:n}=t.constructor.utils;let s;const a=[];let r,o,l,d=!1;const h=()=>!d&&!t.isDestroy;function c(e,i){const n=i;a.push([e,n]),t.on(e,n)}function p(e){if(d)return;let i;d=!0,o=null,l=null;let n=!1;const s=t=>{try{t()}catch(e){n||(i=e),n=!0}};for(const[r,o]of a.splice(0))s(()=>t.off(r,o));if(e&&r&&t.controls.heatmap===r&&s(()=>t.controls.remove("heatmap")),r=void 0,n)throw i}function u(t){h()&&o&&l&&(o.setAttribute("offset",100*t+"%"),l.setAttribute("offset",100*t+"%"))}function m(a){try{!function(a=[]){if(!h())return;o=null,l=null;const d=r;if(d.innerHTML="",t.option.isLive)return;const c=E({width:d.offsetWidth,height:d.offsetHeight,duration:t.duration,queue:e.queue,option:i,points:a});if(!c||!h())return;const p=d.ownerDocument;for(s||(s=p?"heatmap-solids":"heatmap-solids-"+ ++F);p?.getElementById(s);)s="heatmap-solids-"+ ++F;d.innerHTML=`\n \n \n \n \n \n \n \n \n \n \n \n `,o=n("#heatmap-start",d),l=n("#heatmap-stop",d),u(t.played)}(a)}catch(d){try{p(!0)}catch{}throw d}}c("destroy",()=>p(!0));try{t.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},beforeUnmount(){p(!1)},mounted(e){if(r=e,d)return t.controls.heatmap===e&&t.controls.remove("heatmap"),void(r=void 0);h()?(c("video:timeupdate",()=>u(t.played)),c("setBar",(t,e)=>{"played"===t&&u(e)}),c("ready",()=>m()),c("resize",()=>m()),c("artplayerPluginDanmuku:loaded",()=>m()),c("artplayerPluginDanmuku:points",t=>m(t))):p(!0)}})}catch(f){try{p(!0)}catch{}throw f}return()=>p(!0)}const D=new WeakMap;class T{constructor(t){this.art=t,this.closed=!1,this.disposers=new Set,this.cancelled=new Promise(t=>this.cancel=t)}get active(){return!this.closed&&!this.art.isDestroy}own(t){this.closed?t():this.disposers.add(t)}write(t,e,i,n=i=>t[e]=i){const s=t;if(!this.active)return;const a=()=>"function"===typeof s.getPropertyPriority?s.getPropertyPriority(e):void 0;let r=D.get(s);r||(r=new Map,D.set(s,r));let o=r.get(e);o||(o={original:s[e],present:e in s||void 0!==s[e],priority:a(),owners:new Map,apply:n},r.set(e,o)),o.owners.has(this)||this.own(()=>{const t=[...o.owners.keys()],i=t[t.length-1]===this;if(o.owners.delete(this),i&&s[e]===o.last&&a()===o.lastPriority){const t=[...o.owners.values()];t.length?(o.apply(t[t.length-1]),o.last=s[e],o.lastPriority=a()):void 0!==o.priority?s.setProperty(e,o.original,o.priority):o.present?o.apply(o.original):delete s[e]}o.owners.size||(r.delete(e),r.size||D.delete(s))}),o.owners.delete(this),o.owners.set(this,i),o.apply(i),o.last=s[e],o.lastPriority=a()}on(t,e){if(!this.active)return;const i=this;function n(...t){if(i.active)return e.apply(this,t)}const s=()=>this.art.off(t,n);this.own(s);try{this.art.on(t,n),this.active||s()}catch(a){throw this.release(s),a}}proxy(t,e,i){if(!this.active)return;const n=this;function s(...t){if(n.active)return i.apply(this,t)}let a;const r=()=>{if("function"===typeof a){const t=this.art.events;"function"===typeof t?.remove&&t.destroyEvents?.has(a)?t.remove(a):a()}else t.removeEventListener?.(e,s)};this.own(r);try{a=this.art.proxy(t,e,s),this.active||r()}catch(o){throw this.release(r),o}}wait(t){return Promise.race([t,this.cancelled])}release(t){try{t()}catch(e){console.warn("Failed to dispose danmuku setting resource:",e)}}close(){if(!this.closed){this.closed=!0,this.cancel();for(const t of this.disposers)this.release(t);this.disposers.clear()}}}function P({min:t,max:e,container:i,findIndex:n,onChange:s,steps:a=[]}){const{lifecycle:r}=this;if(!r.active)return{reset(){}};const{query:o,clamp:l,setStyle:d}=this.utils;d(i,"touch-action","none"),i.innerHTML=`\n

\n
\n ${a.map(()=>'
').join("")}\n
\n
\n
\n
\n
\n ${a.map(t=>t.hide?"":`
${t.name}
`).join("")}\n
\n `;const h=o(".apd-slider-dot",i),c=o(".apd-slider-progress",i);let p=!1;function u(i){if(!r.active)return;if(void 0===i&&(i=n()),ie)return;const o=(i-t)/(e-t);h.style.left=100*o+"%",0===a.length&&(c.style.width=h.style.left),s(i)}function m(n){const{top:s,height:a,left:r,width:o}=i.getBoundingClientRect();if(this.art.isRotate){const i=l(n.clientY-s,0,a);u(Math.round(i/a*(e-t)+t))}else{const i=l(n.clientX-r,0,o);u(Math.round(i/o*(e-t)+t))}}return r.own(()=>p=!1),r.proxy(i,"click",t=>{m.call(this,t)}),r.proxy(i,"pointerdown",t=>{p=0===t.button}),r.on("document:pointermove",t=>{p&&m.call(this,t)}),r.on("document:pointerup",t=>{p&&(p=!1,m.call(this,t))}),{reset:u}}const L='',A='',H='',O='',N='',V='',q='',I='',j='',B='',R='',Z='';function W(){const{option:t}=this;return`\n
\n ${R}${B}\n
\n
\n ${H}\n
\n
\n
\n \u6309\u7c7b\u578b\u5c4f\u853d\n
\n
\n ${O}${N}\n
\u6eda\u52a8
\n
\n
\n ${V}${q}\n
\u9876\u90e8
\n
\n
\n ${I}${j}\n
\u5e95\u90e8
\n
\n
\n
\n
\n
\n ${A}${L}\n \u9632\u6b62\u5f39\u5e55\u91cd\u53e0\n
\n
\n ${A}${L}\n \u540c\u6b65\u89c6\u9891\u901f\u5ea6\n
\n
\n
\n \u4e0d\u900f\u660e\u5ea6\n
\n
\u672a\u77e5
\n
\n
\n \u663e\u793a\u533a\u57df\n
\n
\u672a\u77e5
\n
\n
\n \u5f39\u5e55\u5b57\u53f7\n
\n
\u672a\u77e5
\n
\n
\n \u5f39\u5e55\u901f\u5ea6\n
\n
\u672a\u77e5
\n
\n
\n
\n
\n
\n
\n ${Z}\n
\n
\n
\n \u6a21\u5f0f\n
\n
\n ${N}\n
\u6eda\u52a8
\n
\n
\n ${q}\n
\u9876\u90e8
\n
\n
\n ${j}\n
\u5e95\u90e8
\n
\n
\n
\n
\n \u989c\u8272\n
\n ${this.COLOR.map(t=>`
`).join("")}\n
\n
\n
\n
\n
\n \n
\u53d1\u9001
\n
\n `}if("undefined"!==typeof document){const t="artplayer-plugin-danmuku",e=Symbol.for("artplayer-plugin-danmuku.pending-style"),i=document;let n=document.getElementById(t)||i[e];if(!n)if(n=document.createElement("style"),n.id=t,"loading"===document.readyState){i[e]=n;const s=()=>{document.removeEventListener("DOMContentLoaded",s),i[e]===n&&delete i[e];const a=document.getElementById(t);a?a.textContent=n.textContent:(document.head||document.documentElement).appendChild(n)};document.addEventListener("DOMContentLoaded",s,{once:!0})}else(document.head||document.documentElement).appendChild(n);n.textContent='.artplayer-plugin-danmuku{display:flex;position:relative;z-index:99;align-items:center;justify-content:center;font-size:12px;height:32px;width:100%;color:#fff;font-weight:300;flex-shrink:0;gap:10px}.artplayer-plugin-danmuku .apd-icon{cursor:pointer;opacity:.75;transition:all .2s ease;fill:#fff}.artplayer-plugin-danmuku .apd-icon:hover{opacity:1}.artplayer-plugin-danmuku .apd-config{display:flex;position:relative}.artplayer-plugin-danmuku .apd-config .apd-config-panel{position:absolute;bottom:24px;left:0;width:320px;padding:10px;opacity:0;pointer-events:none}.artplayer-plugin-danmuku .apd-config .apd-config-panel .apd-config-panel-inner{width:100%;border-radius:3px;background-color:#000000d9;padding:10px}.artplayer-plugin-danmuku .apd-config:hover .apd-config-panel{opacity:100;pointer-events:all}.artplayer-plugin-danmuku .apd-config-mode,.artplayer-plugin-danmuku .apd-config-slider,.artplayer-plugin-danmuku .apd-config-other,.artplayer-plugin-danmuku .apd-style-mode{margin-bottom:15px}.artplayer-plugin-danmuku .apd-modes{display:flex;align-items:center;margin-top:5px;gap:20px}.artplayer-plugin-danmuku .apd-modes .apd-mode{cursor:pointer;text-align:center}.artplayer-plugin-danmuku .apd-modes .apd-mode:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-config-slider{display:flex;align-items:center;gap:12px}.artplayer-plugin-danmuku .apd-config-slider .apd-value{width:32px;text-align:right}.artplayer-plugin-danmuku .apd-slider{position:relative;flex:1;display:flex;height:20px;align-items:center;justify-content:center;cursor:pointer}.artplayer-plugin-danmuku .apd-slider .apd-slider-line{position:relative;height:2px;width:100%;overflow:hidden;border-radius:3px;background-color:#ffffff40}.artplayer-plugin-danmuku .apd-slider .apd-slider-points{position:absolute;inset:0;display:flex;align-items:center;justify-content:space-between}.artplayer-plugin-danmuku .apd-slider .apd-slider-points .apd-slider-point{width:2px;height:2px;border-radius:50%;background-color:#ffffff80}.artplayer-plugin-danmuku .apd-slider .apd-slider-progress{width:0%;height:100%;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-slider .apd-slider-dot{position:absolute;transform:translate(-6px);left:0%;width:12px;height:12px;border-radius:50%;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps{display:flex;align-items:center;justify-content:space-between;position:absolute;bottom:-12px;width:calc(100% + 32px);color:#777}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps .apd-slider-step{flex-shrink:0;width:36px;text-align:center;scale:.95}.artplayer-plugin-danmuku .apd-config-other{display:flex;align-items:center;gap:20px}.artplayer-plugin-danmuku .apd-config-other .apd-check-off,.artplayer-plugin-danmuku .apd-config-other .apd-check-on{width:16px;height:16px}.artplayer-plugin-danmuku .apd-config-other .apd-other{display:flex;align-items:center;cursor:pointer;gap:2px}.artplayer-plugin-danmuku .apd-config-other .apd-other:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-emitter{display:flex;flex:1;align-items:center;height:100%;background-color:#ffffff40;border-radius:5px}.artplayer-plugin-danmuku .apd-style{position:relative;display:flex;align-items:center;justify-content:center}.artplayer-plugin-danmuku .apd-style .apd-style-panel{position:absolute;bottom:24px;left:0;width:200px;padding:10px;opacity:0;pointer-events:none}.artplayer-plugin-danmuku .apd-style .apd-style-panel .apd-style-panel-inner{width:100%;border-radius:3px;background-color:#000000d9;padding:10px}.artplayer-plugin-danmuku .apd-style:hover .apd-style-panel{opacity:100;pointer-events:all}.artplayer-plugin-danmuku .apd-colors{display:flex;flex-wrap:wrap;margin-top:5px;gap:8px}.artplayer-plugin-danmuku .apd-colors .apd-color{width:16px;height:16px;border-radius:2px;cursor:pointer}.artplayer-plugin-danmuku .apd-colors .apd-color.apd-active{border:1px solid black;box-shadow:0 0 0 1px #fff}.artplayer-plugin-danmuku .apd-input{outline:none;height:100%;flex:1;min-width:0;width:auto;border:none;line-height:1;color:#fff;background-color:transparent}.artplayer-plugin-danmuku .apd-input::placeholder{color:#ffffff80}.artplayer-plugin-danmuku .apd-send{display:flex;align-items:center;justify-content:center;height:100%;width:60px;flex-shrink:0;cursor:pointer;text-shadow:none;border-top-right-radius:5px;border-bottom-right-radius:5px;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-send.apd-lock{cursor:not-allowed;color:#666;background-color:#e7e7e7}.art-controls-center .apd-emitter{width:260px;flex:none}.art-fullscreen .artplayer-plugin-danmuku,.art-fullscreen-web .artplayer-plugin-danmuku{height:38px;gap:16px}.art-fullscreen .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen-web .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-on,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-on{width:28px;height:28px}.art-fullscreen .artplayer-plugin-danmuku .apd-emitter,.art-fullscreen-web .artplayer-plugin-danmuku .apd-emitter{width:400px;flex:none}.art-video-player>.artplayer-plugin-danmuku{position:absolute;left:0;right:0;bottom:-40px;padding:0 10px}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[data-danmuku-emitter=false] .apd-emitter{display:none!important}[data-danmuku-emitter=false] .art-controls-center .artplayer-plugin-danmuku{justify-content:flex-end;gap:18px}[data-danmuku-emitter=false].art-fullscreen .art-controls-center .artplayer-plugin-danmuku,[data-danmuku-emitter=false].art-fullscreen-web .art-controls-center .artplayer-plugin-danmuku{gap:24px}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-icon{fill:#333}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-emitter{background-color:#f1f2f3}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input{color:#000}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:#0000004d}[data-danmuku-visible=false] .apd-toggle-off{display:block}[data-danmuku-visible=false] .apd-toggle-on,[data-danmuku-visible=true] .apd-toggle-off{display:none}[data-danmuku-visible=true] .apd-toggle-on{display:block}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-on{display:none}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-off,[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-on{display:block}[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-off,[data-danmuku-sync-video=false] .apd-sync-video .apd-check-on{display:none}[data-danmuku-sync-video=false] .apd-sync-video .apd-check-off,[data-danmuku-sync-video=true] .apd-sync-video .apd-check-on{display:block}[data-danmuku-sync-video=true] .apd-sync-video .apd-check-off{display:none}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-off{display:block}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-on{display:none}[data-danmuku-mode0=false] .art-danmuku [data-mode="0"]{opacity:0!important}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-off{display:none}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-on{display:block}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"]{color:#00a1d6}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"] path{fill:#00a1d6}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-off{display:block}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-on{display:none}[data-danmuku-mode1=false] .art-danmuku [data-mode="1"]{opacity:0!important}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-off{display:none}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-on{display:block}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"]{color:#00a1d6}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"] path{fill:#00a1d6}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-off{display:block}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-on{display:none}[data-danmuku-mode2=false] .art-danmuku [data-mode="2"]{opacity:0!important}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-off{display:none}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-on{display:block}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"]{color:#00a1d6}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"] path{fill:#00a1d6}'}class _{constructor(t,e){this.art=t,this.danmuku=e,this.utils=t.constructor.utils;const{setStyle:i}=this.utils,{$controlsCenter:n}=t.template;this.template={$controlsCenter:n,$mount:n,$danmuku:null,$toggle:null,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel:null,$styleModes:null,$colors:null,$opacitySlider:null,$opacityValue:null,$marginSlider:null,$marginValue:null,$fontSizeSlider:null,$fontSizeValue:null,$speedSlider:null,$speedValue:null,$input:null,$send:null},this.slider={opacity:null,margin:null,fontSize:null,speed:null},this.emitting=!1,this.isLock=!1,this.timer=null,this.lifecycle=new T(t),this.destroy=this.destroy.bind(this),this.lifecycle.own(()=>t.off("destroy",this.destroy));try{if(t.on("destroy",this.destroy),!this.lifecycle.active)return;if(this.lifecycle.write(n.style,"display","flex",t=>i(n,"display",t)),this.createTemplate(),!this.lifecycle.active)return;if(this.createSliders(),!this.lifecycle.active)return;if(this.createEvents(),this.mount(this.option.mount),!this.lifecycle.active)return;this.lifecycle.on("resize",()=>this.resize()),this.lifecycle.on("fullscreen",t=>this.onFullscreen(t)),this.lifecycle.on("fullscreenWeb",t=>this.onFullscreen(t)),this.lifecycle.proxy(this.template.$config,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$config,$panel:this.template.$configPanel})}),this.lifecycle.proxy(this.template.$style,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$style,$panel:this.template.$stylePanel})})}catch(s){try{this.destroy()}catch(a){console.warn("Failed to roll back danmuku setting:",a)}throw s}}static get icons(){return{$on:R,$off:B,$config:H,$style:Z,$mode_0_off:O,$mode_0_on:N,$mode_1_off:V,$mode_1_on:q,$mode_2_off:I,$mode_2_on:j,$check_on:A,$check_off:L}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){return W.call(this)}get OPACITY(){return{min:0,max:100,steps:[],...this.option.OPACITY}}get FONT_SIZE(){return{min:12,max:120,steps:[],...this.option.FONT_SIZE}}get MARGIN(){return{min:0,max:3,steps:[{name:"1/4",value:[10,"75%"]},{name:"\u534a\u5c4f",value:[10,"50%"]},{name:"3/4",value:[10,"25%"]},{name:"\u6ee1\u5c4f",value:[10,10]}],...this.option.MARGIN}}get SPEED(){return{min:0,max:4,steps:[{name:"\u6781\u6162",value:10},{name:"\u8f83\u6162",value:7.5,hide:!0},{name:"\u9002\u4e2d",value:5},{name:"\u8f83\u5feb",value:2.5,hide:!0},{name:"\u6781\u5feb",value:1}],...this.option.SPEED}}get COLOR(){return this.option.COLOR.length?this.option.COLOR:["#FE0302","#FF7204","#FFAA02","#FFD302","#FFFF00","#A0EE00","#00CD00","#019899","#4266BE","#89D5FF","#CC0273","#222222","#9B9B9B","#FFFFFF"]}query(t){const{query:e}=this.utils,{$danmuku:i}=this.template;return e(t,i)}append(t,e){if(!this.lifecycle.active)return;const{append:i}=this.utils;[...t.children].includes(e)||i(t,e)}setData(t,e){if(!this.lifecycle.active)return;const{$player:i}=this.art.template,{$mount:n}=this.template;this.lifecycle.write(i.dataset,t,e),this.outside&&this.lifecycle.write(n.dataset,t,e)}createTemplate(){const{createElement:t,tooltip:e}=this.utils,i=t("div");this.template.$danmuku=i,i.className="artplayer-plugin-danmuku",i.innerHTML=this.TEMPLATE,this.template.$toggle=this.query(".apd-toggle"),this.template.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),this.template.$styleModes=this.query(".apd-style-mode .apd-modes"),this.template.$colors=this.query(".apd-colors"),this.template.$antiOverlap=this.query(".apd-anti-overlap"),this.template.$syncVideo=this.query(".apd-sync-video"),this.template.$opacitySlider=this.query(".apd-config-opacity .apd-slider"),this.template.$opacityValue=this.query(".apd-config-opacity .apd-value"),this.template.$marginSlider=this.query(".apd-config-margin .apd-slider"),this.template.$marginValue=this.query(".apd-config-margin .apd-value"),this.template.$fontSizeSlider=this.query(".apd-config-fontSize .apd-slider"),this.template.$fontSizeValue=this.query(".apd-config-fontSize .apd-value"),this.template.$speedSlider=this.query(".apd-config-speed .apd-slider"),this.template.$speedValue=this.query(".apd-config-speed .apd-value"),this.template.$input=this.query(".apd-input"),this.template.$send=this.query(".apd-send");const{$toggle:n}=this.template;this.lifecycle.on("artplayerPluginDanmuku:show",()=>{e(n,"\u5173\u95ed\u5f39\u5e55")}),this.lifecycle.on("artplayerPluginDanmuku:hide",()=>{e(n,"\u6253\u5f00\u5f39\u5e55")})}createEvents(){const{$toggle:t,$configModes:e,$styleModes:i,$colors:n,$antiOverlap:s,$syncVideo:a,$send:r,$input:o}=this.template;this.lifecycle.proxy(t,"click",()=>{this.danmuku.config({visible:!this.option.visible}),this.reset()}),this.lifecycle.proxy(e,"click",t=>{const e=t.target.closest(".apd-mode");if(!e)return;const i=Number(e.dataset.mode);this.option.modes.includes(i)?this.danmuku.config({modes:this.option.modes.filter(t=>t!==i)}):this.danmuku.config({modes:[...this.option.modes,i]}),this.reset()}),this.lifecycle.proxy(s,"click",()=>{this.danmuku.config({antiOverlap:!this.option.antiOverlap}),this.reset()}),this.lifecycle.proxy(a,"click",()=>{this.danmuku.config({synchronousPlayback:!this.option.synchronousPlayback}),this.reset()}),this.lifecycle.proxy(i,"click",t=>{const e=t.target.closest(".apd-mode");if(!e)return;const i=Number(e.dataset.mode);this.danmuku.config({mode:i}),this.reset()}),this.lifecycle.proxy(n,"click",t=>{const e=t.target.closest(".apd-color");e&&(this.danmuku.config({color:e.dataset.color}),this.reset())}),this.lifecycle.proxy(r,"click",()=>this.emit()),this.lifecycle.proxy(o,"keypress",t=>{"Enter"===t.key&&(t.preventDefault(),this.emit())})}createSliders(){this.slider.opacity=this.createSlider({...this.OPACITY,container:this.template.$opacitySlider,findIndex:()=>Math.round(100*this.option.opacity),onChange:t=>{const{$opacityValue:e}=this.template;e.textContent=`${t}%`,this.danmuku.config({opacity:t/100})}}),this.slider.margin=this.createSlider({...this.MARGIN,container:this.template.$marginSlider,findIndex:()=>this.MARGIN.steps.findIndex(t=>t.value[0]===this.option.margin[0]&&t.value[1]===this.option.margin[1]),onChange:t=>{const e=this.MARGIN.steps[t];if(!e)return;const{$marginValue:i}=this.template;i.textContent=e.name,this.danmuku.config({margin:e.value})}}),this.slider.fontSize=this.createSlider({...this.FONT_SIZE,container:this.template.$fontSizeSlider,findIndex:()=>this.danmuku.fontSize,onChange:t=>{const{$fontSizeValue:e}=this.template;e.textContent=`${t}px`,t!==this.danmuku.fontSize&&this.danmuku.config({fontSize:t})}}),this.slider.speed=this.createSlider({...this.SPEED,container:this.template.$speedSlider,findIndex:()=>this.SPEED.steps.findIndex(t=>t.value===this.option.speed),onChange:t=>{const e=this.SPEED.steps[t];if(!e)return;const{$speedValue:i}=this.template;i.textContent=e.name,this.danmuku.config({speed:e.value})}})}createSlider(t){return P.call(this,t)}onFullscreen(t){if(!this.lifecycle.active)return;const{$danmuku:e,$controlsCenter:i,$mount:n}=this.template;this.outside?t?this.append(i,e):this.append(n,e):this.append(i,e)}onMouseEnter({$control:t,$panel:e}){if(!this.lifecycle.active)return;const{$player:i}=this.art.template,n=t.getBoundingClientRect(),s=e.getBoundingClientRect(),a=i.getBoundingClientRect(),r=s.width/2-n.width/2,o=a.left-(n.left-r),l=n.right+r-a.right;e.style.left=o>0?`${-r+o}px`:l>0?-r-l+"px":-r+"px"}emit(){return async function(t){const{lifecycle:e,template:{$input:i}}=t;if(!e.active)return;const n=i.value.trim();if(!n.length||t.isLock||t.emitting)return;const s={text:n,mode:t.option.mode,color:t.option.color,time:t.art.currentTime},a=t=>{e.active&&console.error("Error emitting danmuku:",t)};try{t.emitting=!0;const n=await e.wait(t.option.beforeEmit(s));if(!e.active)return;if(t.emitting=!1,!0!==n)return;if(s.border=!0,delete s.time,Promise.resolve(t.danmuku.emit(s)).catch(a),!e.active)return;i.value="",t.lock()}catch(r){a(r),e.active&&(t.emitting=!1)}}(this)}lock(){!function(t){if(!t.lifecycle.active)return;const{addClass:e}=t.utils,{$send:i}=t.template;clearTimeout(t.timer),t.isLock=!0;let n=t.option.lockTime;i.textContent=n,e(i,"apd-lock");const s=()=>{t.timer=setTimeout(()=>{t.lifecycle.active&&(0===n?t.unlock():(n-=1,i.textContent=n,s()))},1e3)};s()}(this)}unlock(){!function(t){if(clearTimeout(t.timer),t.timer=null,t.isLock=!1,!t.lifecycle.active)return;const{removeClass:e}=t.utils,{$send:i}=t.template;i.textContent="\u53d1\u9001",e(i,"apd-lock")}(this)}resize(){if(!this.lifecycle.active)return;if(this.outside)return;if(this.art.fullscreen)return;if(this.art.fullscreenWeb)return;const{$player:t,$controlsCenter:e}=this.art.template,{$danmuku:i}=this.template;this.art.widtht.dataset.color===this.option.color.toUpperCase());a&&t(a,"apd-active"),e(i,this.option.visible?"\u5173\u95ed\u5f39\u5e55":"\u6253\u5f00\u5f39\u5e55"),this.resize()}mount(t){if(!this.lifecycle.active)return;const{errorHandle:e}=this.utils,i="string"===typeof t?document.querySelector(t):t;e(i,`Can not find the mount point: ${t}`),this.append(i,this.template.$danmuku),this.template.$mount=i,this.reset()}destroy(){if(this.lifecycle.closed)return;this.lifecycle.close(),clearTimeout(this.timer),this.timer=null,this.emitting=!1,this.isLock=!1;const t=this.template.$danmuku;t?.parentElement&&t.parentElement.removeChild(t)}}function U(t){return e=>{const i=new $(e,t);let n;try{n=e.isDestroy?void 0:new _(e,i),!e.isDestroy&&i.option.heatmap&&C(e,i,i.option.heatmap)}catch(s){try{n?.destroy()}catch{}try{i.destroy()}catch{}throw s}return{name:"artplayerPluginDanmuku",emit:i.emit.bind(i),load:i.load.bind(i),config:i.config.bind(i),hide:i.hide.bind(i),show:i.show.bind(i),reset:i.reset.bind(i),mount:n?n.mount.bind(n):()=>{},get option(){return i.option},get isHide(){return i.isHide},get isStop(){return i.isStop}}}}return U.icons=_.icons,U}); +!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.artplayerPluginDanmuku=e(),define(function(){return t.artplayerPluginDanmuku})):(t="undefined"!==typeof globalThis?globalThis:t||self).artplayerPluginDanmuku=e()}(this,function(){"use strict";function t(t){return t instanceof Promise||"[object Promise]"===Object.prototype.toString.call(t)}function e(t){switch(t){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function i(t){if("string"!==typeof t)return[];const i=t.matchAll(/]*?p="(?

[^"]+)"[^>]*>(?.*?)<\/d>/gs);return Array.from(i).map(t=>{const i=t.groups.p.split(",");if(i.length>=8){return{text:t.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(i[0]),mode:e(Number(i[1])),fontSize:Number(i[2]),color:`#${Number(i[3]).toString(16)}`,timestamp:Number(i[4]),pool:Number(i[5]),userID:i[6],rowID:Number(i[7])}}return null}).filter(Boolean)}function n({data:t}){const{xml:e,id:n}=t,s=i(e);globalThis.postMessage({danmus:s,id:n})}let s=0;function a(t,{signal:a,onCancel:r}={}){return new Promise((o,l)=>{let d,h,c,p=!1;const u=++s,m=()=>g(void 0,function(t){if(void 0!==t?.reason)return t.reason;const e=new Error("Bilibili Danmu loading cancelled");return e.name="AbortError",e}(a));function f(){let t,e=!1;try{if(d){const t=d;d=void 0,t.onmessage=null,t.onerror=null,t.onmessageerror=null,t.terminate()}}catch(i){t=i,e=!0}if(void 0!==h){const n=h;h=void 0;try{URL.revokeObjectURL(n)}catch(i){e||(t=i),e=!0}}if(e)throw t}function g(t,e){if(p)return;p=!0;let i=arguments.length>1;a?.removeEventListener("abort",m),c?.();try{f()}catch(n){i||(e=n),i=!0}i?l(e):o(t)}function y(t,e){if(!p){console.error("Error parsing Bilibili Danmu:",e);try{g(i(t))}catch(n){g(void 0,n)}}}a?.aborted?m():(a?.addEventListener("abort",m),c=r?.(m),p?c?.():async function(){const s=a?await fetch(t,{signal:a}):await fetch(t);if(p)return;const r=await s.text();if(!p)try{const t=`\n ${e.toString()}\n ${i.toString()}\n onmessage = ${n.toString()}\n `;if(h=URL.createObjectURL(new Blob([t],{type:"application/javascript"})),p)return void f();if(d=new Worker(h),p)return void f();d.onmessage=t=>{if(p||t.data?.id!==u)return;const{danmus:e}=t.data;Array.isArray(e)?g(e):g(void 0,new Error("Invalid Bilibili Danmu worker response"))},d.onerror=t=>{t.preventDefault?.(),y(r,t.error||t)},d.onmessageerror=t=>y(r,t.error||t),d.postMessage({xml:r,id:u})}catch(o){y(r,o)}}().catch(t=>g(void 0,t)))})}const r=new WeakMap,o=Symbol("cancelled danmuku input");function l(t){return r.has(t)||r.set(t,{closed:!1,tasks:new Set,emitting:[]}),r.get(t)}function d(t){const e=l(t),i=e.emitting[e.emitting.length-1];return!e.closed&&!t.art.isDestroy&&(!i||i.active())}function h(t){const e=l(t);e.closed=!0;for(const i of[...e.tasks])i.cancel()}function c(t,e,i){const n=t.states[e]||[];for(let s=0;s{const s=n.$ref.offsetTop,a=this.owner.getLeft(n.$ref)-i,r=n.$ref.clientHeight,o=n.$ref.clientWidth,l=a+o,d=e-l,h=l/n.$restTime,c={};c.top=s,c.left=a,c.height=r,c.width=o,c.right=d,c.speed=h,c.distance=l,c.time=n.$restTime,c.mode=n.mode,t.push(c)}),t}left(t){const e=t.getBoundingClientRect();return this.owner.isRotate?e.top:e.left}makeWait(t){this.owner.setState(t,"wait"),t.$ref&&(t.$ref.style.cssText=this.owner.constructor.cssText,t.$ref.style.visibility="hidden",t.$ref.style.marginLeft="0px",t.$ref.style.transform="translateX(0px)",t.$ref.style.transition="transform 0s linear 0s",this.owner.$refs.push(t.$ref),t.$ref=null)}resize(){const{clientWidth:t}=this.owner.$player;this.owner.filter("stop",e=>{if(0===e.mode)e.$ref.style.left=`${t}px`}),this.owner.filter("emit",e=>{switch(e.$lastStartTime=Date.now(),e.mode){case 0:{const i=t+e.$ref.clientWidth;e.$ref.style.left=`${t}px`,e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`;break}}})}continue(){const{clientWidth:t}=this.owner.$player;return this.owner.filter("stop",e=>{switch(this.owner.setState(e,"emit"),e.$lastStartTime=Date.now(),e.mode){case 0:{const i=t+e.$ref.clientWidth;e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`;break}}}),this}suspend(){const{clientWidth:t}=this.owner.$player;return this.owner.filter("emit",e=>{switch(this.owner.setState(e,"stop"),e.mode){case 0:{const i=t-(this.owner.getLeft(e.$ref)-this.owner.getLeft(this.owner.$player));e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition="transform 0s linear 0s";break}}}),this}prepare(t,e){const i=this.owner,n=i.$ref;return e.danmu=t,e.ref=n,t.$ref=n,n.textContent=t.text,i.$danmuku.appendChild(n),n.style.opacity=i.option.opacity,n.style.fontSize=`${i.fontSize}px`,n.style.color=t.color,n.style.border=t.border?`1px solid ${t.color}`:null,n.style.backgroundColor=t.border?"rgb(0 0 0 / 50%)":null,i.utils.setStyles(n,t.style),n}place(t,e,i,n,s){switch(e.style.top=`${i}px`,e.style.visibility="visible",e.dataset.mode=t.mode,e.dataset.id=t.id||"",t.mode){case 0:e.style.left=`${s}px`,e.style.marginLeft="0px",e.style.transform=`translateX(${-n}px)`,e.style.transition=`transform ${t.$restTime}s linear 0s`;break;case 1:case 2:e.style.left="50%",e.style.marginLeft=`-${e.clientWidth/2}px`}}release(t){const{danmu:e,ref:i}=t;i&&e.$ref===i&&(i.style.cssText=this.owner.constructor.cssText,i.style.visibility="hidden",this.owner.$refs.push(i),e.$ref=null),t.ref=null}clear(){this.destroy(),this.owner.$refs=[],this.owner.$danmuku.textContent=""}destroy(){for(const t of this.nodes)t.parentElement&&t.parentElement.removeChild(t);for(const t of this.owner.queue)t.$ref=null;this.owner.$refs.length=0,this.nodes.clear()}}function u({target:t,visibles:e,clientWidth:i,clientHeight:n,marginBottom:s,marginTop:a,antiOverlap:r}){const o=n-s,l=e.filter(e=>e.mode===t.mode&&e.top<=o).sort((t,e)=>t.top-e.top);if(0===l.length)return 2===t.mode?o-t.height:a;if(l.unshift({type:"top",top:0,left:0,right:0,height:a,width:i,speed:0,distance:i}),l.push({type:"bottom",top:o,left:0,right:0,height:s,width:i,speed:0,distance:i}),2===t.mode)for(let h=l.length-2;h>=0;h-=1){const e=l[h],i=l[h+1],n=e.top+e.height;if(i.top-n>=t.height)return i.top-t.height}else for(let h=1;h=t.height)return n}const d=[];for(let h=1;h{const i=Math.min(...e.map(t=>t.right)),n=Math.min(...t.map(t=>t.right));return i*e.length-n*t.length});break;case 1:case 2:d.sort((t,e)=>{const i=Math.max(...e.map(t=>t.width));return Math.max(...t.map(t=>t.width))*t.length-i*e.length})}return d[0][0].top}switch(t.mode){case 0:{const e=d.find(e=>e.every(e=>{if(ie.time}));return e&&e[0]?e[0].top:void 0}case 1:case 2:return}}class m{constructor(){this.rows=new Set,this.waiting=new Set,this.visibility=()=>this.clear()}begin(t){void 0===this.time&&this.capture(t,[],t.art.currentTime)}capture(t,e,i){const n=t.$player.ownerDocument;if(n!==this.document&&(this.document?.removeEventListener("visibilitychange",this.visibility),this.document=n,n?.addEventListener("visibilitychange",this.visibility),this.clear()),!Number.isFinite(i)||"hidden"===n?.visibilityState||t.art.video?.seeking)return this.clear(),e;const s=this.time,a=this.rows,r=this.waiting;if(this.time=i,this.rows=new Set(e),this.waiting=new Set(t.states.wait),void 0===s||i<=s)return e;const o=t.states.wait.filter(t=>r.has(t)&&!a.has(t)&&t.time>=s-.1&&t.time"ready"===t.$state),...o,...e.filter(t=>"ready"!==t.$state)]}clear(){this.time=void 0,this.rows.clear(),this.waiting.clear()}destroy(){this.document?.removeEventListener("visibilitychange",this.visibility),this.document=void 0,this.clear()}}class f{constructor(){this.pending=new Set,this.reserved=new Set}capture(t,e){for(const i of t)this.reserved.has(i)||e.has(i)||this.pending.add(i)}take(){const t=[],e=[];for(const n of this.pending)"ready"===n.$state?t.push(n):"wait"===n.$state&&e.push(n);this.pending.clear();const i=[...t,...e];return this.reserved=new Set(i),i}complete(){this.reserved.clear()}clear(){this.pending.clear(),this.reserved.clear()}}const g=Symbol("cancelled danmuku frame");class y{constructor(t){this.owner=t,this.generation=0,this.starts=0,this.frame=null,this.operation=null,this.closed=!1,this.running=!1,this.fault=!1,this.failedItems=new Set,this.buffer=new f,this.sampling=new m}active(t){const e=this.owner;return!this.closed&&!this.fault&&!e.art.isDestroy&&!e.isStop&&!e.isHide&&t.generation===this.generation}release(t){this.owner.renderer.release(t)}invalidate(){if(this.generation++,null!==this.frame&&window.cancelAnimationFrame(this.frame),this.frame=null,this.owner.timer=null,this.operation){const t=this.operation;this.operation=null,t.cancel(),this.release(t)}this.owner.workerClient?.cancel(),this.failedItems.clear(),this.buffer.clear(),this.sampling.clear()}report(t){try{this.owner.art.emit("artplayerPluginDanmuku:error",t)}catch(e){console.warn("Failed to report danmuku scheduling error:",e)}}fail(t){this.closed||this.fault||(this.fault=!0,this.invalidate(),this.report(t))}recover(){if(!this.closed&&!this.owner.art.isDestroy&&(this.failedItems.clear(),this.fault))try{this.owner.workerClient?.dispose(),this.owner.createWorker(),this.fault=!1}catch(t){this.report(t)}}schedule(){const t=this.owner;if(!(!this.running||this.closed||this.fault||t.art.isDestroy||t.isStop)){try{const e=t.art.video;(t.art.playing||!1===e?.paused&&!e.ended&&e.readyState>2)&&!t.isHide&&this.sampling.begin(t)}catch(e){return void this.fail(e)}null===this.frame&&(this.frame=window.requestAnimationFrame(()=>{if(this.frame=null,t.timer=null,this.closed||this.fault||t.isStop||t.art.isDestroy)return;const i=this.generation;try{if(t.art.playing&&!t.isHide){t.filter("emit",e=>{const i=Date.now();e.$restTime-=(i-e.$lastStartTime)/1e3,e.$lastStartTime=i,e.$restTime<=0&&t.makeWait(e)});const e=t.art.currentTime,n=t.readys;if(i!==this.generation)return;this.buffer.capture(this.sampling.capture(t,n,e),this.failedItems)}}catch(e){return void(i===this.generation&&this.fail(e))}if(this.schedule(),this.operation||!t.art.playing||t.isHide)return;const n=this.buffer.take();if(!n.length)return;let s;const a=new Promise(t=>s=()=>t(g)),r={generation:this.generation,cancel:s,wait:t=>Promise.race([t,a]),ref:null};return this.operation=r,this.run(r,n).catch(t=>{this.active(r)&&this.fail(t)}).finally(()=>{this.release(r),this.operation===r&&(this.operation=null,this.buffer.complete())})}),t.timer=this.frame)}}async run(t,e){const i=this.owner;if(i.art.playing&&this.active(t))for(const s of e){if(!this.active(t))return;if(this.failedItems.has(s))continue;let e;try{e=await t.wait(i.option.beforeVisible(s))}catch(n){if(!this.active(t))return;this.failedItems.add(s),this.report(n);continue}if(!this.active(t))return;if(!e)continue;const{clientWidth:a,clientHeight:r}=i.$player,o=i.renderer.prepare(s,t);if(!this.active(t))return;s.$lastStartTime=Date.now(),s.$restTime=i.speed;const l=a+o.clientWidth,d={type:"getDanmuTop",target:{mode:s.mode,height:o.clientHeight,speed:l/s.$restTime},visibles:i.visibles,antiOverlap:i.option.antiOverlap,clientWidth:a,clientHeight:r,marginBottom:i.marginBottom,marginTop:i.marginTop},h=d.antiOverlap?await t.wait(i.postMessage(d)):{result:u(d)},c="symbol"===typeof h?void 0:h.result;if(!this.active(t)||s.$ref!==o)return;void 0!==c?(s.$lastStartTime=Date.now(),i.setState(s,"emit"),i.renderer.place(s,o,c,l,a),t.ref=null,i.art.emit("artplayerPluginDanmuku:visible",s)):(i.setState(s,"ready"),this.release(t))}}destroy(){this.closed=!0,this.invalidate(),this.sampling.destroy()}}let v=0;class w{constructor(t,e){this.pending=new Map,this.closed=!1,this.failed=!1,this.onFailure=e,this.worker=t();try{this.worker.onmessage=t=>{const e=this.pending.get(t.data?.id);e&&(this.pending.delete(t.data.id),e.resolve(t.data))},this.worker.onerror=t=>{t.preventDefault?.(),this.fail(t.error||t)},this.worker.onmessageerror=t=>this.fail(t.error||t)}catch(i){try{this.dispose()}catch{}throw i}}request(t){t.id=++v;const{id:e}=t;return this.closed||this.failed?Promise.resolve({id:e,result:void 0}):new Promise((i,n)=>{this.pending.set(e,{resolve:i,reject:n});try{this.worker.postMessage(t)}catch(s){this.fail(s)}})}fail(t){if(!this.closed&&!this.failed){this.failed=!0;for(const e of this.pending.values())e.reject(t);this.pending.clear();try{this.dispose()}catch{}this.onFailure(t)}}cancel(){for(const[t,e]of this.pending)e.resolve({id:t,result:void 0});this.pending.clear()}dispose(){if(this.closed)return;this.closed=!0,this.cancel();let t,e=!1;const i=i=>{try{i()}catch(n){e||(t=n),e=!0}};for(const n of["onmessage","onerror","onmessageerror"])i(()=>this.worker[n]=null);if(i(()=>this.worker.terminate()),e)throw t}}const k='/*!\n * artplayer-plugin-danmuku.js v6.0.0\n * Github: https://github.com/zhw2590582/ArtPlayer\n * (c) 2017-2026 Harvey Zhao\n * Released under the MIT License.\n */\nfunction t({target:t,visibles:e,clientWidth:i,clientHeight:h,marginBottom:n,marginTop:o,antiOverlap:s}){const r=h-n,p=e.filter(e=>e.mode===t.mode&&e.top<=r).sort((t,e)=>t.top-e.top);if(0===p.length)return 2===t.mode?r-t.height:o;if(p.unshift({type:"top",top:0,left:0,right:0,height:o,width:i,speed:0,distance:i}),p.push({type:"bottom",top:r,left:0,right:0,height:n,width:i,speed:0,distance:i}),2===t.mode)for(let g=p.length-2;g>=0;g-=1){const e=p[g],i=p[g+1],h=e.top+e.height;if(i.top-h>=t.height)return i.top-t.height}else for(let g=1;g=t.height)return h}const a=[];for(let g=1;g{const i=Math.min(...e.map(t=>t.right)),h=Math.min(...t.map(t=>t.right));return i*e.length-h*t.length});break;case 1:case 2:a.sort((t,e)=>{const i=Math.max(...e.map(t=>t.width));return Math.max(...t.map(t=>t.width))*t.length-i*e.length})}return a[0][0].top}switch(t.mode){case 0:{const e=a.find(e=>e.every(e=>{if(ie.time}));return e&&e[0]?e[0].top:void 0}case 1:case 2:return}}onmessage=e=>{const{data:i}=e;if(!i.id||!i.type)return;const h=(0,{getDanmuTop:t}[i.type])(i);globalThis.postMessage({result:h,id:i.id})};\n',x="undefined"!==typeof self&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",k],{type:"text/javascript;charset=utf-8"});function b(t){let e;try{if(e=x&&(self.URL||self.webkitURL).createObjectURL(x),!e)throw"";const i=new Worker(e,{type:"module",name:t?.name});return i.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(e)}),i}catch(i){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(k),{type:"module",name:t?.name})}}class ${constructor(t,e){const{constructor:i,template:n}=t;this.utils=i.utils,this.validator=i.validator,this.$danmuku=n.$danmuku,this.$player=n.$player,this.art=t,this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.worker=null,this.workerClient=null,this.renderer=new p(this),this.scheduler=new y(this),this.option=$.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.reset=this.reset.bind(this),this.resize=this.resize.bind(this),this.destroy=this.destroy.bind(this),this.seek=this.seek.bind(this),d(this),t.on("destroy",this.destroy);try{if(this.config(e,!0),!d(this))return;this.createWorker()}catch(s){throw t.off("destroy",this.destroy),h(this),this.scheduler.destroy(),s}t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("resize",this.resize),t.on("video:seeking",this.seek),this.load().catch(t=>console.warn("Failed to load initial danmuku:",t))}static get option(){return{danmuku:[],speed:5,margin:[10,"25%"],opacity:1,color:"#FFFFFF",mode:0,modes:[0,1,2],fontSize:25,antiOverlap:!0,synchronousPlayback:!1,mount:void 0,heatmap:!1,width:512,points:[],filter:()=>!0,beforeEmit:()=>!0,beforeVisible:()=>!0,visible:!0,emitter:!0,maxLength:200,lockTime:5,theme:"dark",OPACITY:{},FONT_SIZE:{},MARGIN:{},SPEED:{},COLOR:[]}}static get scheme(){return{danmuku:"array|function|string|promise",speed:"number",margin:"array",opacity:"number",color:"string",mode:"number",modes:"array",fontSize:"number|string",antiOverlap:"boolean",synchronousPlayback:"boolean",mount:"?htmldivelement|string",heatmap:"object|boolean",width:"number",points:"array",filter:"function",beforeEmit:"function",beforeVisible:"function",visible:"boolean",emitter:"boolean",maxLength:"number",lockTime:"number",theme:"string",OPACITY:"object",FONT_SIZE:"object",MARGIN:"object",SPEED:"object",COLOR:"array"}}static get cssText(){return'\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 '}get isRotate(){return this.art.plugins?.autoOrientation?.state}get marginTop(){const{clamp:t}=this.utils,e=this.option.margin[0],{clientHeight:i}=this.$player;if("number"===typeof e)return t(e,0,i);if("string"===typeof e&&e.endsWith("%")){return t(i*(Number.parseFloat(e)/100),0,i)}return $.option.margin[0]}get marginBottom(){const{clamp:t}=this.utils,e=this.option.margin[1],{clientHeight:i}=this.$player;if("number"===typeof e)return t(e,0,i);if("string"===typeof e&&e.endsWith("%")){return t(i*(Number.parseFloat(e)/100),0,i)}return $.option.margin[1]}get fontSize(){const{clamp:t}=this.utils,{clientHeight:e}=this.$player,i=this.option.fontSize;if("number"===typeof i)return Math.round(t(i,12,e));if("string"===typeof i&&i.endsWith("%")){const n=Number.parseFloat(i)/100;return Math.round(t(e*n,12,e))}return $.option.fontSize}get $ref(){return this.renderer.acquire()}get readys(){return function(t){const{currentTime:e}=t.art,i=[];return c(t,"ready",t=>i.push(t)),c(t,"wait",t=>{e+.1>=t.time&&t.time>=e-.1&&i.push(t)}),i}(this)}get visibles(){return this.renderer.visibles}get speed(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}async load(e){const{errorHandle:i}=this.utils,n=function(t,e){const i=l(t);if(e)for(const o of[...i.tasks])o.replace&&o.cancel();let n,s=i.closed||t.art.isDestroy;const a=new Promise(t=>n=t),r=new Set,d="function"===typeof AbortController?new AbortController:void 0,h={replace:e,signal:d?.signal,active:()=>!s&&!i.closed&&!t.art.isDestroy,onCancel:t=>h.active()?(r.add(t),()=>r.delete(t)):(t(),()=>{}),cancel(){if(!s){s=!0,n(o),d?.abort();for(const t of[...r])t();r.clear()}},wait:t=>Promise.race([t,a]),emit(e){i.emitting.push(h);try{return t.emit(e)}finally{i.emitting.pop()}},finish(){i.tasks.delete(h),r.clear()}};return s?n(o):i.tasks.add(h),h}(this,void 0===e);try{if(!n.active())return this;const s=function(e,i){return"function"===typeof e?{asynchronous:!0,value:e()}:t(e)?{asynchronous:!0,value:e}:"string"===typeof e?{asynchronous:!0,value:a(e,i)}:{asynchronous:!1,value:Array.isArray(e)?e:[]}}(e||this.option.danmuku,n),r=s.asynchronous?await n.wait(s.value):s.value;if(!n.active())return this;i(Array.isArray(r),"Danmuku need return an array as result");const o=r;if(void 0===e){if(this.reset(),!n.active())return this;this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.renderer.clear()}for(let t=0;t{const i=a[e],n=r[e];return"function"===typeof i||"function"===typeof n||t(i)||t(n)?i!==n:JSON.stringify(i)!==JSON.stringify(n)}))&&!i)return this;const o=function(t,e,{defaults:i,validate:n,clamp:s,mount:a}){const r=Object.assign({},i,t,e);return n(r),r.mode=s(r.mode,0,2),r.speed=s(r.speed,1,10),r.opacity=s(r.opacity,0,1),r.lockTime=s(r.lockTime,1,60),r.maxLength=s(r.maxLength,1,1e3),r.mount=r.mount||a,r}(this.option,e,{defaults:$.option,validate:t=>this.validator(t,$.scheme),clamp:n,mount:s});if(!d(this))return this;const l=this.option.beforeVisible!==o.beforeVisible;return this.option=o,l&&(this.scheduler.invalidate(),this.scheduler.schedule()),e.fontSize&&(this.reset(),!d(this))||(this.option.visible?this.show():this.hide(),d(this)&&this.art.emit("artplayerPluginDanmuku:config",this.option)),this}getLeft(t){return this.renderer.left(t)}postMessage(t={}){return this.workerClient.request(t)}createWorker(){this.workerClient=new w(()=>new b,t=>this.scheduler.fail(t)),this.worker=this.workerClient.worker}filter(t,e){return c(this,t,e)}setState(t,e){!function(t,e,i){t.states[e.$state]=t.states[e.$state].filter(t=>t!==e),e.$state=i,e.$ref&&(e.$ref.dataset.state=i),t.states[i].push(e)}(this,t,e)}makeWait(t){this.renderer.makeWait(t)}update(){return this.scheduler.running=!0,this.scheduler.schedule(),this}resize(){this.renderer.resize()}continue(){return this.renderer.continue(),this}suspend(){return this.renderer.suspend(),this}stop(){return this.isStop=!0,this.scheduler.running=!1,this.scheduler.invalidate(),this.suspend(),this.art.emit("artplayerPluginDanmuku:stop"),this}start(){if(this.scheduler.closed||this.art.isDestroy)return this;const t=++this.scheduler.starts,e=this.scheduler.generation;this.isStop=!1,this.scheduler.recover();return this.scheduler.closed||this.art.isDestroy||this.isStop||this.scheduler.fault||e!==this.scheduler.generation||t!==this.scheduler.starts||(this.continue(),this.update(),this.art.emit("artplayerPluginDanmuku:start")),this}reset(){return this.scheduler.invalidate(),this.queue.forEach(t=>this.makeWait(t)),this.art.emit("artplayerPluginDanmuku:reset"),this.scheduler.recover(),this.scheduler.schedule(),this}seek(){this.scheduler.invalidate(),this.scheduler.schedule()}show(){return this.isHide=!1,this.$danmuku.style.opacity=1,this.option.visible=!0,this.art.emit("artplayerPluginDanmuku:show"),this}hide(){return this.isHide=!0,this.scheduler.invalidate(),this.$danmuku.style.opacity=0,this.option.visible=!1,this.art.emit("artplayerPluginDanmuku:hide"),this.scheduler.schedule(),this}destroy(){h(this),this.scheduler.destroy();try{try{this.stop()}finally{this.workerClient?.dispose()}}finally{this.renderer.destroy(),this.art.off("video:play",this.start),this.art.off("video:playing",this.start),this.art.off("video:pause",this.stop),this.art.off("video:waiting",this.stop),this.art.off("resize",this.resize),this.art.off("video:seeking",this.seek),this.art.off("destroy",this.destroy),this.art.emit("artplayerPluginDanmuku:destroy")}}}const M=4294967295;function S(t,e){let i=0,n=t.length;for(;iNumber.isFinite(t)&&t>0))return null;const r={xMin:0,xMax:t,yMin:0,yMax:128,scale:.25,opacity:.2,minHeight:Math.floor(.05*e),sampling:Math.max(1,Math.floor(t/100)),smoothing:.2,flattening:.2},o=Object.assign({},"object"===typeof s?s:{}),l=Object.assign({},r,o);for(const b of Object.keys(r))Number.isFinite(l[b])||(l[b]=r[b]);if(l.sampling<=0&&(l.sampling=r.sampling),l.xMin===l.xMax||l.yMin===l.yMax)return null;const d=Array.isArray(a)&&a.length>0,h=d?[...a]:function(t,e,i,n){if(!Number.isFinite(e)||e<=0||!Number.isFinite(i)||i<=0||!Number.isFinite(n)||n<=0||Math.floor(e/n)+1>M)return[];const s=t.map(t=>t.time).filter(t=>"number"===typeof t&&!Number.isNaN(t)).sort((t,e)=>t-e),a=[],r=i/e;if(!Number.isFinite(r))return[];for(let o=0;o<=e;o+=n){if(a.length>=M||o+n===o)return[];const t=o*r,e=(o+n)*r;a.push([o,S(s,e)-S(s,t)])}return a}(n,t,i,l.sampling);if(!h.length||!h.every(t=>Array.isArray(t)&&Number.isFinite(t[0])&&Number.isFinite(t[1])))return null;const c=h[h.length-1];if(c[0]!==t){if(h.length===M)return null;h.push([t,c[1]])}let p=1/0,u=-1/0;for(const b of h)p=Math.min(p,b[1]),u=Math.max(u,b[1]);const m=(p+u)/2;for(const b of h){const t=b[1];b[1]=t*(t>m?1+l.scale:1-l.scale)+l.minHeight}const f=!d&&!Number.isFinite(o.yMin)&&!Number.isFinite(o.yMax);let g=0;for(const b of h)g=Math.max(g,b[1]);const y=f&&g>r.yMax/4;y&&(l.yMax=4*g);const v=t=>y?Math.min(e,Math.max(.75*e,t)):t,w=(t,e,i,n)=>{const s=function(t,e){const i=e[0]-t[0],n=e[1]-t[1];return{length:Math.sqrt(i**2+n**2),angle:Math.atan2(n,i)}}(e||t,i||t),a=z(Math.cos(s.angle)*l.flattening,0,1,1,0),r=s.angle*a+(n?Math.PI:0),o=s.length*l.smoothing;return[t[0]+Math.cos(r)*o,v(t[1]+Math.sin(r)*o)]},k=h.map(i=>[z(i[0],l.xMin,l.xMax,0,t),v(z(i[1],l.yMin,l.yMax,e,0))]);if(!k.every(t=>t.every(Number.isFinite)))return null;const x=k.map((t,i,n)=>{if(0===i)return`M ${n[n.length-1][0]},${e} L ${t[0]},${e} L ${t[0]},${t[1]}`;const s=w(n[i-1],n[i-2],t),a=w(t,n[i-1],n[i+1],!0);return`C ${s[0]},${s[1]} ${a[0]},${a[1]} ${t[0]},${t[1]}${i===n.length-1?" z":""}`}).join(" ");return/NaN|Infinity/u.test(x)?null:{path:x,opacity:l.opacity,width:t,height:e}}let F=0;function C(t,e,i){if(t.isDestroy)return;const{query:n}=t.constructor.utils;let s;const a=[];let r,o,l,d=!1;const h=()=>!d&&!t.isDestroy;function c(e,i){const n=i;a.push([e,n]),t.on(e,n)}function p(e){if(d)return;let i;d=!0,o=null,l=null;let n=!1;const s=t=>{try{t()}catch(e){n||(i=e),n=!0}};for(const[r,o]of a.splice(0))s(()=>t.off(r,o));if(e&&r&&t.controls.heatmap===r&&s(()=>t.controls.remove("heatmap")),r=void 0,n)throw i}function u(t){h()&&o&&l&&(o.setAttribute("offset",100*t+"%"),l.setAttribute("offset",100*t+"%"))}function m(a){try{!function(a=[]){if(!h())return;o=null,l=null;const d=r;if(d.innerHTML="",t.option.isLive)return;const c=E({width:d.offsetWidth,height:d.offsetHeight,duration:t.duration,queue:e.queue,option:i,points:a});if(!c||!h())return;const p=d.ownerDocument;for(s||(s=p?"heatmap-solids":"heatmap-solids-"+ ++F);p?.getElementById(s);)s="heatmap-solids-"+ ++F;d.innerHTML=`\n \n \n \n \n \n \n \n \n \n \n \n `,o=n("#heatmap-start",d),l=n("#heatmap-stop",d),u(t.played)}(a)}catch(d){try{p(!0)}catch{}throw d}}c("destroy",()=>p(!0));try{t.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},beforeUnmount(){p(!1)},mounted(e){if(r=e,d)return t.controls.heatmap===e&&t.controls.remove("heatmap"),void(r=void 0);h()?(c("video:timeupdate",()=>u(t.played)),c("setBar",(t,e)=>{"played"===t&&u(e)}),c("ready",()=>m()),c("resize",()=>m()),c("artplayerPluginDanmuku:loaded",()=>m()),c("artplayerPluginDanmuku:points",t=>m(t))):p(!0)}})}catch(f){try{p(!0)}catch{}throw f}return()=>p(!0)}const D=new WeakMap;class T{constructor(t){this.art=t,this.closed=!1,this.disposers=new Set,this.cancelled=new Promise(t=>this.cancel=t)}get active(){return!this.closed&&!this.art.isDestroy}own(t){this.closed?t():this.disposers.add(t)}write(t,e,i,n=i=>t[e]=i){const s=t;if(!this.active)return;const a=()=>"function"===typeof s.getPropertyPriority?s.getPropertyPriority(e):void 0;let r=D.get(s);r||(r=new Map,D.set(s,r));let o=r.get(e);o||(o={original:s[e],present:e in s||void 0!==s[e],priority:a(),owners:new Map,apply:n},r.set(e,o)),o.owners.has(this)||this.own(()=>{const t=[...o.owners.keys()],i=t[t.length-1]===this;if(o.owners.delete(this),i&&s[e]===o.last&&a()===o.lastPriority){const t=[...o.owners.values()];t.length?(o.apply(t[t.length-1]),o.last=s[e],o.lastPriority=a()):void 0!==o.priority?s.setProperty(e,o.original,o.priority):o.present?o.apply(o.original):delete s[e]}o.owners.size||(r.delete(e),r.size||D.delete(s))}),o.owners.delete(this),o.owners.set(this,i),o.apply(i),o.last=s[e],o.lastPriority=a()}on(t,e){if(!this.active)return;const i=this;function n(...t){if(i.active)return e.apply(this,t)}const s=()=>this.art.off(t,n);this.own(s);try{this.art.on(t,n),this.active||s()}catch(a){throw this.release(s),a}}proxy(t,e,i){if(!this.active)return;const n=this;function s(...t){if(n.active)return i.apply(this,t)}let a;const r=()=>{if("function"===typeof a){const t=this.art.events;"function"===typeof t?.remove&&t.destroyEvents?.has(a)?t.remove(a):a()}else t.removeEventListener?.(e,s)};this.own(r);try{a=this.art.proxy(t,e,s),this.active||r()}catch(o){throw this.release(r),o}}wait(t){return Promise.race([t,this.cancelled])}release(t){try{t()}catch(e){console.warn("Failed to dispose danmuku setting resource:",e)}}close(){if(!this.closed){this.closed=!0,this.cancel();for(const t of this.disposers)this.release(t);this.disposers.clear()}}}function P({min:t,max:e,container:i,findIndex:n,onChange:s,steps:a=[]}){const{lifecycle:r}=this;if(!r.active)return{reset(){}};const{query:o,clamp:l,setStyle:d}=this.utils;d(i,"touch-action","none"),i.innerHTML=`\n

\n
\n ${a.map(()=>'
').join("")}\n
\n
\n
\n
\n
\n ${a.map(t=>t.hide?"":`
${t.name}
`).join("")}\n
\n `;const h=o(".apd-slider-dot",i),c=o(".apd-slider-progress",i);let p=!1;function u(i){if(!r.active)return;if(void 0===i&&(i=n()),ie)return;const o=(i-t)/(e-t);h.style.left=100*o+"%",0===a.length&&(c.style.width=h.style.left),s(i)}function m(n){const{top:s,height:a,left:r,width:o}=i.getBoundingClientRect();if(this.art.isRotate){const i=l(n.clientY-s,0,a);u(Math.round(i/a*(e-t)+t))}else{const i=l(n.clientX-r,0,o);u(Math.round(i/o*(e-t)+t))}}return r.own(()=>p=!1),r.proxy(i,"click",t=>{m.call(this,t)}),r.proxy(i,"pointerdown",t=>{p=0===t.button}),r.on("document:pointermove",t=>{p&&m.call(this,t)}),r.on("document:pointerup",t=>{p&&(p=!1,m.call(this,t))}),{reset:u}}const L='',A='',H='',O='',N='',V='',q='',I='',j='',B='',R='',Z='';function W(){const{option:t}=this;return`\n
\n ${R}${B}\n
\n
\n ${H}\n
\n
\n
\n \u6309\u7c7b\u578b\u5c4f\u853d\n
\n
\n ${O}${N}\n
\u6eda\u52a8
\n
\n
\n ${V}${q}\n
\u9876\u90e8
\n
\n
\n ${I}${j}\n
\u5e95\u90e8
\n
\n
\n
\n
\n
\n ${A}${L}\n \u9632\u6b62\u5f39\u5e55\u91cd\u53e0\n
\n
\n ${A}${L}\n \u540c\u6b65\u89c6\u9891\u901f\u5ea6\n
\n
\n
\n \u4e0d\u900f\u660e\u5ea6\n
\n
\u672a\u77e5
\n
\n
\n \u663e\u793a\u533a\u57df\n
\n
\u672a\u77e5
\n
\n
\n \u5f39\u5e55\u5b57\u53f7\n
\n
\u672a\u77e5
\n
\n
\n \u5f39\u5e55\u901f\u5ea6\n
\n
\u672a\u77e5
\n
\n
\n
\n
\n
\n
\n ${Z}\n
\n
\n
\n \u6a21\u5f0f\n
\n
\n ${N}\n
\u6eda\u52a8
\n
\n
\n ${q}\n
\u9876\u90e8
\n
\n
\n ${j}\n
\u5e95\u90e8
\n
\n
\n
\n
\n \u989c\u8272\n
\n ${this.COLOR.map(t=>`
`).join("")}\n
\n
\n
\n
\n
\n \n
\u53d1\u9001
\n
\n `}if("undefined"!==typeof document){const t="artplayer-plugin-danmuku",e=Symbol.for("artplayer-plugin-danmuku.pending-style"),i=document;let n=document.getElementById(t)||i[e];if(!n)if(n=document.createElement("style"),n.id=t,"loading"===document.readyState){i[e]=n;const s=()=>{document.removeEventListener("DOMContentLoaded",s),i[e]===n&&delete i[e];const a=document.getElementById(t);a?a.textContent=n.textContent:(document.head||document.documentElement).appendChild(n)};document.addEventListener("DOMContentLoaded",s,{once:!0})}else(document.head||document.documentElement).appendChild(n);n.textContent='.artplayer-plugin-danmuku{display:flex;position:relative;z-index:99;align-items:center;justify-content:center;font-size:12px;height:32px;width:100%;color:#fff;font-weight:300;flex-shrink:0;gap:10px}.artplayer-plugin-danmuku .apd-icon{cursor:pointer;opacity:.75;transition:all .2s ease;fill:#fff}.artplayer-plugin-danmuku .apd-icon:hover{opacity:1}.artplayer-plugin-danmuku .apd-config{display:flex;position:relative}.artplayer-plugin-danmuku .apd-config .apd-config-panel{position:absolute;bottom:24px;left:0;width:320px;padding:10px;opacity:0;pointer-events:none}.artplayer-plugin-danmuku .apd-config .apd-config-panel .apd-config-panel-inner{width:100%;border-radius:3px;background-color:#000000d9;padding:10px}.artplayer-plugin-danmuku .apd-config:hover .apd-config-panel{opacity:100;pointer-events:all}.artplayer-plugin-danmuku .apd-config-mode,.artplayer-plugin-danmuku .apd-config-slider,.artplayer-plugin-danmuku .apd-config-other,.artplayer-plugin-danmuku .apd-style-mode{margin-bottom:15px}.artplayer-plugin-danmuku .apd-modes{display:flex;align-items:center;margin-top:5px;gap:20px}.artplayer-plugin-danmuku .apd-modes .apd-mode{cursor:pointer;text-align:center}.artplayer-plugin-danmuku .apd-modes .apd-mode:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-config-slider{display:flex;align-items:center;gap:12px}.artplayer-plugin-danmuku .apd-config-slider .apd-value{width:32px;text-align:right}.artplayer-plugin-danmuku .apd-slider{position:relative;flex:1;display:flex;height:20px;align-items:center;justify-content:center;cursor:pointer}.artplayer-plugin-danmuku .apd-slider .apd-slider-line{position:relative;height:2px;width:100%;overflow:hidden;border-radius:3px;background-color:#ffffff40}.artplayer-plugin-danmuku .apd-slider .apd-slider-points{position:absolute;inset:0;display:flex;align-items:center;justify-content:space-between}.artplayer-plugin-danmuku .apd-slider .apd-slider-points .apd-slider-point{width:2px;height:2px;border-radius:50%;background-color:#ffffff80}.artplayer-plugin-danmuku .apd-slider .apd-slider-progress{width:0%;height:100%;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-slider .apd-slider-dot{position:absolute;transform:translate(-6px);left:0%;width:12px;height:12px;border-radius:50%;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps{display:flex;align-items:center;justify-content:space-between;position:absolute;bottom:-12px;width:calc(100% + 32px);color:#777}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps .apd-slider-step{flex-shrink:0;width:36px;text-align:center;scale:.95}.artplayer-plugin-danmuku .apd-config-other{display:flex;align-items:center;gap:20px}.artplayer-plugin-danmuku .apd-config-other .apd-check-off,.artplayer-plugin-danmuku .apd-config-other .apd-check-on{width:16px;height:16px}.artplayer-plugin-danmuku .apd-config-other .apd-other{display:flex;align-items:center;cursor:pointer;gap:2px}.artplayer-plugin-danmuku .apd-config-other .apd-other:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-emitter{display:flex;flex:1;align-items:center;height:100%;background-color:#ffffff40;border-radius:5px}.artplayer-plugin-danmuku .apd-style{position:relative;display:flex;align-items:center;justify-content:center}.artplayer-plugin-danmuku .apd-style .apd-style-panel{position:absolute;bottom:24px;left:0;width:200px;padding:10px;opacity:0;pointer-events:none}.artplayer-plugin-danmuku .apd-style .apd-style-panel .apd-style-panel-inner{width:100%;border-radius:3px;background-color:#000000d9;padding:10px}.artplayer-plugin-danmuku .apd-style:hover .apd-style-panel{opacity:100;pointer-events:all}.artplayer-plugin-danmuku .apd-colors{display:flex;flex-wrap:wrap;margin-top:5px;gap:8px}.artplayer-plugin-danmuku .apd-colors .apd-color{width:16px;height:16px;border-radius:2px;cursor:pointer}.artplayer-plugin-danmuku .apd-colors .apd-color.apd-active{border:1px solid black;box-shadow:0 0 0 1px #fff}.artplayer-plugin-danmuku .apd-input{outline:none;height:100%;flex:1;min-width:0;width:auto;border:none;line-height:1;color:#fff;background-color:transparent}.artplayer-plugin-danmuku .apd-input::placeholder{color:#ffffff80}.artplayer-plugin-danmuku .apd-send{display:flex;align-items:center;justify-content:center;height:100%;width:60px;flex-shrink:0;cursor:pointer;text-shadow:none;border-top-right-radius:5px;border-bottom-right-radius:5px;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-send.apd-lock{cursor:not-allowed;color:#666;background-color:#e7e7e7}.art-controls-center .apd-emitter{width:260px;flex:none}.art-fullscreen .artplayer-plugin-danmuku,.art-fullscreen-web .artplayer-plugin-danmuku{height:38px;gap:16px}.art-fullscreen .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen-web .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-on,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-on{width:28px;height:28px}.art-fullscreen .artplayer-plugin-danmuku .apd-emitter,.art-fullscreen-web .artplayer-plugin-danmuku .apd-emitter{width:400px;flex:none}.art-video-player>.artplayer-plugin-danmuku{position:absolute;left:0;right:0;bottom:-40px;padding:0 10px}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[data-danmuku-emitter=false] .apd-emitter{display:none!important}[data-danmuku-emitter=false] .art-controls-center .artplayer-plugin-danmuku{justify-content:flex-end;gap:18px}[data-danmuku-emitter=false].art-fullscreen .art-controls-center .artplayer-plugin-danmuku,[data-danmuku-emitter=false].art-fullscreen-web .art-controls-center .artplayer-plugin-danmuku{gap:24px}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-icon{fill:#333}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-emitter{background-color:#f1f2f3}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input{color:#000}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:#0000004d}[data-danmuku-visible=false] .apd-toggle-off{display:block}[data-danmuku-visible=false] .apd-toggle-on,[data-danmuku-visible=true] .apd-toggle-off{display:none}[data-danmuku-visible=true] .apd-toggle-on{display:block}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-on{display:none}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-off,[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-on{display:block}[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-off,[data-danmuku-sync-video=false] .apd-sync-video .apd-check-on{display:none}[data-danmuku-sync-video=false] .apd-sync-video .apd-check-off,[data-danmuku-sync-video=true] .apd-sync-video .apd-check-on{display:block}[data-danmuku-sync-video=true] .apd-sync-video .apd-check-off{display:none}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-off{display:block}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-on{display:none}[data-danmuku-mode0=false] .art-danmuku [data-mode="0"]{opacity:0!important}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-off{display:none}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-on{display:block}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"]{color:#00a1d6}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"] path{fill:#00a1d6}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-off{display:block}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-on{display:none}[data-danmuku-mode1=false] .art-danmuku [data-mode="1"]{opacity:0!important}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-off{display:none}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-on{display:block}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"]{color:#00a1d6}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"] path{fill:#00a1d6}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-off{display:block}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-on{display:none}[data-danmuku-mode2=false] .art-danmuku [data-mode="2"]{opacity:0!important}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-off{display:none}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-on{display:block}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"]{color:#00a1d6}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"] path{fill:#00a1d6}'}class _{constructor(t,e){this.art=t,this.danmuku=e,this.utils=t.constructor.utils;const{setStyle:i}=this.utils,{$controlsCenter:n}=t.template;this.template={$controlsCenter:n,$mount:n,$danmuku:null,$toggle:null,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel:null,$styleModes:null,$colors:null,$opacitySlider:null,$opacityValue:null,$marginSlider:null,$marginValue:null,$fontSizeSlider:null,$fontSizeValue:null,$speedSlider:null,$speedValue:null,$input:null,$send:null},this.slider={opacity:null,margin:null,fontSize:null,speed:null},this.emitting=!1,this.isLock=!1,this.timer=null,this.lifecycle=new T(t),this.destroy=this.destroy.bind(this),this.lifecycle.own(()=>t.off("destroy",this.destroy));try{if(t.on("destroy",this.destroy),!this.lifecycle.active)return;if(this.lifecycle.write(n.style,"display","flex",t=>i(n,"display",t)),this.createTemplate(),!this.lifecycle.active)return;if(this.createSliders(),!this.lifecycle.active)return;if(this.createEvents(),this.mount(this.option.mount),!this.lifecycle.active)return;this.lifecycle.on("resize",()=>this.resize()),this.lifecycle.on("fullscreen",t=>this.onFullscreen(t)),this.lifecycle.on("fullscreenWeb",t=>this.onFullscreen(t)),this.lifecycle.proxy(this.template.$config,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$config,$panel:this.template.$configPanel})}),this.lifecycle.proxy(this.template.$style,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$style,$panel:this.template.$stylePanel})})}catch(s){try{this.destroy()}catch(a){console.warn("Failed to roll back danmuku setting:",a)}throw s}}static get icons(){return{$on:R,$off:B,$config:H,$style:Z,$mode_0_off:O,$mode_0_on:N,$mode_1_off:V,$mode_1_on:q,$mode_2_off:I,$mode_2_on:j,$check_on:A,$check_off:L}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){return W.call(this)}get OPACITY(){return{min:0,max:100,steps:[],...this.option.OPACITY}}get FONT_SIZE(){return{min:12,max:120,steps:[],...this.option.FONT_SIZE}}get MARGIN(){return{min:0,max:3,steps:[{name:"1/4",value:[10,"75%"]},{name:"\u534a\u5c4f",value:[10,"50%"]},{name:"3/4",value:[10,"25%"]},{name:"\u6ee1\u5c4f",value:[10,10]}],...this.option.MARGIN}}get SPEED(){return{min:0,max:4,steps:[{name:"\u6781\u6162",value:10},{name:"\u8f83\u6162",value:7.5,hide:!0},{name:"\u9002\u4e2d",value:5},{name:"\u8f83\u5feb",value:2.5,hide:!0},{name:"\u6781\u5feb",value:1}],...this.option.SPEED}}get COLOR(){return this.option.COLOR.length?this.option.COLOR:["#FE0302","#FF7204","#FFAA02","#FFD302","#FFFF00","#A0EE00","#00CD00","#019899","#4266BE","#89D5FF","#CC0273","#222222","#9B9B9B","#FFFFFF"]}query(t){const{query:e}=this.utils,{$danmuku:i}=this.template;return e(t,i)}append(t,e){if(!this.lifecycle.active)return;const{append:i}=this.utils;[...t.children].includes(e)||i(t,e)}setData(t,e){if(!this.lifecycle.active)return;const{$player:i}=this.art.template,{$mount:n}=this.template;this.lifecycle.write(i.dataset,t,e),this.outside&&this.lifecycle.write(n.dataset,t,e)}createTemplate(){const{createElement:t,tooltip:e}=this.utils,i=t("div");this.template.$danmuku=i,i.className="artplayer-plugin-danmuku",i.innerHTML=this.TEMPLATE,this.template.$toggle=this.query(".apd-toggle"),this.template.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),this.template.$styleModes=this.query(".apd-style-mode .apd-modes"),this.template.$colors=this.query(".apd-colors"),this.template.$antiOverlap=this.query(".apd-anti-overlap"),this.template.$syncVideo=this.query(".apd-sync-video"),this.template.$opacitySlider=this.query(".apd-config-opacity .apd-slider"),this.template.$opacityValue=this.query(".apd-config-opacity .apd-value"),this.template.$marginSlider=this.query(".apd-config-margin .apd-slider"),this.template.$marginValue=this.query(".apd-config-margin .apd-value"),this.template.$fontSizeSlider=this.query(".apd-config-fontSize .apd-slider"),this.template.$fontSizeValue=this.query(".apd-config-fontSize .apd-value"),this.template.$speedSlider=this.query(".apd-config-speed .apd-slider"),this.template.$speedValue=this.query(".apd-config-speed .apd-value"),this.template.$input=this.query(".apd-input"),this.template.$send=this.query(".apd-send");const{$toggle:n}=this.template;this.lifecycle.on("artplayerPluginDanmuku:show",()=>{e(n,"\u5173\u95ed\u5f39\u5e55")}),this.lifecycle.on("artplayerPluginDanmuku:hide",()=>{e(n,"\u6253\u5f00\u5f39\u5e55")})}createEvents(){const{$toggle:t,$configModes:e,$styleModes:i,$colors:n,$antiOverlap:s,$syncVideo:a,$send:r,$input:o}=this.template;this.lifecycle.proxy(t,"click",()=>{this.danmuku.config({visible:!this.option.visible}),this.reset()}),this.lifecycle.proxy(e,"click",t=>{const e=t.target.closest(".apd-mode");if(!e)return;const i=Number(e.dataset.mode);this.option.modes.includes(i)?this.danmuku.config({modes:this.option.modes.filter(t=>t!==i)}):this.danmuku.config({modes:[...this.option.modes,i]}),this.reset()}),this.lifecycle.proxy(s,"click",()=>{this.danmuku.config({antiOverlap:!this.option.antiOverlap}),this.reset()}),this.lifecycle.proxy(a,"click",()=>{this.danmuku.config({synchronousPlayback:!this.option.synchronousPlayback}),this.reset()}),this.lifecycle.proxy(i,"click",t=>{const e=t.target.closest(".apd-mode");if(!e)return;const i=Number(e.dataset.mode);this.danmuku.config({mode:i}),this.reset()}),this.lifecycle.proxy(n,"click",t=>{const e=t.target.closest(".apd-color");e&&(this.danmuku.config({color:e.dataset.color}),this.reset())}),this.lifecycle.proxy(r,"click",()=>this.emit()),this.lifecycle.proxy(o,"keypress",t=>{"Enter"===t.key&&(t.preventDefault(),this.emit())})}createSliders(){this.slider.opacity=this.createSlider({...this.OPACITY,container:this.template.$opacitySlider,findIndex:()=>Math.round(100*this.option.opacity),onChange:t=>{const{$opacityValue:e}=this.template;e.textContent=`${t}%`,this.danmuku.config({opacity:t/100})}}),this.slider.margin=this.createSlider({...this.MARGIN,container:this.template.$marginSlider,findIndex:()=>this.MARGIN.steps.findIndex(t=>t.value[0]===this.option.margin[0]&&t.value[1]===this.option.margin[1]),onChange:t=>{const e=this.MARGIN.steps[t];if(!e)return;const{$marginValue:i}=this.template;i.textContent=e.name,this.danmuku.config({margin:e.value})}}),this.slider.fontSize=this.createSlider({...this.FONT_SIZE,container:this.template.$fontSizeSlider,findIndex:()=>this.danmuku.fontSize,onChange:t=>{const{$fontSizeValue:e}=this.template;e.textContent=`${t}px`,t!==this.danmuku.fontSize&&this.danmuku.config({fontSize:t})}}),this.slider.speed=this.createSlider({...this.SPEED,container:this.template.$speedSlider,findIndex:()=>this.SPEED.steps.findIndex(t=>t.value===this.option.speed),onChange:t=>{const e=this.SPEED.steps[t];if(!e)return;const{$speedValue:i}=this.template;i.textContent=e.name,this.danmuku.config({speed:e.value})}})}createSlider(t){return P.call(this,t)}onFullscreen(t){if(!this.lifecycle.active)return;const{$danmuku:e,$controlsCenter:i,$mount:n}=this.template;this.outside?t?this.append(i,e):this.append(n,e):this.append(i,e)}onMouseEnter({$control:t,$panel:e}){if(!this.lifecycle.active)return;const{$player:i}=this.art.template,n=t.getBoundingClientRect(),s=e.getBoundingClientRect(),a=i.getBoundingClientRect(),r=s.width/2-n.width/2,o=a.left-(n.left-r),l=n.right+r-a.right;e.style.left=o>0?`${-r+o}px`:l>0?-r-l+"px":-r+"px"}emit(){return async function(t){const{lifecycle:e,template:{$input:i}}=t;if(!e.active)return;const n=i.value.trim();if(!n.length||t.isLock||t.emitting)return;const s={text:n,mode:t.option.mode,color:t.option.color,time:t.art.currentTime},a=t=>{e.active&&console.error("Error emitting danmuku:",t)};try{t.emitting=!0;const n=await e.wait(t.option.beforeEmit(s));if(!e.active)return;if(t.emitting=!1,!0!==n)return;if(s.border=!0,delete s.time,Promise.resolve(t.danmuku.emit(s)).catch(a),!e.active)return;i.value="",t.lock()}catch(r){a(r),e.active&&(t.emitting=!1)}}(this)}lock(){!function(t){if(!t.lifecycle.active)return;const{addClass:e}=t.utils,{$send:i}=t.template;clearTimeout(t.timer),t.isLock=!0;let n=t.option.lockTime;i.textContent=n,e(i,"apd-lock");const s=()=>{t.timer=setTimeout(()=>{t.lifecycle.active&&(0===n?t.unlock():(n-=1,i.textContent=n,s()))},1e3)};s()}(this)}unlock(){!function(t){if(clearTimeout(t.timer),t.timer=null,t.isLock=!1,!t.lifecycle.active)return;const{removeClass:e}=t.utils,{$send:i}=t.template;i.textContent="\u53d1\u9001",e(i,"apd-lock")}(this)}resize(){if(!this.lifecycle.active)return;if(this.outside)return;if(this.art.fullscreen)return;if(this.art.fullscreenWeb)return;const{$player:t,$controlsCenter:e}=this.art.template,{$danmuku:i}=this.template;this.art.widtht.dataset.color===this.option.color.toUpperCase());a&&t(a,"apd-active"),e(i,this.option.visible?"\u5173\u95ed\u5f39\u5e55":"\u6253\u5f00\u5f39\u5e55"),this.resize()}mount(t){if(!this.lifecycle.active)return;const{errorHandle:e}=this.utils,i="string"===typeof t?document.querySelector(t):t;e(i,`Can not find the mount point: ${t}`),this.append(i,this.template.$danmuku),this.template.$mount=i,this.reset()}destroy(){if(this.lifecycle.closed)return;this.lifecycle.close(),clearTimeout(this.timer),this.timer=null,this.emitting=!1,this.isLock=!1;const t=this.template.$danmuku;t?.parentElement&&t.parentElement.removeChild(t)}}function U(t){return e=>{const i=new $(e,t);let n;try{n=e.isDestroy?void 0:new _(e,i),!e.isDestroy&&i.option.heatmap&&C(e,i,i.option.heatmap)}catch(s){try{n?.destroy()}catch{}try{i.destroy()}catch{}throw s}return{name:"artplayerPluginDanmuku",emit:i.emit.bind(i),load:i.load.bind(i),config:i.config.bind(i),hide:i.hide.bind(i),show:i.show.bind(i),reset:i.reset.bind(i),mount:n?n.mount.bind(n):()=>{},get option(){return i.option},get isHide(){return i.isHide},get isStop(){return i.isStop}}}}return U.icons=_.icons,U}); diff --git a/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js b/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js index 2631ffe2e..4dfae27cc 100644 --- a/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js +++ b/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js @@ -1,7 +1,7 @@ /*! - * artplayer-plugin-danmuku.js v5.3.0 + * artplayer-plugin-danmuku.js v6.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. */ -!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.artplayerPluginDanmuku=e(),define(function(){return t.artplayerPluginDanmuku})):(t="undefined"!==typeof globalThis?globalThis:t||self).artplayerPluginDanmuku=e()}(this,function(){"use strict";var t=Object.defineProperty,e=Object.defineProperties,i=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,s=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,r=Math.pow,o=(e,i,n)=>i in e?t(e,i,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[i]=n,l=(t,e)=>{for(var i in e||(e={}))s.call(e,i)&&o(t,i,e[i]);if(n)for(var i of n(e))a.call(e,i)&&o(t,i,e[i]);return t},d=(t,n)=>e(t,i(n)),h=(t,e,i)=>new Promise((n,s)=>{var a=t=>{try{o(i.next(t))}catch(e){s(e)}},r=t=>{try{o(i.throw(t))}catch(e){s(e)}},o=t=>t.done?n(t.value):Promise.resolve(t.value).then(a,r);o((i=i.apply(t,e)).next())});function c(t){return t instanceof Promise||"[object Promise]"===Object.prototype.toString.call(t)}function p(t){switch(t){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function u(t){if("string"!==typeof t)return[];const e=new RegExp(']*?p="(?

[^"]+)"[^>]*>(?.*?)<\\/d>',"gs"),i=t.matchAll(e);return Array.from(i).map(t=>{const e=t.groups.p.split(",");if(e.length>=8){return{text:t.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(e[0]),mode:p(Number(e[1])),fontSize:Number(e[2]),color:`#${Number(e[3]).toString(16)}`,timestamp:Number(e[4]),pool:Number(e[5]),userID:e[6],rowID:Number(e[7])}}return null}).filter(Boolean)}function m({data:t}){const{xml:e,id:i}=t,n=u(e);globalThis.postMessage({danmus:n,id:i})}let f=0;function g(t,{signal:e,onCancel:i}={}){return new Promise((n,s)=>{let a,r,o,l=!1;const d=++f,c=()=>y(void 0,function(t){if(void 0!==(null==t?void 0:t.reason))return t.reason;const e=new Error("Bilibili Danmu loading cancelled");return e.name="AbortError",e}(e));function g(){let t,e=!1;try{if(a){const t=a;a=void 0,t.onmessage=null,t.onerror=null,t.onmessageerror=null,t.terminate()}}catch(i){t=i,e=!0}if(void 0!==r){const n=r;r=void 0;try{URL.revokeObjectURL(n)}catch(i){e||(t=i),e=!0}}if(e)throw t}function y(t,i){if(l)return;l=!0;let a=arguments.length>1;null==e||e.removeEventListener("abort",c),null==o||o();try{g()}catch(r){a||(i=r),a=!0}a?s(i):n(t)}function v(t,e){if(!l){console.error("Error parsing Bilibili Danmu:",e);try{y(u(t))}catch(i){y(void 0,i)}}}(null==e?void 0:e.aborted)?c():(null==e||e.addEventListener("abort",c),o=null==i?void 0:i(c),l?null==o||o():function(){return h(this,null,function*(){const i=e?yield fetch(t,{signal:e}):yield fetch(t);if(l)return;const n=yield i.text();if(!l)try{const t=`\n ${p.toString()}\n ${u.toString()}\n onmessage = ${m.toString()}\n `;if(r=URL.createObjectURL(new Blob([t],{type:"application/javascript"})),l)return void g();if(a=new Worker(r),l)return void g();a.onmessage=t=>{var e;if(l||(null==(e=t.data)?void 0:e.id)!==d)return;const{danmus:i}=t.data;Array.isArray(i)?y(i):y(void 0,new Error("Invalid Bilibili Danmu worker response"))},a.onerror=t=>{var e;null==(e=t.preventDefault)||e.call(t),v(n,t.error||t)},a.onmessageerror=t=>v(n,t.error||t),a.postMessage({xml:n,id:d})}catch(s){v(n,s)}})}().catch(t=>y(void 0,t)))})}const y=new WeakMap,v=Symbol("cancelled danmuku input");function w(t){return y.has(t)||y.set(t,{closed:!1,tasks:new Set,emitting:[]}),y.get(t)}function k(t){const e=w(t),i=e.emitting[e.emitting.length-1];return!e.closed&&!t.art.isDestroy&&(!i||i.active())}function x(t){const e=w(t);e.closed=!0;for(const i of[...e.tasks])i.cancel()}function b(t,e,i){const n=t.states[e]||[];for(let s=0;s{const s=n.$ref.offsetTop,a=this.owner.getLeft(n.$ref)-i,r=n.$ref.clientHeight,o=n.$ref.clientWidth,l=a+o,d=e-l,h=l/n.$restTime,c={};c.top=s,c.left=a,c.height=r,c.width=o,c.right=d,c.speed=h,c.distance=l,c.time=n.$restTime,c.mode=n.mode,t.push(c)}),t}left(t){const e=t.getBoundingClientRect();return this.owner.isRotate?e.top:e.left}makeWait(t){this.owner.setState(t,"wait"),t.$ref&&(t.$ref.style.cssText=this.owner.constructor.cssText,t.$ref.style.visibility="hidden",t.$ref.style.marginLeft="0px",t.$ref.style.transform="translateX(0px)",t.$ref.style.transition="transform 0s linear 0s",this.owner.$refs.push(t.$ref),t.$ref=null)}resize(){const{clientWidth:t}=this.owner.$player;this.owner.filter("stop",e=>{if(0===e.mode)e.$ref.style.left=`${t}px`}),this.owner.filter("emit",e=>{switch(e.$lastStartTime=Date.now(),e.mode){case 0:{const i=t+e.$ref.clientWidth;e.$ref.style.left=`${t}px`,e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`;break}}})}continue(){const{clientWidth:t}=this.owner.$player;return this.owner.filter("stop",e=>{switch(this.owner.setState(e,"emit"),e.$lastStartTime=Date.now(),e.mode){case 0:{const i=t+e.$ref.clientWidth;e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`;break}}}),this}suspend(){const{clientWidth:t}=this.owner.$player;return this.owner.filter("emit",e=>{switch(this.owner.setState(e,"stop"),e.mode){case 0:{const i=t-(this.owner.getLeft(e.$ref)-this.owner.getLeft(this.owner.$player));e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition="transform 0s linear 0s";break}}}),this}prepare(t,e){const i=this.owner,n=i.$ref;return e.danmu=t,e.ref=n,t.$ref=n,n.textContent=t.text,i.$danmuku.appendChild(n),n.style.opacity=i.option.opacity,n.style.fontSize=`${i.fontSize}px`,n.style.color=t.color,n.style.border=t.border?`1px solid ${t.color}`:null,n.style.backgroundColor=t.border?"rgb(0 0 0 / 50%)":null,i.utils.setStyles(n,t.style),n}place(t,e,i,n,s){switch(e.style.top=`${i}px`,e.style.visibility="visible",e.dataset.mode=t.mode,e.dataset.id=t.id||"",t.mode){case 0:e.style.left=`${s}px`,e.style.marginLeft="0px",e.style.transform=`translateX(${-n}px)`,e.style.transition=`transform ${t.$restTime}s linear 0s`;break;case 1:case 2:e.style.left="50%",e.style.marginLeft=`-${e.clientWidth/2}px`}}release(t){const{danmu:e,ref:i}=t;i&&e.$ref===i&&(i.style.cssText=this.owner.constructor.cssText,i.style.visibility="hidden",this.owner.$refs.push(i),e.$ref=null),t.ref=null}clear(){this.destroy(),this.owner.$refs=[],this.owner.$danmuku.textContent=""}destroy(){for(const t of this.nodes)t.parentElement&&t.parentElement.removeChild(t);for(const t of this.owner.queue)t.$ref=null;this.owner.$refs.length=0,this.nodes.clear()}}function M({target:t,visibles:e,clientWidth:i,clientHeight:n,marginBottom:s,marginTop:a,antiOverlap:r}){const o=n-s,l=e.filter(e=>e.mode===t.mode&&e.top<=o).sort((t,e)=>t.top-e.top);if(0===l.length)return 2===t.mode?o-t.height:a;if(l.unshift({type:"top",top:0,left:0,right:0,height:a,width:i,speed:0,distance:i}),l.push({type:"bottom",top:o,left:0,right:0,height:s,width:i,speed:0,distance:i}),2===t.mode)for(let h=l.length-2;h>=0;h-=1){const e=l[h],i=l[h+1],n=e.top+e.height;if(i.top-n>=t.height)return i.top-t.height}else for(let h=1;h=t.height)return n}const d=[];for(let h=1;h{const i=Math.min(...e.map(t=>t.right)),n=Math.min(...t.map(t=>t.right));return i*e.length-n*t.length});break;case 1:case 2:d.sort((t,e)=>{const i=Math.max(...e.map(t=>t.width));return Math.max(...t.map(t=>t.width))*t.length-i*e.length})}return d[0][0].top}switch(t.mode){case 0:{const e=d.find(e=>e.every(e=>{if(ie.time}));return e&&e[0]?e[0].top:void 0}case 1:case 2:return}}class S{constructor(){this.rows=new Set,this.waiting=new Set,this.visibility=()=>this.clear()}begin(t){void 0===this.time&&this.capture(t,[],t.art.currentTime)}capture(t,e,i){var n,s;const a=t.$player.ownerDocument;if(a!==this.document&&(null==(n=this.document)||n.removeEventListener("visibilitychange",this.visibility),this.document=a,null==a||a.addEventListener("visibilitychange",this.visibility),this.clear()),!Number.isFinite(i)||"hidden"===(null==a?void 0:a.visibilityState)||(null==(s=t.art.video)?void 0:s.seeking))return this.clear(),e;const r=this.time,o=this.rows,l=this.waiting;if(this.time=i,this.rows=new Set(e),this.waiting=new Set(t.states.wait),void 0===r||i<=r)return e;const d=t.states.wait.filter(t=>l.has(t)&&!o.has(t)&&t.time>=r-.1&&t.time"ready"===t.$state),...d,...e.filter(t=>"ready"!==t.$state)]}clear(){this.time=void 0,this.rows.clear(),this.waiting.clear()}destroy(){var t;null==(t=this.document)||t.removeEventListener("visibilitychange",this.visibility),this.document=void 0,this.clear()}}class z{constructor(){this.pending=new Set,this.reserved=new Set}capture(t,e){for(const i of t)this.reserved.has(i)||e.has(i)||this.pending.add(i)}take(){const t=[],e=[];for(const n of this.pending)"ready"===n.$state?t.push(n):"wait"===n.$state&&e.push(n);this.pending.clear();const i=[...t,...e];return this.reserved=new Set(i),i}complete(){this.reserved.clear()}clear(){this.pending.clear(),this.reserved.clear()}}const E=Symbol("cancelled danmuku frame");class F{constructor(t){this.owner=t,this.generation=0,this.starts=0,this.frame=null,this.operation=null,this.closed=!1,this.running=!1,this.fault=!1,this.failedItems=new Set,this.buffer=new z,this.sampling=new S}active(t){const e=this.owner;return!this.closed&&!this.fault&&!e.art.isDestroy&&!e.isStop&&!e.isHide&&t.generation===this.generation}release(t){this.owner.renderer.release(t)}invalidate(){var t;if(this.generation++,null!==this.frame&&window.cancelAnimationFrame(this.frame),this.frame=null,this.owner.timer=null,this.operation){const t=this.operation;this.operation=null,t.cancel(),this.release(t)}null==(t=this.owner.workerClient)||t.cancel(),this.failedItems.clear(),this.buffer.clear(),this.sampling.clear()}report(t){try{this.owner.art.emit("artplayerPluginDanmuku:error",t)}catch(e){console.warn("Failed to report danmuku scheduling error:",e)}}fail(t){this.closed||this.fault||(this.fault=!0,this.invalidate(),this.report(t))}recover(){var t;if(!this.closed&&!this.owner.art.isDestroy&&(this.failedItems.clear(),this.fault))try{null==(t=this.owner.workerClient)||t.dispose(),this.owner.createWorker(),this.fault=!1}catch(e){this.report(e)}}schedule(){const t=this.owner;if(!(!this.running||this.closed||this.fault||t.art.isDestroy||t.isStop)){try{const e=t.art.video;(t.art.playing||!1===(null==e?void 0:e.paused)&&!e.ended&&e.readyState>2)&&!t.isHide&&this.sampling.begin(t)}catch(e){return void this.fail(e)}null===this.frame&&(this.frame=window.requestAnimationFrame(()=>{if(this.frame=null,t.timer=null,this.closed||this.fault||t.isStop||t.art.isDestroy)return;const i=this.generation;try{if(t.art.playing&&!t.isHide){t.filter("emit",e=>{const i=Date.now();e.$restTime-=(i-e.$lastStartTime)/1e3,e.$lastStartTime=i,e.$restTime<=0&&t.makeWait(e)});const e=t.art.currentTime,n=t.readys;if(i!==this.generation)return;this.buffer.capture(this.sampling.capture(t,n,e),this.failedItems)}}catch(e){return void(i===this.generation&&this.fail(e))}if(this.schedule(),this.operation||!t.art.playing||t.isHide)return;const n=this.buffer.take();if(!n.length)return;let s;const a=new Promise(t=>s=()=>t(E)),r={generation:this.generation,cancel:s,wait:t=>Promise.race([t,a]),ref:null};return this.operation=r,this.run(r,n).catch(t=>{this.active(r)&&this.fail(t)}).finally(()=>{this.release(r),this.operation===r&&(this.operation=null,this.buffer.complete())})}),t.timer=this.frame)}}run(t,e){return h(this,null,function*(){const i=this.owner;if(i.art.playing&&this.active(t))for(const s of e){if(!this.active(t))return;if(this.failedItems.has(s))continue;let e;try{e=yield t.wait(i.option.beforeVisible(s))}catch(n){if(!this.active(t))return;this.failedItems.add(s),this.report(n);continue}if(!this.active(t))return;if(!e)continue;const{clientWidth:a,clientHeight:r}=i.$player,o=i.renderer.prepare(s,t);if(!this.active(t))return;s.$lastStartTime=Date.now(),s.$restTime=i.speed;const l=a+o.clientWidth,d={type:"getDanmuTop",target:{mode:s.mode,height:o.clientHeight,speed:l/s.$restTime},visibles:i.visibles,antiOverlap:i.option.antiOverlap,clientWidth:a,clientHeight:r,marginBottom:i.marginBottom,marginTop:i.marginTop},h=d.antiOverlap?yield t.wait(i.postMessage(d)):{result:M(d)},c="symbol"===typeof h?void 0:h.result;if(!this.active(t)||s.$ref!==o)return;void 0!==c?(s.$lastStartTime=Date.now(),i.setState(s,"emit"),i.renderer.place(s,o,c,l,a),t.ref=null,i.art.emit("artplayerPluginDanmuku:visible",s)):(i.setState(s,"ready"),this.release(t))}})}destroy(){this.closed=!0,this.invalidate(),this.sampling.destroy()}}let C=0;class D{constructor(t,e){this.pending=new Map,this.closed=!1,this.failed=!1,this.onFailure=e,this.worker=t();try{this.worker.onmessage=t=>{var e;const i=this.pending.get(null==(e=t.data)?void 0:e.id);i&&(this.pending.delete(t.data.id),i.resolve(t.data))},this.worker.onerror=t=>{var e;null==(e=t.preventDefault)||e.call(t),this.fail(t.error||t)},this.worker.onmessageerror=t=>this.fail(t.error||t)}catch(i){try{this.dispose()}catch(n){}throw i}}request(t){t.id=++C;const{id:e}=t;return this.closed||this.failed?Promise.resolve({id:e,result:void 0}):new Promise((i,n)=>{this.pending.set(e,{resolve:i,reject:n});try{this.worker.postMessage(t)}catch(s){this.fail(s)}})}fail(t){if(!this.closed&&!this.failed){this.failed=!0;for(const e of this.pending.values())e.reject(t);this.pending.clear();try{this.dispose()}catch(e){}this.onFailure(t)}}cancel(){for(const[t,e]of this.pending)e.resolve({id:t,result:void 0});this.pending.clear()}dispose(){if(this.closed)return;this.closed=!0,this.cancel();let t,e=!1;const i=i=>{try{i()}catch(n){e||(t=n),e=!0}};for(const n of["onmessage","onerror","onmessageerror"])i(()=>this.worker[n]=null);if(i(()=>this.worker.terminate()),e)throw t}}const P='/*!\n * artplayer-plugin-danmuku.js v5.3.0\n * Github: https://github.com/zhw2590582/ArtPlayer\n * (c) 2017-2026 Harvey Zhao\n * Released under the MIT License.\n */\nfunction t({target:t,visibles:e,clientWidth:i,clientHeight:h,marginBottom:n,marginTop:o,antiOverlap:s}){const r=h-n,p=e.filter(e=>e.mode===t.mode&&e.top<=r).sort((t,e)=>t.top-e.top);if(0===p.length)return 2===t.mode?r-t.height:o;if(p.unshift({type:"top",top:0,left:0,right:0,height:o,width:i,speed:0,distance:i}),p.push({type:"bottom",top:r,left:0,right:0,height:n,width:i,speed:0,distance:i}),2===t.mode)for(let g=p.length-2;g>=0;g-=1){const e=p[g],i=p[g+1],h=e.top+e.height;if(i.top-h>=t.height)return i.top-t.height}else for(let g=1;g=t.height)return h}const a=[];for(let g=1;g{const i=Math.min(...e.map(t=>t.right)),h=Math.min(...t.map(t=>t.right));return i*e.length-h*t.length});break;case 1:case 2:a.sort((t,e)=>{const i=Math.max(...e.map(t=>t.width));return Math.max(...t.map(t=>t.width))*t.length-i*e.length})}return a[0][0].top}switch(t.mode){case 0:{const e=a.find(e=>e.every(e=>{if(ie.time}));return e&&e[0]?e[0].top:void 0}case 1:case 2:return}}onmessage=e=>{const{data:i}=e;if(!i.id||!i.type)return;const h=(0,{getDanmuTop:t}[i.type])(i);globalThis.postMessage({result:h,id:i.id})};\n',T="undefined"!==typeof self&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",P],{type:"text/javascript;charset=utf-8"});function L(t){let e;try{if(e=T&&(self.URL||self.webkitURL).createObjectURL(T),!e)throw"";const i=new Worker(e,{type:"module",name:null==t?void 0:t.name});return i.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(e)}),i}catch(i){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(P),{type:"module",name:null==t?void 0:t.name})}}class O{constructor(t,e){const{constructor:i,template:n}=t;this.utils=i.utils,this.validator=i.validator,this.$danmuku=n.$danmuku,this.$player=n.$player,this.art=t,this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.worker=null,this.workerClient=null,this.renderer=new $(this),this.scheduler=new F(this),this.option=O.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.reset=this.reset.bind(this),this.resize=this.resize.bind(this),this.destroy=this.destroy.bind(this),this.seek=this.seek.bind(this),k(this),t.on("destroy",this.destroy);try{if(this.config(e,!0),!k(this))return;this.createWorker()}catch(s){throw t.off("destroy",this.destroy),x(this),this.scheduler.destroy(),s}t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("resize",this.resize),t.on("video:seeking",this.seek),this.load().catch(t=>console.warn("Failed to load initial danmuku:",t))}static get option(){return{danmuku:[],speed:5,margin:[10,"25%"],opacity:1,color:"#FFFFFF",mode:0,modes:[0,1,2],fontSize:25,antiOverlap:!0,synchronousPlayback:!1,mount:void 0,heatmap:!1,width:512,points:[],filter:()=>!0,beforeEmit:()=>!0,beforeVisible:()=>!0,visible:!0,emitter:!0,maxLength:200,lockTime:5,theme:"dark",OPACITY:{},FONT_SIZE:{},MARGIN:{},SPEED:{},COLOR:[]}}static get scheme(){return{danmuku:"array|function|string|promise",speed:"number",margin:"array",opacity:"number",color:"string",mode:"number",modes:"array",fontSize:"number|string",antiOverlap:"boolean",synchronousPlayback:"boolean",mount:"?htmldivelement|string",heatmap:"object|boolean",width:"number",points:"array",filter:"function",beforeEmit:"function",beforeVisible:"function",visible:"boolean",emitter:"boolean",maxLength:"number",lockTime:"number",theme:"string",OPACITY:"object",FONT_SIZE:"object",MARGIN:"object",SPEED:"object",COLOR:"array"}}static get cssText(){return'\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 '}get isRotate(){var t,e;return null==(e=null==(t=this.art.plugins)?void 0:t.autoOrientation)?void 0:e.state}get marginTop(){const{clamp:t}=this.utils,e=this.option.margin[0],{clientHeight:i}=this.$player;if("number"===typeof e)return t(e,0,i);if("string"===typeof e&&e.endsWith("%")){return t(i*(Number.parseFloat(e)/100),0,i)}return O.option.margin[0]}get marginBottom(){const{clamp:t}=this.utils,e=this.option.margin[1],{clientHeight:i}=this.$player;if("number"===typeof e)return t(e,0,i);if("string"===typeof e&&e.endsWith("%")){return t(i*(Number.parseFloat(e)/100),0,i)}return O.option.margin[1]}get fontSize(){const{clamp:t}=this.utils,{clientHeight:e}=this.$player,i=this.option.fontSize;if("number"===typeof i)return Math.round(t(i,12,e));if("string"===typeof i&&i.endsWith("%")){const n=Number.parseFloat(i)/100;return Math.round(t(e*n,12,e))}return O.option.fontSize}get $ref(){return this.renderer.acquire()}get readys(){return function(t){const{currentTime:e}=t.art,i=[];return b(t,"ready",t=>i.push(t)),b(t,"wait",t=>{e+.1>=t.time&&t.time>=e-.1&&i.push(t)}),i}(this)}get visibles(){return this.renderer.visibles}get speed(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}load(t){return h(this,null,function*(){const{errorHandle:e}=this.utils,i=function(t,e){const i=w(t);if(e)for(const d of[...i.tasks])d.replace&&d.cancel();let n,s=i.closed||t.art.isDestroy;const a=new Promise(t=>n=t),r=new Set,o="function"===typeof AbortController?new AbortController:void 0,l={replace:e,signal:null==o?void 0:o.signal,active:()=>!s&&!i.closed&&!t.art.isDestroy,onCancel:t=>l.active()?(r.add(t),()=>r.delete(t)):(t(),()=>{}),cancel(){if(!s){s=!0,n(v),null==o||o.abort();for(const t of[...r])t();r.clear()}},wait:t=>Promise.race([t,a]),emit(e){i.emitting.push(l);try{return t.emit(e)}finally{i.emitting.pop()}},finish(){i.tasks.delete(l),r.clear()}};return s?n(v):i.tasks.add(l),l}(this,void 0===t);try{if(!i.active())return this;const n=function(t,e){return"function"===typeof t?{asynchronous:!0,value:t()}:c(t)?{asynchronous:!0,value:t}:"string"===typeof t?{asynchronous:!0,value:g(t,e)}:{asynchronous:!1,value:Array.isArray(t)?t:[]}}(t||this.option.danmuku,i),s=n.asynchronous?yield i.wait(n.value):n.value;if(!i.active())return this;e(Array.isArray(s),"Danmuku need return an array as result");const a=s;if(void 0===t){if(this.reset(),!i.active())return this;this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.renderer.clear()}for(let t=0;t{const e=s[t],i=a[t];return"function"===typeof e||"function"===typeof i||c(e)||c(i)?e!==i:JSON.stringify(e)!==JSON.stringify(i)}))&&!e)return this;const r=function(t,e,{defaults:i,validate:n,clamp:s,mount:a}){const r=Object.assign({},i,t,e);return n(r),r.mode=s(r.mode,0,2),r.speed=s(r.speed,1,10),r.opacity=s(r.opacity,0,1),r.lockTime=s(r.lockTime,1,60),r.maxLength=s(r.maxLength,1,1e3),r.mount=r.mount||a,r}(this.option,t,{defaults:O.option,validate:t=>this.validator(t,O.scheme),clamp:i,mount:n});if(!k(this))return this;const o=this.option.beforeVisible!==r.beforeVisible;return this.option=r,o&&(this.scheduler.invalidate(),this.scheduler.schedule()),t.fontSize&&(this.reset(),!k(this))||(this.option.visible?this.show():this.hide(),k(this)&&this.art.emit("artplayerPluginDanmuku:config",this.option)),this}getLeft(t){return this.renderer.left(t)}postMessage(t={}){return this.workerClient.request(t)}createWorker(){this.workerClient=new D(()=>new L,t=>this.scheduler.fail(t)),this.worker=this.workerClient.worker}filter(t,e){return b(this,t,e)}setState(t,e){!function(t,e,i){t.states[e.$state]=t.states[e.$state].filter(t=>t!==e),e.$state=i,e.$ref&&(e.$ref.dataset.state=i),t.states[i].push(e)}(this,t,e)}makeWait(t){this.renderer.makeWait(t)}update(){return this.scheduler.running=!0,this.scheduler.schedule(),this}resize(){this.renderer.resize()}continue(){return this.renderer.continue(),this}suspend(){return this.renderer.suspend(),this}stop(){return this.isStop=!0,this.scheduler.running=!1,this.scheduler.invalidate(),this.suspend(),this.art.emit("artplayerPluginDanmuku:stop"),this}start(){if(this.scheduler.closed||this.art.isDestroy)return this;const t=++this.scheduler.starts,e=this.scheduler.generation;this.isStop=!1,this.scheduler.recover();return this.scheduler.closed||this.art.isDestroy||this.isStop||this.scheduler.fault||e!==this.scheduler.generation||t!==this.scheduler.starts||(this.continue(),this.update(),this.art.emit("artplayerPluginDanmuku:start")),this}reset(){return this.scheduler.invalidate(),this.queue.forEach(t=>this.makeWait(t)),this.art.emit("artplayerPluginDanmuku:reset"),this.scheduler.recover(),this.scheduler.schedule(),this}seek(){this.scheduler.invalidate(),this.scheduler.schedule()}show(){return this.isHide=!1,this.$danmuku.style.opacity=1,this.option.visible=!0,this.art.emit("artplayerPluginDanmuku:show"),this}hide(){return this.isHide=!0,this.scheduler.invalidate(),this.$danmuku.style.opacity=0,this.option.visible=!1,this.art.emit("artplayerPluginDanmuku:hide"),this.scheduler.schedule(),this}destroy(){var t;x(this),this.scheduler.destroy();try{try{this.stop()}finally{null==(t=this.workerClient)||t.dispose()}}finally{this.renderer.destroy(),this.art.off("video:play",this.start),this.art.off("video:playing",this.start),this.art.off("video:pause",this.stop),this.art.off("video:waiting",this.stop),this.art.off("resize",this.resize),this.art.off("video:seeking",this.seek),this.art.off("destroy",this.destroy),this.art.emit("artplayerPluginDanmuku:destroy")}}}const A=4294967295;function H(t,e){let i=0,n=t.length;for(;iNumber.isFinite(t)&&t>0))return null;const o={xMin:0,xMax:t,yMin:0,yMax:128,scale:.25,opacity:.2,minHeight:Math.floor(.05*e),sampling:Math.max(1,Math.floor(t/100)),smoothing:.2,flattening:.2},l=Object.assign({},"object"===typeof s?s:{}),d=Object.assign({},o,l);for(const r of Object.keys(o))Number.isFinite(d[r])||(d[r]=o[r]);if(d.sampling<=0&&(d.sampling=o.sampling),d.xMin===d.xMax||d.yMin===d.yMax)return null;const h=Array.isArray(a)&&a.length>0,c=h?[...a]:function(t,e,i,n){if(!Number.isFinite(e)||e<=0||!Number.isFinite(i)||i<=0||!Number.isFinite(n)||n<=0||Math.floor(e/n)+1>A)return[];const s=t.map(t=>t.time).filter(t=>"number"===typeof t&&!Number.isNaN(t)).sort((t,e)=>t-e),a=[],r=i/e;if(!Number.isFinite(r))return[];for(let o=0;o<=e;o+=n){if(a.length>=A||o+n===o)return[];const t=o*r,e=(o+n)*r;a.push([o,H(s,e)-H(s,t)])}return a}(n,t,i,d.sampling);if(!c.length||!c.every(t=>Array.isArray(t)&&Number.isFinite(t[0])&&Number.isFinite(t[1])))return null;const p=c[c.length-1];if(p[0]!==t){if(c.length===A)return null;c.push([t,p[1]])}let u=1/0,m=-1/0;for(const r of c)u=Math.min(u,r[1]),m=Math.max(m,r[1]);const f=(u+m)/2;for(const r of c){const t=r[1];r[1]=t*(t>f?1+d.scale:1-d.scale)+d.minHeight}const g=!h&&!Number.isFinite(l.yMin)&&!Number.isFinite(l.yMax);let y=0;for(const r of c)y=Math.max(y,r[1]);const v=g&&y>o.yMax/4;v&&(d.yMax=4*y);const w=t=>v?Math.min(e,Math.max(.75*e,t)):t,k=(t,e,i,n)=>{const s=function(t,e){const i=e[0]-t[0],n=e[1]-t[1];return{length:Math.sqrt(r(i,2)+r(n,2)),angle:Math.atan2(n,i)}}(e||t,i||t),a=N(Math.cos(s.angle)*d.flattening,0,1,1,0),o=s.angle*a+(n?Math.PI:0),l=s.length*d.smoothing;return[t[0]+Math.cos(o)*l,w(t[1]+Math.sin(o)*l)]},x=c.map(i=>[N(i[0],d.xMin,d.xMax,0,t),w(N(i[1],d.yMin,d.yMax,e,0))]);if(!x.every(t=>t.every(Number.isFinite)))return null;const b=x.map((t,i,n)=>{if(0===i)return`M ${n[n.length-1][0]},${e} L ${t[0]},${e} L ${t[0]},${t[1]}`;const s=k(n[i-1],n[i-2],t),a=k(t,n[i-1],n[i+1],!0);return`C ${s[0]},${s[1]} ${a[0]},${a[1]} ${t[0]},${t[1]}${i===n.length-1?" z":""}`}).join(" ");return/NaN|Infinity/u.test(b)?null:{path:b,opacity:d.opacity,width:t,height:e}}let j=0;function q(t,e,i){if(t.isDestroy)return;const{query:n}=t.constructor.utils;let s;const a=[];let r,o,l,d=!1;const h=()=>!d&&!t.isDestroy;function c(e,i){const n=i;a.push([e,n]),t.on(e,n)}function p(e){if(d)return;let i;d=!0,o=null,l=null;let n=!1;const s=t=>{try{t()}catch(e){n||(i=e),n=!0}};for(const[r,o]of a.splice(0))s(()=>t.off(r,o));if(e&&r&&t.controls.heatmap===r&&s(()=>t.controls.remove("heatmap")),r=void 0,n)throw i}function u(t){h()&&o&&l&&(o.setAttribute("offset",100*t+"%"),l.setAttribute("offset",100*t+"%"))}function m(a){try{!function(a=[]){if(!h())return;o=null,l=null;const d=r;if(d.innerHTML="",t.option.isLive)return;const c=V({width:d.offsetWidth,height:d.offsetHeight,duration:t.duration,queue:e.queue,option:i,points:a});if(!c||!h())return;const p=d.ownerDocument;for(s||(s=p?"heatmap-solids":"heatmap-solids-"+ ++j);null==p?void 0:p.getElementById(s);)s="heatmap-solids-"+ ++j;d.innerHTML=`\n \n \n \n \n \n \n \n \n \n \n \n `,o=n("#heatmap-start",d),l=n("#heatmap-stop",d),u(t.played)}(a)}catch(d){try{p(!0)}catch(c){}throw d}}c("destroy",()=>p(!0));try{t.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},beforeUnmount(){p(!1)},mounted(e){if(r=e,d)return t.controls.heatmap===e&&t.controls.remove("heatmap"),void(r=void 0);h()?(c("video:timeupdate",()=>u(t.played)),c("setBar",(t,e)=>{"played"===t&&u(e)}),c("ready",()=>m()),c("resize",()=>m()),c("artplayerPluginDanmuku:loaded",()=>m()),c("artplayerPluginDanmuku:points",t=>m(t))):p(!0)}})}catch(f){try{p(!0)}catch(g){}throw f}return()=>p(!0)}const I=new WeakMap;class B{constructor(t){this.art=t,this.closed=!1,this.disposers=new Set,this.cancelled=new Promise(t=>this.cancel=t)}get active(){return!this.closed&&!this.art.isDestroy}own(t){this.closed?t():this.disposers.add(t)}write(t,e,i,n=i=>t[e]=i){const s=t;if(!this.active)return;const a=()=>"function"===typeof s.getPropertyPriority?s.getPropertyPriority(e):void 0;let r=I.get(s);r||(r=new Map,I.set(s,r));let o=r.get(e);o||(o={original:s[e],present:e in s||void 0!==s[e],priority:a(),owners:new Map,apply:n},r.set(e,o)),o.owners.has(this)||this.own(()=>{const t=[...o.owners.keys()],i=t[t.length-1]===this;if(o.owners.delete(this),i&&s[e]===o.last&&a()===o.lastPriority){const t=[...o.owners.values()];t.length?(o.apply(t[t.length-1]),o.last=s[e],o.lastPriority=a()):void 0!==o.priority?s.setProperty(e,o.original,o.priority):o.present?o.apply(o.original):delete s[e]}o.owners.size||(r.delete(e),r.size||I.delete(s))}),o.owners.delete(this),o.owners.set(this,i),o.apply(i),o.last=s[e],o.lastPriority=a()}on(t,e){if(!this.active)return;const i=this;function n(...t){if(i.active)return e.apply(this,t)}const s=()=>this.art.off(t,n);this.own(s);try{this.art.on(t,n),this.active||s()}catch(a){throw this.release(s),a}}proxy(t,e,i){if(!this.active)return;const n=this;function s(...t){if(n.active)return i.apply(this,t)}let a;const r=()=>{var i,n;if("function"===typeof a){const t=this.art.events;"function"===typeof(null==t?void 0:t.remove)&&(null==(i=t.destroyEvents)?void 0:i.has(a))?t.remove(a):a()}else null==(n=t.removeEventListener)||n.call(t,e,s)};this.own(r);try{a=this.art.proxy(t,e,s),this.active||r()}catch(o){throw this.release(r),o}}wait(t){return Promise.race([t,this.cancelled])}release(t){try{t()}catch(e){console.warn("Failed to dispose danmuku setting resource:",e)}}close(){if(!this.closed){this.closed=!0,this.cancel();for(const t of this.disposers)this.release(t);this.disposers.clear()}}}function R({min:t,max:e,container:i,findIndex:n,onChange:s,steps:a=[]}){const{lifecycle:r}=this;if(!r.active)return{reset(){}};const{query:o,clamp:l,setStyle:d}=this.utils;d(i,"touch-action","none"),i.innerHTML=`\n

\n
\n ${a.map(()=>'
').join("")}\n
\n
\n
\n
\n
\n ${a.map(t=>t.hide?"":`
${t.name}
`).join("")}\n
\n `;const h=o(".apd-slider-dot",i),c=o(".apd-slider-progress",i);let p=!1;function u(i){if(!r.active)return;if(void 0===i&&(i=n()),ie)return;const o=(i-t)/(e-t);h.style.left=100*o+"%",0===a.length&&(c.style.width=h.style.left),s(i)}function m(n){const{top:s,height:a,left:r,width:o}=i.getBoundingClientRect();if(this.art.isRotate){const i=l(n.clientY-s,0,a);u(Math.round(i/a*(e-t)+t))}else{const i=l(n.clientX-r,0,o);u(Math.round(i/o*(e-t)+t))}}return r.own(()=>p=!1),r.proxy(i,"click",t=>{m.call(this,t)}),r.proxy(i,"pointerdown",t=>{p=0===t.button}),r.on("document:pointermove",t=>{p&&m.call(this,t)}),r.on("document:pointerup",t=>{p&&(p=!1,m.call(this,t))}),{reset:u}}const Z='',W='',_='',U='',G='',X='',Y='',J='',K='',Q='',tt='',et='';function it(){const{option:t}=this;return`\n
\n ${tt}${Q}\n
\n
\n ${_}\n
\n
\n
\n \u6309\u7c7b\u578b\u5c4f\u853d\n
\n
\n ${U}${G}\n
\u6eda\u52a8
\n
\n
\n ${X}${Y}\n
\u9876\u90e8
\n
\n
\n ${J}${K}\n
\u5e95\u90e8
\n
\n
\n
\n
\n
\n ${W}${Z}\n \u9632\u6b62\u5f39\u5e55\u91cd\u53e0\n
\n
\n ${W}${Z}\n \u540c\u6b65\u89c6\u9891\u901f\u5ea6\n
\n
\n
\n \u4e0d\u900f\u660e\u5ea6\n
\n
\u672a\u77e5
\n
\n
\n \u663e\u793a\u533a\u57df\n
\n
\u672a\u77e5
\n
\n
\n \u5f39\u5e55\u5b57\u53f7\n
\n
\u672a\u77e5
\n
\n
\n \u5f39\u5e55\u901f\u5ea6\n
\n
\u672a\u77e5
\n
\n
\n
\n
\n
\n
\n ${et}\n
\n
\n
\n \u6a21\u5f0f\n
\n
\n ${G}\n
\u6eda\u52a8
\n
\n
\n ${Y}\n
\u9876\u90e8
\n
\n
\n ${K}\n
\u5e95\u90e8
\n
\n
\n
\n
\n \u989c\u8272\n
\n ${this.COLOR.map(t=>`
`).join("")}\n
\n
\n
\n
\n
\n \n
\u53d1\u9001
\n
\n `}if("undefined"!==typeof document){const t="artplayer-plugin-danmuku",e=Symbol.for("artplayer-plugin-danmuku.pending-style"),i=document;let n=document.getElementById(t)||i[e];if(!n)if(n=document.createElement("style"),n.id=t,"loading"===document.readyState){i[e]=n;const s=()=>{document.removeEventListener("DOMContentLoaded",s),i[e]===n&&delete i[e];const a=document.getElementById(t);a?a.textContent=n.textContent:(document.head||document.documentElement).appendChild(n)};document.addEventListener("DOMContentLoaded",s,{once:!0})}else(document.head||document.documentElement).appendChild(n);n.textContent='.artplayer-plugin-danmuku{display:flex;position:relative;z-index:99;align-items:center;justify-content:center;font-size:12px;height:32px;width:100%;color:#fff;font-weight:300;flex-shrink:0;gap:10px}.artplayer-plugin-danmuku .apd-icon{cursor:pointer;opacity:.75;transition:all .2s ease;fill:#fff}.artplayer-plugin-danmuku .apd-icon:hover{opacity:1}.artplayer-plugin-danmuku .apd-config{display:flex;position:relative}.artplayer-plugin-danmuku .apd-config .apd-config-panel{position:absolute;bottom:24px;left:0;width:320px;padding:10px;opacity:0;pointer-events:none}.artplayer-plugin-danmuku .apd-config .apd-config-panel .apd-config-panel-inner{width:100%;border-radius:3px;background-color:#000000d9;padding:10px}.artplayer-plugin-danmuku .apd-config:hover .apd-config-panel{opacity:100;pointer-events:all}.artplayer-plugin-danmuku .apd-config-mode,.artplayer-plugin-danmuku .apd-config-slider,.artplayer-plugin-danmuku .apd-config-other,.artplayer-plugin-danmuku .apd-style-mode{margin-bottom:15px}.artplayer-plugin-danmuku .apd-modes{display:flex;align-items:center;margin-top:5px;gap:20px}.artplayer-plugin-danmuku .apd-modes .apd-mode{cursor:pointer;text-align:center}.artplayer-plugin-danmuku .apd-modes .apd-mode:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-config-slider{display:flex;align-items:center;gap:12px}.artplayer-plugin-danmuku .apd-config-slider .apd-value{width:32px;text-align:right}.artplayer-plugin-danmuku .apd-slider{position:relative;flex:1;display:flex;height:20px;align-items:center;justify-content:center;cursor:pointer}.artplayer-plugin-danmuku .apd-slider .apd-slider-line{position:relative;height:2px;width:100%;overflow:hidden;border-radius:3px;background-color:#ffffff40}.artplayer-plugin-danmuku .apd-slider .apd-slider-points{position:absolute;inset:0;display:flex;align-items:center;justify-content:space-between}.artplayer-plugin-danmuku .apd-slider .apd-slider-points .apd-slider-point{width:2px;height:2px;border-radius:50%;background-color:#ffffff80}.artplayer-plugin-danmuku .apd-slider .apd-slider-progress{width:0%;height:100%;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-slider .apd-slider-dot{position:absolute;transform:translate(-6px);left:0%;width:12px;height:12px;border-radius:50%;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps{display:flex;align-items:center;justify-content:space-between;position:absolute;bottom:-12px;width:calc(100% + 32px);color:#777}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps .apd-slider-step{flex-shrink:0;width:36px;text-align:center;scale:.95}.artplayer-plugin-danmuku .apd-config-other{display:flex;align-items:center;gap:20px}.artplayer-plugin-danmuku .apd-config-other .apd-check-off,.artplayer-plugin-danmuku .apd-config-other .apd-check-on{width:16px;height:16px}.artplayer-plugin-danmuku .apd-config-other .apd-other{display:flex;align-items:center;cursor:pointer;gap:2px}.artplayer-plugin-danmuku .apd-config-other .apd-other:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-emitter{display:flex;flex:1;align-items:center;height:100%;background-color:#ffffff40;border-radius:5px}.artplayer-plugin-danmuku .apd-style{position:relative;display:flex;align-items:center;justify-content:center}.artplayer-plugin-danmuku .apd-style .apd-style-panel{position:absolute;bottom:24px;left:0;width:200px;padding:10px;opacity:0;pointer-events:none}.artplayer-plugin-danmuku .apd-style .apd-style-panel .apd-style-panel-inner{width:100%;border-radius:3px;background-color:#000000d9;padding:10px}.artplayer-plugin-danmuku .apd-style:hover .apd-style-panel{opacity:100;pointer-events:all}.artplayer-plugin-danmuku .apd-colors{display:flex;flex-wrap:wrap;margin-top:5px;gap:8px}.artplayer-plugin-danmuku .apd-colors .apd-color{width:16px;height:16px;border-radius:2px;cursor:pointer}.artplayer-plugin-danmuku .apd-colors .apd-color.apd-active{border:1px solid black;box-shadow:0 0 0 1px #fff}.artplayer-plugin-danmuku .apd-input{outline:none;height:100%;flex:1;min-width:0;width:auto;border:none;line-height:1;color:#fff;background-color:transparent}.artplayer-plugin-danmuku .apd-input::placeholder{color:#ffffff80}.artplayer-plugin-danmuku .apd-send{display:flex;align-items:center;justify-content:center;height:100%;width:60px;flex-shrink:0;cursor:pointer;text-shadow:none;border-top-right-radius:5px;border-bottom-right-radius:5px;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-send.apd-lock{cursor:not-allowed;color:#666;background-color:#e7e7e7}.art-controls-center .apd-emitter{width:260px;flex:none}.art-fullscreen .artplayer-plugin-danmuku,.art-fullscreen-web .artplayer-plugin-danmuku{height:38px;gap:16px}.art-fullscreen .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen-web .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-on,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-on{width:28px;height:28px}.art-fullscreen .artplayer-plugin-danmuku .apd-emitter,.art-fullscreen-web .artplayer-plugin-danmuku .apd-emitter{width:400px;flex:none}.art-video-player>.artplayer-plugin-danmuku{position:absolute;left:0;right:0;bottom:-40px;padding:0 10px}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[data-danmuku-emitter=false] .apd-emitter{display:none!important}[data-danmuku-emitter=false] .art-controls-center .artplayer-plugin-danmuku{justify-content:flex-end;gap:18px}[data-danmuku-emitter=false].art-fullscreen .art-controls-center .artplayer-plugin-danmuku,[data-danmuku-emitter=false].art-fullscreen-web .art-controls-center .artplayer-plugin-danmuku{gap:24px}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-icon{fill:#333}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-emitter{background-color:#f1f2f3}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input{color:#000}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:#0000004d}[data-danmuku-visible=false] .apd-toggle-off{display:block}[data-danmuku-visible=false] .apd-toggle-on,[data-danmuku-visible=true] .apd-toggle-off{display:none}[data-danmuku-visible=true] .apd-toggle-on{display:block}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-on{display:none}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-off,[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-on{display:block}[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-off,[data-danmuku-sync-video=false] .apd-sync-video .apd-check-on{display:none}[data-danmuku-sync-video=false] .apd-sync-video .apd-check-off,[data-danmuku-sync-video=true] .apd-sync-video .apd-check-on{display:block}[data-danmuku-sync-video=true] .apd-sync-video .apd-check-off{display:none}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-off{display:block}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-on{display:none}[data-danmuku-mode0=false] .art-danmuku [data-mode="0"]{opacity:0!important}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-off{display:none}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-on{display:block}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"]{color:#00a1d6}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"] path{fill:#00a1d6}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-off{display:block}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-on{display:none}[data-danmuku-mode1=false] .art-danmuku [data-mode="1"]{opacity:0!important}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-off{display:none}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-on{display:block}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"]{color:#00a1d6}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"] path{fill:#00a1d6}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-off{display:block}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-on{display:none}[data-danmuku-mode2=false] .art-danmuku [data-mode="2"]{opacity:0!important}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-off{display:none}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-on{display:block}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"]{color:#00a1d6}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"] path{fill:#00a1d6}'}class nt{constructor(t,e){this.art=t,this.danmuku=e,this.utils=t.constructor.utils;const{setStyle:i}=this.utils,{$controlsCenter:n}=t.template;this.template={$controlsCenter:n,$mount:n,$danmuku:null,$toggle:null,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel:null,$styleModes:null,$colors:null,$opacitySlider:null,$opacityValue:null,$marginSlider:null,$marginValue:null,$fontSizeSlider:null,$fontSizeValue:null,$speedSlider:null,$speedValue:null,$input:null,$send:null},this.slider={opacity:null,margin:null,fontSize:null,speed:null},this.emitting=!1,this.isLock=!1,this.timer=null,this.lifecycle=new B(t),this.destroy=this.destroy.bind(this),this.lifecycle.own(()=>t.off("destroy",this.destroy));try{if(t.on("destroy",this.destroy),!this.lifecycle.active)return;if(this.lifecycle.write(n.style,"display","flex",t=>i(n,"display",t)),this.createTemplate(),!this.lifecycle.active)return;if(this.createSliders(),!this.lifecycle.active)return;if(this.createEvents(),this.mount(this.option.mount),!this.lifecycle.active)return;this.lifecycle.on("resize",()=>this.resize()),this.lifecycle.on("fullscreen",t=>this.onFullscreen(t)),this.lifecycle.on("fullscreenWeb",t=>this.onFullscreen(t)),this.lifecycle.proxy(this.template.$config,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$config,$panel:this.template.$configPanel})}),this.lifecycle.proxy(this.template.$style,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$style,$panel:this.template.$stylePanel})})}catch(s){try{this.destroy()}catch(a){console.warn("Failed to roll back danmuku setting:",a)}throw s}}static get icons(){return{$on:tt,$off:Q,$config:_,$style:et,$mode_0_off:U,$mode_0_on:G,$mode_1_off:X,$mode_1_on:Y,$mode_2_off:J,$mode_2_on:K,$check_on:W,$check_off:Z}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){return it.call(this)}get OPACITY(){return l({min:0,max:100,steps:[]},this.option.OPACITY)}get FONT_SIZE(){return l({min:12,max:120,steps:[]},this.option.FONT_SIZE)}get MARGIN(){return l({min:0,max:3,steps:[{name:"1/4",value:[10,"75%"]},{name:"\u534a\u5c4f",value:[10,"50%"]},{name:"3/4",value:[10,"25%"]},{name:"\u6ee1\u5c4f",value:[10,10]}]},this.option.MARGIN)}get SPEED(){return l({min:0,max:4,steps:[{name:"\u6781\u6162",value:10},{name:"\u8f83\u6162",value:7.5,hide:!0},{name:"\u9002\u4e2d",value:5},{name:"\u8f83\u5feb",value:2.5,hide:!0},{name:"\u6781\u5feb",value:1}]},this.option.SPEED)}get COLOR(){return this.option.COLOR.length?this.option.COLOR:["#FE0302","#FF7204","#FFAA02","#FFD302","#FFFF00","#A0EE00","#00CD00","#019899","#4266BE","#89D5FF","#CC0273","#222222","#9B9B9B","#FFFFFF"]}query(t){const{query:e}=this.utils,{$danmuku:i}=this.template;return e(t,i)}append(t,e){if(!this.lifecycle.active)return;const{append:i}=this.utils;[...t.children].includes(e)||i(t,e)}setData(t,e){if(!this.lifecycle.active)return;const{$player:i}=this.art.template,{$mount:n}=this.template;this.lifecycle.write(i.dataset,t,e),this.outside&&this.lifecycle.write(n.dataset,t,e)}createTemplate(){const{createElement:t,tooltip:e}=this.utils,i=t("div");this.template.$danmuku=i,i.className="artplayer-plugin-danmuku",i.innerHTML=this.TEMPLATE,this.template.$toggle=this.query(".apd-toggle"),this.template.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),this.template.$styleModes=this.query(".apd-style-mode .apd-modes"),this.template.$colors=this.query(".apd-colors"),this.template.$antiOverlap=this.query(".apd-anti-overlap"),this.template.$syncVideo=this.query(".apd-sync-video"),this.template.$opacitySlider=this.query(".apd-config-opacity .apd-slider"),this.template.$opacityValue=this.query(".apd-config-opacity .apd-value"),this.template.$marginSlider=this.query(".apd-config-margin .apd-slider"),this.template.$marginValue=this.query(".apd-config-margin .apd-value"),this.template.$fontSizeSlider=this.query(".apd-config-fontSize .apd-slider"),this.template.$fontSizeValue=this.query(".apd-config-fontSize .apd-value"),this.template.$speedSlider=this.query(".apd-config-speed .apd-slider"),this.template.$speedValue=this.query(".apd-config-speed .apd-value"),this.template.$input=this.query(".apd-input"),this.template.$send=this.query(".apd-send");const{$toggle:n}=this.template;this.lifecycle.on("artplayerPluginDanmuku:show",()=>{e(n,"\u5173\u95ed\u5f39\u5e55")}),this.lifecycle.on("artplayerPluginDanmuku:hide",()=>{e(n,"\u6253\u5f00\u5f39\u5e55")})}createEvents(){const{$toggle:t,$configModes:e,$styleModes:i,$colors:n,$antiOverlap:s,$syncVideo:a,$send:r,$input:o}=this.template;this.lifecycle.proxy(t,"click",()=>{this.danmuku.config({visible:!this.option.visible}),this.reset()}),this.lifecycle.proxy(e,"click",t=>{const e=t.target.closest(".apd-mode");if(!e)return;const i=Number(e.dataset.mode);this.option.modes.includes(i)?this.danmuku.config({modes:this.option.modes.filter(t=>t!==i)}):this.danmuku.config({modes:[...this.option.modes,i]}),this.reset()}),this.lifecycle.proxy(s,"click",()=>{this.danmuku.config({antiOverlap:!this.option.antiOverlap}),this.reset()}),this.lifecycle.proxy(a,"click",()=>{this.danmuku.config({synchronousPlayback:!this.option.synchronousPlayback}),this.reset()}),this.lifecycle.proxy(i,"click",t=>{const e=t.target.closest(".apd-mode");if(!e)return;const i=Number(e.dataset.mode);this.danmuku.config({mode:i}),this.reset()}),this.lifecycle.proxy(n,"click",t=>{const e=t.target.closest(".apd-color");e&&(this.danmuku.config({color:e.dataset.color}),this.reset())}),this.lifecycle.proxy(r,"click",()=>this.emit()),this.lifecycle.proxy(o,"keypress",t=>{"Enter"===t.key&&(t.preventDefault(),this.emit())})}createSliders(){this.slider.opacity=this.createSlider(d(l({},this.OPACITY),{container:this.template.$opacitySlider,findIndex:()=>Math.round(100*this.option.opacity),onChange:t=>{const{$opacityValue:e}=this.template;e.textContent=`${t}%`,this.danmuku.config({opacity:t/100})}})),this.slider.margin=this.createSlider(d(l({},this.MARGIN),{container:this.template.$marginSlider,findIndex:()=>this.MARGIN.steps.findIndex(t=>t.value[0]===this.option.margin[0]&&t.value[1]===this.option.margin[1]),onChange:t=>{const e=this.MARGIN.steps[t];if(!e)return;const{$marginValue:i}=this.template;i.textContent=e.name,this.danmuku.config({margin:e.value})}})),this.slider.fontSize=this.createSlider(d(l({},this.FONT_SIZE),{container:this.template.$fontSizeSlider,findIndex:()=>this.danmuku.fontSize,onChange:t=>{const{$fontSizeValue:e}=this.template;e.textContent=`${t}px`,t!==this.danmuku.fontSize&&this.danmuku.config({fontSize:t})}})),this.slider.speed=this.createSlider(d(l({},this.SPEED),{container:this.template.$speedSlider,findIndex:()=>this.SPEED.steps.findIndex(t=>t.value===this.option.speed),onChange:t=>{const e=this.SPEED.steps[t];if(!e)return;const{$speedValue:i}=this.template;i.textContent=e.name,this.danmuku.config({speed:e.value})}}))}createSlider(t){return R.call(this,t)}onFullscreen(t){if(!this.lifecycle.active)return;const{$danmuku:e,$controlsCenter:i,$mount:n}=this.template;this.outside?t?this.append(i,e):this.append(n,e):this.append(i,e)}onMouseEnter({$control:t,$panel:e}){if(!this.lifecycle.active)return;const{$player:i}=this.art.template,n=t.getBoundingClientRect(),s=e.getBoundingClientRect(),a=i.getBoundingClientRect(),r=s.width/2-n.width/2,o=a.left-(n.left-r),l=n.right+r-a.right;e.style.left=o>0?`${-r+o}px`:l>0?-r-l+"px":-r+"px"}emit(){return function(t){return h(this,null,function*(){const{lifecycle:e,template:{$input:i}}=t;if(!e.active)return;const n=i.value.trim();if(!n.length||t.isLock||t.emitting)return;const s={text:n,mode:t.option.mode,color:t.option.color,time:t.art.currentTime},a=t=>{e.active&&console.error("Error emitting danmuku:",t)};try{t.emitting=!0;const n=yield e.wait(t.option.beforeEmit(s));if(!e.active)return;if(t.emitting=!1,!0!==n)return;if(s.border=!0,delete s.time,Promise.resolve(t.danmuku.emit(s)).catch(a),!e.active)return;i.value="",t.lock()}catch(r){a(r),e.active&&(t.emitting=!1)}})}(this)}lock(){!function(t){if(!t.lifecycle.active)return;const{addClass:e}=t.utils,{$send:i}=t.template;clearTimeout(t.timer),t.isLock=!0;let n=t.option.lockTime;i.textContent=n,e(i,"apd-lock");const s=()=>{t.timer=setTimeout(()=>{t.lifecycle.active&&(0===n?t.unlock():(n-=1,i.textContent=n,s()))},1e3)};s()}(this)}unlock(){!function(t){if(clearTimeout(t.timer),t.timer=null,t.isLock=!1,!t.lifecycle.active)return;const{removeClass:e}=t.utils,{$send:i}=t.template;i.textContent="\u53d1\u9001",e(i,"apd-lock")}(this)}resize(){if(!this.lifecycle.active)return;if(this.outside)return;if(this.art.fullscreen)return;if(this.art.fullscreenWeb)return;const{$player:t,$controlsCenter:e}=this.art.template,{$danmuku:i}=this.template;this.art.widtht.dataset.color===this.option.color.toUpperCase());a&&t(a,"apd-active"),e(i,this.option.visible?"\u5173\u95ed\u5f39\u5e55":"\u6253\u5f00\u5f39\u5e55"),this.resize()}mount(t){if(!this.lifecycle.active)return;const{errorHandle:e}=this.utils,i="string"===typeof t?document.querySelector(t):t;e(i,`Can not find the mount point: ${t}`),this.append(i,this.template.$danmuku),this.template.$mount=i,this.reset()}destroy(){if(this.lifecycle.closed)return;this.lifecycle.close(),clearTimeout(this.timer),this.timer=null,this.emitting=!1,this.isLock=!1;const t=this.template.$danmuku;(null==t?void 0:t.parentElement)&&t.parentElement.removeChild(t)}}function st(t){return e=>{const i=new O(e,t);let n;try{n=e.isDestroy?void 0:new nt(e,i),!e.isDestroy&&i.option.heatmap&&q(e,i,i.option.heatmap)}catch(s){try{null==n||n.destroy()}catch(a){}try{i.destroy()}catch(a){}throw s}return{name:"artplayerPluginDanmuku",emit:i.emit.bind(i),load:i.load.bind(i),config:i.config.bind(i),hide:i.hide.bind(i),show:i.show.bind(i),reset:i.reset.bind(i),mount:n?n.mount.bind(n):()=>{},get option(){return i.option},get isHide(){return i.isHide},get isStop(){return i.isStop}}}}return st.icons=nt.icons,st}); +!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.artplayerPluginDanmuku=e(),define(function(){return t.artplayerPluginDanmuku})):(t="undefined"!==typeof globalThis?globalThis:t||self).artplayerPluginDanmuku=e()}(this,function(){"use strict";var t=Object.defineProperty,e=Object.defineProperties,i=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,s=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,r=Math.pow,o=(e,i,n)=>i in e?t(e,i,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[i]=n,l=(t,e)=>{for(var i in e||(e={}))s.call(e,i)&&o(t,i,e[i]);if(n)for(var i of n(e))a.call(e,i)&&o(t,i,e[i]);return t},d=(t,n)=>e(t,i(n)),h=(t,e,i)=>new Promise((n,s)=>{var a=t=>{try{o(i.next(t))}catch(e){s(e)}},r=t=>{try{o(i.throw(t))}catch(e){s(e)}},o=t=>t.done?n(t.value):Promise.resolve(t.value).then(a,r);o((i=i.apply(t,e)).next())});function c(t){return t instanceof Promise||"[object Promise]"===Object.prototype.toString.call(t)}function p(t){switch(t){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function u(t){if("string"!==typeof t)return[];const e=new RegExp(']*?p="(?

[^"]+)"[^>]*>(?.*?)<\\/d>',"gs"),i=t.matchAll(e);return Array.from(i).map(t=>{const e=t.groups.p.split(",");if(e.length>=8){return{text:t.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(e[0]),mode:p(Number(e[1])),fontSize:Number(e[2]),color:`#${Number(e[3]).toString(16)}`,timestamp:Number(e[4]),pool:Number(e[5]),userID:e[6],rowID:Number(e[7])}}return null}).filter(Boolean)}function m({data:t}){const{xml:e,id:i}=t,n=u(e);globalThis.postMessage({danmus:n,id:i})}let f=0;function g(t,{signal:e,onCancel:i}={}){return new Promise((n,s)=>{let a,r,o,l=!1;const d=++f,c=()=>y(void 0,function(t){if(void 0!==(null==t?void 0:t.reason))return t.reason;const e=new Error("Bilibili Danmu loading cancelled");return e.name="AbortError",e}(e));function g(){let t,e=!1;try{if(a){const t=a;a=void 0,t.onmessage=null,t.onerror=null,t.onmessageerror=null,t.terminate()}}catch(i){t=i,e=!0}if(void 0!==r){const n=r;r=void 0;try{URL.revokeObjectURL(n)}catch(i){e||(t=i),e=!0}}if(e)throw t}function y(t,i){if(l)return;l=!0;let a=arguments.length>1;null==e||e.removeEventListener("abort",c),null==o||o();try{g()}catch(r){a||(i=r),a=!0}a?s(i):n(t)}function v(t,e){if(!l){console.error("Error parsing Bilibili Danmu:",e);try{y(u(t))}catch(i){y(void 0,i)}}}(null==e?void 0:e.aborted)?c():(null==e||e.addEventListener("abort",c),o=null==i?void 0:i(c),l?null==o||o():function(){return h(this,null,function*(){const i=e?yield fetch(t,{signal:e}):yield fetch(t);if(l)return;const n=yield i.text();if(!l)try{const t=`\n ${p.toString()}\n ${u.toString()}\n onmessage = ${m.toString()}\n `;if(r=URL.createObjectURL(new Blob([t],{type:"application/javascript"})),l)return void g();if(a=new Worker(r),l)return void g();a.onmessage=t=>{var e;if(l||(null==(e=t.data)?void 0:e.id)!==d)return;const{danmus:i}=t.data;Array.isArray(i)?y(i):y(void 0,new Error("Invalid Bilibili Danmu worker response"))},a.onerror=t=>{var e;null==(e=t.preventDefault)||e.call(t),v(n,t.error||t)},a.onmessageerror=t=>v(n,t.error||t),a.postMessage({xml:n,id:d})}catch(s){v(n,s)}})}().catch(t=>y(void 0,t)))})}const y=new WeakMap,v=Symbol("cancelled danmuku input");function w(t){return y.has(t)||y.set(t,{closed:!1,tasks:new Set,emitting:[]}),y.get(t)}function k(t){const e=w(t),i=e.emitting[e.emitting.length-1];return!e.closed&&!t.art.isDestroy&&(!i||i.active())}function x(t){const e=w(t);e.closed=!0;for(const i of[...e.tasks])i.cancel()}function b(t,e,i){const n=t.states[e]||[];for(let s=0;s{const s=n.$ref.offsetTop,a=this.owner.getLeft(n.$ref)-i,r=n.$ref.clientHeight,o=n.$ref.clientWidth,l=a+o,d=e-l,h=l/n.$restTime,c={};c.top=s,c.left=a,c.height=r,c.width=o,c.right=d,c.speed=h,c.distance=l,c.time=n.$restTime,c.mode=n.mode,t.push(c)}),t}left(t){const e=t.getBoundingClientRect();return this.owner.isRotate?e.top:e.left}makeWait(t){this.owner.setState(t,"wait"),t.$ref&&(t.$ref.style.cssText=this.owner.constructor.cssText,t.$ref.style.visibility="hidden",t.$ref.style.marginLeft="0px",t.$ref.style.transform="translateX(0px)",t.$ref.style.transition="transform 0s linear 0s",this.owner.$refs.push(t.$ref),t.$ref=null)}resize(){const{clientWidth:t}=this.owner.$player;this.owner.filter("stop",e=>{if(0===e.mode)e.$ref.style.left=`${t}px`}),this.owner.filter("emit",e=>{switch(e.$lastStartTime=Date.now(),e.mode){case 0:{const i=t+e.$ref.clientWidth;e.$ref.style.left=`${t}px`,e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`;break}}})}continue(){const{clientWidth:t}=this.owner.$player;return this.owner.filter("stop",e=>{switch(this.owner.setState(e,"emit"),e.$lastStartTime=Date.now(),e.mode){case 0:{const i=t+e.$ref.clientWidth;e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`;break}}}),this}suspend(){const{clientWidth:t}=this.owner.$player;return this.owner.filter("emit",e=>{switch(this.owner.setState(e,"stop"),e.mode){case 0:{const i=t-(this.owner.getLeft(e.$ref)-this.owner.getLeft(this.owner.$player));e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition="transform 0s linear 0s";break}}}),this}prepare(t,e){const i=this.owner,n=i.$ref;return e.danmu=t,e.ref=n,t.$ref=n,n.textContent=t.text,i.$danmuku.appendChild(n),n.style.opacity=i.option.opacity,n.style.fontSize=`${i.fontSize}px`,n.style.color=t.color,n.style.border=t.border?`1px solid ${t.color}`:null,n.style.backgroundColor=t.border?"rgb(0 0 0 / 50%)":null,i.utils.setStyles(n,t.style),n}place(t,e,i,n,s){switch(e.style.top=`${i}px`,e.style.visibility="visible",e.dataset.mode=t.mode,e.dataset.id=t.id||"",t.mode){case 0:e.style.left=`${s}px`,e.style.marginLeft="0px",e.style.transform=`translateX(${-n}px)`,e.style.transition=`transform ${t.$restTime}s linear 0s`;break;case 1:case 2:e.style.left="50%",e.style.marginLeft=`-${e.clientWidth/2}px`}}release(t){const{danmu:e,ref:i}=t;i&&e.$ref===i&&(i.style.cssText=this.owner.constructor.cssText,i.style.visibility="hidden",this.owner.$refs.push(i),e.$ref=null),t.ref=null}clear(){this.destroy(),this.owner.$refs=[],this.owner.$danmuku.textContent=""}destroy(){for(const t of this.nodes)t.parentElement&&t.parentElement.removeChild(t);for(const t of this.owner.queue)t.$ref=null;this.owner.$refs.length=0,this.nodes.clear()}}function M({target:t,visibles:e,clientWidth:i,clientHeight:n,marginBottom:s,marginTop:a,antiOverlap:r}){const o=n-s,l=e.filter(e=>e.mode===t.mode&&e.top<=o).sort((t,e)=>t.top-e.top);if(0===l.length)return 2===t.mode?o-t.height:a;if(l.unshift({type:"top",top:0,left:0,right:0,height:a,width:i,speed:0,distance:i}),l.push({type:"bottom",top:o,left:0,right:0,height:s,width:i,speed:0,distance:i}),2===t.mode)for(let h=l.length-2;h>=0;h-=1){const e=l[h],i=l[h+1],n=e.top+e.height;if(i.top-n>=t.height)return i.top-t.height}else for(let h=1;h=t.height)return n}const d=[];for(let h=1;h{const i=Math.min(...e.map(t=>t.right)),n=Math.min(...t.map(t=>t.right));return i*e.length-n*t.length});break;case 1:case 2:d.sort((t,e)=>{const i=Math.max(...e.map(t=>t.width));return Math.max(...t.map(t=>t.width))*t.length-i*e.length})}return d[0][0].top}switch(t.mode){case 0:{const e=d.find(e=>e.every(e=>{if(ie.time}));return e&&e[0]?e[0].top:void 0}case 1:case 2:return}}class S{constructor(){this.rows=new Set,this.waiting=new Set,this.visibility=()=>this.clear()}begin(t){void 0===this.time&&this.capture(t,[],t.art.currentTime)}capture(t,e,i){var n,s;const a=t.$player.ownerDocument;if(a!==this.document&&(null==(n=this.document)||n.removeEventListener("visibilitychange",this.visibility),this.document=a,null==a||a.addEventListener("visibilitychange",this.visibility),this.clear()),!Number.isFinite(i)||"hidden"===(null==a?void 0:a.visibilityState)||(null==(s=t.art.video)?void 0:s.seeking))return this.clear(),e;const r=this.time,o=this.rows,l=this.waiting;if(this.time=i,this.rows=new Set(e),this.waiting=new Set(t.states.wait),void 0===r||i<=r)return e;const d=t.states.wait.filter(t=>l.has(t)&&!o.has(t)&&t.time>=r-.1&&t.time"ready"===t.$state),...d,...e.filter(t=>"ready"!==t.$state)]}clear(){this.time=void 0,this.rows.clear(),this.waiting.clear()}destroy(){var t;null==(t=this.document)||t.removeEventListener("visibilitychange",this.visibility),this.document=void 0,this.clear()}}class z{constructor(){this.pending=new Set,this.reserved=new Set}capture(t,e){for(const i of t)this.reserved.has(i)||e.has(i)||this.pending.add(i)}take(){const t=[],e=[];for(const n of this.pending)"ready"===n.$state?t.push(n):"wait"===n.$state&&e.push(n);this.pending.clear();const i=[...t,...e];return this.reserved=new Set(i),i}complete(){this.reserved.clear()}clear(){this.pending.clear(),this.reserved.clear()}}const E=Symbol("cancelled danmuku frame");class F{constructor(t){this.owner=t,this.generation=0,this.starts=0,this.frame=null,this.operation=null,this.closed=!1,this.running=!1,this.fault=!1,this.failedItems=new Set,this.buffer=new z,this.sampling=new S}active(t){const e=this.owner;return!this.closed&&!this.fault&&!e.art.isDestroy&&!e.isStop&&!e.isHide&&t.generation===this.generation}release(t){this.owner.renderer.release(t)}invalidate(){var t;if(this.generation++,null!==this.frame&&window.cancelAnimationFrame(this.frame),this.frame=null,this.owner.timer=null,this.operation){const t=this.operation;this.operation=null,t.cancel(),this.release(t)}null==(t=this.owner.workerClient)||t.cancel(),this.failedItems.clear(),this.buffer.clear(),this.sampling.clear()}report(t){try{this.owner.art.emit("artplayerPluginDanmuku:error",t)}catch(e){console.warn("Failed to report danmuku scheduling error:",e)}}fail(t){this.closed||this.fault||(this.fault=!0,this.invalidate(),this.report(t))}recover(){var t;if(!this.closed&&!this.owner.art.isDestroy&&(this.failedItems.clear(),this.fault))try{null==(t=this.owner.workerClient)||t.dispose(),this.owner.createWorker(),this.fault=!1}catch(e){this.report(e)}}schedule(){const t=this.owner;if(!(!this.running||this.closed||this.fault||t.art.isDestroy||t.isStop)){try{const e=t.art.video;(t.art.playing||!1===(null==e?void 0:e.paused)&&!e.ended&&e.readyState>2)&&!t.isHide&&this.sampling.begin(t)}catch(e){return void this.fail(e)}null===this.frame&&(this.frame=window.requestAnimationFrame(()=>{if(this.frame=null,t.timer=null,this.closed||this.fault||t.isStop||t.art.isDestroy)return;const i=this.generation;try{if(t.art.playing&&!t.isHide){t.filter("emit",e=>{const i=Date.now();e.$restTime-=(i-e.$lastStartTime)/1e3,e.$lastStartTime=i,e.$restTime<=0&&t.makeWait(e)});const e=t.art.currentTime,n=t.readys;if(i!==this.generation)return;this.buffer.capture(this.sampling.capture(t,n,e),this.failedItems)}}catch(e){return void(i===this.generation&&this.fail(e))}if(this.schedule(),this.operation||!t.art.playing||t.isHide)return;const n=this.buffer.take();if(!n.length)return;let s;const a=new Promise(t=>s=()=>t(E)),r={generation:this.generation,cancel:s,wait:t=>Promise.race([t,a]),ref:null};return this.operation=r,this.run(r,n).catch(t=>{this.active(r)&&this.fail(t)}).finally(()=>{this.release(r),this.operation===r&&(this.operation=null,this.buffer.complete())})}),t.timer=this.frame)}}run(t,e){return h(this,null,function*(){const i=this.owner;if(i.art.playing&&this.active(t))for(const s of e){if(!this.active(t))return;if(this.failedItems.has(s))continue;let e;try{e=yield t.wait(i.option.beforeVisible(s))}catch(n){if(!this.active(t))return;this.failedItems.add(s),this.report(n);continue}if(!this.active(t))return;if(!e)continue;const{clientWidth:a,clientHeight:r}=i.$player,o=i.renderer.prepare(s,t);if(!this.active(t))return;s.$lastStartTime=Date.now(),s.$restTime=i.speed;const l=a+o.clientWidth,d={type:"getDanmuTop",target:{mode:s.mode,height:o.clientHeight,speed:l/s.$restTime},visibles:i.visibles,antiOverlap:i.option.antiOverlap,clientWidth:a,clientHeight:r,marginBottom:i.marginBottom,marginTop:i.marginTop},h=d.antiOverlap?yield t.wait(i.postMessage(d)):{result:M(d)},c="symbol"===typeof h?void 0:h.result;if(!this.active(t)||s.$ref!==o)return;void 0!==c?(s.$lastStartTime=Date.now(),i.setState(s,"emit"),i.renderer.place(s,o,c,l,a),t.ref=null,i.art.emit("artplayerPluginDanmuku:visible",s)):(i.setState(s,"ready"),this.release(t))}})}destroy(){this.closed=!0,this.invalidate(),this.sampling.destroy()}}let C=0;class D{constructor(t,e){this.pending=new Map,this.closed=!1,this.failed=!1,this.onFailure=e,this.worker=t();try{this.worker.onmessage=t=>{var e;const i=this.pending.get(null==(e=t.data)?void 0:e.id);i&&(this.pending.delete(t.data.id),i.resolve(t.data))},this.worker.onerror=t=>{var e;null==(e=t.preventDefault)||e.call(t),this.fail(t.error||t)},this.worker.onmessageerror=t=>this.fail(t.error||t)}catch(i){try{this.dispose()}catch(n){}throw i}}request(t){t.id=++C;const{id:e}=t;return this.closed||this.failed?Promise.resolve({id:e,result:void 0}):new Promise((i,n)=>{this.pending.set(e,{resolve:i,reject:n});try{this.worker.postMessage(t)}catch(s){this.fail(s)}})}fail(t){if(!this.closed&&!this.failed){this.failed=!0;for(const e of this.pending.values())e.reject(t);this.pending.clear();try{this.dispose()}catch(e){}this.onFailure(t)}}cancel(){for(const[t,e]of this.pending)e.resolve({id:t,result:void 0});this.pending.clear()}dispose(){if(this.closed)return;this.closed=!0,this.cancel();let t,e=!1;const i=i=>{try{i()}catch(n){e||(t=n),e=!0}};for(const n of["onmessage","onerror","onmessageerror"])i(()=>this.worker[n]=null);if(i(()=>this.worker.terminate()),e)throw t}}const P='/*!\n * artplayer-plugin-danmuku.js v6.0.0\n * Github: https://github.com/zhw2590582/ArtPlayer\n * (c) 2017-2026 Harvey Zhao\n * Released under the MIT License.\n */\nfunction t({target:t,visibles:e,clientWidth:i,clientHeight:h,marginBottom:n,marginTop:o,antiOverlap:s}){const r=h-n,p=e.filter(e=>e.mode===t.mode&&e.top<=r).sort((t,e)=>t.top-e.top);if(0===p.length)return 2===t.mode?r-t.height:o;if(p.unshift({type:"top",top:0,left:0,right:0,height:o,width:i,speed:0,distance:i}),p.push({type:"bottom",top:r,left:0,right:0,height:n,width:i,speed:0,distance:i}),2===t.mode)for(let g=p.length-2;g>=0;g-=1){const e=p[g],i=p[g+1],h=e.top+e.height;if(i.top-h>=t.height)return i.top-t.height}else for(let g=1;g=t.height)return h}const a=[];for(let g=1;g{const i=Math.min(...e.map(t=>t.right)),h=Math.min(...t.map(t=>t.right));return i*e.length-h*t.length});break;case 1:case 2:a.sort((t,e)=>{const i=Math.max(...e.map(t=>t.width));return Math.max(...t.map(t=>t.width))*t.length-i*e.length})}return a[0][0].top}switch(t.mode){case 0:{const e=a.find(e=>e.every(e=>{if(ie.time}));return e&&e[0]?e[0].top:void 0}case 1:case 2:return}}onmessage=e=>{const{data:i}=e;if(!i.id||!i.type)return;const h=(0,{getDanmuTop:t}[i.type])(i);globalThis.postMessage({result:h,id:i.id})};\n',T="undefined"!==typeof self&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",P],{type:"text/javascript;charset=utf-8"});function L(t){let e;try{if(e=T&&(self.URL||self.webkitURL).createObjectURL(T),!e)throw"";const i=new Worker(e,{type:"module",name:null==t?void 0:t.name});return i.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(e)}),i}catch(i){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(P),{type:"module",name:null==t?void 0:t.name})}}class O{constructor(t,e){const{constructor:i,template:n}=t;this.utils=i.utils,this.validator=i.validator,this.$danmuku=n.$danmuku,this.$player=n.$player,this.art=t,this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.worker=null,this.workerClient=null,this.renderer=new $(this),this.scheduler=new F(this),this.option=O.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.reset=this.reset.bind(this),this.resize=this.resize.bind(this),this.destroy=this.destroy.bind(this),this.seek=this.seek.bind(this),k(this),t.on("destroy",this.destroy);try{if(this.config(e,!0),!k(this))return;this.createWorker()}catch(s){throw t.off("destroy",this.destroy),x(this),this.scheduler.destroy(),s}t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("resize",this.resize),t.on("video:seeking",this.seek),this.load().catch(t=>console.warn("Failed to load initial danmuku:",t))}static get option(){return{danmuku:[],speed:5,margin:[10,"25%"],opacity:1,color:"#FFFFFF",mode:0,modes:[0,1,2],fontSize:25,antiOverlap:!0,synchronousPlayback:!1,mount:void 0,heatmap:!1,width:512,points:[],filter:()=>!0,beforeEmit:()=>!0,beforeVisible:()=>!0,visible:!0,emitter:!0,maxLength:200,lockTime:5,theme:"dark",OPACITY:{},FONT_SIZE:{},MARGIN:{},SPEED:{},COLOR:[]}}static get scheme(){return{danmuku:"array|function|string|promise",speed:"number",margin:"array",opacity:"number",color:"string",mode:"number",modes:"array",fontSize:"number|string",antiOverlap:"boolean",synchronousPlayback:"boolean",mount:"?htmldivelement|string",heatmap:"object|boolean",width:"number",points:"array",filter:"function",beforeEmit:"function",beforeVisible:"function",visible:"boolean",emitter:"boolean",maxLength:"number",lockTime:"number",theme:"string",OPACITY:"object",FONT_SIZE:"object",MARGIN:"object",SPEED:"object",COLOR:"array"}}static get cssText(){return'\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 '}get isRotate(){var t,e;return null==(e=null==(t=this.art.plugins)?void 0:t.autoOrientation)?void 0:e.state}get marginTop(){const{clamp:t}=this.utils,e=this.option.margin[0],{clientHeight:i}=this.$player;if("number"===typeof e)return t(e,0,i);if("string"===typeof e&&e.endsWith("%")){return t(i*(Number.parseFloat(e)/100),0,i)}return O.option.margin[0]}get marginBottom(){const{clamp:t}=this.utils,e=this.option.margin[1],{clientHeight:i}=this.$player;if("number"===typeof e)return t(e,0,i);if("string"===typeof e&&e.endsWith("%")){return t(i*(Number.parseFloat(e)/100),0,i)}return O.option.margin[1]}get fontSize(){const{clamp:t}=this.utils,{clientHeight:e}=this.$player,i=this.option.fontSize;if("number"===typeof i)return Math.round(t(i,12,e));if("string"===typeof i&&i.endsWith("%")){const n=Number.parseFloat(i)/100;return Math.round(t(e*n,12,e))}return O.option.fontSize}get $ref(){return this.renderer.acquire()}get readys(){return function(t){const{currentTime:e}=t.art,i=[];return b(t,"ready",t=>i.push(t)),b(t,"wait",t=>{e+.1>=t.time&&t.time>=e-.1&&i.push(t)}),i}(this)}get visibles(){return this.renderer.visibles}get speed(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}load(t){return h(this,null,function*(){const{errorHandle:e}=this.utils,i=function(t,e){const i=w(t);if(e)for(const d of[...i.tasks])d.replace&&d.cancel();let n,s=i.closed||t.art.isDestroy;const a=new Promise(t=>n=t),r=new Set,o="function"===typeof AbortController?new AbortController:void 0,l={replace:e,signal:null==o?void 0:o.signal,active:()=>!s&&!i.closed&&!t.art.isDestroy,onCancel:t=>l.active()?(r.add(t),()=>r.delete(t)):(t(),()=>{}),cancel(){if(!s){s=!0,n(v),null==o||o.abort();for(const t of[...r])t();r.clear()}},wait:t=>Promise.race([t,a]),emit(e){i.emitting.push(l);try{return t.emit(e)}finally{i.emitting.pop()}},finish(){i.tasks.delete(l),r.clear()}};return s?n(v):i.tasks.add(l),l}(this,void 0===t);try{if(!i.active())return this;const n=function(t,e){return"function"===typeof t?{asynchronous:!0,value:t()}:c(t)?{asynchronous:!0,value:t}:"string"===typeof t?{asynchronous:!0,value:g(t,e)}:{asynchronous:!1,value:Array.isArray(t)?t:[]}}(t||this.option.danmuku,i),s=n.asynchronous?yield i.wait(n.value):n.value;if(!i.active())return this;e(Array.isArray(s),"Danmuku need return an array as result");const a=s;if(void 0===t){if(this.reset(),!i.active())return this;this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.renderer.clear()}for(let t=0;t{const e=s[t],i=a[t];return"function"===typeof e||"function"===typeof i||c(e)||c(i)?e!==i:JSON.stringify(e)!==JSON.stringify(i)}))&&!e)return this;const r=function(t,e,{defaults:i,validate:n,clamp:s,mount:a}){const r=Object.assign({},i,t,e);return n(r),r.mode=s(r.mode,0,2),r.speed=s(r.speed,1,10),r.opacity=s(r.opacity,0,1),r.lockTime=s(r.lockTime,1,60),r.maxLength=s(r.maxLength,1,1e3),r.mount=r.mount||a,r}(this.option,t,{defaults:O.option,validate:t=>this.validator(t,O.scheme),clamp:i,mount:n});if(!k(this))return this;const o=this.option.beforeVisible!==r.beforeVisible;return this.option=r,o&&(this.scheduler.invalidate(),this.scheduler.schedule()),t.fontSize&&(this.reset(),!k(this))||(this.option.visible?this.show():this.hide(),k(this)&&this.art.emit("artplayerPluginDanmuku:config",this.option)),this}getLeft(t){return this.renderer.left(t)}postMessage(t={}){return this.workerClient.request(t)}createWorker(){this.workerClient=new D(()=>new L,t=>this.scheduler.fail(t)),this.worker=this.workerClient.worker}filter(t,e){return b(this,t,e)}setState(t,e){!function(t,e,i){t.states[e.$state]=t.states[e.$state].filter(t=>t!==e),e.$state=i,e.$ref&&(e.$ref.dataset.state=i),t.states[i].push(e)}(this,t,e)}makeWait(t){this.renderer.makeWait(t)}update(){return this.scheduler.running=!0,this.scheduler.schedule(),this}resize(){this.renderer.resize()}continue(){return this.renderer.continue(),this}suspend(){return this.renderer.suspend(),this}stop(){return this.isStop=!0,this.scheduler.running=!1,this.scheduler.invalidate(),this.suspend(),this.art.emit("artplayerPluginDanmuku:stop"),this}start(){if(this.scheduler.closed||this.art.isDestroy)return this;const t=++this.scheduler.starts,e=this.scheduler.generation;this.isStop=!1,this.scheduler.recover();return this.scheduler.closed||this.art.isDestroy||this.isStop||this.scheduler.fault||e!==this.scheduler.generation||t!==this.scheduler.starts||(this.continue(),this.update(),this.art.emit("artplayerPluginDanmuku:start")),this}reset(){return this.scheduler.invalidate(),this.queue.forEach(t=>this.makeWait(t)),this.art.emit("artplayerPluginDanmuku:reset"),this.scheduler.recover(),this.scheduler.schedule(),this}seek(){this.scheduler.invalidate(),this.scheduler.schedule()}show(){return this.isHide=!1,this.$danmuku.style.opacity=1,this.option.visible=!0,this.art.emit("artplayerPluginDanmuku:show"),this}hide(){return this.isHide=!0,this.scheduler.invalidate(),this.$danmuku.style.opacity=0,this.option.visible=!1,this.art.emit("artplayerPluginDanmuku:hide"),this.scheduler.schedule(),this}destroy(){var t;x(this),this.scheduler.destroy();try{try{this.stop()}finally{null==(t=this.workerClient)||t.dispose()}}finally{this.renderer.destroy(),this.art.off("video:play",this.start),this.art.off("video:playing",this.start),this.art.off("video:pause",this.stop),this.art.off("video:waiting",this.stop),this.art.off("resize",this.resize),this.art.off("video:seeking",this.seek),this.art.off("destroy",this.destroy),this.art.emit("artplayerPluginDanmuku:destroy")}}}const A=4294967295;function H(t,e){let i=0,n=t.length;for(;iNumber.isFinite(t)&&t>0))return null;const o={xMin:0,xMax:t,yMin:0,yMax:128,scale:.25,opacity:.2,minHeight:Math.floor(.05*e),sampling:Math.max(1,Math.floor(t/100)),smoothing:.2,flattening:.2},l=Object.assign({},"object"===typeof s?s:{}),d=Object.assign({},o,l);for(const r of Object.keys(o))Number.isFinite(d[r])||(d[r]=o[r]);if(d.sampling<=0&&(d.sampling=o.sampling),d.xMin===d.xMax||d.yMin===d.yMax)return null;const h=Array.isArray(a)&&a.length>0,c=h?[...a]:function(t,e,i,n){if(!Number.isFinite(e)||e<=0||!Number.isFinite(i)||i<=0||!Number.isFinite(n)||n<=0||Math.floor(e/n)+1>A)return[];const s=t.map(t=>t.time).filter(t=>"number"===typeof t&&!Number.isNaN(t)).sort((t,e)=>t-e),a=[],r=i/e;if(!Number.isFinite(r))return[];for(let o=0;o<=e;o+=n){if(a.length>=A||o+n===o)return[];const t=o*r,e=(o+n)*r;a.push([o,H(s,e)-H(s,t)])}return a}(n,t,i,d.sampling);if(!c.length||!c.every(t=>Array.isArray(t)&&Number.isFinite(t[0])&&Number.isFinite(t[1])))return null;const p=c[c.length-1];if(p[0]!==t){if(c.length===A)return null;c.push([t,p[1]])}let u=1/0,m=-1/0;for(const r of c)u=Math.min(u,r[1]),m=Math.max(m,r[1]);const f=(u+m)/2;for(const r of c){const t=r[1];r[1]=t*(t>f?1+d.scale:1-d.scale)+d.minHeight}const g=!h&&!Number.isFinite(l.yMin)&&!Number.isFinite(l.yMax);let y=0;for(const r of c)y=Math.max(y,r[1]);const v=g&&y>o.yMax/4;v&&(d.yMax=4*y);const w=t=>v?Math.min(e,Math.max(.75*e,t)):t,k=(t,e,i,n)=>{const s=function(t,e){const i=e[0]-t[0],n=e[1]-t[1];return{length:Math.sqrt(r(i,2)+r(n,2)),angle:Math.atan2(n,i)}}(e||t,i||t),a=N(Math.cos(s.angle)*d.flattening,0,1,1,0),o=s.angle*a+(n?Math.PI:0),l=s.length*d.smoothing;return[t[0]+Math.cos(o)*l,w(t[1]+Math.sin(o)*l)]},x=c.map(i=>[N(i[0],d.xMin,d.xMax,0,t),w(N(i[1],d.yMin,d.yMax,e,0))]);if(!x.every(t=>t.every(Number.isFinite)))return null;const b=x.map((t,i,n)=>{if(0===i)return`M ${n[n.length-1][0]},${e} L ${t[0]},${e} L ${t[0]},${t[1]}`;const s=k(n[i-1],n[i-2],t),a=k(t,n[i-1],n[i+1],!0);return`C ${s[0]},${s[1]} ${a[0]},${a[1]} ${t[0]},${t[1]}${i===n.length-1?" z":""}`}).join(" ");return/NaN|Infinity/u.test(b)?null:{path:b,opacity:d.opacity,width:t,height:e}}let j=0;function q(t,e,i){if(t.isDestroy)return;const{query:n}=t.constructor.utils;let s;const a=[];let r,o,l,d=!1;const h=()=>!d&&!t.isDestroy;function c(e,i){const n=i;a.push([e,n]),t.on(e,n)}function p(e){if(d)return;let i;d=!0,o=null,l=null;let n=!1;const s=t=>{try{t()}catch(e){n||(i=e),n=!0}};for(const[r,o]of a.splice(0))s(()=>t.off(r,o));if(e&&r&&t.controls.heatmap===r&&s(()=>t.controls.remove("heatmap")),r=void 0,n)throw i}function u(t){h()&&o&&l&&(o.setAttribute("offset",100*t+"%"),l.setAttribute("offset",100*t+"%"))}function m(a){try{!function(a=[]){if(!h())return;o=null,l=null;const d=r;if(d.innerHTML="",t.option.isLive)return;const c=V({width:d.offsetWidth,height:d.offsetHeight,duration:t.duration,queue:e.queue,option:i,points:a});if(!c||!h())return;const p=d.ownerDocument;for(s||(s=p?"heatmap-solids":"heatmap-solids-"+ ++j);null==p?void 0:p.getElementById(s);)s="heatmap-solids-"+ ++j;d.innerHTML=`\n \n \n \n \n \n \n \n \n \n \n \n `,o=n("#heatmap-start",d),l=n("#heatmap-stop",d),u(t.played)}(a)}catch(d){try{p(!0)}catch(c){}throw d}}c("destroy",()=>p(!0));try{t.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},beforeUnmount(){p(!1)},mounted(e){if(r=e,d)return t.controls.heatmap===e&&t.controls.remove("heatmap"),void(r=void 0);h()?(c("video:timeupdate",()=>u(t.played)),c("setBar",(t,e)=>{"played"===t&&u(e)}),c("ready",()=>m()),c("resize",()=>m()),c("artplayerPluginDanmuku:loaded",()=>m()),c("artplayerPluginDanmuku:points",t=>m(t))):p(!0)}})}catch(f){try{p(!0)}catch(g){}throw f}return()=>p(!0)}const I=new WeakMap;class B{constructor(t){this.art=t,this.closed=!1,this.disposers=new Set,this.cancelled=new Promise(t=>this.cancel=t)}get active(){return!this.closed&&!this.art.isDestroy}own(t){this.closed?t():this.disposers.add(t)}write(t,e,i,n=i=>t[e]=i){const s=t;if(!this.active)return;const a=()=>"function"===typeof s.getPropertyPriority?s.getPropertyPriority(e):void 0;let r=I.get(s);r||(r=new Map,I.set(s,r));let o=r.get(e);o||(o={original:s[e],present:e in s||void 0!==s[e],priority:a(),owners:new Map,apply:n},r.set(e,o)),o.owners.has(this)||this.own(()=>{const t=[...o.owners.keys()],i=t[t.length-1]===this;if(o.owners.delete(this),i&&s[e]===o.last&&a()===o.lastPriority){const t=[...o.owners.values()];t.length?(o.apply(t[t.length-1]),o.last=s[e],o.lastPriority=a()):void 0!==o.priority?s.setProperty(e,o.original,o.priority):o.present?o.apply(o.original):delete s[e]}o.owners.size||(r.delete(e),r.size||I.delete(s))}),o.owners.delete(this),o.owners.set(this,i),o.apply(i),o.last=s[e],o.lastPriority=a()}on(t,e){if(!this.active)return;const i=this;function n(...t){if(i.active)return e.apply(this,t)}const s=()=>this.art.off(t,n);this.own(s);try{this.art.on(t,n),this.active||s()}catch(a){throw this.release(s),a}}proxy(t,e,i){if(!this.active)return;const n=this;function s(...t){if(n.active)return i.apply(this,t)}let a;const r=()=>{var i,n;if("function"===typeof a){const t=this.art.events;"function"===typeof(null==t?void 0:t.remove)&&(null==(i=t.destroyEvents)?void 0:i.has(a))?t.remove(a):a()}else null==(n=t.removeEventListener)||n.call(t,e,s)};this.own(r);try{a=this.art.proxy(t,e,s),this.active||r()}catch(o){throw this.release(r),o}}wait(t){return Promise.race([t,this.cancelled])}release(t){try{t()}catch(e){console.warn("Failed to dispose danmuku setting resource:",e)}}close(){if(!this.closed){this.closed=!0,this.cancel();for(const t of this.disposers)this.release(t);this.disposers.clear()}}}function R({min:t,max:e,container:i,findIndex:n,onChange:s,steps:a=[]}){const{lifecycle:r}=this;if(!r.active)return{reset(){}};const{query:o,clamp:l,setStyle:d}=this.utils;d(i,"touch-action","none"),i.innerHTML=`\n

\n
\n ${a.map(()=>'
').join("")}\n
\n
\n
\n
\n
\n ${a.map(t=>t.hide?"":`
${t.name}
`).join("")}\n
\n `;const h=o(".apd-slider-dot",i),c=o(".apd-slider-progress",i);let p=!1;function u(i){if(!r.active)return;if(void 0===i&&(i=n()),ie)return;const o=(i-t)/(e-t);h.style.left=100*o+"%",0===a.length&&(c.style.width=h.style.left),s(i)}function m(n){const{top:s,height:a,left:r,width:o}=i.getBoundingClientRect();if(this.art.isRotate){const i=l(n.clientY-s,0,a);u(Math.round(i/a*(e-t)+t))}else{const i=l(n.clientX-r,0,o);u(Math.round(i/o*(e-t)+t))}}return r.own(()=>p=!1),r.proxy(i,"click",t=>{m.call(this,t)}),r.proxy(i,"pointerdown",t=>{p=0===t.button}),r.on("document:pointermove",t=>{p&&m.call(this,t)}),r.on("document:pointerup",t=>{p&&(p=!1,m.call(this,t))}),{reset:u}}const Z='',W='',_='',U='',G='',X='',Y='',J='',K='',Q='',tt='',et='';function it(){const{option:t}=this;return`\n
\n ${tt}${Q}\n
\n
\n ${_}\n
\n
\n
\n \u6309\u7c7b\u578b\u5c4f\u853d\n
\n
\n ${U}${G}\n
\u6eda\u52a8
\n
\n
\n ${X}${Y}\n
\u9876\u90e8
\n
\n
\n ${J}${K}\n
\u5e95\u90e8
\n
\n
\n
\n
\n
\n ${W}${Z}\n \u9632\u6b62\u5f39\u5e55\u91cd\u53e0\n
\n
\n ${W}${Z}\n \u540c\u6b65\u89c6\u9891\u901f\u5ea6\n
\n
\n
\n \u4e0d\u900f\u660e\u5ea6\n
\n
\u672a\u77e5
\n
\n
\n \u663e\u793a\u533a\u57df\n
\n
\u672a\u77e5
\n
\n
\n \u5f39\u5e55\u5b57\u53f7\n
\n
\u672a\u77e5
\n
\n
\n \u5f39\u5e55\u901f\u5ea6\n
\n
\u672a\u77e5
\n
\n
\n
\n
\n
\n
\n ${et}\n
\n
\n
\n \u6a21\u5f0f\n
\n
\n ${G}\n
\u6eda\u52a8
\n
\n
\n ${Y}\n
\u9876\u90e8
\n
\n
\n ${K}\n
\u5e95\u90e8
\n
\n
\n
\n
\n \u989c\u8272\n
\n ${this.COLOR.map(t=>`
`).join("")}\n
\n
\n
\n
\n
\n \n
\u53d1\u9001
\n
\n `}if("undefined"!==typeof document){const t="artplayer-plugin-danmuku",e=Symbol.for("artplayer-plugin-danmuku.pending-style"),i=document;let n=document.getElementById(t)||i[e];if(!n)if(n=document.createElement("style"),n.id=t,"loading"===document.readyState){i[e]=n;const s=()=>{document.removeEventListener("DOMContentLoaded",s),i[e]===n&&delete i[e];const a=document.getElementById(t);a?a.textContent=n.textContent:(document.head||document.documentElement).appendChild(n)};document.addEventListener("DOMContentLoaded",s,{once:!0})}else(document.head||document.documentElement).appendChild(n);n.textContent='.artplayer-plugin-danmuku{display:flex;position:relative;z-index:99;align-items:center;justify-content:center;font-size:12px;height:32px;width:100%;color:#fff;font-weight:300;flex-shrink:0;gap:10px}.artplayer-plugin-danmuku .apd-icon{cursor:pointer;opacity:.75;transition:all .2s ease;fill:#fff}.artplayer-plugin-danmuku .apd-icon:hover{opacity:1}.artplayer-plugin-danmuku .apd-config{display:flex;position:relative}.artplayer-plugin-danmuku .apd-config .apd-config-panel{position:absolute;bottom:24px;left:0;width:320px;padding:10px;opacity:0;pointer-events:none}.artplayer-plugin-danmuku .apd-config .apd-config-panel .apd-config-panel-inner{width:100%;border-radius:3px;background-color:#000000d9;padding:10px}.artplayer-plugin-danmuku .apd-config:hover .apd-config-panel{opacity:100;pointer-events:all}.artplayer-plugin-danmuku .apd-config-mode,.artplayer-plugin-danmuku .apd-config-slider,.artplayer-plugin-danmuku .apd-config-other,.artplayer-plugin-danmuku .apd-style-mode{margin-bottom:15px}.artplayer-plugin-danmuku .apd-modes{display:flex;align-items:center;margin-top:5px;gap:20px}.artplayer-plugin-danmuku .apd-modes .apd-mode{cursor:pointer;text-align:center}.artplayer-plugin-danmuku .apd-modes .apd-mode:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-config-slider{display:flex;align-items:center;gap:12px}.artplayer-plugin-danmuku .apd-config-slider .apd-value{width:32px;text-align:right}.artplayer-plugin-danmuku .apd-slider{position:relative;flex:1;display:flex;height:20px;align-items:center;justify-content:center;cursor:pointer}.artplayer-plugin-danmuku .apd-slider .apd-slider-line{position:relative;height:2px;width:100%;overflow:hidden;border-radius:3px;background-color:#ffffff40}.artplayer-plugin-danmuku .apd-slider .apd-slider-points{position:absolute;inset:0;display:flex;align-items:center;justify-content:space-between}.artplayer-plugin-danmuku .apd-slider .apd-slider-points .apd-slider-point{width:2px;height:2px;border-radius:50%;background-color:#ffffff80}.artplayer-plugin-danmuku .apd-slider .apd-slider-progress{width:0%;height:100%;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-slider .apd-slider-dot{position:absolute;transform:translate(-6px);left:0%;width:12px;height:12px;border-radius:50%;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps{display:flex;align-items:center;justify-content:space-between;position:absolute;bottom:-12px;width:calc(100% + 32px);color:#777}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps .apd-slider-step{flex-shrink:0;width:36px;text-align:center;scale:.95}.artplayer-plugin-danmuku .apd-config-other{display:flex;align-items:center;gap:20px}.artplayer-plugin-danmuku .apd-config-other .apd-check-off,.artplayer-plugin-danmuku .apd-config-other .apd-check-on{width:16px;height:16px}.artplayer-plugin-danmuku .apd-config-other .apd-other{display:flex;align-items:center;cursor:pointer;gap:2px}.artplayer-plugin-danmuku .apd-config-other .apd-other:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-emitter{display:flex;flex:1;align-items:center;height:100%;background-color:#ffffff40;border-radius:5px}.artplayer-plugin-danmuku .apd-style{position:relative;display:flex;align-items:center;justify-content:center}.artplayer-plugin-danmuku .apd-style .apd-style-panel{position:absolute;bottom:24px;left:0;width:200px;padding:10px;opacity:0;pointer-events:none}.artplayer-plugin-danmuku .apd-style .apd-style-panel .apd-style-panel-inner{width:100%;border-radius:3px;background-color:#000000d9;padding:10px}.artplayer-plugin-danmuku .apd-style:hover .apd-style-panel{opacity:100;pointer-events:all}.artplayer-plugin-danmuku .apd-colors{display:flex;flex-wrap:wrap;margin-top:5px;gap:8px}.artplayer-plugin-danmuku .apd-colors .apd-color{width:16px;height:16px;border-radius:2px;cursor:pointer}.artplayer-plugin-danmuku .apd-colors .apd-color.apd-active{border:1px solid black;box-shadow:0 0 0 1px #fff}.artplayer-plugin-danmuku .apd-input{outline:none;height:100%;flex:1;min-width:0;width:auto;border:none;line-height:1;color:#fff;background-color:transparent}.artplayer-plugin-danmuku .apd-input::placeholder{color:#ffffff80}.artplayer-plugin-danmuku .apd-send{display:flex;align-items:center;justify-content:center;height:100%;width:60px;flex-shrink:0;cursor:pointer;text-shadow:none;border-top-right-radius:5px;border-bottom-right-radius:5px;background-color:#00a1d6}.artplayer-plugin-danmuku .apd-send.apd-lock{cursor:not-allowed;color:#666;background-color:#e7e7e7}.art-controls-center .apd-emitter{width:260px;flex:none}.art-fullscreen .artplayer-plugin-danmuku,.art-fullscreen-web .artplayer-plugin-danmuku{height:38px;gap:16px}.art-fullscreen .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen-web .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-on,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-on{width:28px;height:28px}.art-fullscreen .artplayer-plugin-danmuku .apd-emitter,.art-fullscreen-web .artplayer-plugin-danmuku .apd-emitter{width:400px;flex:none}.art-video-player>.artplayer-plugin-danmuku{position:absolute;left:0;right:0;bottom:-40px;padding:0 10px}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[data-danmuku-emitter=false] .apd-emitter{display:none!important}[data-danmuku-emitter=false] .art-controls-center .artplayer-plugin-danmuku{justify-content:flex-end;gap:18px}[data-danmuku-emitter=false].art-fullscreen .art-controls-center .artplayer-plugin-danmuku,[data-danmuku-emitter=false].art-fullscreen-web .art-controls-center .artplayer-plugin-danmuku{gap:24px}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-icon{fill:#333}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-emitter{background-color:#f1f2f3}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input{color:#000}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:#0000004d}[data-danmuku-visible=false] .apd-toggle-off{display:block}[data-danmuku-visible=false] .apd-toggle-on,[data-danmuku-visible=true] .apd-toggle-off{display:none}[data-danmuku-visible=true] .apd-toggle-on{display:block}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-on{display:none}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-off,[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-on{display:block}[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-off,[data-danmuku-sync-video=false] .apd-sync-video .apd-check-on{display:none}[data-danmuku-sync-video=false] .apd-sync-video .apd-check-off,[data-danmuku-sync-video=true] .apd-sync-video .apd-check-on{display:block}[data-danmuku-sync-video=true] .apd-sync-video .apd-check-off{display:none}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-off{display:block}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-on{display:none}[data-danmuku-mode0=false] .art-danmuku [data-mode="0"]{opacity:0!important}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-off{display:none}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-on{display:block}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"]{color:#00a1d6}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"] path{fill:#00a1d6}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-off{display:block}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-on{display:none}[data-danmuku-mode1=false] .art-danmuku [data-mode="1"]{opacity:0!important}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-off{display:none}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-on{display:block}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"]{color:#00a1d6}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"] path{fill:#00a1d6}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-off{display:block}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-on{display:none}[data-danmuku-mode2=false] .art-danmuku [data-mode="2"]{opacity:0!important}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-off{display:none}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-on{display:block}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"]{color:#00a1d6}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"] path{fill:#00a1d6}'}class nt{constructor(t,e){this.art=t,this.danmuku=e,this.utils=t.constructor.utils;const{setStyle:i}=this.utils,{$controlsCenter:n}=t.template;this.template={$controlsCenter:n,$mount:n,$danmuku:null,$toggle:null,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel:null,$styleModes:null,$colors:null,$opacitySlider:null,$opacityValue:null,$marginSlider:null,$marginValue:null,$fontSizeSlider:null,$fontSizeValue:null,$speedSlider:null,$speedValue:null,$input:null,$send:null},this.slider={opacity:null,margin:null,fontSize:null,speed:null},this.emitting=!1,this.isLock=!1,this.timer=null,this.lifecycle=new B(t),this.destroy=this.destroy.bind(this),this.lifecycle.own(()=>t.off("destroy",this.destroy));try{if(t.on("destroy",this.destroy),!this.lifecycle.active)return;if(this.lifecycle.write(n.style,"display","flex",t=>i(n,"display",t)),this.createTemplate(),!this.lifecycle.active)return;if(this.createSliders(),!this.lifecycle.active)return;if(this.createEvents(),this.mount(this.option.mount),!this.lifecycle.active)return;this.lifecycle.on("resize",()=>this.resize()),this.lifecycle.on("fullscreen",t=>this.onFullscreen(t)),this.lifecycle.on("fullscreenWeb",t=>this.onFullscreen(t)),this.lifecycle.proxy(this.template.$config,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$config,$panel:this.template.$configPanel})}),this.lifecycle.proxy(this.template.$style,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$style,$panel:this.template.$stylePanel})})}catch(s){try{this.destroy()}catch(a){console.warn("Failed to roll back danmuku setting:",a)}throw s}}static get icons(){return{$on:tt,$off:Q,$config:_,$style:et,$mode_0_off:U,$mode_0_on:G,$mode_1_off:X,$mode_1_on:Y,$mode_2_off:J,$mode_2_on:K,$check_on:W,$check_off:Z}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){return it.call(this)}get OPACITY(){return l({min:0,max:100,steps:[]},this.option.OPACITY)}get FONT_SIZE(){return l({min:12,max:120,steps:[]},this.option.FONT_SIZE)}get MARGIN(){return l({min:0,max:3,steps:[{name:"1/4",value:[10,"75%"]},{name:"\u534a\u5c4f",value:[10,"50%"]},{name:"3/4",value:[10,"25%"]},{name:"\u6ee1\u5c4f",value:[10,10]}]},this.option.MARGIN)}get SPEED(){return l({min:0,max:4,steps:[{name:"\u6781\u6162",value:10},{name:"\u8f83\u6162",value:7.5,hide:!0},{name:"\u9002\u4e2d",value:5},{name:"\u8f83\u5feb",value:2.5,hide:!0},{name:"\u6781\u5feb",value:1}]},this.option.SPEED)}get COLOR(){return this.option.COLOR.length?this.option.COLOR:["#FE0302","#FF7204","#FFAA02","#FFD302","#FFFF00","#A0EE00","#00CD00","#019899","#4266BE","#89D5FF","#CC0273","#222222","#9B9B9B","#FFFFFF"]}query(t){const{query:e}=this.utils,{$danmuku:i}=this.template;return e(t,i)}append(t,e){if(!this.lifecycle.active)return;const{append:i}=this.utils;[...t.children].includes(e)||i(t,e)}setData(t,e){if(!this.lifecycle.active)return;const{$player:i}=this.art.template,{$mount:n}=this.template;this.lifecycle.write(i.dataset,t,e),this.outside&&this.lifecycle.write(n.dataset,t,e)}createTemplate(){const{createElement:t,tooltip:e}=this.utils,i=t("div");this.template.$danmuku=i,i.className="artplayer-plugin-danmuku",i.innerHTML=this.TEMPLATE,this.template.$toggle=this.query(".apd-toggle"),this.template.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),this.template.$styleModes=this.query(".apd-style-mode .apd-modes"),this.template.$colors=this.query(".apd-colors"),this.template.$antiOverlap=this.query(".apd-anti-overlap"),this.template.$syncVideo=this.query(".apd-sync-video"),this.template.$opacitySlider=this.query(".apd-config-opacity .apd-slider"),this.template.$opacityValue=this.query(".apd-config-opacity .apd-value"),this.template.$marginSlider=this.query(".apd-config-margin .apd-slider"),this.template.$marginValue=this.query(".apd-config-margin .apd-value"),this.template.$fontSizeSlider=this.query(".apd-config-fontSize .apd-slider"),this.template.$fontSizeValue=this.query(".apd-config-fontSize .apd-value"),this.template.$speedSlider=this.query(".apd-config-speed .apd-slider"),this.template.$speedValue=this.query(".apd-config-speed .apd-value"),this.template.$input=this.query(".apd-input"),this.template.$send=this.query(".apd-send");const{$toggle:n}=this.template;this.lifecycle.on("artplayerPluginDanmuku:show",()=>{e(n,"\u5173\u95ed\u5f39\u5e55")}),this.lifecycle.on("artplayerPluginDanmuku:hide",()=>{e(n,"\u6253\u5f00\u5f39\u5e55")})}createEvents(){const{$toggle:t,$configModes:e,$styleModes:i,$colors:n,$antiOverlap:s,$syncVideo:a,$send:r,$input:o}=this.template;this.lifecycle.proxy(t,"click",()=>{this.danmuku.config({visible:!this.option.visible}),this.reset()}),this.lifecycle.proxy(e,"click",t=>{const e=t.target.closest(".apd-mode");if(!e)return;const i=Number(e.dataset.mode);this.option.modes.includes(i)?this.danmuku.config({modes:this.option.modes.filter(t=>t!==i)}):this.danmuku.config({modes:[...this.option.modes,i]}),this.reset()}),this.lifecycle.proxy(s,"click",()=>{this.danmuku.config({antiOverlap:!this.option.antiOverlap}),this.reset()}),this.lifecycle.proxy(a,"click",()=>{this.danmuku.config({synchronousPlayback:!this.option.synchronousPlayback}),this.reset()}),this.lifecycle.proxy(i,"click",t=>{const e=t.target.closest(".apd-mode");if(!e)return;const i=Number(e.dataset.mode);this.danmuku.config({mode:i}),this.reset()}),this.lifecycle.proxy(n,"click",t=>{const e=t.target.closest(".apd-color");e&&(this.danmuku.config({color:e.dataset.color}),this.reset())}),this.lifecycle.proxy(r,"click",()=>this.emit()),this.lifecycle.proxy(o,"keypress",t=>{"Enter"===t.key&&(t.preventDefault(),this.emit())})}createSliders(){this.slider.opacity=this.createSlider(d(l({},this.OPACITY),{container:this.template.$opacitySlider,findIndex:()=>Math.round(100*this.option.opacity),onChange:t=>{const{$opacityValue:e}=this.template;e.textContent=`${t}%`,this.danmuku.config({opacity:t/100})}})),this.slider.margin=this.createSlider(d(l({},this.MARGIN),{container:this.template.$marginSlider,findIndex:()=>this.MARGIN.steps.findIndex(t=>t.value[0]===this.option.margin[0]&&t.value[1]===this.option.margin[1]),onChange:t=>{const e=this.MARGIN.steps[t];if(!e)return;const{$marginValue:i}=this.template;i.textContent=e.name,this.danmuku.config({margin:e.value})}})),this.slider.fontSize=this.createSlider(d(l({},this.FONT_SIZE),{container:this.template.$fontSizeSlider,findIndex:()=>this.danmuku.fontSize,onChange:t=>{const{$fontSizeValue:e}=this.template;e.textContent=`${t}px`,t!==this.danmuku.fontSize&&this.danmuku.config({fontSize:t})}})),this.slider.speed=this.createSlider(d(l({},this.SPEED),{container:this.template.$speedSlider,findIndex:()=>this.SPEED.steps.findIndex(t=>t.value===this.option.speed),onChange:t=>{const e=this.SPEED.steps[t];if(!e)return;const{$speedValue:i}=this.template;i.textContent=e.name,this.danmuku.config({speed:e.value})}}))}createSlider(t){return R.call(this,t)}onFullscreen(t){if(!this.lifecycle.active)return;const{$danmuku:e,$controlsCenter:i,$mount:n}=this.template;this.outside?t?this.append(i,e):this.append(n,e):this.append(i,e)}onMouseEnter({$control:t,$panel:e}){if(!this.lifecycle.active)return;const{$player:i}=this.art.template,n=t.getBoundingClientRect(),s=e.getBoundingClientRect(),a=i.getBoundingClientRect(),r=s.width/2-n.width/2,o=a.left-(n.left-r),l=n.right+r-a.right;e.style.left=o>0?`${-r+o}px`:l>0?-r-l+"px":-r+"px"}emit(){return function(t){return h(this,null,function*(){const{lifecycle:e,template:{$input:i}}=t;if(!e.active)return;const n=i.value.trim();if(!n.length||t.isLock||t.emitting)return;const s={text:n,mode:t.option.mode,color:t.option.color,time:t.art.currentTime},a=t=>{e.active&&console.error("Error emitting danmuku:",t)};try{t.emitting=!0;const n=yield e.wait(t.option.beforeEmit(s));if(!e.active)return;if(t.emitting=!1,!0!==n)return;if(s.border=!0,delete s.time,Promise.resolve(t.danmuku.emit(s)).catch(a),!e.active)return;i.value="",t.lock()}catch(r){a(r),e.active&&(t.emitting=!1)}})}(this)}lock(){!function(t){if(!t.lifecycle.active)return;const{addClass:e}=t.utils,{$send:i}=t.template;clearTimeout(t.timer),t.isLock=!0;let n=t.option.lockTime;i.textContent=n,e(i,"apd-lock");const s=()=>{t.timer=setTimeout(()=>{t.lifecycle.active&&(0===n?t.unlock():(n-=1,i.textContent=n,s()))},1e3)};s()}(this)}unlock(){!function(t){if(clearTimeout(t.timer),t.timer=null,t.isLock=!1,!t.lifecycle.active)return;const{removeClass:e}=t.utils,{$send:i}=t.template;i.textContent="\u53d1\u9001",e(i,"apd-lock")}(this)}resize(){if(!this.lifecycle.active)return;if(this.outside)return;if(this.art.fullscreen)return;if(this.art.fullscreenWeb)return;const{$player:t,$controlsCenter:e}=this.art.template,{$danmuku:i}=this.template;this.art.widtht.dataset.color===this.option.color.toUpperCase());a&&t(a,"apd-active"),e(i,this.option.visible?"\u5173\u95ed\u5f39\u5e55":"\u6253\u5f00\u5f39\u5e55"),this.resize()}mount(t){if(!this.lifecycle.active)return;const{errorHandle:e}=this.utils,i="string"===typeof t?document.querySelector(t):t;e(i,`Can not find the mount point: ${t}`),this.append(i,this.template.$danmuku),this.template.$mount=i,this.reset()}destroy(){if(this.lifecycle.closed)return;this.lifecycle.close(),clearTimeout(this.timer),this.timer=null,this.emitting=!1,this.isLock=!1;const t=this.template.$danmuku;(null==t?void 0:t.parentElement)&&t.parentElement.removeChild(t)}}function st(t){return e=>{const i=new O(e,t);let n;try{n=e.isDestroy?void 0:new nt(e,i),!e.isDestroy&&i.option.heatmap&&q(e,i,i.option.heatmap)}catch(s){try{null==n||n.destroy()}catch(a){}try{i.destroy()}catch(a){}throw s}return{name:"artplayerPluginDanmuku",emit:i.emit.bind(i),load:i.load.bind(i),config:i.config.bind(i),hide:i.hide.bind(i),show:i.show.bind(i),reset:i.reset.bind(i),mount:n?n.mount.bind(n):()=>{},get option(){return i.option},get isHide(){return i.isHide},get isStop(){return i.isStop}}}}return st.icons=nt.icons,st}); diff --git a/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.mjs b/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.mjs index 5b9fd98ca..79a9fa235 100644 --- a/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.mjs +++ b/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-danmuku.js v5.3.0 + * artplayer-plugin-danmuku.js v6.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. @@ -1001,7 +1001,7 @@ class WorkerClient { throw error; } } -const jsContent = '/*!\n * artplayer-plugin-danmuku.js v5.3.0\n * Github: https://github.com/zhw2590582/ArtPlayer\n * (c) 2017-2026 Harvey Zhao\n * Released under the MIT License.\n */\nfunction getDanmuTop({ target, visibles, clientWidth, clientHeight, marginBottom, marginTop, antiOverlap }) {\n const maxTop = clientHeight - marginBottom;\n const danmus = visibles.filter((item) => item.mode === target.mode && item.top <= maxTop).sort((prev, next) => prev.top - next.top);\n if (danmus.length === 0) {\n if (target.mode === 2) {\n return maxTop - target.height;\n } else {\n return marginTop;\n }\n }\n danmus.unshift({\n type: "top",\n top: 0,\n left: 0,\n right: 0,\n height: marginTop,\n width: clientWidth,\n speed: 0,\n distance: clientWidth\n });\n danmus.push({\n type: "bottom",\n top: maxTop,\n left: 0,\n right: 0,\n height: marginBottom,\n width: clientWidth,\n speed: 0,\n distance: clientWidth\n });\n if (target.mode === 2) {\n for (let index = danmus.length - 2; index >= 0; index -= 1) {\n const item = danmus[index];\n const prev = danmus[index + 1];\n const itemBottom = item.top + item.height;\n const diff = prev.top - itemBottom;\n if (diff >= target.height) {\n return prev.top - target.height;\n }\n }\n } else {\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 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)\n return false;\n if (target.speed < danmu.speed)\n return true;\n const overlapTime = danmu.right / (target.speed - danmu.speed);\n if (overlapTime > danmu.time)\n return true;\n return false;\n });\n });\n return result && result[0] ? result[0].top : void 0;\n }\n // 静止弹幕没有重叠问题\n case 1:\n case 2:\n return void 0;\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 case 2:\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 }\n return topMap[0][0].top;\n }\n}\nonmessage = (event) => {\n const { data } = event;\n if (!data.id || !data.type)\n return;\n const fns = { getDanmuTop };\n const fn = fns[data.type];\n const result = fn(data);\n globalThis.postMessage({\n result,\n id: data.id\n });\n};\n'; +const jsContent = '/*!\n * artplayer-plugin-danmuku.js v6.0.0\n * Github: https://github.com/zhw2590582/ArtPlayer\n * (c) 2017-2026 Harvey Zhao\n * Released under the MIT License.\n */\nfunction getDanmuTop({ target, visibles, clientWidth, clientHeight, marginBottom, marginTop, antiOverlap }) {\n const maxTop = clientHeight - marginBottom;\n const danmus = visibles.filter((item) => item.mode === target.mode && item.top <= maxTop).sort((prev, next) => prev.top - next.top);\n if (danmus.length === 0) {\n if (target.mode === 2) {\n return maxTop - target.height;\n } else {\n return marginTop;\n }\n }\n danmus.unshift({\n type: "top",\n top: 0,\n left: 0,\n right: 0,\n height: marginTop,\n width: clientWidth,\n speed: 0,\n distance: clientWidth\n });\n danmus.push({\n type: "bottom",\n top: maxTop,\n left: 0,\n right: 0,\n height: marginBottom,\n width: clientWidth,\n speed: 0,\n distance: clientWidth\n });\n if (target.mode === 2) {\n for (let index = danmus.length - 2; index >= 0; index -= 1) {\n const item = danmus[index];\n const prev = danmus[index + 1];\n const itemBottom = item.top + item.height;\n const diff = prev.top - itemBottom;\n if (diff >= target.height) {\n return prev.top - target.height;\n }\n }\n } else {\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 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)\n return false;\n if (target.speed < danmu.speed)\n return true;\n const overlapTime = danmu.right / (target.speed - danmu.speed);\n if (overlapTime > danmu.time)\n return true;\n return false;\n });\n });\n return result && result[0] ? result[0].top : void 0;\n }\n // 静止弹幕没有重叠问题\n case 1:\n case 2:\n return void 0;\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 case 2:\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 }\n return topMap[0][0].top;\n }\n}\nonmessage = (event) => {\n const { data } = event;\n if (!data.id || !data.type)\n return;\n const fns = { getDanmuTop };\n const fn = fns[data.type];\n const result = fn(data);\n globalThis.postMessage({\n result,\n id: data.id\n });\n};\n'; const blob = typeof self !== "undefined" && self.Blob && new Blob(["URL.revokeObjectURL(import.meta.url);", jsContent], { type: "text/javascript;charset=utf-8" }); function WorkerWrapper(options) { let objURL; diff --git a/packages/artplayer-plugin-danmuku/package.json b/packages/artplayer-plugin-danmuku/package.json index 545cfa273..4487dc7e3 100644 --- a/packages/artplayer-plugin-danmuku/package.json +++ b/packages/artplayer-plugin-danmuku/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-plugin-danmuku", - "version": "5.3.0", + "version": "6.0.0", "description": "Danmuku plugin for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", diff --git a/packages/artplayer-plugin-dash-control/CHANGELOG.md b/packages/artplayer-plugin-dash-control/CHANGELOG.md new file mode 100644 index 000000000..bd79fe0ef --- /dev/null +++ b/packages/artplayer-plugin-dash-control/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed SDK 4.x/5.x adapter, selector reconciliation and cleanup. +- Preserve published options/events; distinguish bare-SDK failures from candidate behavior. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-plugin-dash-control/dist/artplayer-plugin-dash-control.js b/packages/artplayer-plugin-dash-control/dist/artplayer-plugin-dash-control.js index f94b557ee..2dd468a75 100644 --- a/packages/artplayer-plugin-dash-control/dist/artplayer-plugin-dash-control.js +++ b/packages/artplayer-plugin-dash-control/dist/artplayer-plugin-dash-control.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-dash-control.js v1.1.0 + * artplayer-plugin-dash-control.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-dash-control/dist/artplayer-plugin-dash-control.legacy.js b/packages/artplayer-plugin-dash-control/dist/artplayer-plugin-dash-control.legacy.js index 736a240ed..1c6d57d21 100644 --- a/packages/artplayer-plugin-dash-control/dist/artplayer-plugin-dash-control.legacy.js +++ b/packages/artplayer-plugin-dash-control/dist/artplayer-plugin-dash-control.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-dash-control.js v1.1.0 + * artplayer-plugin-dash-control.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-dash-control/dist/artplayer-plugin-dash-control.mjs b/packages/artplayer-plugin-dash-control/dist/artplayer-plugin-dash-control.mjs index 8ca69cc86..384d11bfb 100644 --- a/packages/artplayer-plugin-dash-control/dist/artplayer-plugin-dash-control.mjs +++ b/packages/artplayer-plugin-dash-control/dist/artplayer-plugin-dash-control.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-dash-control.js v1.1.0 + * artplayer-plugin-dash-control.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-dash-control/package.json b/packages/artplayer-plugin-dash-control/package.json index 92b095b9a..273debf41 100644 --- a/packages/artplayer-plugin-dash-control/package.json +++ b/packages/artplayer-plugin-dash-control/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-plugin-dash-control", - "version": "1.1.0", + "version": "2.0.0", "description": "Dash control plugin for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", diff --git a/packages/artplayer-plugin-document-pip/CHANGELOG.md b/packages/artplayer-plugin-document-pip/CHANGELOG.md new file mode 100644 index 000000000..0edcc9905 --- /dev/null +++ b/packages/artplayer-plugin-document-pip/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed document/window lifetime and content restoration. +- Preserve existing API and DOM ownership; actual document-PiP/device gates remain. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-plugin-document-pip/dist/artplayer-plugin-document-pip.js b/packages/artplayer-plugin-document-pip/dist/artplayer-plugin-document-pip.js index 7751a1940..63e221da2 100644 --- a/packages/artplayer-plugin-document-pip/dist/artplayer-plugin-document-pip.js +++ b/packages/artplayer-plugin-document-pip/dist/artplayer-plugin-document-pip.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-document-pip.js v1.1.0 + * artplayer-plugin-document-pip.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-document-pip/dist/artplayer-plugin-document-pip.legacy.js b/packages/artplayer-plugin-document-pip/dist/artplayer-plugin-document-pip.legacy.js index be093411d..908e543c3 100644 --- a/packages/artplayer-plugin-document-pip/dist/artplayer-plugin-document-pip.legacy.js +++ b/packages/artplayer-plugin-document-pip/dist/artplayer-plugin-document-pip.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-document-pip.js v1.1.0 + * artplayer-plugin-document-pip.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-document-pip/dist/artplayer-plugin-document-pip.mjs b/packages/artplayer-plugin-document-pip/dist/artplayer-plugin-document-pip.mjs index e6eb109cc..0cad867ef 100644 --- a/packages/artplayer-plugin-document-pip/dist/artplayer-plugin-document-pip.mjs +++ b/packages/artplayer-plugin-document-pip/dist/artplayer-plugin-document-pip.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-document-pip.js v1.1.0 + * artplayer-plugin-document-pip.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-document-pip/package.json b/packages/artplayer-plugin-document-pip/package.json index 9cf18aed8..1d3813e24 100644 --- a/packages/artplayer-plugin-document-pip/package.json +++ b/packages/artplayer-plugin-document-pip/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-plugin-document-pip", - "version": "1.1.0", + "version": "2.0.0", "description": "Document PIP plugin for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", diff --git a/packages/artplayer-plugin-hls-control/CHANGELOG.md b/packages/artplayer-plugin-hls-control/CHANGELOG.md new file mode 100644 index 000000000..4429f6259 --- /dev/null +++ b/packages/artplayer-plugin-hls-control/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed track/quality control and listener/selector lifecycle. +- Preserve supported hls.js combinations and source-topology cleanup; native worker/device gaps remain. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-plugin-hls-control/dist/artplayer-plugin-hls-control.js b/packages/artplayer-plugin-hls-control/dist/artplayer-plugin-hls-control.js index 6cb978e5d..10e788a60 100644 --- a/packages/artplayer-plugin-hls-control/dist/artplayer-plugin-hls-control.js +++ b/packages/artplayer-plugin-hls-control/dist/artplayer-plugin-hls-control.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-hls-control.js v1.1.0 + * artplayer-plugin-hls-control.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-hls-control/dist/artplayer-plugin-hls-control.legacy.js b/packages/artplayer-plugin-hls-control/dist/artplayer-plugin-hls-control.legacy.js index 1e53f1cde..79bcb10f0 100644 --- a/packages/artplayer-plugin-hls-control/dist/artplayer-plugin-hls-control.legacy.js +++ b/packages/artplayer-plugin-hls-control/dist/artplayer-plugin-hls-control.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-hls-control.js v1.1.0 + * artplayer-plugin-hls-control.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-hls-control/dist/artplayer-plugin-hls-control.mjs b/packages/artplayer-plugin-hls-control/dist/artplayer-plugin-hls-control.mjs index a31dc0596..ddea4c4e8 100644 --- a/packages/artplayer-plugin-hls-control/dist/artplayer-plugin-hls-control.mjs +++ b/packages/artplayer-plugin-hls-control/dist/artplayer-plugin-hls-control.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-hls-control.js v1.1.0 + * artplayer-plugin-hls-control.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-hls-control/package.json b/packages/artplayer-plugin-hls-control/package.json index cfa076b00..2732a73f9 100644 --- a/packages/artplayer-plugin-hls-control/package.json +++ b/packages/artplayer-plugin-hls-control/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-plugin-hls-control", - "version": "1.1.0", + "version": "2.0.0", "description": "Hls control plugin for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", diff --git a/packages/artplayer-plugin-jassub/CHANGELOG.md b/packages/artplayer-plugin-jassub/CHANGELOG.md new file mode 100644 index 000000000..12dd2a489 --- /dev/null +++ b/packages/artplayer-plugin-jassub/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed renderer/Worker/font ownership and native drawing compatibility. +- Preserve root entry and precise /runtime; hybrid late drawing issue remains an explicit blocker. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md), [types/README.md](./types/README.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-plugin-jassub/dist/artplayer-plugin-jassub.js b/packages/artplayer-plugin-jassub/dist/artplayer-plugin-jassub.js index 1c4ba59ef..7e3e67573 100644 --- a/packages/artplayer-plugin-jassub/dist/artplayer-plugin-jassub.js +++ b/packages/artplayer-plugin-jassub/dist/artplayer-plugin-jassub.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-jassub.js v1.1.0 + * artplayer-plugin-jassub.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-jassub/dist/artplayer-plugin-jassub.legacy.js b/packages/artplayer-plugin-jassub/dist/artplayer-plugin-jassub.legacy.js index 884304c77..ffe2881a7 100644 --- a/packages/artplayer-plugin-jassub/dist/artplayer-plugin-jassub.legacy.js +++ b/packages/artplayer-plugin-jassub/dist/artplayer-plugin-jassub.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-jassub.js v1.1.0 + * artplayer-plugin-jassub.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-jassub/dist/artplayer-plugin-jassub.mjs b/packages/artplayer-plugin-jassub/dist/artplayer-plugin-jassub.mjs index 5cb773479..3e70a978d 100644 --- a/packages/artplayer-plugin-jassub/dist/artplayer-plugin-jassub.mjs +++ b/packages/artplayer-plugin-jassub/dist/artplayer-plugin-jassub.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-jassub.js v1.1.0 + * artplayer-plugin-jassub.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-jassub/package.json b/packages/artplayer-plugin-jassub/package.json index 13706a762..a6eb58cf5 100644 --- a/packages/artplayer-plugin-jassub/package.json +++ b/packages/artplayer-plugin-jassub/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-plugin-jassub", - "version": "1.1.0", + "version": "2.0.0", "description": "jassub plugin for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", diff --git a/packages/artplayer-plugin-multiple-subtitles/CHANGELOG.md b/packages/artplayer-plugin-multiple-subtitles/CHANGELOG.md new file mode 100644 index 000000000..265720ab8 --- /dev/null +++ b/packages/artplayer-plugin-multiple-subtitles/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed caption parsing, ASS conversion, merging and load cancellation. +- Retain published root declaration; /runtime describes actual behavior and conflicting older extraction migration. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-plugin-multiple-subtitles/dist/artplayer-plugin-multiple-subtitles.js b/packages/artplayer-plugin-multiple-subtitles/dist/artplayer-plugin-multiple-subtitles.js index 3c16d0790..9b641adaa 100644 --- a/packages/artplayer-plugin-multiple-subtitles/dist/artplayer-plugin-multiple-subtitles.js +++ b/packages/artplayer-plugin-multiple-subtitles/dist/artplayer-plugin-multiple-subtitles.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-multiple-subtitles.js v1.2.0 + * artplayer-plugin-multiple-subtitles.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-multiple-subtitles/dist/artplayer-plugin-multiple-subtitles.legacy.js b/packages/artplayer-plugin-multiple-subtitles/dist/artplayer-plugin-multiple-subtitles.legacy.js index ee39b3f8b..4941fd624 100644 --- a/packages/artplayer-plugin-multiple-subtitles/dist/artplayer-plugin-multiple-subtitles.legacy.js +++ b/packages/artplayer-plugin-multiple-subtitles/dist/artplayer-plugin-multiple-subtitles.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-multiple-subtitles.js v1.2.0 + * artplayer-plugin-multiple-subtitles.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-multiple-subtitles/dist/artplayer-plugin-multiple-subtitles.mjs b/packages/artplayer-plugin-multiple-subtitles/dist/artplayer-plugin-multiple-subtitles.mjs index c67f10fae..835eca5fa 100644 --- a/packages/artplayer-plugin-multiple-subtitles/dist/artplayer-plugin-multiple-subtitles.mjs +++ b/packages/artplayer-plugin-multiple-subtitles/dist/artplayer-plugin-multiple-subtitles.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-multiple-subtitles.js v1.2.0 + * artplayer-plugin-multiple-subtitles.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-multiple-subtitles/package.json b/packages/artplayer-plugin-multiple-subtitles/package.json index bc9ea70f2..4eb8b2853 100644 --- a/packages/artplayer-plugin-multiple-subtitles/package.json +++ b/packages/artplayer-plugin-multiple-subtitles/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-plugin-multiple-subtitles", - "version": "1.2.0", + "version": "2.0.0", "description": "multiple subtitles plugin for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", diff --git a/packages/artplayer-plugin-vast/CHANGELOG.md b/packages/artplayer-plugin-vast/CHANGELOG.md new file mode 100644 index 000000000..0d11159dd --- /dev/null +++ b/packages/artplayer-plugin-vast/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed SDK/loading/disposal and published initialization timing by default. +- Approved workspace-1.2 opt-in timing and /runtime type migration; SDK/network and device evidence remain separate. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-plugin-vast/dist/artplayer-plugin-vast.js b/packages/artplayer-plugin-vast/dist/artplayer-plugin-vast.js index 1de2899bd..afcc2ad78 100644 --- a/packages/artplayer-plugin-vast/dist/artplayer-plugin-vast.js +++ b/packages/artplayer-plugin-vast/dist/artplayer-plugin-vast.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-vast.js v1.2.0 + * artplayer-plugin-vast.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-vast/dist/artplayer-plugin-vast.legacy.js b/packages/artplayer-plugin-vast/dist/artplayer-plugin-vast.legacy.js index 1161f5d78..63045a7b9 100644 --- a/packages/artplayer-plugin-vast/dist/artplayer-plugin-vast.legacy.js +++ b/packages/artplayer-plugin-vast/dist/artplayer-plugin-vast.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-vast.js v1.2.0 + * artplayer-plugin-vast.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-vast/dist/artplayer-plugin-vast.mjs b/packages/artplayer-plugin-vast/dist/artplayer-plugin-vast.mjs index 1ad7c018d..b28382d2e 100644 --- a/packages/artplayer-plugin-vast/dist/artplayer-plugin-vast.mjs +++ b/packages/artplayer-plugin-vast/dist/artplayer-plugin-vast.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-vast.js v1.2.0 + * artplayer-plugin-vast.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-vast/package.json b/packages/artplayer-plugin-vast/package.json index 34d92277b..4a91d88fc 100644 --- a/packages/artplayer-plugin-vast/package.json +++ b/packages/artplayer-plugin-vast/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-plugin-vast", - "version": "1.2.0", + "version": "2.0.0", "description": "VAST plugin for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", diff --git a/packages/artplayer-plugin-vtt-thumbnail/CHANGELOG.md b/packages/artplayer-plugin-vtt-thumbnail/CHANGELOG.md new file mode 100644 index 000000000..3fbc1548b --- /dev/null +++ b/packages/artplayer-plugin-vtt-thumbnail/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed VTT parsing, sprite lifecycle and cleanup. +- Preserve published root types and precise /runtime; document supported old-core combinations and name conflicts. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-plugin-vtt-thumbnail/dist/artplayer-plugin-vtt-thumbnail.js b/packages/artplayer-plugin-vtt-thumbnail/dist/artplayer-plugin-vtt-thumbnail.js index 10778ae94..c68f61559 100644 --- a/packages/artplayer-plugin-vtt-thumbnail/dist/artplayer-plugin-vtt-thumbnail.js +++ b/packages/artplayer-plugin-vtt-thumbnail/dist/artplayer-plugin-vtt-thumbnail.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-vtt-thumbnail.js v1.1.0 + * artplayer-plugin-vtt-thumbnail.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-vtt-thumbnail/dist/artplayer-plugin-vtt-thumbnail.legacy.js b/packages/artplayer-plugin-vtt-thumbnail/dist/artplayer-plugin-vtt-thumbnail.legacy.js index 1fcab850c..d92478b86 100644 --- a/packages/artplayer-plugin-vtt-thumbnail/dist/artplayer-plugin-vtt-thumbnail.legacy.js +++ b/packages/artplayer-plugin-vtt-thumbnail/dist/artplayer-plugin-vtt-thumbnail.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-vtt-thumbnail.js v1.1.0 + * artplayer-plugin-vtt-thumbnail.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-vtt-thumbnail/dist/artplayer-plugin-vtt-thumbnail.mjs b/packages/artplayer-plugin-vtt-thumbnail/dist/artplayer-plugin-vtt-thumbnail.mjs index 4eed02c3a..64c3eeb94 100644 --- a/packages/artplayer-plugin-vtt-thumbnail/dist/artplayer-plugin-vtt-thumbnail.mjs +++ b/packages/artplayer-plugin-vtt-thumbnail/dist/artplayer-plugin-vtt-thumbnail.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-plugin-vtt-thumbnail.js v1.1.0 + * artplayer-plugin-vtt-thumbnail.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-plugin-vtt-thumbnail/package.json b/packages/artplayer-plugin-vtt-thumbnail/package.json index 4fa5f6d7b..1c357c10d 100644 --- a/packages/artplayer-plugin-vtt-thumbnail/package.json +++ b/packages/artplayer-plugin-vtt-thumbnail/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-plugin-vtt-thumbnail", - "version": "1.1.0", + "version": "2.0.0", "description": "vtt thumbnail plugin for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", diff --git a/packages/artplayer-proxy-canvas/CHANGELOG.md b/packages/artplayer-proxy-canvas/CHANGELOG.md new file mode 100644 index 000000000..22cbaff4c --- /dev/null +++ b/packages/artplayer-proxy-canvas/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed canvas/media shim, source and native subtitle-track ownership. +- Retain published root types with precise /runtime and documented older type conflicts. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-proxy-canvas/dist/artplayer-proxy-canvas.js b/packages/artplayer-proxy-canvas/dist/artplayer-proxy-canvas.js index 87e8419c7..4720d732a 100644 --- a/packages/artplayer-proxy-canvas/dist/artplayer-proxy-canvas.js +++ b/packages/artplayer-proxy-canvas/dist/artplayer-proxy-canvas.js @@ -1,5 +1,5 @@ /*! - * artplayer-proxy-canvas.js v1.1.0 + * artplayer-proxy-canvas.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-proxy-canvas/dist/artplayer-proxy-canvas.legacy.js b/packages/artplayer-proxy-canvas/dist/artplayer-proxy-canvas.legacy.js index e4374cd63..05b773466 100644 --- a/packages/artplayer-proxy-canvas/dist/artplayer-proxy-canvas.legacy.js +++ b/packages/artplayer-proxy-canvas/dist/artplayer-proxy-canvas.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-proxy-canvas.js v1.1.0 + * artplayer-proxy-canvas.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-proxy-canvas/dist/artplayer-proxy-canvas.mjs b/packages/artplayer-proxy-canvas/dist/artplayer-proxy-canvas.mjs index a87f39755..a91fc09ad 100644 --- a/packages/artplayer-proxy-canvas/dist/artplayer-proxy-canvas.mjs +++ b/packages/artplayer-proxy-canvas/dist/artplayer-proxy-canvas.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-proxy-canvas.js v1.1.0 + * artplayer-proxy-canvas.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-proxy-canvas/package.json b/packages/artplayer-proxy-canvas/package.json index 6b1a88bbd..046d66457 100644 --- a/packages/artplayer-proxy-canvas/package.json +++ b/packages/artplayer-proxy-canvas/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-proxy-canvas", - "version": "1.1.0", + "version": "2.0.0", "description": "canvas proxy for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", diff --git a/packages/artplayer-proxy-mediabunny/CHANGELOG.md b/packages/artplayer-proxy-mediabunny/CHANGELOG.md new file mode 100644 index 000000000..34411bd5a --- /dev/null +++ b/packages/artplayer-proxy-mediabunny/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed engine/shim, input/HLS, audio/video pipelines and track controls. +- Preserve media-like event ordering and published entries; native codec/long-duration/device evidence remains scoped. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.js b/packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.js index 87b7001d9..56ae0662b 100644 --- a/packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.js +++ b/packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.js @@ -1,5 +1,5 @@ /*! - * artplayer-proxy-mediabunny.js v1.2.0 + * artplayer-proxy-mediabunny.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.legacy.js b/packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.legacy.js index fda5de103..22c37d182 100644 --- a/packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.legacy.js +++ b/packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-proxy-mediabunny.js v1.2.0 + * artplayer-proxy-mediabunny.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.mjs b/packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.mjs index c30d6d43d..08dabaf0a 100644 --- a/packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.mjs +++ b/packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-proxy-mediabunny.js v1.2.0 + * artplayer-proxy-mediabunny.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-proxy-mediabunny/package.json b/packages/artplayer-proxy-mediabunny/package.json index 3744cbc50..a7d506717 100644 --- a/packages/artplayer-proxy-mediabunny/package.json +++ b/packages/artplayer-proxy-mediabunny/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-proxy-mediabunny", - "version": "1.2.0", + "version": "2.0.0", "description": "mediabunny proxy for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", @@ -46,7 +46,9 @@ "browserslist": "last 1 Chrome version", "typesVersions": { "*": { - "legacy": ["types/artplayer-proxy-mediabunny.d.ts"] + "legacy": [ + "types/artplayer-proxy-mediabunny.d.ts" + ] } }, "dependencies": { diff --git a/packages/artplayer-tool-iframe/CHANGELOG.md b/packages/artplayer-tool-iframe/CHANGELOG.md new file mode 100644 index 000000000..31dea08c8 --- /dev/null +++ b/packages/artplayer-tool-iframe/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed cross-frame protocol, navigation generations, origin checks and teardown. +- Preserve the documented migration from artplayer-plugin-iframe; new-name rights and distribution rollback are not inferred from 404. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-tool-iframe/dist/artplayer-tool-iframe.js b/packages/artplayer-tool-iframe/dist/artplayer-tool-iframe.js index 58a109a1d..0e0174154 100644 --- a/packages/artplayer-tool-iframe/dist/artplayer-tool-iframe.js +++ b/packages/artplayer-tool-iframe/dist/artplayer-tool-iframe.js @@ -1,5 +1,5 @@ /*! - * artplayer-tool-iframe.js v1.1.0 + * artplayer-tool-iframe.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-tool-iframe/dist/artplayer-tool-iframe.legacy.js b/packages/artplayer-tool-iframe/dist/artplayer-tool-iframe.legacy.js index 171c31876..96f5cf98f 100644 --- a/packages/artplayer-tool-iframe/dist/artplayer-tool-iframe.legacy.js +++ b/packages/artplayer-tool-iframe/dist/artplayer-tool-iframe.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-tool-iframe.js v1.1.0 + * artplayer-tool-iframe.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-tool-iframe/dist/artplayer-tool-iframe.mjs b/packages/artplayer-tool-iframe/dist/artplayer-tool-iframe.mjs index e7076f494..3c8c2721a 100644 --- a/packages/artplayer-tool-iframe/dist/artplayer-tool-iframe.mjs +++ b/packages/artplayer-tool-iframe/dist/artplayer-tool-iframe.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-tool-iframe.js v1.1.0 + * artplayer-tool-iframe.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-tool-iframe/package.json b/packages/artplayer-tool-iframe/package.json index 03f28e4be..5a13856d2 100644 --- a/packages/artplayer-tool-iframe/package.json +++ b/packages/artplayer-tool-iframe/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-tool-iframe", - "version": "1.1.0", + "version": "2.0.0", "description": "Iframe tool for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", @@ -41,7 +41,9 @@ "browserslist": "last 1 Chrome version", "typesVersions": { "*": { - "legacy": ["types/artplayer-tool-iframe.d.ts"] + "legacy": [ + "types/artplayer-tool-iframe.d.ts" + ] } } } diff --git a/packages/artplayer-tool-thumbnail/CHANGELOG.md b/packages/artplayer-tool-thumbnail/CHANGELOG.md new file mode 100644 index 000000000..e665087e1 --- /dev/null +++ b/packages/artplayer-tool-thumbnail/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 5.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- Typed source/extraction/input/emitter ownership and actual constructor declarations. +- Approved published-3.5 default with workspace-4.4 opt-in; preserve delay/height, event and input policies and historical creat* names. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md), [types/README.md](./types/README.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-tool-thumbnail/dist/artplayer-tool-thumbnail.js b/packages/artplayer-tool-thumbnail/dist/artplayer-tool-thumbnail.js index 75a8c84a8..38ceaa3fc 100644 --- a/packages/artplayer-tool-thumbnail/dist/artplayer-tool-thumbnail.js +++ b/packages/artplayer-tool-thumbnail/dist/artplayer-tool-thumbnail.js @@ -1,5 +1,5 @@ /*! - * artplayer-tool-thumbnail.js v4.4.0 + * artplayer-tool-thumbnail.js v5.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-tool-thumbnail/dist/artplayer-tool-thumbnail.legacy.js b/packages/artplayer-tool-thumbnail/dist/artplayer-tool-thumbnail.legacy.js index 2586b02ea..d531a9e8c 100644 --- a/packages/artplayer-tool-thumbnail/dist/artplayer-tool-thumbnail.legacy.js +++ b/packages/artplayer-tool-thumbnail/dist/artplayer-tool-thumbnail.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer-tool-thumbnail.js v4.4.0 + * artplayer-tool-thumbnail.js v5.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-tool-thumbnail/dist/artplayer-tool-thumbnail.mjs b/packages/artplayer-tool-thumbnail/dist/artplayer-tool-thumbnail.mjs index 98f93576b..3fbc0e05c 100644 --- a/packages/artplayer-tool-thumbnail/dist/artplayer-tool-thumbnail.mjs +++ b/packages/artplayer-tool-thumbnail/dist/artplayer-tool-thumbnail.mjs @@ -1,5 +1,5 @@ /*! - * artplayer-tool-thumbnail.js v4.4.0 + * artplayer-tool-thumbnail.js v5.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. diff --git a/packages/artplayer-tool-thumbnail/package.json b/packages/artplayer-tool-thumbnail/package.json index 042cf5d21..a5fc9f29a 100644 --- a/packages/artplayer-tool-thumbnail/package.json +++ b/packages/artplayer-tool-thumbnail/package.json @@ -1,6 +1,6 @@ { "name": "artplayer-tool-thumbnail", - "version": "4.4.0", + "version": "5.0.0", "description": "Thumbnail tool for ArtPlayer", "author": "Harvey Zhao ", "license": "MIT", @@ -50,6 +50,7 @@ }, "files": [ "ARCHITECTURE.md", + "CHANGELOG.md", "README.md", "THIRD_PARTY_NOTICES", "dist", diff --git a/packages/artplayer-vitepress/CHANGELOG.md b/packages/artplayer-vitepress/CHANGELOG.md new file mode 100644 index 000000000..eca01abea --- /dev/null +++ b/packages/artplayer-vitepress/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 2.0.0 (unreleased) + +This is the documentation-site workspace version; it does not introduce npm publication. + +- Typed site/editor/documentation/build modules and local library declaration generation. +- Preserve URLs, examples and editor globals; font provenance, site verification and Pages gates remain. No new npm distribution. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer-vitepress/package.json b/packages/artplayer-vitepress/package.json index 9898c8764..c864c8c1c 100644 --- a/packages/artplayer-vitepress/package.json +++ b/packages/artplayer-vitepress/package.json @@ -1,7 +1,7 @@ { "name": "artplayer-vitepress", "type": "module", - "version": "1.1.0", + "version": "2.0.0", "scripts": { "dev": "vitepress dev docs", "build": "vitepress build docs", diff --git a/packages/artplayer/CHANGELOG.md b/packages/artplayer/CHANGELOG.md new file mode 100644 index 000000000..465997c89 --- /dev/null +++ b/packages/artplayer/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 6.0.0 (unreleased) + +This independent major version identifies the compatibility modernization. Existing public APIs remain the compatibility target; documented historical differences and release gates still apply. + +- TypeScript subsystems and generated public declarations; preserve root APIs and offer precise /runtime types. +- Lifecycle, source/event ownership, components, subtitles, playback/display and accessibility fixes; historical consumer matrix retained. + +Internal dependencies and public entrypoints retain their documented compatibility boundaries. No new core-major peer restriction is introduced. + +Implementation and migration details: [README.md](./README.md), [ARCHITECTURE.md](./ARCHITECTURE.md), [types/README.md](./types/README.md). + +This entry records local preparation. Candidate contents, browser/device evidence and publication still require their release checks. diff --git a/packages/artplayer/dist/artplayer.js b/packages/artplayer/dist/artplayer.js index c816b2536..d19aca10d 100644 --- a/packages/artplayer/dist/artplayer.js +++ b/packages/artplayer/dist/artplayer.js @@ -1,5 +1,5 @@ /*! - * artplayer.js v5.4.1 + * artplayer.js v6.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. @@ -67,4 +67,4 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.Artplayer=e(),define(function(){return t.Artplayer})):(t="undefined"!==typeof globalThis?globalThis:t||self).Artplayer=e()}(this,function(){"use strict";function t(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var e,r={exports:{}};var n=(e||(e=1,r.exports=function(){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}var e=Object.prototype.toString,r=function(r){if(void 0===r)return"undefined";if(null===r)return"null";var o=t(r);if("boolean"===o)return"boolean";if("string"===o)return"string";if("number"===o)return"number";if("symbol"===o)return"symbol";if("function"===o)return"GeneratorFunction"===n(r)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(r))return"array";if(function(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}(r))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(r))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(r))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(r))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(r))return"regexp";switch(n(r)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(r))return"generator";switch(o=e.call(r)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return o.slice(8,-1).toLowerCase().replace(/\s/g,"")};function n(t){return t.constructor?t.constructor.name:null}function o(t,e){var n=2{document.head.appendChild(r)}):(document.head||document.documentElement).appendChild(r)),r.textContent=e}const s=globalThis.CUSTOM_USER_AGENT??("undefined"===typeof navigator?"":navigator.userAgent),c=/^(?:(?!chrome|android).)*safari/i.test(s),l=/iPad|iPhone|iPod/i.test(s)&&("undefined"===typeof window||!window.MSStream),d=l||s.includes("Macintosh")&&"undefined"!==typeof navigator&&navigator.maxTouchPoints>=1,u=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(s)||d,p="undefined"!==typeof window&&"undefined"!==typeof document;const f={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webkitSupportsFullscreen","webkitDisplayingFullscreen","onenterpictureinpicture","onleavepictureinpicture","disablePictureInPicture","cancelVideoFrameCallback","requestVideoFrameCallback","getVideoPlaybackQuality","requestPictureInPicture","webkitEnterFullScreen","webkitEnterFullscreen","webkitExitFullScreen","webkitExitFullscreen"]};class h extends Error{constructor(t){super("Failed to release ArtPlayer resources"),this.errors=t,this.name="ResourceCleanupError"}}class m{constructor(){this.cleanups=new Set,this.disposed=!1}get closed(){return this.disposed}add(t){let e=!0;const r=()=>{e&&(e=!1,this.cleanups.delete(r),t())};return this.closed?r():this.cleanups.add(r),r}child(){const t=new m,e=this.add(()=>{t.dispose()});return t.add(()=>{e()}),t}dispose(){if(this.closed)return;this.disposed=!0;const t=[];for(const r of Array.from(this.cleanups).reverse())try{r()}catch(e){e instanceof h?t.push(...e.errors):t.push(e)}if(t.length)throw new h(t)}}const g=new WeakMap,v=new WeakMap;function y(t){const e=g.get(t);if(!e)throw new Error("ArtPlayer lifecycle has not been initialized");return e}function b(t){return y(t).scope}function w(t){const e=y(t);return e.destroying||e.scope.closed}function x(t,e,r,n,o=!1){const i=y(t);if(i.destroying||i.scope.closed)return;i.destroying=!0;const a=[],s=t=>{try{t()}catch(e){a.push(...e instanceof h?e.errors:[e])}};n&&t.template?.$video&&s(()=>t.reset()),s(()=>i.scope.dispose()),s(()=>(t.template||i.mountingTemplate)?.destroy(r));const c=e.indexOf(t);-1!==c&&e.splice(c,1),t.isDestroy=!0,o||(i.releaseContainer?.(),i.releaseContainer=void 0),s(()=>t.emit("destroy")),s(()=>i.finalizers.dispose()),o&&i.rollback&&s(i.rollback),i.rollback=void 0,i.releaseContainer?.(),i.releaseContainer=void 0;for(const l of a.slice(1))console.warn("Additional ArtPlayer cleanup failure:",l);if(a.length)throw a[0]}const k=new WeakMap;function $(t,e){const r=b(t).child();return k.set(e,r),r}function E(t){const e=k.get(t);if(!e)throw new Error("ArtPlayer component has not been registered");return e}function A(t){k.get(t)?.dispose()}function C(t,e,r,n){const o=E(e);if(o.closed)return;const i=(...t)=>{if(!o.closed)return n(...t)};t.on(r,i),o.add(()=>{t.off(r,i)})}function S(t,e){return{on:(r,n)=>{C(t,e,r,n)},proxy:(r,n,o)=>function(t,e,r,n,o){const i=E(e);if(i.closed)return()=>{};const a=t.events.proxy(r,n,t=>{if(!i.closed)return o(t)});return i.add(()=>{t.events.remove(a)})}(t,e,r,n,o)}}function T(t){if(t.composedPath)return t.composedPath();const e=[];let r=t.target;for(;r;)e.push(r),r=r.parentNode??null;return"undefined"===typeof window||e.includes(window)||e.push(window),e}function L(t,e){return T(t).includes(e)}function P(){const t=document.createElement("div");return t.style.display="flex","flex"===t.style.display}function M(t){return t.getBoundingClientRect()}function z(){const t=document.createElement("div");t.style.cssText="position:fixed;top:env(safe-area-inset-top,0px);right:env(safe-area-inset-right,0px);bottom:env(safe-area-inset-bottom,0px);left:env(safe-area-inset-left,0px);pointer-events:none;visibility:hidden;";try{document.body.appendChild(t);const e=getComputedStyle(t);return{top:Number.parseFloat(e.top)||0,right:Number.parseFloat(e.right)||0,bottom:Number.parseFloat(e.bottom)||0,left:Number.parseFloat(e.left)||0}}finally{t.remove()}}function R(t,e=document){return e.querySelector(t)}function O(t,e){return t.classList.add(e)}function D(t,e){return t.classList.remove(e)}function I(t,e){return t.classList.contains(e)}function N(t,e){return e instanceof Element?t.appendChild(e):t.insertAdjacentHTML("beforeend",String(e)),t.lastElementChild||t.lastChild}function _(t){return Array.from(t.parentElement.children).filter(e=>e!==t)}function W(t,e){_(t).forEach(t=>D(t,e)),O(t,e)}function F(t,e){return e.parentNode.replaceChild(t,e),t}function V(t){return document.createElement(t)}function Y(t,e,r="top"){u||(t.setAttribute("aria-label",e),O(t,"hint--rounded"),O(t,`hint--${r}`))}function B(t="",e=""){const r=V("i");return O(r,"art-icon"),O(r,`art-icon-${t}`),N(r,e),r}function H(t,e,r){return t.style[e]=r,t}function j(t,e){for(const r in e)H(t,r,e[r]);return t}function q(t,e,r){return new Promise((n,o)=>{const i=r?r.child():new m;let a=!1,s=()=>{};function c(t){if(!a){a=!0;try{i.dispose()}catch(e){console.warn("Additional image cleanup failure:",e)}try{s()}catch(e){console.warn("Additional image cleanup failure:",e)}o(t)}}function l(t){if(!a&&!i.closed){a=!0;try{i.dispose(),n(t)}catch(e){try{s()}finally{o(e)}}}}if(i.add(()=>{if(!a){a=!0;try{s()}finally{n(void 0)}}}),!i.closed)try{const n=new Image;d(n,()=>{if(!e||1===e)return void l(n);const t=document.createElement("canvas"),o=t.getContext("2d");if(t.width=n.width*e,t.height=n.height*e,!o)throw new TypeError("Canvas 2D context is unavailable");a||i.closed||(o.drawImage(n,0,0,t.width,t.height),a||i.closed||t.toBlob(t=>{if(!a&&!i.closed)try{if(!t)throw new Error("Unable to encode thumbnail image");const e=URL.createObjectURL(t);let n=!1;const o=()=>{n||(n=!0,URL.revokeObjectURL(e))};if(s=r?r.add(o):o,a||i.closed)return void s();const c=new Image;d(c,()=>l(c)),i.closed||(c.src=e)}catch(e){c(e)}}))}),i.closed||(n.src=t)}catch(u){c(u)}function d(e,r){e.onload=()=>{if(!a&&!i.closed)try{r()}catch(u){c(u)}},e.onerror=()=>c(new Error(`Image load failed: ${t}`)),i.add(()=>{e.onload=null,e.onerror=null,a||e.removeAttribute("src")})}})}class U extends Error{constructor(t,e){super(t),"captureStackTrace"in Error&&"function"===typeof Error.captureStackTrace&&Error.captureStackTrace(this,e||this.constructor),this.name="ArtPlayerError"}}function X(t,e){if(!t)throw new U(e);return t}function G(t){const e=t;return e&&"function"===typeof e.catch?e.catch(()=>{}):t}function K(t){const e=t.search(/[?#]/),r=(e<0?t:t.slice(0,e)).trim().toLowerCase();return r.slice(r.lastIndexOf(".")+1)}function Z(t,e){const r=document.createElement("a");r.style.display="none",r.href=t,r.download=e,document.body.appendChild(r);try{r.click()}finally{r.remove()}}function J(t,e,r){return Math.max(Math.min(t,Math.max(e,r)),Math.min(e,r))}function Q(t){return t.charAt(0).toUpperCase()+t.slice(1)}function tt(t){if(!t)return"00:00";const e=Math.floor(t/3600),r=Math.floor((t-3600*e)/60),n=Math.floor(t-3600*e-60*r);return(e>0?[e,r,n]:[r,n]).map(t=>t<10?`0${t}`:String(t)).join(":")}const et={"&":"&","<":"<",">":">","'":"'",'"':"""},rt={"&":"&","<":"<",">":">","'":"'",""":'"'},nt=/(&|<|>|'|")/g;function ot(t){return t.replace(/[&<>'"]/g,t=>et[t]||t)}const it=Object.defineProperty,{hasOwnProperty:at}=Object.prototype;function st(t,e){return at.call(t,e)}function ct(t,e){return Object.getOwnPropertyDescriptor(t,e)}function lt(...t){const e=t=>!!t&&"object"===typeof t&&!Array.isArray(t);return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=t[n],i=r[n];let a;a=Array.isArray(o)&&Array.isArray(i)?o.concat(...i):e(o)&&e(i)?lt(o,i):i,it(t,n,{value:a,enumerable:!0,configurable:!0,writable:!0})}),t),{})}function dt(t){return"WEBVTT \r\n\r\n".concat((e=t,e.replace(/(\d\d:\d\d:\d\d)[,.](\d+)/g,(t,e,r)=>{let n=r.slice(0,3);return 1===r.length&&(n=`${r}00`),2===r.length&&(n=`${r}0`),`${e},${n}`})).replace(/\{\\([ibu])\}/g,"").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").replace(/\{[\s\S]*?\}/g,"").concat("\r\n\r\n"));var e}function ut(t){return URL.createObjectURL(new Blob([t],{type:"text/vtt"}))}function pt(t){const e=new RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i");function r(t=""){return t.split(/[:.]/).map((t,e,r)=>{if(e===r.length-1){if(1===t.length)return`.${t}00`;if(2===t.length)return`.${t}0`}else if(1===t.length)return(0===e?"0":":0")+t;return 0===e?t:e===r.length-1?`.${t}`:`:${t}`}).join("")}return`WEBVTT\n\n${t.split(/\r?\n/).map(t=>{const n=t.match(e);if(!n)return null;const[,o="",i="",,,a=""]=n;return{start:r(o.trim()),end:r(i.trim()),text:a.replace(/\{[\s\S]*?\}/g,"").replace(/(\\N)/g,"\n").trim().split(/\r?\n/).map(t=>t.trim()).join("\n")}}).filter(t=>t).map((t,e)=>t?`${e+1}\n${t.start} --\x3e ${t.end}\n${t.text}`:"").filter(t=>t.trim()).join("\n\n")}`}const ft=Object.freeze(Object.defineProperty({__proto__:null,ArtPlayerError:U,addClass:O,append:N,assToVtt:pt,capitalize:Q,clamp:J,createElement:V,debounce:function(t,e){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>(r=void 0,t.apply(this,n)),e)}},def:it,download:Z,errorHandle:X,escape:ot,get:ct,getComposedPath:T,getExt:K,getIcon:B,getRect:M,getSafeAreaInsets:z,getStyle:function(t,e,r=!0){const n=window.getComputedStyle(t,null).getPropertyValue(e);return r?Number.parseFloat(n):n},has:st,hasClass:I,includeFromEvent:L,inverseClass:W,isBrowser:p,isIOS:l,isIOS13:d,isInViewport:function(t,e=0){const r=t.getBoundingClientRect(),n=window.innerHeight||document.documentElement.clientHeight,o=window.innerWidth||document.documentElement.clientWidth,i=r.top-e<=n&&r.top+r.height+e>=0,a=r.left-e<=o+e&&r.left+r.width+e>=0;return i&&a},isMobile:u,isSafari:c,loadImg:function(t,e){return q(t,e,void 0)},mergeDeep:lt,query:R,queryAll:function(t,e=document){return Array.from(e.querySelectorAll(t))},remove:function(t){return t.parentNode.removeChild(t)},removeClass:D,replaceElement:F,secondToTime:tt,setStyle:H,setStyleText:a,setStyles:j,siblings:_,silencePromise:G,sleep:function(t=0){return new Promise(e=>setTimeout(e,t))},srtToVtt:dt,supportsFlex:P,throttle:function(t,e){let r=!1;return function(...n){r||(t.apply(this,n),r=!0,setTimeout(()=>{r=!1},e))}},tooltip:Y,unescape:function(t){return t.replace(nt,t=>rt[t]||t)},userAgent:s,vttToBlob:ut},Symbol.toStringTag,{value:"Module"}));function ht(){}function mt(t,e,r,n,o={}){const{capture:i=!1,once:a=!1,signal:s}=o;if(t.closed||s?.aborted)return ht;let c=ht;function l(e){a&&c(),t.closed||("function"===typeof n?n.call(this,e):n.handleEvent(e))}return e.addEventListener(r,l,o),c=t.add(()=>{try{e.removeEventListener(r,l,i)}finally{s?.removeEventListener("abort",c)}}),s?.addEventListener("abort",c,{once:!0}),c}function gt(t,e,r){if(t.closed)return ht;let n=!0,o=ht;const i=setTimeout(()=>{n&&(o(),t.closed||e())},r);return o=t.add(()=>{n=!1,clearTimeout(i)}),o}function vt(t,e=0){return t.closed?Promise.resolve(!1):new Promise(r=>{let n=!1,o=ht;const i=setTimeout(()=>{n=!0,o(),r(!0)},e);o=t.add(()=>{clearTimeout(i),n||r(!1)})})}const yt=new WeakSet;function bt(t){yt.add(t),t.preventDefault()}function wt(t){return!t.altKey&&!t.ctrlKey&&!t.metaKey&&!t.isComposing&&229!==t.keyCode}function xt(t,e,r=()=>e.click(),n=()=>!0){if(t.closed)return;e.hasAttribute("role")||e.setAttribute("role","button"),e.hasAttribute("tabindex")||(e.tabIndex=0);let o=!1;const i=()=>n()&&"true"!==e.getAttribute("aria-disabled")&&!e.hasAttribute("disabled"),a=t=>(t.composedPath()[0]||t.target)===e;mt(t,e,"keydown",t=>{const e=t;a(e)&&wt(e)&&!e.defaultPrevented&&("Enter"===e.key?(bt(e),!e.repeat&&i()&&r()):" "===e.key&&(bt(e),!e.repeat&&i()&&(o=!0)))}),mt(t,e,"keyup",t=>{const n=t;if(" "!==n.key)return;const s=o;o=!1,s&&a(n)&&wt(n)&&!n.defaultPrevented&&i()&&e.ownerDocument.activeElement===e&&(bt(n),r())}),mt(t,e,"blur",()=>{o=!1}),t.add(()=>{o=!1})}function kt(t,e){return N(t,e)}function $t(t,e){return e.querySelector(t)}const Et=new WeakSet;function At(t){const e=t.template.$player;!w(t)&&e.isConnected&&(e.hasAttribute("tabindex")||(e.setAttribute("tabindex","-1"),Et.has(e)||(Et.add(e),b(t).add(()=>{Et.delete(e),"-1"===e.getAttribute("tabindex")&&e.removeAttribute("tabindex")}))),e.focus({preventScroll:!0}))}const Ct=new WeakSet,St="[tabindex],button,input,select,textarea,a[href],[contenteditable]";function Tt(t){return[t,...t.querySelectorAll(St)].find(t=>{if(!t.matches(St)||t.tabIndex<0||t.matches(":disabled")||t.closest("[inert]")||"true"===t.getAttribute("aria-disabled")||!t.getClientRects().length)return!1;const e=t.ownerDocument.defaultView?.getComputedStyle(t);return"hidden"!==e?.visibility&&"collapse"!==e?.visibility})}function Lt(t,e,r){const n=e?.ownerDocument,o=n?.activeElement;if(!["control","contextmenu"].includes(t.name??"")||Ct.has(t)||!e||!n||!o||!e.contains(o))return()=>{};const i=t.art.template.$player,a=Array.from(i.querySelectorAll(`.art-${t.name}`)),s=a.indexOf(e),c=[...a.slice(s+1),...a.slice(0,s).reverse()];return Ct.add(t),()=>{if(Ct.delete(t),w(t.art)||!i.isConnected||n.activeElement!==n.body)return;const e=r?t.cache.get(r)?.$ref:void 0;for(const t of[...e?[e]:[],...c]){if(!i.contains(t))continue;const e=Tt(t);if(e)return void e.focus({preventScroll:!0})}At(t.art)}}const Pt="array",Mt="boolean",zt="string",Rt="number",Ot="object",Dt="function";function It(t,e,r){return X(e===zt||e===Rt||t instanceof Element,`${r.join(".")} require '${zt}' or 'Element' type`)}const Nt={html:It,disable:`?${Mt}`,name:`?${zt}`,index:`?${Rt}`,style:`?${Ot}`,click:`?${Dt}`,mounted:`?${Dt}`,tooltip:`?${zt}|${Rt}`,width:`?${Rt}`,selector:`?${Pt}`,onSelect:`?${Dt}`,switch:`?${Mt}`,onSwitch:`?${Dt}`,range:`?${Pt}`,onRange:`?${Dt}`,onChange:`?${Dt}`},_t={id:zt,container:It,url:zt,poster:zt,type:zt,theme:zt,lang:zt,volume:Rt,isLive:Mt,muted:Mt,autoplay:Mt,autoSize:Mt,autoMini:Mt,loop:Mt,flip:Mt,playbackRate:Mt,aspectRatio:Mt,screenshot:Mt,setting:Mt,hotkey:Mt,pip:Mt,mutex:Mt,backdrop:Mt,fullscreen:Mt,fullscreenWeb:Mt,subtitleOffset:Mt,miniProgressBar:Mt,useSSR:Mt,playsInline:Mt,lock:Mt,gesture:Mt,fastForward:Mt,autoPlayback:Mt,autoOrientation:Mt,airplay:Mt,proxy:`?${Dt}`,plugins:[Dt],layers:[Nt],contextmenu:[Nt],settings:[Nt],controls:[{...Nt,position:(t,e,r)=>{const n=["top","left","right"];return X("string"===typeof t&&n.includes(t),`${r.join(".")} only accept ${n.toString()} as parameters`)}}],quality:[{default:`?${Mt}`,html:zt,url:zt}],highlight:[{time:Rt,text:zt}],thumbnails:{url:zt,number:Rt,column:Rt,width:Rt,height:Rt,scale:Rt},subtitle:{url:zt,name:zt,type:zt,style:Ot,escape:Mt,encoding:zt,onVttLoad:Dt},moreVideoAttr:Ot,i18n:Ot,icons:Ot,cssVar:Ot,customType:Ot},Wt=new WeakSet;class Ft{constructor(t){this.id=0,this.art=t,this.cache=new Map,this.add=this.add.bind(this),this.remove=this.remove.bind(this),this.update=this.update.bind(this)}get show(){return I(this.art.template.$player,`art-${this.name}-show`)}set show(t){const{$player:e}=this.art.template,r=`art-${this.name}-show`;t?O(e,r):D(e,r),this.art.emit(this.name,t)}toggle(){this.show=!this.show}add(t){if(w(this.art))return;const e="function"===typeof t?t(this.art):t;if(w(this.art))return;if(e.html=e.html||"",o(e,Nt),!this.$parent||!this.name||e.disable)return;const r=e.name||`${this.name}${this.id}`,n=this.cache;X(!n.has(r),`Can't add an existing [${r}] to the [${this.name}]`),this.id+=1;const i=document.createElement("div"),a=$(this.art,i),s=[],c=Object.getOwnPropertyDescriptor(this,r);let l=!1;a.add(()=>{for(const t of s)this.art.events.remove(t)});try{if(a.closed)return;if(function(t,e,r,n,o,i){O(t,`art-${r}`),O(t,`art-${r}-${n}`);const a=Array.from(e.children);t.dataset.index=String(i.index||o);const s=a.find(e=>Number(e.dataset.index)>=Number(t.dataset.index));s?s.insertAdjacentElement("beforebegin",t):N(e,t),i.html&&N(t,i.html),i.style&&j(t,i.style),i.tooltip&&Y(t,i.tooltip)}(i,this.$parent,this.name,r,this.id,e),a.closed)return;if(e.click){("control"===this.name&&!e.selector||"contextmenu"===this.name&&!i.querySelector("[data-value]"))&&!i.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")&&xt(a,i);const t=this.art.events.proxy(i,"click",t=>{a.closed||(t.preventDefault(),e.click.call(this.art,this,t))});s.push(t)}if(e.selector&&["left","right"].includes(e.position)&&this.selector(e,i,s),a.closed)return;return function(t,e,r){const n=t;"__proto__"===e?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r}(this,r,i),l=!0,n.set(r,{$ref:i,events:s,option:e}),e.mounted&&e.mounted.call(this.art,i),i}catch(d){try{A(i)}catch(u){console.warn("ArtPlayer component cleanup failed:",u)}throw n.get(r)?.$ref===i&&n.delete(r),l&&this[r]===i&&(c?Object.defineProperty(this,r,c):delete this[r]),i.remove(),d}}remove(t){X(this.cache.has(t),`Can't find [${t}] from the [${this.name}]`);const e=this.cache.get(t);if(Wt.has(e))return;const r=Lt(this,e.$ref);Wt.add(e);try{e.option.beforeUnmount&&e.option.beforeUnmount.call(this.art,e.$ref);try{A(e.$ref)}finally{this.cache.get(t)===e&&(this.cache.delete(t),delete this[t]),e.$ref.remove()}}finally{Wt.delete(e),r()}}update(t){const e=Lt(this,this.cache.get(t.name)?.$ref,t.name);try{if(this.cache.has(t.name)){const e=this.cache.get(t.name);t=Object.assign(e.option,t),this.remove(t.name)}return this.add(t)}finally{e()}}}function Vt(t){for(const e of t.querySelectorAll("[data-value]"))e.setAttribute("aria-pressed",String(e.classList.contains("art-current")))}function Yt(t,e){const r=E(t);if(!r.closed){t.setAttribute("role","group"),t.setAttribute("aria-label",e);for(const n of t.querySelectorAll("[data-value]"))xt(r,n),n.setAttribute("aria-label",`${e}: ${n.textContent?.trim()??""}`);Vt(t)}}const Bt=new WeakMap;function Ht(t,e){e?Bt.set(t,e):Bt.delete(t)}function jt(t){const e=new Set;let r=t;for(;!e.has(r);){e.add(r);let t,n=r;for(;n&&!t;)t=Bt.get(n),n=n.parentElement;if(!t)return r;r=t}return t}function qt(t){const e=t;return!!e&&(["INPUT","TEXTAREA","SELECT"].includes(e.tagName)||e.isContentEditable)}function Ut(t){const e=t.ownerDocument.defaultView?.getComputedStyle(t).visibility;return t.isConnected&&!t.matches(":disabled")&&!t.closest("[inert]")&&"true"!==t.getAttribute("aria-disabled")&&t.getClientRects().length>0&&"hidden"!==e&&"collapse"!==e}class Xt extends Ft{constructor(t){super(t),this.name="contextmenu",this.$parent=t.template.$contextmenu,$(t,this.$parent),u||this.init()}init(){const{option:t,template:{$player:e,$contextmenu:r}}=this.art,{on:n,proxy:o}=S(this.art,r);t.playbackRate&&this.add(function(t){return e=>{const{i18n:r,constructor:{PLAYBACK_RATE:n}}=e,o=n.map(t=>`${1===t?r.get("Normal"):t.toFixed(1)}`).join(""),i=r.get("Play Speed");return{...t,html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.playbackRate=Number(n),t.show=!1)},mounted:t=>{const{on:r}=S(e,t),n=R('[data-value="1"]',t);n&&W(n,"art-current"),Yt(t,i),r("video:ratechange",()=>{const r=Array.from(t.querySelectorAll("span")).find(t=>Number(t.dataset.value)===e.playbackRate);r&&(W(r,"art-current"),Vt(t))})}}}}({name:"playbackRate",index:10})),t.aspectRatio&&this.add(function(t){return e=>{const{i18n:r,constructor:{ASPECT_RATIO:n}}=e,o=n.map(t=>`${"default"===t?r.get("Default"):t}`).join(""),i=r.get("Aspect Ratio");return{...t,html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.aspectRatio=n,t.show=!1)},mounted:t=>{const{on:r}=S(e,t),n=R('[data-value="default"]',t);n&&W(n,"art-current"),Yt(t,i),r("aspectRatio",e=>{const r=Array.from(t.querySelectorAll("span")).find(t=>t.dataset.value===e);r&&(W(r,"art-current"),Vt(t))})}}}}({name:"aspectRatio",index:20})),t.flip&&this.add(function(t){return e=>{const{i18n:r,constructor:{FLIP:n}}=e,o=n.map(t=>`${r.get(Q(t))}`).join(""),i=r.get("Video Flip");return{...t,html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.flip=n.toLowerCase(),t.show=!1)},mounted:t=>{const{on:r}=S(e,t),n=R('[data-value="normal"]',t);n&&W(n,"art-current"),Yt(t,i),r("flip",e=>{const r=Array.from(t.querySelectorAll("span")).find(t=>t.dataset.value===e);r&&(W(r,"art-current"),Vt(t))})}}}}({name:"flip",index:30})),this.add(function(t){return e=>({...t,html:e.i18n.get("Video Info"),click:t=>{e.info.show=!0,t.show=!1}})}({name:"info",index:40})),this.add(function(t){return{...t,html:`ArtPlayer ${i}`}}({name:"version",index:50})),this.add(function(t){return e=>({...t,html:e.i18n.get("Close"),click:t=>{t.show=!1}})}({name:"close",index:60}));for(let i=0;i{this.show=!0,a.closed||w(this.art)||!this.show||function(t,e,r){const{$player:n,$contextmenu:o}=t.template,{height:i,width:a,left:s,top:c}=M(n),{height:l,width:d}=M(o);let u=e-s,p=r-c;e+d>s+a&&(u=a-d),r+l>c+i&&(p=i-l),w(t)||j(o,{top:`${p}px`,left:`${u}px`})}(this.art,t,e)},c=function(t,e){const{art:r}=t,{$player:n,$contextmenu:o}=r.template,i=E(o),a=()=>!i.closed&&!w(r);let s,c=!1,l="",d=0;const u=()=>{const t=n.ownerDocument.activeElement;s=t&&n.contains(t)?jt(t):n,Ht(o,s)},p=()=>Array.from(o.querySelectorAll("[tabindex],button,input,select,textarea,a[href],[contenteditable]")).filter(t=>t.tabIndex>=0&&Ut(t)),f=r.i18n.get("Context Menu");if(!a())return{pointer:()=>!1};o.setAttribute("role","group"),o.setAttribute("aria-label",f);const h=t=>{if(!a())return;if(t)return void(o.contains(n.ownerDocument.activeElement)||u());const e=n.ownerDocument.activeElement,i=o.contains(e)||c&&e===n.ownerDocument.body,d=s;s=void 0,c=!1,l="",Ht(o),i&&(d&&n.contains(d)&&Ut(d)&&d.focus({preventScroll:!0}),(n.ownerDocument.activeElement===n.ownerDocument.body||o.contains(n.ownerDocument.activeElement))&&At(r))};r.on("contextmenu",h),i.add(()=>{r.off("contextmenu",h),Ht(o)}),mt(i,o,"focusin",()=>{c=!0});let m=!1;return mt(i,o,"focusout",e=>{o.contains(e.relatedTarget)||m||(m=!0,gt(i,()=>{m=!1,a()&&t.show&&!o.contains(n.ownerDocument.activeElement)&&(t.show=!1)},0))}),mt(i,n,"keydown",n=>{const i=n;if(!a()||!wt(i)||i.defaultPrevented)return;if(("ContextMenu"===i.key||"F10"===i.key&&i.shiftKey)&&r.constructor.CONTEXTMENU&&!qt(i.target)){bt(i),u();const r=i.target.getBoundingClientRect();return e(r.left,r.bottom),void(a()&&t.show&&p()[0]?.focus({preventScroll:!0}))}if(!t.show||!o.contains(i.target))return;if("Escape"===i.key)return bt(i),void(t.show=!1);if("Tab"===i.key)return void(t.show=!1);if(qt(i.target))return;const s=p(),c=s.indexOf(i.target);let f;if("ArrowDown"===i.key||"ArrowRight"===i.key)f=s[(c+1)%s.length];else if("ArrowUp"===i.key||"ArrowLeft"===i.key)f=s[(c+s.length-1)%s.length];else if("Home"===i.key)f=s[0];else if("End"===i.key)f=s[s.length-1];else{if(1!==i.key.length||" "===i.key)return;{const t=i.key.toLowerCase();l=Date.now()-d>700?t:l+t,d=Date.now();const e=[...l].every(e=>e===t)?t:l;f=[...s.slice(c+1),...s.slice(0,c+1)].find(t=>(t.getAttribute("aria-label")||t.textContent||"").trim().toLowerCase().startsWith(e))}}bt(i),f?.focus({preventScroll:!0})}),{pointer:t=>!(!a()||!r.constructor.CONTEXTMENU||qt(t.target))&&(u(),!0)}}(this,s);o(e,"contextmenu",t=>{c.pointer(t)&&(t.preventDefault(),s(t.clientX,t.clientY))}),o(e,"click",t=>{L(t,r)||(this.show=!1)}),n("blur",()=>{this.show=!1})}}const Gt=new WeakMap,Kt=new WeakMap,Zt=new WeakMap;function Jt(t,e){const r=Gt.get(t);r?.active()&&void 0!==r.resumePlaying&&(!e&&r.internalPause?r.internalPause=!1:(r.resumePlaying=e,e||r.pauseRevision++))}function Qt(t){return Zt.get(t)||b(t)}function te(t){const e=Gt.get(t),r=Zt.get(t);return()=>Gt.get(t)===e&&(!e||e.active())&&Zt.get(t)===r&&(!r||!r.closed)}function ee(t){const e=Zt.get(t),r=b(t).child(),n=r.child();Zt.set(t,r),r.add(()=>{Zt.get(t)===r&&Zt.delete(t)});const o={scope:n,assigned:!1,acceptingEvents:!1,pauseRevision:0,active:()=>!w(t)&&!n.closed&&Gt.get(t)===o};return Gt.set(t,o),n.add(()=>{Gt.get(t)===o&&Gt.delete(t),o.onAssigned=void 0,o.onError=void 0}),e?.dispose(),o}function re(t){t.assigned=!0;const e=t.onAssigned;t.onAssigned=void 0,t.active()&&e?.()}function ne(t,e,r){Kt.set(t,e),e.acceptingEvents=!0;try{t.url=r}finally{Kt.get(t)===e&&(Kt.delete(t),re(e))}}function oe(t,e){t.active()&&(t.onError?t.onError(e):console.warn("Failed to initialize ArtPlayer source:",e),t.scope.dispose())}function ie(t,e){const{$progress:r}=t.template,{left:n}=M(r),o=J((u?e.touches[0].clientX:e.clientX)-n,0,r.clientWidth),i=o/r.clientWidth*t.duration;return{second:i,time:tt(i),width:o,percentage:J(o/r.clientWidth,0,1)}}function ae(t,e,r=()=>!0){if(r())if(t.isRotate){const n=(e.touches[0].clientY-t.top)/t.height,o=n*t.duration;if(!r())return;t.emit("setBar","played",n,e),r()&&(t.seek=o)}else{const{second:n,percentage:o}=ie(t,e);if(!r())return;t.emit("setBar","played",o,e),r()&&(t.seek=n)}}const se=new Map([["ArrowRight",1],["ArrowUp",1],["ArrowLeft",-1],["ArrowDown",-1],["PageUp",10],["PageDown",-10]]);function ce(t,e,r){t.getAttribute(e)!==r&&t.setAttribute(e,r)}function le(t,e,r,n,o,i="horizontal"){const a=t=>[t.min,t.max,t.value,t.step].every(Number.isFinite)&&t.max>t.min&&t.step>0,s=(t,e)=>Math.min(e.max,Math.max(e.min,t)),c=()=>{if(t.closed)return;const r=n(),o=a(r),i=o?s(r.value,r):0;ce(e,"aria-disabled",String(!o)),ce(e,"aria-valuemin",String(o?r.min:0)),ce(e,"aria-valuemax",String(o?r.max:0)),ce(e,"aria-valuenow",String(i)),ce(e,"aria-valuetext",r.text(i))};return t.closed||(e.setAttribute("role","slider"),e.tabIndex=0,e.setAttribute("aria-label",r),e.setAttribute("aria-orientation",i),mt(t,e,"keydown",t=>{const r=t;if((r.composedPath()[0]||r.target)!==e||!wt(r)||r.defaultPrevented)return;const i=se.get(r.key);if(void 0===i&&"Home"!==r.key&&"End"!==r.key)return;bt(r);const l=n();if(!a(l))return void c();const d="Home"===r.key?l.min:"End"===r.key?l.max:s(l.value,l)+i*l.step;o(s(d,l)),c()}),c()),c}const de=new WeakMap;function ue(t){return de.get(t)||0}function pe(t,e,r){let n,o=!1,i=!1,a=!1,s=ue(t);const c=()=>a||ue(t)!==s,l=()=>!!t.template?.$video?.seeking;return{restore(i=()=>{t.currentTime=e}){if(!r()||c())return;const d=ue(t);i(),s=ue(t),s>d+1&&(a=!0),r()&&(n=t.currentTime,r()&&!c()&&(o=l()))},manual(){a=!0},ready(){if(!r()||l())return!1;const e=void 0!==n&&Math.abs(t.currentTime-n)>.05;if(!c()&&o&&!i&&void 0!==n&&e){if(i=!0,!r())return!1;t.currentTime=n}return r()&&!l()}}}function fe(t,e){const{icons:r,option:n}=t,{$player:o}=t.template,i=E(e),{on:a}=S(t,e);let s=()=>{};const c=$t(".art-progress-hover",e),l=$t(".art-progress-loaded",e),d=$t(".art-progress-played",e),p=$t(".art-progress-highlight",e),f=$t(".art-progress-indicator",e),h=$t(".art-progress-tip",e);function m(r,n){const{width:o,time:i}=n||ie(t,r);h.textContent=i||"00:00";const a=h.clientWidth;o<=a/2?H(h,"left",0):o>e.clientWidth-a/2?H(h,"left",e.clientWidth-a+"px"):H(h,"left",o-a/2+"px")}r.indicator?N(f,r.indicator):H(f,"backgroundColor","var(--art-theme)"),a("setBar",function(r,n,a){const g="played"===r&&a&&u;if("loaded"===r&&H(l,"width",100*n+"%"),"hover"===r&&(H(c,"width",100*n+"%"),L(a,p)?function(r){const{width:n}=ie(t,r),o=r.target instanceof HTMLElement?r.target.dataset.text:void 0;h.textContent=o??"";const i=h.clientWidth;n<=i/2?H(h,"left",0):n>e.clientWidth-i/2?H(h,"left",e.clientWidth-i+"px"):H(h,"left",n-i/2+"px")}(a):m(a),0===n?D(o,"art-progress-hover"):O(o,"art-progress-hover")),"played"===r&&(H(d,"width",100*n+"%"),H(f,"left",100*n+"%")),g){O(o,"art-progress-hover");m(a,{width:e.clientWidth*n,time:tt(n*t.duration)}),s(),s=gt(i,()=>{D(o,"art-progress-hover")},500)}}),a("video:loadedmetadata",function(){p.textContent="";for(let e=0;e{t.emit("setBar","played",t.played),t.emit("setBar","loaded",t.loaded)}):(a("video:timeupdate",()=>{t.emit("setBar","played",t.played)}),a("video:progress",()=>{t.emit("setBar","loaded",t.loaded)}),a("video:ended",()=>{t.emit("setBar","played",1)})),t.emit("setBar","loaded",t.loaded||0)}function he(t){return e=>({...t,html:'\n
\n
\n
\n
\n
\n
\n
00:00
\n
\n ',mounted:t=>{fe(e,t),function(t,e){const{$progress:r}=t.template,n=e.querySelector(".art-progress-indicator"),{on:o,proxy:i}=S(t,e),a=E(e);let s=0;const c=()=>{const e=te(t);return()=>!a.closed&&!w(t)&&e()},l=()=>{const t=++s,e=c();return()=>t===s&&e()};if(!u){let e;i(r,"click",e=>{e.target!==n&&ae(t,e,l())}),i(r,"mousemove",e=>{const r=c(),{percentage:n}=ie(t,e);r()&&t.emit("setBar","hover",n,e)}),i(r,"mouseleave",e=>{t.emit("setBar","hover",0,e)}),i(r,"mousedown",t=>{e=0===t.button?l():void 0}),o("document:mousemove",r=>{const n=e;if(n?.()){const{second:o,percentage:i}=ie(t,r);if(!n()||e!==n)return;t.emit("setBar","played",i,r),n()&&e===n&&(t.seek=o)}else e=void 0}),o("document:mouseup",()=>{e=void 0})}}(e,t),function(t,e){const r=E(e),{on:n}=S(t,e);let o,i=0;const a=le(r,e,t.i18n.get("Progress"),()=>({min:0,max:t.duration,value:t.currentTime,step:t.constructor.SEEK_STEP,text:e=>`${tt(e)} / ${tt(Number.isFinite(t.duration)&&t.duration>0?t.duration:0)}`}),e=>{const n=++i;o?.dispose();const s=r.child();o=s;const c=Qt(t).add(()=>{s.dispose()});s.add(()=>{c()}),s.add(()=>{o===s&&(o=void 0)});const l=te(t),d=()=>n===i&&!s.closed&&!w(t)&&l(),u=pe(t,e,d),p=()=>{d()?u.ready()&&(s.dispose(),a()):s.dispose()};for(const r of["video:seeked","video:ended"])t.on(r,p),s.add(()=>{t.off(r,p)});try{t.emit("setBar","played",e/t.duration),d()&&u.restore(()=>{t.seek=e}),p()}catch(f){throw s.dispose(),f}});n("video:loadedmetadata",a),n("video:durationchange",a),n("video:emptied",a),n("video:timeupdate",a),n("video:seeking",a),n("video:seeked",a),n("video:ended",a)}(e,t)}})}function me(t){const{option:e}=t.art;e.isLive||t.add(he({name:"progress",position:"top",index:10})),t.add({name:"thumbnails",position:"top",index:20}),t.add(function(t){return e=>({...t,mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e,a=kt(t,o.play),s=kt(t,o.pause);function c(){t.setAttribute("aria-label",i.get("Play")),H(a,"display","flex"),H(s,"display","none")}function l(){t.setAttribute("aria-label",i.get("Pause")),H(a,"display","none"),H(s,"display","flex")}xt(E(t),t,()=>(e.playing?s:a).click()),Y(a,i.get("Play")),Y(s,i.get("Pause")),n(a,"click",()=>{G(e.play())}),n(s,"click",()=>{e.pause()}),e.playing?l():c(),r("video:playing",()=>{l()}),r("video:pause",()=>{c()})}})}({name:"playAndPause",position:"left",index:10})),t.add(function(t){return e=>({...t,mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e,a=kt(t,o.volume),s=kt(t,o.volumeClose);for(const e of[a,s])xt(E(t),e),e.setAttribute("aria-label",i.get("Mute"));const c=kt(t,'
'),l=kt(c,'
'),d=kt(l,'
'),p=kt(l,'
'),f=kt(p,'
'),h=kt(f,'
'),m=kt(p,'
'),g=E(t);let v=0;const y=le(g,p,i.get("Volume"),()=>({min:0,max:100,value:e.muted?0:100*e.volume,step:100*e.constructor.VOLUME_STEP,text:t=>`${Math.round(t)}%`}),t=>{const r=++v;e.muted=!1,r!==v||g.closed||w(e)||(e.volume=t/100)},"vertical");function b(t){const{top:e,height:r}=M(p);return 1-(t.clientY-e)/r}function x(){y();const r=t.ownerDocument.activeElement,n=e.muted||0===e.volume,o=n?s:a;if(a.setAttribute("aria-pressed",String(e.muted)),s.setAttribute("aria-pressed",String(e.muted)),n)H(a,"display","none"),H(s,"display","flex"),H(m,"top","100%"),H(h,"top","100%"),d.textContent="0";else{const t=100*e.volume;H(a,"display","flex"),H(s,"display","none"),H(m,"top",100-t+"%"),H(h,"top",100-t+"%"),d.textContent=String(Math.floor(t))}r!==a&&r!==s||r===o||o.focus({preventScroll:!0})}if(x(),r("video:volumechange",x),n(a,"click",()=>{e.muted=!0}),n(s,"click",()=>{e.muted=!1}),u)H(c,"display","none");else{let t=!1;n(p,"mousedown",r=>{t=0===r.button,e.volume=b(r)}),r("document:mousemove",r=>{t&&(e.muted=!1,e.volume=b(r))}),r("document:mouseup",()=>{t&&(t=!1)})}}})}({name:"volume",position:"left",index:20})),e.isLive||t.add(function(t){return e=>({...t,style:u?{fontSize:"12px",padding:"0 5px"}:{cursor:"auto",padding:"0 10px"},mounted:t=>{const{on:r}=S(e,t);function n(){const r=`${tt(e.currentTime)} / ${tt(e.duration)}`;r!==t.textContent&&(t.textContent=r)}n();const o=["video:loadedmetadata","video:timeupdate","video:progress"];for(let e=0;e{r&&!b(t.art).closed&&(t.art.quality=e.quality)}).catch(t=>{console.warn("ArtPlayer quality initialization failed:",t)}),e.screenshot&&!u&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("Screenshot"),mounted:t=>{const{proxy:r}=S(e,t),{icons:n}=e;xt(E(t),t),kt(t,n.screenshot),r(t,"click",()=>{G(e.screenshot())})}})}({name:"screenshot",position:"right",index:20})),e.setting&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("Show Setting"),mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e;kt(t,o.setting),xt(E(t),t),t.setAttribute("aria-expanded","false"),n(t,"click",()=>{e.setting.toggle(),e.setting.resize()}),r("setting",e=>{t.setAttribute("aria-expanded",String(e)),Y(t,i.get(e?"Hide Setting":"Show Setting"))})}})}({name:"setting",position:"right",index:30})),e.pip&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("PIP Mode"),mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e;xt(E(t),t),kt(t,o.pip),n(t,"click",()=>{e.pip=!e.pip}),r("pip",e=>{Y(t,i.get(e?"Exit PIP Mode":"PIP Mode"))})}})}({name:"pip",position:"right",index:40})),e.airplay&&"WebKitPlaybackTargetAvailabilityEvent"in window&&window.WebKitPlaybackTargetAvailabilityEvent&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("AirPlay"),mounted:t=>{const{proxy:r}=S(e,t),{icons:n}=e;xt(E(t),t),kt(t,n.airplay),r(t,"click",()=>e.airplay())}})}({name:"airplay",position:"right",index:50})),e.fullscreenWeb&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("Web Fullscreen"),mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e;xt(E(t),t);const a=kt(t,o.fullscreenWebOn),s=kt(t,o.fullscreenWebOff);H(s,"display","none"),n(t,"click",()=>{e.fullscreenWeb=!e.fullscreenWeb}),r("fullscreenWeb",e=>{e?(Y(t,i.get("Exit Web Fullscreen")),H(a,"display","none"),H(s,"display","inline-flex")):(Y(t,i.get("Web Fullscreen")),H(a,"display","inline-flex"),H(s,"display","none"))})}})}({name:"fullscreenWeb",position:"right",index:60})),e.fullscreen&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("Fullscreen"),mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e;xt(E(t),t);const a=kt(t,o.fullscreenOn),s=kt(t,o.fullscreenOff);H(s,"display","none"),n(t,"click",()=>{e.fullscreen=!e.fullscreen}),r("fullscreen",e=>{e?(Y(t,i.get("Exit Fullscreen")),H(a,"display","none"),H(s,"display","inline-flex")):(Y(t,i.get("Fullscreen")),H(a,"display","inline-flex"),H(s,"display","none"))})}})}({name:"fullscreen",position:"right",index:70}));for(let r=0;rye.get(t).option.selector}),it(t,"$control_item",{get:()=>ye.get(t).item}),it(t,"$control_value",{get:()=>ye.get(t).value})),ye.set(t,e)}function we(t,e){t.innerHTML=e}function xe(t,e,r,n,o){const{proxy:i}=t.events,a=E(n),s=r.selector;O(n,"art-control-selector");const c=document.createElement("div");O(c,"art-selector-value"),N(c,r.html),n.textContent="",N(n,c);const l=kt(n,'
');for(let f=0;f{if(a.closed)return;const o=T(n),i=r.selector.find(t=>o.includes(t.$control_item));if(!i)return;const s=++d,l=()=>!a.closed&&s===d,u=a.add(function(t,e){return ge.set(t,e),()=>{ge.get(t)===e&&ge.delete(t)}}(n,l));try{if(e(i),a.closed)return;if(r.onSelect){const e=await r.onSelect.call(t,i,i.$control_item,n);if(l()){const t=c.contains(c.ownerDocument.activeElement);we(c,e),ye.get(i)?.refresh?.(t)}}}catch(p){console.warn("ArtPlayer selector failed:",p)}finally{u()}});o.push(u);const p=function(t,e,r,n,o){if(t.closed)return()=>{};const i=Array.from(n.children),a=i.some(t=>t.querySelector(ve));n.setAttribute("role",a?"group":"listbox"),n.setAttribute("aria-label",o);let s=!1,c=!1,l=!1,d="",u=0;const p=()=>i.length>0&&(c||s&&!l),f=()=>r.querySelector('button,a[href],[role="button"]')||r,h=(e=!1)=>{if(t.closed)return;const n=f();r.querySelector(ve)?(r.removeAttribute("role"),r.removeAttribute("tabindex")):(r.setAttribute("role","button"),r.tabIndex=0),n!==r&&(r.removeAttribute("aria-haspopup"),r.removeAttribute("aria-expanded"),r.removeAttribute("aria-disabled")),a?n.removeAttribute("aria-haspopup"):n.setAttribute("aria-haspopup","listbox"),n.setAttribute("aria-expanded",String(p())),n.setAttribute("aria-disabled",String(0===i.length)),e&&r.isConnected&&r.ownerDocument.activeElement===r.ownerDocument.body&&n.focus({preventScroll:!0})},m=(t,r=!1)=>{c=t,l=r,e.classList.toggle("art-selector-open",t),e.classList.toggle("art-selector-dismissed",r),h()},g=e=>{e&&!t.closed&&((e.querySelector(ve)||e).focus({preventScroll:!0}),t.closed||e.scrollIntoView({block:"nearest",inline:"nearest"}))},v=(e=!1)=>{!t.closed&&i.length&&(m(!0),d="",g(i.find(t=>t.classList.contains("art-current"))||i[e?i.length-1:0]))},y=()=>{if(t.closed)return;const o=n.contains(e.ownerDocument.activeElement);m(!1,!0),d="",o&&r.isConnected&&f().focus({preventScroll:!0})};xt(t,r,()=>{r.click(),e.ownerDocument.activeElement===r&&v()}),h();for(const b of i){const e=b.classList.contains("art-current");a?b.setAttribute("aria-current",String(e)):(b.setAttribute("role","option"),b.setAttribute("aria-selected",String(e))),b.querySelector(ve)||(b.tabIndex=-1,xt(t,b,()=>{b.click(),y()}))}return mt(t,r,"keydown",t=>{const e=t;!wt(e)||e.defaultPrevented||e.target!==r&&e.target!==f()||("ArrowDown"===e.key||"ArrowUp"===e.key?(bt(e),v("ArrowUp"===e.key)):"Escape"===e.key&&p()&&(bt(e),y()))}),mt(t,r,"click",t=>{t.isTrusted&&0===t.detail&&f()!==r&&v()}),mt(t,n,"keydown",t=>{const e=t;if(!wt(e)||e.defaultPrevented)return;if("Escape"===e.key)return bt(e),void y();const r=i.indexOf(e.target);if(r<0)return;let n;switch(1!==e.key.length&&(d=""),e.key){case"ArrowDown":n=Math.min(r+1,i.length-1);break;case"ArrowUp":n=Math.max(r-1,0);break;case"Home":n=0;break;case"End":n=i.length-1;break;case"ArrowLeft":case"ArrowRight":return void bt(e);default:{if(1!==e.key.length||" "===e.key)return;const t=Date.now();d=t-u<500?d+e.key.toLocaleLowerCase():e.key.toLocaleLowerCase(),u=t;const o=[...d].every(t=>t===d[0])?d[0]:d;for(let e=1;e<=i.length;e++){const t=(r+e)%i.length;if(i[t].textContent?.trim().toLocaleLowerCase().startsWith(o)){n=t;break}}}}bt(e),void 0!==n&&g(i[n])}),mt(t,n,"click",t=>{t.isTrusted&&0===t.detail&&y()}),mt(t,e,"mouseenter",()=>{s=!0,m(c)}),mt(t,e,"mouseleave",()=>{s=!1,m(n.contains(e.ownerDocument.activeElement))}),mt(t,e,"focusout",t=>{e.contains(t.relatedTarget)||m(!1,!0)}),t.add(()=>{e.classList.remove("art-selector-open","art-selector-dismissed")}),h}(a,n,c,l,String(r.tooltip||r.name||c.textContent||t.i18n.get("Open")));for(const f of s)ye.get(f).refresh=p}class ke extends Ft{constructor(t){super(t),this.isHover=!1,this.name="control",this.timer=Date.now();const{constructor:e}=t,{$player:r,$bottom:n}=this.art.template,o=function(t,e,r){let n,o,i=!0;const a=()=>!t.closed&&i&&e.contains(e.ownerDocument.activeElement),s=()=>{const t=a(),n=e.classList.contains("art-keyboard-focus");e.classList.toggle("art-keyboard-focus",t),t&&!n&&r()},c=()=>{i=!0,s()},l=()=>{i=!1,s()},d=()=>{n!==e.ownerDocument&&(o?.dispose(),n=e.ownerDocument,o=t.child(),mt(o,n,"keydown",c,{capture:!0}),mt(o,n,"mousedown",l,{capture:!0}),mt(o,n,"touchstart",l,{capture:!0,passive:!0}))};return d(),mt(t,e,"keydown",c,{capture:!0}),mt(t,e,"mousedown",l,{capture:!0}),mt(t,e,"touchstart",l,{capture:!0,passive:!0}),mt(t,e,"focusin",()=>{d(),s()}),mt(t,e,"focusout",()=>{e.classList.remove("art-keyboard-focus")}),t.add(()=>{e.classList.remove("art-keyboard-focus")}),a}($(t,n),r,()=>{this.show=!0}),{on:i,proxy:a}=S(t,n);a(r,"focusin",e=>{t.isFocus=!0,t.isInput="INPUT"===e.target?.tagName}),a(r,"focusout",e=>{r.contains(e.relatedTarget)||(t.isFocus=!1,t.isInput=!1)}),i("mousemove",()=>{u||(this.show=!0)}),i("click",()=>{u?this.toggle():this.show=!0}),i("document:mousemove",t=>{this.isHover=L(t,n)}),i("video:timeupdate",()=>{!t.setting.show&&!this.isHover&&!t.isInput&&!o()&&t.playing&&this.show&&Date.now()-this.timer>=e.CONTROL_HIDE_TIME&&(this.show=!1)}),i("control",t=>{t?(D(r,"art-hide-cursor"),O(r,"art-hover"),this.timer=Date.now()):(O(r,"art-hide-cursor"),D(r,"art-hover"))}),this.init(),b(t).closed||function(t){const{$bottom:e,$controls:r,$player:n}=t.template,o=E(e),{on:i}=S(t,e),a=()=>{if(o.closed)return;const t=r.offsetHeight;t>0&&n.style.getPropertyValue("--art-controls-height")!==`${t}px`&&n.style.setProperty("--art-controls-height",`${t}px`)};if(i("resize",a),"undefined"!==typeof ResizeObserver){const t=new ResizeObserver(a);return t.observe(r),void o.add(()=>{t.disconnect()})}if("undefined"!==typeof MutationObserver){const t=new MutationObserver(a);t.observe(r,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),o.add(()=>{t.disconnect()})}a()}(t)}init(){me(this)}add(t){if(w(this.art))return;const e="function"===typeof t?t(this.art):t,{$progress:r,$controlsLeft:n,$controlsRight:o}=this.art.template;switch(e.position){case"top":this.$parent=r;break;case"left":this.$parent=n;break;case"right":this.$parent=o;break;default:X(!1,"Control option.position must one of 'top', 'left', 'right'")}super.add(e)}check(t){!function(t){if(!t)return;const e=t.$control_value.contains(t.$control_value.ownerDocument.activeElement);we(t.$control_value,t.html);for(let r=0;rthis.check(t),t,e,r)}}function $e(t,e){const{constructor:r,template:{$video:n}}=t;!function(t){const{$player:e}=t.template,r=r=>{if(w(t))return;const n=L(r,e);t.isInput=n&&"INPUT"===r.target?.tagName,t.isFocus=n,t.emit(n?"focus":"blur",r)};t.on("document:click",r),t.on("document:contextmenu",r),b(t).add(()=>{t.off("document:click",r),t.off("document:contextmenu",r)})}(t);let o=[];e.proxy(n,"click",e=>{if(w(t))return;const n=Date.now();o.push(n);const{MOBILE_CLICK_PLAY:i,DBCLICK_TIME:a,MOBILE_DBCLICK_PLAY:s,DBCLICK_FULLSCREEN:c}=r,l=o.filter(t=>n-t<=a);switch(l.length){case 1:if(t.emit("click",e),w(t))return;(!u||!t.isLock&&i)&&G(t.toggle()),o=l;break;case 2:if(t.emit("dblclick",e),w(t))return;u?!t.isLock&&s&&G(t.toggle()):c&&(t.fullscreen=!t.fullscreen),o=[];break;default:o=[]}})}function Ee(t){let e;const r=()=>{e=void 0},n=r=>e===r&&!w(t)&&!t.isLock&&!t.option.isLive&&t.isRotate===r.rotated&&r.sourceActive(),o=t=>{t&&r()};t.on("document:touchend",r),t.on("document:touchcancel",r),t.on("lock",o),b(t).add(()=>{r(),t.off("document:touchend",r),t.off("document:touchcancel",r),t.off("lock",o)});return{start:(o,i)=>{r();const a=i.touches[0];if(w(t)||t.isLock||t.option.isLive||1!==i.touches.length||!a)return;if(![a.pageX,a.pageY,a.clientX,a.clientY,t.currentTime].every(Number.isFinite))return;const s={target:o,identifier:a.identifier,x:a.pageX,y:a.pageY,time:t.currentTime,rotated:t.isRotate,sourceActive:te(t)};if(e=s,o===t.template.$progress){const o=t.isRotate?t.height:t.template.$progress.clientWidth;if(!Number.isFinite(o)||o<=0||!Number.isFinite(t.duration)||t.duration<=0)return void r();try{ae(t,i,()=>n(s))}catch(c){throw e===s&&r(),c}n(s)&&(s.time=t.currentTime)}},move:o=>{const i=e,a=o.touches[0];if(!i)return;if(!n(i)||1!==o.touches.length||!a||a.identifier!==i.identifier)return void r();const s=i.rotated?t.height:t.width,c=i.target===t.template.$video?t.constructor.TOUCH_MOVE_RATIO:1;if(![a.pageX,a.pageY,s,t.duration,c].every(Number.isFinite)||s<=0||t.duration<=0)return void r();const l=function(t,e,r,n){const o=e-n,i=r-t;if(Math.abs(i)<2&&Math.abs(o)<2)return 0;const a=180*Math.atan2(o,i)/Math.PI;return a>=-45&&a<45?4:a>=45&&a<135?1:a>=-135&&a<-45?2:a>=135&&a<=180||a>=-180&&a<-135?3:0}(i.x,i.y,a.pageX,a.pageY);if(!(i.rotated?1===l||2===l:3===l||4===l))return;const d=J((i.rotated?a.pageY-i.y:a.pageX-i.x)/s,-1,1),u=J(i.time+t.duration*d*c,0,t.duration);t.seek=u,n(i)&&(t.emit("setBar","played",J(u/t.duration,0,1),o),n(i)&&(t.notice.show=`${tt(u)} / ${tt(t.duration)}`))},cancel:r}}const Ae=["click","mouseup","keydown","touchend","touchcancel","touchmove","mousemove","pointerup","contextmenu","pointermove","visibilitychange","webkitfullscreenchange"],Ce=["resize","scroll","orientationchange"];const Se=new WeakMap;function Te(t){const e=Se.get(t);if(!e)throw new Error("ArtPlayer event registry has not been initialized");return e}function Le(t,e,r,n,o={}){if(Array.isArray(r)){const i=[];try{return r.map(r=>{const a=Le(t,e,r,n,o);return i.push(a),a})}catch(f){for(const t of i.reverse())try{t()}catch(h){console.warn("Failed to roll back event listener:",h)}throw f}}const i=r,a=Te(t);if(a.scope.closed||a.cleaning)return()=>{};const s="boolean"===typeof o?o:{capture:Boolean(o?.capture),once:Boolean(o?.once),passive:o?.passive,signal:o?.signal},c="boolean"===typeof s?s:s.capture,l="boolean"===typeof s?void 0:s.signal;if(a.scope.closed||a.cleaning||l?.aborted)return()=>{};let d=!0;function u(r=!1){(d||r)&&(e.removeEventListener(i,n,c),l?.removeEventListener("abort",p),d=!1,t.destroyEvents.delete(p))}function p(){u()}t.destroyEvents.add(p);try{e.addEventListener(i,n,s),!d||a.scope.closed||a.cleaning?u(!0):l?.aborted?p():l?.addEventListener("abort",p,{once:!0})}catch(f){try{u(!0)}catch(h){console.warn("Failed to roll back event listener:",h)}throw f}return p}function Pe(t){return(e,r)=>{if(w(t))return;const n=(...e)=>{if(!w(t))return r(...e)};t.on(e,n),b(t).add(()=>{t.off(e,n)})}}function Me(t){if(!t.constructor.USE_RAF)return;const e=b(t);let r=()=>{};const n=()=>{w(t)||(t.playing&&t.emit("raf"),w(t)||(r=function(t,e){if(t.closed)return ht;let r=!0,n=ht;const o=requestAnimationFrame(o=>{r&&(n(),t.closed||e(o))});return n=t.add(()=>{r=!1,cancelAnimationFrame(o)}),n}(e,n)))};n(),Pe(t)("destroy",()=>r())}class ze{constructor(t){this.destroyEvents=new Set,function(t,e){Se.set(t,{scope:b(e),cleaning:!1})}(this,t),b(t).add(()=>{this.destroy()}),this.proxy=this.proxy.bind(this),this.hover=this.hover.bind(this),$e(t,this),function(t,e){const{$player:r}=t.template;e.hover(r,e=>{w(t)||(O(r,"art-hover"),t.emit("hover",!0,e))},e=>{w(t)||(D(r,"art-hover"),t.emit("hover",!1,e))})}(t,this),function(t,e){const{$player:r}=t.template;e.proxy(r,"mousemove",e=>{w(t)||t.emit("mousemove",e)})}(t,this),function(t,e){const{option:r,constructor:n}=t,o=Pe(t);o("resize",()=>{const{aspectRatio:e,notice:n}=t;"standard"===t.state&&r.autoSize&&t.autoSize(),w(t)||(t.aspectRatio=e,w(t)||(n.show=""))});const i=b(t);let a=()=>{};const s=()=>{w(t)||(a(),a=gt(i,()=>t.emit("resize"),n.RESIZE_TIME))};o("window:orientationchange",s),o("window:resize",s);const c=t.template.$player.ownerDocument.defaultView?.screen?.orientation;"function"===typeof c?.addEventListener&&e.proxy(c,"change",s)}(t,this),function(t,e){if(!u||t.option.isLive)return;const{$video:r,$progress:n}=t.template,o=Ee(t),i=t=>{e.proxy(t,"touchstart",e=>o.start(t,e)),e.proxy(t,"touchmove",t=>o.move(t)),e.proxy(t,"touchcancel",o.cancel)};t.option.gesture&&i(r),i(n)}(t,this),function(t){const{option:e,constructor:r,template:{$container:n}}=t,o=r.SCROLL_TIME,i=b(t),a=Pe(t);let s=!1;a("window:scroll",()=>{s||(t.emit("view",function(t,e){const r=t.getBoundingClientRect(),n=t.ownerDocument,o=n.defaultView,i=o?.innerHeight||n.documentElement.clientHeight,a=o?.innerWidth||n.documentElement.clientWidth,s=r.top-e<=i&&r.top+r.height+e>=0,c=r.left-e<=a+e&&r.left+r.width+e>=0;return s&&c}(n,r.SCROLL_GAP)),w(t)||(s=!0,gt(i,()=>{s=!1},o)))}),a("view",r=>{e.autoMini&&(t.mini=!r)})}(t),function(t,e){let r,n=0;b(t).add(()=>{r=void 0,n++});const o=t=>{if(t){for(const r of t.disposers)e.remove(r);t.disposers.length=0}};function i(i={}){if(w(t))return;const a=++n,s={disposers:[]},c=()=>a!==n||w(t);try{const{$player:n}=t.template,o=i.document||n.ownerDocument||document,a=i.window||n.ownerDocument?.defaultView||window,l=(n,o,i)=>{for(const a of o){if(c())return;s.disposers.push(e.proxy(n,a,e=>{r!==s||w(t)||t.emit(`${i}:${a}`,e)}))}};l(o,Ae,"document"),l(a,Ce,"window")}catch(d){throw o(s),d}if(c())return void o(s);const l=r;r=s,o(l)}i(),e.bindGlobalEvents=i}(t,this),Me(t)}proxy(t,e,r,n={}){return Array.isArray(e),Le(this,t,e,r,n)}hover(t,e,r){e&&this.proxy(t,"mouseenter",e),r&&this.proxy(t,"mouseleave",r)}remove(t){!function(t,e){if(t.destroyEvents.has(e))try{e(),t.destroyEvents.delete(e)}catch(r){console.warn("Failed to remove event listener:",r)}}(this,t)}destroy(){!function(t){const e=Te(t);if(!e.cleaning){e.cleaning=!0;try{for(const e of t.destroyEvents)try{e(),t.destroyEvents.delete(e)}catch(r){console.warn("Failed to destroy event listener:",r)}}finally{e.cleaning=!1}}}(this)}}function Re(t){if(t&&1===t.nodeType)return t}function Oe(t){const e=t.tagName.toUpperCase();return"INPUT"===e||"TEXTAREA"===e||"SELECT"===e||t.isContentEditable}function De(t,e){if(function(t){return yt.has(t)}(t)||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey||t.isComposing||229===t.keyCode)return!1;const r=function(t,e){const r=t.target;return 9===r?.nodeType?r:r?.ownerDocument||t.view?.document||e}(t,e);let n=Re(r.activeElement);for(;n?.shadowRoot?.activeElement;)n=Re(n.shadowRoot.activeElement);if(n&&Oe(n))return!1;const o=Re(t.composedPath?.()[0])||Re(t.target),i="Enter"===t.key||"Enter"===t.code||"NumpadEnter"===t.code;if(i||" "===t.key||"Space"===t.code){const t='button,summary,[role="button"],[role="switch"]'+(i?",a[href]":"");if(o?.closest?.(t)||n?.closest?.(t))return!1}return!o||!Oe(o)}const Ie=new WeakMap;class Ne{constructor(t){this.art=t,this.keys={},Ie.set(this,{subscribed:!1}),u||this.init()}init(){const t=this.art;if(w(t))return;const e=Ie.get(this);if(t.option.hotkey){if(!e.defaults){const r=function(t){const{constructor:e}=t;return{Escape:()=>{t.fullscreenWeb&&(t.fullscreenWeb=!1)},Space:()=>{G(t.toggle())},ArrowLeft:()=>{t.backward=e.SEEK_STEP},ArrowUp:()=>{t.volume+=e.VOLUME_STEP},ArrowRight:()=>{t.forward=e.SEEK_STEP},ArrowDown:()=>{t.volume-=e.VOLUME_STEP}}}(t);e.defaults=()=>{for(const t of Object.keys(r))this.add(t,r[t])}}e.defaults()}if(e.subscribed)return;e.subscribed=!0;const r=e=>{if(!w(t)){if(t.isFocus&&De(e,t.template.$player.ownerDocument)){const r=Object.prototype.hasOwnProperty.call(this.keys,e.code)?this.keys[e.code]:void 0;if(r){e.preventDefault();for(let n=0;n{e.subscribed=!1,t.off("document:keydown",r)})}add(t,e){const r=Object.prototype.hasOwnProperty.call(this.keys,t)?this.keys[t]:void 0;return r?r.includes(e)||r.push(e):Object.defineProperty(this.keys,t,{value:[e],enumerable:!0,configurable:!0,writable:!0}),this}remove(t,e){const r=Object.prototype.hasOwnProperty.call(this.keys,t)?this.keys[t]:void 0;if(r){const n=r.indexOf(e);-1!==n&&r.splice(n,1),0===r.length&&delete this.keys[t]}return this}}const _e={"Context Menu":"\u5feb\u6377\u83dc\u5355",Lock:"\u9501\u5b9a",Back:"\u8fd4\u56de",Settings:"\u8bbe\u7f6e",Progress:"\u64ad\u653e\u8fdb\u5ea6","Video Info":"\u7edf\u8ba1\u4fe1\u606f",Close:"\u5173\u95ed","Video Load Failed":"\u52a0\u8f7d\u5931\u8d25",Volume:"\u97f3\u91cf",Play:"\u64ad\u653e",Pause:"\u6682\u505c",Rate:"\u901f\u5ea6",Mute:"\u9759\u97f3","Video Flip":"\u753b\u9762\u7ffb\u8f6c",Horizontal:"\u6c34\u5e73",Vertical:"\u5782\u76f4",Reconnect:"\u91cd\u65b0\u8fde\u63a5","Show Setting":"\u663e\u793a\u8bbe\u7f6e","Hide Setting":"\u9690\u85cf\u8bbe\u7f6e",Screenshot:"\u622a\u56fe","Play Speed":"\u64ad\u653e\u901f\u5ea6","Aspect Ratio":"\u753b\u9762\u6bd4\u4f8b",Default:"\u9ed8\u8ba4",Normal:"\u6b63\u5e38",Open:"\u6253\u5f00","Switch Video":"\u5207\u6362","Switch Subtitle":"\u5207\u6362\u5b57\u5e55",Fullscreen:"\u5168\u5c4f","Exit Fullscreen":"\u9000\u51fa\u5168\u5c4f","Web Fullscreen":"\u7f51\u9875\u5168\u5c4f","Exit Web Fullscreen":"\u9000\u51fa\u7f51\u9875\u5168\u5c4f","Mini Player":"\u8ff7\u4f60\u64ad\u653e\u5668","PIP Mode":"\u5f00\u542f\u753b\u4e2d\u753b","Exit PIP Mode":"\u9000\u51fa\u753b\u4e2d\u753b","PIP Not Supported":"\u4e0d\u652f\u6301\u753b\u4e2d\u753b","Fullscreen Not Supported":"\u4e0d\u652f\u6301\u5168\u5c4f","Subtitle Offset":"\u5b57\u5e55\u504f\u79fb","Last Seen":"\u4e0a\u6b21\u770b\u5230","Jump Play":"\u8df3\u8f6c\u64ad\u653e",AirPlay:"\u9694\u7a7a\u64ad\u653e","AirPlay Not Available":"\u9694\u7a7a\u64ad\u653e\u4e0d\u53ef\u7528"};!function(t,e){if("undefined"!==typeof window){window[t]=e}}("artplayer-i18n-zh-cn",_e);class We{constructor(t){this.art=t,this.languages={"zh-cn":_e},this.language={},this.update(t.option.i18n)}init(){const t=this.art.option.lang.toLowerCase();this.language=st(this.languages,t)&&this.languages[t]||{}}get(t){return st(this.language,t)&&this.language[t]||t}update(t){this.languages=lt(this.languages,t),this.init()}}const Fe={loading:'\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n',state:'\r\n\r\n\r\n',play:'\r\n \r\n',pause:'\r\n \r\n',check:'\r\n\r\n',volume:'\r\n \r\n \r\n',volumeClose:'\r\n \r\n \r\n',screenshot:'\r\n\t\r\n\r\n',setting:'\r\n \r\n \r\n',pip:'\r\n\r\n',arrowLeft:'\r\n \r\n',arrowRight:'\r\n \r\n',playbackRate:'',aspectRatio:'',config:'',lock:'\r\n\r\n\r\n\r\n\r\n',flip:'\r\n\r\n\r\n\r\n\r\n\r\n',unlock:'\r\n\r\n\r\n',fullscreenOff:'\r\n\r\n\r\n\r\n\r\n',fullscreenOn:'\r\n\r\n\r\n\r\n\r\n',fullscreenWebOff:'\r\n\r\n\r\n\r\n\r\n',fullscreenWebOn:'\r\n\r\n\r\n\r\n\r\n',switchOn:'\r\n\r\n\r\n \r\n',switchOff:'\r\n\r\n\r\n \r\n\r\n',error:'\r\n\r\n\r\n\r\n\r\n',close:'\r\n\r\n\r\n\r\n\r\n',airplay:'\r\n \r\n \r\n \r\n \r\n\r\n'};class Ve{constructor(t){const e={...Fe,...t.option.icons};for(const r in e)it(this,r,{get:()=>B(r,e[r])})}}const Ye=new WeakMap;function Be(t,e,r){const n=()=>!e.closed&&!w(t),o=t=>{try{e.dispose()}catch(r){console.warn("Failed to release info polling resources:",r)}throw t};try{const{proxy:i,constructor:a,template:{$infoPanel:s,$infoClose:c,$video:l}}=t,d=i(c,"click",()=>{n()&&r()});e.add(()=>{t.events.remove(d)});const u=Array.from(s.querySelectorAll("[data-video]")),p=()=>e.dispose();t.on("destroy",p),e.add(()=>{t.off("destroy",p)}),function(t,e,r){const{$player:n,$info:o,$infoClose:i}=t.template;if(!o)return;const a=()=>!e.closed&&!w(t),s=()=>n.classList.contains("art-info-show"),c=t.i18n.get("Close");if(!a())return;const l=t.i18n.get("Video Info");if(!a())return;i.setAttribute("aria-label",c),o.setAttribute("role","group"),o.setAttribute("aria-label",l),xt(e,i,()=>i.click(),s),mt(e,o,"keydown",t=>{const e=t;a()&&s()&&wt(e)&&!e.defaultPrevented&&"Escape"===e.key&&(bt(e),r())});const d=e=>{if(!a())return;const r=n.ownerDocument,s=r.activeElement;if(e)o.contains(s)||(Ye.delete(t),s&&n.contains(s)&&(Ye.set(t,jt(s)),n.classList.contains("art-keyboard-focus")&&i.focus({preventScroll:!0})));else{const e=Ye.get(t);if(Ye.delete(t),!o.contains(s))return;const i=e&&r.defaultView?.getComputedStyle(e).visibility;e?.isConnected&&n.contains(e)&&e.getClientRects().length&&"hidden"!==i&&"collapse"!==i&&!e.matches(":disabled")&&!e.closest("[inert]")&&"true"!==e.getAttribute("aria-disabled")?e.focus({preventScroll:!0}):At(t)}};t.on("info",d),e.add(()=>{t.off("info",d)})}(t,e,r);const f=()=>{try{for(const t of u){if(!n())return;const e=Reflect.get(l,t.dataset.video??"undefined");if(!n())return;const r="number"===typeof e?e.toFixed(2):e;if(!n())return;if(t.textContent!==r){const e=null==r?null:`${r}`;if(!n())return;t.textContent=e}}n()&>(e,f,a.INFO_LOOP_TIME)}catch(t){o(t)}};n()&&f()}catch(i){o(i)}}const He=new WeakMap;class je extends Ft{constructor(t){super(t),this.name="info",He.set(this,{revision:0}),u||this.init()}init(){const t=He.get(this),e=++t.revision;if(t.scope?.dispose(),w(this.art)||t.revision!==e)return;const r=b(this.art).child();t.scope=r,r.add(()=>{t.scope===r&&(t.scope=void 0)}),Be(this.art,r,()=>{this.show=!1})}}class qe extends Ft{constructor(t){super(t);const{option:e,template:{$layer:r}}=t;this.name="layer",this.$parent=r;for(let n=0;n{H(i,"display","none"),H(s,"display",null),w(t)&&(c=!0)};var d;t.on("destroy",l),(d=t,y(d).finalizers).add(()=>{try{c||l()}finally{t.off("destroy",l)}}),w(t)||n.proxy(e.$state,"click",()=>{w(t)||G(t.play())})}}const Ge=new WeakMap;function Ke(t){const e=Ge.get(t);e.revision++,e.pending=void 0,null!==t.timer&&(clearTimeout(t.timer),t.timer=null)}class Ze{constructor(t){this.art=t,this.timer=null,Ge.set(this,{revision:0});const e=()=>this.destroy();t.on("destroy",e),b(t).add(()=>{t.off("destroy",e)}),b(t).add(()=>{this.destroy()})}destroy(){Ke(this)}set show(t){if(w(this.art))return;const e=Ge.get(this);e.revision++;const{constructor:r,template:{$player:n,$noticeInner:o}}=this.art;if(t){Ke(this);const i=e.revision,a=()=>!w(this.art)&&e.revision===i;if(o.textContent=t instanceof Error?t.message.trim():t,!a())return;if(O(n,"art-notice-show"),!a())return;const s=r.NOTICE_TIME;if(!a())return;const c={};e.pending=c;const l=setTimeout(()=>{if(w(this.art)||e.pending!==c)return;e.pending=void 0;const t=e.revision;o.textContent="",w(this.art)||e.revision!==t||D(n,"art-notice-show")},s);a()?this.timer=l:clearTimeout(l)}else D(n,"art-notice-show")}get show(){const{template:{$player:t}}=this.art;return t.classList.contains("art-notice-show")}}function Je(t,e){return function(t,e){const r=lt(e,t);return r.container=t.container,o(r,_t)}(t,e)}function Qe({width:t,height:e}){return Number.isFinite(t)&&t>0&&Number.isFinite(e)&&e>0}function tr(t,e){if(!Qe(t)||!Number.isFinite(e)||e<=0)return;const r=t.width/t.height>e?{width:e*t.height,height:t.height,axis:"width"}:{width:t.width,height:t.width/e,axis:"height"};return Qe(r)?r:void 0}function er(t,e,r,n=!1){const o=e=>{w(t)||r(e)};t[n?"once":"on"](e,o),b(t).add(()=>{t.off(e,o)})}function rr(t,e,r){for(const[n,o]of e){if(w(t)||r&&!r())return;t[n].show=o}}function nr(t){const{option:e,constructor:r,i18n:n,notice:o,template:{$player:i}}=t;let a,s=Qt(t),c=0;return{reset(){c=0,a?.dispose(),D(i,"art-error")},loadStart(){D(i,"art-error")},schedule(l){(async l=>{if(w(t))return;const d=Qt(t);if(d!==s&&(s=d,c=0),a&&!a.closed)return;const u=d.child();a=u,u.add(()=>{a===u&&(a=void 0)});const p=()=>!w(t)&&!u.closed&&d===Qt(t),f=c{console.warn("ArtPlayer reconnect failed:",t)})}}}const or=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],ir=(()=>{if("undefined"===typeof document)return!1;const t=or[0],e={};for(const r of or){if(r[1]in document){for(const[n,o]of r.entries())e[t[n]]=o;return e}}return!1})(),ar={change:ir.fullscreenchange,error:ir.fullscreenerror},sr={request:(t=document.documentElement,e)=>new Promise((r,n)=>{const o=()=>{sr.off("change",o),r()};sr.on("change",o);const i=t[ir.requestFullscreen](e);i instanceof Promise&&i.then(o).catch(n)}),exit:()=>new Promise((t,e)=>{if(!sr.isFullscreen)return void t();const r=()=>{sr.off("change",r),t()};sr.on("change",r);const n=document[ir.exitFullscreen]();n instanceof Promise&&n.then(r).catch(e)}),toggle:(t,e)=>sr.isFullscreen?sr.exit():sr.request(t,e),onchange(t){sr.on("change",t)},onerror(t){sr.on("error",t)},on(t,e){const r=ar[t];r&&document.addEventListener(r,e,!1)},off(t,e){const r=ar[t];r&&document.removeEventListener(r,e,!1)},raw:ir};function cr(t,e,...r){const n=Reflect.get(t,e);if("function"!==typeof n)throw new TypeError(`Fullscreen method ${e} is not available`);return n.apply(t,r)}Object.defineProperties(sr,{isFullscreen:{get:()=>Boolean(document[ir.fullscreenElement])},element:{enumerable:!0,get:()=>document[ir.fullscreenElement]},isEnabled:{enumerable:!0,get:()=>Boolean(document[ir.fullscreenEnabled])}});const lr=new WeakMap;function dr(t){try{Promise.resolve(t()).catch(()=>{})}catch{}}function ur(t){const{document:e,elementProperty:r,changeEvent:n,target:o,exit:i}=t,a=function(t,e,r){let n=lr.get(t);if(!n){n=new WeakMap,lr.set(t,n);const o=n;t.addEventListener(r,()=>{const r=Reflect.get(t,e),n=r&&o.get(r);n&&(o.delete(r),dr(n))})}return n}(e,r,n);a.set(o,i),t.element===o&&(a.delete(o),dr(i))}function pr(t,e,r,n,o=()=>t.element!==t.target){const i=e.child();let a,s,c=!1,l=!1,d=!1,u=!1,p=!1;const f=new Promise((t,e)=>{a=t,s=e});function h(t=!1,e){if(!c){c=!0;try{i.dispose()}catch(r){t||(t=!0,e=r)}t?s(e):a()}}i.add(()=>{c||(c=!0,l=!0,a(),d&&!u&&r&&ur(t))});const m=()=>{d&&!u&&(r?t.element===t.target:o())&&h()};if(mt(i,t.document,t.changeEvent,m),mt(i,t.document,t.errorEvent,e=>{e.target!==t.target&&e.target!==t.document||(p=!0,d&&!u&&h(!0,new Error("Fullscreen request failed")))}),!i.closed)try{r&&function(t){lr.get(t.document)?.delete(t.target)}(t);const e=r?t.request():t.exit();u=Boolean(e&&"function"===typeof e.then),d=!0,l&&!u&&r&&ur(t),u?Promise.resolve(e).then(()=>{l?n():h()},t=>h(!0,t)).catch(()=>{}):p?h(!0,new Error("Fullscreen request failed")):m()}catch(g){h(!0,g)}return{promise:f,cancel:()=>i.dispose()}}function fr(t,e){const r=b(t).child(),{$player:n,$video:o}=t.template,i=()=>e.element===n||e.element===o;let a,s=i(),c=0,l=s,d=!1,u=!1,p=!1;function f(){if(i())try{Promise.resolve(e.exit()).catch(()=>{})}catch{}}return r.add(()=>{c+=1,l=!1,n.classList.remove("art-fullscreen"),f()}),mt(r,e.document,e.changeEvent,()=>{const r=i();if(r&&function(t){return lr.get(t.document)?.has(t.target)??!1}(e))return;if(r&&u)return void f();if(r===s||w(t))return;s=r;const o=c,a=()=>w(t)||i()!==r||o!==c&&l!==r;t.emit("fullscreen",r),a()||(r&&(t.state="fullscreen"),a()||(n.classList.toggle("art-fullscreen",r),t.emit("resize")))}),mt(r,e.document,e.errorEvent,r=>{(r.target===n||r.target===o||r.target===e.document&&(p||void 0!==a||i()))&&!w(t)&&t.emit("fullscreenError",r)}),{get:()=>!w(t)&&i(),set(n){if(w(t))return Promise.resolve();const o=++c;if(l=Boolean(n),l?u=!1:d&&(u=!0),a?.cancel(),a=void 0,d=!1,!l&&!i())return Promise.resolve();p=!0,d=l;const s=pr(e,r,l,()=>{!w(t)&&l||f()},()=>!i());p=!1,c===o?a=s:s.cancel();const h=s.promise.catch(e=>{throw w(t)||c!==o||(t.notice.show=e),e}).finally(()=>{c===o&&(a=void 0,d=!1)});return h.catch(()=>{}),h}}}const hr=new WeakSet;function mr(t,e=!1){return"string"===typeof t.webkitPresentationMode?"fullscreen"===t.webkitPresentationMode:"boolean"===typeof t.webkitDisplayingFullscreen?t.webkitDisplayingFullscreen:t.ownerDocument.fullscreenElement===t||e}function gr(t){hr.delete(t),t.removeEventListener("webkitbeginfullscreen",vr),t.removeEventListener("webkitpresentationmodechanged",vr)}function vr(t){if(hr.has(this)&&mr(this,"webkitbeginfullscreen"===t.type)){gr(this);try{this.webkitExitFullscreen?.()}catch{}}}function yr(t){hr.add(t),t.addEventListener("webkitbeginfullscreen",vr),t.addEventListener("webkitpresentationmodechanged",vr)}function br(t){const{$video:e}=t.template,r=b(t).child();let n=!1,o=mr(e),i=o,a=!1,s=0;const c=()=>mr(e,n);function l(r){if(w(t)||(l=e,hr.has(l)))return;var l;"boolean"===typeof r&&(n=r);const d=c();if(d&&(a=!1),d===o)return;o=d;const u=s,p=()=>w(t)||c()!==d||u!==s&&i!==d;t.emit("fullscreen",d),p()||(d&&(t.state="fullscreen"),p()||t.emit("resize"))}r.add(()=>{s++,i=!1,a&&yr(e),c()&&e.webkitExitFullscreen?.()}),mt(r,e,"webkitbeginfullscreen",()=>l(!0)),mt(r,e,"webkitendfullscreen",()=>l(!1)),mt(r,e,"webkitpresentationmodechanged",()=>l());const d=()=>l();return t.on("document:webkitfullscreenchange",d),r.add(()=>{t.off("document:webkitfullscreenchange",d)}),{get:()=>!w(t)&&c(),set(r){if(w(t))return;const n=++s;if(i=Boolean(r),r){if(gr(e),t.state="fullscreen",w(t)||n!==s)return;a=!0;try{e.webkitEnterFullscreen()}catch(o){throw n===s&&(a=!1),o}}else a&&(a=!1,yr(e)),c()&&e.webkitExitFullscreen()}}}function wr(t){return{node:t,parent:t.parentNode,next:t.nextSibling}}function xr({node:t,parent:e,next:r}){if(!e)return void t.parentNode?.removeChild(t);const n=r?.parentNode===e?r:null;t.parentNode===e&&t.nextSibling===n||e.insertBefore(t,n)}function kr(t,e,r){const n=Math.max(0,r.viewportWidth-r.width),o=Math.max(0,r.viewportHeight-r.height);return{left:Math.max(0,Math.min(t,n)),top:Math.max(0,Math.min(e,o))}}function $r(t){const{width:e,height:r}=t.getBoundingClientRect(),n=t.ownerDocument.defaultView;return{width:e,height:r,viewportWidth:n.innerWidth,viewportHeight:n.innerHeight}}function Er(t,e,r,n){const o=e.child();if(o.closed)return;const i=t.template.$mini;if(i){const t=i.style.display;return o.add(()=>{i.style.display=t}),{element:i,cancelDrag:()=>{},fresh:!1}}const a=t.template.$player.ownerDocument,s=a.createElement("div");s.className="art-mini-popup",o.add(()=>{s.remove()});try{const e=a.createElement("div");if(e.className="art-mini-close",e.append(t.icons.close),o.closed)return;const i=a.createElement("div");i.className="art-mini-state";const c=t.icons.play,l=t.icons.pause;if(o.closed)return;i.append(c,l),s.append(e,i),xt(o,e,()=>e.click(),r),xt(o,i,()=>(t.playing?l:c).click(),r);const d=t.i18n.get("Close");if(o.closed||w(t))return;e.setAttribute("aria-label",d);const u=t.i18n.get("Mini Player");if(o.closed||w(t))return;s.setAttribute("role","group"),s.setAttribute("aria-label",u),mt(o,s,"keydown",t=>{const e=t;r()&&wt(e)&&!e.defaultPrevented&&"Escape"===e.key&&(bt(e),n())}),mt(o,e,"click",n),mt(o,c,"click",()=>{G(t.play())}),mt(o,l,"click",()=>{t.pause()});const p=()=>{if(o.closed)return;const e=t.i18n.get(t.playing?"Pause":"Play");o.closed||w(t)||(i.setAttribute("aria-label",e),c.style.display=t.playing?"none":"flex",l.style.display=t.playing?"flex":"none")};p();for(const r of["video:playing","video:pause","video:timeupdate"])t.on(r,p),o.add(()=>{t.off(r,p)});const f=function(t,e,r,n){let o=!1,i=0,a=0;const s=()=>{o=!1,e.classList.remove("art-mini-dragging"),e.style.transform=""};mt(r,e,"mousedown",t=>{const e=t;0===e.button&&n()&&(o=!0,i=e.clientX,a=e.clientY)});const c=t=>{!r.closed&&o&&n()&&(e.classList.add("art-mini-dragging"),e.style.transform=`translate(${t.clientX-i}px, ${t.clientY-a}px)`)},l=()=>{if(r.closed||!o||!n())return;const i=e.getBoundingClientRect(),a=kr(i.left,i.top,$r(e));s(),e.style.left=`${a.left}px`,e.style.top=`${a.top}px`,t.storage.set("left",a.left),r.closed||t.storage.set("top",a.top)};return t.on("document:mousemove",c),r.add(()=>{t.off("document:mousemove",c)}),t.on("document:mouseup",l),r.add(()=>{t.off("document:mouseup",l)}),r.add(s),s}(t,s,o,r);if(o.closed)return;if(t.template.$mini=s,a.body.append(s),!o.closed)return{element:s,cancelDrag:f,fresh:!0,focus:()=>e.focus({preventScroll:!0})}}catch(c){throw o.dispose(),t.template.$mini===s&&delete t.template.$mini,c}}function Ar(t){const{$player:e,$video:r}=t.template,n=b(t).child();let o,i,a=0,s=!1,c=!1;const l=()=>!w(t)&&e.classList.contains("art-mini"),d=function(t){const e=t.template.$player;let r;return{entering(){const n=e.ownerDocument,o=n.activeElement,i=o&&e.contains(o);t.template.$mini?.contains(o)||(r=i?jt(o):void 0);const a=i&&e.classList.contains("art-keyboard-focus");return e=>{!a||w(t)||n.activeElement!==o&&n.activeElement!==n.body||e?.()}},leaving(n){const o=e.ownerDocument,i=n?.contains(o.activeElement);return()=>{if(!i||w(t)||o.activeElement!==o.body&&!n?.contains(o.activeElement))return;const e=r&&o.defaultView?.getComputedStyle(r).visibility;r?.isConnected&&r.getClientRects().length&&"hidden"!==e&&"collapse"!==e&&"true"!==r.getAttribute("aria-disabled")&&!r.matches(":disabled")&&!r.closest("[inert]")?r.focus({preventScroll:!0}):At(t)}}}}(t);function u(){if(i){const e=i,r=a;i=void 0;try{xr(e)}catch(t){throw r!==a||i||(i=e),t}}}function p(){if(w(t))return;const r=++a;c=!1;const n=d.leaving(t.template.$mini);u(),w(t)||r!==a||(o?.cancelDrag(),e.classList.remove("art-mini"),t.template.$mini&&(t.template.$mini.style.display="none",n(),w(t)||r!==a||t.emit("mini",!1)))}function f(){if(w(t))return;const h=++a;if(s)return void(c=!0);const m=d.entering();if(t.state="mini",!w(t)&&h===a){i??(i=wr(r)),e.classList.add("art-mini");try{if(!o){s=!0;try{o=Er(t,n,l,p)}finally{s=!1}}if(c)return c=!1,void f();if(!o||w(t))return;if(h!==a)return void(l()||(o.element.style.display="none"));if(o.fresh?o.element.prepend(r):o.element.append(r),w(t)||h!==a)return;o.element.style.display=o.fresh?"":"flex",o.fresh=!1;const e=t.storage.get("top"),i=function(t,e,r){return"number"===typeof t&&Number.isFinite(t)&&"number"===typeof e&&Number.isFinite(e)&&t>=0&&e>=0&&t+r.width<=r.viewportWidth&&e+r.height<=r.viewportHeight?{left:t,top:e,reset:!1}:{...kr(r.viewportWidth-r.width-50,r.viewportHeight-r.height-50,r),reset:!0}}(t.storage.get("left"),e,$r(o.element));if(w(t)||h!==a)return;if(o.element.style.left=`${i.left}px`,o.element.style.top=`${i.top}px`,i.reset){if(t.storage.set("top",i.top),w(t)||h!==a)return;t.storage.set("left",i.left)}w(t)||h!==a||m(o.focus),w(t)||h!==a||t.emit("mini",!0)}catch(g){const r=c;throw c=!1,w(t)||h!==a&&!r||(u(),e.classList.remove("art-mini"),o&&(o.element.style.display="none")),g}}}return n.add(()=>{a++;try{u()}finally{o?.cancelDrag(),e.classList.remove("art-mini")}}),{get:l,set(t){t?f():p()}}}const Cr=new WeakSet,Sr=t=>"picture-in-picture"===t.webkitPresentationMode;function Tr(t){Cr.delete(t),t.removeEventListener("webkitpresentationmodechanged",Lr),t.removeEventListener("enterpictureinpicture",Lr)}function Lr(){if(Cr.has(this)&&Sr(this)){Tr(this);try{this.webkitSetPresentationMode?.("inline")}catch{}}}function Pr(t){Cr.add(t),t.addEventListener("webkitpresentationmodechanged",Lr),t.addEventListener("enterpictureinpicture",Lr)}function Mr(t,e,r,n,o=!0){let i,a=!1;const s=e=>{t.closed||a||(o&&(a=!0,i()),n(e))};return e[o?"once":"on"](r,s),i=t.add(()=>{e.off(r,s)}),s}function zr(t,e,r){return new Promise((n,o)=>{if(w(t)||e===t.url)return void n();const i=function(t){const e=Gt.get(t);return e?.active()?e.resumePlaying:void 0}(t)??t.playing,a=ee(t);a.resumePlaying=i;const s=a.scope.child();let c=!1;const l=(t=!1,e)=>{c||(c=!0,a.resumePlaying=void 0,a.onError=void 0,a.onAssigned=void 0,s.dispose(),t?o(e):n(),t&&a.scope.dispose())};s.add(()=>{l()});const d=()=>!c&&a.active(),u=t=>l(!0,t);a.onError=u;try{const{aspectRatio:n,playbackRate:o}=t;a.internalPause=!0;try{t.pause()}finally{a.internalPause=!1}if(!d())return;const i=s.child();let c=!1,p=!1,f=!1;const h=pe(t,r,d),m=async()=>{const e=a.pauseRevision;if(t.aspectRatio=n,d()){if(a.resumePlaying)try{await t.play()}catch{}d()&&(a.pauseRevision===e&&(t.notice.show=""),l())}},g=()=>{if(d()&&!p&&c)try{if(t.template?.$video?.seeking)return;if(!d())return;if(f||(f=!0,t.playbackRate=o),!h.ready()||!d()||p)return;p=!0,i.dispose(),m().catch(u)}catch(e){u(e)}},v={"video:error":u,"video:loadedmetadata":()=>{if(d())try{h.restore()}catch(t){u(t)}},"video:canplay":()=>{c=!0,g()},"video:seeked":g,seek:h.manual},y=s.child(),b=[],w=Object.keys(v);for(const e of w)Mr(y,t,e,t=>{a.acceptingEvents&&b.push([e,t])},!1);if(ne(t,a,e),!d())return;if(t.notice.show="",!d())return;const x=()=>{if(y.dispose(),!e)return void l();const r={};for(const e of w)r[e]=Mr(i,t,e,v[e],"video:seeked"!==e);for(const[t,e]of b){if(!d()||i.closed)break;r[t](e)}b.length=0};a.assigned?x():a.onAssigned=x}catch(p){u(p)}})}function Rr(t,e){const{number:r,column:n,width:o,height:i,scale:a}=t,{imageWidth:s,videoWidth:c,videoHeight:l,progressWidth:d,position:u}=e,p=Number(n),f=Number(o)*Number(a)||s/p,h=Number(i)*Number(a)||f/(c/l),m=Math.floor(u/(d/Number(r)));return{height:`${h}px`,width:`${f}px`,backgroundPosition:`-${m%p*f}px -${Math.floor(m/p)*h}px`,left:u<=f/2?0:u>d-f/2?d-f+"px":u-f/2+"px"}}function Or(t){const{option:e,template:{$video:r}}=t;it(t,"url",{get:()=>r.src,async set(n){if(w(t))return;const o=function(t){const e=Kt.get(t);return Kt.delete(t),e||ee(t)}(t);o.acceptingEvents=!1;try{if(!n)return void(await vt(o.scope)&&o.active()&&(t.loading.show=!0));const i=t.url,a=e.type||K(n),s=e.customType[a];if(a&&s){if(!(await vt(o.scope))||!o.active())return;t.loading.show=!0}if(!o.active())return;const c=o.scope.child();let l=!1,d=!1;Mr(c,t,"video:canplay",()=>{l=!d}),Mr(c,t,"video:error",()=>{d=!0});try{if(o.acceptingEvents=!0,a&&s){const e=s.call(t,r,n,t);Promise.resolve(e).catch(t=>oe(o,t))}else{if(!o.active())return;r.src=n}}finally{c.dispose()}if(!o.active())return;if(i!==t.url&&(t.option.url=n,o.active()&&t.isReady&&i)){const e=()=>{o.active()&&t.emit("restart",n)};l?e():d||Mr(o.scope,t,"video:canplay",e)}}catch(i){oe(o,i)}finally{re(o)}}})}const Dr=[function(t){const{template:{$video:e}}=t;it(t,"attr",{value(t,r){const n=e;if(void 0===r)return n[t];n[t]=r}})},function(t){const{i18n:e,notice:r,option:n,constructor:{instances:o},template:{$video:i}}=t;it(t,"play",{async value(){Jt(t,!0);const a=function(t){const e=te(t),r=Gt.get(t),n=r?.pauseRevision;return()=>e()&&r?.pauseRevision===n}(t),s=await i.play();if(!a())return s;const c=e.get("Play");if(!a())return s;if(r.show=c,!a())return s;if(t.emit("play"),n.mutex)for(let e=0;et.playing?t.pause():t.play()})},function(t){const{notice:e}=t;it(t,"seek",{set(r){t.currentTime=r,t.duration&&(e.show=`${tt(t.currentTime)} / ${tt(t.duration)}`),t.emit("seek",t.currentTime,r)}});const r=t;it(t,"forward",{set(e){r.seek=t.currentTime+e}}),it(t,"backward",{set(e){r.seek=t.currentTime-e}})},function(t){const{template:{$video:e},i18n:r,notice:n,storage:o}=t;it(t,"volume",{get:()=>e.volume||0,set:t=>{e.volume=J(t,0,1),n.show=`${r.get("Volume")}: ${Number.parseInt(String(100*e.volume),10)}`,0!==e.volume&&o.set("volume",e.volume)}}),it(t,"muted",{get:()=>e.muted,set:r=>{e.muted=r,t.emit("muted",r)}})},function(t){const{$video:e}=t.template;it(t,"currentTime",{get:()=>e.currentTime||0,set:r=>{const n=Number.parseFloat(r);Number.isNaN(n)||(!function(t){de.set(t,ue(t)+1)}(t),e.currentTime=J(n,0,t.duration))}})},function(t){it(t,"duration",{get:()=>{const{duration:e}=t.template.$video;return e===1/0?0:e||0}})},function(t){const e=e=>zr(t,e,0);it(t,"switchQuality",{value:e=>zr(t,e,t.currentTime)}),it(t,"switchUrl",{value:e}),it(t,"switch",{set:e})},function(t){const{template:{$video:e},i18n:r,notice:n}=t,o=t;it(t,"playbackRate",{get:()=>e.playbackRate,set(t){if(t){if(t===e.playbackRate)return;e.playbackRate=t,n.show=`${r.get("Rate")}: ${1===t?r.get("Normal"):`${t}x`}`}else o.playbackRate=1}})},function(t){const{i18n:e,notice:r,template:{$video:n,$player:o}}=t;it(t,"aspectRatio",{get:()=>o.dataset.aspectRatio||"default",set(i){if(!w(t)){if(i||(i="default"),"default"===i)n.style.width="",n.style.height="",n.style.margin="",delete o.dataset.aspectRatio;else{const e=i.split(":").map(Number),r=tr({width:o.clientWidth,height:o.clientHeight},e[0]/e[1]);if(w(t))return;"width"===r?.axis?(n.style.width=`${r.width}px`,n.style.height="100%",n.style.margin="0 auto"):r&&(n.style.width="100%",n.style.height=`${r.height}px`,n.style.margin="auto 0"),o.dataset.aspectRatio=i}r.show=`${e.get("Aspect Ratio")}: ${"default"===i?e.get("Default"):i}`,w(t)||t.emit("aspectRatio",i)}}})},function(t){const{notice:e,template:{$video:r}}=t,n=document.createElement("canvas");function o(o){const i=te(t);return new Promise((a,s)=>{const c=r=>{try{!w(t)&&i()&&(e.show=r)}catch(n){return void s(n)}s(r)};try{!function(t,e){t.width=e.videoWidth,t.height=e.videoHeight;const r=t.getContext("2d");if(!r)throw new TypeError("Canvas 2D context is unavailable");r.drawImage(e,0,0)}(n,r),o?function(t,e,r){t.toBlob(t=>{try{if(!t)throw new Error("Unable to encode screenshot blob");e(URL.createObjectURL(t))}catch(n){r(n)}})}(n,a,c):a(n.toDataURL("image/png"))}catch(l){c(l)}})}it(t,"getDataURL",{value:()=>o(!1)}),it(t,"getBlobUrl",{value:()=>o(!0)}),it(t,"screenshot",{value:async e=>{const n=te(t),o=await t.getDataURL();if(!w(t)&&n()){const i=e||`artplayer_${tt(r.currentTime)}`;!w(t)&&n()&&Z(o,`${i}.png`),!w(t)&&n()&&t.emit("screenshot",o)}return o}})},function(t){const{i18n:e,notice:r,template:{$video:n,$player:o}}=t,i=()=>{if(w(t))return;const i=function(t){const e=sr.raw,r=t.ownerDocument;if(e&&Reflect.get(r,e.fullscreenEnabled))return{document:r,target:t,get element(){return Reflect.get(r,e.fullscreenElement)},elementProperty:e.fullscreenElement,changeEvent:e.fullscreenchange,errorEvent:e.fullscreenerror,request:()=>cr(t,e.requestFullscreen,void 0),exit:()=>cr(r,e.exitFullscreen)}}(o);i?it(t,"fullscreen",fr(t,i)):n.webkitSupportsFullscreen&&"function"===typeof n.webkitEnterFullscreen&&"function"===typeof n.webkitExitFullscreen?it(t,"fullscreen",br(t)):it(t,"fullscreen",{get:()=>!1,set(){w(t)||(r.show=e.get("Fullscreen Not Supported"))}}),it(t,"fullscreen",ct(t,"fullscreen"))};t.once("video:loadedmetadata",i),b(t).add(()=>{t.off("video:loadedmetadata",i)})},function(t){const e=function(t){const{$player:e}=t.template;let r,n=0;function o(t,r){return null===t.style?e.removeAttribute("style"):e.setAttribute("style",t.style),!!r()&&(e.classList.remove("art-fullscreen-web"),!!r()&&(xr(t.placement),r()))}return b(t).add(()=>{n+=1;const t=r;if(r=void 0,t)try{o(t,()=>!0)}catch(i){try{e.parentNode!==t.placement.parent&&e.parentNode?.removeChild(e)}catch(a){throw new h([i,a])}throw i}}),i=>{if(w(t))return;const a=++n,s=()=>a===n&&!w(t),c=function(t){const e=t.ownerDocument?.activeElement,r=e&&t.contains(e);return()=>{r&&e.isConnected&&t.contains(e)&&e.ownerDocument.activeElement===e.ownerDocument.body&&e.focus({preventScroll:!0})}}(e);if(i){r||(r={placement:wr(e),style:e.getAttribute("style")});const n=r;try{const r=e.ownerDocument.body;if(t.constructor.FULLSCREEN_WEB_IN_BODY&&e.parentNode!==r&&r.appendChild(e),!s())return;if(t.state="fullscreenWeb",!s())return;e.style.width="100%",e.style.height="100%",e.classList.add("art-fullscreen-web")}catch(l){throw s()&&o(n,s)&&(r=void 0,c()),l}if(!s())return;if(c(),!s())return;t.emit("fullscreenWeb",!0)}else{if(r){if(!o(r,s))return;r=void 0}else e.classList.remove("art-fullscreen-web");if(!s())return;if(c(),!s())return;t.emit("fullscreenWeb",!1)}s()&&t.emit("resize")}}(t);it(t,"fullscreenWeb",{get:()=>t.template.$player.classList.contains("art-fullscreen-web"),set:e})},function(t){const{i18n:e,notice:r,template:{$video:n}}=t,o=n.ownerDocument;o.pictureInPictureEnabled&&"function"===typeof n.requestPictureInPicture&&"function"===typeof o.exitPictureInPicture?it(t,"pip",function(t){const{$video:e}=t.template,r=e.ownerDocument,n=b(t).child(),o=()=>r.pictureInPictureElement===e;let i=o(),a=i,s=!1,c=!1,l=0;function d(){if(o())try{r.exitPictureInPicture().catch(()=>{})}catch{}}function u(e,r,n){e.then(()=>{!r||!w(t)&&a||d()},e=>{w(t)||l!==n||(t.notice.show=e)}).finally(()=>{l===n&&(s=!1)}).catch(()=>{})}return e.disablePictureInPicture=!1,n.add(()=>{l++,a=!1,d()}),mt(n,e,"enterpictureinpicture",()=>{if(c)return void d();if(!o()||i)return;const e=l;t.state="pip",!w(t)&&e===l&&o()&&(i=!0,t.emit("pip",!0))}),mt(n,e,"leavepictureinpicture",()=>{i&&!o()&&(i=!1,t.emit("pip",!1))}),{get:()=>!w(t)&&o()?e:null,set(n){if(w(t))return;const i=++l;if(a=Boolean(n),a?c=!1:s&&(c=!0),s=!1,a){if(t.state="pip",w(t)||l!==i)return;s=!0;try{u(e.requestPictureInPicture(),!0,i)}catch(d){throw l===i&&(s=!1),d}}else o()&&u(r.exitPictureInPicture(),!1,i)}}}(t)):"function"===typeof n.webkitSupportsPresentationMode&&"function"===typeof n.webkitSetPresentationMode?it(t,"pip",function(t){const{$video:e}=t.template,r=b(t).child();let n=!1,o=!1,i=0,a=0;function s(r=!1){if(w(t)||Cr.has(e))return;const s=Sr(e);if(s&&(o=!1),s===n&&!r)return;const c=i;s&&(t.state="pip"),w(t)||i!==c||Sr(e)!==s||(n=s,a++,t.emit("pip",s))}e.webkitSetPresentationMode("inline"),r.add(()=>{i++,o&&Pr(e),Sr(e)&&e.webkitSetPresentationMode("inline")});for(const c of["webkitpresentationmodechanged","enterpictureinpicture","leavepictureinpicture"])mt(r,e,c,()=>s());return{get:()=>!w(t)&&Sr(e),set(r){if(w(t))return;const n=++i,c=a;if(r){if(!1===e.webkitSupportsPresentationMode?.("picture-in-picture"))return void(t.notice.show=t.i18n.get("PIP Not Supported"));if(Tr(e),t.state="pip",w(t)||i!==n)return;o=!0;try{e.webkitSetPresentationMode("picture-in-picture")}catch(l){throw n===i&&(o=!1),l}}else o&&(o=!1,Pr(e)),Sr(e)&&e.webkitSetPresentationMode("inline");w(t)||n!==i||c!==a||Sr(e)!==Boolean(r)||s(!0)}}}(t)):it(t,"pip",{get:()=>!1,set(){w(t)||(r.show=e.get("PIP Not Supported"))}})},function(t){const{$video:e}=t.template,r=t;it(t,"loaded",{get:()=>r.loadedTime/e.duration}),it(t,"loadedTime",{get:()=>e.buffered.length?e.buffered.end(e.buffered.length-1):0})},function(t){it(t,"played",{get:()=>t.currentTime/t.duration})},function(t){const{$video:e}=t.template;it(t,"playing",{get:()=>"boolean"===typeof e.playing?e.playing:!!(e.currentTime>0&&!e.paused&&!e.ended&&e.readyState>2)})},function(t){const{$container:e,$player:r,$video:n}=t.template;it(t,"autoSize",{value(){if(w(t))return;const o={width:n.videoWidth,height:n.videoHeight};if(!Qe(o))return;const i=M(e),a=tr(i,o.width/o.height);a&&!w(t)&&("width"===a.axis?(r.style.width=a.width/i.width*100+"%",r.style.height="100%"):(r.style.width="100%",r.style.height=a.height/i.height*100+"%"),t.emit("autoSize",{width:t.width,height:t.height}))}})},function(t){const e=t;it(t,"rect",{get:()=>M(t.template.$player)});const r=["bottom","height","left","right","top","width"];for(let n=0;ne.rect[o]})}it(t,"x",{get:()=>e.left+window.pageXOffset}),it(t,"y",{get:()=>e.top+window.pageYOffset})},function(t){const{template:{$player:e},i18n:r,notice:n}=t;it(t,"flip",{get:()=>e.dataset.flip||"normal",set(o){w(t)||(o||(o="normal"),"normal"===o?delete e.dataset.flip:e.dataset.flip=o,n.show=`${r.get("Video Flip")}: ${r.get(Q(o))}`,w(t)||t.emit("flip",o))}})},function(t){it(t,"mini",Ar(t))},function(t){const{template:{$poster:e}}=t;it(t,"poster",{get:()=>{try{return e.style.backgroundImage.match(/"(.*)"/)[1]}catch{return""}},set(t){H(e,"backgroundImage",`url(${t})`)}})},function(t){const{$container:e,$video:r}=t.template;it(t,"autoHeight",{value(){if(w(t))return;const n=function(t,e){if(!Number.isFinite(t)||t<=0||!Qe(e))return;const r=e.height*(t/e.width);return Number.isFinite(r)&&r>0?r:void 0}(e.clientWidth,{width:r.videoWidth,height:r.videoHeight});void 0===n||w(t)||(e.style.height=`${n}px`,t.emit("autoHeight",n))}})},function(t){const{$player:e}=t.template;it(t,"cssVar",{value:(t,r)=>r?e.style.setProperty(t,r):getComputedStyle(e).getPropertyValue(t)})},function(t){it(t,"theme",{get:()=>t.cssVar("--art-theme"),set(e){t.cssVar("--art-theme",e)}})},function(t){it(t,"type",{get:()=>t.option.type,set(e){t.option.type=e}})},function(t){const e=["mini","pip","fullscreen","fullscreenWeb"];it(t,"state",{get:()=>e.find(e=>t[e])||"standard",set(r){for(let n=0;nn.$track?.offset||0,set(o){const{cues:i}=t.subtitle;if(!n.$track||0===i.length)return;const a=J(o,-10,10);n.$track.offset=a;for(let e=0;et.startTime<=n&&ni[e]===t)){for(const e of r)t.removeCue(e);for(const e of r)t.addCue(e)}}(n.$track.track,n.$video,i),t.subtitle.update(),e.show=`${r.get("Subtitle Offset")}: ${o}s`,t.emit("subtitleOffset",o)}})},function(t){if(w(t))return;const{i18n:e,notice:r,proxy:n,template:{$video:o}}=t;let i=!0;const a=window.WebKitPlaybackTargetAvailabilityEvent;if(w(t))return;const s=a&&o.webkitShowPlaybackTargetPicker;w(t)||(s?n(o,"webkitplaybacktargetavailabilitychanged",e=>{if(!w(t))switch(e.availability){case"available":i=!0;break;case"not-available":i=!1}}):i=!1,w(t)||it(t,"airplay",{value(){if(!w(t))if(i){const e=o.webkitShowPlaybackTargetPicker;if(w(t))return;Reflect.apply(e,o,[]),w(t)||t.emit("airplay")}else{const n=e.get("AirPlay Not Available");w(t)||(r.show=n)}}}))},function(t){it(t,"quality",{set(e){const{controls:r,notice:n,i18n:o}=t,i=e.find(t=>t.default)||e[0];r.update({name:"quality",position:"right",index:10,style:{marginRight:"10px"},html:i?.html||"",selector:e,async onSelect(e,r,i){const a=function(t){return t&&ge.get(t)||(()=>!0)}(i);if(await t.switchQuality(e.url),!w(t)&&a()){const r=`${o.get("Switch Video")}: ${e.html}`;!w(t)&&a()&&(n.show=r)}return e.html}})}})},function(t){const{option:e,template:{$progress:r,$video:n}}=t;let o,i,a,s=b(t).child(),c=!1;function l(){const e=s;s=b(t).child(),o=void 0,c=!1,a=void 0,e.dispose()}function d(){const i=a,c=s;if(!i||!o)return;const l=()=>!w(t)&&!c.closed&&s===c&&a===i&&i.sourceActive()&&t.controls?.thumbnails===i.element;if(!l())return;const d=r.clientWidth*i.percentage;if(!(d>0&&d{const f=t.controls?.thumbnails,{url:h,scale:m}=e.thumbnails;if(!w(t)&&f&&h&&("hover"===r||"played"===r&&p&&u)){if(i!==f){const t=E(f);if(t.closed)return;i=f,t.add(()=>{i===f&&(i=void 0,l())})}if(a={percentage:n,element:f,sourceActive:te(t)},o)d();else if(!c){const t=s;c=!0,function(t,e,r){return q(t,e,r)}(h,m,t).then(e=>{s!==t||t.closed||(c=!1,o=e,d())}).catch(e=>{s!==t||t.closed||(c=!1,console.warn("ArtPlayer thumbnail load failed:",e))})}}}),it(t,"thumbnails",{get:()=>t.option.thumbnails,set:e=>{w(t)||!e.url||t.option.isLive||w(t)||(t.option.thumbnails=e,l())}})},function(t){!function(t){const{proxy:e,template:{$video:r}}=t;for(let n=0;n{w(t)||t.emit(`video:${e.type}`,e)})}(t);const e=nr(t);!function(t,e){er(t,"video:canplay",()=>{e.reset(),rr(t,[["loading",!1]])}),er(t,"video:canplay",()=>{rr(t,[["loading",!1],["controls",!0],["mask",!0]]),w(t)||(t.isReady=!0,t.emit("ready"))},!0)}(t,e),function(t){const{option:e}=t;er(t,"video:ended",()=>{if(e.loop){const e=te(t);if(t.seek=0,w(t)||!e())return;G(t.play()),e()&&rr(t,[["controls",!1],["mask",!1]],e)}else rr(t,[["controls",!0],["mask",!0]])})}(t),er(t,"video:error",e.schedule),function(t,e){const{template:{$poster:r}}=t;er(t,"video:loadedmetadata",()=>{t.emit("resize"),u&&rr(t,[["loading",!1],["controls",!0],["mask",!0]])}),er(t,"video:loadstart",()=>{e.loadStart(),rr(t,[["loading",!0],["mask",!1],["controls",!0]])}),er(t,"video:pause",()=>{rr(t,[["controls",!0],["mask",!0]])}),er(t,"video:play",()=>{rr(t,[["mask",!1]]),w(t)||H(r,"display","none")}),er(t,"video:playing",()=>rr(t,[["mask",!1]])),er(t,"video:progress",()=>{t.playing&&rr(t,[["loading",!1]])}),er(t,"video:seeked",()=>rr(t,[["loading",!1],["mask",!0]])),er(t,"video:seeking",()=>rr(t,[["loading",!0],["mask",!1]])),er(t,"video:timeupdate",()=>rr(t,[["mask",!1]])),er(t,"video:waiting",()=>rr(t,[["loading",!0],["mask",!1]]))}(t,e)},function(t){if(w(t))return;const{option:e,storage:r,template:{$video:n,$poster:o}}=t;for(const s in e.moreVideoAttr){if(w(t))return;const r=e.moreVideoAttr[s];if(w(t))return;t.attr(s,r)}if(w(t))return;if(e.muted){const r=e.muted;if(w(t))return;t.muted=r}if(w(t))return;if(e.volume){const r=J(e.volume,0,1);if(w(t))return;n.volume=r}if(w(t))return;const i=r.get("volume");if(w(t))return;if("number"===typeof i&&(n.volume=J(i,0,1)),w(t))return;if(e.poster){const r=`url(${e.poster})`;if(w(t))return;H(o,"backgroundImage",r)}if(w(t))return;if(e.autoplay){const r=e.autoplay;if(w(t))return;n.autoplay=r}if(w(t))return;if(e.playsInline){if(w(t))return;if(n.playsInline=!0,w(t))return;n["webkit-playsinline"]=!0}if(w(t))return;if(e.theme){const r=e.cssVar,n=e.theme;if(w(t))return;r["--art-theme"]=n}for(const s in e.cssVar){if(w(t))return;const r=e.cssVar[s];if(w(t))return;t.cssVar(s,r)}if(w(t))return;const a=e.url;w(t)||(t.url=a)}];class Ir{constructor(t){if(!w(t)){Or(t);for(const e of Dr){if(w(t))return;e(t)}}}}const Nr=new WeakMap,_r="art-auto-orientation-fullscreen";function Wr(t){if(Nr.get(t.orientation)===t)try{t.orientation.unlock()}catch{}}const Fr="art-auto-orientation",Vr=["width","height","transform-origin","transform"];function Yr(t){const{$player:e,$video:r}=t.template,n=()=>{const t={width:r.videoWidth,height:r.videoHeight},n=e.ownerDocument.documentElement,o={width:n.clientWidth,height:n.clientHeight};return Qe(t)&&Qe(o)&&(t.width>t.height&&o.widtho.height)},o=function(t,e){const{$player:r}=t.template,n=b(t);let o,i=()=>{};function a(){i(),i=()=>{};const e=o;if(o=void 0,e&&t.fullscreenWeb)for(const{name:t,value:o,priority:i}of e)r.style.setProperty(t,o,i);const n=r.classList.contains(Fr);r.classList.remove(Fr),n&&(t.isRotate=!1,w(t)||t.emit("resize"))}function s(n){if(!t.fullscreenWeb||!e())return;const i=z();if(w(t)||!t.fullscreenWeb)return;const a=r.ownerDocument.documentElement;o??(o=Vr.map(t=>({name:t,value:r.style.getPropertyValue(t),priority:r.style.getPropertyPriority(t)}))),r.style.width=a.clientHeight-i.top-i.bottom+"px",r.style.height=a.clientWidth-i.left-i.right+"px",r.style.transformOrigin="0 0",r.style.transform=`rotate(90deg) translate(${i.top}px, -${a.clientWidth-i.right}px)`,r.classList.add(Fr),t.isRotate=!0,n&&t.emit("resize")}return n.add(a),r=>{w(t)||(r?o?s(!1):e()&&(i(),i=gt(n,()=>{o||s(!0)},Number(t.constructor.AUTO_ORIENTATION_TIME??0))):a())}}(t,n),i=function(t,e){const{$player:r}=t.template;let n;function o(){const t=n;n=void 0,r.classList.remove(_r),t&&(t.cancelled=!0,Wr(t),t.settled&&Nr.get(t.orientation)===t&&Nr.delete(t.orientation))}return b(t).add(o),i=>{if(w(t))return;if(!i)return void o();if(n&&!n.cancelled&&Nr.get(n.orientation)===n)return;const a=r.ownerDocument.defaultView?.screen?.orientation;if("function"!==typeof a?.lock||"function"!==typeof a.unlock||!e())return;const s={orientation:a,cancelled:!1,settled:!1};n=s,Nr.set(a,s);const c=()=>!w(t)&&!s.cancelled&&n===s&&Nr.get(a)===s,l=e=>{s.settled=!0;const o=c();Nr.get(a)===s&&Nr.delete(a),n===s&&(n=void 0),o&&(r.classList.remove(_r),t.notice.show=e)};try{const t=a.lock(a.type.startsWith("portrait")?"landscape":"portrait");Promise.resolve(t).then(()=>{s.settled=!0,c()?r.classList.add(_r):(Wr(s),Nr.get(a)===s&&Nr.delete(a))}).catch(l)}catch(d){l(d)}}}(t,n);return t.on("fullscreenWeb",o),t.on("fullscreen",i),b(t).add(()=>{t.off("fullscreenWeb",o),t.off("fullscreen",i)}),{name:"autoOrientation",get state(){return e.classList.contains("art-auto-orientation")}}}function Br(t){return t.get("times")||{}}function Hr(t){const{storage:e}=t,r=function(t){const{i18n:e,icons:r,storage:n,constructor:o,template:{$poster:i}}=t,a=t.layers.add({name:"auto-playback",html:'\n
\n
\n
\n '});if(!a||w(t))return()=>{};const s=$t(".art-auto-playback-last",a),c=$t(".art-auto-playback-jump",a),l=$t(".art-auto-playback-close",a);kt(l,r.close);const d=E(a);let u,p=0;const f=()=>{const r=++p;if(u?.dispose(),d.closed||w(t)||p!==r)return;const f=d.child();u=f;const h=()=>u===f&&!f.closed&&!w(t);f.add(()=>{u===f&&(u=void 0,H(a,"display","none"))});const m=Qt(t).add(()=>{f.dispose()});f.add(()=>{m()});const g=Br(n)[t.option.id||t.option.url];if(!h())return;if(H(a,"display","none"),!h()||!g||!(g>=o.AUTO_PLAYBACK_MIN))return;if(!h())return;if(H(a,"display","flex"),!h())return;const v=`${e.get("Last Seen")} ${tt(g)}`;if(!h())return;if(s.textContent=v,!h())return;const y=e.get("Jump Play");if(!h())return;if(c.textContent=y,!h())return;const b=(e,r)=>{const n=t.events.proxy(e,"click",()=>{h()&&r()});f.add(()=>{t.events.remove(n)})};if(b(l,()=>{H(a,"display","none")}),!h())return;if(b(c,()=>{t.seek=g,h()&&(G(t.play()),h()&&(H(i,"display","none"),h()&&H(a,"display","none")))}),!h())return;let x=()=>{},k=!1;const $=()=>{!k&&h()&&(k=!0,x(),gt(f,()=>{h()&&H(a,"display","none")},o.AUTO_PLAYBACK_TIMEOUT))};t.on("video:timeupdate",$),x=f.add(()=>{t.off("video:timeupdate",$)}),k&&x()};return()=>{C(t,a,"ready",f),C(t,a,"restart",f)}}(t);return function(t){const{storage:e,constructor:r}=t;Pe(t)("video:timeupdate",()=>{if(!t.playing)return;const n=Br(e),o=Object.keys(n),i=r.AUTO_PLAYBACK_MAX,a=t.option.id||t.option.url,s=t.currentTime;w(t)||(o.length>i&&delete n[o[0]],n[a]=s,w(t)||e.set("times",n))})}(t),r(),{name:"auto-playback",get times(){return Br(e)},clear:()=>e.del("times"),delete(t){const r=Br(e);return delete r[t],e.set("times",r),r}}}function jr(t){let e,r=0;return{start:n=>{const o=++r;if(e?.scope.dispose(),o!==r||w(t)||1!==n.touches.length||!t.playing||t.isLock)return;const i={scope:Qt(t).child(),active:!1,previousRate:1};e=i,i.scope.add(()=>{if(e===i&&(e=void 0,i.active))try{t.playbackRate=i.previousRate}finally{e?.active||D(t.template.$player,"art-fast-forward")}}),gt(i.scope,()=>{if(e!==i||w(t)||!t.playing||t.isLock)i.scope.dispose();else try{if(i.previousRate=t.playbackRate,e!==i||i.scope.closed)return;i.active=!0;const r=t.constructor.FAST_FORWARD_VALUE;if(e!==i||i.scope.closed||w(t))return;t.playbackRate=r,e!==i||i.scope.closed||w(t)||O(t.template.$player,"art-fast-forward")}catch(r){try{i.scope.dispose()}catch(n){console.warn("Failed to restore fast-forward playback rate:",n)}throw r}},t.constructor.FAST_FORWARD_TIME)},stop:()=>{r++,e?.scope.dispose()}}}function qr(t){const{proxy:e,template:{$player:r,$video:n}}=t,o=jr(t),i=Pe(t);return e(n,"touchstart",t=>o.start(t)),e(n,"touchcancel",o.stop),i("document:touchmove",o.stop),i("document:touchend",o.stop),i("document:touchcancel",o.stop),i("video:pause",o.stop),i("destroy",o.stop),i("lock",t=>{t&&o.stop()}),{name:"fastForward",get state(){return I(r,"art-fast-forward")}}}function Ur(t,e,r,n){let o;const i=()=>!r.closed&&!w(t),a=t.i18n.get("Lock");if(!i())return()=>{};e.setAttribute("aria-label",a),xt(r,e),mt(r,e,"keydown",t=>{const r=t;i()&&n()&&wt(r)&&!r.defaultPrevented&&"Escape"===r.key&&(bt(r),e.click())});const s=n=>{if(i())if(e.setAttribute("aria-pressed",String(n)),n&&!o){const{$player:n,$bottom:a}=t.template,s=a.contains(a.ownerDocument.activeElement)&&n.classList.contains("art-keyboard-focus");o=r.child(),function(t,e){const r=new Map,n=e.hasAttribute("inert"),o=e.getAttribute("aria-hidden"),i=(t,e)=>{"-1"===t.getAttribute("tabindex")&&(null===e?t.removeAttribute("tabindex"):t.setAttribute("tabindex",e))};if(t.add(()=>{for(const[t,e]of r)i(t,e);r.clear(),n||""!==e.getAttribute("inert")||e.removeAttribute("inert"),"true"===e.getAttribute("aria-hidden")&&(null===o?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden",o))}),t.closed)return;n||e.setAttribute("inert",""),e.setAttribute("aria-hidden","true");const a=()=>{if(!t.closed){for(const[t,n]of r)e.contains(t)||(i(t,n),r.delete(t));for(const t of e.querySelectorAll("[tabindex],button,input,select,textarea,a[href],[contenteditable]"))r.has(t)||(r.set(t,t.getAttribute("tabindex")),t.setAttribute("tabindex","-1"))}};if(a(),"undefined"!==typeof MutationObserver){const r=new MutationObserver(a);r.observe(e,{childList:!0,subtree:!0}),t.add(()=>{r.disconnect()})}}(o,a),i()&&s&&e.focus({preventScroll:!0})}else if(!n&&o){const t=o;o=void 0,t.dispose()}};return s(n()),s}function Xr(t){const{layers:e,icons:r,template:{$player:n}}=t;function o(){return I(n,"art-lock")}function i(){w(t)||(O(n,"art-lock"),w(t)||(t.isLock=!0,w(t)||t.emit("lock",!0)))}function a(){w(t)||(D(n,"art-lock"),w(t)||(t.isLock=!1,w(t)||t.emit("lock",!1)))}return e.add({name:"lock",mounted(e){const n=E(e);if(n.closed||w(t))return;const i=kt(e,r.lock);if(n.closed||w(t))return;const a=kt(e,r.unlock);if(n.closed||w(t))return;const s=Ur(t,e,n,o);n.closed||w(t)||(o()?(H(i,"display","inline-flex"),n.closed||w(t)||H(a,"display","none")):H(i,"display","none"),C(t,e,"lock",e=>{w(t)||(H(i,"display",e?"inline-flex":"none"),n.closed||w(t)||H(a,"display",e?"none":"inline-flex"),n.closed||w(t)||s(e))}))},click(){o()?a():i()}}),{name:"lock",get state(){return o()},set state(t){t?i():a()}}}function Gr(t){return Pe(t)("control",e=>{e?D(t.template.$player,"art-mini-progress-bar"):O(t.template.$player,"art-mini-progress-bar")}),{name:"mini-progress-bar"}}class Kr{constructor(t){this.art=t,this.id=0;const{option:e}=t;!function(t,e){w(t.art)||!e.miniProgressBar||e.isLive||t.add(Gr),!w(t.art)&&e.lock&&u&&t.add(Xr),w(t.art)||!e.autoPlayback||e.isLive||t.add(Hr),!w(t.art)&&e.autoOrientation&&u&&t.add(Yr),!w(t.art)&&e.fastForward&&u&&!e.isLive&&t.add(qr)}(this,e);for(let r=0;rconsole.warn("Failed to initialize ArtPlayer plugin:",t))}}add(t){X(!w(this.art),"Cannot add a plugin after ArtPlayer is destroyed"),this.id+=1;const e=t.call(this.art,this.art);return e instanceof Promise?e.then(e=>this.next(t,e)):this.next(t,e)}next(t,e){return function(t,e,r){if(w(t.art))return t;const n=r&&r.name||e.name||`plugin${t.id}`;if(w(t.art))return t;let o=n;const i=st(t,o);if(w(t.art))return t;const a=`Cannot add a plugin that already has the same name: ${n}`;return w(t.art)||(X(!i,a),("object"===typeof n&&null!==n||"function"===typeof n)&&(o=Reflect.ownKeys({[o]:void 0})[0]),w(t.art)||it(t,o,{value:r})),t}(this,t,e)}}const Zr=new WeakMap;function Jr(t){return!t.closed&&!Zr.get(t)}function Qr(t){Zr.set(t,(Zr.get(t)||0)+1);let e=!0;return()=>{if(!e)return;e=!1;const r=(Zr.get(t)||1)-1;r?Zr.set(t,r):Zr.delete(t)}}const tn=new WeakMap,en=new WeakMap,rn=["$parent","$parents","$option","$events","$formatted"];function nn(t){const e=new Set;let r=t;for(;r&&!e.has(r);){e.add(r);const t=tn.get(r);if(!t||!t.owner.active||t.owner.scope?.closed||!t.option.includes(r))return!1;if(!t.parent)return t.owner.root===t.option;if(tn.get(t.parent)?.owner!==t.owner)return!1;r=t.parent}return!1}function on(t){let e=t;for(;e;){const r=Object.getOwnPropertyDescriptor(e,"name");if(r)return"set"in r?"function"===typeof r.set:Boolean(r.writable&&(e===t||Object.isExtensible(t)));e=Object.getPrototypeOf(e)}return Object.isExtensible(t)}function an(t){const e=tn.get(t);if(!e)throw new Error("Setting item has not been formatted");return e}function sn(t,e){for(let r=0;r{l&&l!==r&&l.dispose()},()=>hn(t,o)])try{e()}catch(d){d instanceof h?c.push(...d.errors):c.push(d)}if(r.closed||w(t)||(o.push(...i.splice(0)),fn.set(r,o),un.set(e,r),pn.set(e,n)),a(),c.length)throw new h(c)},dispose(){if(s){s=!1;try{r.dispose()}finally{a()}}}}}function bn(t,e,r,n,o,i){const a=i||gn(e);if(!Jr(a)||w(t))return;const s=t.proxy(r,n,e=>{if(Jr(a)&&!w(t))try{return o(e)}catch(r){console.warn("ArtPlayer setting callback failed:",r)}});!Jr(a)||w(t)?t.events.remove(s):(an(e).events.push(s),i&&i!==un.get(e)&&i.add(()=>{const r=an(e).events,n=r.indexOf(s);n>=0&&(r.splice(n,1),t.events.remove(s))}))}function wn(t,e,r,n){const o=gn(e);if(!Jr(o)||w(t))return;const i=(...e)=>{if(Jr(o)&&!w(t))return n(...e)};t.on(r,i),o.add(()=>{t.off(r,i)})}const xn='[tabindex="0"],button,input,select,textarea,a[href],[contenteditable]';function kn(t){if(!t.isConnected||t.matches(":disabled")||t.closest("[inert]")||"true"===t.getAttribute("aria-disabled")||!t.getClientRects().length)return!1;const e=t.ownerDocument.defaultView?.getComputedStyle(t).visibility;return"hidden"!==e&&"collapse"!==e}function $n(t){return Array.from(t.querySelectorAll(xn)).filter(t=>"-1"!==t.getAttribute("tabindex")&&kn(t))}function En(t,e,r=!1){if(!t.show||w(t.art)||!t.active)return;const n=t.cache.get(t.active);if(!n||!Jr(ln(n)))return;const o=function(t,e,r=!1){if(e&&e!==t&&t.contains(e)&&e.matches(xn)&&"-1"!==e.getAttribute("tabindex")&&kn(e))return e;const n=$n(t),o=t.querySelector(".art-setting-item.art-current");return n.find(t=>e?.contains(t))||(r?n[n.length-1]:n.find(t=>o?.contains(t))||n.find(t=>!t.classList.contains("art-setting-item-back"))||n[0])}(n,e,r);o?.focus({preventScroll:!0}),w(t.art)||o?.scrollIntoView({block:"nearest",inline:"nearest"})}function An(t){const e=t.$parent.ownerDocument,r=e.activeElement,n=t.$parent.contains(r);return o=>{n&&!w(t.art)&&(e.activeElement===e.body||e.activeElement===r&&!r?.getClientRects().length)&&En(t,o)}}function Cn(t){const{art:e}=t,r=b(e).child();if(r.closed)return;const n=()=>t.$parent.ownerDocument;let o=!1;const i=()=>{t.show=!1,r.closed||w(e)||t.render()},a=i=>{r.closed||w(e)||(i?n().activeElement===e.controls.setting&&e.template.$player.classList.contains("art-keyboard-focus")&&En(t,void 0,o):t.$parent.contains(n().activeElement)&&function(t){const{art:e,$parent:r}=t,n=e.template.$player,o=r.ownerDocument,i=e.controls.setting;!w(e)&&r.contains(o.activeElement)&&(i&&n.contains(i)&&kn(i)&&i.focus({preventScroll:!0}),(o.activeElement===o.body||r.contains(o.activeElement))&&At(e))}(t))};e.on("setting",a),r.add(()=>{e.off("setting",a)}),mt(r,e.template.$player,"keydown",r=>{const n=r;if(!wt(n)||n.defaultPrevented||w(e))return;const a=n.target;if(a===e.controls.setting){if("ArrowDown"===n.key||"ArrowUp"===n.key)if(bt(n),t.show)En(t,void 0,"ArrowUp"===n.key);else{o="ArrowUp"===n.key;try{t.show=!0}finally{o=!1}}else"Escape"===n.key&&t.show&&(bt(n),i());return}if(!t.show||!t.$parent.contains(a))return;if("Escape"===n.key)return bt(n),void i();if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"].includes(n.key))return;const s=a.closest(".art-setting-item");if(!s||a!==s&&!a.matches('button,a[href],[role="button"]'))return;const c=t.active&&t.cache.get(t.active);if(!c)return;const l=t.active?.find(t=>t.$item===s);if(!Jr(ln(c))||l&&!Jr(gn(l)))return void bt(n);const d=$n(c),u=d.indexOf(a);if(u<0)return;let p;switch(n.key){case"ArrowDown":p=Math.min(u+1,d.length-1);break;case"ArrowUp":p=Math.max(u-1,0);break;case"Home":p=0;break;case"End":p=d.length-1;break;case"ArrowLeft":{const t=c.querySelector(".art-setting-item-back");return bt(n),void t?.click()}case"ArrowRight":return bt(n),void(l?.selector?.length&&a.click());default:return}bt(n),void 0!==p&&En(t,d[p])});let s=!1;mt(r,t.$parent,"focusout",o=>{const a=o.relatedTarget;a&&(t.$parent.contains(a)||a===e.controls.setting)||s||(s=!0,gt(r,()=>{s=!1,r.closed||w(e)||!t.show||t.$parent.contains(n().activeElement)||n().activeElement===e.controls.setting||i()},0))})}function Sn(t){const{art:e,active:r}=t,{controls:n,constructor:{SETTING_WIDTH:o,SETTING_ITEM_HEIGHT:i},template:{$player:a,$setting:s,$bottom:c}}=e;if(!n.setting||!t.show||!r)return;const l=a.getBoundingClientRect(),d=n.setting.getBoundingClientRect(),p=l.width/a.offsetWidth||1,f=(d.left-l.left+d.width/2)/p-a.clientLeft,h=function(t){const{containerWidth:e,containerHeight:r,requestedWidth:n,rows:o,rowHeight:i,controlCenter:a,bottom:s,padding:c}=t,l=Math.min(Math.max(0,c),Math.max(0,e/2)),d=Math.min(Math.max(0,n),Math.max(0,e-2*l));return{width:d,height:Math.min(Math.max(0,o*i),Math.max(0,r-s-l)),left:Math.max(l,Math.min(a-d/2,e-l-d))}}({containerWidth:a.clientWidth,containerHeight:a.clientHeight,requestedWidth:r[0]?.$parent?.width||o,rows:r.length+(r===t.option?0:1),rowHeight:i,controlCenter:f,bottom:Number.parseFloat(getComputedStyle(s).bottom)||0,padding:Number.parseFloat(getComputedStyle(c).paddingLeft)||0});s.style.height=`${h.height}px`,s.style.width=`${h.width}px`,e.isRotate||u||(f+h.width/2>a.clientWidth?(s.style.left="",s.style.right=""):(s.style.left=`${h.left}px`,s.style.right="auto"))}const Tn=new WeakMap;function Ln(t){Tn.delete(t)}const Pn=new WeakMap;function Mn(t,e){e?Pn.set(t,e):Pn.delete(t)}function zn(t){const e=new Map(Reflect.ownKeys(t).map(e=>[e,Object.getOwnPropertyDescriptor(t,e)])),r=[],n=Pn.get(t),o=n?.();for(const i of["html","icon","tooltip"]){const t=e.get(i)?.value;t instanceof Node&&r.push({node:t,parent:t.parentNode,next:t.nextSibling})}return()=>{for(const r of Reflect.ownKeys(t))!e.has(r)&&Object.getOwnPropertyDescriptor(t,r)?.configurable&&Reflect.deleteProperty(t,r);for(const[r,n]of e)Object.defineProperty(t,r,n);o?.(),Mn(t,n);for(const{node:t,parent:e,next:n}of r)e?e.insertBefore(t,n?.parentNode===e?n:null):t.parentNode?.removeChild(t)}}function Rn(t){const e=t.$item?.querySelector(".art-setting-range");e&&e.setAttribute("aria-label",t.$html?.textContent||"")}const On=new WeakMap;async function Dn(t,e,r,n,o,i,a,s){try{const c=gn(e),l=gn(i),d=(On.get(i)||0)+1;On.set(i,d);const u=()=>Jr(c)&&Jr(l)&&!w(t.art)&&On.get(i)===d;if(s?.(),!u())return;const p=await o.call(t.art,e,r,n);u()&&Reflect.set(i,a,p)}catch(c){console.warn("ArtPlayer setting callback failed:",c)}}function In(t){const e=[];return function t(r){const n=Array.from(r.childNodes);e.push({node:r,children:n,attributes:1===r.nodeType?Array.from(r.attributes,t=>[t.name,t.value]):void 0,value:r.nodeValue}),n.forEach(t)}(t),()=>{for(const{node:t,children:r,attributes:n,value:o}of e){for(;t.firstChild;)t.removeChild(t.firstChild);for(const e of r)t.appendChild(e);if(n){const e=t;for(const t of Array.from(e.attributes))e.removeAttribute(t.name);for(const[t,r]of n)e.setAttribute(t,r)}else t.nodeValue=o}}}const Nn=new WeakMap;function _n(t){const e=[];for(const n of t)try{n()}catch(r){r instanceof h?e.push(...r.errors):e.push(r)}if(e.length)throw new h(e)}function Wn(t){Nn.get(t)?.()}function Fn(t,e){const r=t.find(e.name);if(w(t.art))return r||e;if(!r)return t.add(e);const n=An(t);Ln(r),Wn(r);const o=zn(r),i=r.$item,a=i?.parentNode,s=i?.nextSibling,c=i?In(i):void 0,l=t.active,d=["height","width","left","right"].map(e=>[e,t.$parent.style.getPropertyValue(e),t.$parent.style.getPropertyPriority(e)]),u=function(t,e){const r=new Set,n=new Set,o=e=>{if(!r.has(e)&&(r.add(e),e.selector)){const r=t.cache.get(e.selector);r&&n.add(r),e.selector.forEach(o)}};o(e);const i=[],a=[];try{for(const e of r){const r=yn(t.art,e);r&&i.push(r)}for(const t of n)a.push(Qr(ln(t)))}catch(c){try{_n([...i.reverse().map(t=>t.resume),...a])}catch(l){console.warn("ArtPlayer setting restore failed:",l)}throw c}let s=!0;return{items:r,resume(){s&&(s=!1,_n([...i.reverse().map(t=>t.resume),...a]))},dispose(){s&&(s=!1,_n([...i.reverse().map(t=>t.dispose),...Array.from(n).reverse().map(t=>()=>dn(t)),...a]))}}}(t,r);let p=!0,f=!1;const h=()=>{if(!p)return;p=!1;for(const t of u.items)Nn.get(t)===h&&Nn.delete(t);if(w(t.art))return void u.dispose();const e=r.$item;try{_n([u.resume,()=>{e&&e!==i&&e.remove()},o,()=>c?.(),()=>{a&&i&&a.insertBefore(i,s?.parentNode===a?s:null)},()=>t.format(),()=>{if(f){t.active=l,l&&t.cache.has(l)&&W(t.cache.get(l),"art-current");for(const[e,r,n]of d)t.$parent.style.setProperty(e,r,n)}}]),n(i)}catch(m){console.warn("ArtPlayer setting restore failed:",m)}},m=()=>p&&!w(t.art)&&Nn.get(r)===h;for(const y of u.items)Nn.set(y,h);const g=b(t.art).add(()=>{p=!1;for(const t of u.items)Nn.get(t)===h&&Nn.delete(t);u.dispose()});try{if(function(t,e,r){for(const n of Reflect.ownKeys(e)){if(!r())return;const o=Object.getOwnPropertyDescriptor(e,n);if(!o?.enumerable||!r())continue;const i=Reflect.get(e,n);if(!r())return;if(!Reflect.set(t,n,i))throw new TypeError(`Cannot assign setting item property [${String(n)}]`)}}(r,e,m),!m())return r;if(t.format(),!m())return r;if(t.createItem(r,!0),!m())return r;if(f=!0,t.render(),!m())return r;p=!1;for(const t of u.items)Nn.get(t)===h&&Nn.delete(t);return u.dispose(),n(r.$item),r}catch(v){throw m()&&h(),v}finally{g()}}const Vn=new WeakMap;function Yn(t,e,r){it(t,`$${e}`,{configurable:!0,get:()=>r}),it(t,e,{configurable:!0,get:()=>r.innerHTML,set(n){r.innerHTML="",N(r,n),"html"===e&&Rn(t)}})}function Bn(t,e,r=!1){const n=function(t){const e=Nn.get(t);return()=>!e||Nn.get(t)===e}(e);if(!t.cache.has(e.$option))return;const o=t.cache.get(e.$option),i=e.$item;let a="selector";st(e,"switch")&&(a="switch"),st(e,"range")&&(a="range"),st(e,"onClick")&&(a="button");const{icons:s,constructor:c}=t.art;if(!n())return;const l=function(t,e,r=b(t)){const n=un.get(e);(!n||Jr(n)||n.closed)&&vn(t,e);const o=r.child();return un.set(e,o),pn.set(e,r),fn.set(o,an(e).events),o.add(()=>{hn(t,fn.get(o))}),o}(t.art,e,ln(o)),d=()=>Jr(l)&&!w(t.art)&&n();if(!d())return;const u=document.createElement("div");try{if(Mn(e),O(u,"art-setting-item"),H(u,"height",`${c.SETTING_ITEM_HEIGHT}px`),u.dataset.name=e.name||"",u.dataset.value=String(e.value||""),!d())return;const n=kt(u,'
'),p=kt(u,'
'),f=document.createElement("div");switch(O(f,"art-setting-item-left-icon"),a){case"button":case"switch":case"range":{const t=e.icon||s.config;if(!d())return;N(f,t);break}case"selector":if(e.selector?.length){const t=e.icon||s.config;if(!d())return;N(f,t)}else N(f,s.check)}if(N(n,f),!d())return;Yn(e,"icon",f);const h=document.createElement("div");O(h,"art-setting-item-left-text");const m=e.html||"";if(!d())return;N(h,m),N(n,h),Yn(e,"html",h);const g=document.createElement("div");O(g,"art-setting-item-right-tooltip");const v=e.tooltip||"";if(!d())return;switch(N(g,v),N(p,g),Yn(e,"tooltip",g),a){case"switch":{const t=document.createElement("div");O(t,"art-setting-item-right-icon");const r=kt(t,s.switchOn),n=kt(t,s.switchOff),o=e.switch;if(!d())return;H(o?n:r,"display","none"),N(p,t),it(e,"$switch",{configurable:!0,get:()=>t});let i=e.switch;if(!d())return;Mn(e,()=>{const t=i;return()=>{i=t}}),it(e,"switch",{configurable:!0,get:()=>i,set(t){i=t,u.setAttribute("aria-checked",String(Boolean(t))),t?(H(n,"display","none"),H(r,"display",null)):(H(n,"display",null),H(r,"display","none"))}});break}case"range":{const t=document.createElement("div");O(t,"art-setting-item-right-icon");const r=document.createElement("input");r.type="range",N(t,r);for(const[o,i]of["value","min","max","step"].entries()){const t=e.range[o];if(!d())return;Reflect.set(r,i,String(t))}O(r,"art-setting-range"),N(p,t),it(e,"$range",{configurable:!0,get:()=>r});let n=[...e.range];if(!d())return;Mn(e,()=>{const t=n,e=[...t],o={min:r.min,max:r.max,step:r.step,value:r.value};return()=>{t.splice(0,t.length,...e),n=t,Object.assign(r,o)}}),it(e,"range",{configurable:!0,get:()=>n,set(t){n=[...t],r.value=String(t[0]),r.min=String(t[1]),r.max=String(t[2]),r.step=String(t[3])}})}break;case"selector":if(e.selector?.length){const t=document.createElement("div");O(t,"art-setting-item-right-icon"),N(t,s.arrowRight),N(p,t)}}if(!d())return;if(function(t,e,r,n){const{art:o}=t,i=gn(e),a=(t,r,n)=>bn(o,e,t,r,n,i);switch(n){case"switch":e.onSwitch&&a(r,"click",n=>Dn(t,e,r,n,e.onSwitch,e,"switch"));break;case"range":{const n=e.$range;if(n)for(const[o,i]of[["change","onRange"],["input","onChange"]])e[i]&&a(n,o,o=>Dn(t,e,r,o,e[i],e,"tooltip",()=>{e.range[0]=n.valueAsNumber}));break}case"selector":a(r,"click",n=>{if(e.selector?.length)t.render(e.selector);else{if(e.$parent?.onSelect)return Dn(t,e,r,n,e.$parent.onSelect,e.$parent,"tooltip",()=>t.check(e));t.check(e)}}),e.default&&O(r,"art-current");break;case"button":e.onClick&&a(r,"click",n=>Dn(t,e,r,n,e.onClick,e,"tooltip"))}}(t,e,u,a),!d())return;it(e,"$item",{configurable:!0,get:()=>u}),function(t,e,r,n,o){"range"!==n?r.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")||("switch"===n?(r.setAttribute("role","switch"),r.setAttribute("aria-checked",String(Boolean(e.switch))),r.setAttribute("aria-disabled",String(!e.onSwitch))):"selector"!==n||e.selector?.length||r.setAttribute("aria-current",String(Boolean(e.default))),xt(o,r,()=>r.click(),()=>Jr(o)&&!w(t.art))):Rn(e)}(t,e,u,a,l),r&&i?.parentNode?i.replaceWith(u):N(o,u),e.mounted&&d()&>(l,()=>{if(!w(t.art))try{const r=e.mounted?.call(t.art,u,e);Promise.resolve(r).catch(t=>console.warn("ArtPlayer setting mounted failed:",t))}catch(r){console.warn("ArtPlayer setting mounted failed:",r)}},0)}catch(p){try{l.dispose()}catch(f){console.warn("ArtPlayer setting cleanup failed:",f)}throw u.remove(),p}}function Hn(t,e=t.option){if(w(t.art))return;const r=An(t),n=t.cache.get(e);if(n&&!Jr(ln(n)))return;const o=(Vn.get(t)||0)+1;Vn.set(t,o);const i=()=>Vn.get(t)===o&&!w(t.art),a=t.active,s=["height","width","left","right"].map(e=>[e,t.$parent.style.getPropertyValue(e),t.$parent.style.getPropertyPriority(e)]),c=()=>{t.active=a,a&&t.cache.has(a)&&W(t.cache.get(a),"art-current");for(const[e,r,n]of s)t.$parent.style.setProperty(e,r,n)};if(t.active=e,n)try{W(n,"art-current"),t.resize()}catch(l){throw i()&&t.cache.get(e)===n&&!ln(n).closed&&c(),l}else{const r=document.createElement("div");t.cache.set(e,r);const n=function(t,e,r){const n=b(t.art).child();return cn.set(r,n),n.add(()=>{t.cache.get(e)===r&&t.cache.delete(e),r.remove()}),n}(t,e,r),o=()=>!n.closed&&!w(t.art)&&t.cache.get(e)===r,a=[];try{if(!o())return;O(r,"art-setting-panel"),r.setAttribute("role","group"),r.setAttribute("aria-label",e[0]?.$parent?.$html?.textContent||t.art.i18n.get("Settings")),N(t.$parent,r),W(r,"art-current"),e[0]?.$parent&&t.createHeader(e[0]);for(let r=0;r{!function(t){const e=en.get(t);e&&(e.active=!1,e.root=void 0,e.scope=void 0)}(this)}),e.setting&&(this.format(),this.render(),function(t){const{art:e}=t,r=b(e).child(),n=(t,n)=>{if(r.closed||w(e))return;const o=(...t)=>{if(!r.closed&&!w(e))return n(...t)};e.on(t,o),r.add(()=>{e.off(t,o)})};n("blur",()=>{t.show&&(t.show=!1,t.render())}),n("focus",r=>{const n=L(r,e.controls.setting),o=L(r,t.$parent);!t.show||n||o||(t.show=!1,t.render())}),n("resize",()=>t.resize());const o=()=>{r.closed||w(e)||t.resize()},i=e.proxy(t.$parent,"transitionend",e=>{e.target===t.$parent&&"bottom"===e.propertyName&&o()});r.add(()=>{e.events.remove(i)});const{$player:a,$controls:s}=e.template;if(!r.closed&&"undefined"!==typeof ResizeObserver){const t=new ResizeObserver(o);t.observe(a),t.observe(s),r.add(()=>{t.disconnect()})}if(!r.closed&&"undefined"!==typeof MutationObserver){const t=new MutationObserver(o);"undefined"===typeof ResizeObserver&&t.observe(s,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),t.observe(a,{attributes:!0,attributeFilter:["class","style"]}),r.add(()=>{t.disconnect()})}}(this)),Cn(this)}get builtin(){const t=[],{option:e}=this.art;return e.playbackRate&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,PLAYBACK_RATE:o}}=t;function i(t){return 1===t?e.get("Normal"):t.toFixed(1)}function a(){const e=t.setting.find(`playback-rate-${t.playbackRate}`);t.setting.check(e)}return{width:n,name:"playback-rate",html:e.get("Play Speed"),tooltip:i(t.playbackRate),icon:r.playbackRate,selector:o.map(e=>({value:e,name:`playback-rate-${e}`,default:e===t.playbackRate,html:i(e)})),onSelect:e=>(t.playbackRate=e.value,e.html),mounted:(e,r)=>{a(),wn(t,r,"video:ratechange",()=>a())}}}(this.art)),e.aspectRatio&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,ASPECT_RATIO:o}}=t;function i(t){return"default"===t?e.get("Default"):t}function a(){const e=t.setting.find(`aspect-ratio-${t.aspectRatio}`);t.setting.check(e)}return{width:n,name:"aspect-ratio",html:e.get("Aspect Ratio"),icon:r.aspectRatio,tooltip:i(t.aspectRatio),selector:o.map(e=>({value:e,name:`aspect-ratio-${e}`,default:e===t.aspectRatio,html:i(e)})),onSelect:e=>(t.aspectRatio=e.value,e.html),mounted:(e,r)=>{a(),wn(t,r,"aspectRatio",()=>a())}}}(this.art)),e.flip&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,FLIP:o}}=t;function i(t){return e.get(Q(t))}function a(){const e=t.setting.find(`flip-${t.flip}`);t.setting.check(e)}return{width:n,name:"flip",html:e.get("Video Flip"),tooltip:i(t.flip),icon:r.flip,selector:o.map(e=>({value:e,name:`flip-${e}`,default:e===t.flip,html:i(e)})),onSelect:e=>(t.flip=e.value,e.html),mounted:(e,r)=>{a(),wn(t,r,"flip",()=>a())}}}(this.art)),e.subtitleOffset&&t.push(function(t){const{i18n:e,icons:r,constructor:n}=t;return{width:n.SETTING_ITEM_WIDTH,name:"subtitle-offset",html:e.get("Subtitle Offset"),icon:r.subtitle,tooltip:"0s",range:[0,-10,10,.1],onChange:e=>(t.subtitleOffset=e.range[0],`${e.range[0]}s`),mounted:(e,r)=>{wn(t,r,"subtitleOffset",t=>{r.$range.value=String(t),r.tooltip=`${t}s`})}}}(this.art)),t}traverse(t,e=this.option){sn(e,t)}check(t){!function(t,e){e?.$parent&&(e.$parent.tooltip=e.html,t.traverse(t=>{t.default=t===e,t.$item&&t.$item.setAttribute("aria-current",String(t.default)),t.default&&t.$item&&W(t.$item,"art-current")},e.$option),t.render(e.$parents))}(this,t)}format(t=this.option,e,r,n=[]){this.option=function(t,e,r,n,o=[]){const i=en.get(t)||{active:!0},a=[],s=new Set,c=new Set(o),l=(t,e,r)=>{for(let n=0;nan(t).parent},$parents:{get:()=>an(t).parents},$option:{get:()=>an(t).option},$events:{get:()=>an(t).events},$formatted:{get:()=>!0}}),tn.set(t,{parent:r,parents:n,option:o,events:a?.events||[],owner:i}),u.generated&&(t.name=e)}for(const u of a)u.generated||o.push(u.name);return t.id=d,e}(this,t,e,r,n)}find(t=""){return function(t,e=""){let r=null;return sn(t,t=>{t.name===e&&(r=t)}),r}(this.option,t)}resize(){Sn(this)}inactivate(t){!function(t,e){const r=[],n=new Set,o=e=>{if(!n.has(e)){n.add(e);for(const t of e.selector||[])o(t);if(e.selector){const n=t.cache.get(e.selector);t.cache.delete(e.selector);try{n&&dn(n)}catch(i){r.push(i)}}try{vn(t.art,e)}catch(i){i instanceof h?r.push(...i.errors):r.push(i)}}};if(o(e),r.length)throw new h(r)}(this,t)}remove(t){const e=An(this),r=this.find(t);X(r,`Can't find [${t}] in the [setting]`),this.traverse(t=>{Ln(t),Wn(t)},[r]);const n=r.$option.indexOf(r);r.$option.splice(n,1);const o=r.$item,i=[];for(const s of[()=>this.inactivate(r),()=>o?.remove(),()=>this.render()])try{s()}catch(a){a instanceof h?i.push(...a.errors):i.push(a)}if(i.length)throw new h(i);e()}update(t){return Fn(this,t)}add(t,e=this.option){if(w(this.art))return t;let r=!1;this.traverse(e=>{r||(r=e===t)});const n=e.length,o=r?void 0:function(t){const e={};Tn.set(t,e);const r=()=>Tn.get(t)===e;return{current:r,finish(){r()&&Tn.delete(t)}}}(t);let i=!1;try{e.push(t),this.format(),i=!0,this.createItem(t),this.render()}catch(a){if(w(this.art)||o&&!o.current())throw a;if(e[n]===t&&e.splice(n,1),!r&&i){try{this.inactivate(t)}catch(s){console.warn("ArtPlayer setting cleanup failed:",s)}t.$item?.remove()}throw a}finally{o?.finish()}return t}createHeader(t){!function(t,e){if(!t.cache.has(e.$option))return;const r=t.cache.get(e.$option),{icons:{arrowLeft:n},constructor:{SETTING_ITEM_HEIGHT:o}}=t.art,i=document.createElement("div");H(i,"height",`${o}px`),O(i,"art-setting-item"),O(i,"art-setting-item-back");const a=kt(i,'
'),s=document.createElement("div");O(s,"art-setting-item-left-icon"),N(s,n),N(a,s),N(a,e.$parent.html),bn(t.art,e.$parent,i,"click",()=>t.render(e.$parents),ln(r));const c=ln(r);i.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")||xt(c,i,()=>i.click(),()=>Jr(c)&&!w(t.art)),i.setAttribute("aria-label",`${t.art.i18n.get("Back")}: ${i.textContent?.trim()||""}`),N(r,i)}(this,t)}createItem(t,e=!1){Bn(this,t,e)}render(t=this.option){Hn(this,t)}}class Un{constructor(){this.name="artplayer_settings",this.settings={}}get(t){try{const e=JSON.parse(window.localStorage.getItem(this.name))||{};return t?e[t]:e}catch{return t?this.settings[t]:this.settings}}set(t,e){try{const r=Object.assign({},this.get(),{[t]:e});window.localStorage.setItem(this.name,JSON.stringify(r))}catch{this.settings[t]=e}}del(t){try{const e=this.get();delete e[t],window.localStorage.setItem(this.name,JSON.stringify(e))}catch{delete this.settings[t]}}clear(){try{window.localStorage.removeItem(this.name)}catch{this.settings={}}}}const Xn='.art-video-player{--art-theme: #f00;--art-font-color: #fff;--art-background-color: #000;--art-text-shadow-color: rgba(0, 0, 0, .5);--art-transition-duration: .2s;--art-padding: 10px;--art-border-radius: 3px;--art-progress-height: 6px;--art-progress-color: rgba(255, 255, 255, .25);--art-progress-top-gap: 10px;--art-hover-color: rgba(255, 255, 255, .25);--art-loaded-color: rgba(255, 255, 255, .25);--art-state-size: 80px;--art-state-opacity: .8;--art-bottom-height: 100px;--art-bottom-offset: 20px;--art-bottom-gap: 5px;--art-highlight-width: 8px;--art-highlight-color: rgba(255, 255, 255, .5);--art-control-height: 46px;--art-control-opacity: .75;--art-control-icon-size: 36px;--art-control-icon-scale: 1.1;--art-volume-height: 120px;--art-volume-handle-size: 14px;--art-lock-size: 36px;--art-indicator-scale: 0;--art-indicator-size: 16px;--art-fullscreen-web-index: 9999;--art-settings-icon-size: 24px;--art-settings-max-height: 300px;--art-selector-max-height: 300px;--art-contextmenus-min-width: 250px;--art-subtitle-font-size: 20px;--art-subtitle-gap: 5px;--art-subtitle-bottom: 15px;--art-subtitle-border: #000;--art-widget-background: rgba(0, 0, 0, .85);--art-tip-background: rgba(0, 0, 0, .7);--art-scrollbar-size: 4px;--art-scrollbar-background: rgba(255, 255, 255, .25);--art-scrollbar-background-hover: rgba(255, 255, 255, .5);--art-mini-progress-height: 2px}.art-bg-cover{background-position:center center;background-repeat:no-repeat;background-size:cover}.art-bottom-gradient{background-image:linear-gradient(to top,#000,rgba(0,0,0,.4),transparent);background-repeat:repeat-x;background-position:center bottom}.art-backdrop-filter{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:#000000bf!important}.art-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-video-player{position:relative;margin:0 auto;width:100%;height:100%;outline:0;zoom:1;padding:0;text-align:left;direction:ltr;font-size:14px;line-height:1.3;user-select:none;box-sizing:border-box;color:var(--art-font-color);background-color:var(--art-background-color);text-shadow:0 0 2px var(--art-text-shadow-color);font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,Roboto,Arial,sans-serif;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-touch-action:manipulation;touch-action:manipulation;-ms-high-contrast-adjust:none}.art-video-player *,.art-video-player *:before,.art-video-player *:after{box-sizing:border-box}.art-video-player ::-webkit-scrollbar{width:var(--art-scrollbar-size);height:var(--art-scrollbar-size)}.art-video-player ::-webkit-scrollbar-thumb{background-color:var(--art-scrollbar-background)}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:var(--art-scrollbar-background-hover)}.art-video-player img{max-width:100%;vertical-align:top}.art-video-player svg{fill:var(--art-font-color)}.art-video-player a{color:var(--art-font-color);text-decoration:none}.art-icon{line-height:1;display:flex;justify-content:center;align-items:center}.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{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:#000000bf!important}.art-video{position:absolute;inset:0;z-index:10;width:100%;height:100%}.art-poster{position:absolute;inset:0;z-index:11;width:100%;height:100%;background-position:center center;background-repeat:no-repeat;background-size:cover;pointer-events:none}.art-video-player .art-subtitle{display:none;justify-content:center;align-items:center;flex-direction:column;position:absolute;z-index:20;width:100%;padding:0 5%;text-align:center;pointer-events:none;gap:var(--art-subtitle-gap);bottom:var(--art-subtitle-bottom);font-size:var(--art-subtitle-font-size);transition:bottom var(--art-transition-duration) ease;text-shadow:var(--art-subtitle-border) 1px 0 1px,var(--art-subtitle-border) 0 1px 1px,var(--art-subtitle-border) -1px 0 1px,var(--art-subtitle-border) 0 -1px 1px,var(--art-subtitle-border) 1px 1px 1px,var(--art-subtitle-border) -1px -1px 1px,var(--art-subtitle-border) 1px -1px 1px,var(--art-subtitle-border) -1px 1px 1px}.art-video-player.art-subtitle-show .art-subtitle{display:flex}.art-video-player.art-control-show .art-subtitle{bottom:calc(var(--art-controls-height, var(--art-control-height)) + var(--art-subtitle-bottom))}.art-danmuku{position:absolute;inset:0;z-index:30;width:100%;height:100%;pointer-events:none;overflow:hidden}.art-video-player .art-layers{position:absolute;inset:0;z-index:40;width:100%;height:100%;display:none;pointer-events:none}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:flex}.art-video-player .art-mask{display:flex;justify-content:center;align-items:center;position:absolute;inset:0;z-index:50;width:100%;height:100%;pointer-events:none}.art-video-player .art-mask .art-state{display:flex;justify-content:center;align-items:center;opacity:0;transform:scale(2);width:var(--art-state-size);height:var(--art-state-size);transition:all var(--art-transition-duration) ease}.art-video-player.art-mask-show .art-state{pointer-events:auto;opacity:var(--art-state-opacity);transform:scale(1)}.art-video-player.art-loading-show .art-state{display:none}.art-video-player .art-loading{display:none;justify-content:center;align-items:center;position:absolute;inset:0;z-index:70;width:100%;height:100%;pointer-events:none}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player.art-loading-show .art-mask{display:none}.art-video-player .art-bottom{position:absolute;inset:0;z-index:60;width:100%;height:100%;display:flex;flex-direction:column;justify-content:flex-end;opacity:0;overflow:hidden;pointer-events:none;padding:0 var(--art-padding);transition:all var(--art-transition-duration) ease;background-size:100% var(--art-bottom-height);background-image:linear-gradient(to top,#000,rgba(0,0,0,.4),transparent);background-repeat:repeat-x;background-position:center bottom}.art-video-player .art-bottom .art-controls,.art-video-player .art-bottom .art-progress{transform:translateY(var(--art-bottom-offset));transition:transform var(--art-transition-duration) ease}.art-video-player.art-control-show .art-bottom,.art-video-player.art-hover .art-bottom{opacity:1}.art-video-player.art-control-show .art-bottom .art-controls,.art-video-player.art-hover .art-bottom .art-controls,.art-video-player.art-control-show .art-bottom .art-progress,.art-video-player.art-hover .art-bottom .art-progress{transform:translateY(0)}.art-bottom .art-progress{position:relative;z-index:0;cursor:pointer;pointer-events:auto;padding-top:var(--art-progress-top-gap);padding-bottom:var(--art-bottom-gap)}.art-bottom .art-progress .art-control-progress{position:relative;display:flex;justify-content:center;align-items:center;height:var(--art-progress-height)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:height var(--art-transition-duration) ease;background-color:var(--art-progress-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover{position:absolute;inset:0;z-index:0;width:100%;height:100%;width:0%;background-color:var(--art-hover-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{position:absolute;inset:0;z-index:10;width:100%;height:100%;width:0%;background-color:var(--art-loaded-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{position:absolute;inset:0;z-index:20;width:100%;height:100%;width:0%;background-color:var(--art-theme)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{position:absolute;inset:0;z-index:30;width:100%;height:100%;pointer-events:none}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{position:absolute;inset:0 auto 0 0;z-index:0;width:100%;height:100%;pointer-events:auto;width:var(--art-highlight-width)!important;transform:translate(calc(var(--art-highlight-width) / -2));background-color:var(--art-highlight-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{display:flex;justify-content:center;align-items:center;position:absolute;z-index:40;left:0;border-radius:50%;width:var(--art-indicator-size);height:var(--art-indicator-size);transform:scale(var(--art-indicator-scale));margin-left:calc(var(--art-indicator-size) / -2);transition:transform var(--art-transition-duration) ease}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon{width:100%;height:100%;pointer-events:none}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover{transform:scale(1.2)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active{transform:scale(1)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;z-index:50;top:-25px;left:0;padding:3px 5px;line-height:1;font-size:12px;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease}.art-bottom .art-progress .art-control-thumbnails{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;bottom:calc(var(--art-bottom-gap) + 10px);left:0;border-radius:var(--art-border-radius);pointer-events:none;background-color:var(--art-widget-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease;box-shadow:0 1px 3px #0003,0 1px 2px -1px #0003}.art-bottom .art-progress:hover .art-control-progress .art-control-progress-inner{height:100%}.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{transform:scale(1)}.art-progress-hover .art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip,.art-progress-hover .art-bottom .art-progress .art-control-thumbnails{transform:scale(1);opacity:1}.art-video-player .art-controls{position:relative;z-index:10;pointer-events:auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;flex-shrink:0;height:auto;min-height:var(--art-control-height)}.art-video-player .art-controls .art-controls-left,.art-video-player .art-controls .art-controls-right{display:flex;flex-wrap:wrap;max-width:100%;min-height:var(--art-control-height)}.art-video-player .art-controls .art-controls-center{display:none;justify-content:center;align-items:center;flex:1;height:100%;padding:0 10px}.art-video-player .art-controls .art-controls-right{justify-content:flex-end;margin-left:auto}.art-video-player .art-controls .art-control{display:flex;justify-content:center;align-items:center;flex-shrink:0;max-width:100%;cursor:pointer;white-space:nowrap;opacity:var(--art-control-opacity);min-height:var(--art-control-height);min-width:var(--art-control-height);transition:opacity var(--art-transition-duration) ease}.art-video-player .art-controls .art-control .art-icon{height:var(--art-control-icon-size);width:var(--art-control-icon-size);transform:scale(var(--art-control-icon-scale));transition:transform var(--art-transition-duration) ease}.art-video-player .art-controls .art-control .art-icon:active{transform:scale(calc(var(--art-control-icon-scale) * .8))}.art-video-player .art-controls .art-control:hover{opacity:1}.art-control-volume{position:relative}.art-control-volume .art-volume-panel{display:flex;justify-content:center;align-items:center;position:absolute;left:0;right:0;padding:0 5px;font-size:12px;text-align:center;cursor:default;opacity:0;visibility:hidden;transform:translateY(10px);pointer-events:none;bottom:var(--art-control-height);width:var(--art-control-height);height:var(--art-volume-height);transition:opacity var(--art-transition-duration) ease,transform var(--art-transition-duration) ease}.art-control-volume .art-volume-panel .art-volume-inner{display:flex;flex-direction:column;align-items:center;gap:10px;height:100%;width:100%;padding:10px 0 12px;border-radius:var(--art-border-radius);background-color:var(--art-widget-background)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{flex:1;width:100%;display:flex;cursor:pointer;position:relative;justify-content:center}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{position:relative;display:flex;justify-content:center;width:2px;border-radius:var(--art-border-radius);overflow:hidden;background-color:#ffffff40}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded{position:absolute;inset:0;z-index:0;width:100%;height:100%;background-color:var(--art-theme)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator{position:absolute;width:var(--art-volume-handle-size);height:var(--art-volume-handle-size);margin-top:calc(var(--art-volume-handle-size) / -2);flex-shrink:0;transform:scale(1);border-radius:100%;background-color:var(--art-theme);transition:transform var(--art-transition-duration) ease}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator{transform:scale(.9)}.art-control-volume:hover .art-volume-panel,.art-control-volume:focus-within .art-volume-panel{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.art-video-player .art-notice{display:none;position:absolute;inset:0 0 auto;z-index:80;width:100%;height:100%;height:auto;padding:var(--art-padding);pointer-events:none}.art-video-player .art-notice .art-notice-inner{display:inline-flex;padding:5px;line-height:1;border-radius:var(--art-border-radius);background-color:var(--art-tip-background)}.art-video-player.art-notice-show .art-notice{display:flex}.art-video-player .art-contextmenus{display:none;flex-direction:column;position:absolute;z-index:120;padding:5px 0;border-radius:var(--art-border-radius);font-size:12px;background-color:var(--art-widget-background);min-width:var(--art-contextmenus-min-width)}.art-video-player .art-contextmenus .art-contextmenu{cursor:pointer;display:flex;padding:10px 15px;border-bottom:1px solid rgba(255,255,255,.1)}.art-video-player .art-contextmenus .art-contextmenu span{padding:0 8px}.art-video-player .art-contextmenus .art-contextmenu span:hover,.art-video-player .art-contextmenus .art-contextmenu span.art-current{color:var(--art-theme)}.art-video-player .art-contextmenus .art-contextmenu:hover{background-color:#ffffff1a}.art-video-player .art-contextmenus .art-contextmenu:last-child{border-bottom:none}.art-video-player.art-contextmenu-show .art-contextmenus{display:flex}.art-video-player .art-settings{display:none;flex-direction:column;position:absolute;z-index:90;left:auto;overflow-y:auto;overflow-x:hidden;border-radius:var(--art-border-radius);max-height:var(--art-settings-max-height);right:var(--art-padding);bottom:var(--art-controls-height, var(--art-control-height));transition:all var(--art-transition-duration) ease;background-color:var(--art-widget-background)}.art-video-player .art-settings .art-setting-panel{display:none;flex-direction:column}.art-video-player .art-settings .art-setting-panel.art-current{display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item{display:flex;justify-content:space-between;align-items:center;gap:5px;padding:0 5px;cursor:pointer;overflow:hidden;transition:background-color var(--art-transition-duration) ease}.art-video-player .art-settings .art-setting-panel .art-setting-item:hover{background-color:#ffffff1a}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current{color:var(--art-theme)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check{visibility:hidden;height:15px}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check{visibility:visible}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left{display:flex;justify-content:center;align-items:center;flex-shrink:1;min-width:0;overflow:hidden;gap:5px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;height:var(--art-settings-icon-size);width:var(--art-settings-icon-size)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right{display:flex;justify-content:center;align-items:center;flex-shrink:0;min-width:0;max-width:55%;gap:5px;font-size:12px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#ffffff80}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;min-width:32px;height:24px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{height:3px;width:80px;outline:none;appearance:none;background-color:#fff3}.art-video-player .art-settings .art-setting-panel .art-setting-item-back{border-bottom:1px solid rgba(255,255,255,.1)}.art-video-player.art-setting-show .art-settings{display:flex}.art-video-player .art-info{display:none;position:absolute;left:var(--art-padding);top:var(--art-padding);z-index:100;padding:10px;font-size:12px;border-radius:var(--art-border-radius);background-color:var(--art-widget-background)}.art-video-player .art-info .art-info-panel{display:flex;flex-direction:column;gap:5px}.art-video-player .art-info .art-info-panel .art-info-item{display:flex;align-items:center;gap:5px}.art-video-player .art-info .art-info-panel .art-info-item .art-info-title{width:100px;text-align:right}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;user-select:all}.art-video-player .art-info .art-info-close{position:absolute;top:5px;right:5px;cursor:pointer}.art-video-player.art-info-show .art-info{display:flex}.art-hide-cursor *{cursor:none!important}.art-video-player[data-aspect-ratio]{overflow:hidden}.art-video-player[data-aspect-ratio] .art-video{object-fit:fill;box-sizing:content-box}.art-fullscreen{--art-progress-height: 8px;--art-indicator-size: 20px;--art-control-height: 60px;--art-control-icon-scale: 1.3}.art-fullscreen-web{--art-progress-height: 8px;--art-indicator-size: 20px;--art-control-height: 60px;--art-control-icon-scale: 1.3;position:fixed;inset:0;z-index:var(--art-fullscreen-web-index);width:100%;height:100%}.art-mini-popup{position:fixed;z-index:9999;width:320px;height:180px;max-width:100vw;max-height:100vh;background:#000;border-radius:var(--art-border-radius);cursor:move;user-select:none;overflow:hidden;transition:opacity .2s ease;box-shadow:0 0 5px #00000080}.art-mini-popup svg{fill:#fff}.art-mini-popup .art-video{pointer-events:none}.art-mini-popup .art-mini-close{position:absolute;z-index:20;right:10px;top:10px;cursor:pointer;opacity:0;transition:opacity .2s ease}.art-mini-popup .art-mini-state{position:absolute;inset:0;z-index:30;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none;opacity:0;transition:opacity .2s ease;background-color:#00000040}.art-mini-popup .art-mini-state .art-icon{opacity:.75;cursor:pointer;transform:scale(3);pointer-events:auto;transition:transform .2s ease}.art-mini-popup .art-mini-state .art-icon:active{transform:scale(2.5)}.art-mini-popup.art-mini-dragging{opacity:.9}.art-mini-popup:hover .art-mini-close,.art-mini-popup:focus-within .art-mini-close,.art-mini-popup:hover .art-mini-state,.art-mini-popup:focus-within .art-mini-state{opacity:1}.art-mini-popup [role=button]:focus-visible{outline:2px solid #fff;outline-offset:-2px}.art-video-player[data-flip=horizontal] .art-video{transform:scaleX(-1)}.art-video-player[data-flip=vertical] .art-video{transform:scaleY(-1)}.art-video-player .art-layer-lock{display:none;justify-content:center;align-items:center;position:absolute;top:50%;border-radius:50%;transform:translateY(-50%);height:var(--art-lock-size);width:var(--art-lock-size);left:var(--art-padding);background-color:var(--art-tip-background)}.art-video-player .art-layer-auto-playback{display:none;gap:10px;align-items:center;position:absolute;border-radius:var(--art-border-radius);padding:10px;line-height:1;left:var(--art-padding);bottom:calc(var(--art-controls-height, var(--art-control-height)) + var(--art-bottom-gap) + 10px);background-color:var(--art-widget-background)}.art-video-player .art-layer-auto-playback .art-auto-playback-close{display:flex;justify-content:center;align-items:center;cursor:pointer}.art-video-player .art-layer-auto-playback .art-auto-playback-close svg{width:15px;height:15px;fill:var(--art-theme)}.art-video-player .art-layer-auto-playback .art-auto-playback-jump{color:var(--art-theme);cursor:pointer}.art-video-player.art-lock .art-layer-lock{display:flex}.art-video-player.art-lock:not(.art-control-show) .art-layer-lock{opacity:0;pointer-events:none}.art-video-player.art-lock:not(.art-control-show) .art-layer-lock:focus-within{opacity:1;pointer-events:auto}.art-video-player.art-lock .art-subtitle{bottom:var(--art-subtitle-bottom)!important}.art-video-player.art-mini-progress-bar .art-bottom,.art-video-player.art-lock .art-bottom{opacity:1;padding:0;background-image:none}.art-video-player.art-mini-progress-bar .art-bottom .art-controls,.art-video-player.art-lock .art-bottom .art-controls,.art-video-player.art-mini-progress-bar .art-bottom .art-progress,.art-video-player.art-lock .art-bottom .art-progress{transform:translateY(calc(var(--art-controls-height, var(--art-control-height)) + var(--art-bottom-gap) + var(--art-progress-height) / 4))}.art-video-player.art-mini-progress-bar .art-bottom .art-progress-indicator,.art-video-player.art-lock .art-bottom .art-progress-indicator{display:none!important}.art-video-player.art-control-show .art-layer-lock{display:flex}.art-control-selector{position:relative;display:flex;justify-content:center}.art-control-selector .art-selector-list{display:flex;flex-direction:column;align-items:center;text-align:center;position:absolute;border-radius:var(--art-border-radius);overflow-y:auto;overflow-x:hidden;opacity:0;visibility:hidden;transform:translateY(10px);pointer-events:none;bottom:var(--art-control-height);max-height:var(--art-selector-max-height);background-color:var(--art-widget-background);transition:opacity var(--art-transition-duration) ease,transform var(--art-transition-duration) ease}.art-control-selector .art-selector-list .art-selector-item{display:flex;justify-content:center;align-items:center;width:100%;padding:10px 15px;flex-shrink:0;line-height:1}.art-control-selector .art-selector-list .art-selector-item:hover{background-color:#ffffff1a}.art-control-selector .art-selector-list .art-selector-item:hover,.art-control-selector .art-selector-list .art-selector-item.art-current{color:var(--art-theme)}.art-control-selector:hover:not(.art-selector-dismissed) .art-selector-list,.art-control-selector.art-selector-open .art-selector-list{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.art-video-player [class*=hint--]{position:relative;display:inline-block;font-style:normal}.art-video-player [class*=hint--]:before,.art-video-player [class*=hint--]:after{position:absolute;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);transform:translateZ(0);visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;-webkit-transition:.3s ease;-moz-transition:.3s ease;transition:.3s ease;-webkit-transition-delay:0ms;-moz-transition-delay:0ms;transition-delay:0ms}.art-video-player [class*=hint--]:hover:before,.art-video-player [class*=hint--]:hover:after{visibility:visible;opacity:1}.art-video-player [class*=hint--]:hover:before,.art-video-player [class*=hint--]:hover:after{-webkit-transition-delay:.1s;-moz-transition-delay:.1s;transition-delay:.1s}.art-video-player [class*=hint--]:before{content:"";position:absolute;background:transparent;border:6px solid transparent;z-index:1000001}.art-video-player [class*=hint--]:after{background:#000;color:#fff;padding:8px 10px;font-size:12px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:12px;white-space:nowrap}.art-video-player [class*=hint--][aria-label]:after{content:attr(aria-label)}.art-video-player [class*=hint--][data-hint]:after{content:attr(data-hint)}.art-video-player [aria-label=""]:before,.art-video-player [aria-label=""]:after,.art-video-player [data-hint=""]:before,.art-video-player [data-hint=""]:after{display:none!important}.art-video-player .hint--top-left:before{border-top-color:#000}.art-video-player .hint--top-right:before{border-top-color:#000}.art-video-player .hint--top:before{border-top-color:#000}.art-video-player .hint--bottom-left:before{border-bottom-color:#000}.art-video-player .hint--bottom-right:before{border-bottom-color:#000}.art-video-player .hint--bottom:before{border-bottom-color:#000}.art-video-player .hint--left:before{border-left-color:#000}.art-video-player .hint--right:before{border-right-color:#000}.art-video-player .hint--top:before{margin-bottom:-11px}.art-video-player .hint--top:before,.art-video-player .hint--top:after{bottom:100%;left:50%}.art-video-player .hint--top:before{left:calc(50% - 6px)}.art-video-player .hint--top:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translate(-50%)}.art-video-player .hint--top:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top:hover:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translate(-50%) translateY(-8px)}.art-video-player .hint--bottom:before{margin-top:-11px}.art-video-player .hint--bottom:before,.art-video-player .hint--bottom:after{top:100%;left:50%}.art-video-player .hint--bottom:before{left:calc(50% - 6px)}.art-video-player .hint--bottom:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translate(-50%)}.art-video-player .hint--bottom:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom:hover:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translate(-50%) translateY(8px)}.art-video-player .hint--right:before{margin-left:-11px;margin-bottom:-6px}.art-video-player .hint--right:after{margin-bottom:-14px}.art-video-player .hint--right:before,.art-video-player .hint--right:after{left:100%;bottom:50%}.art-video-player .hint--right:hover:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--right:hover:after{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--left:before{margin-right:-11px;margin-bottom:-6px}.art-video-player .hint--left:after{margin-bottom:-14px}.art-video-player .hint--left:before,.art-video-player .hint--left:after{right:100%;bottom:50%}.art-video-player .hint--left:hover:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--left:hover:after{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--top-left:before{margin-bottom:-11px}.art-video-player .hint--top-left:before,.art-video-player .hint--top-left:after{bottom:100%;left:50%}.art-video-player .hint--top-left:before{left:calc(50% - 6px)}.art-video-player .hint--top-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translate(-100%)}.art-video-player .hint--top-left:after{margin-left:12px}.art-video-player .hint--top-left:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top-left:hover:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translate(-100%) translateY(-8px)}.art-video-player .hint--top-right:before{margin-bottom:-11px}.art-video-player .hint--top-right:before,.art-video-player .hint--top-right:after{bottom:100%;left:50%}.art-video-player .hint--top-right:before{left:calc(50% - 6px)}.art-video-player .hint--top-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translate(0)}.art-video-player .hint--top-right:after{margin-left:-12px}.art-video-player .hint--top-right:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top-right:hover:after{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--bottom-left:before{margin-top:-11px}.art-video-player .hint--bottom-left:before,.art-video-player .hint--bottom-left:after{top:100%;left:50%}.art-video-player .hint--bottom-left:before{left:calc(50% - 6px)}.art-video-player .hint--bottom-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translate(-100%)}.art-video-player .hint--bottom-left:after{margin-left:12px}.art-video-player .hint--bottom-left:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom-left:hover:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translate(-100%) translateY(8px)}.art-video-player .hint--bottom-right:before{margin-top:-11px}.art-video-player .hint--bottom-right:before,.art-video-player .hint--bottom-right:after{top:100%;left:50%}.art-video-player .hint--bottom-right:before{left:calc(50% - 6px)}.art-video-player .hint--bottom-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translate(0)}.art-video-player .hint--bottom-right:after{margin-left:-12px}.art-video-player .hint--bottom-right:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom-right:hover:after{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--small:after,.art-video-player .hint--medium:after,.art-video-player .hint--large:after{white-space:normal;line-height:1.4em;word-wrap:break-word}.art-video-player .hint--small:after{width:80px}.art-video-player .hint--medium:after{width:150px}.art-video-player .hint--large:after{width:300px}.art-video-player [class*=hint--]:after{text-shadow:0 -1px 0px black;box-shadow:4px 4px 8px #0000004d}.art-video-player .hint--error:after{background-color:#b34e4d;text-shadow:0 -1px 0px #592726}.art-video-player .hint--error.hint--top-left:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--top-right:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--top:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--bottom-left:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--bottom-right:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--left:before{border-left-color:#b34e4d}.art-video-player .hint--error.hint--right:before{border-right-color:#b34e4d}.art-video-player .hint--warning:after{background-color:#c09854;text-shadow:0 -1px 0px #6c5328}.art-video-player .hint--warning.hint--top-left:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--top-right:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--top:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--bottom-left:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--bottom-right:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--bottom:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--left:before{border-left-color:#c09854}.art-video-player .hint--warning.hint--right:before{border-right-color:#c09854}.art-video-player .hint--info:after{background-color:#3986ac;text-shadow:0 -1px 0px #1a3c4d}.art-video-player .hint--info.hint--top-left:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--top-right:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--top:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--bottom-left:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--bottom-right:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--bottom:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--left:before{border-left-color:#3986ac}.art-video-player .hint--info.hint--right:before{border-right-color:#3986ac}.art-video-player .hint--success:after{background-color:#458746;text-shadow:0 -1px 0px #1a321a}.art-video-player .hint--success.hint--top-left:before{border-top-color:#458746}.art-video-player .hint--success.hint--top-right:before{border-top-color:#458746}.art-video-player .hint--success.hint--top:before{border-top-color:#458746}.art-video-player .hint--success.hint--bottom-left:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--bottom-right:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--bottom:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--left:before{border-left-color:#458746}.art-video-player .hint--success.hint--right:before{border-right-color:#458746}.art-video-player .hint--always:after,.art-video-player .hint--always:before{opacity:1;visibility:visible}.art-video-player .hint--always.hint--top:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translate(-50%) translateY(-8px)}.art-video-player .hint--always.hint--top-left:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top-left:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translate(-100%) translateY(-8px)}.art-video-player .hint--always.hint--top-right:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top-right:after{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--bottom:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translate(-50%) translateY(8px)}.art-video-player .hint--always.hint--bottom-left:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom-left:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translate(-100%) translateY(8px)}.art-video-player .hint--always.hint--bottom-right:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom-right:after{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--left:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--always.hint--left:after{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--always.hint--right:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--always.hint--right:after{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--rounded:after{border-radius:4px}.art-video-player .hint--no-animate:before,.art-video-player .hint--no-animate:after{-webkit-transition-duration:0ms;-moz-transition-duration:0ms;transition-duration:0ms}.art-video-player .hint--bounce:before,.art-video-player .hint--bounce:after{-webkit-transition:opacity .3s ease,visibility .3s ease,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s ease,visibility .3s ease,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s ease,visibility .3s ease,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.art-video-player .hint--no-shadow:before,.art-video-player .hint--no-shadow:after{text-shadow:initial;box-shadow:initial}.art-video-player .hint--no-arrow:before{display:none}.art-video-player.art-mobile{--art-bottom-gap: 10px;--art-control-height: 38px;--art-control-icon-scale: 1;--art-state-size: 60px;--art-settings-max-height: 180px;--art-selector-max-height: 180px;--art-indicator-scale: 1;--art-control-opacity: 1}.art-video-player.art-mobile .art-controls-left{margin-left:calc(var(--art-padding) / -1)}.art-video-player.art-mobile .art-controls-right{margin-right:calc(var(--art-padding) / -1)}.art-video-player [tabindex]:focus-visible,.art-video-player input:focus-visible,.art-video-player button:focus-visible,.art-video-player a:focus-visible{outline:2px solid currentColor;outline-offset:-2px}.art-video-player.art-keyboard-focus :focus{outline:2px solid currentColor;outline-offset:-2px}.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom{opacity:1}.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom .art-controls,.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom .art-progress{transform:translateY(0)}';class Gn{constructor(t){this.scope=t.child(),this.cancelled=new Promise(t=>{this.scope.add(()=>{t(void 0)})}),this.signal=function(t){if("undefined"===typeof AbortController)return;const e=new AbortController;return t.add(()=>{e.abort()}),e}(this.scope)?.signal}get active(){return!this.scope.closed}cancel(){this.scope.dispose()}async run(t){if(this.active)try{return await Promise.race([t(),this.cancelled])}finally{this.cancel()}}}const Kn=new WeakMap;function Zn(t){return Kn.get(t)}function Jn(t){const e=t.ownedURL;t.ownedURL=void 0,e&&URL.revokeObjectURL(e)}const Qn=Ft;class to extends Qn{constructor(t){super(t),this.name="subtitle",this.option=null,this.destroyEvent=()=>null;const e=function(t,e){const r=b(e).child(),n={scope:r,revision:0,render:0,trackRevision:0};return Kn.set(t,n),r.add(()=>{Jn(n)}),n}(this,t);this.init(t.option.subtitle).catch(()=>{});let r=!1;const n=()=>{if(e.scope.closed||!this.url)return;const n=t.template.$video.webkitDisplayingFullscreen;"boolean"===typeof n&&n!==r&&(r=n,this.createTrack(n?"subtitles":"metadata",this.url))};t.on("video:timeupdate",n),e.scope.add(()=>{t.off("video:timeupdate",n)})}get url(){return this.art.template.$track.src}set url(t){this.switch(t).catch(()=>{})}get textTrack(){return this.art.template.$video?.textTracks?.[0]}get activeCues(){return Array.from(this.textTrack?.activeCues||[])}get cues(){return Array.from(this.textTrack?.cues||[])}style(t,e){const{$subtitle:r}=this.art.template;return"object"===typeof t?j(r,t):H(r,t,e)}update(){!function(t){const e=Zn(t);if(e.scope.closed)return;const r=e.revision,n=++e.render,o=()=>!e.scope.closed&&e.revision===r&&e.render===n,{art:i}=t,{$subtitle:a}=i.template;if(a.innerHTML="",!t.activeCues.length)return;if(i.emit("subtitleBeforeUpdate",t.activeCues),!o())return;const s=t.activeCues.map((t,e)=>t.text.split(/\r?\n/).filter(t=>t.trim()).map(t=>`
\n ${i.option.subtitle.escape?ot(t):t}\n
`).join("")).join("");o()&&(a.innerHTML=s,i.emit("subtitleAfterUpdate",t.activeCues))}(this)}async switch(t,e={}){const{i18n:r,notice:n,option:o}=this.art,i={...o.subtitle,...e,url:t},a=Zn(this),s=a.revision+1,c=await this.init(i);return!a.scope.closed&&a.revision===s&&e.name&&(n.show=`${r.get("Switch Subtitle")}: ${e.name}`),c}createTrack(t,e){!function(t,e,r){const n=Zn(t);if(n.scope.closed)return;const o=++n.trackRevision,{art:i}=t,{template:a}=i,s=a.$track,c=s.parentNode,l=s.nextSibling,d=document.createElement("track"),u=n.scope.child();u.add(()=>{d.onload=null,d.onerror=null});let p=!1;try{if(d.default=!0,d.kind=e,d.src=r,d.label=i.option.subtitle.name||"Artplayer",d.track.mode="hidden",d.onload=()=>{u.closed||a.$track!==d||i.emit("subtitleLoad",t.cues,t.option)},d.onerror=()=>{u.closed||a.$track!==d||(i.notice.show=new Error("Failed to load subtitle track"))},u.closed||n.trackRevision!==o)return void u.dispose();s.remove(),a.$video.appendChild(d),a.$track=d;const c=t.textTrack,l=c?i.proxy(c,"cuechange",()=>{u.closed||a.$track!==d||t.update()}):()=>{};if(u.add(()=>{i.events.remove(l)}),u.closed||n.trackRevision!==o)return u.dispose(),void d.remove();const f=n.track;n.track=u,t.destroyEvent=l,s.onload=null,s.onerror=null,p=!0;try{f?.dispose()}finally{n.ownedURL&&n.ownedURL!==r&&Jn(n)}}catch(f){if(p)throw f;if(u.dispose(),d.remove(),n.scope.closed||n.trackRevision!==o)throw f;throw a.$track=s,c&&c.insertBefore(s,l?.parentNode===c?l:null),f}}(this,t,e)}async init(t){const e=Zn(this),r=function(t){const e=t.request,r=new Gn(t.scope);return t.request=r,t.revision+=1,e?.cancel(),r}(e),{notice:n,template:{$subtitle:i}}=this.art;return r.run(async()=>{if(!this.textTrack)return null;if(o(t,_t.subtitle),!t.url)return;let a;this.option=t,this.style(t.style);try{if(!r.active)return;const n=await fetch(t.url,{signal:r.signal});if(!r.active)return;if(!n.ok)throw new Error(`Failed to load subtitle: ${n.status} ${n.statusText}`);const o=await n.arrayBuffer();if(!r.active)return;const s=function(t,e){const r=new TextDecoder(e.encoding).decode(t);switch(e.type||K(e.url)){case"srt":return{vtt:e.onVttLoad(dt(r))};case"ass":return{vtt:e.onVttLoad(pt(r))};case"vtt":return{vtt:e.onVttLoad(r)};default:return}}(o,t);if(!r.active)return;const c=void 0===s?t.url:a=ut(s.vtt);if(!r.active)return;i.innerHTML="";const l=e.trackRevision+1;if(this.url!==c&&this.createTrack("metadata",c),!r.active||e.trackRevision>l)return;return a&&(e.ownedURL=a,a=void 0),c}catch(s){if(!r.active)return;throw i.innerHTML="",n.show=s,s}finally{a&&(e.scope.closed||this.url!==a?URL.revokeObjectURL(a):e.ownedURL=a)}})}}const eo=`\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Player version:
\n
${i}
\n
\n
\n
Video url:
\n
\n
\n
\n
Video volume:
\n
\n
\n
\n
Video time:
\n
\n
\n
\n
Video duration:
\n
\n
\n
\n
Video resolution:
\n
\n x \n
\n
\n
\n
[x]
\n
\n
\n
\n `;class ro{constructor(t){this.art=t;const{option:e,constructor:r}=t;e.container instanceof Element?this.$container=e.container:(this.$container=R(e.container),X(this.$container,`No container element found by ${e.container}`)),X(P(),"The current browser does not support flex layout");const n=this.$container.tagName.toLowerCase();X("div"===n,`Unsupported container element type, only support 'div' but got '${n}'`),X(r.instances.every(t=>t.template.$container!==this.$container),"Cannot mount multiple instances on the same dom element"),this.query=this.query.bind(this),function(t,e,r){const n=v.get(e);if(n&&n!==t)throw new Error("Cannot mount multiple instances on the same dom element");const o=y(t);o.rollback=r,v.set(e,t),o.releaseContainer=()=>{v.get(e)===t&&v.delete(e)}}(t,this.$container,In(this.$container)),function(t,e,r){const n=y(t),o=n.mountingTemplate;n.mountingTemplate=e;try{r()}finally{n.mountingTemplate=o}}(t,this,()=>{this.$container.dataset.artId=String(t.id),this.init()})}static get html(){return eo}query(t){return R(t,this.$container)}init(){const{option:t}=this.art;var e;if(t.useSSR||(this.$container.innerHTML=ro.html),(e=this).$player=e.query(".art-video-player"),e.$video=e.query(".art-video"),e.$track=e.query("track"),e.$poster=e.query(".art-poster"),e.$subtitle=e.query(".art-subtitle"),e.$danmuku=e.query(".art-danmuku"),e.$bottom=e.query(".art-bottom"),e.$progress=e.query(".art-progress"),e.$controls=e.query(".art-controls"),e.$controlsLeft=e.query(".art-controls-left"),e.$controlsCenter=e.query(".art-controls-center"),e.$controlsRight=e.query(".art-controls-right"),e.$layer=e.query(".art-layers"),e.$loading=e.query(".art-loading"),e.$notice=e.query(".art-notice"),e.$noticeInner=e.query(".art-notice-inner"),e.$mask=e.query(".art-mask"),e.$state=e.query(".art-state"),e.$setting=e.query(".art-settings"),e.$info=e.query(".art-info"),e.$infoPanel=e.query(".art-info-panel"),e.$infoClose=e.query(".art-info-close"),e.$contextmenu=e.query(".art-contextmenus"),t.proxy){const e=t.proxy.call(this.art,this.art);if(w(this.art))return;!function(t){X(t instanceof HTMLVideoElement||t instanceof HTMLCanvasElement,"Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'")}(e),F(e,this.$video),e.className="art-video",this.$video=e}t.backdrop&&O(this.$player,"art-backdrop"),u&&O(this.$player,"art-mobile")}destroy(t){t?this.$container.innerHTML="":O(this.$player,"art-destroy")}}const no=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);class oo{on(t,e,r){const n=this.e||(this.e={});let o=no(n,t)?n[t]:void 0;return o||(o=[],Object.defineProperty(n,t,{value:o,enumerable:!0,configurable:!0,writable:!0})),o.push({fn:e,ctx:r}),this}once(t,e,r){const n=this,o=e;let i=!1;function a(...e){i||(i=!0,n.off(t,a),o.apply(r,e))}return a._=e,this.on(t,a,r)}emit(t,...e){const r=this.e||(this.e={}),n=(no(r,t)&&r[t]||[]).slice();for(const o of n)o.fn.apply(o.ctx,e);return this}off(t,e){const r=this.e||(this.e={}),n=no(r,t)?r[t]:void 0,o=[];if(n&&e)for(let i=0,a=n.length;i{e.destroying||e.finalizers.dispose()})}(this);try{if(this.template=new ro(this),b(this).closed)return;if(this.events=new ze(this),b(this).closed)return;if(this.storage=new Un,b(this).closed)return;if(this.icons=new Ve(this),b(this).closed)return;if(this.i18n=new We(this),b(this).closed)return;if(this.notice=new Ze(this),b(this).closed)return;if(this.player=new Ir(this),b(this).closed)return;if(this.layers=new qe(this),b(this).closed)return;if(this.controls=new ke(this),b(this).closed)return;if(this.contextmenu=new Xt(this),b(this).closed)return;if(this.subtitle=new to(this),b(this).closed)return;if(this.info=new je(this),b(this).closed)return;if(this.loading=new Ue(this),b(this).closed)return;if(this.hotkey=new Ne(this),b(this).closed)return;if(this.mask=new Xe(this),b(this).closed)return;if(this.setting=new qn(this),b(this).closed)return;if(this.plugins=new Kr(this),b(this).closed)return;if("function"===typeof e&&this.on("ready",()=>e.call(this,this)),so.DEBUG){const t=t=>console.log(`[ART.${this.id}] -> ${t}`);t(`Version@${so.version}`);for(let e=0;et(`Event@${e.type}`))}(function(t){const e=y(t);return e.rollback=void 0,!e.scope.closed})(this)&&ao.push(this)}catch(r){try{x(this,ao,!0,so.REMOVE_SRC_WHEN_DESTROY,!0)}catch(n){console.warn("Failed to clean up ArtPlayer initialization:",n)}throw r}}static get instances(){return ao}static get version(){return i}static get config(){return f}static get utils(){return ft}static get scheme(){return _t}static get Emitter(){return oo}static get validator(){return o}static get kindOf(){return o.kindOf}static get html(){return ro.html}static get option(){return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:t=>t},moreVideoAttr:{controls:!1,preload:c?"auto":"metadata"},i18n:{},icons:{},cssVar:{},customType:{},lang:"undefined"===typeof navigator?void 0:navigator?.language.toLowerCase()}}get proxy(){return this.events.proxy}get query(){return this.template.query}get video(){return this.template.$video}reset(){this.video.removeAttribute("src"),this.video.load()}destroy(t=!0){x(this,ao,t,so.REMOVE_SRC_WHEN_DESTROY)}}var co,lo;return so.STYLE=Xn,so.DEBUG=!1,so.CONTEXTMENU=!0,so.NOTICE_TIME=2e3,so.SETTING_WIDTH=250,so.SETTING_ITEM_WIDTH=200,so.SETTING_ITEM_HEIGHT=35,so.RESIZE_TIME=200,so.SCROLL_TIME=200,so.SCROLL_GAP=50,so.AUTO_PLAYBACK_MAX=10,so.AUTO_PLAYBACK_MIN=5,so.AUTO_PLAYBACK_TIMEOUT=3e3,so.RECONNECT_TIME_MAX=5,so.RECONNECT_SLEEP_TIME=1e3,so.CONTROL_HIDE_TIME=3e3,so.DBCLICK_TIME=300,so.DBCLICK_FULLSCREEN=!0,so.MOBILE_DBCLICK_PLAY=!0,so.MOBILE_CLICK_PLAY=!1,so.AUTO_ORIENTATION_TIME=200,so.INFO_LOOP_TIME=1e3,so.FAST_FORWARD_VALUE=3,so.FAST_FORWARD_TIME=1e3,so.TOUCH_MOVE_RATIO=.5,so.VOLUME_STEP=.1,so.SEEK_STEP=5,so.PLAYBACK_RATE=[.5,.75,1,1.25,1.5,2],so.ASPECT_RATIO=["default","4:3","16:9"],so.FLIP=["normal","horizontal","vertical"],so.FULLSCREEN_WEB_IN_BODY=!0,so.LOG_VERSION=!0,so.USE_RAF=!1,so.REMOVE_SRC_WHEN_DESTROY=!0,co=so,lo=Xn,p&&(window.Artplayer=co,a("artplayer-style",lo),setTimeout(()=>{co.LOG_VERSION&&console.log(`%c ArtPlayer %c ${co.version} %c https://artplayer.org`,"color: #fff; background: #5f5f5f","color: #fff; background: #4bc729","")},100)),so}); +!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.Artplayer=e(),define(function(){return t.Artplayer})):(t="undefined"!==typeof globalThis?globalThis:t||self).Artplayer=e()}(this,function(){"use strict";function t(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var e,r={exports:{}};var n=(e||(e=1,r.exports=function(){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}var e=Object.prototype.toString,r=function(r){if(void 0===r)return"undefined";if(null===r)return"null";var o=t(r);if("boolean"===o)return"boolean";if("string"===o)return"string";if("number"===o)return"number";if("symbol"===o)return"symbol";if("function"===o)return"GeneratorFunction"===n(r)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(r))return"array";if(function(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}(r))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(r))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(r))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(r))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(r))return"regexp";switch(n(r)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(r))return"generator";switch(o=e.call(r)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return o.slice(8,-1).toLowerCase().replace(/\s/g,"")};function n(t){return t.constructor?t.constructor.name:null}function o(t,e){var n=2{document.head.appendChild(r)}):(document.head||document.documentElement).appendChild(r)),r.textContent=e}const s=globalThis.CUSTOM_USER_AGENT??("undefined"===typeof navigator?"":navigator.userAgent),c=/^(?:(?!chrome|android).)*safari/i.test(s),l=/iPad|iPhone|iPod/i.test(s)&&("undefined"===typeof window||!window.MSStream),d=l||s.includes("Macintosh")&&"undefined"!==typeof navigator&&navigator.maxTouchPoints>=1,u=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(s)||d,p="undefined"!==typeof window&&"undefined"!==typeof document;const f={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webkitSupportsFullscreen","webkitDisplayingFullscreen","onenterpictureinpicture","onleavepictureinpicture","disablePictureInPicture","cancelVideoFrameCallback","requestVideoFrameCallback","getVideoPlaybackQuality","requestPictureInPicture","webkitEnterFullScreen","webkitEnterFullscreen","webkitExitFullScreen","webkitExitFullscreen"]};class h extends Error{constructor(t){super("Failed to release ArtPlayer resources"),this.errors=t,this.name="ResourceCleanupError"}}class m{constructor(){this.cleanups=new Set,this.disposed=!1}get closed(){return this.disposed}add(t){let e=!0;const r=()=>{e&&(e=!1,this.cleanups.delete(r),t())};return this.closed?r():this.cleanups.add(r),r}child(){const t=new m,e=this.add(()=>{t.dispose()});return t.add(()=>{e()}),t}dispose(){if(this.closed)return;this.disposed=!0;const t=[];for(const r of Array.from(this.cleanups).reverse())try{r()}catch(e){e instanceof h?t.push(...e.errors):t.push(e)}if(t.length)throw new h(t)}}const g=new WeakMap,v=new WeakMap;function y(t){const e=g.get(t);if(!e)throw new Error("ArtPlayer lifecycle has not been initialized");return e}function b(t){return y(t).scope}function w(t){const e=y(t);return e.destroying||e.scope.closed}function x(t,e,r,n,o=!1){const i=y(t);if(i.destroying||i.scope.closed)return;i.destroying=!0;const a=[],s=t=>{try{t()}catch(e){a.push(...e instanceof h?e.errors:[e])}};n&&t.template?.$video&&s(()=>t.reset()),s(()=>i.scope.dispose()),s(()=>(t.template||i.mountingTemplate)?.destroy(r));const c=e.indexOf(t);-1!==c&&e.splice(c,1),t.isDestroy=!0,o||(i.releaseContainer?.(),i.releaseContainer=void 0),s(()=>t.emit("destroy")),s(()=>i.finalizers.dispose()),o&&i.rollback&&s(i.rollback),i.rollback=void 0,i.releaseContainer?.(),i.releaseContainer=void 0;for(const l of a.slice(1))console.warn("Additional ArtPlayer cleanup failure:",l);if(a.length)throw a[0]}const k=new WeakMap;function $(t,e){const r=b(t).child();return k.set(e,r),r}function E(t){const e=k.get(t);if(!e)throw new Error("ArtPlayer component has not been registered");return e}function A(t){k.get(t)?.dispose()}function C(t,e,r,n){const o=E(e);if(o.closed)return;const i=(...t)=>{if(!o.closed)return n(...t)};t.on(r,i),o.add(()=>{t.off(r,i)})}function S(t,e){return{on:(r,n)=>{C(t,e,r,n)},proxy:(r,n,o)=>function(t,e,r,n,o){const i=E(e);if(i.closed)return()=>{};const a=t.events.proxy(r,n,t=>{if(!i.closed)return o(t)});return i.add(()=>{t.events.remove(a)})}(t,e,r,n,o)}}function T(t){if(t.composedPath)return t.composedPath();const e=[];let r=t.target;for(;r;)e.push(r),r=r.parentNode??null;return"undefined"===typeof window||e.includes(window)||e.push(window),e}function L(t,e){return T(t).includes(e)}function P(){const t=document.createElement("div");return t.style.display="flex","flex"===t.style.display}function M(t){return t.getBoundingClientRect()}function z(){const t=document.createElement("div");t.style.cssText="position:fixed;top:env(safe-area-inset-top,0px);right:env(safe-area-inset-right,0px);bottom:env(safe-area-inset-bottom,0px);left:env(safe-area-inset-left,0px);pointer-events:none;visibility:hidden;";try{document.body.appendChild(t);const e=getComputedStyle(t);return{top:Number.parseFloat(e.top)||0,right:Number.parseFloat(e.right)||0,bottom:Number.parseFloat(e.bottom)||0,left:Number.parseFloat(e.left)||0}}finally{t.remove()}}function R(t,e=document){return e.querySelector(t)}function O(t,e){return t.classList.add(e)}function D(t,e){return t.classList.remove(e)}function I(t,e){return t.classList.contains(e)}function N(t,e){return e instanceof Element?t.appendChild(e):t.insertAdjacentHTML("beforeend",String(e)),t.lastElementChild||t.lastChild}function _(t){return Array.from(t.parentElement.children).filter(e=>e!==t)}function W(t,e){_(t).forEach(t=>D(t,e)),O(t,e)}function F(t,e){return e.parentNode.replaceChild(t,e),t}function V(t){return document.createElement(t)}function Y(t,e,r="top"){u||(t.setAttribute("aria-label",e),O(t,"hint--rounded"),O(t,`hint--${r}`))}function B(t="",e=""){const r=V("i");return O(r,"art-icon"),O(r,`art-icon-${t}`),N(r,e),r}function H(t,e,r){return t.style[e]=r,t}function j(t,e){for(const r in e)H(t,r,e[r]);return t}function q(t,e,r){return new Promise((n,o)=>{const i=r?r.child():new m;let a=!1,s=()=>{};function c(t){if(!a){a=!0;try{i.dispose()}catch(e){console.warn("Additional image cleanup failure:",e)}try{s()}catch(e){console.warn("Additional image cleanup failure:",e)}o(t)}}function l(t){if(!a&&!i.closed){a=!0;try{i.dispose(),n(t)}catch(e){try{s()}finally{o(e)}}}}if(i.add(()=>{if(!a){a=!0;try{s()}finally{n(void 0)}}}),!i.closed)try{const n=new Image;d(n,()=>{if(!e||1===e)return void l(n);const t=document.createElement("canvas"),o=t.getContext("2d");if(t.width=n.width*e,t.height=n.height*e,!o)throw new TypeError("Canvas 2D context is unavailable");a||i.closed||(o.drawImage(n,0,0,t.width,t.height),a||i.closed||t.toBlob(t=>{if(!a&&!i.closed)try{if(!t)throw new Error("Unable to encode thumbnail image");const e=URL.createObjectURL(t);let n=!1;const o=()=>{n||(n=!0,URL.revokeObjectURL(e))};if(s=r?r.add(o):o,a||i.closed)return void s();const c=new Image;d(c,()=>l(c)),i.closed||(c.src=e)}catch(e){c(e)}}))}),i.closed||(n.src=t)}catch(u){c(u)}function d(e,r){e.onload=()=>{if(!a&&!i.closed)try{r()}catch(u){c(u)}},e.onerror=()=>c(new Error(`Image load failed: ${t}`)),i.add(()=>{e.onload=null,e.onerror=null,a||e.removeAttribute("src")})}})}class U extends Error{constructor(t,e){super(t),"captureStackTrace"in Error&&"function"===typeof Error.captureStackTrace&&Error.captureStackTrace(this,e||this.constructor),this.name="ArtPlayerError"}}function X(t,e){if(!t)throw new U(e);return t}function G(t){const e=t;return e&&"function"===typeof e.catch?e.catch(()=>{}):t}function K(t){const e=t.search(/[?#]/),r=(e<0?t:t.slice(0,e)).trim().toLowerCase();return r.slice(r.lastIndexOf(".")+1)}function Z(t,e){const r=document.createElement("a");r.style.display="none",r.href=t,r.download=e,document.body.appendChild(r);try{r.click()}finally{r.remove()}}function J(t,e,r){return Math.max(Math.min(t,Math.max(e,r)),Math.min(e,r))}function Q(t){return t.charAt(0).toUpperCase()+t.slice(1)}function tt(t){if(!t)return"00:00";const e=Math.floor(t/3600),r=Math.floor((t-3600*e)/60),n=Math.floor(t-3600*e-60*r);return(e>0?[e,r,n]:[r,n]).map(t=>t<10?`0${t}`:String(t)).join(":")}const et={"&":"&","<":"<",">":">","'":"'",'"':"""},rt={"&":"&","<":"<",">":">","'":"'",""":'"'},nt=/(&|<|>|'|")/g;function ot(t){return t.replace(/[&<>'"]/g,t=>et[t]||t)}const it=Object.defineProperty,{hasOwnProperty:at}=Object.prototype;function st(t,e){return at.call(t,e)}function ct(t,e){return Object.getOwnPropertyDescriptor(t,e)}function lt(...t){const e=t=>!!t&&"object"===typeof t&&!Array.isArray(t);return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=t[n],i=r[n];let a;a=Array.isArray(o)&&Array.isArray(i)?o.concat(...i):e(o)&&e(i)?lt(o,i):i,it(t,n,{value:a,enumerable:!0,configurable:!0,writable:!0})}),t),{})}function dt(t){return"WEBVTT \r\n\r\n".concat((e=t,e.replace(/(\d\d:\d\d:\d\d)[,.](\d+)/g,(t,e,r)=>{let n=r.slice(0,3);return 1===r.length&&(n=`${r}00`),2===r.length&&(n=`${r}0`),`${e},${n}`})).replace(/\{\\([ibu])\}/g,"").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").replace(/\{[\s\S]*?\}/g,"").concat("\r\n\r\n"));var e}function ut(t){return URL.createObjectURL(new Blob([t],{type:"text/vtt"}))}function pt(t){const e=new RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i");function r(t=""){return t.split(/[:.]/).map((t,e,r)=>{if(e===r.length-1){if(1===t.length)return`.${t}00`;if(2===t.length)return`.${t}0`}else if(1===t.length)return(0===e?"0":":0")+t;return 0===e?t:e===r.length-1?`.${t}`:`:${t}`}).join("")}return`WEBVTT\n\n${t.split(/\r?\n/).map(t=>{const n=t.match(e);if(!n)return null;const[,o="",i="",,,a=""]=n;return{start:r(o.trim()),end:r(i.trim()),text:a.replace(/\{[\s\S]*?\}/g,"").replace(/(\\N)/g,"\n").trim().split(/\r?\n/).map(t=>t.trim()).join("\n")}}).filter(t=>t).map((t,e)=>t?`${e+1}\n${t.start} --\x3e ${t.end}\n${t.text}`:"").filter(t=>t.trim()).join("\n\n")}`}const ft=Object.freeze(Object.defineProperty({__proto__:null,ArtPlayerError:U,addClass:O,append:N,assToVtt:pt,capitalize:Q,clamp:J,createElement:V,debounce:function(t,e){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>(r=void 0,t.apply(this,n)),e)}},def:it,download:Z,errorHandle:X,escape:ot,get:ct,getComposedPath:T,getExt:K,getIcon:B,getRect:M,getSafeAreaInsets:z,getStyle:function(t,e,r=!0){const n=window.getComputedStyle(t,null).getPropertyValue(e);return r?Number.parseFloat(n):n},has:st,hasClass:I,includeFromEvent:L,inverseClass:W,isBrowser:p,isIOS:l,isIOS13:d,isInViewport:function(t,e=0){const r=t.getBoundingClientRect(),n=window.innerHeight||document.documentElement.clientHeight,o=window.innerWidth||document.documentElement.clientWidth,i=r.top-e<=n&&r.top+r.height+e>=0,a=r.left-e<=o+e&&r.left+r.width+e>=0;return i&&a},isMobile:u,isSafari:c,loadImg:function(t,e){return q(t,e,void 0)},mergeDeep:lt,query:R,queryAll:function(t,e=document){return Array.from(e.querySelectorAll(t))},remove:function(t){return t.parentNode.removeChild(t)},removeClass:D,replaceElement:F,secondToTime:tt,setStyle:H,setStyleText:a,setStyles:j,siblings:_,silencePromise:G,sleep:function(t=0){return new Promise(e=>setTimeout(e,t))},srtToVtt:dt,supportsFlex:P,throttle:function(t,e){let r=!1;return function(...n){r||(t.apply(this,n),r=!0,setTimeout(()=>{r=!1},e))}},tooltip:Y,unescape:function(t){return t.replace(nt,t=>rt[t]||t)},userAgent:s,vttToBlob:ut},Symbol.toStringTag,{value:"Module"}));function ht(){}function mt(t,e,r,n,o={}){const{capture:i=!1,once:a=!1,signal:s}=o;if(t.closed||s?.aborted)return ht;let c=ht;function l(e){a&&c(),t.closed||("function"===typeof n?n.call(this,e):n.handleEvent(e))}return e.addEventListener(r,l,o),c=t.add(()=>{try{e.removeEventListener(r,l,i)}finally{s?.removeEventListener("abort",c)}}),s?.addEventListener("abort",c,{once:!0}),c}function gt(t,e,r){if(t.closed)return ht;let n=!0,o=ht;const i=setTimeout(()=>{n&&(o(),t.closed||e())},r);return o=t.add(()=>{n=!1,clearTimeout(i)}),o}function vt(t,e=0){return t.closed?Promise.resolve(!1):new Promise(r=>{let n=!1,o=ht;const i=setTimeout(()=>{n=!0,o(),r(!0)},e);o=t.add(()=>{clearTimeout(i),n||r(!1)})})}const yt=new WeakSet;function bt(t){yt.add(t),t.preventDefault()}function wt(t){return!t.altKey&&!t.ctrlKey&&!t.metaKey&&!t.isComposing&&229!==t.keyCode}function xt(t,e,r=()=>e.click(),n=()=>!0){if(t.closed)return;e.hasAttribute("role")||e.setAttribute("role","button"),e.hasAttribute("tabindex")||(e.tabIndex=0);let o=!1;const i=()=>n()&&"true"!==e.getAttribute("aria-disabled")&&!e.hasAttribute("disabled"),a=t=>(t.composedPath()[0]||t.target)===e;mt(t,e,"keydown",t=>{const e=t;a(e)&&wt(e)&&!e.defaultPrevented&&("Enter"===e.key?(bt(e),!e.repeat&&i()&&r()):" "===e.key&&(bt(e),!e.repeat&&i()&&(o=!0)))}),mt(t,e,"keyup",t=>{const n=t;if(" "!==n.key)return;const s=o;o=!1,s&&a(n)&&wt(n)&&!n.defaultPrevented&&i()&&e.ownerDocument.activeElement===e&&(bt(n),r())}),mt(t,e,"blur",()=>{o=!1}),t.add(()=>{o=!1})}function kt(t,e){return N(t,e)}function $t(t,e){return e.querySelector(t)}const Et=new WeakSet;function At(t){const e=t.template.$player;!w(t)&&e.isConnected&&(e.hasAttribute("tabindex")||(e.setAttribute("tabindex","-1"),Et.has(e)||(Et.add(e),b(t).add(()=>{Et.delete(e),"-1"===e.getAttribute("tabindex")&&e.removeAttribute("tabindex")}))),e.focus({preventScroll:!0}))}const Ct=new WeakSet,St="[tabindex],button,input,select,textarea,a[href],[contenteditable]";function Tt(t){return[t,...t.querySelectorAll(St)].find(t=>{if(!t.matches(St)||t.tabIndex<0||t.matches(":disabled")||t.closest("[inert]")||"true"===t.getAttribute("aria-disabled")||!t.getClientRects().length)return!1;const e=t.ownerDocument.defaultView?.getComputedStyle(t);return"hidden"!==e?.visibility&&"collapse"!==e?.visibility})}function Lt(t,e,r){const n=e?.ownerDocument,o=n?.activeElement;if(!["control","contextmenu"].includes(t.name??"")||Ct.has(t)||!e||!n||!o||!e.contains(o))return()=>{};const i=t.art.template.$player,a=Array.from(i.querySelectorAll(`.art-${t.name}`)),s=a.indexOf(e),c=[...a.slice(s+1),...a.slice(0,s).reverse()];return Ct.add(t),()=>{if(Ct.delete(t),w(t.art)||!i.isConnected||n.activeElement!==n.body)return;const e=r?t.cache.get(r)?.$ref:void 0;for(const t of[...e?[e]:[],...c]){if(!i.contains(t))continue;const e=Tt(t);if(e)return void e.focus({preventScroll:!0})}At(t.art)}}const Pt="array",Mt="boolean",zt="string",Rt="number",Ot="object",Dt="function";function It(t,e,r){return X(e===zt||e===Rt||t instanceof Element,`${r.join(".")} require '${zt}' or 'Element' type`)}const Nt={html:It,disable:`?${Mt}`,name:`?${zt}`,index:`?${Rt}`,style:`?${Ot}`,click:`?${Dt}`,mounted:`?${Dt}`,tooltip:`?${zt}|${Rt}`,width:`?${Rt}`,selector:`?${Pt}`,onSelect:`?${Dt}`,switch:`?${Mt}`,onSwitch:`?${Dt}`,range:`?${Pt}`,onRange:`?${Dt}`,onChange:`?${Dt}`},_t={id:zt,container:It,url:zt,poster:zt,type:zt,theme:zt,lang:zt,volume:Rt,isLive:Mt,muted:Mt,autoplay:Mt,autoSize:Mt,autoMini:Mt,loop:Mt,flip:Mt,playbackRate:Mt,aspectRatio:Mt,screenshot:Mt,setting:Mt,hotkey:Mt,pip:Mt,mutex:Mt,backdrop:Mt,fullscreen:Mt,fullscreenWeb:Mt,subtitleOffset:Mt,miniProgressBar:Mt,useSSR:Mt,playsInline:Mt,lock:Mt,gesture:Mt,fastForward:Mt,autoPlayback:Mt,autoOrientation:Mt,airplay:Mt,proxy:`?${Dt}`,plugins:[Dt],layers:[Nt],contextmenu:[Nt],settings:[Nt],controls:[{...Nt,position:(t,e,r)=>{const n=["top","left","right"];return X("string"===typeof t&&n.includes(t),`${r.join(".")} only accept ${n.toString()} as parameters`)}}],quality:[{default:`?${Mt}`,html:zt,url:zt}],highlight:[{time:Rt,text:zt}],thumbnails:{url:zt,number:Rt,column:Rt,width:Rt,height:Rt,scale:Rt},subtitle:{url:zt,name:zt,type:zt,style:Ot,escape:Mt,encoding:zt,onVttLoad:Dt},moreVideoAttr:Ot,i18n:Ot,icons:Ot,cssVar:Ot,customType:Ot},Wt=new WeakSet;class Ft{constructor(t){this.id=0,this.art=t,this.cache=new Map,this.add=this.add.bind(this),this.remove=this.remove.bind(this),this.update=this.update.bind(this)}get show(){return I(this.art.template.$player,`art-${this.name}-show`)}set show(t){const{$player:e}=this.art.template,r=`art-${this.name}-show`;t?O(e,r):D(e,r),this.art.emit(this.name,t)}toggle(){this.show=!this.show}add(t){if(w(this.art))return;const e="function"===typeof t?t(this.art):t;if(w(this.art))return;if(e.html=e.html||"",o(e,Nt),!this.$parent||!this.name||e.disable)return;const r=e.name||`${this.name}${this.id}`,n=this.cache;X(!n.has(r),`Can't add an existing [${r}] to the [${this.name}]`),this.id+=1;const i=document.createElement("div"),a=$(this.art,i),s=[],c=Object.getOwnPropertyDescriptor(this,r);let l=!1;a.add(()=>{for(const t of s)this.art.events.remove(t)});try{if(a.closed)return;if(function(t,e,r,n,o,i){O(t,`art-${r}`),O(t,`art-${r}-${n}`);const a=Array.from(e.children);t.dataset.index=String(i.index||o);const s=a.find(e=>Number(e.dataset.index)>=Number(t.dataset.index));s?s.insertAdjacentElement("beforebegin",t):N(e,t),i.html&&N(t,i.html),i.style&&j(t,i.style),i.tooltip&&Y(t,i.tooltip)}(i,this.$parent,this.name,r,this.id,e),a.closed)return;if(e.click){("control"===this.name&&!e.selector||"contextmenu"===this.name&&!i.querySelector("[data-value]"))&&!i.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")&&xt(a,i);const t=this.art.events.proxy(i,"click",t=>{a.closed||(t.preventDefault(),e.click.call(this.art,this,t))});s.push(t)}if(e.selector&&["left","right"].includes(e.position)&&this.selector(e,i,s),a.closed)return;return function(t,e,r){const n=t;"__proto__"===e?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r}(this,r,i),l=!0,n.set(r,{$ref:i,events:s,option:e}),e.mounted&&e.mounted.call(this.art,i),i}catch(d){try{A(i)}catch(u){console.warn("ArtPlayer component cleanup failed:",u)}throw n.get(r)?.$ref===i&&n.delete(r),l&&this[r]===i&&(c?Object.defineProperty(this,r,c):delete this[r]),i.remove(),d}}remove(t){X(this.cache.has(t),`Can't find [${t}] from the [${this.name}]`);const e=this.cache.get(t);if(Wt.has(e))return;const r=Lt(this,e.$ref);Wt.add(e);try{e.option.beforeUnmount&&e.option.beforeUnmount.call(this.art,e.$ref);try{A(e.$ref)}finally{this.cache.get(t)===e&&(this.cache.delete(t),delete this[t]),e.$ref.remove()}}finally{Wt.delete(e),r()}}update(t){const e=Lt(this,this.cache.get(t.name)?.$ref,t.name);try{if(this.cache.has(t.name)){const e=this.cache.get(t.name);t=Object.assign(e.option,t),this.remove(t.name)}return this.add(t)}finally{e()}}}function Vt(t){for(const e of t.querySelectorAll("[data-value]"))e.setAttribute("aria-pressed",String(e.classList.contains("art-current")))}function Yt(t,e){const r=E(t);if(!r.closed){t.setAttribute("role","group"),t.setAttribute("aria-label",e);for(const n of t.querySelectorAll("[data-value]"))xt(r,n),n.setAttribute("aria-label",`${e}: ${n.textContent?.trim()??""}`);Vt(t)}}const Bt=new WeakMap;function Ht(t,e){e?Bt.set(t,e):Bt.delete(t)}function jt(t){const e=new Set;let r=t;for(;!e.has(r);){e.add(r);let t,n=r;for(;n&&!t;)t=Bt.get(n),n=n.parentElement;if(!t)return r;r=t}return t}function qt(t){const e=t;return!!e&&(["INPUT","TEXTAREA","SELECT"].includes(e.tagName)||e.isContentEditable)}function Ut(t){const e=t.ownerDocument.defaultView?.getComputedStyle(t).visibility;return t.isConnected&&!t.matches(":disabled")&&!t.closest("[inert]")&&"true"!==t.getAttribute("aria-disabled")&&t.getClientRects().length>0&&"hidden"!==e&&"collapse"!==e}class Xt extends Ft{constructor(t){super(t),this.name="contextmenu",this.$parent=t.template.$contextmenu,$(t,this.$parent),u||this.init()}init(){const{option:t,template:{$player:e,$contextmenu:r}}=this.art,{on:n,proxy:o}=S(this.art,r);t.playbackRate&&this.add(function(t){return e=>{const{i18n:r,constructor:{PLAYBACK_RATE:n}}=e,o=n.map(t=>`${1===t?r.get("Normal"):t.toFixed(1)}`).join(""),i=r.get("Play Speed");return{...t,html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.playbackRate=Number(n),t.show=!1)},mounted:t=>{const{on:r}=S(e,t),n=R('[data-value="1"]',t);n&&W(n,"art-current"),Yt(t,i),r("video:ratechange",()=>{const r=Array.from(t.querySelectorAll("span")).find(t=>Number(t.dataset.value)===e.playbackRate);r&&(W(r,"art-current"),Vt(t))})}}}}({name:"playbackRate",index:10})),t.aspectRatio&&this.add(function(t){return e=>{const{i18n:r,constructor:{ASPECT_RATIO:n}}=e,o=n.map(t=>`${"default"===t?r.get("Default"):t}`).join(""),i=r.get("Aspect Ratio");return{...t,html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.aspectRatio=n,t.show=!1)},mounted:t=>{const{on:r}=S(e,t),n=R('[data-value="default"]',t);n&&W(n,"art-current"),Yt(t,i),r("aspectRatio",e=>{const r=Array.from(t.querySelectorAll("span")).find(t=>t.dataset.value===e);r&&(W(r,"art-current"),Vt(t))})}}}}({name:"aspectRatio",index:20})),t.flip&&this.add(function(t){return e=>{const{i18n:r,constructor:{FLIP:n}}=e,o=n.map(t=>`${r.get(Q(t))}`).join(""),i=r.get("Video Flip");return{...t,html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.flip=n.toLowerCase(),t.show=!1)},mounted:t=>{const{on:r}=S(e,t),n=R('[data-value="normal"]',t);n&&W(n,"art-current"),Yt(t,i),r("flip",e=>{const r=Array.from(t.querySelectorAll("span")).find(t=>t.dataset.value===e);r&&(W(r,"art-current"),Vt(t))})}}}}({name:"flip",index:30})),this.add(function(t){return e=>({...t,html:e.i18n.get("Video Info"),click:t=>{e.info.show=!0,t.show=!1}})}({name:"info",index:40})),this.add(function(t){return{...t,html:`ArtPlayer ${i}`}}({name:"version",index:50})),this.add(function(t){return e=>({...t,html:e.i18n.get("Close"),click:t=>{t.show=!1}})}({name:"close",index:60}));for(let i=0;i{this.show=!0,a.closed||w(this.art)||!this.show||function(t,e,r){const{$player:n,$contextmenu:o}=t.template,{height:i,width:a,left:s,top:c}=M(n),{height:l,width:d}=M(o);let u=e-s,p=r-c;e+d>s+a&&(u=a-d),r+l>c+i&&(p=i-l),w(t)||j(o,{top:`${p}px`,left:`${u}px`})}(this.art,t,e)},c=function(t,e){const{art:r}=t,{$player:n,$contextmenu:o}=r.template,i=E(o),a=()=>!i.closed&&!w(r);let s,c=!1,l="",d=0;const u=()=>{const t=n.ownerDocument.activeElement;s=t&&n.contains(t)?jt(t):n,Ht(o,s)},p=()=>Array.from(o.querySelectorAll("[tabindex],button,input,select,textarea,a[href],[contenteditable]")).filter(t=>t.tabIndex>=0&&Ut(t)),f=r.i18n.get("Context Menu");if(!a())return{pointer:()=>!1};o.setAttribute("role","group"),o.setAttribute("aria-label",f);const h=t=>{if(!a())return;if(t)return void(o.contains(n.ownerDocument.activeElement)||u());const e=n.ownerDocument.activeElement,i=o.contains(e)||c&&e===n.ownerDocument.body,d=s;s=void 0,c=!1,l="",Ht(o),i&&(d&&n.contains(d)&&Ut(d)&&d.focus({preventScroll:!0}),(n.ownerDocument.activeElement===n.ownerDocument.body||o.contains(n.ownerDocument.activeElement))&&At(r))};r.on("contextmenu",h),i.add(()=>{r.off("contextmenu",h),Ht(o)}),mt(i,o,"focusin",()=>{c=!0});let m=!1;return mt(i,o,"focusout",e=>{o.contains(e.relatedTarget)||m||(m=!0,gt(i,()=>{m=!1,a()&&t.show&&!o.contains(n.ownerDocument.activeElement)&&(t.show=!1)},0))}),mt(i,n,"keydown",n=>{const i=n;if(!a()||!wt(i)||i.defaultPrevented)return;if(("ContextMenu"===i.key||"F10"===i.key&&i.shiftKey)&&r.constructor.CONTEXTMENU&&!qt(i.target)){bt(i),u();const r=i.target.getBoundingClientRect();return e(r.left,r.bottom),void(a()&&t.show&&p()[0]?.focus({preventScroll:!0}))}if(!t.show||!o.contains(i.target))return;if("Escape"===i.key)return bt(i),void(t.show=!1);if("Tab"===i.key)return void(t.show=!1);if(qt(i.target))return;const s=p(),c=s.indexOf(i.target);let f;if("ArrowDown"===i.key||"ArrowRight"===i.key)f=s[(c+1)%s.length];else if("ArrowUp"===i.key||"ArrowLeft"===i.key)f=s[(c+s.length-1)%s.length];else if("Home"===i.key)f=s[0];else if("End"===i.key)f=s[s.length-1];else{if(1!==i.key.length||" "===i.key)return;{const t=i.key.toLowerCase();l=Date.now()-d>700?t:l+t,d=Date.now();const e=[...l].every(e=>e===t)?t:l;f=[...s.slice(c+1),...s.slice(0,c+1)].find(t=>(t.getAttribute("aria-label")||t.textContent||"").trim().toLowerCase().startsWith(e))}}bt(i),f?.focus({preventScroll:!0})}),{pointer:t=>!(!a()||!r.constructor.CONTEXTMENU||qt(t.target))&&(u(),!0)}}(this,s);o(e,"contextmenu",t=>{c.pointer(t)&&(t.preventDefault(),s(t.clientX,t.clientY))}),o(e,"click",t=>{L(t,r)||(this.show=!1)}),n("blur",()=>{this.show=!1})}}const Gt=new WeakMap,Kt=new WeakMap,Zt=new WeakMap;function Jt(t,e){const r=Gt.get(t);r?.active()&&void 0!==r.resumePlaying&&(!e&&r.internalPause?r.internalPause=!1:(r.resumePlaying=e,e||r.pauseRevision++))}function Qt(t){return Zt.get(t)||b(t)}function te(t){const e=Gt.get(t),r=Zt.get(t);return()=>Gt.get(t)===e&&(!e||e.active())&&Zt.get(t)===r&&(!r||!r.closed)}function ee(t){const e=Zt.get(t),r=b(t).child(),n=r.child();Zt.set(t,r),r.add(()=>{Zt.get(t)===r&&Zt.delete(t)});const o={scope:n,assigned:!1,acceptingEvents:!1,pauseRevision:0,active:()=>!w(t)&&!n.closed&&Gt.get(t)===o};return Gt.set(t,o),n.add(()=>{Gt.get(t)===o&&Gt.delete(t),o.onAssigned=void 0,o.onError=void 0}),e?.dispose(),o}function re(t){t.assigned=!0;const e=t.onAssigned;t.onAssigned=void 0,t.active()&&e?.()}function ne(t,e,r){Kt.set(t,e),e.acceptingEvents=!0;try{t.url=r}finally{Kt.get(t)===e&&(Kt.delete(t),re(e))}}function oe(t,e){t.active()&&(t.onError?t.onError(e):console.warn("Failed to initialize ArtPlayer source:",e),t.scope.dispose())}function ie(t,e){const{$progress:r}=t.template,{left:n}=M(r),o=J((u?e.touches[0].clientX:e.clientX)-n,0,r.clientWidth),i=o/r.clientWidth*t.duration;return{second:i,time:tt(i),width:o,percentage:J(o/r.clientWidth,0,1)}}function ae(t,e,r=()=>!0){if(r())if(t.isRotate){const n=(e.touches[0].clientY-t.top)/t.height,o=n*t.duration;if(!r())return;t.emit("setBar","played",n,e),r()&&(t.seek=o)}else{const{second:n,percentage:o}=ie(t,e);if(!r())return;t.emit("setBar","played",o,e),r()&&(t.seek=n)}}const se=new Map([["ArrowRight",1],["ArrowUp",1],["ArrowLeft",-1],["ArrowDown",-1],["PageUp",10],["PageDown",-10]]);function ce(t,e,r){t.getAttribute(e)!==r&&t.setAttribute(e,r)}function le(t,e,r,n,o,i="horizontal"){const a=t=>[t.min,t.max,t.value,t.step].every(Number.isFinite)&&t.max>t.min&&t.step>0,s=(t,e)=>Math.min(e.max,Math.max(e.min,t)),c=()=>{if(t.closed)return;const r=n(),o=a(r),i=o?s(r.value,r):0;ce(e,"aria-disabled",String(!o)),ce(e,"aria-valuemin",String(o?r.min:0)),ce(e,"aria-valuemax",String(o?r.max:0)),ce(e,"aria-valuenow",String(i)),ce(e,"aria-valuetext",r.text(i))};return t.closed||(e.setAttribute("role","slider"),e.tabIndex=0,e.setAttribute("aria-label",r),e.setAttribute("aria-orientation",i),mt(t,e,"keydown",t=>{const r=t;if((r.composedPath()[0]||r.target)!==e||!wt(r)||r.defaultPrevented)return;const i=se.get(r.key);if(void 0===i&&"Home"!==r.key&&"End"!==r.key)return;bt(r);const l=n();if(!a(l))return void c();const d="Home"===r.key?l.min:"End"===r.key?l.max:s(l.value,l)+i*l.step;o(s(d,l)),c()}),c()),c}const de=new WeakMap;function ue(t){return de.get(t)||0}function pe(t,e,r){let n,o=!1,i=!1,a=!1,s=ue(t);const c=()=>a||ue(t)!==s,l=()=>!!t.template?.$video?.seeking;return{restore(i=()=>{t.currentTime=e}){if(!r()||c())return;const d=ue(t);i(),s=ue(t),s>d+1&&(a=!0),r()&&(n=t.currentTime,r()&&!c()&&(o=l()))},manual(){a=!0},ready(){if(!r()||l())return!1;const e=void 0!==n&&Math.abs(t.currentTime-n)>.05;if(!c()&&o&&!i&&void 0!==n&&e){if(i=!0,!r())return!1;t.currentTime=n}return r()&&!l()}}}function fe(t,e){const{icons:r,option:n}=t,{$player:o}=t.template,i=E(e),{on:a}=S(t,e);let s=()=>{};const c=$t(".art-progress-hover",e),l=$t(".art-progress-loaded",e),d=$t(".art-progress-played",e),p=$t(".art-progress-highlight",e),f=$t(".art-progress-indicator",e),h=$t(".art-progress-tip",e);function m(r,n){const{width:o,time:i}=n||ie(t,r);h.textContent=i||"00:00";const a=h.clientWidth;o<=a/2?H(h,"left",0):o>e.clientWidth-a/2?H(h,"left",e.clientWidth-a+"px"):H(h,"left",o-a/2+"px")}r.indicator?N(f,r.indicator):H(f,"backgroundColor","var(--art-theme)"),a("setBar",function(r,n,a){const g="played"===r&&a&&u;if("loaded"===r&&H(l,"width",100*n+"%"),"hover"===r&&(H(c,"width",100*n+"%"),L(a,p)?function(r){const{width:n}=ie(t,r),o=r.target instanceof HTMLElement?r.target.dataset.text:void 0;h.textContent=o??"";const i=h.clientWidth;n<=i/2?H(h,"left",0):n>e.clientWidth-i/2?H(h,"left",e.clientWidth-i+"px"):H(h,"left",n-i/2+"px")}(a):m(a),0===n?D(o,"art-progress-hover"):O(o,"art-progress-hover")),"played"===r&&(H(d,"width",100*n+"%"),H(f,"left",100*n+"%")),g){O(o,"art-progress-hover");m(a,{width:e.clientWidth*n,time:tt(n*t.duration)}),s(),s=gt(i,()=>{D(o,"art-progress-hover")},500)}}),a("video:loadedmetadata",function(){p.textContent="";for(let e=0;e{t.emit("setBar","played",t.played),t.emit("setBar","loaded",t.loaded)}):(a("video:timeupdate",()=>{t.emit("setBar","played",t.played)}),a("video:progress",()=>{t.emit("setBar","loaded",t.loaded)}),a("video:ended",()=>{t.emit("setBar","played",1)})),t.emit("setBar","loaded",t.loaded||0)}function he(t){return e=>({...t,html:'\n
\n
\n
\n
\n
\n
\n
00:00
\n
\n ',mounted:t=>{fe(e,t),function(t,e){const{$progress:r}=t.template,n=e.querySelector(".art-progress-indicator"),{on:o,proxy:i}=S(t,e),a=E(e);let s=0;const c=()=>{const e=te(t);return()=>!a.closed&&!w(t)&&e()},l=()=>{const t=++s,e=c();return()=>t===s&&e()};if(!u){let e;i(r,"click",e=>{e.target!==n&&ae(t,e,l())}),i(r,"mousemove",e=>{const r=c(),{percentage:n}=ie(t,e);r()&&t.emit("setBar","hover",n,e)}),i(r,"mouseleave",e=>{t.emit("setBar","hover",0,e)}),i(r,"mousedown",t=>{e=0===t.button?l():void 0}),o("document:mousemove",r=>{const n=e;if(n?.()){const{second:o,percentage:i}=ie(t,r);if(!n()||e!==n)return;t.emit("setBar","played",i,r),n()&&e===n&&(t.seek=o)}else e=void 0}),o("document:mouseup",()=>{e=void 0})}}(e,t),function(t,e){const r=E(e),{on:n}=S(t,e);let o,i=0;const a=le(r,e,t.i18n.get("Progress"),()=>({min:0,max:t.duration,value:t.currentTime,step:t.constructor.SEEK_STEP,text:e=>`${tt(e)} / ${tt(Number.isFinite(t.duration)&&t.duration>0?t.duration:0)}`}),e=>{const n=++i;o?.dispose();const s=r.child();o=s;const c=Qt(t).add(()=>{s.dispose()});s.add(()=>{c()}),s.add(()=>{o===s&&(o=void 0)});const l=te(t),d=()=>n===i&&!s.closed&&!w(t)&&l(),u=pe(t,e,d),p=()=>{d()?u.ready()&&(s.dispose(),a()):s.dispose()};for(const r of["video:seeked","video:ended"])t.on(r,p),s.add(()=>{t.off(r,p)});try{t.emit("setBar","played",e/t.duration),d()&&u.restore(()=>{t.seek=e}),p()}catch(f){throw s.dispose(),f}});n("video:loadedmetadata",a),n("video:durationchange",a),n("video:emptied",a),n("video:timeupdate",a),n("video:seeking",a),n("video:seeked",a),n("video:ended",a)}(e,t)}})}function me(t){const{option:e}=t.art;e.isLive||t.add(he({name:"progress",position:"top",index:10})),t.add({name:"thumbnails",position:"top",index:20}),t.add(function(t){return e=>({...t,mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e,a=kt(t,o.play),s=kt(t,o.pause);function c(){t.setAttribute("aria-label",i.get("Play")),H(a,"display","flex"),H(s,"display","none")}function l(){t.setAttribute("aria-label",i.get("Pause")),H(a,"display","none"),H(s,"display","flex")}xt(E(t),t,()=>(e.playing?s:a).click()),Y(a,i.get("Play")),Y(s,i.get("Pause")),n(a,"click",()=>{G(e.play())}),n(s,"click",()=>{e.pause()}),e.playing?l():c(),r("video:playing",()=>{l()}),r("video:pause",()=>{c()})}})}({name:"playAndPause",position:"left",index:10})),t.add(function(t){return e=>({...t,mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e,a=kt(t,o.volume),s=kt(t,o.volumeClose);for(const e of[a,s])xt(E(t),e),e.setAttribute("aria-label",i.get("Mute"));const c=kt(t,'
'),l=kt(c,'
'),d=kt(l,'
'),p=kt(l,'
'),f=kt(p,'
'),h=kt(f,'
'),m=kt(p,'
'),g=E(t);let v=0;const y=le(g,p,i.get("Volume"),()=>({min:0,max:100,value:e.muted?0:100*e.volume,step:100*e.constructor.VOLUME_STEP,text:t=>`${Math.round(t)}%`}),t=>{const r=++v;e.muted=!1,r!==v||g.closed||w(e)||(e.volume=t/100)},"vertical");function b(t){const{top:e,height:r}=M(p);return 1-(t.clientY-e)/r}function x(){y();const r=t.ownerDocument.activeElement,n=e.muted||0===e.volume,o=n?s:a;if(a.setAttribute("aria-pressed",String(e.muted)),s.setAttribute("aria-pressed",String(e.muted)),n)H(a,"display","none"),H(s,"display","flex"),H(m,"top","100%"),H(h,"top","100%"),d.textContent="0";else{const t=100*e.volume;H(a,"display","flex"),H(s,"display","none"),H(m,"top",100-t+"%"),H(h,"top",100-t+"%"),d.textContent=String(Math.floor(t))}r!==a&&r!==s||r===o||o.focus({preventScroll:!0})}if(x(),r("video:volumechange",x),n(a,"click",()=>{e.muted=!0}),n(s,"click",()=>{e.muted=!1}),u)H(c,"display","none");else{let t=!1;n(p,"mousedown",r=>{t=0===r.button,e.volume=b(r)}),r("document:mousemove",r=>{t&&(e.muted=!1,e.volume=b(r))}),r("document:mouseup",()=>{t&&(t=!1)})}}})}({name:"volume",position:"left",index:20})),e.isLive||t.add(function(t){return e=>({...t,style:u?{fontSize:"12px",padding:"0 5px"}:{cursor:"auto",padding:"0 10px"},mounted:t=>{const{on:r}=S(e,t);function n(){const r=`${tt(e.currentTime)} / ${tt(e.duration)}`;r!==t.textContent&&(t.textContent=r)}n();const o=["video:loadedmetadata","video:timeupdate","video:progress"];for(let e=0;e{r&&!b(t.art).closed&&(t.art.quality=e.quality)}).catch(t=>{console.warn("ArtPlayer quality initialization failed:",t)}),e.screenshot&&!u&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("Screenshot"),mounted:t=>{const{proxy:r}=S(e,t),{icons:n}=e;xt(E(t),t),kt(t,n.screenshot),r(t,"click",()=>{G(e.screenshot())})}})}({name:"screenshot",position:"right",index:20})),e.setting&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("Show Setting"),mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e;kt(t,o.setting),xt(E(t),t),t.setAttribute("aria-expanded","false"),n(t,"click",()=>{e.setting.toggle(),e.setting.resize()}),r("setting",e=>{t.setAttribute("aria-expanded",String(e)),Y(t,i.get(e?"Hide Setting":"Show Setting"))})}})}({name:"setting",position:"right",index:30})),e.pip&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("PIP Mode"),mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e;xt(E(t),t),kt(t,o.pip),n(t,"click",()=>{e.pip=!e.pip}),r("pip",e=>{Y(t,i.get(e?"Exit PIP Mode":"PIP Mode"))})}})}({name:"pip",position:"right",index:40})),e.airplay&&"WebKitPlaybackTargetAvailabilityEvent"in window&&window.WebKitPlaybackTargetAvailabilityEvent&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("AirPlay"),mounted:t=>{const{proxy:r}=S(e,t),{icons:n}=e;xt(E(t),t),kt(t,n.airplay),r(t,"click",()=>e.airplay())}})}({name:"airplay",position:"right",index:50})),e.fullscreenWeb&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("Web Fullscreen"),mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e;xt(E(t),t);const a=kt(t,o.fullscreenWebOn),s=kt(t,o.fullscreenWebOff);H(s,"display","none"),n(t,"click",()=>{e.fullscreenWeb=!e.fullscreenWeb}),r("fullscreenWeb",e=>{e?(Y(t,i.get("Exit Web Fullscreen")),H(a,"display","none"),H(s,"display","inline-flex")):(Y(t,i.get("Web Fullscreen")),H(a,"display","inline-flex"),H(s,"display","none"))})}})}({name:"fullscreenWeb",position:"right",index:60})),e.fullscreen&&t.add(function(t){return e=>({...t,tooltip:e.i18n.get("Fullscreen"),mounted:t=>{const{on:r,proxy:n}=S(e,t),{icons:o,i18n:i}=e;xt(E(t),t);const a=kt(t,o.fullscreenOn),s=kt(t,o.fullscreenOff);H(s,"display","none"),n(t,"click",()=>{e.fullscreen=!e.fullscreen}),r("fullscreen",e=>{e?(Y(t,i.get("Exit Fullscreen")),H(a,"display","none"),H(s,"display","inline-flex")):(Y(t,i.get("Fullscreen")),H(a,"display","inline-flex"),H(s,"display","none"))})}})}({name:"fullscreen",position:"right",index:70}));for(let r=0;rye.get(t).option.selector}),it(t,"$control_item",{get:()=>ye.get(t).item}),it(t,"$control_value",{get:()=>ye.get(t).value})),ye.set(t,e)}function we(t,e){t.innerHTML=e}function xe(t,e,r,n,o){const{proxy:i}=t.events,a=E(n),s=r.selector;O(n,"art-control-selector");const c=document.createElement("div");O(c,"art-selector-value"),N(c,r.html),n.textContent="",N(n,c);const l=kt(n,'
');for(let f=0;f{if(a.closed)return;const o=T(n),i=r.selector.find(t=>o.includes(t.$control_item));if(!i)return;const s=++d,l=()=>!a.closed&&s===d,u=a.add(function(t,e){return ge.set(t,e),()=>{ge.get(t)===e&&ge.delete(t)}}(n,l));try{if(e(i),a.closed)return;if(r.onSelect){const e=await r.onSelect.call(t,i,i.$control_item,n);if(l()){const t=c.contains(c.ownerDocument.activeElement);we(c,e),ye.get(i)?.refresh?.(t)}}}catch(p){console.warn("ArtPlayer selector failed:",p)}finally{u()}});o.push(u);const p=function(t,e,r,n,o){if(t.closed)return()=>{};const i=Array.from(n.children),a=i.some(t=>t.querySelector(ve));n.setAttribute("role",a?"group":"listbox"),n.setAttribute("aria-label",o);let s=!1,c=!1,l=!1,d="",u=0;const p=()=>i.length>0&&(c||s&&!l),f=()=>r.querySelector('button,a[href],[role="button"]')||r,h=(e=!1)=>{if(t.closed)return;const n=f();r.querySelector(ve)?(r.removeAttribute("role"),r.removeAttribute("tabindex")):(r.setAttribute("role","button"),r.tabIndex=0),n!==r&&(r.removeAttribute("aria-haspopup"),r.removeAttribute("aria-expanded"),r.removeAttribute("aria-disabled")),a?n.removeAttribute("aria-haspopup"):n.setAttribute("aria-haspopup","listbox"),n.setAttribute("aria-expanded",String(p())),n.setAttribute("aria-disabled",String(0===i.length)),e&&r.isConnected&&r.ownerDocument.activeElement===r.ownerDocument.body&&n.focus({preventScroll:!0})},m=(t,r=!1)=>{c=t,l=r,e.classList.toggle("art-selector-open",t),e.classList.toggle("art-selector-dismissed",r),h()},g=e=>{e&&!t.closed&&((e.querySelector(ve)||e).focus({preventScroll:!0}),t.closed||e.scrollIntoView({block:"nearest",inline:"nearest"}))},v=(e=!1)=>{!t.closed&&i.length&&(m(!0),d="",g(i.find(t=>t.classList.contains("art-current"))||i[e?i.length-1:0]))},y=()=>{if(t.closed)return;const o=n.contains(e.ownerDocument.activeElement);m(!1,!0),d="",o&&r.isConnected&&f().focus({preventScroll:!0})};xt(t,r,()=>{r.click(),e.ownerDocument.activeElement===r&&v()}),h();for(const b of i){const e=b.classList.contains("art-current");a?b.setAttribute("aria-current",String(e)):(b.setAttribute("role","option"),b.setAttribute("aria-selected",String(e))),b.querySelector(ve)||(b.tabIndex=-1,xt(t,b,()=>{b.click(),y()}))}return mt(t,r,"keydown",t=>{const e=t;!wt(e)||e.defaultPrevented||e.target!==r&&e.target!==f()||("ArrowDown"===e.key||"ArrowUp"===e.key?(bt(e),v("ArrowUp"===e.key)):"Escape"===e.key&&p()&&(bt(e),y()))}),mt(t,r,"click",t=>{t.isTrusted&&0===t.detail&&f()!==r&&v()}),mt(t,n,"keydown",t=>{const e=t;if(!wt(e)||e.defaultPrevented)return;if("Escape"===e.key)return bt(e),void y();const r=i.indexOf(e.target);if(r<0)return;let n;switch(1!==e.key.length&&(d=""),e.key){case"ArrowDown":n=Math.min(r+1,i.length-1);break;case"ArrowUp":n=Math.max(r-1,0);break;case"Home":n=0;break;case"End":n=i.length-1;break;case"ArrowLeft":case"ArrowRight":return void bt(e);default:{if(1!==e.key.length||" "===e.key)return;const t=Date.now();d=t-u<500?d+e.key.toLocaleLowerCase():e.key.toLocaleLowerCase(),u=t;const o=[...d].every(t=>t===d[0])?d[0]:d;for(let e=1;e<=i.length;e++){const t=(r+e)%i.length;if(i[t].textContent?.trim().toLocaleLowerCase().startsWith(o)){n=t;break}}}}bt(e),void 0!==n&&g(i[n])}),mt(t,n,"click",t=>{t.isTrusted&&0===t.detail&&y()}),mt(t,e,"mouseenter",()=>{s=!0,m(c)}),mt(t,e,"mouseleave",()=>{s=!1,m(n.contains(e.ownerDocument.activeElement))}),mt(t,e,"focusout",t=>{e.contains(t.relatedTarget)||m(!1,!0)}),t.add(()=>{e.classList.remove("art-selector-open","art-selector-dismissed")}),h}(a,n,c,l,String(r.tooltip||r.name||c.textContent||t.i18n.get("Open")));for(const f of s)ye.get(f).refresh=p}class ke extends Ft{constructor(t){super(t),this.isHover=!1,this.name="control",this.timer=Date.now();const{constructor:e}=t,{$player:r,$bottom:n}=this.art.template,o=function(t,e,r){let n,o,i=!0;const a=()=>!t.closed&&i&&e.contains(e.ownerDocument.activeElement),s=()=>{const t=a(),n=e.classList.contains("art-keyboard-focus");e.classList.toggle("art-keyboard-focus",t),t&&!n&&r()},c=()=>{i=!0,s()},l=()=>{i=!1,s()},d=()=>{n!==e.ownerDocument&&(o?.dispose(),n=e.ownerDocument,o=t.child(),mt(o,n,"keydown",c,{capture:!0}),mt(o,n,"mousedown",l,{capture:!0}),mt(o,n,"touchstart",l,{capture:!0,passive:!0}))};return d(),mt(t,e,"keydown",c,{capture:!0}),mt(t,e,"mousedown",l,{capture:!0}),mt(t,e,"touchstart",l,{capture:!0,passive:!0}),mt(t,e,"focusin",()=>{d(),s()}),mt(t,e,"focusout",()=>{e.classList.remove("art-keyboard-focus")}),t.add(()=>{e.classList.remove("art-keyboard-focus")}),a}($(t,n),r,()=>{this.show=!0}),{on:i,proxy:a}=S(t,n);a(r,"focusin",e=>{t.isFocus=!0,t.isInput="INPUT"===e.target?.tagName}),a(r,"focusout",e=>{r.contains(e.relatedTarget)||(t.isFocus=!1,t.isInput=!1)}),i("mousemove",()=>{u||(this.show=!0)}),i("click",()=>{u?this.toggle():this.show=!0}),i("document:mousemove",t=>{this.isHover=L(t,n)}),i("video:timeupdate",()=>{!t.setting.show&&!this.isHover&&!t.isInput&&!o()&&t.playing&&this.show&&Date.now()-this.timer>=e.CONTROL_HIDE_TIME&&(this.show=!1)}),i("control",t=>{t?(D(r,"art-hide-cursor"),O(r,"art-hover"),this.timer=Date.now()):(O(r,"art-hide-cursor"),D(r,"art-hover"))}),this.init(),b(t).closed||function(t){const{$bottom:e,$controls:r,$player:n}=t.template,o=E(e),{on:i}=S(t,e),a=()=>{if(o.closed)return;const t=r.offsetHeight;t>0&&n.style.getPropertyValue("--art-controls-height")!==`${t}px`&&n.style.setProperty("--art-controls-height",`${t}px`)};if(i("resize",a),"undefined"!==typeof ResizeObserver){const t=new ResizeObserver(a);return t.observe(r),void o.add(()=>{t.disconnect()})}if("undefined"!==typeof MutationObserver){const t=new MutationObserver(a);t.observe(r,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),o.add(()=>{t.disconnect()})}a()}(t)}init(){me(this)}add(t){if(w(this.art))return;const e="function"===typeof t?t(this.art):t,{$progress:r,$controlsLeft:n,$controlsRight:o}=this.art.template;switch(e.position){case"top":this.$parent=r;break;case"left":this.$parent=n;break;case"right":this.$parent=o;break;default:X(!1,"Control option.position must one of 'top', 'left', 'right'")}super.add(e)}check(t){!function(t){if(!t)return;const e=t.$control_value.contains(t.$control_value.ownerDocument.activeElement);we(t.$control_value,t.html);for(let r=0;rthis.check(t),t,e,r)}}function $e(t,e){const{constructor:r,template:{$video:n}}=t;!function(t){const{$player:e}=t.template,r=r=>{if(w(t))return;const n=L(r,e);t.isInput=n&&"INPUT"===r.target?.tagName,t.isFocus=n,t.emit(n?"focus":"blur",r)};t.on("document:click",r),t.on("document:contextmenu",r),b(t).add(()=>{t.off("document:click",r),t.off("document:contextmenu",r)})}(t);let o=[];e.proxy(n,"click",e=>{if(w(t))return;const n=Date.now();o.push(n);const{MOBILE_CLICK_PLAY:i,DBCLICK_TIME:a,MOBILE_DBCLICK_PLAY:s,DBCLICK_FULLSCREEN:c}=r,l=o.filter(t=>n-t<=a);switch(l.length){case 1:if(t.emit("click",e),w(t))return;(!u||!t.isLock&&i)&&G(t.toggle()),o=l;break;case 2:if(t.emit("dblclick",e),w(t))return;u?!t.isLock&&s&&G(t.toggle()):c&&(t.fullscreen=!t.fullscreen),o=[];break;default:o=[]}})}function Ee(t){let e;const r=()=>{e=void 0},n=r=>e===r&&!w(t)&&!t.isLock&&!t.option.isLive&&t.isRotate===r.rotated&&r.sourceActive(),o=t=>{t&&r()};t.on("document:touchend",r),t.on("document:touchcancel",r),t.on("lock",o),b(t).add(()=>{r(),t.off("document:touchend",r),t.off("document:touchcancel",r),t.off("lock",o)});return{start:(o,i)=>{r();const a=i.touches[0];if(w(t)||t.isLock||t.option.isLive||1!==i.touches.length||!a)return;if(![a.pageX,a.pageY,a.clientX,a.clientY,t.currentTime].every(Number.isFinite))return;const s={target:o,identifier:a.identifier,x:a.pageX,y:a.pageY,time:t.currentTime,rotated:t.isRotate,sourceActive:te(t)};if(e=s,o===t.template.$progress){const o=t.isRotate?t.height:t.template.$progress.clientWidth;if(!Number.isFinite(o)||o<=0||!Number.isFinite(t.duration)||t.duration<=0)return void r();try{ae(t,i,()=>n(s))}catch(c){throw e===s&&r(),c}n(s)&&(s.time=t.currentTime)}},move:o=>{const i=e,a=o.touches[0];if(!i)return;if(!n(i)||1!==o.touches.length||!a||a.identifier!==i.identifier)return void r();const s=i.rotated?t.height:t.width,c=i.target===t.template.$video?t.constructor.TOUCH_MOVE_RATIO:1;if(![a.pageX,a.pageY,s,t.duration,c].every(Number.isFinite)||s<=0||t.duration<=0)return void r();const l=function(t,e,r,n){const o=e-n,i=r-t;if(Math.abs(i)<2&&Math.abs(o)<2)return 0;const a=180*Math.atan2(o,i)/Math.PI;return a>=-45&&a<45?4:a>=45&&a<135?1:a>=-135&&a<-45?2:a>=135&&a<=180||a>=-180&&a<-135?3:0}(i.x,i.y,a.pageX,a.pageY);if(!(i.rotated?1===l||2===l:3===l||4===l))return;const d=J((i.rotated?a.pageY-i.y:a.pageX-i.x)/s,-1,1),u=J(i.time+t.duration*d*c,0,t.duration);t.seek=u,n(i)&&(t.emit("setBar","played",J(u/t.duration,0,1),o),n(i)&&(t.notice.show=`${tt(u)} / ${tt(t.duration)}`))},cancel:r}}const Ae=["click","mouseup","keydown","touchend","touchcancel","touchmove","mousemove","pointerup","contextmenu","pointermove","visibilitychange","webkitfullscreenchange"],Ce=["resize","scroll","orientationchange"];const Se=new WeakMap;function Te(t){const e=Se.get(t);if(!e)throw new Error("ArtPlayer event registry has not been initialized");return e}function Le(t,e,r,n,o={}){if(Array.isArray(r)){const i=[];try{return r.map(r=>{const a=Le(t,e,r,n,o);return i.push(a),a})}catch(f){for(const t of i.reverse())try{t()}catch(h){console.warn("Failed to roll back event listener:",h)}throw f}}const i=r,a=Te(t);if(a.scope.closed||a.cleaning)return()=>{};const s="boolean"===typeof o?o:{capture:Boolean(o?.capture),once:Boolean(o?.once),passive:o?.passive,signal:o?.signal},c="boolean"===typeof s?s:s.capture,l="boolean"===typeof s?void 0:s.signal;if(a.scope.closed||a.cleaning||l?.aborted)return()=>{};let d=!0;function u(r=!1){(d||r)&&(e.removeEventListener(i,n,c),l?.removeEventListener("abort",p),d=!1,t.destroyEvents.delete(p))}function p(){u()}t.destroyEvents.add(p);try{e.addEventListener(i,n,s),!d||a.scope.closed||a.cleaning?u(!0):l?.aborted?p():l?.addEventListener("abort",p,{once:!0})}catch(f){try{u(!0)}catch(h){console.warn("Failed to roll back event listener:",h)}throw f}return p}function Pe(t){return(e,r)=>{if(w(t))return;const n=(...e)=>{if(!w(t))return r(...e)};t.on(e,n),b(t).add(()=>{t.off(e,n)})}}function Me(t){if(!t.constructor.USE_RAF)return;const e=b(t);let r=()=>{};const n=()=>{w(t)||(t.playing&&t.emit("raf"),w(t)||(r=function(t,e){if(t.closed)return ht;let r=!0,n=ht;const o=requestAnimationFrame(o=>{r&&(n(),t.closed||e(o))});return n=t.add(()=>{r=!1,cancelAnimationFrame(o)}),n}(e,n)))};n(),Pe(t)("destroy",()=>r())}class ze{constructor(t){this.destroyEvents=new Set,function(t,e){Se.set(t,{scope:b(e),cleaning:!1})}(this,t),b(t).add(()=>{this.destroy()}),this.proxy=this.proxy.bind(this),this.hover=this.hover.bind(this),$e(t,this),function(t,e){const{$player:r}=t.template;e.hover(r,e=>{w(t)||(O(r,"art-hover"),t.emit("hover",!0,e))},e=>{w(t)||(D(r,"art-hover"),t.emit("hover",!1,e))})}(t,this),function(t,e){const{$player:r}=t.template;e.proxy(r,"mousemove",e=>{w(t)||t.emit("mousemove",e)})}(t,this),function(t,e){const{option:r,constructor:n}=t,o=Pe(t);o("resize",()=>{const{aspectRatio:e,notice:n}=t;"standard"===t.state&&r.autoSize&&t.autoSize(),w(t)||(t.aspectRatio=e,w(t)||(n.show=""))});const i=b(t);let a=()=>{};const s=()=>{w(t)||(a(),a=gt(i,()=>t.emit("resize"),n.RESIZE_TIME))};o("window:orientationchange",s),o("window:resize",s);const c=t.template.$player.ownerDocument.defaultView?.screen?.orientation;"function"===typeof c?.addEventListener&&e.proxy(c,"change",s)}(t,this),function(t,e){if(!u||t.option.isLive)return;const{$video:r,$progress:n}=t.template,o=Ee(t),i=t=>{e.proxy(t,"touchstart",e=>o.start(t,e)),e.proxy(t,"touchmove",t=>o.move(t)),e.proxy(t,"touchcancel",o.cancel)};t.option.gesture&&i(r),i(n)}(t,this),function(t){const{option:e,constructor:r,template:{$container:n}}=t,o=r.SCROLL_TIME,i=b(t),a=Pe(t);let s=!1;a("window:scroll",()=>{s||(t.emit("view",function(t,e){const r=t.getBoundingClientRect(),n=t.ownerDocument,o=n.defaultView,i=o?.innerHeight||n.documentElement.clientHeight,a=o?.innerWidth||n.documentElement.clientWidth,s=r.top-e<=i&&r.top+r.height+e>=0,c=r.left-e<=a+e&&r.left+r.width+e>=0;return s&&c}(n,r.SCROLL_GAP)),w(t)||(s=!0,gt(i,()=>{s=!1},o)))}),a("view",r=>{e.autoMini&&(t.mini=!r)})}(t),function(t,e){let r,n=0;b(t).add(()=>{r=void 0,n++});const o=t=>{if(t){for(const r of t.disposers)e.remove(r);t.disposers.length=0}};function i(i={}){if(w(t))return;const a=++n,s={disposers:[]},c=()=>a!==n||w(t);try{const{$player:n}=t.template,o=i.document||n.ownerDocument||document,a=i.window||n.ownerDocument?.defaultView||window,l=(n,o,i)=>{for(const a of o){if(c())return;s.disposers.push(e.proxy(n,a,e=>{r!==s||w(t)||t.emit(`${i}:${a}`,e)}))}};l(o,Ae,"document"),l(a,Ce,"window")}catch(d){throw o(s),d}if(c())return void o(s);const l=r;r=s,o(l)}i(),e.bindGlobalEvents=i}(t,this),Me(t)}proxy(t,e,r,n={}){return Array.isArray(e),Le(this,t,e,r,n)}hover(t,e,r){e&&this.proxy(t,"mouseenter",e),r&&this.proxy(t,"mouseleave",r)}remove(t){!function(t,e){if(t.destroyEvents.has(e))try{e(),t.destroyEvents.delete(e)}catch(r){console.warn("Failed to remove event listener:",r)}}(this,t)}destroy(){!function(t){const e=Te(t);if(!e.cleaning){e.cleaning=!0;try{for(const e of t.destroyEvents)try{e(),t.destroyEvents.delete(e)}catch(r){console.warn("Failed to destroy event listener:",r)}}finally{e.cleaning=!1}}}(this)}}function Re(t){if(t&&1===t.nodeType)return t}function Oe(t){const e=t.tagName.toUpperCase();return"INPUT"===e||"TEXTAREA"===e||"SELECT"===e||t.isContentEditable}function De(t,e){if(function(t){return yt.has(t)}(t)||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey||t.isComposing||229===t.keyCode)return!1;const r=function(t,e){const r=t.target;return 9===r?.nodeType?r:r?.ownerDocument||t.view?.document||e}(t,e);let n=Re(r.activeElement);for(;n?.shadowRoot?.activeElement;)n=Re(n.shadowRoot.activeElement);if(n&&Oe(n))return!1;const o=Re(t.composedPath?.()[0])||Re(t.target),i="Enter"===t.key||"Enter"===t.code||"NumpadEnter"===t.code;if(i||" "===t.key||"Space"===t.code){const t='button,summary,[role="button"],[role="switch"]'+(i?",a[href]":"");if(o?.closest?.(t)||n?.closest?.(t))return!1}return!o||!Oe(o)}const Ie=new WeakMap;class Ne{constructor(t){this.art=t,this.keys={},Ie.set(this,{subscribed:!1}),u||this.init()}init(){const t=this.art;if(w(t))return;const e=Ie.get(this);if(t.option.hotkey){if(!e.defaults){const r=function(t){const{constructor:e}=t;return{Escape:()=>{t.fullscreenWeb&&(t.fullscreenWeb=!1)},Space:()=>{G(t.toggle())},ArrowLeft:()=>{t.backward=e.SEEK_STEP},ArrowUp:()=>{t.volume+=e.VOLUME_STEP},ArrowRight:()=>{t.forward=e.SEEK_STEP},ArrowDown:()=>{t.volume-=e.VOLUME_STEP}}}(t);e.defaults=()=>{for(const t of Object.keys(r))this.add(t,r[t])}}e.defaults()}if(e.subscribed)return;e.subscribed=!0;const r=e=>{if(!w(t)){if(t.isFocus&&De(e,t.template.$player.ownerDocument)){const r=Object.prototype.hasOwnProperty.call(this.keys,e.code)?this.keys[e.code]:void 0;if(r){e.preventDefault();for(let n=0;n{e.subscribed=!1,t.off("document:keydown",r)})}add(t,e){const r=Object.prototype.hasOwnProperty.call(this.keys,t)?this.keys[t]:void 0;return r?r.includes(e)||r.push(e):Object.defineProperty(this.keys,t,{value:[e],enumerable:!0,configurable:!0,writable:!0}),this}remove(t,e){const r=Object.prototype.hasOwnProperty.call(this.keys,t)?this.keys[t]:void 0;if(r){const n=r.indexOf(e);-1!==n&&r.splice(n,1),0===r.length&&delete this.keys[t]}return this}}const _e={"Context Menu":"\u5feb\u6377\u83dc\u5355",Lock:"\u9501\u5b9a",Back:"\u8fd4\u56de",Settings:"\u8bbe\u7f6e",Progress:"\u64ad\u653e\u8fdb\u5ea6","Video Info":"\u7edf\u8ba1\u4fe1\u606f",Close:"\u5173\u95ed","Video Load Failed":"\u52a0\u8f7d\u5931\u8d25",Volume:"\u97f3\u91cf",Play:"\u64ad\u653e",Pause:"\u6682\u505c",Rate:"\u901f\u5ea6",Mute:"\u9759\u97f3","Video Flip":"\u753b\u9762\u7ffb\u8f6c",Horizontal:"\u6c34\u5e73",Vertical:"\u5782\u76f4",Reconnect:"\u91cd\u65b0\u8fde\u63a5","Show Setting":"\u663e\u793a\u8bbe\u7f6e","Hide Setting":"\u9690\u85cf\u8bbe\u7f6e",Screenshot:"\u622a\u56fe","Play Speed":"\u64ad\u653e\u901f\u5ea6","Aspect Ratio":"\u753b\u9762\u6bd4\u4f8b",Default:"\u9ed8\u8ba4",Normal:"\u6b63\u5e38",Open:"\u6253\u5f00","Switch Video":"\u5207\u6362","Switch Subtitle":"\u5207\u6362\u5b57\u5e55",Fullscreen:"\u5168\u5c4f","Exit Fullscreen":"\u9000\u51fa\u5168\u5c4f","Web Fullscreen":"\u7f51\u9875\u5168\u5c4f","Exit Web Fullscreen":"\u9000\u51fa\u7f51\u9875\u5168\u5c4f","Mini Player":"\u8ff7\u4f60\u64ad\u653e\u5668","PIP Mode":"\u5f00\u542f\u753b\u4e2d\u753b","Exit PIP Mode":"\u9000\u51fa\u753b\u4e2d\u753b","PIP Not Supported":"\u4e0d\u652f\u6301\u753b\u4e2d\u753b","Fullscreen Not Supported":"\u4e0d\u652f\u6301\u5168\u5c4f","Subtitle Offset":"\u5b57\u5e55\u504f\u79fb","Last Seen":"\u4e0a\u6b21\u770b\u5230","Jump Play":"\u8df3\u8f6c\u64ad\u653e",AirPlay:"\u9694\u7a7a\u64ad\u653e","AirPlay Not Available":"\u9694\u7a7a\u64ad\u653e\u4e0d\u53ef\u7528"};!function(t,e){if("undefined"!==typeof window){window[t]=e}}("artplayer-i18n-zh-cn",_e);class We{constructor(t){this.art=t,this.languages={"zh-cn":_e},this.language={},this.update(t.option.i18n)}init(){const t=this.art.option.lang.toLowerCase();this.language=st(this.languages,t)&&this.languages[t]||{}}get(t){return st(this.language,t)&&this.language[t]||t}update(t){this.languages=lt(this.languages,t),this.init()}}const Fe={loading:'\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n',state:'\r\n\r\n\r\n',play:'\r\n \r\n',pause:'\r\n \r\n',check:'\r\n\r\n',volume:'\r\n \r\n \r\n',volumeClose:'\r\n \r\n \r\n',screenshot:'\r\n\t\r\n\r\n',setting:'\r\n \r\n \r\n',pip:'\r\n\r\n',arrowLeft:'\r\n \r\n',arrowRight:'\r\n \r\n',playbackRate:'',aspectRatio:'',config:'',lock:'\r\n\r\n\r\n\r\n\r\n',flip:'\r\n\r\n\r\n\r\n\r\n\r\n',unlock:'\r\n\r\n\r\n',fullscreenOff:'\r\n\r\n\r\n\r\n\r\n',fullscreenOn:'\r\n\r\n\r\n\r\n\r\n',fullscreenWebOff:'\r\n\r\n\r\n\r\n\r\n',fullscreenWebOn:'\r\n\r\n\r\n\r\n\r\n',switchOn:'\r\n\r\n\r\n \r\n',switchOff:'\r\n\r\n\r\n \r\n\r\n',error:'\r\n\r\n\r\n\r\n\r\n',close:'\r\n\r\n\r\n\r\n\r\n',airplay:'\r\n \r\n \r\n \r\n \r\n\r\n'};class Ve{constructor(t){const e={...Fe,...t.option.icons};for(const r in e)it(this,r,{get:()=>B(r,e[r])})}}const Ye=new WeakMap;function Be(t,e,r){const n=()=>!e.closed&&!w(t),o=t=>{try{e.dispose()}catch(r){console.warn("Failed to release info polling resources:",r)}throw t};try{const{proxy:i,constructor:a,template:{$infoPanel:s,$infoClose:c,$video:l}}=t,d=i(c,"click",()=>{n()&&r()});e.add(()=>{t.events.remove(d)});const u=Array.from(s.querySelectorAll("[data-video]")),p=()=>e.dispose();t.on("destroy",p),e.add(()=>{t.off("destroy",p)}),function(t,e,r){const{$player:n,$info:o,$infoClose:i}=t.template;if(!o)return;const a=()=>!e.closed&&!w(t),s=()=>n.classList.contains("art-info-show"),c=t.i18n.get("Close");if(!a())return;const l=t.i18n.get("Video Info");if(!a())return;i.setAttribute("aria-label",c),o.setAttribute("role","group"),o.setAttribute("aria-label",l),xt(e,i,()=>i.click(),s),mt(e,o,"keydown",t=>{const e=t;a()&&s()&&wt(e)&&!e.defaultPrevented&&"Escape"===e.key&&(bt(e),r())});const d=e=>{if(!a())return;const r=n.ownerDocument,s=r.activeElement;if(e)o.contains(s)||(Ye.delete(t),s&&n.contains(s)&&(Ye.set(t,jt(s)),n.classList.contains("art-keyboard-focus")&&i.focus({preventScroll:!0})));else{const e=Ye.get(t);if(Ye.delete(t),!o.contains(s))return;const i=e&&r.defaultView?.getComputedStyle(e).visibility;e?.isConnected&&n.contains(e)&&e.getClientRects().length&&"hidden"!==i&&"collapse"!==i&&!e.matches(":disabled")&&!e.closest("[inert]")&&"true"!==e.getAttribute("aria-disabled")?e.focus({preventScroll:!0}):At(t)}};t.on("info",d),e.add(()=>{t.off("info",d)})}(t,e,r);const f=()=>{try{for(const t of u){if(!n())return;const e=Reflect.get(l,t.dataset.video??"undefined");if(!n())return;const r="number"===typeof e?e.toFixed(2):e;if(!n())return;if(t.textContent!==r){const e=null==r?null:`${r}`;if(!n())return;t.textContent=e}}n()&>(e,f,a.INFO_LOOP_TIME)}catch(t){o(t)}};n()&&f()}catch(i){o(i)}}const He=new WeakMap;class je extends Ft{constructor(t){super(t),this.name="info",He.set(this,{revision:0}),u||this.init()}init(){const t=He.get(this),e=++t.revision;if(t.scope?.dispose(),w(this.art)||t.revision!==e)return;const r=b(this.art).child();t.scope=r,r.add(()=>{t.scope===r&&(t.scope=void 0)}),Be(this.art,r,()=>{this.show=!1})}}class qe extends Ft{constructor(t){super(t);const{option:e,template:{$layer:r}}=t;this.name="layer",this.$parent=r;for(let n=0;n{H(i,"display","none"),H(s,"display",null),w(t)&&(c=!0)};var d;t.on("destroy",l),(d=t,y(d).finalizers).add(()=>{try{c||l()}finally{t.off("destroy",l)}}),w(t)||n.proxy(e.$state,"click",()=>{w(t)||G(t.play())})}}const Ge=new WeakMap;function Ke(t){const e=Ge.get(t);e.revision++,e.pending=void 0,null!==t.timer&&(clearTimeout(t.timer),t.timer=null)}class Ze{constructor(t){this.art=t,this.timer=null,Ge.set(this,{revision:0});const e=()=>this.destroy();t.on("destroy",e),b(t).add(()=>{t.off("destroy",e)}),b(t).add(()=>{this.destroy()})}destroy(){Ke(this)}set show(t){if(w(this.art))return;const e=Ge.get(this);e.revision++;const{constructor:r,template:{$player:n,$noticeInner:o}}=this.art;if(t){Ke(this);const i=e.revision,a=()=>!w(this.art)&&e.revision===i;if(o.textContent=t instanceof Error?t.message.trim():t,!a())return;if(O(n,"art-notice-show"),!a())return;const s=r.NOTICE_TIME;if(!a())return;const c={};e.pending=c;const l=setTimeout(()=>{if(w(this.art)||e.pending!==c)return;e.pending=void 0;const t=e.revision;o.textContent="",w(this.art)||e.revision!==t||D(n,"art-notice-show")},s);a()?this.timer=l:clearTimeout(l)}else D(n,"art-notice-show")}get show(){const{template:{$player:t}}=this.art;return t.classList.contains("art-notice-show")}}function Je(t,e){return function(t,e){const r=lt(e,t);return r.container=t.container,o(r,_t)}(t,e)}function Qe({width:t,height:e}){return Number.isFinite(t)&&t>0&&Number.isFinite(e)&&e>0}function tr(t,e){if(!Qe(t)||!Number.isFinite(e)||e<=0)return;const r=t.width/t.height>e?{width:e*t.height,height:t.height,axis:"width"}:{width:t.width,height:t.width/e,axis:"height"};return Qe(r)?r:void 0}function er(t,e,r,n=!1){const o=e=>{w(t)||r(e)};t[n?"once":"on"](e,o),b(t).add(()=>{t.off(e,o)})}function rr(t,e,r){for(const[n,o]of e){if(w(t)||r&&!r())return;t[n].show=o}}function nr(t){const{option:e,constructor:r,i18n:n,notice:o,template:{$player:i}}=t;let a,s=Qt(t),c=0;return{reset(){c=0,a?.dispose(),D(i,"art-error")},loadStart(){D(i,"art-error")},schedule(l){(async l=>{if(w(t))return;const d=Qt(t);if(d!==s&&(s=d,c=0),a&&!a.closed)return;const u=d.child();a=u,u.add(()=>{a===u&&(a=void 0)});const p=()=>!w(t)&&!u.closed&&d===Qt(t),f=c{console.warn("ArtPlayer reconnect failed:",t)})}}}const or=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],ir=(()=>{if("undefined"===typeof document)return!1;const t=or[0],e={};for(const r of or){if(r[1]in document){for(const[n,o]of r.entries())e[t[n]]=o;return e}}return!1})(),ar={change:ir.fullscreenchange,error:ir.fullscreenerror},sr={request:(t=document.documentElement,e)=>new Promise((r,n)=>{const o=()=>{sr.off("change",o),r()};sr.on("change",o);const i=t[ir.requestFullscreen](e);i instanceof Promise&&i.then(o).catch(n)}),exit:()=>new Promise((t,e)=>{if(!sr.isFullscreen)return void t();const r=()=>{sr.off("change",r),t()};sr.on("change",r);const n=document[ir.exitFullscreen]();n instanceof Promise&&n.then(r).catch(e)}),toggle:(t,e)=>sr.isFullscreen?sr.exit():sr.request(t,e),onchange(t){sr.on("change",t)},onerror(t){sr.on("error",t)},on(t,e){const r=ar[t];r&&document.addEventListener(r,e,!1)},off(t,e){const r=ar[t];r&&document.removeEventListener(r,e,!1)},raw:ir};function cr(t,e,...r){const n=Reflect.get(t,e);if("function"!==typeof n)throw new TypeError(`Fullscreen method ${e} is not available`);return n.apply(t,r)}Object.defineProperties(sr,{isFullscreen:{get:()=>Boolean(document[ir.fullscreenElement])},element:{enumerable:!0,get:()=>document[ir.fullscreenElement]},isEnabled:{enumerable:!0,get:()=>Boolean(document[ir.fullscreenEnabled])}});const lr=new WeakMap;function dr(t){try{Promise.resolve(t()).catch(()=>{})}catch{}}function ur(t){const{document:e,elementProperty:r,changeEvent:n,target:o,exit:i}=t,a=function(t,e,r){let n=lr.get(t);if(!n){n=new WeakMap,lr.set(t,n);const o=n;t.addEventListener(r,()=>{const r=Reflect.get(t,e),n=r&&o.get(r);n&&(o.delete(r),dr(n))})}return n}(e,r,n);a.set(o,i),t.element===o&&(a.delete(o),dr(i))}function pr(t,e,r,n,o=()=>t.element!==t.target){const i=e.child();let a,s,c=!1,l=!1,d=!1,u=!1,p=!1;const f=new Promise((t,e)=>{a=t,s=e});function h(t=!1,e){if(!c){c=!0;try{i.dispose()}catch(r){t||(t=!0,e=r)}t?s(e):a()}}i.add(()=>{c||(c=!0,l=!0,a(),d&&!u&&r&&ur(t))});const m=()=>{d&&!u&&(r?t.element===t.target:o())&&h()};if(mt(i,t.document,t.changeEvent,m),mt(i,t.document,t.errorEvent,e=>{e.target!==t.target&&e.target!==t.document||(p=!0,d&&!u&&h(!0,new Error("Fullscreen request failed")))}),!i.closed)try{r&&function(t){lr.get(t.document)?.delete(t.target)}(t);const e=r?t.request():t.exit();u=Boolean(e&&"function"===typeof e.then),d=!0,l&&!u&&r&&ur(t),u?Promise.resolve(e).then(()=>{l?n():h()},t=>h(!0,t)).catch(()=>{}):p?h(!0,new Error("Fullscreen request failed")):m()}catch(g){h(!0,g)}return{promise:f,cancel:()=>i.dispose()}}function fr(t,e){const r=b(t).child(),{$player:n,$video:o}=t.template,i=()=>e.element===n||e.element===o;let a,s=i(),c=0,l=s,d=!1,u=!1,p=!1;function f(){if(i())try{Promise.resolve(e.exit()).catch(()=>{})}catch{}}return r.add(()=>{c+=1,l=!1,n.classList.remove("art-fullscreen"),f()}),mt(r,e.document,e.changeEvent,()=>{const r=i();if(r&&function(t){return lr.get(t.document)?.has(t.target)??!1}(e))return;if(r&&u)return void f();if(r===s||w(t))return;s=r;const o=c,a=()=>w(t)||i()!==r||o!==c&&l!==r;t.emit("fullscreen",r),a()||(r&&(t.state="fullscreen"),a()||(n.classList.toggle("art-fullscreen",r),t.emit("resize")))}),mt(r,e.document,e.errorEvent,r=>{(r.target===n||r.target===o||r.target===e.document&&(p||void 0!==a||i()))&&!w(t)&&t.emit("fullscreenError",r)}),{get:()=>!w(t)&&i(),set(n){if(w(t))return Promise.resolve();const o=++c;if(l=Boolean(n),l?u=!1:d&&(u=!0),a?.cancel(),a=void 0,d=!1,!l&&!i())return Promise.resolve();p=!0,d=l;const s=pr(e,r,l,()=>{!w(t)&&l||f()},()=>!i());p=!1,c===o?a=s:s.cancel();const h=s.promise.catch(e=>{throw w(t)||c!==o||(t.notice.show=e),e}).finally(()=>{c===o&&(a=void 0,d=!1)});return h.catch(()=>{}),h}}}const hr=new WeakSet;function mr(t,e=!1){return"string"===typeof t.webkitPresentationMode?"fullscreen"===t.webkitPresentationMode:"boolean"===typeof t.webkitDisplayingFullscreen?t.webkitDisplayingFullscreen:t.ownerDocument.fullscreenElement===t||e}function gr(t){hr.delete(t),t.removeEventListener("webkitbeginfullscreen",vr),t.removeEventListener("webkitpresentationmodechanged",vr)}function vr(t){if(hr.has(this)&&mr(this,"webkitbeginfullscreen"===t.type)){gr(this);try{this.webkitExitFullscreen?.()}catch{}}}function yr(t){hr.add(t),t.addEventListener("webkitbeginfullscreen",vr),t.addEventListener("webkitpresentationmodechanged",vr)}function br(t){const{$video:e}=t.template,r=b(t).child();let n=!1,o=mr(e),i=o,a=!1,s=0;const c=()=>mr(e,n);function l(r){if(w(t)||(l=e,hr.has(l)))return;var l;"boolean"===typeof r&&(n=r);const d=c();if(d&&(a=!1),d===o)return;o=d;const u=s,p=()=>w(t)||c()!==d||u!==s&&i!==d;t.emit("fullscreen",d),p()||(d&&(t.state="fullscreen"),p()||t.emit("resize"))}r.add(()=>{s++,i=!1,a&&yr(e),c()&&e.webkitExitFullscreen?.()}),mt(r,e,"webkitbeginfullscreen",()=>l(!0)),mt(r,e,"webkitendfullscreen",()=>l(!1)),mt(r,e,"webkitpresentationmodechanged",()=>l());const d=()=>l();return t.on("document:webkitfullscreenchange",d),r.add(()=>{t.off("document:webkitfullscreenchange",d)}),{get:()=>!w(t)&&c(),set(r){if(w(t))return;const n=++s;if(i=Boolean(r),r){if(gr(e),t.state="fullscreen",w(t)||n!==s)return;a=!0;try{e.webkitEnterFullscreen()}catch(o){throw n===s&&(a=!1),o}}else a&&(a=!1,yr(e)),c()&&e.webkitExitFullscreen()}}}function wr(t){return{node:t,parent:t.parentNode,next:t.nextSibling}}function xr({node:t,parent:e,next:r}){if(!e)return void t.parentNode?.removeChild(t);const n=r?.parentNode===e?r:null;t.parentNode===e&&t.nextSibling===n||e.insertBefore(t,n)}function kr(t,e,r){const n=Math.max(0,r.viewportWidth-r.width),o=Math.max(0,r.viewportHeight-r.height);return{left:Math.max(0,Math.min(t,n)),top:Math.max(0,Math.min(e,o))}}function $r(t){const{width:e,height:r}=t.getBoundingClientRect(),n=t.ownerDocument.defaultView;return{width:e,height:r,viewportWidth:n.innerWidth,viewportHeight:n.innerHeight}}function Er(t,e,r,n){const o=e.child();if(o.closed)return;const i=t.template.$mini;if(i){const t=i.style.display;return o.add(()=>{i.style.display=t}),{element:i,cancelDrag:()=>{},fresh:!1}}const a=t.template.$player.ownerDocument,s=a.createElement("div");s.className="art-mini-popup",o.add(()=>{s.remove()});try{const e=a.createElement("div");if(e.className="art-mini-close",e.append(t.icons.close),o.closed)return;const i=a.createElement("div");i.className="art-mini-state";const c=t.icons.play,l=t.icons.pause;if(o.closed)return;i.append(c,l),s.append(e,i),xt(o,e,()=>e.click(),r),xt(o,i,()=>(t.playing?l:c).click(),r);const d=t.i18n.get("Close");if(o.closed||w(t))return;e.setAttribute("aria-label",d);const u=t.i18n.get("Mini Player");if(o.closed||w(t))return;s.setAttribute("role","group"),s.setAttribute("aria-label",u),mt(o,s,"keydown",t=>{const e=t;r()&&wt(e)&&!e.defaultPrevented&&"Escape"===e.key&&(bt(e),n())}),mt(o,e,"click",n),mt(o,c,"click",()=>{G(t.play())}),mt(o,l,"click",()=>{t.pause()});const p=()=>{if(o.closed)return;const e=t.i18n.get(t.playing?"Pause":"Play");o.closed||w(t)||(i.setAttribute("aria-label",e),c.style.display=t.playing?"none":"flex",l.style.display=t.playing?"flex":"none")};p();for(const r of["video:playing","video:pause","video:timeupdate"])t.on(r,p),o.add(()=>{t.off(r,p)});const f=function(t,e,r,n){let o=!1,i=0,a=0;const s=()=>{o=!1,e.classList.remove("art-mini-dragging"),e.style.transform=""};mt(r,e,"mousedown",t=>{const e=t;0===e.button&&n()&&(o=!0,i=e.clientX,a=e.clientY)});const c=t=>{!r.closed&&o&&n()&&(e.classList.add("art-mini-dragging"),e.style.transform=`translate(${t.clientX-i}px, ${t.clientY-a}px)`)},l=()=>{if(r.closed||!o||!n())return;const i=e.getBoundingClientRect(),a=kr(i.left,i.top,$r(e));s(),e.style.left=`${a.left}px`,e.style.top=`${a.top}px`,t.storage.set("left",a.left),r.closed||t.storage.set("top",a.top)};return t.on("document:mousemove",c),r.add(()=>{t.off("document:mousemove",c)}),t.on("document:mouseup",l),r.add(()=>{t.off("document:mouseup",l)}),r.add(s),s}(t,s,o,r);if(o.closed)return;if(t.template.$mini=s,a.body.append(s),!o.closed)return{element:s,cancelDrag:f,fresh:!0,focus:()=>e.focus({preventScroll:!0})}}catch(c){throw o.dispose(),t.template.$mini===s&&delete t.template.$mini,c}}function Ar(t){const{$player:e,$video:r}=t.template,n=b(t).child();let o,i,a=0,s=!1,c=!1;const l=()=>!w(t)&&e.classList.contains("art-mini"),d=function(t){const e=t.template.$player;let r;return{entering(){const n=e.ownerDocument,o=n.activeElement,i=o&&e.contains(o);t.template.$mini?.contains(o)||(r=i?jt(o):void 0);const a=i&&e.classList.contains("art-keyboard-focus");return e=>{!a||w(t)||n.activeElement!==o&&n.activeElement!==n.body||e?.()}},leaving(n){const o=e.ownerDocument,i=n?.contains(o.activeElement);return()=>{if(!i||w(t)||o.activeElement!==o.body&&!n?.contains(o.activeElement))return;const e=r&&o.defaultView?.getComputedStyle(r).visibility;r?.isConnected&&r.getClientRects().length&&"hidden"!==e&&"collapse"!==e&&"true"!==r.getAttribute("aria-disabled")&&!r.matches(":disabled")&&!r.closest("[inert]")?r.focus({preventScroll:!0}):At(t)}}}}(t);function u(){if(i){const e=i,r=a;i=void 0;try{xr(e)}catch(t){throw r!==a||i||(i=e),t}}}function p(){if(w(t))return;const r=++a;c=!1;const n=d.leaving(t.template.$mini);u(),w(t)||r!==a||(o?.cancelDrag(),e.classList.remove("art-mini"),t.template.$mini&&(t.template.$mini.style.display="none",n(),w(t)||r!==a||t.emit("mini",!1)))}function f(){if(w(t))return;const h=++a;if(s)return void(c=!0);const m=d.entering();if(t.state="mini",!w(t)&&h===a){i??(i=wr(r)),e.classList.add("art-mini");try{if(!o){s=!0;try{o=Er(t,n,l,p)}finally{s=!1}}if(c)return c=!1,void f();if(!o||w(t))return;if(h!==a)return void(l()||(o.element.style.display="none"));if(o.fresh?o.element.prepend(r):o.element.append(r),w(t)||h!==a)return;o.element.style.display=o.fresh?"":"flex",o.fresh=!1;const e=t.storage.get("top"),i=function(t,e,r){return"number"===typeof t&&Number.isFinite(t)&&"number"===typeof e&&Number.isFinite(e)&&t>=0&&e>=0&&t+r.width<=r.viewportWidth&&e+r.height<=r.viewportHeight?{left:t,top:e,reset:!1}:{...kr(r.viewportWidth-r.width-50,r.viewportHeight-r.height-50,r),reset:!0}}(t.storage.get("left"),e,$r(o.element));if(w(t)||h!==a)return;if(o.element.style.left=`${i.left}px`,o.element.style.top=`${i.top}px`,i.reset){if(t.storage.set("top",i.top),w(t)||h!==a)return;t.storage.set("left",i.left)}w(t)||h!==a||m(o.focus),w(t)||h!==a||t.emit("mini",!0)}catch(g){const r=c;throw c=!1,w(t)||h!==a&&!r||(u(),e.classList.remove("art-mini"),o&&(o.element.style.display="none")),g}}}return n.add(()=>{a++;try{u()}finally{o?.cancelDrag(),e.classList.remove("art-mini")}}),{get:l,set(t){t?f():p()}}}const Cr=new WeakSet,Sr=t=>"picture-in-picture"===t.webkitPresentationMode;function Tr(t){Cr.delete(t),t.removeEventListener("webkitpresentationmodechanged",Lr),t.removeEventListener("enterpictureinpicture",Lr)}function Lr(){if(Cr.has(this)&&Sr(this)){Tr(this);try{this.webkitSetPresentationMode?.("inline")}catch{}}}function Pr(t){Cr.add(t),t.addEventListener("webkitpresentationmodechanged",Lr),t.addEventListener("enterpictureinpicture",Lr)}function Mr(t,e,r,n,o=!0){let i,a=!1;const s=e=>{t.closed||a||(o&&(a=!0,i()),n(e))};return e[o?"once":"on"](r,s),i=t.add(()=>{e.off(r,s)}),s}function zr(t,e,r){return new Promise((n,o)=>{if(w(t)||e===t.url)return void n();const i=function(t){const e=Gt.get(t);return e?.active()?e.resumePlaying:void 0}(t)??t.playing,a=ee(t);a.resumePlaying=i;const s=a.scope.child();let c=!1;const l=(t=!1,e)=>{c||(c=!0,a.resumePlaying=void 0,a.onError=void 0,a.onAssigned=void 0,s.dispose(),t?o(e):n(),t&&a.scope.dispose())};s.add(()=>{l()});const d=()=>!c&&a.active(),u=t=>l(!0,t);a.onError=u;try{const{aspectRatio:n,playbackRate:o}=t;a.internalPause=!0;try{t.pause()}finally{a.internalPause=!1}if(!d())return;const i=s.child();let c=!1,p=!1,f=!1;const h=pe(t,r,d),m=async()=>{const e=a.pauseRevision;if(t.aspectRatio=n,d()){if(a.resumePlaying)try{await t.play()}catch{}d()&&(a.pauseRevision===e&&(t.notice.show=""),l())}},g=()=>{if(d()&&!p&&c)try{if(t.template?.$video?.seeking)return;if(!d())return;if(f||(f=!0,t.playbackRate=o),!h.ready()||!d()||p)return;p=!0,i.dispose(),m().catch(u)}catch(e){u(e)}},v={"video:error":u,"video:loadedmetadata":()=>{if(d())try{h.restore()}catch(t){u(t)}},"video:canplay":()=>{c=!0,g()},"video:seeked":g,seek:h.manual},y=s.child(),b=[],w=Object.keys(v);for(const e of w)Mr(y,t,e,t=>{a.acceptingEvents&&b.push([e,t])},!1);if(ne(t,a,e),!d())return;if(t.notice.show="",!d())return;const x=()=>{if(y.dispose(),!e)return void l();const r={};for(const e of w)r[e]=Mr(i,t,e,v[e],"video:seeked"!==e);for(const[t,e]of b){if(!d()||i.closed)break;r[t](e)}b.length=0};a.assigned?x():a.onAssigned=x}catch(p){u(p)}})}function Rr(t,e){const{number:r,column:n,width:o,height:i,scale:a}=t,{imageWidth:s,videoWidth:c,videoHeight:l,progressWidth:d,position:u}=e,p=Number(n),f=Number(o)*Number(a)||s/p,h=Number(i)*Number(a)||f/(c/l),m=Math.floor(u/(d/Number(r)));return{height:`${h}px`,width:`${f}px`,backgroundPosition:`-${m%p*f}px -${Math.floor(m/p)*h}px`,left:u<=f/2?0:u>d-f/2?d-f+"px":u-f/2+"px"}}function Or(t){const{option:e,template:{$video:r}}=t;it(t,"url",{get:()=>r.src,async set(n){if(w(t))return;const o=function(t){const e=Kt.get(t);return Kt.delete(t),e||ee(t)}(t);o.acceptingEvents=!1;try{if(!n)return void(await vt(o.scope)&&o.active()&&(t.loading.show=!0));const i=t.url,a=e.type||K(n),s=e.customType[a];if(a&&s){if(!(await vt(o.scope))||!o.active())return;t.loading.show=!0}if(!o.active())return;const c=o.scope.child();let l=!1,d=!1;Mr(c,t,"video:canplay",()=>{l=!d}),Mr(c,t,"video:error",()=>{d=!0});try{if(o.acceptingEvents=!0,a&&s){const e=s.call(t,r,n,t);Promise.resolve(e).catch(t=>oe(o,t))}else{if(!o.active())return;r.src=n}}finally{c.dispose()}if(!o.active())return;if(i!==t.url&&(t.option.url=n,o.active()&&t.isReady&&i)){const e=()=>{o.active()&&t.emit("restart",n)};l?e():d||Mr(o.scope,t,"video:canplay",e)}}catch(i){oe(o,i)}finally{re(o)}}})}const Dr=[function(t){const{template:{$video:e}}=t;it(t,"attr",{value(t,r){const n=e;if(void 0===r)return n[t];n[t]=r}})},function(t){const{i18n:e,notice:r,option:n,constructor:{instances:o},template:{$video:i}}=t;it(t,"play",{async value(){Jt(t,!0);const a=function(t){const e=te(t),r=Gt.get(t),n=r?.pauseRevision;return()=>e()&&r?.pauseRevision===n}(t),s=await i.play();if(!a())return s;const c=e.get("Play");if(!a())return s;if(r.show=c,!a())return s;if(t.emit("play"),n.mutex)for(let e=0;et.playing?t.pause():t.play()})},function(t){const{notice:e}=t;it(t,"seek",{set(r){t.currentTime=r,t.duration&&(e.show=`${tt(t.currentTime)} / ${tt(t.duration)}`),t.emit("seek",t.currentTime,r)}});const r=t;it(t,"forward",{set(e){r.seek=t.currentTime+e}}),it(t,"backward",{set(e){r.seek=t.currentTime-e}})},function(t){const{template:{$video:e},i18n:r,notice:n,storage:o}=t;it(t,"volume",{get:()=>e.volume||0,set:t=>{e.volume=J(t,0,1),n.show=`${r.get("Volume")}: ${Number.parseInt(String(100*e.volume),10)}`,0!==e.volume&&o.set("volume",e.volume)}}),it(t,"muted",{get:()=>e.muted,set:r=>{e.muted=r,t.emit("muted",r)}})},function(t){const{$video:e}=t.template;it(t,"currentTime",{get:()=>e.currentTime||0,set:r=>{const n=Number.parseFloat(r);Number.isNaN(n)||(!function(t){de.set(t,ue(t)+1)}(t),e.currentTime=J(n,0,t.duration))}})},function(t){it(t,"duration",{get:()=>{const{duration:e}=t.template.$video;return e===1/0?0:e||0}})},function(t){const e=e=>zr(t,e,0);it(t,"switchQuality",{value:e=>zr(t,e,t.currentTime)}),it(t,"switchUrl",{value:e}),it(t,"switch",{set:e})},function(t){const{template:{$video:e},i18n:r,notice:n}=t,o=t;it(t,"playbackRate",{get:()=>e.playbackRate,set(t){if(t){if(t===e.playbackRate)return;e.playbackRate=t,n.show=`${r.get("Rate")}: ${1===t?r.get("Normal"):`${t}x`}`}else o.playbackRate=1}})},function(t){const{i18n:e,notice:r,template:{$video:n,$player:o}}=t;it(t,"aspectRatio",{get:()=>o.dataset.aspectRatio||"default",set(i){if(!w(t)){if(i||(i="default"),"default"===i)n.style.width="",n.style.height="",n.style.margin="",delete o.dataset.aspectRatio;else{const e=i.split(":").map(Number),r=tr({width:o.clientWidth,height:o.clientHeight},e[0]/e[1]);if(w(t))return;"width"===r?.axis?(n.style.width=`${r.width}px`,n.style.height="100%",n.style.margin="0 auto"):r&&(n.style.width="100%",n.style.height=`${r.height}px`,n.style.margin="auto 0"),o.dataset.aspectRatio=i}r.show=`${e.get("Aspect Ratio")}: ${"default"===i?e.get("Default"):i}`,w(t)||t.emit("aspectRatio",i)}}})},function(t){const{notice:e,template:{$video:r}}=t,n=document.createElement("canvas");function o(o){const i=te(t);return new Promise((a,s)=>{const c=r=>{try{!w(t)&&i()&&(e.show=r)}catch(n){return void s(n)}s(r)};try{!function(t,e){t.width=e.videoWidth,t.height=e.videoHeight;const r=t.getContext("2d");if(!r)throw new TypeError("Canvas 2D context is unavailable");r.drawImage(e,0,0)}(n,r),o?function(t,e,r){t.toBlob(t=>{try{if(!t)throw new Error("Unable to encode screenshot blob");e(URL.createObjectURL(t))}catch(n){r(n)}})}(n,a,c):a(n.toDataURL("image/png"))}catch(l){c(l)}})}it(t,"getDataURL",{value:()=>o(!1)}),it(t,"getBlobUrl",{value:()=>o(!0)}),it(t,"screenshot",{value:async e=>{const n=te(t),o=await t.getDataURL();if(!w(t)&&n()){const i=e||`artplayer_${tt(r.currentTime)}`;!w(t)&&n()&&Z(o,`${i}.png`),!w(t)&&n()&&t.emit("screenshot",o)}return o}})},function(t){const{i18n:e,notice:r,template:{$video:n,$player:o}}=t,i=()=>{if(w(t))return;const i=function(t){const e=sr.raw,r=t.ownerDocument;if(e&&Reflect.get(r,e.fullscreenEnabled))return{document:r,target:t,get element(){return Reflect.get(r,e.fullscreenElement)},elementProperty:e.fullscreenElement,changeEvent:e.fullscreenchange,errorEvent:e.fullscreenerror,request:()=>cr(t,e.requestFullscreen,void 0),exit:()=>cr(r,e.exitFullscreen)}}(o);i?it(t,"fullscreen",fr(t,i)):n.webkitSupportsFullscreen&&"function"===typeof n.webkitEnterFullscreen&&"function"===typeof n.webkitExitFullscreen?it(t,"fullscreen",br(t)):it(t,"fullscreen",{get:()=>!1,set(){w(t)||(r.show=e.get("Fullscreen Not Supported"))}}),it(t,"fullscreen",ct(t,"fullscreen"))};t.once("video:loadedmetadata",i),b(t).add(()=>{t.off("video:loadedmetadata",i)})},function(t){const e=function(t){const{$player:e}=t.template;let r,n=0;function o(t,r){return null===t.style?e.removeAttribute("style"):e.setAttribute("style",t.style),!!r()&&(e.classList.remove("art-fullscreen-web"),!!r()&&(xr(t.placement),r()))}return b(t).add(()=>{n+=1;const t=r;if(r=void 0,t)try{o(t,()=>!0)}catch(i){try{e.parentNode!==t.placement.parent&&e.parentNode?.removeChild(e)}catch(a){throw new h([i,a])}throw i}}),i=>{if(w(t))return;const a=++n,s=()=>a===n&&!w(t),c=function(t){const e=t.ownerDocument?.activeElement,r=e&&t.contains(e);return()=>{r&&e.isConnected&&t.contains(e)&&e.ownerDocument.activeElement===e.ownerDocument.body&&e.focus({preventScroll:!0})}}(e);if(i){r||(r={placement:wr(e),style:e.getAttribute("style")});const n=r;try{const r=e.ownerDocument.body;if(t.constructor.FULLSCREEN_WEB_IN_BODY&&e.parentNode!==r&&r.appendChild(e),!s())return;if(t.state="fullscreenWeb",!s())return;e.style.width="100%",e.style.height="100%",e.classList.add("art-fullscreen-web")}catch(l){throw s()&&o(n,s)&&(r=void 0,c()),l}if(!s())return;if(c(),!s())return;t.emit("fullscreenWeb",!0)}else{if(r){if(!o(r,s))return;r=void 0}else e.classList.remove("art-fullscreen-web");if(!s())return;if(c(),!s())return;t.emit("fullscreenWeb",!1)}s()&&t.emit("resize")}}(t);it(t,"fullscreenWeb",{get:()=>t.template.$player.classList.contains("art-fullscreen-web"),set:e})},function(t){const{i18n:e,notice:r,template:{$video:n}}=t,o=n.ownerDocument;o.pictureInPictureEnabled&&"function"===typeof n.requestPictureInPicture&&"function"===typeof o.exitPictureInPicture?it(t,"pip",function(t){const{$video:e}=t.template,r=e.ownerDocument,n=b(t).child(),o=()=>r.pictureInPictureElement===e;let i=o(),a=i,s=!1,c=!1,l=0;function d(){if(o())try{r.exitPictureInPicture().catch(()=>{})}catch{}}function u(e,r,n){e.then(()=>{!r||!w(t)&&a||d()},e=>{w(t)||l!==n||(t.notice.show=e)}).finally(()=>{l===n&&(s=!1)}).catch(()=>{})}return e.disablePictureInPicture=!1,n.add(()=>{l++,a=!1,d()}),mt(n,e,"enterpictureinpicture",()=>{if(c)return void d();if(!o()||i)return;const e=l;t.state="pip",!w(t)&&e===l&&o()&&(i=!0,t.emit("pip",!0))}),mt(n,e,"leavepictureinpicture",()=>{i&&!o()&&(i=!1,t.emit("pip",!1))}),{get:()=>!w(t)&&o()?e:null,set(n){if(w(t))return;const i=++l;if(a=Boolean(n),a?c=!1:s&&(c=!0),s=!1,a){if(t.state="pip",w(t)||l!==i)return;s=!0;try{u(e.requestPictureInPicture(),!0,i)}catch(d){throw l===i&&(s=!1),d}}else o()&&u(r.exitPictureInPicture(),!1,i)}}}(t)):"function"===typeof n.webkitSupportsPresentationMode&&"function"===typeof n.webkitSetPresentationMode?it(t,"pip",function(t){const{$video:e}=t.template,r=b(t).child();let n=!1,o=!1,i=0,a=0;function s(r=!1){if(w(t)||Cr.has(e))return;const s=Sr(e);if(s&&(o=!1),s===n&&!r)return;const c=i;s&&(t.state="pip"),w(t)||i!==c||Sr(e)!==s||(n=s,a++,t.emit("pip",s))}e.webkitSetPresentationMode("inline"),r.add(()=>{i++,o&&Pr(e),Sr(e)&&e.webkitSetPresentationMode("inline")});for(const c of["webkitpresentationmodechanged","enterpictureinpicture","leavepictureinpicture"])mt(r,e,c,()=>s());return{get:()=>!w(t)&&Sr(e),set(r){if(w(t))return;const n=++i,c=a;if(r){if(!1===e.webkitSupportsPresentationMode?.("picture-in-picture"))return void(t.notice.show=t.i18n.get("PIP Not Supported"));if(Tr(e),t.state="pip",w(t)||i!==n)return;o=!0;try{e.webkitSetPresentationMode("picture-in-picture")}catch(l){throw n===i&&(o=!1),l}}else o&&(o=!1,Pr(e)),Sr(e)&&e.webkitSetPresentationMode("inline");w(t)||n!==i||c!==a||Sr(e)!==Boolean(r)||s(!0)}}}(t)):it(t,"pip",{get:()=>!1,set(){w(t)||(r.show=e.get("PIP Not Supported"))}})},function(t){const{$video:e}=t.template,r=t;it(t,"loaded",{get:()=>r.loadedTime/e.duration}),it(t,"loadedTime",{get:()=>e.buffered.length?e.buffered.end(e.buffered.length-1):0})},function(t){it(t,"played",{get:()=>t.currentTime/t.duration})},function(t){const{$video:e}=t.template;it(t,"playing",{get:()=>"boolean"===typeof e.playing?e.playing:!!(e.currentTime>0&&!e.paused&&!e.ended&&e.readyState>2)})},function(t){const{$container:e,$player:r,$video:n}=t.template;it(t,"autoSize",{value(){if(w(t))return;const o={width:n.videoWidth,height:n.videoHeight};if(!Qe(o))return;const i=M(e),a=tr(i,o.width/o.height);a&&!w(t)&&("width"===a.axis?(r.style.width=a.width/i.width*100+"%",r.style.height="100%"):(r.style.width="100%",r.style.height=a.height/i.height*100+"%"),t.emit("autoSize",{width:t.width,height:t.height}))}})},function(t){const e=t;it(t,"rect",{get:()=>M(t.template.$player)});const r=["bottom","height","left","right","top","width"];for(let n=0;ne.rect[o]})}it(t,"x",{get:()=>e.left+window.pageXOffset}),it(t,"y",{get:()=>e.top+window.pageYOffset})},function(t){const{template:{$player:e},i18n:r,notice:n}=t;it(t,"flip",{get:()=>e.dataset.flip||"normal",set(o){w(t)||(o||(o="normal"),"normal"===o?delete e.dataset.flip:e.dataset.flip=o,n.show=`${r.get("Video Flip")}: ${r.get(Q(o))}`,w(t)||t.emit("flip",o))}})},function(t){it(t,"mini",Ar(t))},function(t){const{template:{$poster:e}}=t;it(t,"poster",{get:()=>{try{return e.style.backgroundImage.match(/"(.*)"/)[1]}catch{return""}},set(t){H(e,"backgroundImage",`url(${t})`)}})},function(t){const{$container:e,$video:r}=t.template;it(t,"autoHeight",{value(){if(w(t))return;const n=function(t,e){if(!Number.isFinite(t)||t<=0||!Qe(e))return;const r=e.height*(t/e.width);return Number.isFinite(r)&&r>0?r:void 0}(e.clientWidth,{width:r.videoWidth,height:r.videoHeight});void 0===n||w(t)||(e.style.height=`${n}px`,t.emit("autoHeight",n))}})},function(t){const{$player:e}=t.template;it(t,"cssVar",{value:(t,r)=>r?e.style.setProperty(t,r):getComputedStyle(e).getPropertyValue(t)})},function(t){it(t,"theme",{get:()=>t.cssVar("--art-theme"),set(e){t.cssVar("--art-theme",e)}})},function(t){it(t,"type",{get:()=>t.option.type,set(e){t.option.type=e}})},function(t){const e=["mini","pip","fullscreen","fullscreenWeb"];it(t,"state",{get:()=>e.find(e=>t[e])||"standard",set(r){for(let n=0;nn.$track?.offset||0,set(o){const{cues:i}=t.subtitle;if(!n.$track||0===i.length)return;const a=J(o,-10,10);n.$track.offset=a;for(let e=0;et.startTime<=n&&ni[e]===t)){for(const e of r)t.removeCue(e);for(const e of r)t.addCue(e)}}(n.$track.track,n.$video,i),t.subtitle.update(),e.show=`${r.get("Subtitle Offset")}: ${o}s`,t.emit("subtitleOffset",o)}})},function(t){if(w(t))return;const{i18n:e,notice:r,proxy:n,template:{$video:o}}=t;let i=!0;const a=window.WebKitPlaybackTargetAvailabilityEvent;if(w(t))return;const s=a&&o.webkitShowPlaybackTargetPicker;w(t)||(s?n(o,"webkitplaybacktargetavailabilitychanged",e=>{if(!w(t))switch(e.availability){case"available":i=!0;break;case"not-available":i=!1}}):i=!1,w(t)||it(t,"airplay",{value(){if(!w(t))if(i){const e=o.webkitShowPlaybackTargetPicker;if(w(t))return;Reflect.apply(e,o,[]),w(t)||t.emit("airplay")}else{const n=e.get("AirPlay Not Available");w(t)||(r.show=n)}}}))},function(t){it(t,"quality",{set(e){const{controls:r,notice:n,i18n:o}=t,i=e.find(t=>t.default)||e[0];r.update({name:"quality",position:"right",index:10,style:{marginRight:"10px"},html:i?.html||"",selector:e,async onSelect(e,r,i){const a=function(t){return t&&ge.get(t)||(()=>!0)}(i);if(await t.switchQuality(e.url),!w(t)&&a()){const r=`${o.get("Switch Video")}: ${e.html}`;!w(t)&&a()&&(n.show=r)}return e.html}})}})},function(t){const{option:e,template:{$progress:r,$video:n}}=t;let o,i,a,s=b(t).child(),c=!1;function l(){const e=s;s=b(t).child(),o=void 0,c=!1,a=void 0,e.dispose()}function d(){const i=a,c=s;if(!i||!o)return;const l=()=>!w(t)&&!c.closed&&s===c&&a===i&&i.sourceActive()&&t.controls?.thumbnails===i.element;if(!l())return;const d=r.clientWidth*i.percentage;if(!(d>0&&d{const f=t.controls?.thumbnails,{url:h,scale:m}=e.thumbnails;if(!w(t)&&f&&h&&("hover"===r||"played"===r&&p&&u)){if(i!==f){const t=E(f);if(t.closed)return;i=f,t.add(()=>{i===f&&(i=void 0,l())})}if(a={percentage:n,element:f,sourceActive:te(t)},o)d();else if(!c){const t=s;c=!0,function(t,e,r){return q(t,e,r)}(h,m,t).then(e=>{s!==t||t.closed||(c=!1,o=e,d())}).catch(e=>{s!==t||t.closed||(c=!1,console.warn("ArtPlayer thumbnail load failed:",e))})}}}),it(t,"thumbnails",{get:()=>t.option.thumbnails,set:e=>{w(t)||!e.url||t.option.isLive||w(t)||(t.option.thumbnails=e,l())}})},function(t){!function(t){const{proxy:e,template:{$video:r}}=t;for(let n=0;n{w(t)||t.emit(`video:${e.type}`,e)})}(t);const e=nr(t);!function(t,e){er(t,"video:canplay",()=>{e.reset(),rr(t,[["loading",!1]])}),er(t,"video:canplay",()=>{rr(t,[["loading",!1],["controls",!0],["mask",!0]]),w(t)||(t.isReady=!0,t.emit("ready"))},!0)}(t,e),function(t){const{option:e}=t;er(t,"video:ended",()=>{if(e.loop){const e=te(t);if(t.seek=0,w(t)||!e())return;G(t.play()),e()&&rr(t,[["controls",!1],["mask",!1]],e)}else rr(t,[["controls",!0],["mask",!0]])})}(t),er(t,"video:error",e.schedule),function(t,e){const{template:{$poster:r}}=t;er(t,"video:loadedmetadata",()=>{t.emit("resize"),u&&rr(t,[["loading",!1],["controls",!0],["mask",!0]])}),er(t,"video:loadstart",()=>{e.loadStart(),rr(t,[["loading",!0],["mask",!1],["controls",!0]])}),er(t,"video:pause",()=>{rr(t,[["controls",!0],["mask",!0]])}),er(t,"video:play",()=>{rr(t,[["mask",!1]]),w(t)||H(r,"display","none")}),er(t,"video:playing",()=>rr(t,[["mask",!1]])),er(t,"video:progress",()=>{t.playing&&rr(t,[["loading",!1]])}),er(t,"video:seeked",()=>rr(t,[["loading",!1],["mask",!0]])),er(t,"video:seeking",()=>rr(t,[["loading",!0],["mask",!1]])),er(t,"video:timeupdate",()=>rr(t,[["mask",!1]])),er(t,"video:waiting",()=>rr(t,[["loading",!0],["mask",!1]]))}(t,e)},function(t){if(w(t))return;const{option:e,storage:r,template:{$video:n,$poster:o}}=t;for(const s in e.moreVideoAttr){if(w(t))return;const r=e.moreVideoAttr[s];if(w(t))return;t.attr(s,r)}if(w(t))return;if(e.muted){const r=e.muted;if(w(t))return;t.muted=r}if(w(t))return;if(e.volume){const r=J(e.volume,0,1);if(w(t))return;n.volume=r}if(w(t))return;const i=r.get("volume");if(w(t))return;if("number"===typeof i&&(n.volume=J(i,0,1)),w(t))return;if(e.poster){const r=`url(${e.poster})`;if(w(t))return;H(o,"backgroundImage",r)}if(w(t))return;if(e.autoplay){const r=e.autoplay;if(w(t))return;n.autoplay=r}if(w(t))return;if(e.playsInline){if(w(t))return;if(n.playsInline=!0,w(t))return;n["webkit-playsinline"]=!0}if(w(t))return;if(e.theme){const r=e.cssVar,n=e.theme;if(w(t))return;r["--art-theme"]=n}for(const s in e.cssVar){if(w(t))return;const r=e.cssVar[s];if(w(t))return;t.cssVar(s,r)}if(w(t))return;const a=e.url;w(t)||(t.url=a)}];class Ir{constructor(t){if(!w(t)){Or(t);for(const e of Dr){if(w(t))return;e(t)}}}}const Nr=new WeakMap,_r="art-auto-orientation-fullscreen";function Wr(t){if(Nr.get(t.orientation)===t)try{t.orientation.unlock()}catch{}}const Fr="art-auto-orientation",Vr=["width","height","transform-origin","transform"];function Yr(t){const{$player:e,$video:r}=t.template,n=()=>{const t={width:r.videoWidth,height:r.videoHeight},n=e.ownerDocument.documentElement,o={width:n.clientWidth,height:n.clientHeight};return Qe(t)&&Qe(o)&&(t.width>t.height&&o.widtho.height)},o=function(t,e){const{$player:r}=t.template,n=b(t);let o,i=()=>{};function a(){i(),i=()=>{};const e=o;if(o=void 0,e&&t.fullscreenWeb)for(const{name:t,value:o,priority:i}of e)r.style.setProperty(t,o,i);const n=r.classList.contains(Fr);r.classList.remove(Fr),n&&(t.isRotate=!1,w(t)||t.emit("resize"))}function s(n){if(!t.fullscreenWeb||!e())return;const i=z();if(w(t)||!t.fullscreenWeb)return;const a=r.ownerDocument.documentElement;o??(o=Vr.map(t=>({name:t,value:r.style.getPropertyValue(t),priority:r.style.getPropertyPriority(t)}))),r.style.width=a.clientHeight-i.top-i.bottom+"px",r.style.height=a.clientWidth-i.left-i.right+"px",r.style.transformOrigin="0 0",r.style.transform=`rotate(90deg) translate(${i.top}px, -${a.clientWidth-i.right}px)`,r.classList.add(Fr),t.isRotate=!0,n&&t.emit("resize")}return n.add(a),r=>{w(t)||(r?o?s(!1):e()&&(i(),i=gt(n,()=>{o||s(!0)},Number(t.constructor.AUTO_ORIENTATION_TIME??0))):a())}}(t,n),i=function(t,e){const{$player:r}=t.template;let n;function o(){const t=n;n=void 0,r.classList.remove(_r),t&&(t.cancelled=!0,Wr(t),t.settled&&Nr.get(t.orientation)===t&&Nr.delete(t.orientation))}return b(t).add(o),i=>{if(w(t))return;if(!i)return void o();if(n&&!n.cancelled&&Nr.get(n.orientation)===n)return;const a=r.ownerDocument.defaultView?.screen?.orientation;if("function"!==typeof a?.lock||"function"!==typeof a.unlock||!e())return;const s={orientation:a,cancelled:!1,settled:!1};n=s,Nr.set(a,s);const c=()=>!w(t)&&!s.cancelled&&n===s&&Nr.get(a)===s,l=e=>{s.settled=!0;const o=c();Nr.get(a)===s&&Nr.delete(a),n===s&&(n=void 0),o&&(r.classList.remove(_r),t.notice.show=e)};try{const t=a.lock(a.type.startsWith("portrait")?"landscape":"portrait");Promise.resolve(t).then(()=>{s.settled=!0,c()?r.classList.add(_r):(Wr(s),Nr.get(a)===s&&Nr.delete(a))}).catch(l)}catch(d){l(d)}}}(t,n);return t.on("fullscreenWeb",o),t.on("fullscreen",i),b(t).add(()=>{t.off("fullscreenWeb",o),t.off("fullscreen",i)}),{name:"autoOrientation",get state(){return e.classList.contains("art-auto-orientation")}}}function Br(t){return t.get("times")||{}}function Hr(t){const{storage:e}=t,r=function(t){const{i18n:e,icons:r,storage:n,constructor:o,template:{$poster:i}}=t,a=t.layers.add({name:"auto-playback",html:'\n
\n
\n
\n '});if(!a||w(t))return()=>{};const s=$t(".art-auto-playback-last",a),c=$t(".art-auto-playback-jump",a),l=$t(".art-auto-playback-close",a);kt(l,r.close);const d=E(a);let u,p=0;const f=()=>{const r=++p;if(u?.dispose(),d.closed||w(t)||p!==r)return;const f=d.child();u=f;const h=()=>u===f&&!f.closed&&!w(t);f.add(()=>{u===f&&(u=void 0,H(a,"display","none"))});const m=Qt(t).add(()=>{f.dispose()});f.add(()=>{m()});const g=Br(n)[t.option.id||t.option.url];if(!h())return;if(H(a,"display","none"),!h()||!g||!(g>=o.AUTO_PLAYBACK_MIN))return;if(!h())return;if(H(a,"display","flex"),!h())return;const v=`${e.get("Last Seen")} ${tt(g)}`;if(!h())return;if(s.textContent=v,!h())return;const y=e.get("Jump Play");if(!h())return;if(c.textContent=y,!h())return;const b=(e,r)=>{const n=t.events.proxy(e,"click",()=>{h()&&r()});f.add(()=>{t.events.remove(n)})};if(b(l,()=>{H(a,"display","none")}),!h())return;if(b(c,()=>{t.seek=g,h()&&(G(t.play()),h()&&(H(i,"display","none"),h()&&H(a,"display","none")))}),!h())return;let x=()=>{},k=!1;const $=()=>{!k&&h()&&(k=!0,x(),gt(f,()=>{h()&&H(a,"display","none")},o.AUTO_PLAYBACK_TIMEOUT))};t.on("video:timeupdate",$),x=f.add(()=>{t.off("video:timeupdate",$)}),k&&x()};return()=>{C(t,a,"ready",f),C(t,a,"restart",f)}}(t);return function(t){const{storage:e,constructor:r}=t;Pe(t)("video:timeupdate",()=>{if(!t.playing)return;const n=Br(e),o=Object.keys(n),i=r.AUTO_PLAYBACK_MAX,a=t.option.id||t.option.url,s=t.currentTime;w(t)||(o.length>i&&delete n[o[0]],n[a]=s,w(t)||e.set("times",n))})}(t),r(),{name:"auto-playback",get times(){return Br(e)},clear:()=>e.del("times"),delete(t){const r=Br(e);return delete r[t],e.set("times",r),r}}}function jr(t){let e,r=0;return{start:n=>{const o=++r;if(e?.scope.dispose(),o!==r||w(t)||1!==n.touches.length||!t.playing||t.isLock)return;const i={scope:Qt(t).child(),active:!1,previousRate:1};e=i,i.scope.add(()=>{if(e===i&&(e=void 0,i.active))try{t.playbackRate=i.previousRate}finally{e?.active||D(t.template.$player,"art-fast-forward")}}),gt(i.scope,()=>{if(e!==i||w(t)||!t.playing||t.isLock)i.scope.dispose();else try{if(i.previousRate=t.playbackRate,e!==i||i.scope.closed)return;i.active=!0;const r=t.constructor.FAST_FORWARD_VALUE;if(e!==i||i.scope.closed||w(t))return;t.playbackRate=r,e!==i||i.scope.closed||w(t)||O(t.template.$player,"art-fast-forward")}catch(r){try{i.scope.dispose()}catch(n){console.warn("Failed to restore fast-forward playback rate:",n)}throw r}},t.constructor.FAST_FORWARD_TIME)},stop:()=>{r++,e?.scope.dispose()}}}function qr(t){const{proxy:e,template:{$player:r,$video:n}}=t,o=jr(t),i=Pe(t);return e(n,"touchstart",t=>o.start(t)),e(n,"touchcancel",o.stop),i("document:touchmove",o.stop),i("document:touchend",o.stop),i("document:touchcancel",o.stop),i("video:pause",o.stop),i("destroy",o.stop),i("lock",t=>{t&&o.stop()}),{name:"fastForward",get state(){return I(r,"art-fast-forward")}}}function Ur(t,e,r,n){let o;const i=()=>!r.closed&&!w(t),a=t.i18n.get("Lock");if(!i())return()=>{};e.setAttribute("aria-label",a),xt(r,e),mt(r,e,"keydown",t=>{const r=t;i()&&n()&&wt(r)&&!r.defaultPrevented&&"Escape"===r.key&&(bt(r),e.click())});const s=n=>{if(i())if(e.setAttribute("aria-pressed",String(n)),n&&!o){const{$player:n,$bottom:a}=t.template,s=a.contains(a.ownerDocument.activeElement)&&n.classList.contains("art-keyboard-focus");o=r.child(),function(t,e){const r=new Map,n=e.hasAttribute("inert"),o=e.getAttribute("aria-hidden"),i=(t,e)=>{"-1"===t.getAttribute("tabindex")&&(null===e?t.removeAttribute("tabindex"):t.setAttribute("tabindex",e))};if(t.add(()=>{for(const[t,e]of r)i(t,e);r.clear(),n||""!==e.getAttribute("inert")||e.removeAttribute("inert"),"true"===e.getAttribute("aria-hidden")&&(null===o?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden",o))}),t.closed)return;n||e.setAttribute("inert",""),e.setAttribute("aria-hidden","true");const a=()=>{if(!t.closed){for(const[t,n]of r)e.contains(t)||(i(t,n),r.delete(t));for(const t of e.querySelectorAll("[tabindex],button,input,select,textarea,a[href],[contenteditable]"))r.has(t)||(r.set(t,t.getAttribute("tabindex")),t.setAttribute("tabindex","-1"))}};if(a(),"undefined"!==typeof MutationObserver){const r=new MutationObserver(a);r.observe(e,{childList:!0,subtree:!0}),t.add(()=>{r.disconnect()})}}(o,a),i()&&s&&e.focus({preventScroll:!0})}else if(!n&&o){const t=o;o=void 0,t.dispose()}};return s(n()),s}function Xr(t){const{layers:e,icons:r,template:{$player:n}}=t;function o(){return I(n,"art-lock")}function i(){w(t)||(O(n,"art-lock"),w(t)||(t.isLock=!0,w(t)||t.emit("lock",!0)))}function a(){w(t)||(D(n,"art-lock"),w(t)||(t.isLock=!1,w(t)||t.emit("lock",!1)))}return e.add({name:"lock",mounted(e){const n=E(e);if(n.closed||w(t))return;const i=kt(e,r.lock);if(n.closed||w(t))return;const a=kt(e,r.unlock);if(n.closed||w(t))return;const s=Ur(t,e,n,o);n.closed||w(t)||(o()?(H(i,"display","inline-flex"),n.closed||w(t)||H(a,"display","none")):H(i,"display","none"),C(t,e,"lock",e=>{w(t)||(H(i,"display",e?"inline-flex":"none"),n.closed||w(t)||H(a,"display",e?"none":"inline-flex"),n.closed||w(t)||s(e))}))},click(){o()?a():i()}}),{name:"lock",get state(){return o()},set state(t){t?i():a()}}}function Gr(t){return Pe(t)("control",e=>{e?D(t.template.$player,"art-mini-progress-bar"):O(t.template.$player,"art-mini-progress-bar")}),{name:"mini-progress-bar"}}class Kr{constructor(t){this.art=t,this.id=0;const{option:e}=t;!function(t,e){w(t.art)||!e.miniProgressBar||e.isLive||t.add(Gr),!w(t.art)&&e.lock&&u&&t.add(Xr),w(t.art)||!e.autoPlayback||e.isLive||t.add(Hr),!w(t.art)&&e.autoOrientation&&u&&t.add(Yr),!w(t.art)&&e.fastForward&&u&&!e.isLive&&t.add(qr)}(this,e);for(let r=0;rconsole.warn("Failed to initialize ArtPlayer plugin:",t))}}add(t){X(!w(this.art),"Cannot add a plugin after ArtPlayer is destroyed"),this.id+=1;const e=t.call(this.art,this.art);return e instanceof Promise?e.then(e=>this.next(t,e)):this.next(t,e)}next(t,e){return function(t,e,r){if(w(t.art))return t;const n=r&&r.name||e.name||`plugin${t.id}`;if(w(t.art))return t;let o=n;const i=st(t,o);if(w(t.art))return t;const a=`Cannot add a plugin that already has the same name: ${n}`;return w(t.art)||(X(!i,a),("object"===typeof n&&null!==n||"function"===typeof n)&&(o=Reflect.ownKeys({[o]:void 0})[0]),w(t.art)||it(t,o,{value:r})),t}(this,t,e)}}const Zr=new WeakMap;function Jr(t){return!t.closed&&!Zr.get(t)}function Qr(t){Zr.set(t,(Zr.get(t)||0)+1);let e=!0;return()=>{if(!e)return;e=!1;const r=(Zr.get(t)||1)-1;r?Zr.set(t,r):Zr.delete(t)}}const tn=new WeakMap,en=new WeakMap,rn=["$parent","$parents","$option","$events","$formatted"];function nn(t){const e=new Set;let r=t;for(;r&&!e.has(r);){e.add(r);const t=tn.get(r);if(!t||!t.owner.active||t.owner.scope?.closed||!t.option.includes(r))return!1;if(!t.parent)return t.owner.root===t.option;if(tn.get(t.parent)?.owner!==t.owner)return!1;r=t.parent}return!1}function on(t){let e=t;for(;e;){const r=Object.getOwnPropertyDescriptor(e,"name");if(r)return"set"in r?"function"===typeof r.set:Boolean(r.writable&&(e===t||Object.isExtensible(t)));e=Object.getPrototypeOf(e)}return Object.isExtensible(t)}function an(t){const e=tn.get(t);if(!e)throw new Error("Setting item has not been formatted");return e}function sn(t,e){for(let r=0;r{l&&l!==r&&l.dispose()},()=>hn(t,o)])try{e()}catch(d){d instanceof h?c.push(...d.errors):c.push(d)}if(r.closed||w(t)||(o.push(...i.splice(0)),fn.set(r,o),un.set(e,r),pn.set(e,n)),a(),c.length)throw new h(c)},dispose(){if(s){s=!1;try{r.dispose()}finally{a()}}}}}function bn(t,e,r,n,o,i){const a=i||gn(e);if(!Jr(a)||w(t))return;const s=t.proxy(r,n,e=>{if(Jr(a)&&!w(t))try{return o(e)}catch(r){console.warn("ArtPlayer setting callback failed:",r)}});!Jr(a)||w(t)?t.events.remove(s):(an(e).events.push(s),i&&i!==un.get(e)&&i.add(()=>{const r=an(e).events,n=r.indexOf(s);n>=0&&(r.splice(n,1),t.events.remove(s))}))}function wn(t,e,r,n){const o=gn(e);if(!Jr(o)||w(t))return;const i=(...e)=>{if(Jr(o)&&!w(t))return n(...e)};t.on(r,i),o.add(()=>{t.off(r,i)})}const xn='[tabindex="0"],button,input,select,textarea,a[href],[contenteditable]';function kn(t){if(!t.isConnected||t.matches(":disabled")||t.closest("[inert]")||"true"===t.getAttribute("aria-disabled")||!t.getClientRects().length)return!1;const e=t.ownerDocument.defaultView?.getComputedStyle(t).visibility;return"hidden"!==e&&"collapse"!==e}function $n(t){return Array.from(t.querySelectorAll(xn)).filter(t=>"-1"!==t.getAttribute("tabindex")&&kn(t))}function En(t,e,r=!1){if(!t.show||w(t.art)||!t.active)return;const n=t.cache.get(t.active);if(!n||!Jr(ln(n)))return;const o=function(t,e,r=!1){if(e&&e!==t&&t.contains(e)&&e.matches(xn)&&"-1"!==e.getAttribute("tabindex")&&kn(e))return e;const n=$n(t),o=t.querySelector(".art-setting-item.art-current");return n.find(t=>e?.contains(t))||(r?n[n.length-1]:n.find(t=>o?.contains(t))||n.find(t=>!t.classList.contains("art-setting-item-back"))||n[0])}(n,e,r);o?.focus({preventScroll:!0}),w(t.art)||o?.scrollIntoView({block:"nearest",inline:"nearest"})}function An(t){const e=t.$parent.ownerDocument,r=e.activeElement,n=t.$parent.contains(r);return o=>{n&&!w(t.art)&&(e.activeElement===e.body||e.activeElement===r&&!r?.getClientRects().length)&&En(t,o)}}function Cn(t){const{art:e}=t,r=b(e).child();if(r.closed)return;const n=()=>t.$parent.ownerDocument;let o=!1;const i=()=>{t.show=!1,r.closed||w(e)||t.render()},a=i=>{r.closed||w(e)||(i?n().activeElement===e.controls.setting&&e.template.$player.classList.contains("art-keyboard-focus")&&En(t,void 0,o):t.$parent.contains(n().activeElement)&&function(t){const{art:e,$parent:r}=t,n=e.template.$player,o=r.ownerDocument,i=e.controls.setting;!w(e)&&r.contains(o.activeElement)&&(i&&n.contains(i)&&kn(i)&&i.focus({preventScroll:!0}),(o.activeElement===o.body||r.contains(o.activeElement))&&At(e))}(t))};e.on("setting",a),r.add(()=>{e.off("setting",a)}),mt(r,e.template.$player,"keydown",r=>{const n=r;if(!wt(n)||n.defaultPrevented||w(e))return;const a=n.target;if(a===e.controls.setting){if("ArrowDown"===n.key||"ArrowUp"===n.key)if(bt(n),t.show)En(t,void 0,"ArrowUp"===n.key);else{o="ArrowUp"===n.key;try{t.show=!0}finally{o=!1}}else"Escape"===n.key&&t.show&&(bt(n),i());return}if(!t.show||!t.$parent.contains(a))return;if("Escape"===n.key)return bt(n),void i();if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"].includes(n.key))return;const s=a.closest(".art-setting-item");if(!s||a!==s&&!a.matches('button,a[href],[role="button"]'))return;const c=t.active&&t.cache.get(t.active);if(!c)return;const l=t.active?.find(t=>t.$item===s);if(!Jr(ln(c))||l&&!Jr(gn(l)))return void bt(n);const d=$n(c),u=d.indexOf(a);if(u<0)return;let p;switch(n.key){case"ArrowDown":p=Math.min(u+1,d.length-1);break;case"ArrowUp":p=Math.max(u-1,0);break;case"Home":p=0;break;case"End":p=d.length-1;break;case"ArrowLeft":{const t=c.querySelector(".art-setting-item-back");return bt(n),void t?.click()}case"ArrowRight":return bt(n),void(l?.selector?.length&&a.click());default:return}bt(n),void 0!==p&&En(t,d[p])});let s=!1;mt(r,t.$parent,"focusout",o=>{const a=o.relatedTarget;a&&(t.$parent.contains(a)||a===e.controls.setting)||s||(s=!0,gt(r,()=>{s=!1,r.closed||w(e)||!t.show||t.$parent.contains(n().activeElement)||n().activeElement===e.controls.setting||i()},0))})}function Sn(t){const{art:e,active:r}=t,{controls:n,constructor:{SETTING_WIDTH:o,SETTING_ITEM_HEIGHT:i},template:{$player:a,$setting:s,$bottom:c}}=e;if(!n.setting||!t.show||!r)return;const l=a.getBoundingClientRect(),d=n.setting.getBoundingClientRect(),p=l.width/a.offsetWidth||1,f=(d.left-l.left+d.width/2)/p-a.clientLeft,h=function(t){const{containerWidth:e,containerHeight:r,requestedWidth:n,rows:o,rowHeight:i,controlCenter:a,bottom:s,padding:c}=t,l=Math.min(Math.max(0,c),Math.max(0,e/2)),d=Math.min(Math.max(0,n),Math.max(0,e-2*l));return{width:d,height:Math.min(Math.max(0,o*i),Math.max(0,r-s-l)),left:Math.max(l,Math.min(a-d/2,e-l-d))}}({containerWidth:a.clientWidth,containerHeight:a.clientHeight,requestedWidth:r[0]?.$parent?.width||o,rows:r.length+(r===t.option?0:1),rowHeight:i,controlCenter:f,bottom:Number.parseFloat(getComputedStyle(s).bottom)||0,padding:Number.parseFloat(getComputedStyle(c).paddingLeft)||0});s.style.height=`${h.height}px`,s.style.width=`${h.width}px`,e.isRotate||u||(f+h.width/2>a.clientWidth?(s.style.left="",s.style.right=""):(s.style.left=`${h.left}px`,s.style.right="auto"))}const Tn=new WeakMap;function Ln(t){Tn.delete(t)}const Pn=new WeakMap;function Mn(t,e){e?Pn.set(t,e):Pn.delete(t)}function zn(t){const e=new Map(Reflect.ownKeys(t).map(e=>[e,Object.getOwnPropertyDescriptor(t,e)])),r=[],n=Pn.get(t),o=n?.();for(const i of["html","icon","tooltip"]){const t=e.get(i)?.value;t instanceof Node&&r.push({node:t,parent:t.parentNode,next:t.nextSibling})}return()=>{for(const r of Reflect.ownKeys(t))!e.has(r)&&Object.getOwnPropertyDescriptor(t,r)?.configurable&&Reflect.deleteProperty(t,r);for(const[r,n]of e)Object.defineProperty(t,r,n);o?.(),Mn(t,n);for(const{node:t,parent:e,next:n}of r)e?e.insertBefore(t,n?.parentNode===e?n:null):t.parentNode?.removeChild(t)}}function Rn(t){const e=t.$item?.querySelector(".art-setting-range");e&&e.setAttribute("aria-label",t.$html?.textContent||"")}const On=new WeakMap;async function Dn(t,e,r,n,o,i,a,s){try{const c=gn(e),l=gn(i),d=(On.get(i)||0)+1;On.set(i,d);const u=()=>Jr(c)&&Jr(l)&&!w(t.art)&&On.get(i)===d;if(s?.(),!u())return;const p=await o.call(t.art,e,r,n);u()&&Reflect.set(i,a,p)}catch(c){console.warn("ArtPlayer setting callback failed:",c)}}function In(t){const e=[];return function t(r){const n=Array.from(r.childNodes);e.push({node:r,children:n,attributes:1===r.nodeType?Array.from(r.attributes,t=>[t.name,t.value]):void 0,value:r.nodeValue}),n.forEach(t)}(t),()=>{for(const{node:t,children:r,attributes:n,value:o}of e){for(;t.firstChild;)t.removeChild(t.firstChild);for(const e of r)t.appendChild(e);if(n){const e=t;for(const t of Array.from(e.attributes))e.removeAttribute(t.name);for(const[t,r]of n)e.setAttribute(t,r)}else t.nodeValue=o}}}const Nn=new WeakMap;function _n(t){const e=[];for(const n of t)try{n()}catch(r){r instanceof h?e.push(...r.errors):e.push(r)}if(e.length)throw new h(e)}function Wn(t){Nn.get(t)?.()}function Fn(t,e){const r=t.find(e.name);if(w(t.art))return r||e;if(!r)return t.add(e);const n=An(t);Ln(r),Wn(r);const o=zn(r),i=r.$item,a=i?.parentNode,s=i?.nextSibling,c=i?In(i):void 0,l=t.active,d=["height","width","left","right"].map(e=>[e,t.$parent.style.getPropertyValue(e),t.$parent.style.getPropertyPriority(e)]),u=function(t,e){const r=new Set,n=new Set,o=e=>{if(!r.has(e)&&(r.add(e),e.selector)){const r=t.cache.get(e.selector);r&&n.add(r),e.selector.forEach(o)}};o(e);const i=[],a=[];try{for(const e of r){const r=yn(t.art,e);r&&i.push(r)}for(const t of n)a.push(Qr(ln(t)))}catch(c){try{_n([...i.reverse().map(t=>t.resume),...a])}catch(l){console.warn("ArtPlayer setting restore failed:",l)}throw c}let s=!0;return{items:r,resume(){s&&(s=!1,_n([...i.reverse().map(t=>t.resume),...a]))},dispose(){s&&(s=!1,_n([...i.reverse().map(t=>t.dispose),...Array.from(n).reverse().map(t=>()=>dn(t)),...a]))}}}(t,r);let p=!0,f=!1;const h=()=>{if(!p)return;p=!1;for(const t of u.items)Nn.get(t)===h&&Nn.delete(t);if(w(t.art))return void u.dispose();const e=r.$item;try{_n([u.resume,()=>{e&&e!==i&&e.remove()},o,()=>c?.(),()=>{a&&i&&a.insertBefore(i,s?.parentNode===a?s:null)},()=>t.format(),()=>{if(f){t.active=l,l&&t.cache.has(l)&&W(t.cache.get(l),"art-current");for(const[e,r,n]of d)t.$parent.style.setProperty(e,r,n)}}]),n(i)}catch(m){console.warn("ArtPlayer setting restore failed:",m)}},m=()=>p&&!w(t.art)&&Nn.get(r)===h;for(const y of u.items)Nn.set(y,h);const g=b(t.art).add(()=>{p=!1;for(const t of u.items)Nn.get(t)===h&&Nn.delete(t);u.dispose()});try{if(function(t,e,r){for(const n of Reflect.ownKeys(e)){if(!r())return;const o=Object.getOwnPropertyDescriptor(e,n);if(!o?.enumerable||!r())continue;const i=Reflect.get(e,n);if(!r())return;if(!Reflect.set(t,n,i))throw new TypeError(`Cannot assign setting item property [${String(n)}]`)}}(r,e,m),!m())return r;if(t.format(),!m())return r;if(t.createItem(r,!0),!m())return r;if(f=!0,t.render(),!m())return r;p=!1;for(const t of u.items)Nn.get(t)===h&&Nn.delete(t);return u.dispose(),n(r.$item),r}catch(v){throw m()&&h(),v}finally{g()}}const Vn=new WeakMap;function Yn(t,e,r){it(t,`$${e}`,{configurable:!0,get:()=>r}),it(t,e,{configurable:!0,get:()=>r.innerHTML,set(n){r.innerHTML="",N(r,n),"html"===e&&Rn(t)}})}function Bn(t,e,r=!1){const n=function(t){const e=Nn.get(t);return()=>!e||Nn.get(t)===e}(e);if(!t.cache.has(e.$option))return;const o=t.cache.get(e.$option),i=e.$item;let a="selector";st(e,"switch")&&(a="switch"),st(e,"range")&&(a="range"),st(e,"onClick")&&(a="button");const{icons:s,constructor:c}=t.art;if(!n())return;const l=function(t,e,r=b(t)){const n=un.get(e);(!n||Jr(n)||n.closed)&&vn(t,e);const o=r.child();return un.set(e,o),pn.set(e,r),fn.set(o,an(e).events),o.add(()=>{hn(t,fn.get(o))}),o}(t.art,e,ln(o)),d=()=>Jr(l)&&!w(t.art)&&n();if(!d())return;const u=document.createElement("div");try{if(Mn(e),O(u,"art-setting-item"),H(u,"height",`${c.SETTING_ITEM_HEIGHT}px`),u.dataset.name=e.name||"",u.dataset.value=String(e.value||""),!d())return;const n=kt(u,'
'),p=kt(u,'
'),f=document.createElement("div");switch(O(f,"art-setting-item-left-icon"),a){case"button":case"switch":case"range":{const t=e.icon||s.config;if(!d())return;N(f,t);break}case"selector":if(e.selector?.length){const t=e.icon||s.config;if(!d())return;N(f,t)}else N(f,s.check)}if(N(n,f),!d())return;Yn(e,"icon",f);const h=document.createElement("div");O(h,"art-setting-item-left-text");const m=e.html||"";if(!d())return;N(h,m),N(n,h),Yn(e,"html",h);const g=document.createElement("div");O(g,"art-setting-item-right-tooltip");const v=e.tooltip||"";if(!d())return;switch(N(g,v),N(p,g),Yn(e,"tooltip",g),a){case"switch":{const t=document.createElement("div");O(t,"art-setting-item-right-icon");const r=kt(t,s.switchOn),n=kt(t,s.switchOff),o=e.switch;if(!d())return;H(o?n:r,"display","none"),N(p,t),it(e,"$switch",{configurable:!0,get:()=>t});let i=e.switch;if(!d())return;Mn(e,()=>{const t=i;return()=>{i=t}}),it(e,"switch",{configurable:!0,get:()=>i,set(t){i=t,u.setAttribute("aria-checked",String(Boolean(t))),t?(H(n,"display","none"),H(r,"display",null)):(H(n,"display",null),H(r,"display","none"))}});break}case"range":{const t=document.createElement("div");O(t,"art-setting-item-right-icon");const r=document.createElement("input");r.type="range",N(t,r);for(const[o,i]of["value","min","max","step"].entries()){const t=e.range[o];if(!d())return;Reflect.set(r,i,String(t))}O(r,"art-setting-range"),N(p,t),it(e,"$range",{configurable:!0,get:()=>r});let n=[...e.range];if(!d())return;Mn(e,()=>{const t=n,e=[...t],o={min:r.min,max:r.max,step:r.step,value:r.value};return()=>{t.splice(0,t.length,...e),n=t,Object.assign(r,o)}}),it(e,"range",{configurable:!0,get:()=>n,set(t){n=[...t],r.value=String(t[0]),r.min=String(t[1]),r.max=String(t[2]),r.step=String(t[3])}})}break;case"selector":if(e.selector?.length){const t=document.createElement("div");O(t,"art-setting-item-right-icon"),N(t,s.arrowRight),N(p,t)}}if(!d())return;if(function(t,e,r,n){const{art:o}=t,i=gn(e),a=(t,r,n)=>bn(o,e,t,r,n,i);switch(n){case"switch":e.onSwitch&&a(r,"click",n=>Dn(t,e,r,n,e.onSwitch,e,"switch"));break;case"range":{const n=e.$range;if(n)for(const[o,i]of[["change","onRange"],["input","onChange"]])e[i]&&a(n,o,o=>Dn(t,e,r,o,e[i],e,"tooltip",()=>{e.range[0]=n.valueAsNumber}));break}case"selector":a(r,"click",n=>{if(e.selector?.length)t.render(e.selector);else{if(e.$parent?.onSelect)return Dn(t,e,r,n,e.$parent.onSelect,e.$parent,"tooltip",()=>t.check(e));t.check(e)}}),e.default&&O(r,"art-current");break;case"button":e.onClick&&a(r,"click",n=>Dn(t,e,r,n,e.onClick,e,"tooltip"))}}(t,e,u,a),!d())return;it(e,"$item",{configurable:!0,get:()=>u}),function(t,e,r,n,o){"range"!==n?r.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")||("switch"===n?(r.setAttribute("role","switch"),r.setAttribute("aria-checked",String(Boolean(e.switch))),r.setAttribute("aria-disabled",String(!e.onSwitch))):"selector"!==n||e.selector?.length||r.setAttribute("aria-current",String(Boolean(e.default))),xt(o,r,()=>r.click(),()=>Jr(o)&&!w(t.art))):Rn(e)}(t,e,u,a,l),r&&i?.parentNode?i.replaceWith(u):N(o,u),e.mounted&&d()&>(l,()=>{if(!w(t.art))try{const r=e.mounted?.call(t.art,u,e);Promise.resolve(r).catch(t=>console.warn("ArtPlayer setting mounted failed:",t))}catch(r){console.warn("ArtPlayer setting mounted failed:",r)}},0)}catch(p){try{l.dispose()}catch(f){console.warn("ArtPlayer setting cleanup failed:",f)}throw u.remove(),p}}function Hn(t,e=t.option){if(w(t.art))return;const r=An(t),n=t.cache.get(e);if(n&&!Jr(ln(n)))return;const o=(Vn.get(t)||0)+1;Vn.set(t,o);const i=()=>Vn.get(t)===o&&!w(t.art),a=t.active,s=["height","width","left","right"].map(e=>[e,t.$parent.style.getPropertyValue(e),t.$parent.style.getPropertyPriority(e)]),c=()=>{t.active=a,a&&t.cache.has(a)&&W(t.cache.get(a),"art-current");for(const[e,r,n]of s)t.$parent.style.setProperty(e,r,n)};if(t.active=e,n)try{W(n,"art-current"),t.resize()}catch(l){throw i()&&t.cache.get(e)===n&&!ln(n).closed&&c(),l}else{const r=document.createElement("div");t.cache.set(e,r);const n=function(t,e,r){const n=b(t.art).child();return cn.set(r,n),n.add(()=>{t.cache.get(e)===r&&t.cache.delete(e),r.remove()}),n}(t,e,r),o=()=>!n.closed&&!w(t.art)&&t.cache.get(e)===r,a=[];try{if(!o())return;O(r,"art-setting-panel"),r.setAttribute("role","group"),r.setAttribute("aria-label",e[0]?.$parent?.$html?.textContent||t.art.i18n.get("Settings")),N(t.$parent,r),W(r,"art-current"),e[0]?.$parent&&t.createHeader(e[0]);for(let r=0;r{!function(t){const e=en.get(t);e&&(e.active=!1,e.root=void 0,e.scope=void 0)}(this)}),e.setting&&(this.format(),this.render(),function(t){const{art:e}=t,r=b(e).child(),n=(t,n)=>{if(r.closed||w(e))return;const o=(...t)=>{if(!r.closed&&!w(e))return n(...t)};e.on(t,o),r.add(()=>{e.off(t,o)})};n("blur",()=>{t.show&&(t.show=!1,t.render())}),n("focus",r=>{const n=L(r,e.controls.setting),o=L(r,t.$parent);!t.show||n||o||(t.show=!1,t.render())}),n("resize",()=>t.resize());const o=()=>{r.closed||w(e)||t.resize()},i=e.proxy(t.$parent,"transitionend",e=>{e.target===t.$parent&&"bottom"===e.propertyName&&o()});r.add(()=>{e.events.remove(i)});const{$player:a,$controls:s}=e.template;if(!r.closed&&"undefined"!==typeof ResizeObserver){const t=new ResizeObserver(o);t.observe(a),t.observe(s),r.add(()=>{t.disconnect()})}if(!r.closed&&"undefined"!==typeof MutationObserver){const t=new MutationObserver(o);"undefined"===typeof ResizeObserver&&t.observe(s,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),t.observe(a,{attributes:!0,attributeFilter:["class","style"]}),r.add(()=>{t.disconnect()})}}(this)),Cn(this)}get builtin(){const t=[],{option:e}=this.art;return e.playbackRate&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,PLAYBACK_RATE:o}}=t;function i(t){return 1===t?e.get("Normal"):t.toFixed(1)}function a(){const e=t.setting.find(`playback-rate-${t.playbackRate}`);t.setting.check(e)}return{width:n,name:"playback-rate",html:e.get("Play Speed"),tooltip:i(t.playbackRate),icon:r.playbackRate,selector:o.map(e=>({value:e,name:`playback-rate-${e}`,default:e===t.playbackRate,html:i(e)})),onSelect:e=>(t.playbackRate=e.value,e.html),mounted:(e,r)=>{a(),wn(t,r,"video:ratechange",()=>a())}}}(this.art)),e.aspectRatio&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,ASPECT_RATIO:o}}=t;function i(t){return"default"===t?e.get("Default"):t}function a(){const e=t.setting.find(`aspect-ratio-${t.aspectRatio}`);t.setting.check(e)}return{width:n,name:"aspect-ratio",html:e.get("Aspect Ratio"),icon:r.aspectRatio,tooltip:i(t.aspectRatio),selector:o.map(e=>({value:e,name:`aspect-ratio-${e}`,default:e===t.aspectRatio,html:i(e)})),onSelect:e=>(t.aspectRatio=e.value,e.html),mounted:(e,r)=>{a(),wn(t,r,"aspectRatio",()=>a())}}}(this.art)),e.flip&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,FLIP:o}}=t;function i(t){return e.get(Q(t))}function a(){const e=t.setting.find(`flip-${t.flip}`);t.setting.check(e)}return{width:n,name:"flip",html:e.get("Video Flip"),tooltip:i(t.flip),icon:r.flip,selector:o.map(e=>({value:e,name:`flip-${e}`,default:e===t.flip,html:i(e)})),onSelect:e=>(t.flip=e.value,e.html),mounted:(e,r)=>{a(),wn(t,r,"flip",()=>a())}}}(this.art)),e.subtitleOffset&&t.push(function(t){const{i18n:e,icons:r,constructor:n}=t;return{width:n.SETTING_ITEM_WIDTH,name:"subtitle-offset",html:e.get("Subtitle Offset"),icon:r.subtitle,tooltip:"0s",range:[0,-10,10,.1],onChange:e=>(t.subtitleOffset=e.range[0],`${e.range[0]}s`),mounted:(e,r)=>{wn(t,r,"subtitleOffset",t=>{r.$range.value=String(t),r.tooltip=`${t}s`})}}}(this.art)),t}traverse(t,e=this.option){sn(e,t)}check(t){!function(t,e){e?.$parent&&(e.$parent.tooltip=e.html,t.traverse(t=>{t.default=t===e,t.$item&&t.$item.setAttribute("aria-current",String(t.default)),t.default&&t.$item&&W(t.$item,"art-current")},e.$option),t.render(e.$parents))}(this,t)}format(t=this.option,e,r,n=[]){this.option=function(t,e,r,n,o=[]){const i=en.get(t)||{active:!0},a=[],s=new Set,c=new Set(o),l=(t,e,r)=>{for(let n=0;nan(t).parent},$parents:{get:()=>an(t).parents},$option:{get:()=>an(t).option},$events:{get:()=>an(t).events},$formatted:{get:()=>!0}}),tn.set(t,{parent:r,parents:n,option:o,events:a?.events||[],owner:i}),u.generated&&(t.name=e)}for(const u of a)u.generated||o.push(u.name);return t.id=d,e}(this,t,e,r,n)}find(t=""){return function(t,e=""){let r=null;return sn(t,t=>{t.name===e&&(r=t)}),r}(this.option,t)}resize(){Sn(this)}inactivate(t){!function(t,e){const r=[],n=new Set,o=e=>{if(!n.has(e)){n.add(e);for(const t of e.selector||[])o(t);if(e.selector){const n=t.cache.get(e.selector);t.cache.delete(e.selector);try{n&&dn(n)}catch(i){r.push(i)}}try{vn(t.art,e)}catch(i){i instanceof h?r.push(...i.errors):r.push(i)}}};if(o(e),r.length)throw new h(r)}(this,t)}remove(t){const e=An(this),r=this.find(t);X(r,`Can't find [${t}] in the [setting]`),this.traverse(t=>{Ln(t),Wn(t)},[r]);const n=r.$option.indexOf(r);r.$option.splice(n,1);const o=r.$item,i=[];for(const s of[()=>this.inactivate(r),()=>o?.remove(),()=>this.render()])try{s()}catch(a){a instanceof h?i.push(...a.errors):i.push(a)}if(i.length)throw new h(i);e()}update(t){return Fn(this,t)}add(t,e=this.option){if(w(this.art))return t;let r=!1;this.traverse(e=>{r||(r=e===t)});const n=e.length,o=r?void 0:function(t){const e={};Tn.set(t,e);const r=()=>Tn.get(t)===e;return{current:r,finish(){r()&&Tn.delete(t)}}}(t);let i=!1;try{e.push(t),this.format(),i=!0,this.createItem(t),this.render()}catch(a){if(w(this.art)||o&&!o.current())throw a;if(e[n]===t&&e.splice(n,1),!r&&i){try{this.inactivate(t)}catch(s){console.warn("ArtPlayer setting cleanup failed:",s)}t.$item?.remove()}throw a}finally{o?.finish()}return t}createHeader(t){!function(t,e){if(!t.cache.has(e.$option))return;const r=t.cache.get(e.$option),{icons:{arrowLeft:n},constructor:{SETTING_ITEM_HEIGHT:o}}=t.art,i=document.createElement("div");H(i,"height",`${o}px`),O(i,"art-setting-item"),O(i,"art-setting-item-back");const a=kt(i,'
'),s=document.createElement("div");O(s,"art-setting-item-left-icon"),N(s,n),N(a,s),N(a,e.$parent.html),bn(t.art,e.$parent,i,"click",()=>t.render(e.$parents),ln(r));const c=ln(r);i.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")||xt(c,i,()=>i.click(),()=>Jr(c)&&!w(t.art)),i.setAttribute("aria-label",`${t.art.i18n.get("Back")}: ${i.textContent?.trim()||""}`),N(r,i)}(this,t)}createItem(t,e=!1){Bn(this,t,e)}render(t=this.option){Hn(this,t)}}class Un{constructor(){this.name="artplayer_settings",this.settings={}}get(t){try{const e=JSON.parse(window.localStorage.getItem(this.name))||{};return t?e[t]:e}catch{return t?this.settings[t]:this.settings}}set(t,e){try{const r=Object.assign({},this.get(),{[t]:e});window.localStorage.setItem(this.name,JSON.stringify(r))}catch{this.settings[t]=e}}del(t){try{const e=this.get();delete e[t],window.localStorage.setItem(this.name,JSON.stringify(e))}catch{delete this.settings[t]}}clear(){try{window.localStorage.removeItem(this.name)}catch{this.settings={}}}}const Xn='.art-video-player{--art-theme: #f00;--art-font-color: #fff;--art-background-color: #000;--art-text-shadow-color: rgba(0, 0, 0, .5);--art-transition-duration: .2s;--art-padding: 10px;--art-border-radius: 3px;--art-progress-height: 6px;--art-progress-color: rgba(255, 255, 255, .25);--art-progress-top-gap: 10px;--art-hover-color: rgba(255, 255, 255, .25);--art-loaded-color: rgba(255, 255, 255, .25);--art-state-size: 80px;--art-state-opacity: .8;--art-bottom-height: 100px;--art-bottom-offset: 20px;--art-bottom-gap: 5px;--art-highlight-width: 8px;--art-highlight-color: rgba(255, 255, 255, .5);--art-control-height: 46px;--art-control-opacity: .75;--art-control-icon-size: 36px;--art-control-icon-scale: 1.1;--art-volume-height: 120px;--art-volume-handle-size: 14px;--art-lock-size: 36px;--art-indicator-scale: 0;--art-indicator-size: 16px;--art-fullscreen-web-index: 9999;--art-settings-icon-size: 24px;--art-settings-max-height: 300px;--art-selector-max-height: 300px;--art-contextmenus-min-width: 250px;--art-subtitle-font-size: 20px;--art-subtitle-gap: 5px;--art-subtitle-bottom: 15px;--art-subtitle-border: #000;--art-widget-background: rgba(0, 0, 0, .85);--art-tip-background: rgba(0, 0, 0, .7);--art-scrollbar-size: 4px;--art-scrollbar-background: rgba(255, 255, 255, .25);--art-scrollbar-background-hover: rgba(255, 255, 255, .5);--art-mini-progress-height: 2px}.art-bg-cover{background-position:center center;background-repeat:no-repeat;background-size:cover}.art-bottom-gradient{background-image:linear-gradient(to top,#000,rgba(0,0,0,.4),transparent);background-repeat:repeat-x;background-position:center bottom}.art-backdrop-filter{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:#000000bf!important}.art-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-video-player{position:relative;margin:0 auto;width:100%;height:100%;outline:0;zoom:1;padding:0;text-align:left;direction:ltr;font-size:14px;line-height:1.3;user-select:none;box-sizing:border-box;color:var(--art-font-color);background-color:var(--art-background-color);text-shadow:0 0 2px var(--art-text-shadow-color);font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,Roboto,Arial,sans-serif;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-touch-action:manipulation;touch-action:manipulation;-ms-high-contrast-adjust:none}.art-video-player *,.art-video-player *:before,.art-video-player *:after{box-sizing:border-box}.art-video-player ::-webkit-scrollbar{width:var(--art-scrollbar-size);height:var(--art-scrollbar-size)}.art-video-player ::-webkit-scrollbar-thumb{background-color:var(--art-scrollbar-background)}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:var(--art-scrollbar-background-hover)}.art-video-player img{max-width:100%;vertical-align:top}.art-video-player svg{fill:var(--art-font-color)}.art-video-player a{color:var(--art-font-color);text-decoration:none}.art-icon{line-height:1;display:flex;justify-content:center;align-items:center}.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{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:#000000bf!important}.art-video{position:absolute;inset:0;z-index:10;width:100%;height:100%}.art-poster{position:absolute;inset:0;z-index:11;width:100%;height:100%;background-position:center center;background-repeat:no-repeat;background-size:cover;pointer-events:none}.art-video-player .art-subtitle{display:none;justify-content:center;align-items:center;flex-direction:column;position:absolute;z-index:20;width:100%;padding:0 5%;text-align:center;pointer-events:none;gap:var(--art-subtitle-gap);bottom:var(--art-subtitle-bottom);font-size:var(--art-subtitle-font-size);transition:bottom var(--art-transition-duration) ease;text-shadow:var(--art-subtitle-border) 1px 0 1px,var(--art-subtitle-border) 0 1px 1px,var(--art-subtitle-border) -1px 0 1px,var(--art-subtitle-border) 0 -1px 1px,var(--art-subtitle-border) 1px 1px 1px,var(--art-subtitle-border) -1px -1px 1px,var(--art-subtitle-border) 1px -1px 1px,var(--art-subtitle-border) -1px 1px 1px}.art-video-player.art-subtitle-show .art-subtitle{display:flex}.art-video-player.art-control-show .art-subtitle{bottom:calc(var(--art-controls-height, var(--art-control-height)) + var(--art-subtitle-bottom))}.art-danmuku{position:absolute;inset:0;z-index:30;width:100%;height:100%;pointer-events:none;overflow:hidden}.art-video-player .art-layers{position:absolute;inset:0;z-index:40;width:100%;height:100%;display:none;pointer-events:none}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:flex}.art-video-player .art-mask{display:flex;justify-content:center;align-items:center;position:absolute;inset:0;z-index:50;width:100%;height:100%;pointer-events:none}.art-video-player .art-mask .art-state{display:flex;justify-content:center;align-items:center;opacity:0;transform:scale(2);width:var(--art-state-size);height:var(--art-state-size);transition:all var(--art-transition-duration) ease}.art-video-player.art-mask-show .art-state{pointer-events:auto;opacity:var(--art-state-opacity);transform:scale(1)}.art-video-player.art-loading-show .art-state{display:none}.art-video-player .art-loading{display:none;justify-content:center;align-items:center;position:absolute;inset:0;z-index:70;width:100%;height:100%;pointer-events:none}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player.art-loading-show .art-mask{display:none}.art-video-player .art-bottom{position:absolute;inset:0;z-index:60;width:100%;height:100%;display:flex;flex-direction:column;justify-content:flex-end;opacity:0;overflow:hidden;pointer-events:none;padding:0 var(--art-padding);transition:all var(--art-transition-duration) ease;background-size:100% var(--art-bottom-height);background-image:linear-gradient(to top,#000,rgba(0,0,0,.4),transparent);background-repeat:repeat-x;background-position:center bottom}.art-video-player .art-bottom .art-controls,.art-video-player .art-bottom .art-progress{transform:translateY(var(--art-bottom-offset));transition:transform var(--art-transition-duration) ease}.art-video-player.art-control-show .art-bottom,.art-video-player.art-hover .art-bottom{opacity:1}.art-video-player.art-control-show .art-bottom .art-controls,.art-video-player.art-hover .art-bottom .art-controls,.art-video-player.art-control-show .art-bottom .art-progress,.art-video-player.art-hover .art-bottom .art-progress{transform:translateY(0)}.art-bottom .art-progress{position:relative;z-index:0;cursor:pointer;pointer-events:auto;padding-top:var(--art-progress-top-gap);padding-bottom:var(--art-bottom-gap)}.art-bottom .art-progress .art-control-progress{position:relative;display:flex;justify-content:center;align-items:center;height:var(--art-progress-height)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:height var(--art-transition-duration) ease;background-color:var(--art-progress-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover{position:absolute;inset:0;z-index:0;width:100%;height:100%;width:0%;background-color:var(--art-hover-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{position:absolute;inset:0;z-index:10;width:100%;height:100%;width:0%;background-color:var(--art-loaded-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{position:absolute;inset:0;z-index:20;width:100%;height:100%;width:0%;background-color:var(--art-theme)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{position:absolute;inset:0;z-index:30;width:100%;height:100%;pointer-events:none}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{position:absolute;inset:0 auto 0 0;z-index:0;width:100%;height:100%;pointer-events:auto;width:var(--art-highlight-width)!important;transform:translate(calc(var(--art-highlight-width) / -2));background-color:var(--art-highlight-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{display:flex;justify-content:center;align-items:center;position:absolute;z-index:40;left:0;border-radius:50%;width:var(--art-indicator-size);height:var(--art-indicator-size);transform:scale(var(--art-indicator-scale));margin-left:calc(var(--art-indicator-size) / -2);transition:transform var(--art-transition-duration) ease}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon{width:100%;height:100%;pointer-events:none}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover{transform:scale(1.2)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active{transform:scale(1)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;z-index:50;top:-25px;left:0;padding:3px 5px;line-height:1;font-size:12px;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease}.art-bottom .art-progress .art-control-thumbnails{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;bottom:calc(var(--art-bottom-gap) + 10px);left:0;border-radius:var(--art-border-radius);pointer-events:none;background-color:var(--art-widget-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease;box-shadow:0 1px 3px #0003,0 1px 2px -1px #0003}.art-bottom .art-progress:hover .art-control-progress .art-control-progress-inner{height:100%}.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{transform:scale(1)}.art-progress-hover .art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip,.art-progress-hover .art-bottom .art-progress .art-control-thumbnails{transform:scale(1);opacity:1}.art-video-player .art-controls{position:relative;z-index:10;pointer-events:auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;flex-shrink:0;height:auto;min-height:var(--art-control-height)}.art-video-player .art-controls .art-controls-left,.art-video-player .art-controls .art-controls-right{display:flex;flex-wrap:wrap;max-width:100%;min-height:var(--art-control-height)}.art-video-player .art-controls .art-controls-center{display:none;justify-content:center;align-items:center;flex:1;height:100%;padding:0 10px}.art-video-player .art-controls .art-controls-right{justify-content:flex-end;margin-left:auto}.art-video-player .art-controls .art-control{display:flex;justify-content:center;align-items:center;flex-shrink:0;max-width:100%;cursor:pointer;white-space:nowrap;opacity:var(--art-control-opacity);min-height:var(--art-control-height);min-width:var(--art-control-height);transition:opacity var(--art-transition-duration) ease}.art-video-player .art-controls .art-control .art-icon{height:var(--art-control-icon-size);width:var(--art-control-icon-size);transform:scale(var(--art-control-icon-scale));transition:transform var(--art-transition-duration) ease}.art-video-player .art-controls .art-control .art-icon:active{transform:scale(calc(var(--art-control-icon-scale) * .8))}.art-video-player .art-controls .art-control:hover{opacity:1}.art-control-volume{position:relative}.art-control-volume .art-volume-panel{display:flex;justify-content:center;align-items:center;position:absolute;left:0;right:0;padding:0 5px;font-size:12px;text-align:center;cursor:default;opacity:0;visibility:hidden;transform:translateY(10px);pointer-events:none;bottom:var(--art-control-height);width:var(--art-control-height);height:var(--art-volume-height);transition:opacity var(--art-transition-duration) ease,transform var(--art-transition-duration) ease}.art-control-volume .art-volume-panel .art-volume-inner{display:flex;flex-direction:column;align-items:center;gap:10px;height:100%;width:100%;padding:10px 0 12px;border-radius:var(--art-border-radius);background-color:var(--art-widget-background)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{flex:1;width:100%;display:flex;cursor:pointer;position:relative;justify-content:center}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{position:relative;display:flex;justify-content:center;width:2px;border-radius:var(--art-border-radius);overflow:hidden;background-color:#ffffff40}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded{position:absolute;inset:0;z-index:0;width:100%;height:100%;background-color:var(--art-theme)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator{position:absolute;width:var(--art-volume-handle-size);height:var(--art-volume-handle-size);margin-top:calc(var(--art-volume-handle-size) / -2);flex-shrink:0;transform:scale(1);border-radius:100%;background-color:var(--art-theme);transition:transform var(--art-transition-duration) ease}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator{transform:scale(.9)}.art-control-volume:hover .art-volume-panel,.art-control-volume:focus-within .art-volume-panel{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.art-video-player .art-notice{display:none;position:absolute;inset:0 0 auto;z-index:80;width:100%;height:100%;height:auto;padding:var(--art-padding);pointer-events:none}.art-video-player .art-notice .art-notice-inner{display:inline-flex;padding:5px;line-height:1;border-radius:var(--art-border-radius);background-color:var(--art-tip-background)}.art-video-player.art-notice-show .art-notice{display:flex}.art-video-player .art-contextmenus{display:none;flex-direction:column;position:absolute;z-index:120;padding:5px 0;border-radius:var(--art-border-radius);font-size:12px;background-color:var(--art-widget-background);min-width:var(--art-contextmenus-min-width)}.art-video-player .art-contextmenus .art-contextmenu{cursor:pointer;display:flex;padding:10px 15px;border-bottom:1px solid rgba(255,255,255,.1)}.art-video-player .art-contextmenus .art-contextmenu span{padding:0 8px}.art-video-player .art-contextmenus .art-contextmenu span:hover,.art-video-player .art-contextmenus .art-contextmenu span.art-current{color:var(--art-theme)}.art-video-player .art-contextmenus .art-contextmenu:hover{background-color:#ffffff1a}.art-video-player .art-contextmenus .art-contextmenu:last-child{border-bottom:none}.art-video-player.art-contextmenu-show .art-contextmenus{display:flex}.art-video-player .art-settings{display:none;flex-direction:column;position:absolute;z-index:90;left:auto;overflow-y:auto;overflow-x:hidden;border-radius:var(--art-border-radius);max-height:var(--art-settings-max-height);right:var(--art-padding);bottom:var(--art-controls-height, var(--art-control-height));transition:all var(--art-transition-duration) ease;background-color:var(--art-widget-background)}.art-video-player .art-settings .art-setting-panel{display:none;flex-direction:column}.art-video-player .art-settings .art-setting-panel.art-current{display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item{display:flex;justify-content:space-between;align-items:center;gap:5px;padding:0 5px;cursor:pointer;overflow:hidden;transition:background-color var(--art-transition-duration) ease}.art-video-player .art-settings .art-setting-panel .art-setting-item:hover{background-color:#ffffff1a}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current{color:var(--art-theme)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check{visibility:hidden;height:15px}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check{visibility:visible}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left{display:flex;justify-content:center;align-items:center;flex-shrink:1;min-width:0;overflow:hidden;gap:5px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;height:var(--art-settings-icon-size);width:var(--art-settings-icon-size)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right{display:flex;justify-content:center;align-items:center;flex-shrink:0;min-width:0;max-width:55%;gap:5px;font-size:12px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#ffffff80}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;min-width:32px;height:24px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{height:3px;width:80px;outline:none;appearance:none;background-color:#fff3}.art-video-player .art-settings .art-setting-panel .art-setting-item-back{border-bottom:1px solid rgba(255,255,255,.1)}.art-video-player.art-setting-show .art-settings{display:flex}.art-video-player .art-info{display:none;position:absolute;left:var(--art-padding);top:var(--art-padding);z-index:100;padding:10px;font-size:12px;border-radius:var(--art-border-radius);background-color:var(--art-widget-background)}.art-video-player .art-info .art-info-panel{display:flex;flex-direction:column;gap:5px}.art-video-player .art-info .art-info-panel .art-info-item{display:flex;align-items:center;gap:5px}.art-video-player .art-info .art-info-panel .art-info-item .art-info-title{width:100px;text-align:right}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;user-select:all}.art-video-player .art-info .art-info-close{position:absolute;top:5px;right:5px;cursor:pointer}.art-video-player.art-info-show .art-info{display:flex}.art-hide-cursor *{cursor:none!important}.art-video-player[data-aspect-ratio]{overflow:hidden}.art-video-player[data-aspect-ratio] .art-video{object-fit:fill;box-sizing:content-box}.art-fullscreen{--art-progress-height: 8px;--art-indicator-size: 20px;--art-control-height: 60px;--art-control-icon-scale: 1.3}.art-fullscreen-web{--art-progress-height: 8px;--art-indicator-size: 20px;--art-control-height: 60px;--art-control-icon-scale: 1.3;position:fixed;inset:0;z-index:var(--art-fullscreen-web-index);width:100%;height:100%}.art-mini-popup{position:fixed;z-index:9999;width:320px;height:180px;max-width:100vw;max-height:100vh;background:#000;border-radius:var(--art-border-radius);cursor:move;user-select:none;overflow:hidden;transition:opacity .2s ease;box-shadow:0 0 5px #00000080}.art-mini-popup svg{fill:#fff}.art-mini-popup .art-video{pointer-events:none}.art-mini-popup .art-mini-close{position:absolute;z-index:20;right:10px;top:10px;cursor:pointer;opacity:0;transition:opacity .2s ease}.art-mini-popup .art-mini-state{position:absolute;inset:0;z-index:30;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none;opacity:0;transition:opacity .2s ease;background-color:#00000040}.art-mini-popup .art-mini-state .art-icon{opacity:.75;cursor:pointer;transform:scale(3);pointer-events:auto;transition:transform .2s ease}.art-mini-popup .art-mini-state .art-icon:active{transform:scale(2.5)}.art-mini-popup.art-mini-dragging{opacity:.9}.art-mini-popup:hover .art-mini-close,.art-mini-popup:focus-within .art-mini-close,.art-mini-popup:hover .art-mini-state,.art-mini-popup:focus-within .art-mini-state{opacity:1}.art-mini-popup [role=button]:focus-visible{outline:2px solid #fff;outline-offset:-2px}.art-video-player[data-flip=horizontal] .art-video{transform:scaleX(-1)}.art-video-player[data-flip=vertical] .art-video{transform:scaleY(-1)}.art-video-player .art-layer-lock{display:none;justify-content:center;align-items:center;position:absolute;top:50%;border-radius:50%;transform:translateY(-50%);height:var(--art-lock-size);width:var(--art-lock-size);left:var(--art-padding);background-color:var(--art-tip-background)}.art-video-player .art-layer-auto-playback{display:none;gap:10px;align-items:center;position:absolute;border-radius:var(--art-border-radius);padding:10px;line-height:1;left:var(--art-padding);bottom:calc(var(--art-controls-height, var(--art-control-height)) + var(--art-bottom-gap) + 10px);background-color:var(--art-widget-background)}.art-video-player .art-layer-auto-playback .art-auto-playback-close{display:flex;justify-content:center;align-items:center;cursor:pointer}.art-video-player .art-layer-auto-playback .art-auto-playback-close svg{width:15px;height:15px;fill:var(--art-theme)}.art-video-player .art-layer-auto-playback .art-auto-playback-jump{color:var(--art-theme);cursor:pointer}.art-video-player.art-lock .art-layer-lock{display:flex}.art-video-player.art-lock:not(.art-control-show) .art-layer-lock{opacity:0;pointer-events:none}.art-video-player.art-lock:not(.art-control-show) .art-layer-lock:focus-within{opacity:1;pointer-events:auto}.art-video-player.art-lock .art-subtitle{bottom:var(--art-subtitle-bottom)!important}.art-video-player.art-mini-progress-bar .art-bottom,.art-video-player.art-lock .art-bottom{opacity:1;padding:0;background-image:none}.art-video-player.art-mini-progress-bar .art-bottom .art-controls,.art-video-player.art-lock .art-bottom .art-controls,.art-video-player.art-mini-progress-bar .art-bottom .art-progress,.art-video-player.art-lock .art-bottom .art-progress{transform:translateY(calc(var(--art-controls-height, var(--art-control-height)) + var(--art-bottom-gap) + var(--art-progress-height) / 4))}.art-video-player.art-mini-progress-bar .art-bottom .art-progress-indicator,.art-video-player.art-lock .art-bottom .art-progress-indicator{display:none!important}.art-video-player.art-control-show .art-layer-lock{display:flex}.art-control-selector{position:relative;display:flex;justify-content:center}.art-control-selector .art-selector-list{display:flex;flex-direction:column;align-items:center;text-align:center;position:absolute;border-radius:var(--art-border-radius);overflow-y:auto;overflow-x:hidden;opacity:0;visibility:hidden;transform:translateY(10px);pointer-events:none;bottom:var(--art-control-height);max-height:var(--art-selector-max-height);background-color:var(--art-widget-background);transition:opacity var(--art-transition-duration) ease,transform var(--art-transition-duration) ease}.art-control-selector .art-selector-list .art-selector-item{display:flex;justify-content:center;align-items:center;width:100%;padding:10px 15px;flex-shrink:0;line-height:1}.art-control-selector .art-selector-list .art-selector-item:hover{background-color:#ffffff1a}.art-control-selector .art-selector-list .art-selector-item:hover,.art-control-selector .art-selector-list .art-selector-item.art-current{color:var(--art-theme)}.art-control-selector:hover:not(.art-selector-dismissed) .art-selector-list,.art-control-selector.art-selector-open .art-selector-list{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.art-video-player [class*=hint--]{position:relative;display:inline-block;font-style:normal}.art-video-player [class*=hint--]:before,.art-video-player [class*=hint--]:after{position:absolute;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);transform:translateZ(0);visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;-webkit-transition:.3s ease;-moz-transition:.3s ease;transition:.3s ease;-webkit-transition-delay:0ms;-moz-transition-delay:0ms;transition-delay:0ms}.art-video-player [class*=hint--]:hover:before,.art-video-player [class*=hint--]:hover:after{visibility:visible;opacity:1}.art-video-player [class*=hint--]:hover:before,.art-video-player [class*=hint--]:hover:after{-webkit-transition-delay:.1s;-moz-transition-delay:.1s;transition-delay:.1s}.art-video-player [class*=hint--]:before{content:"";position:absolute;background:transparent;border:6px solid transparent;z-index:1000001}.art-video-player [class*=hint--]:after{background:#000;color:#fff;padding:8px 10px;font-size:12px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:12px;white-space:nowrap}.art-video-player [class*=hint--][aria-label]:after{content:attr(aria-label)}.art-video-player [class*=hint--][data-hint]:after{content:attr(data-hint)}.art-video-player [aria-label=""]:before,.art-video-player [aria-label=""]:after,.art-video-player [data-hint=""]:before,.art-video-player [data-hint=""]:after{display:none!important}.art-video-player .hint--top-left:before{border-top-color:#000}.art-video-player .hint--top-right:before{border-top-color:#000}.art-video-player .hint--top:before{border-top-color:#000}.art-video-player .hint--bottom-left:before{border-bottom-color:#000}.art-video-player .hint--bottom-right:before{border-bottom-color:#000}.art-video-player .hint--bottom:before{border-bottom-color:#000}.art-video-player .hint--left:before{border-left-color:#000}.art-video-player .hint--right:before{border-right-color:#000}.art-video-player .hint--top:before{margin-bottom:-11px}.art-video-player .hint--top:before,.art-video-player .hint--top:after{bottom:100%;left:50%}.art-video-player .hint--top:before{left:calc(50% - 6px)}.art-video-player .hint--top:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translate(-50%)}.art-video-player .hint--top:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top:hover:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translate(-50%) translateY(-8px)}.art-video-player .hint--bottom:before{margin-top:-11px}.art-video-player .hint--bottom:before,.art-video-player .hint--bottom:after{top:100%;left:50%}.art-video-player .hint--bottom:before{left:calc(50% - 6px)}.art-video-player .hint--bottom:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translate(-50%)}.art-video-player .hint--bottom:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom:hover:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translate(-50%) translateY(8px)}.art-video-player .hint--right:before{margin-left:-11px;margin-bottom:-6px}.art-video-player .hint--right:after{margin-bottom:-14px}.art-video-player .hint--right:before,.art-video-player .hint--right:after{left:100%;bottom:50%}.art-video-player .hint--right:hover:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--right:hover:after{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--left:before{margin-right:-11px;margin-bottom:-6px}.art-video-player .hint--left:after{margin-bottom:-14px}.art-video-player .hint--left:before,.art-video-player .hint--left:after{right:100%;bottom:50%}.art-video-player .hint--left:hover:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--left:hover:after{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--top-left:before{margin-bottom:-11px}.art-video-player .hint--top-left:before,.art-video-player .hint--top-left:after{bottom:100%;left:50%}.art-video-player .hint--top-left:before{left:calc(50% - 6px)}.art-video-player .hint--top-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translate(-100%)}.art-video-player .hint--top-left:after{margin-left:12px}.art-video-player .hint--top-left:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top-left:hover:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translate(-100%) translateY(-8px)}.art-video-player .hint--top-right:before{margin-bottom:-11px}.art-video-player .hint--top-right:before,.art-video-player .hint--top-right:after{bottom:100%;left:50%}.art-video-player .hint--top-right:before{left:calc(50% - 6px)}.art-video-player .hint--top-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translate(0)}.art-video-player .hint--top-right:after{margin-left:-12px}.art-video-player .hint--top-right:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top-right:hover:after{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--bottom-left:before{margin-top:-11px}.art-video-player .hint--bottom-left:before,.art-video-player .hint--bottom-left:after{top:100%;left:50%}.art-video-player .hint--bottom-left:before{left:calc(50% - 6px)}.art-video-player .hint--bottom-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translate(-100%)}.art-video-player .hint--bottom-left:after{margin-left:12px}.art-video-player .hint--bottom-left:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom-left:hover:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translate(-100%) translateY(8px)}.art-video-player .hint--bottom-right:before{margin-top:-11px}.art-video-player .hint--bottom-right:before,.art-video-player .hint--bottom-right:after{top:100%;left:50%}.art-video-player .hint--bottom-right:before{left:calc(50% - 6px)}.art-video-player .hint--bottom-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translate(0)}.art-video-player .hint--bottom-right:after{margin-left:-12px}.art-video-player .hint--bottom-right:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom-right:hover:after{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--small:after,.art-video-player .hint--medium:after,.art-video-player .hint--large:after{white-space:normal;line-height:1.4em;word-wrap:break-word}.art-video-player .hint--small:after{width:80px}.art-video-player .hint--medium:after{width:150px}.art-video-player .hint--large:after{width:300px}.art-video-player [class*=hint--]:after{text-shadow:0 -1px 0px black;box-shadow:4px 4px 8px #0000004d}.art-video-player .hint--error:after{background-color:#b34e4d;text-shadow:0 -1px 0px #592726}.art-video-player .hint--error.hint--top-left:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--top-right:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--top:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--bottom-left:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--bottom-right:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--left:before{border-left-color:#b34e4d}.art-video-player .hint--error.hint--right:before{border-right-color:#b34e4d}.art-video-player .hint--warning:after{background-color:#c09854;text-shadow:0 -1px 0px #6c5328}.art-video-player .hint--warning.hint--top-left:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--top-right:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--top:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--bottom-left:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--bottom-right:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--bottom:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--left:before{border-left-color:#c09854}.art-video-player .hint--warning.hint--right:before{border-right-color:#c09854}.art-video-player .hint--info:after{background-color:#3986ac;text-shadow:0 -1px 0px #1a3c4d}.art-video-player .hint--info.hint--top-left:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--top-right:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--top:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--bottom-left:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--bottom-right:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--bottom:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--left:before{border-left-color:#3986ac}.art-video-player .hint--info.hint--right:before{border-right-color:#3986ac}.art-video-player .hint--success:after{background-color:#458746;text-shadow:0 -1px 0px #1a321a}.art-video-player .hint--success.hint--top-left:before{border-top-color:#458746}.art-video-player .hint--success.hint--top-right:before{border-top-color:#458746}.art-video-player .hint--success.hint--top:before{border-top-color:#458746}.art-video-player .hint--success.hint--bottom-left:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--bottom-right:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--bottom:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--left:before{border-left-color:#458746}.art-video-player .hint--success.hint--right:before{border-right-color:#458746}.art-video-player .hint--always:after,.art-video-player .hint--always:before{opacity:1;visibility:visible}.art-video-player .hint--always.hint--top:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translate(-50%) translateY(-8px)}.art-video-player .hint--always.hint--top-left:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top-left:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translate(-100%) translateY(-8px)}.art-video-player .hint--always.hint--top-right:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top-right:after{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--bottom:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translate(-50%) translateY(8px)}.art-video-player .hint--always.hint--bottom-left:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom-left:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translate(-100%) translateY(8px)}.art-video-player .hint--always.hint--bottom-right:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom-right:after{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--left:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--always.hint--left:after{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--always.hint--right:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--always.hint--right:after{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--rounded:after{border-radius:4px}.art-video-player .hint--no-animate:before,.art-video-player .hint--no-animate:after{-webkit-transition-duration:0ms;-moz-transition-duration:0ms;transition-duration:0ms}.art-video-player .hint--bounce:before,.art-video-player .hint--bounce:after{-webkit-transition:opacity .3s ease,visibility .3s ease,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s ease,visibility .3s ease,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s ease,visibility .3s ease,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.art-video-player .hint--no-shadow:before,.art-video-player .hint--no-shadow:after{text-shadow:initial;box-shadow:initial}.art-video-player .hint--no-arrow:before{display:none}.art-video-player.art-mobile{--art-bottom-gap: 10px;--art-control-height: 38px;--art-control-icon-scale: 1;--art-state-size: 60px;--art-settings-max-height: 180px;--art-selector-max-height: 180px;--art-indicator-scale: 1;--art-control-opacity: 1}.art-video-player.art-mobile .art-controls-left{margin-left:calc(var(--art-padding) / -1)}.art-video-player.art-mobile .art-controls-right{margin-right:calc(var(--art-padding) / -1)}.art-video-player [tabindex]:focus-visible,.art-video-player input:focus-visible,.art-video-player button:focus-visible,.art-video-player a:focus-visible{outline:2px solid currentColor;outline-offset:-2px}.art-video-player.art-keyboard-focus :focus{outline:2px solid currentColor;outline-offset:-2px}.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom{opacity:1}.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom .art-controls,.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom .art-progress{transform:translateY(0)}';class Gn{constructor(t){this.scope=t.child(),this.cancelled=new Promise(t=>{this.scope.add(()=>{t(void 0)})}),this.signal=function(t){if("undefined"===typeof AbortController)return;const e=new AbortController;return t.add(()=>{e.abort()}),e}(this.scope)?.signal}get active(){return!this.scope.closed}cancel(){this.scope.dispose()}async run(t){if(this.active)try{return await Promise.race([t(),this.cancelled])}finally{this.cancel()}}}const Kn=new WeakMap;function Zn(t){return Kn.get(t)}function Jn(t){const e=t.ownedURL;t.ownedURL=void 0,e&&URL.revokeObjectURL(e)}const Qn=Ft;class to extends Qn{constructor(t){super(t),this.name="subtitle",this.option=null,this.destroyEvent=()=>null;const e=function(t,e){const r=b(e).child(),n={scope:r,revision:0,render:0,trackRevision:0};return Kn.set(t,n),r.add(()=>{Jn(n)}),n}(this,t);this.init(t.option.subtitle).catch(()=>{});let r=!1;const n=()=>{if(e.scope.closed||!this.url)return;const n=t.template.$video.webkitDisplayingFullscreen;"boolean"===typeof n&&n!==r&&(r=n,this.createTrack(n?"subtitles":"metadata",this.url))};t.on("video:timeupdate",n),e.scope.add(()=>{t.off("video:timeupdate",n)})}get url(){return this.art.template.$track.src}set url(t){this.switch(t).catch(()=>{})}get textTrack(){return this.art.template.$video?.textTracks?.[0]}get activeCues(){return Array.from(this.textTrack?.activeCues||[])}get cues(){return Array.from(this.textTrack?.cues||[])}style(t,e){const{$subtitle:r}=this.art.template;return"object"===typeof t?j(r,t):H(r,t,e)}update(){!function(t){const e=Zn(t);if(e.scope.closed)return;const r=e.revision,n=++e.render,o=()=>!e.scope.closed&&e.revision===r&&e.render===n,{art:i}=t,{$subtitle:a}=i.template;if(a.innerHTML="",!t.activeCues.length)return;if(i.emit("subtitleBeforeUpdate",t.activeCues),!o())return;const s=t.activeCues.map((t,e)=>t.text.split(/\r?\n/).filter(t=>t.trim()).map(t=>`
\n ${i.option.subtitle.escape?ot(t):t}\n
`).join("")).join("");o()&&(a.innerHTML=s,i.emit("subtitleAfterUpdate",t.activeCues))}(this)}async switch(t,e={}){const{i18n:r,notice:n,option:o}=this.art,i={...o.subtitle,...e,url:t},a=Zn(this),s=a.revision+1,c=await this.init(i);return!a.scope.closed&&a.revision===s&&e.name&&(n.show=`${r.get("Switch Subtitle")}: ${e.name}`),c}createTrack(t,e){!function(t,e,r){const n=Zn(t);if(n.scope.closed)return;const o=++n.trackRevision,{art:i}=t,{template:a}=i,s=a.$track,c=s.parentNode,l=s.nextSibling,d=document.createElement("track"),u=n.scope.child();u.add(()=>{d.onload=null,d.onerror=null});let p=!1;try{if(d.default=!0,d.kind=e,d.src=r,d.label=i.option.subtitle.name||"Artplayer",d.track.mode="hidden",d.onload=()=>{u.closed||a.$track!==d||i.emit("subtitleLoad",t.cues,t.option)},d.onerror=()=>{u.closed||a.$track!==d||(i.notice.show=new Error("Failed to load subtitle track"))},u.closed||n.trackRevision!==o)return void u.dispose();s.remove(),a.$video.appendChild(d),a.$track=d;const c=t.textTrack,l=c?i.proxy(c,"cuechange",()=>{u.closed||a.$track!==d||t.update()}):()=>{};if(u.add(()=>{i.events.remove(l)}),u.closed||n.trackRevision!==o)return u.dispose(),void d.remove();const f=n.track;n.track=u,t.destroyEvent=l,s.onload=null,s.onerror=null,p=!0;try{f?.dispose()}finally{n.ownedURL&&n.ownedURL!==r&&Jn(n)}}catch(f){if(p)throw f;if(u.dispose(),d.remove(),n.scope.closed||n.trackRevision!==o)throw f;throw a.$track=s,c&&c.insertBefore(s,l?.parentNode===c?l:null),f}}(this,t,e)}async init(t){const e=Zn(this),r=function(t){const e=t.request,r=new Gn(t.scope);return t.request=r,t.revision+=1,e?.cancel(),r}(e),{notice:n,template:{$subtitle:i}}=this.art;return r.run(async()=>{if(!this.textTrack)return null;if(o(t,_t.subtitle),!t.url)return;let a;this.option=t,this.style(t.style);try{if(!r.active)return;const n=await fetch(t.url,{signal:r.signal});if(!r.active)return;if(!n.ok)throw new Error(`Failed to load subtitle: ${n.status} ${n.statusText}`);const o=await n.arrayBuffer();if(!r.active)return;const s=function(t,e){const r=new TextDecoder(e.encoding).decode(t);switch(e.type||K(e.url)){case"srt":return{vtt:e.onVttLoad(dt(r))};case"ass":return{vtt:e.onVttLoad(pt(r))};case"vtt":return{vtt:e.onVttLoad(r)};default:return}}(o,t);if(!r.active)return;const c=void 0===s?t.url:a=ut(s.vtt);if(!r.active)return;i.innerHTML="";const l=e.trackRevision+1;if(this.url!==c&&this.createTrack("metadata",c),!r.active||e.trackRevision>l)return;return a&&(e.ownedURL=a,a=void 0),c}catch(s){if(!r.active)return;throw i.innerHTML="",n.show=s,s}finally{a&&(e.scope.closed||this.url!==a?URL.revokeObjectURL(a):e.ownedURL=a)}})}}const eo=`\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Player version:
\n
${i}
\n
\n
\n
Video url:
\n
\n
\n
\n
Video volume:
\n
\n
\n
\n
Video time:
\n
\n
\n
\n
Video duration:
\n
\n
\n
\n
Video resolution:
\n
\n x \n
\n
\n
\n
[x]
\n
\n
\n
\n `;class ro{constructor(t){this.art=t;const{option:e,constructor:r}=t;e.container instanceof Element?this.$container=e.container:(this.$container=R(e.container),X(this.$container,`No container element found by ${e.container}`)),X(P(),"The current browser does not support flex layout");const n=this.$container.tagName.toLowerCase();X("div"===n,`Unsupported container element type, only support 'div' but got '${n}'`),X(r.instances.every(t=>t.template.$container!==this.$container),"Cannot mount multiple instances on the same dom element"),this.query=this.query.bind(this),function(t,e,r){const n=v.get(e);if(n&&n!==t)throw new Error("Cannot mount multiple instances on the same dom element");const o=y(t);o.rollback=r,v.set(e,t),o.releaseContainer=()=>{v.get(e)===t&&v.delete(e)}}(t,this.$container,In(this.$container)),function(t,e,r){const n=y(t),o=n.mountingTemplate;n.mountingTemplate=e;try{r()}finally{n.mountingTemplate=o}}(t,this,()=>{this.$container.dataset.artId=String(t.id),this.init()})}static get html(){return eo}query(t){return R(t,this.$container)}init(){const{option:t}=this.art;var e;if(t.useSSR||(this.$container.innerHTML=ro.html),(e=this).$player=e.query(".art-video-player"),e.$video=e.query(".art-video"),e.$track=e.query("track"),e.$poster=e.query(".art-poster"),e.$subtitle=e.query(".art-subtitle"),e.$danmuku=e.query(".art-danmuku"),e.$bottom=e.query(".art-bottom"),e.$progress=e.query(".art-progress"),e.$controls=e.query(".art-controls"),e.$controlsLeft=e.query(".art-controls-left"),e.$controlsCenter=e.query(".art-controls-center"),e.$controlsRight=e.query(".art-controls-right"),e.$layer=e.query(".art-layers"),e.$loading=e.query(".art-loading"),e.$notice=e.query(".art-notice"),e.$noticeInner=e.query(".art-notice-inner"),e.$mask=e.query(".art-mask"),e.$state=e.query(".art-state"),e.$setting=e.query(".art-settings"),e.$info=e.query(".art-info"),e.$infoPanel=e.query(".art-info-panel"),e.$infoClose=e.query(".art-info-close"),e.$contextmenu=e.query(".art-contextmenus"),t.proxy){const e=t.proxy.call(this.art,this.art);if(w(this.art))return;!function(t){X(t instanceof HTMLVideoElement||t instanceof HTMLCanvasElement,"Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'")}(e),F(e,this.$video),e.className="art-video",this.$video=e}t.backdrop&&O(this.$player,"art-backdrop"),u&&O(this.$player,"art-mobile")}destroy(t){t?this.$container.innerHTML="":O(this.$player,"art-destroy")}}const no=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);class oo{on(t,e,r){const n=this.e||(this.e={});let o=no(n,t)?n[t]:void 0;return o||(o=[],Object.defineProperty(n,t,{value:o,enumerable:!0,configurable:!0,writable:!0})),o.push({fn:e,ctx:r}),this}once(t,e,r){const n=this,o=e;let i=!1;function a(...e){i||(i=!0,n.off(t,a),o.apply(r,e))}return a._=e,this.on(t,a,r)}emit(t,...e){const r=this.e||(this.e={}),n=(no(r,t)&&r[t]||[]).slice();for(const o of n)o.fn.apply(o.ctx,e);return this}off(t,e){const r=this.e||(this.e={}),n=no(r,t)?r[t]:void 0,o=[];if(n&&e)for(let i=0,a=n.length;i{e.destroying||e.finalizers.dispose()})}(this);try{if(this.template=new ro(this),b(this).closed)return;if(this.events=new ze(this),b(this).closed)return;if(this.storage=new Un,b(this).closed)return;if(this.icons=new Ve(this),b(this).closed)return;if(this.i18n=new We(this),b(this).closed)return;if(this.notice=new Ze(this),b(this).closed)return;if(this.player=new Ir(this),b(this).closed)return;if(this.layers=new qe(this),b(this).closed)return;if(this.controls=new ke(this),b(this).closed)return;if(this.contextmenu=new Xt(this),b(this).closed)return;if(this.subtitle=new to(this),b(this).closed)return;if(this.info=new je(this),b(this).closed)return;if(this.loading=new Ue(this),b(this).closed)return;if(this.hotkey=new Ne(this),b(this).closed)return;if(this.mask=new Xe(this),b(this).closed)return;if(this.setting=new qn(this),b(this).closed)return;if(this.plugins=new Kr(this),b(this).closed)return;if("function"===typeof e&&this.on("ready",()=>e.call(this,this)),so.DEBUG){const t=t=>console.log(`[ART.${this.id}] -> ${t}`);t(`Version@${so.version}`);for(let e=0;et(`Event@${e.type}`))}(function(t){const e=y(t);return e.rollback=void 0,!e.scope.closed})(this)&&ao.push(this)}catch(r){try{x(this,ao,!0,so.REMOVE_SRC_WHEN_DESTROY,!0)}catch(n){console.warn("Failed to clean up ArtPlayer initialization:",n)}throw r}}static get instances(){return ao}static get version(){return i}static get config(){return f}static get utils(){return ft}static get scheme(){return _t}static get Emitter(){return oo}static get validator(){return o}static get kindOf(){return o.kindOf}static get html(){return ro.html}static get option(){return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:t=>t},moreVideoAttr:{controls:!1,preload:c?"auto":"metadata"},i18n:{},icons:{},cssVar:{},customType:{},lang:"undefined"===typeof navigator?void 0:navigator?.language.toLowerCase()}}get proxy(){return this.events.proxy}get query(){return this.template.query}get video(){return this.template.$video}reset(){this.video.removeAttribute("src"),this.video.load()}destroy(t=!0){x(this,ao,t,so.REMOVE_SRC_WHEN_DESTROY)}}var co,lo;return so.STYLE=Xn,so.DEBUG=!1,so.CONTEXTMENU=!0,so.NOTICE_TIME=2e3,so.SETTING_WIDTH=250,so.SETTING_ITEM_WIDTH=200,so.SETTING_ITEM_HEIGHT=35,so.RESIZE_TIME=200,so.SCROLL_TIME=200,so.SCROLL_GAP=50,so.AUTO_PLAYBACK_MAX=10,so.AUTO_PLAYBACK_MIN=5,so.AUTO_PLAYBACK_TIMEOUT=3e3,so.RECONNECT_TIME_MAX=5,so.RECONNECT_SLEEP_TIME=1e3,so.CONTROL_HIDE_TIME=3e3,so.DBCLICK_TIME=300,so.DBCLICK_FULLSCREEN=!0,so.MOBILE_DBCLICK_PLAY=!0,so.MOBILE_CLICK_PLAY=!1,so.AUTO_ORIENTATION_TIME=200,so.INFO_LOOP_TIME=1e3,so.FAST_FORWARD_VALUE=3,so.FAST_FORWARD_TIME=1e3,so.TOUCH_MOVE_RATIO=.5,so.VOLUME_STEP=.1,so.SEEK_STEP=5,so.PLAYBACK_RATE=[.5,.75,1,1.25,1.5,2],so.ASPECT_RATIO=["default","4:3","16:9"],so.FLIP=["normal","horizontal","vertical"],so.FULLSCREEN_WEB_IN_BODY=!0,so.LOG_VERSION=!0,so.USE_RAF=!1,so.REMOVE_SRC_WHEN_DESTROY=!0,co=so,lo=Xn,p&&(window.Artplayer=co,a("artplayer-style",lo),setTimeout(()=>{co.LOG_VERSION&&console.log(`%c ArtPlayer %c ${co.version} %c https://artplayer.org`,"color: #fff; background: #5f5f5f","color: #fff; background: #4bc729","")},100)),so}); diff --git a/packages/artplayer/dist/artplayer.legacy.js b/packages/artplayer/dist/artplayer.legacy.js index 0430cccb7..3d0ba4290 100644 --- a/packages/artplayer/dist/artplayer.legacy.js +++ b/packages/artplayer/dist/artplayer.legacy.js @@ -1,5 +1,5 @@ /*! - * artplayer.js v5.4.1 + * artplayer.js v6.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. @@ -67,4 +67,4 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.Artplayer=e(),define(function(){return t.Artplayer})):(t="undefined"!==typeof globalThis?globalThis:t||self).Artplayer=e()}(this,function(){"use strict";var t=Object.defineProperty,e=Object.defineProperties,r=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable,a=(e,r,n)=>r in e?t(e,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[r]=n,s=(t,e)=>{for(var r in e||(e={}))o.call(e,r)&&a(t,r,e[r]);if(n)for(var r of n(e))i.call(e,r)&&a(t,r,e[r]);return t},l=(t,n)=>e(t,r(n)),c=(t,e,r)=>new Promise((n,o)=>{var i=t=>{try{s(r.next(t))}catch(e){o(e)}},a=t=>{try{s(r.throw(t))}catch(e){o(e)}},s=t=>t.done?n(t.value):Promise.resolve(t.value).then(i,a);s((r=r.apply(t,e)).next())});function d(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var u,p={exports:{}};var f=(u||(u=1,p.exports=function(){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}var e=Object.prototype.toString,r=function(r){if(void 0===r)return"undefined";if(null===r)return"null";var o=t(r);if("boolean"===o)return"boolean";if("string"===o)return"string";if("number"===o)return"number";if("symbol"===o)return"symbol";if("function"===o)return"GeneratorFunction"===n(r)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(r))return"array";if(function(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}(r))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(r))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(r))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(r))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(r))return"regexp";switch(n(r)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(r))return"generator";switch(o=e.call(r)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return o.slice(8,-1).toLowerCase().replace(/\s/g,"")};function n(t){return t.constructor?t.constructor.name:null}function o(t,e){var n=2{document.head.appendChild(r)}):(document.head||document.documentElement).appendChild(r)),r.textContent=e}const g=globalThis.CUSTOM_USER_AGENT,y=null!=g?g:"undefined"===typeof navigator?"":navigator.userAgent,b=/^(?:(?!chrome|android).)*safari/i.test(y),w=/iPad|iPhone|iPod/i.test(y)&&("undefined"===typeof window||!window.MSStream),x=w||y.includes("Macintosh")&&"undefined"!==typeof navigator&&navigator.maxTouchPoints>=1,k=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(y)||x,$="undefined"!==typeof window&&"undefined"!==typeof document;const E={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webkitSupportsFullscreen","webkitDisplayingFullscreen","onenterpictureinpicture","onleavepictureinpicture","disablePictureInPicture","cancelVideoFrameCallback","requestVideoFrameCallback","getVideoPlaybackQuality","requestPictureInPicture","webkitEnterFullScreen","webkitEnterFullscreen","webkitExitFullScreen","webkitExitFullscreen"]};class A extends Error{constructor(t){super("Failed to release ArtPlayer resources"),this.errors=t,this.name="ResourceCleanupError"}}class C{constructor(){this.cleanups=new Set,this.disposed=!1}get closed(){return this.disposed}add(t){let e=!0;const r=()=>{e&&(e=!1,this.cleanups.delete(r),t())};return this.closed?r():this.cleanups.add(r),r}child(){const t=new C,e=this.add(()=>{t.dispose()});return t.add(()=>{e()}),t}dispose(){if(this.closed)return;this.disposed=!0;const t=[];for(const r of Array.from(this.cleanups).reverse())try{r()}catch(e){e instanceof A?t.push(...e.errors):t.push(e)}if(t.length)throw new A(t)}}const S=new WeakMap,T=new WeakMap;function L(t){const e=S.get(t);if(!e)throw new Error("ArtPlayer lifecycle has not been initialized");return e}function P(t){return L(t).scope}function M(t){const e=L(t);return e.destroying||e.scope.closed}function z(t,e,r,n,o=!1){var i,a,s;const l=L(t);if(l.destroying||l.scope.closed)return;l.destroying=!0;const c=[],d=t=>{try{t()}catch(e){c.push(...e instanceof A?e.errors:[e])}};n&&(null==(i=t.template)?void 0:i.$video)&&d(()=>t.reset()),d(()=>l.scope.dispose()),d(()=>{var e;return null==(e=t.template||l.mountingTemplate)?void 0:e.destroy(r)});const u=e.indexOf(t);-1!==u&&e.splice(u,1),t.isDestroy=!0,o||(null==(a=l.releaseContainer)||a.call(l),l.releaseContainer=void 0),d(()=>t.emit("destroy")),d(()=>l.finalizers.dispose()),o&&l.rollback&&d(l.rollback),l.rollback=void 0,null==(s=l.releaseContainer)||s.call(l),l.releaseContainer=void 0;for(const p of c.slice(1))console.warn("Additional ArtPlayer cleanup failure:",p);if(c.length)throw c[0]}const R=new WeakMap;function O(t,e){const r=P(t).child();return R.set(e,r),r}function D(t){const e=R.get(t);if(!e)throw new Error("ArtPlayer component has not been registered");return e}function I(t){var e;null==(e=R.get(t))||e.dispose()}function N(t,e,r,n){const o=D(e);if(o.closed)return;const i=(...t)=>{if(!o.closed)return n(...t)};t.on(r,i),o.add(()=>{t.off(r,i)})}function _(t,e){return{on:(r,n)=>{N(t,e,r,n)},proxy:(r,n,o)=>function(t,e,r,n,o){const i=D(e);if(i.closed)return()=>{};const a=t.events.proxy(r,n,t=>{if(!i.closed)return o(t)});return i.add(()=>{t.events.remove(a)})}(t,e,r,n,o)}}function W(t){var e;if(t.composedPath)return t.composedPath();const r=[];let n=t.target;for(;n;)r.push(n),n=null!=(e=n.parentNode)?e:null;return"undefined"===typeof window||r.includes(window)||r.push(window),r}function F(t,e){return W(t).includes(e)}function V(){const t=document.createElement("div");return t.style.display="flex","flex"===t.style.display}function Y(t){return t.getBoundingClientRect()}function B(){const t=document.createElement("div");t.style.cssText="position:fixed;top:env(safe-area-inset-top,0px);right:env(safe-area-inset-right,0px);bottom:env(safe-area-inset-bottom,0px);left:env(safe-area-inset-left,0px);pointer-events:none;visibility:hidden;";try{document.body.appendChild(t);const e=getComputedStyle(t);return{top:Number.parseFloat(e.top)||0,right:Number.parseFloat(e.right)||0,bottom:Number.parseFloat(e.bottom)||0,left:Number.parseFloat(e.left)||0}}finally{t.remove()}}function H(t,e=document){return e.querySelector(t)}function j(t,e){return t.classList.add(e)}function q(t,e){return t.classList.remove(e)}function U(t,e){return t.classList.contains(e)}function X(t,e){return e instanceof Element?t.appendChild(e):t.insertAdjacentHTML("beforeend",String(e)),t.lastElementChild||t.lastChild}function G(t){return Array.from(t.parentElement.children).filter(e=>e!==t)}function K(t,e){G(t).forEach(t=>q(t,e)),j(t,e)}function Z(t,e){return e.parentNode.replaceChild(t,e),t}function J(t){return document.createElement(t)}function Q(t,e,r="top"){k||(t.setAttribute("aria-label",e),j(t,"hint--rounded"),j(t,`hint--${r}`))}function tt(t="",e=""){const r=J("i");return j(r,"art-icon"),j(r,`art-icon-${t}`),X(r,e),r}function et(t,e,r){return t.style[e]=r,t}function rt(t,e){for(const r in e)et(t,r,e[r]);return t}function nt(t,e,r){return new Promise((n,o)=>{const i=r?r.child():new C;let a=!1,s=()=>{};function l(t){if(!a){a=!0;try{i.dispose()}catch(e){console.warn("Additional image cleanup failure:",e)}try{s()}catch(e){console.warn("Additional image cleanup failure:",e)}o(t)}}function c(t){if(!a&&!i.closed){a=!0;try{i.dispose(),n(t)}catch(e){try{s()}finally{o(e)}}}}if(i.add(()=>{if(!a){a=!0;try{s()}finally{n(void 0)}}}),!i.closed)try{const n=new Image;d(n,()=>{if(!e||1===e)return void c(n);const t=document.createElement("canvas"),o=t.getContext("2d");if(t.width=n.width*e,t.height=n.height*e,!o)throw new TypeError("Canvas 2D context is unavailable");a||i.closed||(o.drawImage(n,0,0,t.width,t.height),a||i.closed||t.toBlob(t=>{if(!a&&!i.closed)try{if(!t)throw new Error("Unable to encode thumbnail image");const e=URL.createObjectURL(t);let n=!1;const o=()=>{n||(n=!0,URL.revokeObjectURL(e))};if(s=r?r.add(o):o,a||i.closed)return void s();const l=new Image;d(l,()=>c(l)),i.closed||(l.src=e)}catch(e){l(e)}}))}),i.closed||(n.src=t)}catch(u){l(u)}function d(e,r){e.onload=()=>{if(!a&&!i.closed)try{r()}catch(u){l(u)}},e.onerror=()=>l(new Error(`Image load failed: ${t}`)),i.add(()=>{e.onload=null,e.onerror=null,a||e.removeAttribute("src")})}})}class ot extends Error{constructor(t,e){super(t),"captureStackTrace"in Error&&"function"===typeof Error.captureStackTrace&&Error.captureStackTrace(this,e||this.constructor),this.name="ArtPlayerError"}}function it(t,e){if(!t)throw new ot(e);return t}function at(t){const e=t;return e&&"function"===typeof e.catch?e.catch(()=>{}):t}function st(t){const e=t.search(/[?#]/),r=(e<0?t:t.slice(0,e)).trim().toLowerCase();return r.slice(r.lastIndexOf(".")+1)}function lt(t,e){const r=document.createElement("a");r.style.display="none",r.href=t,r.download=e,document.body.appendChild(r);try{r.click()}finally{r.remove()}}function ct(t,e,r){return Math.max(Math.min(t,Math.max(e,r)),Math.min(e,r))}function dt(t){return t.charAt(0).toUpperCase()+t.slice(1)}function ut(t){if(!t)return"00:00";const e=Math.floor(t/3600),r=Math.floor((t-3600*e)/60),n=Math.floor(t-3600*e-60*r);return(e>0?[e,r,n]:[r,n]).map(t=>t<10?`0${t}`:String(t)).join(":")}const pt={"&":"&","<":"<",">":">","'":"'",'"':"""},ft={"&":"&","<":"<",">":">","'":"'",""":'"'},ht=/(&|<|>|'|")/g;function mt(t){return t.replace(/[&<>'"]/g,t=>pt[t]||t)}const vt=Object.defineProperty,{hasOwnProperty:gt}=Object.prototype;function yt(t,e){return gt.call(t,e)}function bt(t,e){return Object.getOwnPropertyDescriptor(t,e)}function wt(...t){const e=t=>!!t&&"object"===typeof t&&!Array.isArray(t);return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=t[n],i=r[n];let a;a=Array.isArray(o)&&Array.isArray(i)?o.concat(...i):e(o)&&e(i)?wt(o,i):i,vt(t,n,{value:a,enumerable:!0,configurable:!0,writable:!0})}),t),{})}function xt(t){return"WEBVTT \r\n\r\n".concat((e=t,e.replace(/(\d\d:\d\d:\d\d)[,.](\d+)/g,(t,e,r)=>{let n=r.slice(0,3);return 1===r.length&&(n=`${r}00`),2===r.length&&(n=`${r}0`),`${e},${n}`})).replace(/\{\\([ibu])\}/g,"").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").replace(/\{[\s\S]*?\}/g,"").concat("\r\n\r\n"));var e}function kt(t){return URL.createObjectURL(new Blob([t],{type:"text/vtt"}))}function $t(t){const e=new RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i");function r(t=""){return t.split(/[:.]/).map((t,e,r)=>{if(e===r.length-1){if(1===t.length)return`.${t}00`;if(2===t.length)return`.${t}0`}else if(1===t.length)return(0===e?"0":":0")+t;return 0===e?t:e===r.length-1?`.${t}`:`:${t}`}).join("")}return`WEBVTT\n\n${t.split(/\r?\n/).map(t=>{const n=t.match(e);if(!n)return null;const[,o="",i="",,,a=""]=n;return{start:r(o.trim()),end:r(i.trim()),text:a.replace(/\{[\s\S]*?\}/g,"").replace(/(\\N)/g,"\n").trim().split(/\r?\n/).map(t=>t.trim()).join("\n")}}).filter(t=>t).map((t,e)=>t?`${e+1}\n${t.start} --\x3e ${t.end}\n${t.text}`:"").filter(t=>t.trim()).join("\n\n")}`}const Et=Object.freeze(Object.defineProperty({__proto__:null,ArtPlayerError:ot,addClass:j,append:X,assToVtt:$t,capitalize:dt,clamp:ct,createElement:J,debounce:function(t,e){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>(r=void 0,t.apply(this,n)),e)}},def:vt,download:lt,errorHandle:it,escape:mt,get:bt,getComposedPath:W,getExt:st,getIcon:tt,getRect:Y,getSafeAreaInsets:B,getStyle:function(t,e,r=!0){const n=window.getComputedStyle(t,null).getPropertyValue(e);return r?Number.parseFloat(n):n},has:yt,hasClass:U,includeFromEvent:F,inverseClass:K,isBrowser:$,isIOS:w,isIOS13:x,isInViewport:function(t,e=0){const r=t.getBoundingClientRect(),n=window.innerHeight||document.documentElement.clientHeight,o=window.innerWidth||document.documentElement.clientWidth,i=r.top-e<=n&&r.top+r.height+e>=0,a=r.left-e<=o+e&&r.left+r.width+e>=0;return i&&a},isMobile:k,isSafari:b,loadImg:function(t,e){return nt(t,e,void 0)},mergeDeep:wt,query:H,queryAll:function(t,e=document){return Array.from(e.querySelectorAll(t))},remove:function(t){return t.parentNode.removeChild(t)},removeClass:q,replaceElement:Z,secondToTime:ut,setStyle:et,setStyleText:v,setStyles:rt,siblings:G,silencePromise:at,sleep:function(t=0){return new Promise(e=>setTimeout(e,t))},srtToVtt:xt,supportsFlex:V,throttle:function(t,e){let r=!1;return function(...n){r||(t.apply(this,n),r=!0,setTimeout(()=>{r=!1},e))}},tooltip:Q,unescape:function(t){return t.replace(ht,t=>ft[t]||t)},userAgent:y,vttToBlob:kt},Symbol.toStringTag,{value:"Module"}));function At(){}function Ct(t,e,r,n,o={}){const{capture:i=!1,once:a=!1,signal:s}=o;if(t.closed||(null==s?void 0:s.aborted))return At;let l=At;function c(e){a&&l(),t.closed||("function"===typeof n?n.call(this,e):n.handleEvent(e))}return e.addEventListener(r,c,o),l=t.add(()=>{try{e.removeEventListener(r,c,i)}finally{null==s||s.removeEventListener("abort",l)}}),null==s||s.addEventListener("abort",l,{once:!0}),l}function St(t,e,r){if(t.closed)return At;let n=!0,o=At;const i=setTimeout(()=>{n&&(o(),t.closed||e())},r);return o=t.add(()=>{n=!1,clearTimeout(i)}),o}function Tt(t,e=0){return t.closed?Promise.resolve(!1):new Promise(r=>{let n=!1,o=At;const i=setTimeout(()=>{n=!0,o(),r(!0)},e);o=t.add(()=>{clearTimeout(i),n||r(!1)})})}const Lt=new WeakSet;function Pt(t){Lt.add(t),t.preventDefault()}function Mt(t){return!t.altKey&&!t.ctrlKey&&!t.metaKey&&!t.isComposing&&229!==t.keyCode}function zt(t,e,r=()=>e.click(),n=()=>!0){if(t.closed)return;e.hasAttribute("role")||e.setAttribute("role","button"),e.hasAttribute("tabindex")||(e.tabIndex=0);let o=!1;const i=()=>n()&&"true"!==e.getAttribute("aria-disabled")&&!e.hasAttribute("disabled"),a=t=>(t.composedPath()[0]||t.target)===e;Ct(t,e,"keydown",t=>{const e=t;a(e)&&Mt(e)&&!e.defaultPrevented&&("Enter"===e.key?(Pt(e),!e.repeat&&i()&&r()):" "===e.key&&(Pt(e),!e.repeat&&i()&&(o=!0)))}),Ct(t,e,"keyup",t=>{const n=t;if(" "!==n.key)return;const s=o;o=!1,s&&a(n)&&Mt(n)&&!n.defaultPrevented&&i()&&e.ownerDocument.activeElement===e&&(Pt(n),r())}),Ct(t,e,"blur",()=>{o=!1}),t.add(()=>{o=!1})}function Rt(t,e){return X(t,e)}function Ot(t,e){return e.querySelector(t)}const Dt=new WeakSet;function It(t){const e=t.template.$player;!M(t)&&e.isConnected&&(e.hasAttribute("tabindex")||(e.setAttribute("tabindex","-1"),Dt.has(e)||(Dt.add(e),P(t).add(()=>{Dt.delete(e),"-1"===e.getAttribute("tabindex")&&e.removeAttribute("tabindex")}))),e.focus({preventScroll:!0}))}const Nt=new WeakSet,_t="[tabindex],button,input,select,textarea,a[href],[contenteditable]";function Wt(t){return[t,...t.querySelectorAll(_t)].find(t=>{var e;if(!t.matches(_t)||t.tabIndex<0||t.matches(":disabled")||t.closest("[inert]")||"true"===t.getAttribute("aria-disabled")||!t.getClientRects().length)return!1;const r=null==(e=t.ownerDocument.defaultView)?void 0:e.getComputedStyle(t);return"hidden"!==(null==r?void 0:r.visibility)&&"collapse"!==(null==r?void 0:r.visibility)})}function Ft(t,e,r){var n;const o=null==e?void 0:e.ownerDocument,i=null==o?void 0:o.activeElement;if(!["control","contextmenu"].includes(null!=(n=t.name)?n:"")||Nt.has(t)||!e||!o||!i||!e.contains(i))return()=>{};const a=t.art.template.$player,s=Array.from(a.querySelectorAll(`.art-${t.name}`)),l=s.indexOf(e),c=[...s.slice(l+1),...s.slice(0,l).reverse()];return Nt.add(t),()=>{var e;if(Nt.delete(t),M(t.art)||!a.isConnected||o.activeElement!==o.body)return;const n=r?null==(e=t.cache.get(r))?void 0:e.$ref:void 0;for(const t of[...n?[n]:[],...c]){if(!a.contains(t))continue;const e=Wt(t);if(e)return void e.focus({preventScroll:!0})}It(t.art)}}const Vt="array",Yt="boolean",Bt="string",Ht="number",jt="object",qt="function";function Ut(t,e,r){return it(e===Bt||e===Ht||t instanceof Element,`${r.join(".")} require '${Bt}' or 'Element' type`)}const Xt={html:Ut,disable:`?${Yt}`,name:`?${Bt}`,index:`?${Ht}`,style:`?${jt}`,click:`?${qt}`,mounted:`?${qt}`,tooltip:`?${Bt}|${Ht}`,width:`?${Ht}`,selector:`?${Vt}`,onSelect:`?${qt}`,switch:`?${Yt}`,onSwitch:`?${qt}`,range:`?${Vt}`,onRange:`?${qt}`,onChange:`?${qt}`},Gt={id:Bt,container:Ut,url:Bt,poster:Bt,type:Bt,theme:Bt,lang:Bt,volume:Ht,isLive:Yt,muted:Yt,autoplay:Yt,autoSize:Yt,autoMini:Yt,loop:Yt,flip:Yt,playbackRate:Yt,aspectRatio:Yt,screenshot:Yt,setting:Yt,hotkey:Yt,pip:Yt,mutex:Yt,backdrop:Yt,fullscreen:Yt,fullscreenWeb:Yt,subtitleOffset:Yt,miniProgressBar:Yt,useSSR:Yt,playsInline:Yt,lock:Yt,gesture:Yt,fastForward:Yt,autoPlayback:Yt,autoOrientation:Yt,airplay:Yt,proxy:`?${qt}`,plugins:[qt],layers:[Xt],contextmenu:[Xt],settings:[Xt],controls:[l(s({},Xt),{position:(t,e,r)=>{const n=["top","left","right"];return it("string"===typeof t&&n.includes(t),`${r.join(".")} only accept ${n.toString()} as parameters`)}})],quality:[{default:`?${Yt}`,html:Bt,url:Bt}],highlight:[{time:Ht,text:Bt}],thumbnails:{url:Bt,number:Ht,column:Ht,width:Ht,height:Ht,scale:Ht},subtitle:{url:Bt,name:Bt,type:Bt,style:jt,escape:Yt,encoding:Bt,onVttLoad:qt},moreVideoAttr:jt,i18n:jt,icons:jt,cssVar:jt,customType:jt},Kt=new WeakSet;class Zt{constructor(t){this.id=0,this.art=t,this.cache=new Map,this.add=this.add.bind(this),this.remove=this.remove.bind(this),this.update=this.update.bind(this)}get show(){return U(this.art.template.$player,`art-${this.name}-show`)}set show(t){const{$player:e}=this.art.template,r=`art-${this.name}-show`;t?j(e,r):q(e,r),this.art.emit(this.name,t)}toggle(){this.show=!this.show}add(t){var e;if(M(this.art))return;const r="function"===typeof t?t(this.art):t;if(M(this.art))return;if(r.html=r.html||"",h(r,Xt),!this.$parent||!this.name||r.disable)return;const n=r.name||`${this.name}${this.id}`,o=this.cache;it(!o.has(n),`Can't add an existing [${n}] to the [${this.name}]`),this.id+=1;const i=document.createElement("div"),a=O(this.art,i),s=[],l=Object.getOwnPropertyDescriptor(this,n);let c=!1;a.add(()=>{for(const t of s)this.art.events.remove(t)});try{if(a.closed)return;if(function(t,e,r,n,o,i){j(t,`art-${r}`),j(t,`art-${r}-${n}`);const a=Array.from(e.children);t.dataset.index=String(i.index||o);const s=a.find(e=>Number(e.dataset.index)>=Number(t.dataset.index));s?s.insertAdjacentElement("beforebegin",t):X(e,t),i.html&&X(t,i.html),i.style&&rt(t,i.style),i.tooltip&&Q(t,i.tooltip)}(i,this.$parent,this.name,n,this.id,r),a.closed)return;if(r.click){("control"===this.name&&!r.selector||"contextmenu"===this.name&&!i.querySelector("[data-value]"))&&!i.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")&&zt(a,i);const t=this.art.events.proxy(i,"click",t=>{a.closed||(t.preventDefault(),r.click.call(this.art,this,t))});s.push(t)}if(r.selector&&["left","right"].includes(r.position)&&this.selector(r,i,s),a.closed)return;return function(t,e,r){const n=t;"__proto__"===e?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r}(this,n,i),c=!0,o.set(n,{$ref:i,events:s,option:r}),r.mounted&&r.mounted.call(this.art,i),i}catch(d){try{I(i)}catch(u){console.warn("ArtPlayer component cleanup failed:",u)}throw(null==(e=o.get(n))?void 0:e.$ref)===i&&o.delete(n),c&&this[n]===i&&(l?Object.defineProperty(this,n,l):delete this[n]),i.remove(),d}}remove(t){it(this.cache.has(t),`Can't find [${t}] from the [${this.name}]`);const e=this.cache.get(t);if(Kt.has(e))return;const r=Ft(this,e.$ref);Kt.add(e);try{e.option.beforeUnmount&&e.option.beforeUnmount.call(this.art,e.$ref);try{I(e.$ref)}finally{this.cache.get(t)===e&&(this.cache.delete(t),delete this[t]),e.$ref.remove()}}finally{Kt.delete(e),r()}}update(t){var e;const r=Ft(this,null==(e=this.cache.get(t.name))?void 0:e.$ref,t.name);try{if(this.cache.has(t.name)){const e=this.cache.get(t.name);t=Object.assign(e.option,t),this.remove(t.name)}return this.add(t)}finally{r()}}}function Jt(t){for(const e of t.querySelectorAll("[data-value]"))e.setAttribute("aria-pressed",String(e.classList.contains("art-current")))}function Qt(t,e){var r,n;const o=D(t);if(!o.closed){t.setAttribute("role","group"),t.setAttribute("aria-label",e);for(const i of t.querySelectorAll("[data-value]"))zt(o,i),i.setAttribute("aria-label",`${e}: ${null!=(n=null==(r=i.textContent)?void 0:r.trim())?n:""}`);Jt(t)}}const te=new WeakMap;function ee(t,e){e?te.set(t,e):te.delete(t)}function re(t){const e=new Set;let r=t;for(;!e.has(r);){e.add(r);let t,n=r;for(;n&&!t;)t=te.get(n),n=n.parentElement;if(!t)return r;r=t}return t}function ne(t){const e=t;return!!e&&(["INPUT","TEXTAREA","SELECT"].includes(e.tagName)||e.isContentEditable)}function oe(t){var e;const r=null==(e=t.ownerDocument.defaultView)?void 0:e.getComputedStyle(t).visibility;return t.isConnected&&!t.matches(":disabled")&&!t.closest("[inert]")&&"true"!==t.getAttribute("aria-disabled")&&t.getClientRects().length>0&&"hidden"!==r&&"collapse"!==r}class ie extends Zt{constructor(t){super(t),this.name="contextmenu",this.$parent=t.template.$contextmenu,O(t,this.$parent),k||this.init()}init(){const{option:t,template:{$player:e,$contextmenu:r}}=this.art,{on:n,proxy:o}=_(this.art,r);t.playbackRate&&this.add(function(t){return e=>{const{i18n:r,constructor:{PLAYBACK_RATE:n}}=e,o=n.map(t=>`${1===t?r.get("Normal"):t.toFixed(1)}`).join(""),i=r.get("Play Speed");return l(s({},t),{html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.playbackRate=Number(n),t.show=!1)},mounted:t=>{const{on:r}=_(e,t),n=H('[data-value="1"]',t);n&&K(n,"art-current"),Qt(t,i),r("video:ratechange",()=>{const r=Array.from(t.querySelectorAll("span")).find(t=>Number(t.dataset.value)===e.playbackRate);r&&(K(r,"art-current"),Jt(t))})}})}}({name:"playbackRate",index:10})),t.aspectRatio&&this.add(function(t){return e=>{const{i18n:r,constructor:{ASPECT_RATIO:n}}=e,o=n.map(t=>`${"default"===t?r.get("Default"):t}`).join(""),i=r.get("Aspect Ratio");return l(s({},t),{html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.aspectRatio=n,t.show=!1)},mounted:t=>{const{on:r}=_(e,t),n=H('[data-value="default"]',t);n&&K(n,"art-current"),Qt(t,i),r("aspectRatio",e=>{const r=Array.from(t.querySelectorAll("span")).find(t=>t.dataset.value===e);r&&(K(r,"art-current"),Jt(t))})}})}}({name:"aspectRatio",index:20})),t.flip&&this.add(function(t){return e=>{const{i18n:r,constructor:{FLIP:n}}=e,o=n.map(t=>`${r.get(dt(t))}`).join(""),i=r.get("Video Flip");return l(s({},t),{html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.flip=n.toLowerCase(),t.show=!1)},mounted:t=>{const{on:r}=_(e,t),n=H('[data-value="normal"]',t);n&&K(n,"art-current"),Qt(t,i),r("flip",e=>{const r=Array.from(t.querySelectorAll("span")).find(t=>t.dataset.value===e);r&&(K(r,"art-current"),Jt(t))})}})}}({name:"flip",index:30})),this.add(function(t){return e=>l(s({},t),{html:e.i18n.get("Video Info"),click:t=>{e.info.show=!0,t.show=!1}})}({name:"info",index:40})),this.add(function(t){return l(s({},t),{html:`ArtPlayer ${m}`})}({name:"version",index:50})),this.add(function(t){return e=>l(s({},t),{html:e.i18n.get("Close"),click:t=>{t.show=!1}})}({name:"close",index:60}));for(let s=0;s{this.show=!0,i.closed||M(this.art)||!this.show||function(t,e,r){const{$player:n,$contextmenu:o}=t.template,{height:i,width:a,left:s,top:l}=Y(n),{height:c,width:d}=Y(o);let u=e-s,p=r-l;e+d>s+a&&(u=a-d),r+c>l+i&&(p=i-c),M(t)||rt(o,{top:`${p}px`,left:`${u}px`})}(this.art,t,e)},c=function(t,e){const{art:r}=t,{$player:n,$contextmenu:o}=r.template,i=D(o),a=()=>!i.closed&&!M(r);let s,l=!1,c="",d=0;const u=()=>{const t=n.ownerDocument.activeElement;s=t&&n.contains(t)?re(t):n,ee(o,s)},p=()=>Array.from(o.querySelectorAll("[tabindex],button,input,select,textarea,a[href],[contenteditable]")).filter(t=>t.tabIndex>=0&&oe(t)),f=r.i18n.get("Context Menu");if(!a())return{pointer:()=>!1};o.setAttribute("role","group"),o.setAttribute("aria-label",f);const h=t=>{if(!a())return;if(t)return void(o.contains(n.ownerDocument.activeElement)||u());const e=n.ownerDocument.activeElement,i=o.contains(e)||l&&e===n.ownerDocument.body,d=s;s=void 0,l=!1,c="",ee(o),i&&(d&&n.contains(d)&&oe(d)&&d.focus({preventScroll:!0}),(n.ownerDocument.activeElement===n.ownerDocument.body||o.contains(n.ownerDocument.activeElement))&&It(r))};r.on("contextmenu",h),i.add(()=>{r.off("contextmenu",h),ee(o)}),Ct(i,o,"focusin",()=>{l=!0});let m=!1;return Ct(i,o,"focusout",e=>{o.contains(e.relatedTarget)||m||(m=!0,St(i,()=>{m=!1,a()&&t.show&&!o.contains(n.ownerDocument.activeElement)&&(t.show=!1)},0))}),Ct(i,n,"keydown",n=>{var i;const s=n;if(!a()||!Mt(s)||s.defaultPrevented)return;if(("ContextMenu"===s.key||"F10"===s.key&&s.shiftKey)&&r.constructor.CONTEXTMENU&&!ne(s.target)){Pt(s),u();const r=s.target.getBoundingClientRect();return e(r.left,r.bottom),void(a()&&t.show&&(null==(i=p()[0])||i.focus({preventScroll:!0})))}if(!t.show||!o.contains(s.target))return;if("Escape"===s.key)return Pt(s),void(t.show=!1);if("Tab"===s.key)return void(t.show=!1);if(ne(s.target))return;const l=p(),f=l.indexOf(s.target);let h;if("ArrowDown"===s.key||"ArrowRight"===s.key)h=l[(f+1)%l.length];else if("ArrowUp"===s.key||"ArrowLeft"===s.key)h=l[(f+l.length-1)%l.length];else if("Home"===s.key)h=l[0];else if("End"===s.key)h=l[l.length-1];else{if(1!==s.key.length||" "===s.key)return;{const t=s.key.toLowerCase();c=Date.now()-d>700?t:c+t,d=Date.now();const e=[...c].every(e=>e===t)?t:c;h=[...l.slice(f+1),...l.slice(0,f+1)].find(t=>(t.getAttribute("aria-label")||t.textContent||"").trim().toLowerCase().startsWith(e))}}Pt(s),null==h||h.focus({preventScroll:!0})}),{pointer:t=>!(!a()||!r.constructor.CONTEXTMENU||ne(t.target))&&(u(),!0)}}(this,a);o(e,"contextmenu",t=>{c.pointer(t)&&(t.preventDefault(),a(t.clientX,t.clientY))}),o(e,"click",t=>{F(t,r)||(this.show=!1)}),n("blur",()=>{this.show=!1})}}const ae=new WeakMap,se=new WeakMap,le=new WeakMap;function ce(t,e){const r=ae.get(t);(null==r?void 0:r.active())&&void 0!==r.resumePlaying&&(!e&&r.internalPause?r.internalPause=!1:(r.resumePlaying=e,e||r.pauseRevision++))}function de(t){return le.get(t)||P(t)}function ue(t){const e=ae.get(t),r=le.get(t);return()=>ae.get(t)===e&&(!e||e.active())&&le.get(t)===r&&(!r||!r.closed)}function pe(t){const e=le.get(t),r=P(t).child(),n=r.child();le.set(t,r),r.add(()=>{le.get(t)===r&&le.delete(t)});const o={scope:n,assigned:!1,acceptingEvents:!1,pauseRevision:0,active:()=>!M(t)&&!n.closed&&ae.get(t)===o};return ae.set(t,o),n.add(()=>{ae.get(t)===o&&ae.delete(t),o.onAssigned=void 0,o.onError=void 0}),null==e||e.dispose(),o}function fe(t){t.assigned=!0;const e=t.onAssigned;t.onAssigned=void 0,t.active()&&(null==e||e())}function he(t,e,r){se.set(t,e),e.acceptingEvents=!0;try{t.url=r}finally{se.get(t)===e&&(se.delete(t),fe(e))}}function me(t,e){t.active()&&(t.onError?t.onError(e):console.warn("Failed to initialize ArtPlayer source:",e),t.scope.dispose())}function ve(t,e){const{$progress:r}=t.template,{left:n}=Y(r),o=ct((k?e.touches[0].clientX:e.clientX)-n,0,r.clientWidth),i=o/r.clientWidth*t.duration;return{second:i,time:ut(i),width:o,percentage:ct(o/r.clientWidth,0,1)}}function ge(t,e,r=()=>!0){if(r())if(t.isRotate){const n=(e.touches[0].clientY-t.top)/t.height,o=n*t.duration;if(!r())return;t.emit("setBar","played",n,e),r()&&(t.seek=o)}else{const{second:n,percentage:o}=ve(t,e);if(!r())return;t.emit("setBar","played",o,e),r()&&(t.seek=n)}}const ye=new Map([["ArrowRight",1],["ArrowUp",1],["ArrowLeft",-1],["ArrowDown",-1],["PageUp",10],["PageDown",-10]]);function be(t,e,r){t.getAttribute(e)!==r&&t.setAttribute(e,r)}function we(t,e,r,n,o,i="horizontal"){const a=t=>[t.min,t.max,t.value,t.step].every(Number.isFinite)&&t.max>t.min&&t.step>0,s=(t,e)=>Math.min(e.max,Math.max(e.min,t)),l=()=>{if(t.closed)return;const r=n(),o=a(r),i=o?s(r.value,r):0;be(e,"aria-disabled",String(!o)),be(e,"aria-valuemin",String(o?r.min:0)),be(e,"aria-valuemax",String(o?r.max:0)),be(e,"aria-valuenow",String(i)),be(e,"aria-valuetext",r.text(i))};return t.closed||(e.setAttribute("role","slider"),e.tabIndex=0,e.setAttribute("aria-label",r),e.setAttribute("aria-orientation",i),Ct(t,e,"keydown",t=>{const r=t;if((r.composedPath()[0]||r.target)!==e||!Mt(r)||r.defaultPrevented)return;const i=ye.get(r.key);if(void 0===i&&"Home"!==r.key&&"End"!==r.key)return;Pt(r);const c=n();if(!a(c))return void l();const d="Home"===r.key?c.min:"End"===r.key?c.max:s(c.value,c)+i*c.step;o(s(d,c)),l()}),l()),l}const xe=new WeakMap;function ke(t){return xe.get(t)||0}function $e(t,e,r){let n,o=!1,i=!1,a=!1,s=ke(t);const l=()=>a||ke(t)!==s,c=()=>{var e,r;return!!(null==(r=null==(e=t.template)?void 0:e.$video)?void 0:r.seeking)};return{restore(i=()=>{t.currentTime=e}){if(!r()||l())return;const d=ke(t);i(),s=ke(t),s>d+1&&(a=!0),r()&&(n=t.currentTime,r()&&!l()&&(o=c()))},manual(){a=!0},ready(){if(!r()||c())return!1;const e=void 0!==n&&Math.abs(t.currentTime-n)>.05;if(!l()&&o&&!i&&void 0!==n&&e){if(i=!0,!r())return!1;t.currentTime=n}return r()&&!c()}}}function Ee(t,e){const{icons:r,option:n}=t,{$player:o}=t.template,i=D(e),{on:a}=_(t,e);let s=()=>{};const l=Ot(".art-progress-hover",e),c=Ot(".art-progress-loaded",e),d=Ot(".art-progress-played",e),u=Ot(".art-progress-highlight",e),p=Ot(".art-progress-indicator",e),f=Ot(".art-progress-tip",e);function h(r,n){const{width:o,time:i}=n||ve(t,r);f.textContent=i||"00:00";const a=f.clientWidth;o<=a/2?et(f,"left",0):o>e.clientWidth-a/2?et(f,"left",e.clientWidth-a+"px"):et(f,"left",o-a/2+"px")}r.indicator?X(p,r.indicator):et(p,"backgroundColor","var(--art-theme)"),a("setBar",function(r,n,a){const m="played"===r&&a&&k;if("loaded"===r&&et(c,"width",100*n+"%"),"hover"===r&&(et(l,"width",100*n+"%"),F(a,u)?function(r){const{width:n}=ve(t,r),o=r.target instanceof HTMLElement?r.target.dataset.text:void 0;f.textContent=null!=o?o:"";const i=f.clientWidth;n<=i/2?et(f,"left",0):n>e.clientWidth-i/2?et(f,"left",e.clientWidth-i+"px"):et(f,"left",n-i/2+"px")}(a):h(a),0===n?q(o,"art-progress-hover"):j(o,"art-progress-hover")),"played"===r&&(et(d,"width",100*n+"%"),et(p,"left",100*n+"%")),m){j(o,"art-progress-hover");h(a,{width:e.clientWidth*n,time:ut(n*t.duration)}),s(),s=St(i,()=>{q(o,"art-progress-hover")},500)}}),a("video:loadedmetadata",function(){u.textContent="";for(let e=0;e{t.emit("setBar","played",t.played),t.emit("setBar","loaded",t.loaded)}):(a("video:timeupdate",()=>{t.emit("setBar","played",t.played)}),a("video:progress",()=>{t.emit("setBar","loaded",t.loaded)}),a("video:ended",()=>{t.emit("setBar","played",1)})),t.emit("setBar","loaded",t.loaded||0)}function Ae(t){return e=>l(s({},t),{html:'\n
\n
\n
\n
\n
\n
\n
00:00
\n
\n ',mounted:t=>{Ee(e,t),function(t,e){const{$progress:r}=t.template,n=e.querySelector(".art-progress-indicator"),{on:o,proxy:i}=_(t,e),a=D(e);let s=0;const l=()=>{const e=ue(t);return()=>!a.closed&&!M(t)&&e()},c=()=>{const t=++s,e=l();return()=>t===s&&e()};if(!k){let e;i(r,"click",e=>{e.target!==n&&ge(t,e,c())}),i(r,"mousemove",e=>{const r=l(),{percentage:n}=ve(t,e);r()&&t.emit("setBar","hover",n,e)}),i(r,"mouseleave",e=>{t.emit("setBar","hover",0,e)}),i(r,"mousedown",t=>{e=0===t.button?c():void 0}),o("document:mousemove",r=>{const n=e;if(null==n?void 0:n()){const{second:o,percentage:i}=ve(t,r);if(!n()||e!==n)return;t.emit("setBar","played",i,r),n()&&e===n&&(t.seek=o)}else e=void 0}),o("document:mouseup",()=>{e=void 0})}}(e,t),function(t,e){const r=D(e),{on:n}=_(t,e);let o,i=0;const a=we(r,e,t.i18n.get("Progress"),()=>({min:0,max:t.duration,value:t.currentTime,step:t.constructor.SEEK_STEP,text:e=>`${ut(e)} / ${ut(Number.isFinite(t.duration)&&t.duration>0?t.duration:0)}`}),e=>{const n=++i;null==o||o.dispose();const s=r.child();o=s;const l=de(t).add(()=>{s.dispose()});s.add(()=>{l()}),s.add(()=>{o===s&&(o=void 0)});const c=ue(t),d=()=>n===i&&!s.closed&&!M(t)&&c(),u=$e(t,e,d),p=()=>{d()?u.ready()&&(s.dispose(),a()):s.dispose()};for(const r of["video:seeked","video:ended"])t.on(r,p),s.add(()=>{t.off(r,p)});try{t.emit("setBar","played",e/t.duration),d()&&u.restore(()=>{t.seek=e}),p()}catch(f){throw s.dispose(),f}});n("video:loadedmetadata",a),n("video:durationchange",a),n("video:emptied",a),n("video:timeupdate",a),n("video:seeking",a),n("video:seeked",a),n("video:ended",a)}(e,t)}})}function Ce(t){const{option:e}=t.art;e.isLive||t.add(Ae({name:"progress",position:"top",index:10})),t.add({name:"thumbnails",position:"top",index:20}),t.add(function(t){return e=>l(s({},t),{mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e,a=Rt(t,o.play),s=Rt(t,o.pause);function l(){t.setAttribute("aria-label",i.get("Play")),et(a,"display","flex"),et(s,"display","none")}function c(){t.setAttribute("aria-label",i.get("Pause")),et(a,"display","none"),et(s,"display","flex")}zt(D(t),t,()=>(e.playing?s:a).click()),Q(a,i.get("Play")),Q(s,i.get("Pause")),n(a,"click",()=>{at(e.play())}),n(s,"click",()=>{e.pause()}),e.playing?c():l(),r("video:playing",()=>{c()}),r("video:pause",()=>{l()})}})}({name:"playAndPause",position:"left",index:10})),t.add(function(t){return e=>l(s({},t),{mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e,a=Rt(t,o.volume),s=Rt(t,o.volumeClose);for(const e of[a,s])zt(D(t),e),e.setAttribute("aria-label",i.get("Mute"));const l=Rt(t,'
'),c=Rt(l,'
'),d=Rt(c,'
'),u=Rt(c,'
'),p=Rt(u,'
'),f=Rt(p,'
'),h=Rt(u,'
'),m=D(t);let v=0;const g=we(m,u,i.get("Volume"),()=>({min:0,max:100,value:e.muted?0:100*e.volume,step:100*e.constructor.VOLUME_STEP,text:t=>`${Math.round(t)}%`}),t=>{const r=++v;e.muted=!1,r!==v||m.closed||M(e)||(e.volume=t/100)},"vertical");function y(t){const{top:e,height:r}=Y(u);return 1-(t.clientY-e)/r}function b(){g();const r=t.ownerDocument.activeElement,n=e.muted||0===e.volume,o=n?s:a;if(a.setAttribute("aria-pressed",String(e.muted)),s.setAttribute("aria-pressed",String(e.muted)),n)et(a,"display","none"),et(s,"display","flex"),et(h,"top","100%"),et(f,"top","100%"),d.textContent="0";else{const t=100*e.volume;et(a,"display","flex"),et(s,"display","none"),et(h,"top",100-t+"%"),et(f,"top",100-t+"%"),d.textContent=String(Math.floor(t))}r!==a&&r!==s||r===o||o.focus({preventScroll:!0})}if(b(),r("video:volumechange",b),n(a,"click",()=>{e.muted=!0}),n(s,"click",()=>{e.muted=!1}),k)et(l,"display","none");else{let t=!1;n(u,"mousedown",r=>{t=0===r.button,e.volume=y(r)}),r("document:mousemove",r=>{t&&(e.muted=!1,e.volume=y(r))}),r("document:mouseup",()=>{t&&(t=!1)})}}})}({name:"volume",position:"left",index:20})),e.isLive||t.add(function(t){return e=>l(s({},t),{style:k?{fontSize:"12px",padding:"0 5px"}:{cursor:"auto",padding:"0 10px"},mounted:t=>{const{on:r}=_(e,t);function n(){const r=`${ut(e.currentTime)} / ${ut(e.duration)}`;r!==t.textContent&&(t.textContent=r)}n();const o=["video:loadedmetadata","video:timeupdate","video:progress"];for(let e=0;e{r&&!P(t.art).closed&&(t.art.quality=e.quality)}).catch(t=>{console.warn("ArtPlayer quality initialization failed:",t)}),e.screenshot&&!k&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("Screenshot"),mounted:t=>{const{proxy:r}=_(e,t),{icons:n}=e;zt(D(t),t),Rt(t,n.screenshot),r(t,"click",()=>{at(e.screenshot())})}})}({name:"screenshot",position:"right",index:20})),e.setting&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("Show Setting"),mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e;Rt(t,o.setting),zt(D(t),t),t.setAttribute("aria-expanded","false"),n(t,"click",()=>{e.setting.toggle(),e.setting.resize()}),r("setting",e=>{t.setAttribute("aria-expanded",String(e)),Q(t,i.get(e?"Hide Setting":"Show Setting"))})}})}({name:"setting",position:"right",index:30})),e.pip&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("PIP Mode"),mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e;zt(D(t),t),Rt(t,o.pip),n(t,"click",()=>{e.pip=!e.pip}),r("pip",e=>{Q(t,i.get(e?"Exit PIP Mode":"PIP Mode"))})}})}({name:"pip",position:"right",index:40})),e.airplay&&"WebKitPlaybackTargetAvailabilityEvent"in window&&window.WebKitPlaybackTargetAvailabilityEvent&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("AirPlay"),mounted:t=>{const{proxy:r}=_(e,t),{icons:n}=e;zt(D(t),t),Rt(t,n.airplay),r(t,"click",()=>e.airplay())}})}({name:"airplay",position:"right",index:50})),e.fullscreenWeb&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("Web Fullscreen"),mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e;zt(D(t),t);const a=Rt(t,o.fullscreenWebOn),s=Rt(t,o.fullscreenWebOff);et(s,"display","none"),n(t,"click",()=>{e.fullscreenWeb=!e.fullscreenWeb}),r("fullscreenWeb",e=>{e?(Q(t,i.get("Exit Web Fullscreen")),et(a,"display","none"),et(s,"display","inline-flex")):(Q(t,i.get("Web Fullscreen")),et(a,"display","inline-flex"),et(s,"display","none"))})}})}({name:"fullscreenWeb",position:"right",index:60})),e.fullscreen&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("Fullscreen"),mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e;zt(D(t),t);const a=Rt(t,o.fullscreenOn),s=Rt(t,o.fullscreenOff);et(s,"display","none"),n(t,"click",()=>{e.fullscreen=!e.fullscreen}),r("fullscreen",e=>{e?(Q(t,i.get("Exit Fullscreen")),et(a,"display","none"),et(s,"display","inline-flex")):(Q(t,i.get("Fullscreen")),et(a,"display","inline-flex"),et(s,"display","none"))})}})}({name:"fullscreen",position:"right",index:70}));for(let r=0;rLe.get(t).option.selector}),vt(t,"$control_item",{get:()=>Le.get(t).item}),vt(t,"$control_value",{get:()=>Le.get(t).value})),Le.set(t,e)}function Me(t,e){t.innerHTML=e}function ze(t,e,r,n,o){const{proxy:i}=t.events,a=D(n),s=r.selector;j(n,"art-control-selector");const l=document.createElement("div");j(l,"art-selector-value"),X(l,r.html),n.textContent="",X(n,l);const d=Rt(n,'
');for(let c=0;cc(null,null,function*(){var o,i;if(a.closed)return;const s=W(n),c=r.selector.find(t=>s.includes(t.$control_item));if(!c)return;const d=++u,p=()=>!a.closed&&d===u,f=a.add(function(t,e){return Se.set(t,e),()=>{Se.get(t)===e&&Se.delete(t)}}(n,p));try{if(e(c),a.closed)return;if(r.onSelect){const e=yield r.onSelect.call(t,c,c.$control_item,n);if(p()){const t=l.contains(l.ownerDocument.activeElement);Me(l,e),null==(i=null==(o=Le.get(c))?void 0:o.refresh)||i.call(o,t)}}}catch(h){console.warn("ArtPlayer selector failed:",h)}finally{f()}}));o.push(p);const f=function(t,e,r,n,o){if(t.closed)return()=>{};const i=Array.from(n.children),a=i.some(t=>t.querySelector(Te));n.setAttribute("role",a?"group":"listbox"),n.setAttribute("aria-label",o);let s=!1,l=!1,c=!1,d="",u=0;const p=()=>i.length>0&&(l||s&&!c),f=()=>r.querySelector('button,a[href],[role="button"]')||r,h=(e=!1)=>{if(t.closed)return;const n=f();r.querySelector(Te)?(r.removeAttribute("role"),r.removeAttribute("tabindex")):(r.setAttribute("role","button"),r.tabIndex=0),n!==r&&(r.removeAttribute("aria-haspopup"),r.removeAttribute("aria-expanded"),r.removeAttribute("aria-disabled")),a?n.removeAttribute("aria-haspopup"):n.setAttribute("aria-haspopup","listbox"),n.setAttribute("aria-expanded",String(p())),n.setAttribute("aria-disabled",String(0===i.length)),e&&r.isConnected&&r.ownerDocument.activeElement===r.ownerDocument.body&&n.focus({preventScroll:!0})},m=(t,r=!1)=>{l=t,c=r,e.classList.toggle("art-selector-open",t),e.classList.toggle("art-selector-dismissed",r),h()},v=e=>{e&&!t.closed&&((e.querySelector(Te)||e).focus({preventScroll:!0}),t.closed||e.scrollIntoView({block:"nearest",inline:"nearest"}))},g=(e=!1)=>{!t.closed&&i.length&&(m(!0),d="",v(i.find(t=>t.classList.contains("art-current"))||i[e?i.length-1:0]))},y=()=>{if(t.closed)return;const o=n.contains(e.ownerDocument.activeElement);m(!1,!0),d="",o&&r.isConnected&&f().focus({preventScroll:!0})};zt(t,r,()=>{r.click(),e.ownerDocument.activeElement===r&&g()}),h();for(const b of i){const e=b.classList.contains("art-current");a?b.setAttribute("aria-current",String(e)):(b.setAttribute("role","option"),b.setAttribute("aria-selected",String(e))),b.querySelector(Te)||(b.tabIndex=-1,zt(t,b,()=>{b.click(),y()}))}return Ct(t,r,"keydown",t=>{const e=t;!Mt(e)||e.defaultPrevented||e.target!==r&&e.target!==f()||("ArrowDown"===e.key||"ArrowUp"===e.key?(Pt(e),g("ArrowUp"===e.key)):"Escape"===e.key&&p()&&(Pt(e),y()))}),Ct(t,r,"click",t=>{t.isTrusted&&0===t.detail&&f()!==r&&g()}),Ct(t,n,"keydown",t=>{var e;const r=t;if(!Mt(r)||r.defaultPrevented)return;if("Escape"===r.key)return Pt(r),void y();const n=i.indexOf(r.target);if(n<0)return;let o;switch(1!==r.key.length&&(d=""),r.key){case"ArrowDown":o=Math.min(n+1,i.length-1);break;case"ArrowUp":o=Math.max(n-1,0);break;case"Home":o=0;break;case"End":o=i.length-1;break;case"ArrowLeft":case"ArrowRight":return void Pt(r);default:{if(1!==r.key.length||" "===r.key)return;const t=Date.now();d=t-u<500?d+r.key.toLocaleLowerCase():r.key.toLocaleLowerCase(),u=t;const a=[...d].every(t=>t===d[0])?d[0]:d;for(let r=1;r<=i.length;r++){const t=(n+r)%i.length;if(null==(e=i[t].textContent)?void 0:e.trim().toLocaleLowerCase().startsWith(a)){o=t;break}}}}Pt(r),void 0!==o&&v(i[o])}),Ct(t,n,"click",t=>{t.isTrusted&&0===t.detail&&y()}),Ct(t,e,"mouseenter",()=>{s=!0,m(l)}),Ct(t,e,"mouseleave",()=>{s=!1,m(n.contains(e.ownerDocument.activeElement))}),Ct(t,e,"focusout",t=>{e.contains(t.relatedTarget)||m(!1,!0)}),t.add(()=>{e.classList.remove("art-selector-open","art-selector-dismissed")}),h}(a,n,l,d,String(r.tooltip||r.name||l.textContent||t.i18n.get("Open")));for(const c of s)Le.get(c).refresh=f}class Re extends Zt{constructor(t){super(t),this.isHover=!1,this.name="control",this.timer=Date.now();const{constructor:e}=t,{$player:r,$bottom:n}=this.art.template,o=function(t,e,r){let n,o,i=!0;const a=()=>!t.closed&&i&&e.contains(e.ownerDocument.activeElement),s=()=>{const t=a(),n=e.classList.contains("art-keyboard-focus");e.classList.toggle("art-keyboard-focus",t),t&&!n&&r()},l=()=>{i=!0,s()},c=()=>{i=!1,s()},d=()=>{n!==e.ownerDocument&&(null==o||o.dispose(),n=e.ownerDocument,o=t.child(),Ct(o,n,"keydown",l,{capture:!0}),Ct(o,n,"mousedown",c,{capture:!0}),Ct(o,n,"touchstart",c,{capture:!0,passive:!0}))};return d(),Ct(t,e,"keydown",l,{capture:!0}),Ct(t,e,"mousedown",c,{capture:!0}),Ct(t,e,"touchstart",c,{capture:!0,passive:!0}),Ct(t,e,"focusin",()=>{d(),s()}),Ct(t,e,"focusout",()=>{e.classList.remove("art-keyboard-focus")}),t.add(()=>{e.classList.remove("art-keyboard-focus")}),a}(O(t,n),r,()=>{this.show=!0}),{on:i,proxy:a}=_(t,n);a(r,"focusin",e=>{var r;t.isFocus=!0,t.isInput="INPUT"===(null==(r=e.target)?void 0:r.tagName)}),a(r,"focusout",e=>{r.contains(e.relatedTarget)||(t.isFocus=!1,t.isInput=!1)}),i("mousemove",()=>{k||(this.show=!0)}),i("click",()=>{k?this.toggle():this.show=!0}),i("document:mousemove",t=>{this.isHover=F(t,n)}),i("video:timeupdate",()=>{!t.setting.show&&!this.isHover&&!t.isInput&&!o()&&t.playing&&this.show&&Date.now()-this.timer>=e.CONTROL_HIDE_TIME&&(this.show=!1)}),i("control",t=>{t?(q(r,"art-hide-cursor"),j(r,"art-hover"),this.timer=Date.now()):(j(r,"art-hide-cursor"),q(r,"art-hover"))}),this.init(),P(t).closed||function(t){const{$bottom:e,$controls:r,$player:n}=t.template,o=D(e),{on:i}=_(t,e),a=()=>{if(o.closed)return;const t=r.offsetHeight;t>0&&n.style.getPropertyValue("--art-controls-height")!==`${t}px`&&n.style.setProperty("--art-controls-height",`${t}px`)};if(i("resize",a),"undefined"!==typeof ResizeObserver){const t=new ResizeObserver(a);return t.observe(r),void o.add(()=>{t.disconnect()})}if("undefined"!==typeof MutationObserver){const t=new MutationObserver(a);t.observe(r,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),o.add(()=>{t.disconnect()})}a()}(t)}init(){Ce(this)}add(t){if(M(this.art))return;const e="function"===typeof t?t(this.art):t,{$progress:r,$controlsLeft:n,$controlsRight:o}=this.art.template;switch(e.position){case"top":this.$parent=r;break;case"left":this.$parent=n;break;case"right":this.$parent=o;break;default:it(!1,"Control option.position must one of 'top', 'left', 'right'")}super.add(e)}check(t){!function(t){var e,r;if(!t)return;const n=t.$control_value.contains(t.$control_value.ownerDocument.activeElement);Me(t.$control_value,t.html);for(let o=0;othis.check(t),t,e,r)}}function Oe(t,e){const{constructor:r,template:{$video:n}}=t;!function(t){const{$player:e}=t.template,r=r=>{var n;if(M(t))return;const o=F(r,e);t.isInput=o&&"INPUT"===(null==(n=r.target)?void 0:n.tagName),t.isFocus=o,t.emit(o?"focus":"blur",r)};t.on("document:click",r),t.on("document:contextmenu",r),P(t).add(()=>{t.off("document:click",r),t.off("document:contextmenu",r)})}(t);let o=[];e.proxy(n,"click",e=>{if(M(t))return;const n=Date.now();o.push(n);const{MOBILE_CLICK_PLAY:i,DBCLICK_TIME:a,MOBILE_DBCLICK_PLAY:s,DBCLICK_FULLSCREEN:l}=r,c=o.filter(t=>n-t<=a);switch(c.length){case 1:if(t.emit("click",e),M(t))return;(!k||!t.isLock&&i)&&at(t.toggle()),o=c;break;case 2:if(t.emit("dblclick",e),M(t))return;k?!t.isLock&&s&&at(t.toggle()):l&&(t.fullscreen=!t.fullscreen),o=[];break;default:o=[]}})}function De(t){let e;const r=()=>{e=void 0},n=r=>e===r&&!M(t)&&!t.isLock&&!t.option.isLive&&t.isRotate===r.rotated&&r.sourceActive(),o=t=>{t&&r()};t.on("document:touchend",r),t.on("document:touchcancel",r),t.on("lock",o),P(t).add(()=>{r(),t.off("document:touchend",r),t.off("document:touchcancel",r),t.off("lock",o)});return{start:(o,i)=>{r();const a=i.touches[0];if(M(t)||t.isLock||t.option.isLive||1!==i.touches.length||!a)return;if(![a.pageX,a.pageY,a.clientX,a.clientY,t.currentTime].every(Number.isFinite))return;const s={target:o,identifier:a.identifier,x:a.pageX,y:a.pageY,time:t.currentTime,rotated:t.isRotate,sourceActive:ue(t)};if(e=s,o===t.template.$progress){const o=t.isRotate?t.height:t.template.$progress.clientWidth;if(!Number.isFinite(o)||o<=0||!Number.isFinite(t.duration)||t.duration<=0)return void r();try{ge(t,i,()=>n(s))}catch(l){throw e===s&&r(),l}n(s)&&(s.time=t.currentTime)}},move:o=>{const i=e,a=o.touches[0];if(!i)return;if(!n(i)||1!==o.touches.length||!a||a.identifier!==i.identifier)return void r();const s=i.rotated?t.height:t.width,l=i.target===t.template.$video?t.constructor.TOUCH_MOVE_RATIO:1;if(![a.pageX,a.pageY,s,t.duration,l].every(Number.isFinite)||s<=0||t.duration<=0)return void r();const c=function(t,e,r,n){const o=e-n,i=r-t;if(Math.abs(i)<2&&Math.abs(o)<2)return 0;const a=180*Math.atan2(o,i)/Math.PI;return a>=-45&&a<45?4:a>=45&&a<135?1:a>=-135&&a<-45?2:a>=135&&a<=180||a>=-180&&a<-135?3:0}(i.x,i.y,a.pageX,a.pageY);if(!(i.rotated?1===c||2===c:3===c||4===c))return;const d=ct((i.rotated?a.pageY-i.y:a.pageX-i.x)/s,-1,1),u=ct(i.time+t.duration*d*l,0,t.duration);t.seek=u,n(i)&&(t.emit("setBar","played",ct(u/t.duration,0,1),o),n(i)&&(t.notice.show=`${ut(u)} / ${ut(t.duration)}`))},cancel:r}}const Ie=["click","mouseup","keydown","touchend","touchcancel","touchmove","mousemove","pointerup","contextmenu","pointermove","visibilitychange","webkitfullscreenchange"],Ne=["resize","scroll","orientationchange"];const _e=new WeakMap;function We(t){const e=_e.get(t);if(!e)throw new Error("ArtPlayer event registry has not been initialized");return e}function Fe(t,e,r,n,o={}){if(Array.isArray(r)){const i=[];try{return r.map(r=>{const a=Fe(t,e,r,n,o);return i.push(a),a})}catch(f){for(const t of i.reverse())try{t()}catch(h){console.warn("Failed to roll back event listener:",h)}throw f}}const i=r,a=We(t);if(a.scope.closed||a.cleaning)return()=>{};const s="boolean"===typeof o?o:{capture:Boolean(null==o?void 0:o.capture),once:Boolean(null==o?void 0:o.once),passive:null==o?void 0:o.passive,signal:null==o?void 0:o.signal},l="boolean"===typeof s?s:s.capture,c="boolean"===typeof s?void 0:s.signal;if(a.scope.closed||a.cleaning||(null==c?void 0:c.aborted))return()=>{};let d=!0;function u(r=!1){(d||r)&&(e.removeEventListener(i,n,l),null==c||c.removeEventListener("abort",p),d=!1,t.destroyEvents.delete(p))}function p(){u()}t.destroyEvents.add(p);try{e.addEventListener(i,n,s),!d||a.scope.closed||a.cleaning?u(!0):(null==c?void 0:c.aborted)?p():null==c||c.addEventListener("abort",p,{once:!0})}catch(f){try{u(!0)}catch(h){console.warn("Failed to roll back event listener:",h)}throw f}return p}function Ve(t){return(e,r)=>{if(M(t))return;const n=(...e)=>{if(!M(t))return r(...e)};t.on(e,n),P(t).add(()=>{t.off(e,n)})}}function Ye(t){if(!t.constructor.USE_RAF)return;const e=P(t);let r=()=>{};const n=()=>{M(t)||(t.playing&&t.emit("raf"),M(t)||(r=function(t,e){if(t.closed)return At;let r=!0,n=At;const o=requestAnimationFrame(o=>{r&&(n(),t.closed||e(o))});return n=t.add(()=>{r=!1,cancelAnimationFrame(o)}),n}(e,n)))};n(),Ve(t)("destroy",()=>r())}class Be{constructor(t){this.destroyEvents=new Set,function(t,e){_e.set(t,{scope:P(e),cleaning:!1})}(this,t),P(t).add(()=>{this.destroy()}),this.proxy=this.proxy.bind(this),this.hover=this.hover.bind(this),Oe(t,this),function(t,e){const{$player:r}=t.template;e.hover(r,e=>{M(t)||(j(r,"art-hover"),t.emit("hover",!0,e))},e=>{M(t)||(q(r,"art-hover"),t.emit("hover",!1,e))})}(t,this),function(t,e){const{$player:r}=t.template;e.proxy(r,"mousemove",e=>{M(t)||t.emit("mousemove",e)})}(t,this),function(t,e){var r,n;const{option:o,constructor:i}=t,a=Ve(t);a("resize",()=>{const{aspectRatio:e,notice:r}=t;"standard"===t.state&&o.autoSize&&t.autoSize(),M(t)||(t.aspectRatio=e,M(t)||(r.show=""))});const s=P(t);let l=()=>{};const c=()=>{M(t)||(l(),l=St(s,()=>t.emit("resize"),i.RESIZE_TIME))};a("window:orientationchange",c),a("window:resize",c);const d=null==(n=null==(r=t.template.$player.ownerDocument.defaultView)?void 0:r.screen)?void 0:n.orientation;"function"===typeof(null==d?void 0:d.addEventListener)&&e.proxy(d,"change",c)}(t,this),function(t,e){if(!k||t.option.isLive)return;const{$video:r,$progress:n}=t.template,o=De(t),i=t=>{e.proxy(t,"touchstart",e=>o.start(t,e)),e.proxy(t,"touchmove",t=>o.move(t)),e.proxy(t,"touchcancel",o.cancel)};t.option.gesture&&i(r),i(n)}(t,this),function(t){const{option:e,constructor:r,template:{$container:n}}=t,o=r.SCROLL_TIME,i=P(t),a=Ve(t);let s=!1;a("window:scroll",()=>{s||(t.emit("view",function(t,e){const r=t.getBoundingClientRect(),n=t.ownerDocument,o=n.defaultView,i=(null==o?void 0:o.innerHeight)||n.documentElement.clientHeight,a=(null==o?void 0:o.innerWidth)||n.documentElement.clientWidth,s=r.top-e<=i&&r.top+r.height+e>=0,l=r.left-e<=a+e&&r.left+r.width+e>=0;return s&&l}(n,r.SCROLL_GAP)),M(t)||(s=!0,St(i,()=>{s=!1},o)))}),a("view",r=>{e.autoMini&&(t.mini=!r)})}(t),function(t,e){let r,n=0;P(t).add(()=>{r=void 0,n++});const o=t=>{if(t){for(const r of t.disposers)e.remove(r);t.disposers.length=0}};function i(i={}){var a;if(M(t))return;const s=++n,l={disposers:[]},c=()=>s!==n||M(t);try{const{$player:n}=t.template,o=i.document||n.ownerDocument||document,s=i.window||(null==(a=n.ownerDocument)?void 0:a.defaultView)||window,d=(n,o,i)=>{for(const a of o){if(c())return;l.disposers.push(e.proxy(n,a,e=>{r!==l||M(t)||t.emit(`${i}:${a}`,e)}))}};d(o,Ie,"document"),d(s,Ne,"window")}catch(u){throw o(l),u}if(c())return void o(l);const d=r;r=l,o(d)}i(),e.bindGlobalEvents=i}(t,this),Ye(t)}proxy(t,e,r,n={}){return Array.isArray(e),Fe(this,t,e,r,n)}hover(t,e,r){e&&this.proxy(t,"mouseenter",e),r&&this.proxy(t,"mouseleave",r)}remove(t){!function(t,e){if(t.destroyEvents.has(e))try{e(),t.destroyEvents.delete(e)}catch(r){console.warn("Failed to remove event listener:",r)}}(this,t)}destroy(){!function(t){const e=We(t);if(!e.cleaning){e.cleaning=!0;try{for(const e of t.destroyEvents)try{e(),t.destroyEvents.delete(e)}catch(r){console.warn("Failed to destroy event listener:",r)}}finally{e.cleaning=!1}}}(this)}}function He(t){if(t&&1===t.nodeType)return t}function je(t){const e=t.tagName.toUpperCase();return"INPUT"===e||"TEXTAREA"===e||"SELECT"===e||t.isContentEditable}function qe(t,e){var r,n,o,i;if(function(t){return Lt.has(t)}(t)||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey||t.isComposing||229===t.keyCode)return!1;const a=function(t,e){var r;const n=t.target;return 9===(null==n?void 0:n.nodeType)?n:(null==n?void 0:n.ownerDocument)||(null==(r=t.view)?void 0:r.document)||e}(t,e);let s=He(a.activeElement);for(;null==(r=null==s?void 0:s.shadowRoot)?void 0:r.activeElement;)s=He(s.shadowRoot.activeElement);if(s&&je(s))return!1;const l=He(null==(n=t.composedPath)?void 0:n.call(t)[0])||He(t.target),c="Enter"===t.key||"Enter"===t.code||"NumpadEnter"===t.code;if(c||" "===t.key||"Space"===t.code){const t='button,summary,[role="button"],[role="switch"]'+(c?",a[href]":"");if((null==(o=null==l?void 0:l.closest)?void 0:o.call(l,t))||(null==(i=null==s?void 0:s.closest)?void 0:i.call(s,t)))return!1}return!l||!je(l)}const Ue=new WeakMap;class Xe{constructor(t){this.art=t,this.keys={},Ue.set(this,{subscribed:!1}),k||this.init()}init(){const t=this.art;if(M(t))return;const e=Ue.get(this);if(t.option.hotkey){if(!e.defaults){const r=function(t){const{constructor:e}=t;return{Escape:()=>{t.fullscreenWeb&&(t.fullscreenWeb=!1)},Space:()=>{at(t.toggle())},ArrowLeft:()=>{t.backward=e.SEEK_STEP},ArrowUp:()=>{t.volume+=e.VOLUME_STEP},ArrowRight:()=>{t.forward=e.SEEK_STEP},ArrowDown:()=>{t.volume-=e.VOLUME_STEP}}}(t);e.defaults=()=>{for(const t of Object.keys(r))this.add(t,r[t])}}e.defaults()}if(e.subscribed)return;e.subscribed=!0;const r=e=>{if(!M(t)){if(t.isFocus&&qe(e,t.template.$player.ownerDocument)){const r=Object.prototype.hasOwnProperty.call(this.keys,e.code)?this.keys[e.code]:void 0;if(r){e.preventDefault();for(let n=0;n{e.subscribed=!1,t.off("document:keydown",r)})}add(t,e){const r=Object.prototype.hasOwnProperty.call(this.keys,t)?this.keys[t]:void 0;return r?r.includes(e)||r.push(e):Object.defineProperty(this.keys,t,{value:[e],enumerable:!0,configurable:!0,writable:!0}),this}remove(t,e){const r=Object.prototype.hasOwnProperty.call(this.keys,t)?this.keys[t]:void 0;if(r){const n=r.indexOf(e);-1!==n&&r.splice(n,1),0===r.length&&delete this.keys[t]}return this}}const Ge={"Context Menu":"\u5feb\u6377\u83dc\u5355",Lock:"\u9501\u5b9a",Back:"\u8fd4\u56de",Settings:"\u8bbe\u7f6e",Progress:"\u64ad\u653e\u8fdb\u5ea6","Video Info":"\u7edf\u8ba1\u4fe1\u606f",Close:"\u5173\u95ed","Video Load Failed":"\u52a0\u8f7d\u5931\u8d25",Volume:"\u97f3\u91cf",Play:"\u64ad\u653e",Pause:"\u6682\u505c",Rate:"\u901f\u5ea6",Mute:"\u9759\u97f3","Video Flip":"\u753b\u9762\u7ffb\u8f6c",Horizontal:"\u6c34\u5e73",Vertical:"\u5782\u76f4",Reconnect:"\u91cd\u65b0\u8fde\u63a5","Show Setting":"\u663e\u793a\u8bbe\u7f6e","Hide Setting":"\u9690\u85cf\u8bbe\u7f6e",Screenshot:"\u622a\u56fe","Play Speed":"\u64ad\u653e\u901f\u5ea6","Aspect Ratio":"\u753b\u9762\u6bd4\u4f8b",Default:"\u9ed8\u8ba4",Normal:"\u6b63\u5e38",Open:"\u6253\u5f00","Switch Video":"\u5207\u6362","Switch Subtitle":"\u5207\u6362\u5b57\u5e55",Fullscreen:"\u5168\u5c4f","Exit Fullscreen":"\u9000\u51fa\u5168\u5c4f","Web Fullscreen":"\u7f51\u9875\u5168\u5c4f","Exit Web Fullscreen":"\u9000\u51fa\u7f51\u9875\u5168\u5c4f","Mini Player":"\u8ff7\u4f60\u64ad\u653e\u5668","PIP Mode":"\u5f00\u542f\u753b\u4e2d\u753b","Exit PIP Mode":"\u9000\u51fa\u753b\u4e2d\u753b","PIP Not Supported":"\u4e0d\u652f\u6301\u753b\u4e2d\u753b","Fullscreen Not Supported":"\u4e0d\u652f\u6301\u5168\u5c4f","Subtitle Offset":"\u5b57\u5e55\u504f\u79fb","Last Seen":"\u4e0a\u6b21\u770b\u5230","Jump Play":"\u8df3\u8f6c\u64ad\u653e",AirPlay:"\u9694\u7a7a\u64ad\u653e","AirPlay Not Available":"\u9694\u7a7a\u64ad\u653e\u4e0d\u53ef\u7528"};!function(t,e){if("undefined"!==typeof window){window[t]=e}}("artplayer-i18n-zh-cn",Ge);class Ke{constructor(t){this.art=t,this.languages={"zh-cn":Ge},this.language={},this.update(t.option.i18n)}init(){const t=this.art.option.lang.toLowerCase();this.language=yt(this.languages,t)&&this.languages[t]||{}}get(t){return yt(this.language,t)&&this.language[t]||t}update(t){this.languages=wt(this.languages,t),this.init()}}const Ze={loading:'\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n',state:'\r\n\r\n\r\n',play:'\r\n \r\n',pause:'\r\n \r\n',check:'\r\n\r\n',volume:'\r\n \r\n \r\n',volumeClose:'\r\n \r\n \r\n',screenshot:'\r\n\t\r\n\r\n',setting:'\r\n \r\n \r\n',pip:'\r\n\r\n',arrowLeft:'\r\n \r\n',arrowRight:'\r\n \r\n',playbackRate:'',aspectRatio:'',config:'',lock:'\r\n\r\n\r\n\r\n\r\n',flip:'\r\n\r\n\r\n\r\n\r\n\r\n',unlock:'\r\n\r\n\r\n',fullscreenOff:'\r\n\r\n\r\n\r\n\r\n',fullscreenOn:'\r\n\r\n\r\n\r\n\r\n',fullscreenWebOff:'\r\n\r\n\r\n\r\n\r\n',fullscreenWebOn:'\r\n\r\n\r\n\r\n\r\n',switchOn:'\r\n\r\n\r\n \r\n',switchOff:'\r\n\r\n\r\n \r\n\r\n',error:'\r\n\r\n\r\n\r\n\r\n',close:'\r\n\r\n\r\n\r\n\r\n',airplay:'\r\n \r\n \r\n \r\n \r\n\r\n'};class Je{constructor(t){const e=s(s({},Ze),t.option.icons);for(const r in e)vt(this,r,{get:()=>tt(r,e[r])})}}const Qe=new WeakMap;function tr(t,e,r){const n=()=>!e.closed&&!M(t),o=t=>{try{e.dispose()}catch(r){console.warn("Failed to release info polling resources:",r)}throw t};try{const{proxy:i,constructor:a,template:{$infoPanel:s,$infoClose:l,$video:c}}=t,d=i(l,"click",()=>{n()&&r()});e.add(()=>{t.events.remove(d)});const u=Array.from(s.querySelectorAll("[data-video]")),p=()=>e.dispose();t.on("destroy",p),e.add(()=>{t.off("destroy",p)}),function(t,e,r){const{$player:n,$info:o,$infoClose:i}=t.template;if(!o)return;const a=()=>!e.closed&&!M(t),s=()=>n.classList.contains("art-info-show"),l=t.i18n.get("Close");if(!a())return;const c=t.i18n.get("Video Info");if(!a())return;i.setAttribute("aria-label",l),o.setAttribute("role","group"),o.setAttribute("aria-label",c),zt(e,i,()=>i.click(),s),Ct(e,o,"keydown",t=>{const e=t;a()&&s()&&Mt(e)&&!e.defaultPrevented&&"Escape"===e.key&&(Pt(e),r())});const d=e=>{var r;if(!a())return;const s=n.ownerDocument,l=s.activeElement;if(e)o.contains(l)||(Qe.delete(t),l&&n.contains(l)&&(Qe.set(t,re(l)),n.classList.contains("art-keyboard-focus")&&i.focus({preventScroll:!0})));else{const e=Qe.get(t);if(Qe.delete(t),!o.contains(l))return;const i=e&&(null==(r=s.defaultView)?void 0:r.getComputedStyle(e).visibility);(null==e?void 0:e.isConnected)&&n.contains(e)&&e.getClientRects().length&&"hidden"!==i&&"collapse"!==i&&!e.matches(":disabled")&&!e.closest("[inert]")&&"true"!==e.getAttribute("aria-disabled")?e.focus({preventScroll:!0}):It(t)}};t.on("info",d),e.add(()=>{t.off("info",d)})}(t,e,r);const f=()=>{var t;try{for(const e of u){if(!n())return;const r=Reflect.get(c,null!=(t=e.dataset.video)?t:"undefined");if(!n())return;const o="number"===typeof r?r.toFixed(2):r;if(!n())return;if(e.textContent!==o){const t=null==o?null:`${o}`;if(!n())return;e.textContent=t}}n()&&St(e,f,a.INFO_LOOP_TIME)}catch(r){o(r)}};n()&&f()}catch(i){o(i)}}const er=new WeakMap;class rr extends Zt{constructor(t){super(t),this.name="info",er.set(this,{revision:0}),k||this.init()}init(){var t;const e=er.get(this),r=++e.revision;if(null==(t=e.scope)||t.dispose(),M(this.art)||e.revision!==r)return;const n=P(this.art).child();e.scope=n,n.add(()=>{e.scope===n&&(e.scope=void 0)}),tr(this.art,n,()=>{this.show=!1})}}class nr extends Zt{constructor(t){super(t);const{option:e,template:{$layer:r}}=t;this.name="layer",this.$parent=r;for(let n=0;n{et(i,"display","none"),et(s,"display",null),M(t)&&(l=!0)};var d;t.on("destroy",c),(d=t,L(d).finalizers).add(()=>{try{l||c()}finally{t.off("destroy",c)}}),M(t)||n.proxy(e.$state,"click",()=>{M(t)||at(t.play())})}}const ar=new WeakMap;function sr(t){const e=ar.get(t);e.revision++,e.pending=void 0,null!==t.timer&&(clearTimeout(t.timer),t.timer=null)}class lr{constructor(t){this.art=t,this.timer=null,ar.set(this,{revision:0});const e=()=>this.destroy();t.on("destroy",e),P(t).add(()=>{t.off("destroy",e)}),P(t).add(()=>{this.destroy()})}destroy(){sr(this)}set show(t){if(M(this.art))return;const e=ar.get(this);e.revision++;const{constructor:r,template:{$player:n,$noticeInner:o}}=this.art;if(t){sr(this);const i=e.revision,a=()=>!M(this.art)&&e.revision===i;if(o.textContent=t instanceof Error?t.message.trim():t,!a())return;if(j(n,"art-notice-show"),!a())return;const s=r.NOTICE_TIME;if(!a())return;const l={};e.pending=l;const c=setTimeout(()=>{if(M(this.art)||e.pending!==l)return;e.pending=void 0;const t=e.revision;o.textContent="",M(this.art)||e.revision!==t||q(n,"art-notice-show")},s);a()?this.timer=c:clearTimeout(c)}else q(n,"art-notice-show")}get show(){const{template:{$player:t}}=this.art;return t.classList.contains("art-notice-show")}}function cr(t,e){return function(t,e){const r=wt(e,t);return r.container=t.container,h(r,Gt)}(t,e)}function dr({width:t,height:e}){return Number.isFinite(t)&&t>0&&Number.isFinite(e)&&e>0}function ur(t,e){if(!dr(t)||!Number.isFinite(e)||e<=0)return;const r=t.width/t.height>e?{width:e*t.height,height:t.height,axis:"width"}:{width:t.width,height:t.width/e,axis:"height"};return dr(r)?r:void 0}function pr(t,e,r,n=!1){const o=e=>{M(t)||r(e)};t[n?"once":"on"](e,o),P(t).add(()=>{t.off(e,o)})}function fr(t,e,r){for(const[n,o]of e){if(M(t)||r&&!r())return;t[n].show=o}}function hr(t){const{option:e,constructor:r,i18n:n,notice:o,template:{$player:i}}=t;let a,s=de(t),l=0;return{reset(){l=0,null==a||a.dispose(),q(i,"art-error")},loadStart(){q(i,"art-error")},schedule(d){(d=>c(null,null,function*(){if(M(t))return;const c=de(t);if(c!==s&&(s=c,l=0),a&&!a.closed)return;const u=c.child();a=u,u.add(()=>{a===u&&(a=void 0)});const p=()=>!M(t)&&!u.closed&&c===de(t),f=l{console.warn("ArtPlayer reconnect failed:",t)})}}}const mr=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],vr=(()=>{if("undefined"===typeof document)return!1;const t=mr[0],e={};for(const r of mr){if(r[1]in document){for(const[n,o]of r.entries())e[t[n]]=o;return e}}return!1})(),gr={change:vr.fullscreenchange,error:vr.fullscreenerror},yr={request:(t=document.documentElement,e)=>new Promise((r,n)=>{const o=()=>{yr.off("change",o),r()};yr.on("change",o);const i=t[vr.requestFullscreen](e);i instanceof Promise&&i.then(o).catch(n)}),exit:()=>new Promise((t,e)=>{if(!yr.isFullscreen)return void t();const r=()=>{yr.off("change",r),t()};yr.on("change",r);const n=document[vr.exitFullscreen]();n instanceof Promise&&n.then(r).catch(e)}),toggle:(t,e)=>yr.isFullscreen?yr.exit():yr.request(t,e),onchange(t){yr.on("change",t)},onerror(t){yr.on("error",t)},on(t,e){const r=gr[t];r&&document.addEventListener(r,e,!1)},off(t,e){const r=gr[t];r&&document.removeEventListener(r,e,!1)},raw:vr};function br(t,e,...r){const n=Reflect.get(t,e);if("function"!==typeof n)throw new TypeError(`Fullscreen method ${e} is not available`);return n.apply(t,r)}Object.defineProperties(yr,{isFullscreen:{get:()=>Boolean(document[vr.fullscreenElement])},element:{enumerable:!0,get:()=>document[vr.fullscreenElement]},isEnabled:{enumerable:!0,get:()=>Boolean(document[vr.fullscreenEnabled])}});const wr=new WeakMap;function xr(t){try{Promise.resolve(t()).catch(()=>{})}catch(e){}}function kr(t){const{document:e,elementProperty:r,changeEvent:n,target:o,exit:i}=t,a=function(t,e,r){let n=wr.get(t);if(!n){n=new WeakMap,wr.set(t,n);const o=n;t.addEventListener(r,()=>{const r=Reflect.get(t,e),n=r&&o.get(r);n&&(o.delete(r),xr(n))})}return n}(e,r,n);a.set(o,i),t.element===o&&(a.delete(o),xr(i))}function $r(t,e,r,n,o=()=>t.element!==t.target){const i=e.child();let a,s,l=!1,c=!1,d=!1,u=!1,p=!1;const f=new Promise((t,e)=>{a=t,s=e});function h(t=!1,e){if(!l){l=!0;try{i.dispose()}catch(r){t||(t=!0,e=r)}t?s(e):a()}}i.add(()=>{l||(l=!0,c=!0,a(),d&&!u&&r&&kr(t))});const m=()=>{d&&!u&&(r?t.element===t.target:o())&&h()};if(Ct(i,t.document,t.changeEvent,m),Ct(i,t.document,t.errorEvent,e=>{e.target!==t.target&&e.target!==t.document||(p=!0,d&&!u&&h(!0,new Error("Fullscreen request failed")))}),!i.closed)try{r&&function(t){var e;null==(e=wr.get(t.document))||e.delete(t.target)}(t);const e=r?t.request():t.exit();u=Boolean(e&&"function"===typeof e.then),d=!0,c&&!u&&r&&kr(t),u?Promise.resolve(e).then(()=>{c?n():h()},t=>h(!0,t)).catch(()=>{}):p?h(!0,new Error("Fullscreen request failed")):m()}catch(v){h(!0,v)}return{promise:f,cancel:()=>i.dispose()}}function Er(t,e){const r=P(t).child(),{$player:n,$video:o}=t.template,i=()=>e.element===n||e.element===o;let a,s=i(),l=0,c=s,d=!1,u=!1,p=!1;function f(){if(i())try{Promise.resolve(e.exit()).catch(()=>{})}catch(t){}}return r.add(()=>{l+=1,c=!1,n.classList.remove("art-fullscreen"),f()}),Ct(r,e.document,e.changeEvent,()=>{const r=i();if(r&&function(t){var e,r;return null!=(r=null==(e=wr.get(t.document))?void 0:e.has(t.target))&&r}(e))return;if(r&&u)return void f();if(r===s||M(t))return;s=r;const o=l,a=()=>M(t)||i()!==r||o!==l&&c!==r;t.emit("fullscreen",r),a()||(r&&(t.state="fullscreen"),a()||(n.classList.toggle("art-fullscreen",r),t.emit("resize")))}),Ct(r,e.document,e.errorEvent,r=>{(r.target===n||r.target===o||r.target===e.document&&(p||void 0!==a||i()))&&!M(t)&&t.emit("fullscreenError",r)}),{get:()=>!M(t)&&i(),set(n){if(M(t))return Promise.resolve();const o=++l;if(c=Boolean(n),c?u=!1:d&&(u=!0),null==a||a.cancel(),a=void 0,d=!1,!c&&!i())return Promise.resolve();p=!0,d=c;const s=$r(e,r,c,()=>{!M(t)&&c||f()},()=>!i());p=!1,l===o?a=s:s.cancel();const h=s.promise.catch(e=>{throw M(t)||l!==o||(t.notice.show=e),e}).finally(()=>{l===o&&(a=void 0,d=!1)});return h.catch(()=>{}),h}}}const Ar=new WeakSet;function Cr(t,e=!1){return"string"===typeof t.webkitPresentationMode?"fullscreen"===t.webkitPresentationMode:"boolean"===typeof t.webkitDisplayingFullscreen?t.webkitDisplayingFullscreen:t.ownerDocument.fullscreenElement===t||e}function Sr(t){Ar.delete(t),t.removeEventListener("webkitbeginfullscreen",Tr),t.removeEventListener("webkitpresentationmodechanged",Tr)}function Tr(t){var e;if(Ar.has(this)&&Cr(this,"webkitbeginfullscreen"===t.type)){Sr(this);try{null==(e=this.webkitExitFullscreen)||e.call(this)}catch(r){}}}function Lr(t){Ar.add(t),t.addEventListener("webkitbeginfullscreen",Tr),t.addEventListener("webkitpresentationmodechanged",Tr)}function Pr(t){const{$video:e}=t.template,r=P(t).child();let n=!1,o=Cr(e),i=o,a=!1,s=0;const l=()=>Cr(e,n);function c(r){if(M(t)||(c=e,Ar.has(c)))return;var c;"boolean"===typeof r&&(n=r);const d=l();if(d&&(a=!1),d===o)return;o=d;const u=s,p=()=>M(t)||l()!==d||u!==s&&i!==d;t.emit("fullscreen",d),p()||(d&&(t.state="fullscreen"),p()||t.emit("resize"))}r.add(()=>{var t;s++,i=!1,a&&Lr(e),l()&&(null==(t=e.webkitExitFullscreen)||t.call(e))}),Ct(r,e,"webkitbeginfullscreen",()=>c(!0)),Ct(r,e,"webkitendfullscreen",()=>c(!1)),Ct(r,e,"webkitpresentationmodechanged",()=>c());const d=()=>c();return t.on("document:webkitfullscreenchange",d),r.add(()=>{t.off("document:webkitfullscreenchange",d)}),{get:()=>!M(t)&&l(),set(r){if(M(t))return;const n=++s;if(i=Boolean(r),r){if(Sr(e),t.state="fullscreen",M(t)||n!==s)return;a=!0;try{e.webkitEnterFullscreen()}catch(o){throw n===s&&(a=!1),o}}else a&&(a=!1,Lr(e)),l()&&e.webkitExitFullscreen()}}}function Mr(t){return{node:t,parent:t.parentNode,next:t.nextSibling}}function zr({node:t,parent:e,next:r}){var n;if(!e)return void(null==(n=t.parentNode)||n.removeChild(t));const o=(null==r?void 0:r.parentNode)===e?r:null;t.parentNode===e&&t.nextSibling===o||e.insertBefore(t,o)}function Rr(t,e,r){const n=Math.max(0,r.viewportWidth-r.width),o=Math.max(0,r.viewportHeight-r.height);return{left:Math.max(0,Math.min(t,n)),top:Math.max(0,Math.min(e,o))}}function Or(t){const{width:e,height:r}=t.getBoundingClientRect(),n=t.ownerDocument.defaultView;return{width:e,height:r,viewportWidth:n.innerWidth,viewportHeight:n.innerHeight}}function Dr(t,e,r,n){const o=e.child();if(o.closed)return;const i=t.template.$mini;if(i){const t=i.style.display;return o.add(()=>{i.style.display=t}),{element:i,cancelDrag:()=>{},fresh:!1}}const a=t.template.$player.ownerDocument,s=a.createElement("div");s.className="art-mini-popup",o.add(()=>{s.remove()});try{const e=a.createElement("div");if(e.className="art-mini-close",e.append(t.icons.close),o.closed)return;const i=a.createElement("div");i.className="art-mini-state";const l=t.icons.play,c=t.icons.pause;if(o.closed)return;i.append(l,c),s.append(e,i),zt(o,e,()=>e.click(),r),zt(o,i,()=>(t.playing?c:l).click(),r);const d=t.i18n.get("Close");if(o.closed||M(t))return;e.setAttribute("aria-label",d);const u=t.i18n.get("Mini Player");if(o.closed||M(t))return;s.setAttribute("role","group"),s.setAttribute("aria-label",u),Ct(o,s,"keydown",t=>{const e=t;r()&&Mt(e)&&!e.defaultPrevented&&"Escape"===e.key&&(Pt(e),n())}),Ct(o,e,"click",n),Ct(o,l,"click",()=>{at(t.play())}),Ct(o,c,"click",()=>{t.pause()});const p=()=>{if(o.closed)return;const e=t.i18n.get(t.playing?"Pause":"Play");o.closed||M(t)||(i.setAttribute("aria-label",e),l.style.display=t.playing?"none":"flex",c.style.display=t.playing?"flex":"none")};p();for(const r of["video:playing","video:pause","video:timeupdate"])t.on(r,p),o.add(()=>{t.off(r,p)});const f=function(t,e,r,n){let o=!1,i=0,a=0;const s=()=>{o=!1,e.classList.remove("art-mini-dragging"),e.style.transform=""};Ct(r,e,"mousedown",t=>{const e=t;0===e.button&&n()&&(o=!0,i=e.clientX,a=e.clientY)});const l=t=>{!r.closed&&o&&n()&&(e.classList.add("art-mini-dragging"),e.style.transform=`translate(${t.clientX-i}px, ${t.clientY-a}px)`)},c=()=>{if(r.closed||!o||!n())return;const i=e.getBoundingClientRect(),a=Rr(i.left,i.top,Or(e));s(),e.style.left=`${a.left}px`,e.style.top=`${a.top}px`,t.storage.set("left",a.left),r.closed||t.storage.set("top",a.top)};return t.on("document:mousemove",l),r.add(()=>{t.off("document:mousemove",l)}),t.on("document:mouseup",c),r.add(()=>{t.off("document:mouseup",c)}),r.add(s),s}(t,s,o,r);if(o.closed)return;if(t.template.$mini=s,a.body.append(s),!o.closed)return{element:s,cancelDrag:f,fresh:!0,focus:()=>e.focus({preventScroll:!0})}}catch(l){throw o.dispose(),t.template.$mini===s&&delete t.template.$mini,l}}function Ir(t){const{$player:e,$video:r}=t.template,n=P(t).child();let o,i,a=0,c=!1,d=!1;const u=()=>!M(t)&&e.classList.contains("art-mini"),p=function(t){const e=t.template.$player;let r;return{entering(){var n;const o=e.ownerDocument,i=o.activeElement,a=i&&e.contains(i);(null==(n=t.template.$mini)?void 0:n.contains(i))||(r=a?re(i):void 0);const s=a&&e.classList.contains("art-keyboard-focus");return e=>{!s||M(t)||o.activeElement!==i&&o.activeElement!==o.body||null==e||e()}},leaving(n){const o=e.ownerDocument,i=null==n?void 0:n.contains(o.activeElement);return()=>{var e;if(!i||M(t)||o.activeElement!==o.body&&!(null==n?void 0:n.contains(o.activeElement)))return;const a=r&&(null==(e=o.defaultView)?void 0:e.getComputedStyle(r).visibility);(null==r?void 0:r.isConnected)&&r.getClientRects().length&&"hidden"!==a&&"collapse"!==a&&"true"!==r.getAttribute("aria-disabled")&&!r.matches(":disabled")&&!r.closest("[inert]")?r.focus({preventScroll:!0}):It(t)}}}}(t);function f(){if(i){const e=i,r=a;i=void 0;try{zr(e)}catch(t){throw r!==a||i||(i=e),t}}}function h(){if(M(t))return;const r=++a;d=!1;const n=p.leaving(t.template.$mini);f(),M(t)||r!==a||(null==o||o.cancelDrag(),e.classList.remove("art-mini"),t.template.$mini&&(t.template.$mini.style.display="none",n(),M(t)||r!==a||t.emit("mini",!1)))}function m(){if(M(t))return;const v=++a;if(c)return void(d=!0);const g=p.entering();if(t.state="mini",!M(t)&&v===a){null!=i||(i=Mr(r)),e.classList.add("art-mini");try{if(!o){c=!0;try{o=Dr(t,n,u,h)}finally{c=!1}}if(d)return d=!1,void m();if(!o||M(t))return;if(v!==a)return void(u()||(o.element.style.display="none"));if(o.fresh?o.element.prepend(r):o.element.append(r),M(t)||v!==a)return;o.element.style.display=o.fresh?"":"flex",o.fresh=!1;const e=t.storage.get("top"),i=function(t,e,r){return"number"===typeof t&&Number.isFinite(t)&&"number"===typeof e&&Number.isFinite(e)&&t>=0&&e>=0&&t+r.width<=r.viewportWidth&&e+r.height<=r.viewportHeight?{left:t,top:e,reset:!1}:l(s({},Rr(r.viewportWidth-r.width-50,r.viewportHeight-r.height-50,r)),{reset:!0})}(t.storage.get("left"),e,Or(o.element));if(M(t)||v!==a)return;if(o.element.style.left=`${i.left}px`,o.element.style.top=`${i.top}px`,i.reset){if(t.storage.set("top",i.top),M(t)||v!==a)return;t.storage.set("left",i.left)}M(t)||v!==a||g(o.focus),M(t)||v!==a||t.emit("mini",!0)}catch(y){const r=d;throw d=!1,M(t)||v!==a&&!r||(f(),e.classList.remove("art-mini"),o&&(o.element.style.display="none")),y}}}return n.add(()=>{a++;try{f()}finally{null==o||o.cancelDrag(),e.classList.remove("art-mini")}}),{get:u,set(t){t?m():h()}}}const Nr=new WeakSet,_r=t=>"picture-in-picture"===t.webkitPresentationMode;function Wr(t){Nr.delete(t),t.removeEventListener("webkitpresentationmodechanged",Fr),t.removeEventListener("enterpictureinpicture",Fr)}function Fr(){var t;if(Nr.has(this)&&_r(this)){Wr(this);try{null==(t=this.webkitSetPresentationMode)||t.call(this,"inline")}catch(e){}}}function Vr(t){Nr.add(t),t.addEventListener("webkitpresentationmodechanged",Fr),t.addEventListener("enterpictureinpicture",Fr)}function Yr(t,e,r,n,o=!0){let i,a=!1;const s=e=>{t.closed||a||(o&&(a=!0,i()),n(e))};return e[o?"once":"on"](r,s),i=t.add(()=>{e.off(r,s)}),s}function Br(t,e,r){return new Promise((n,o)=>{var i;if(M(t)||e===t.url)return void n();const a=null!=(i=function(t){const e=ae.get(t);return(null==e?void 0:e.active())?e.resumePlaying:void 0}(t))?i:t.playing,s=pe(t);s.resumePlaying=a;const l=s.scope.child();let d=!1;const u=(t=!1,e)=>{d||(d=!0,s.resumePlaying=void 0,s.onError=void 0,s.onAssigned=void 0,l.dispose(),t?o(e):n(),t&&s.scope.dispose())};l.add(()=>{u()});const p=()=>!d&&s.active(),f=t=>u(!0,t);s.onError=f;try{const{aspectRatio:n,playbackRate:o}=t;s.internalPause=!0;try{t.pause()}finally{s.internalPause=!1}if(!p())return;const i=l.child();let a=!1,d=!1,h=!1;const m=$e(t,r,p),v=()=>c(null,null,function*(){const e=s.pauseRevision;if(t.aspectRatio=n,p()){if(s.resumePlaying)try{yield t.play()}catch(r){}p()&&(s.pauseRevision===e&&(t.notice.show=""),u())}}),g=()=>{var e,r;if(p()&&!d&&a)try{if(null==(r=null==(e=t.template)?void 0:e.$video)?void 0:r.seeking)return;if(!p())return;if(h||(h=!0,t.playbackRate=o),!m.ready()||!p()||d)return;d=!0,i.dispose(),v().catch(f)}catch(n){f(n)}},y={"video:error":f,"video:loadedmetadata":()=>{if(p())try{m.restore()}catch(t){f(t)}},"video:canplay":()=>{a=!0,g()},"video:seeked":g,seek:m.manual},b=l.child(),w=[],x=Object.keys(y);for(const e of x)Yr(b,t,e,t=>{s.acceptingEvents&&w.push([e,t])},!1);if(he(t,s,e),!p())return;if(t.notice.show="",!p())return;const k=()=>{if(b.dispose(),!e)return void u();const r={};for(const e of x)r[e]=Yr(i,t,e,y[e],"video:seeked"!==e);for(const[t,e]of w){if(!p()||i.closed)break;r[t](e)}w.length=0};s.assigned?k():s.onAssigned=k}catch(h){f(h)}})}function Hr(t){const{option:e,template:{$video:r}}=t;vt(t,"url",{get:()=>r.src,set(n){return c(this,null,function*(){if(M(t))return;const o=function(t){const e=se.get(t);return se.delete(t),e||pe(t)}(t);o.acceptingEvents=!1;try{if(!n)return void((yield Tt(o.scope))&&o.active()&&(t.loading.show=!0));const i=t.url,a=e.type||st(n),s=e.customType[a];if(a&&s){if(!(yield Tt(o.scope))||!o.active())return;t.loading.show=!0}if(!o.active())return;const l=o.scope.child();let c=!1,d=!1;Yr(l,t,"video:canplay",()=>{c=!d}),Yr(l,t,"video:error",()=>{d=!0});try{if(o.acceptingEvents=!0,a&&s){const e=s.call(t,r,n,t);Promise.resolve(e).catch(t=>me(o,t))}else{if(!o.active())return;r.src=n}}finally{l.dispose()}if(!o.active())return;if(i!==t.url&&(t.option.url=n,o.active()&&t.isReady&&i)){const e=()=>{o.active()&&t.emit("restart",n)};c?e():d||Yr(o.scope,t,"video:canplay",e)}}catch(i){me(o,i)}finally{fe(o)}})}})}const jr=[function(t){const{template:{$video:e}}=t;vt(t,"attr",{value(t,r){const n=e;if(void 0===r)return n[t];n[t]=r}})},function(t){const{i18n:e,notice:r,option:n,constructor:{instances:o},template:{$video:i}}=t;vt(t,"play",{value(){return c(this,null,function*(){ce(t,!0);const a=function(t){const e=ue(t),r=ae.get(t),n=null==r?void 0:r.pauseRevision;return()=>e()&&(null==r?void 0:r.pauseRevision)===n}(t),s=yield i.play();if(!a())return s;const l=e.get("Play");if(!a())return s;if(r.show=l,!a())return s;if(t.emit("play"),n.mutex)for(let e=0;et.playing?t.pause():t.play()})},function(t){const{notice:e}=t;vt(t,"seek",{set(r){t.currentTime=r,t.duration&&(e.show=`${ut(t.currentTime)} / ${ut(t.duration)}`),t.emit("seek",t.currentTime,r)}});const r=t;vt(t,"forward",{set(e){r.seek=t.currentTime+e}}),vt(t,"backward",{set(e){r.seek=t.currentTime-e}})},function(t){const{template:{$video:e},i18n:r,notice:n,storage:o}=t;vt(t,"volume",{get:()=>e.volume||0,set:t=>{e.volume=ct(t,0,1),n.show=`${r.get("Volume")}: ${Number.parseInt(String(100*e.volume),10)}`,0!==e.volume&&o.set("volume",e.volume)}}),vt(t,"muted",{get:()=>e.muted,set:r=>{e.muted=r,t.emit("muted",r)}})},function(t){const{$video:e}=t.template;vt(t,"currentTime",{get:()=>e.currentTime||0,set:r=>{const n=Number.parseFloat(r);Number.isNaN(n)||(!function(t){xe.set(t,ke(t)+1)}(t),e.currentTime=ct(n,0,t.duration))}})},function(t){vt(t,"duration",{get:()=>{const{duration:e}=t.template.$video;return e===1/0?0:e||0}})},function(t){const e=e=>Br(t,e,0);vt(t,"switchQuality",{value:e=>Br(t,e,t.currentTime)}),vt(t,"switchUrl",{value:e}),vt(t,"switch",{set:e})},function(t){const{template:{$video:e},i18n:r,notice:n}=t,o=t;vt(t,"playbackRate",{get:()=>e.playbackRate,set(t){if(t){if(t===e.playbackRate)return;e.playbackRate=t,n.show=`${r.get("Rate")}: ${1===t?r.get("Normal"):`${t}x`}`}else o.playbackRate=1}})},function(t){const{i18n:e,notice:r,template:{$video:n,$player:o}}=t;vt(t,"aspectRatio",{get:()=>o.dataset.aspectRatio||"default",set(i){if(!M(t)){if(i||(i="default"),"default"===i)n.style.width="",n.style.height="",n.style.margin="",delete o.dataset.aspectRatio;else{const e=i.split(":").map(Number),r=ur({width:o.clientWidth,height:o.clientHeight},e[0]/e[1]);if(M(t))return;"width"===(null==r?void 0:r.axis)?(n.style.width=`${r.width}px`,n.style.height="100%",n.style.margin="0 auto"):r&&(n.style.width="100%",n.style.height=`${r.height}px`,n.style.margin="auto 0"),o.dataset.aspectRatio=i}r.show=`${e.get("Aspect Ratio")}: ${"default"===i?e.get("Default"):i}`,M(t)||t.emit("aspectRatio",i)}}})},function(t){const{notice:e,template:{$video:r}}=t,n=document.createElement("canvas");function o(o){const i=ue(t);return new Promise((a,s)=>{const l=r=>{try{!M(t)&&i()&&(e.show=r)}catch(n){return void s(n)}s(r)};try{!function(t,e){t.width=e.videoWidth,t.height=e.videoHeight;const r=t.getContext("2d");if(!r)throw new TypeError("Canvas 2D context is unavailable");r.drawImage(e,0,0)}(n,r),o?function(t,e,r){t.toBlob(t=>{try{if(!t)throw new Error("Unable to encode screenshot blob");e(URL.createObjectURL(t))}catch(n){r(n)}})}(n,a,l):a(n.toDataURL("image/png"))}catch(c){l(c)}})}vt(t,"getDataURL",{value:()=>o(!1)}),vt(t,"getBlobUrl",{value:()=>o(!0)}),vt(t,"screenshot",{value:e=>c(null,null,function*(){const n=ue(t),o=yield t.getDataURL();if(!M(t)&&n()){const i=e||`artplayer_${ut(r.currentTime)}`;!M(t)&&n()&<(o,`${i}.png`),!M(t)&&n()&&t.emit("screenshot",o)}return o})})},function(t){const{i18n:e,notice:r,template:{$video:n,$player:o}}=t,i=()=>{if(M(t))return;const i=function(t){const e=yr.raw,r=t.ownerDocument;if(e&&Reflect.get(r,e.fullscreenEnabled))return{document:r,target:t,get element(){return Reflect.get(r,e.fullscreenElement)},elementProperty:e.fullscreenElement,changeEvent:e.fullscreenchange,errorEvent:e.fullscreenerror,request:()=>br(t,e.requestFullscreen,void 0),exit:()=>br(r,e.exitFullscreen)}}(o);i?vt(t,"fullscreen",Er(t,i)):n.webkitSupportsFullscreen&&"function"===typeof n.webkitEnterFullscreen&&"function"===typeof n.webkitExitFullscreen?vt(t,"fullscreen",Pr(t)):vt(t,"fullscreen",{get:()=>!1,set(){M(t)||(r.show=e.get("Fullscreen Not Supported"))}}),vt(t,"fullscreen",bt(t,"fullscreen"))};t.once("video:loadedmetadata",i),P(t).add(()=>{t.off("video:loadedmetadata",i)})},function(t){const e=function(t){const{$player:e}=t.template;let r,n=0;function o(t,r){return null===t.style?e.removeAttribute("style"):e.setAttribute("style",t.style),!!r()&&(e.classList.remove("art-fullscreen-web"),!!r()&&(zr(t.placement),r()))}return P(t).add(()=>{var t;n+=1;const i=r;if(r=void 0,i)try{o(i,()=>!0)}catch(a){try{e.parentNode!==i.placement.parent&&(null==(t=e.parentNode)||t.removeChild(e))}catch(s){throw new A([a,s])}throw a}}),i=>{if(M(t))return;const a=++n,s=()=>a===n&&!M(t),l=function(t){var e;const r=null==(e=t.ownerDocument)?void 0:e.activeElement,n=r&&t.contains(r);return()=>{n&&r.isConnected&&t.contains(r)&&r.ownerDocument.activeElement===r.ownerDocument.body&&r.focus({preventScroll:!0})}}(e);if(i){r||(r={placement:Mr(e),style:e.getAttribute("style")});const n=r;try{const r=e.ownerDocument.body;if(t.constructor.FULLSCREEN_WEB_IN_BODY&&e.parentNode!==r&&r.appendChild(e),!s())return;if(t.state="fullscreenWeb",!s())return;e.style.width="100%",e.style.height="100%",e.classList.add("art-fullscreen-web")}catch(c){throw s()&&o(n,s)&&(r=void 0,l()),c}if(!s())return;if(l(),!s())return;t.emit("fullscreenWeb",!0)}else{if(r){if(!o(r,s))return;r=void 0}else e.classList.remove("art-fullscreen-web");if(!s())return;if(l(),!s())return;t.emit("fullscreenWeb",!1)}s()&&t.emit("resize")}}(t);vt(t,"fullscreenWeb",{get:()=>t.template.$player.classList.contains("art-fullscreen-web"),set:e})},function(t){const{i18n:e,notice:r,template:{$video:n}}=t,o=n.ownerDocument;o.pictureInPictureEnabled&&"function"===typeof n.requestPictureInPicture&&"function"===typeof o.exitPictureInPicture?vt(t,"pip",function(t){const{$video:e}=t.template,r=e.ownerDocument,n=P(t).child(),o=()=>r.pictureInPictureElement===e;let i=o(),a=i,s=!1,l=!1,c=0;function d(){if(o())try{r.exitPictureInPicture().catch(()=>{})}catch(t){}}function u(e,r,n){e.then(()=>{!r||!M(t)&&a||d()},e=>{M(t)||c!==n||(t.notice.show=e)}).finally(()=>{c===n&&(s=!1)}).catch(()=>{})}return e.disablePictureInPicture=!1,n.add(()=>{c++,a=!1,d()}),Ct(n,e,"enterpictureinpicture",()=>{if(l)return void d();if(!o()||i)return;const e=c;t.state="pip",!M(t)&&e===c&&o()&&(i=!0,t.emit("pip",!0))}),Ct(n,e,"leavepictureinpicture",()=>{i&&!o()&&(i=!1,t.emit("pip",!1))}),{get:()=>!M(t)&&o()?e:null,set(n){if(M(t))return;const i=++c;if(a=Boolean(n),a?l=!1:s&&(l=!0),s=!1,a){if(t.state="pip",M(t)||c!==i)return;s=!0;try{u(e.requestPictureInPicture(),!0,i)}catch(d){throw c===i&&(s=!1),d}}else o()&&u(r.exitPictureInPicture(),!1,i)}}}(t)):"function"===typeof n.webkitSupportsPresentationMode&&"function"===typeof n.webkitSetPresentationMode?vt(t,"pip",function(t){const{$video:e}=t.template,r=P(t).child();let n=!1,o=!1,i=0,a=0;function s(r=!1){if(M(t)||Nr.has(e))return;const s=_r(e);if(s&&(o=!1),s===n&&!r)return;const l=i;s&&(t.state="pip"),M(t)||i!==l||_r(e)!==s||(n=s,a++,t.emit("pip",s))}e.webkitSetPresentationMode("inline"),r.add(()=>{i++,o&&Vr(e),_r(e)&&e.webkitSetPresentationMode("inline")});for(const l of["webkitpresentationmodechanged","enterpictureinpicture","leavepictureinpicture"])Ct(r,e,l,()=>s());return{get:()=>!M(t)&&_r(e),set(r){var n;if(M(t))return;const l=++i,c=a;if(r){if(!1===(null==(n=e.webkitSupportsPresentationMode)?void 0:n.call(e,"picture-in-picture")))return void(t.notice.show=t.i18n.get("PIP Not Supported"));if(Wr(e),t.state="pip",M(t)||i!==l)return;o=!0;try{e.webkitSetPresentationMode("picture-in-picture")}catch(d){throw l===i&&(o=!1),d}}else o&&(o=!1,Vr(e)),_r(e)&&e.webkitSetPresentationMode("inline");M(t)||l!==i||c!==a||_r(e)!==Boolean(r)||s(!0)}}}(t)):vt(t,"pip",{get:()=>!1,set(){M(t)||(r.show=e.get("PIP Not Supported"))}})},function(t){const{$video:e}=t.template,r=t;vt(t,"loaded",{get:()=>r.loadedTime/e.duration}),vt(t,"loadedTime",{get:()=>e.buffered.length?e.buffered.end(e.buffered.length-1):0})},function(t){vt(t,"played",{get:()=>t.currentTime/t.duration})},function(t){const{$video:e}=t.template;vt(t,"playing",{get:()=>"boolean"===typeof e.playing?e.playing:!!(e.currentTime>0&&!e.paused&&!e.ended&&e.readyState>2)})},function(t){const{$container:e,$player:r,$video:n}=t.template;vt(t,"autoSize",{value(){if(M(t))return;const o={width:n.videoWidth,height:n.videoHeight};if(!dr(o))return;const i=Y(e),a=ur(i,o.width/o.height);a&&!M(t)&&("width"===a.axis?(r.style.width=a.width/i.width*100+"%",r.style.height="100%"):(r.style.width="100%",r.style.height=a.height/i.height*100+"%"),t.emit("autoSize",{width:t.width,height:t.height}))}})},function(t){const e=t;vt(t,"rect",{get:()=>Y(t.template.$player)});const r=["bottom","height","left","right","top","width"];for(let n=0;ne.rect[o]})}vt(t,"x",{get:()=>e.left+window.pageXOffset}),vt(t,"y",{get:()=>e.top+window.pageYOffset})},function(t){const{template:{$player:e},i18n:r,notice:n}=t;vt(t,"flip",{get:()=>e.dataset.flip||"normal",set(o){M(t)||(o||(o="normal"),"normal"===o?delete e.dataset.flip:e.dataset.flip=o,n.show=`${r.get("Video Flip")}: ${r.get(dt(o))}`,M(t)||t.emit("flip",o))}})},function(t){vt(t,"mini",Ir(t))},function(t){const{template:{$poster:e}}=t;vt(t,"poster",{get:()=>{try{return e.style.backgroundImage.match(/"(.*)"/)[1]}catch(t){return""}},set(t){et(e,"backgroundImage",`url(${t})`)}})},function(t){const{$container:e,$video:r}=t.template;vt(t,"autoHeight",{value(){if(M(t))return;const n=function(t,e){if(!Number.isFinite(t)||t<=0||!dr(e))return;const r=e.height*(t/e.width);return Number.isFinite(r)&&r>0?r:void 0}(e.clientWidth,{width:r.videoWidth,height:r.videoHeight});void 0===n||M(t)||(e.style.height=`${n}px`,t.emit("autoHeight",n))}})},function(t){const{$player:e}=t.template;vt(t,"cssVar",{value:(t,r)=>r?e.style.setProperty(t,r):getComputedStyle(e).getPropertyValue(t)})},function(t){vt(t,"theme",{get:()=>t.cssVar("--art-theme"),set(e){t.cssVar("--art-theme",e)}})},function(t){vt(t,"type",{get:()=>t.option.type,set(e){t.option.type=e}})},function(t){const e=["mini","pip","fullscreen","fullscreenWeb"];vt(t,"state",{get:()=>e.find(e=>t[e])||"standard",set(r){for(let n=0;nt.startTime<=n&&ni[e]===t)){for(const e of r)t.removeCue(e);for(const e of r)t.addCue(e)}}(n.$track.track,n.$video,s),t.subtitle.update(),e.show=`${r.get("Subtitle Offset")}: ${o}s`,t.emit("subtitleOffset",o)}})},function(t){if(M(t))return;const{i18n:e,notice:r,proxy:n,template:{$video:o}}=t;let i=!0;const a=window.WebKitPlaybackTargetAvailabilityEvent;if(M(t))return;const s=a&&o.webkitShowPlaybackTargetPicker;M(t)||(s?n(o,"webkitplaybacktargetavailabilitychanged",e=>{if(!M(t))switch(e.availability){case"available":i=!0;break;case"not-available":i=!1}}):i=!1,M(t)||vt(t,"airplay",{value(){if(!M(t))if(i){const e=o.webkitShowPlaybackTargetPicker;if(M(t))return;Reflect.apply(e,o,[]),M(t)||t.emit("airplay")}else{const n=e.get("AirPlay Not Available");M(t)||(r.show=n)}}}))},function(t){vt(t,"quality",{set(e){const{controls:r,notice:n,i18n:o}=t,i=e.find(t=>t.default)||e[0];r.update({name:"quality",position:"right",index:10,style:{marginRight:"10px"},html:(null==i?void 0:i.html)||"",selector:e,onSelect(e,r,i){return c(this,null,function*(){const r=function(t){return t&&Se.get(t)||(()=>!0)}(i);if(yield t.switchQuality(e.url),!M(t)&&r()){const i=`${o.get("Switch Video")}: ${e.html}`;!M(t)&&r()&&(n.show=i)}return e.html})}})}})},function(t){const{option:e,template:{$progress:r,$video:n}}=t;let o,i,a,l=P(t).child(),c=!1;function d(){const e=l;l=P(t).child(),o=void 0,c=!1,a=void 0,e.dispose()}function u(){const i=a,c=l;if(!i||!o)return;const d=()=>{var e;return!M(t)&&!c.closed&&l===c&&a===i&&i.sourceActive()&&(null==(e=t.controls)?void 0:e.thumbnails)===i.element};if(!d())return;const u=r.clientWidth*i.percentage;if(!(u>0&&ud-f/2?d-f+"px":u-f/2+"px"}}(e.thumbnails,{imageWidth:o.naturalWidth,videoWidth:n.videoWidth,videoHeight:n.videoHeight,progressWidth:r.clientWidth,position:u}));for(const[t,e]of Object.entries(p)){if(!d())return;et(i.element,t,e)}}Ve(t)("setBar",(r,n,s)=>{var p;const f=null==(p=t.controls)?void 0:p.thumbnails,{url:h,scale:m}=e.thumbnails;if(!M(t)&&f&&h&&("hover"===r||"played"===r&&s&&k)){if(i!==f){const t=D(f);if(t.closed)return;i=f,t.add(()=>{i===f&&(i=void 0,d())})}if(a={percentage:n,element:f,sourceActive:ue(t)},o)u();else if(!c){const t=l;c=!0,function(t,e,r){return nt(t,e,r)}(h,m,t).then(e=>{l!==t||t.closed||(c=!1,o=e,u())}).catch(e=>{l!==t||t.closed||(c=!1,console.warn("ArtPlayer thumbnail load failed:",e))})}}}),vt(t,"thumbnails",{get:()=>t.option.thumbnails,set:e=>{M(t)||!e.url||t.option.isLive||M(t)||(t.option.thumbnails=e,d())}})},function(t){!function(t){const{proxy:e,template:{$video:r}}=t;for(let n=0;n{M(t)||t.emit(`video:${e.type}`,e)})}(t);const e=hr(t);!function(t,e){pr(t,"video:canplay",()=>{e.reset(),fr(t,[["loading",!1]])}),pr(t,"video:canplay",()=>{fr(t,[["loading",!1],["controls",!0],["mask",!0]]),M(t)||(t.isReady=!0,t.emit("ready"))},!0)}(t,e),function(t){const{option:e}=t;pr(t,"video:ended",()=>{if(e.loop){const e=ue(t);if(t.seek=0,M(t)||!e())return;at(t.play()),e()&&fr(t,[["controls",!1],["mask",!1]],e)}else fr(t,[["controls",!0],["mask",!0]])})}(t),pr(t,"video:error",e.schedule),function(t,e){const{template:{$poster:r}}=t;pr(t,"video:loadedmetadata",()=>{t.emit("resize"),k&&fr(t,[["loading",!1],["controls",!0],["mask",!0]])}),pr(t,"video:loadstart",()=>{e.loadStart(),fr(t,[["loading",!0],["mask",!1],["controls",!0]])}),pr(t,"video:pause",()=>{fr(t,[["controls",!0],["mask",!0]])}),pr(t,"video:play",()=>{fr(t,[["mask",!1]]),M(t)||et(r,"display","none")}),pr(t,"video:playing",()=>fr(t,[["mask",!1]])),pr(t,"video:progress",()=>{t.playing&&fr(t,[["loading",!1]])}),pr(t,"video:seeked",()=>fr(t,[["loading",!1],["mask",!0]])),pr(t,"video:seeking",()=>fr(t,[["loading",!0],["mask",!1]])),pr(t,"video:timeupdate",()=>fr(t,[["mask",!1]])),pr(t,"video:waiting",()=>fr(t,[["loading",!0],["mask",!1]]))}(t,e)},function(t){if(M(t))return;const{option:e,storage:r,template:{$video:n,$poster:o}}=t;for(const s in e.moreVideoAttr){if(M(t))return;const r=e.moreVideoAttr[s];if(M(t))return;t.attr(s,r)}if(M(t))return;if(e.muted){const r=e.muted;if(M(t))return;t.muted=r}if(M(t))return;if(e.volume){const r=ct(e.volume,0,1);if(M(t))return;n.volume=r}if(M(t))return;const i=r.get("volume");if(M(t))return;if("number"===typeof i&&(n.volume=ct(i,0,1)),M(t))return;if(e.poster){const r=`url(${e.poster})`;if(M(t))return;et(o,"backgroundImage",r)}if(M(t))return;if(e.autoplay){const r=e.autoplay;if(M(t))return;n.autoplay=r}if(M(t))return;if(e.playsInline){if(M(t))return;if(n.playsInline=!0,M(t))return;n["webkit-playsinline"]=!0}if(M(t))return;if(e.theme){const r=e.cssVar,n=e.theme;if(M(t))return;r["--art-theme"]=n}for(const s in e.cssVar){if(M(t))return;const r=e.cssVar[s];if(M(t))return;t.cssVar(s,r)}if(M(t))return;const a=e.url;M(t)||(t.url=a)}];class qr{constructor(t){if(!M(t)){Hr(t);for(const e of jr){if(M(t))return;e(t)}}}}const Ur=new WeakMap,Xr="art-auto-orientation-fullscreen";function Gr(t){if(Ur.get(t.orientation)===t)try{t.orientation.unlock()}catch(e){}}const Kr="art-auto-orientation",Zr=["width","height","transform-origin","transform"];function Jr(t){const{$player:e,$video:r}=t.template,n=()=>{const t={width:r.videoWidth,height:r.videoHeight},n=e.ownerDocument.documentElement,o={width:n.clientWidth,height:n.clientHeight};return dr(t)&&dr(o)&&(t.width>t.height&&o.widtho.height)},o=function(t,e){const{$player:r}=t.template,n=P(t);let o,i=()=>{};function a(){i(),i=()=>{};const e=o;if(o=void 0,e&&t.fullscreenWeb)for(const{name:t,value:o,priority:i}of e)r.style.setProperty(t,o,i);const n=r.classList.contains(Kr);r.classList.remove(Kr),n&&(t.isRotate=!1,M(t)||t.emit("resize"))}function s(n){if(!t.fullscreenWeb||!e())return;const i=B();if(M(t)||!t.fullscreenWeb)return;const a=r.ownerDocument.documentElement;null!=o||(o=Zr.map(t=>({name:t,value:r.style.getPropertyValue(t),priority:r.style.getPropertyPriority(t)}))),r.style.width=a.clientHeight-i.top-i.bottom+"px",r.style.height=a.clientWidth-i.left-i.right+"px",r.style.transformOrigin="0 0",r.style.transform=`rotate(90deg) translate(${i.top}px, -${a.clientWidth-i.right}px)`,r.classList.add(Kr),t.isRotate=!0,n&&t.emit("resize")}return n.add(a),r=>{var l;M(t)||(r?o?s(!1):e()&&(i(),i=St(n,()=>{o||s(!0)},Number(null!=(l=t.constructor.AUTO_ORIENTATION_TIME)?l:0))):a())}}(t,n),i=function(t,e){const{$player:r}=t.template;let n;function o(){const t=n;n=void 0,r.classList.remove(Xr),t&&(t.cancelled=!0,Gr(t),t.settled&&Ur.get(t.orientation)===t&&Ur.delete(t.orientation))}return P(t).add(o),i=>{var a,s;if(M(t))return;if(!i)return void o();if(n&&!n.cancelled&&Ur.get(n.orientation)===n)return;const l=null==(s=null==(a=r.ownerDocument.defaultView)?void 0:a.screen)?void 0:s.orientation;if("function"!==typeof(null==l?void 0:l.lock)||"function"!==typeof l.unlock||!e())return;const c={orientation:l,cancelled:!1,settled:!1};n=c,Ur.set(l,c);const d=()=>!M(t)&&!c.cancelled&&n===c&&Ur.get(l)===c,u=e=>{c.settled=!0;const o=d();Ur.get(l)===c&&Ur.delete(l),n===c&&(n=void 0),o&&(r.classList.remove(Xr),t.notice.show=e)};try{const t=l.lock(l.type.startsWith("portrait")?"landscape":"portrait");Promise.resolve(t).then(()=>{c.settled=!0,d()?r.classList.add(Xr):(Gr(c),Ur.get(l)===c&&Ur.delete(l))}).catch(u)}catch(p){u(p)}}}(t,n);return t.on("fullscreenWeb",o),t.on("fullscreen",i),P(t).add(()=>{t.off("fullscreenWeb",o),t.off("fullscreen",i)}),{name:"autoOrientation",get state(){return e.classList.contains("art-auto-orientation")}}}function Qr(t){return t.get("times")||{}}function tn(t){const{storage:e}=t,r=function(t){const{i18n:e,icons:r,storage:n,constructor:o,template:{$poster:i}}=t,a=t.layers.add({name:"auto-playback",html:'\n
\n
\n
\n '});if(!a||M(t))return()=>{};const s=Ot(".art-auto-playback-last",a),l=Ot(".art-auto-playback-jump",a),c=Ot(".art-auto-playback-close",a);Rt(c,r.close);const d=D(a);let u,p=0;const f=()=>{const r=++p;if(null==u||u.dispose(),d.closed||M(t)||p!==r)return;const f=d.child();u=f;const h=()=>u===f&&!f.closed&&!M(t);f.add(()=>{u===f&&(u=void 0,et(a,"display","none"))});const m=de(t).add(()=>{f.dispose()});f.add(()=>{m()});const v=Qr(n)[t.option.id||t.option.url];if(!h())return;if(et(a,"display","none"),!h()||!v||!(v>=o.AUTO_PLAYBACK_MIN))return;if(!h())return;if(et(a,"display","flex"),!h())return;const g=`${e.get("Last Seen")} ${ut(v)}`;if(!h())return;if(s.textContent=g,!h())return;const y=e.get("Jump Play");if(!h())return;if(l.textContent=y,!h())return;const b=(e,r)=>{const n=t.events.proxy(e,"click",()=>{h()&&r()});f.add(()=>{t.events.remove(n)})};if(b(c,()=>{et(a,"display","none")}),!h())return;if(b(l,()=>{t.seek=v,h()&&(at(t.play()),h()&&(et(i,"display","none"),h()&&et(a,"display","none")))}),!h())return;let w=()=>{},x=!1;const k=()=>{!x&&h()&&(x=!0,w(),St(f,()=>{h()&&et(a,"display","none")},o.AUTO_PLAYBACK_TIMEOUT))};t.on("video:timeupdate",k),w=f.add(()=>{t.off("video:timeupdate",k)}),x&&w()};return()=>{N(t,a,"ready",f),N(t,a,"restart",f)}}(t);return function(t){const{storage:e,constructor:r}=t;Ve(t)("video:timeupdate",()=>{if(!t.playing)return;const n=Qr(e),o=Object.keys(n),i=r.AUTO_PLAYBACK_MAX,a=t.option.id||t.option.url,s=t.currentTime;M(t)||(o.length>i&&delete n[o[0]],n[a]=s,M(t)||e.set("times",n))})}(t),r(),{name:"auto-playback",get times(){return Qr(e)},clear:()=>e.del("times"),delete(t){const r=Qr(e);return delete r[t],e.set("times",r),r}}}function en(t){let e,r=0;return{start:n=>{const o=++r;if(null==e||e.scope.dispose(),o!==r||M(t)||1!==n.touches.length||!t.playing||t.isLock)return;const i={scope:de(t).child(),active:!1,previousRate:1};e=i,i.scope.add(()=>{if(e===i&&(e=void 0,i.active))try{t.playbackRate=i.previousRate}finally{(null==e?void 0:e.active)||q(t.template.$player,"art-fast-forward")}}),St(i.scope,()=>{if(e!==i||M(t)||!t.playing||t.isLock)i.scope.dispose();else try{if(i.previousRate=t.playbackRate,e!==i||i.scope.closed)return;i.active=!0;const r=t.constructor.FAST_FORWARD_VALUE;if(e!==i||i.scope.closed||M(t))return;t.playbackRate=r,e!==i||i.scope.closed||M(t)||j(t.template.$player,"art-fast-forward")}catch(r){try{i.scope.dispose()}catch(n){console.warn("Failed to restore fast-forward playback rate:",n)}throw r}},t.constructor.FAST_FORWARD_TIME)},stop:()=>{r++,null==e||e.scope.dispose()}}}function rn(t){const{proxy:e,template:{$player:r,$video:n}}=t,o=en(t),i=Ve(t);return e(n,"touchstart",t=>o.start(t)),e(n,"touchcancel",o.stop),i("document:touchmove",o.stop),i("document:touchend",o.stop),i("document:touchcancel",o.stop),i("video:pause",o.stop),i("destroy",o.stop),i("lock",t=>{t&&o.stop()}),{name:"fastForward",get state(){return U(r,"art-fast-forward")}}}function nn(t,e,r,n){let o;const i=()=>!r.closed&&!M(t),a=t.i18n.get("Lock");if(!i())return()=>{};e.setAttribute("aria-label",a),zt(r,e),Ct(r,e,"keydown",t=>{const r=t;i()&&n()&&Mt(r)&&!r.defaultPrevented&&"Escape"===r.key&&(Pt(r),e.click())});const s=n=>{if(i())if(e.setAttribute("aria-pressed",String(n)),n&&!o){const{$player:n,$bottom:a}=t.template,s=a.contains(a.ownerDocument.activeElement)&&n.classList.contains("art-keyboard-focus");o=r.child(),function(t,e){const r=new Map,n=e.hasAttribute("inert"),o=e.getAttribute("aria-hidden"),i=(t,e)=>{"-1"===t.getAttribute("tabindex")&&(null===e?t.removeAttribute("tabindex"):t.setAttribute("tabindex",e))};if(t.add(()=>{for(const[t,e]of r)i(t,e);r.clear(),n||""!==e.getAttribute("inert")||e.removeAttribute("inert"),"true"===e.getAttribute("aria-hidden")&&(null===o?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden",o))}),t.closed)return;n||e.setAttribute("inert",""),e.setAttribute("aria-hidden","true");const a=()=>{if(!t.closed){for(const[t,n]of r)e.contains(t)||(i(t,n),r.delete(t));for(const t of e.querySelectorAll("[tabindex],button,input,select,textarea,a[href],[contenteditable]"))r.has(t)||(r.set(t,t.getAttribute("tabindex")),t.setAttribute("tabindex","-1"))}};if(a(),"undefined"!==typeof MutationObserver){const r=new MutationObserver(a);r.observe(e,{childList:!0,subtree:!0}),t.add(()=>{r.disconnect()})}}(o,a),i()&&s&&e.focus({preventScroll:!0})}else if(!n&&o){const t=o;o=void 0,t.dispose()}};return s(n()),s}function on(t){const{layers:e,icons:r,template:{$player:n}}=t;function o(){return U(n,"art-lock")}function i(){M(t)||(j(n,"art-lock"),M(t)||(t.isLock=!0,M(t)||t.emit("lock",!0)))}function a(){M(t)||(q(n,"art-lock"),M(t)||(t.isLock=!1,M(t)||t.emit("lock",!1)))}return e.add({name:"lock",mounted(e){const n=D(e);if(n.closed||M(t))return;const i=Rt(e,r.lock);if(n.closed||M(t))return;const a=Rt(e,r.unlock);if(n.closed||M(t))return;const s=nn(t,e,n,o);n.closed||M(t)||(o()?(et(i,"display","inline-flex"),n.closed||M(t)||et(a,"display","none")):et(i,"display","none"),N(t,e,"lock",e=>{M(t)||(et(i,"display",e?"inline-flex":"none"),n.closed||M(t)||et(a,"display",e?"none":"inline-flex"),n.closed||M(t)||s(e))}))},click(){o()?a():i()}}),{name:"lock",get state(){return o()},set state(t){t?i():a()}}}function an(t){return Ve(t)("control",e=>{e?q(t.template.$player,"art-mini-progress-bar"):j(t.template.$player,"art-mini-progress-bar")}),{name:"mini-progress-bar"}}class sn{constructor(t){this.art=t,this.id=0;const{option:e}=t;!function(t,e){M(t.art)||!e.miniProgressBar||e.isLive||t.add(an),!M(t.art)&&e.lock&&k&&t.add(on),M(t.art)||!e.autoPlayback||e.isLive||t.add(tn),!M(t.art)&&e.autoOrientation&&k&&t.add(Jr),!M(t.art)&&e.fastForward&&k&&!e.isLive&&t.add(rn)}(this,e);for(let r=0;rconsole.warn("Failed to initialize ArtPlayer plugin:",t))}}add(t){it(!M(this.art),"Cannot add a plugin after ArtPlayer is destroyed"),this.id+=1;const e=t.call(this.art,this.art);return e instanceof Promise?e.then(e=>this.next(t,e)):this.next(t,e)}next(t,e){return function(t,e,r){if(M(t.art))return t;const n=r&&r.name||e.name||`plugin${t.id}`;if(M(t.art))return t;let o=n;const i=yt(t,o);if(M(t.art))return t;const a=`Cannot add a plugin that already has the same name: ${n}`;return M(t.art)||(it(!i,a),("object"===typeof n&&null!==n||"function"===typeof n)&&(o=Reflect.ownKeys({[o]:void 0})[0]),M(t.art)||vt(t,o,{value:r})),t}(this,t,e)}}const ln=new WeakMap;function cn(t){return!t.closed&&!ln.get(t)}function dn(t){ln.set(t,(ln.get(t)||0)+1);let e=!0;return()=>{if(!e)return;e=!1;const r=(ln.get(t)||1)-1;r?ln.set(t,r):ln.delete(t)}}const un=new WeakMap,pn=new WeakMap,fn=["$parent","$parents","$option","$events","$formatted"];function hn(t){var e,r;const n=new Set;let o=t;for(;o&&!n.has(o);){n.add(o);const t=un.get(o);if(!t||!t.owner.active||(null==(e=t.owner.scope)?void 0:e.closed)||!t.option.includes(o))return!1;if(!t.parent)return t.owner.root===t.option;if((null==(r=un.get(t.parent))?void 0:r.owner)!==t.owner)return!1;o=t.parent}return!1}function mn(t){let e=t;for(;e;){const r=Object.getOwnPropertyDescriptor(e,"name");if(r)return"set"in r?"function"===typeof r.set:Boolean(r.writable&&(e===t||Object.isExtensible(t)));e=Object.getPrototypeOf(e)}return Object.isExtensible(t)}function vn(t){const e=un.get(t);if(!e)throw new Error("Setting item has not been formatted");return e}function gn(t,e){var r;for(let n=0;n{c&&c!==r&&c.dispose()},()=>En(t,o)])try{e()}catch(d){d instanceof A?l.push(...d.errors):l.push(d)}if(r.closed||M(t)||(o.push(...i.splice(0)),$n.set(r,o),xn.set(e,r),kn.set(e,n)),a(),l.length)throw new A(l)},dispose(){if(s){s=!1;try{r.dispose()}finally{a()}}}}}function Ln(t,e,r,n,o,i){const a=i||Cn(e);if(!cn(a)||M(t))return;const s=t.proxy(r,n,e=>{if(cn(a)&&!M(t))try{return o(e)}catch(r){console.warn("ArtPlayer setting callback failed:",r)}});!cn(a)||M(t)?t.events.remove(s):(vn(e).events.push(s),i&&i!==xn.get(e)&&i.add(()=>{const r=vn(e).events,n=r.indexOf(s);n>=0&&(r.splice(n,1),t.events.remove(s))}))}function Pn(t,e,r,n){const o=Cn(e);if(!cn(o)||M(t))return;const i=(...e)=>{if(cn(o)&&!M(t))return n(...e)};t.on(r,i),o.add(()=>{t.off(r,i)})}const Mn='[tabindex="0"],button,input,select,textarea,a[href],[contenteditable]';function zn(t){var e;if(!t.isConnected||t.matches(":disabled")||t.closest("[inert]")||"true"===t.getAttribute("aria-disabled")||!t.getClientRects().length)return!1;const r=null==(e=t.ownerDocument.defaultView)?void 0:e.getComputedStyle(t).visibility;return"hidden"!==r&&"collapse"!==r}function Rn(t){return Array.from(t.querySelectorAll(Mn)).filter(t=>"-1"!==t.getAttribute("tabindex")&&zn(t))}function On(t,e,r=!1){if(!t.show||M(t.art)||!t.active)return;const n=t.cache.get(t.active);if(!n||!cn(bn(n)))return;const o=function(t,e,r=!1){if(e&&e!==t&&t.contains(e)&&e.matches(Mn)&&"-1"!==e.getAttribute("tabindex")&&zn(e))return e;const n=Rn(t),o=t.querySelector(".art-setting-item.art-current");return n.find(t=>null==e?void 0:e.contains(t))||(r?n[n.length-1]:n.find(t=>null==o?void 0:o.contains(t))||n.find(t=>!t.classList.contains("art-setting-item-back"))||n[0])}(n,e,r);null==o||o.focus({preventScroll:!0}),M(t.art)||null==o||o.scrollIntoView({block:"nearest",inline:"nearest"})}function Dn(t){const e=t.$parent.ownerDocument,r=e.activeElement,n=t.$parent.contains(r);return o=>{n&&!M(t.art)&&(e.activeElement===e.body||e.activeElement===r&&!(null==r?void 0:r.getClientRects().length))&&On(t,o)}}function In(t){const{art:e}=t,r=P(e).child();if(r.closed)return;const n=()=>t.$parent.ownerDocument;let o=!1;const i=()=>{t.show=!1,r.closed||M(e)||t.render()},a=i=>{r.closed||M(e)||(i?n().activeElement===e.controls.setting&&e.template.$player.classList.contains("art-keyboard-focus")&&On(t,void 0,o):t.$parent.contains(n().activeElement)&&function(t){const{art:e,$parent:r}=t,n=e.template.$player,o=r.ownerDocument,i=e.controls.setting;!M(e)&&r.contains(o.activeElement)&&(i&&n.contains(i)&&zn(i)&&i.focus({preventScroll:!0}),(o.activeElement===o.body||r.contains(o.activeElement))&&It(e))}(t))};e.on("setting",a),r.add(()=>{e.off("setting",a)}),Ct(r,e.template.$player,"keydown",r=>{var n,a;const s=r;if(!Mt(s)||s.defaultPrevented||M(e))return;const l=s.target;if(l===e.controls.setting){if("ArrowDown"===s.key||"ArrowUp"===s.key)if(Pt(s),t.show)On(t,void 0,"ArrowUp"===s.key);else{o="ArrowUp"===s.key;try{t.show=!0}finally{o=!1}}else"Escape"===s.key&&t.show&&(Pt(s),i());return}if(!t.show||!t.$parent.contains(l))return;if("Escape"===s.key)return Pt(s),void i();if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"].includes(s.key))return;const c=l.closest(".art-setting-item");if(!c||l!==c&&!l.matches('button,a[href],[role="button"]'))return;const d=t.active&&t.cache.get(t.active);if(!d)return;const u=null==(n=t.active)?void 0:n.find(t=>t.$item===c);if(!cn(bn(d))||u&&!cn(Cn(u)))return void Pt(s);const p=Rn(d),f=p.indexOf(l);if(f<0)return;let h;switch(s.key){case"ArrowDown":h=Math.min(f+1,p.length-1);break;case"ArrowUp":h=Math.max(f-1,0);break;case"Home":h=0;break;case"End":h=p.length-1;break;case"ArrowLeft":{const t=d.querySelector(".art-setting-item-back");return Pt(s),void(null==t||t.click())}case"ArrowRight":return Pt(s),void((null==(a=null==u?void 0:u.selector)?void 0:a.length)&&l.click());default:return}Pt(s),void 0!==h&&On(t,p[h])});let s=!1;Ct(r,t.$parent,"focusout",o=>{const a=o.relatedTarget;a&&(t.$parent.contains(a)||a===e.controls.setting)||s||(s=!0,St(r,()=>{s=!1,r.closed||M(e)||!t.show||t.$parent.contains(n().activeElement)||n().activeElement===e.controls.setting||i()},0))})}function Nn(t){var e,r;const{art:n,active:o}=t,{controls:i,constructor:{SETTING_WIDTH:a,SETTING_ITEM_HEIGHT:s},template:{$player:l,$setting:c,$bottom:d}}=n;if(!i.setting||!t.show||!o)return;const u=l.getBoundingClientRect(),p=i.setting.getBoundingClientRect(),f=u.width/l.offsetWidth||1,h=(p.left-u.left+p.width/2)/f-l.clientLeft,m=function(t){const{containerWidth:e,containerHeight:r,requestedWidth:n,rows:o,rowHeight:i,controlCenter:a,bottom:s,padding:l}=t,c=Math.min(Math.max(0,l),Math.max(0,e/2)),d=Math.min(Math.max(0,n),Math.max(0,e-2*c));return{width:d,height:Math.min(Math.max(0,o*i),Math.max(0,r-s-c)),left:Math.max(c,Math.min(a-d/2,e-c-d))}}({containerWidth:l.clientWidth,containerHeight:l.clientHeight,requestedWidth:(null==(r=null==(e=o[0])?void 0:e.$parent)?void 0:r.width)||a,rows:o.length+(o===t.option?0:1),rowHeight:s,controlCenter:h,bottom:Number.parseFloat(getComputedStyle(c).bottom)||0,padding:Number.parseFloat(getComputedStyle(d).paddingLeft)||0});c.style.height=`${m.height}px`,c.style.width=`${m.width}px`,n.isRotate||k||(h+m.width/2>l.clientWidth?(c.style.left="",c.style.right=""):(c.style.left=`${m.left}px`,c.style.right="auto"))}const _n=new WeakMap;function Wn(t){_n.delete(t)}const Fn=new WeakMap;function Vn(t,e){e?Fn.set(t,e):Fn.delete(t)}function Yn(t){var e;const r=new Map(Reflect.ownKeys(t).map(e=>[e,Object.getOwnPropertyDescriptor(t,e)])),n=[],o=Fn.get(t),i=null==o?void 0:o();for(const a of["html","icon","tooltip"]){const t=null==(e=r.get(a))?void 0:e.value;t instanceof Node&&n.push({node:t,parent:t.parentNode,next:t.nextSibling})}return()=>{var e,a;for(const n of Reflect.ownKeys(t))!r.has(n)&&(null==(e=Object.getOwnPropertyDescriptor(t,n))?void 0:e.configurable)&&Reflect.deleteProperty(t,n);for(const[n,o]of r)Object.defineProperty(t,n,o);null==i||i(),Vn(t,o);for(const{node:t,parent:r,next:o}of n)r?r.insertBefore(t,(null==o?void 0:o.parentNode)===r?o:null):null==(a=t.parentNode)||a.removeChild(t)}}function Bn(t){var e,r;const n=null==(e=t.$item)?void 0:e.querySelector(".art-setting-range");n&&n.setAttribute("aria-label",(null==(r=t.$html)?void 0:r.textContent)||"")}const Hn=new WeakMap;function jn(t,e,r,n,o,i,a,s){return c(this,null,function*(){try{const l=Cn(e),c=Cn(i),d=(Hn.get(i)||0)+1;Hn.set(i,d);const u=()=>cn(l)&&cn(c)&&!M(t.art)&&Hn.get(i)===d;if(null==s||s(),!u())return;const p=yield o.call(t.art,e,r,n);u()&&Reflect.set(i,a,p)}catch(l){console.warn("ArtPlayer setting callback failed:",l)}})}function qn(t){const e=[];return function t(r){const n=Array.from(r.childNodes);e.push({node:r,children:n,attributes:1===r.nodeType?Array.from(r.attributes,t=>[t.name,t.value]):void 0,value:r.nodeValue}),n.forEach(t)}(t),()=>{for(const{node:t,children:r,attributes:n,value:o}of e){for(;t.firstChild;)t.removeChild(t.firstChild);for(const e of r)t.appendChild(e);if(n){const e=t;for(const t of Array.from(e.attributes))e.removeAttribute(t.name);for(const[t,r]of n)e.setAttribute(t,r)}else t.nodeValue=o}}}const Un=new WeakMap;function Xn(t){const e=[];for(const n of t)try{n()}catch(r){r instanceof A?e.push(...r.errors):e.push(r)}if(e.length)throw new A(e)}function Gn(t){var e;null==(e=Un.get(t))||e()}function Kn(t,e){const r=t.find(e.name);if(M(t.art))return r||e;if(!r)return t.add(e);const n=Dn(t);Wn(r),Gn(r);const o=Yn(r),i=r.$item,a=null==i?void 0:i.parentNode,s=null==i?void 0:i.nextSibling,l=i?qn(i):void 0,c=t.active,d=["height","width","left","right"].map(e=>[e,t.$parent.style.getPropertyValue(e),t.$parent.style.getPropertyPriority(e)]),u=function(t,e){const r=new Set,n=new Set,o=e=>{if(!r.has(e)&&(r.add(e),e.selector)){const r=t.cache.get(e.selector);r&&n.add(r),e.selector.forEach(o)}};o(e);const i=[],a=[];try{for(const e of r){const r=Tn(t.art,e);r&&i.push(r)}for(const t of n)a.push(dn(bn(t)))}catch(l){try{Xn([...i.reverse().map(t=>t.resume),...a])}catch(c){console.warn("ArtPlayer setting restore failed:",c)}throw l}let s=!0;return{items:r,resume(){s&&(s=!1,Xn([...i.reverse().map(t=>t.resume),...a]))},dispose(){s&&(s=!1,Xn([...i.reverse().map(t=>t.dispose),...Array.from(n).reverse().map(t=>()=>wn(t)),...a]))}}}(t,r);let p=!0,f=!1;const h=()=>{if(!p)return;p=!1;for(const t of u.items)Un.get(t)===h&&Un.delete(t);if(M(t.art))return void u.dispose();const e=r.$item;try{Xn([u.resume,()=>{e&&e!==i&&e.remove()},o,()=>null==l?void 0:l(),()=>{a&&i&&a.insertBefore(i,(null==s?void 0:s.parentNode)===a?s:null)},()=>t.format(),()=>{if(f){t.active=c,c&&t.cache.has(c)&&K(t.cache.get(c),"art-current");for(const[e,r,n]of d)t.$parent.style.setProperty(e,r,n)}}]),n(i)}catch(m){console.warn("ArtPlayer setting restore failed:",m)}},m=()=>p&&!M(t.art)&&Un.get(r)===h;for(const y of u.items)Un.set(y,h);const v=P(t.art).add(()=>{p=!1;for(const t of u.items)Un.get(t)===h&&Un.delete(t);u.dispose()});try{if(function(t,e,r){for(const n of Reflect.ownKeys(e)){if(!r())return;const o=Object.getOwnPropertyDescriptor(e,n);if(!(null==o?void 0:o.enumerable)||!r())continue;const i=Reflect.get(e,n);if(!r())return;if(!Reflect.set(t,n,i))throw new TypeError(`Cannot assign setting item property [${String(n)}]`)}}(r,e,m),!m())return r;if(t.format(),!m())return r;if(t.createItem(r,!0),!m())return r;if(f=!0,t.render(),!m())return r;p=!1;for(const t of u.items)Un.get(t)===h&&Un.delete(t);return u.dispose(),n(r.$item),r}catch(g){throw m()&&h(),g}finally{v()}}const Zn=new WeakMap;function Jn(t,e,r){vt(t,`$${e}`,{configurable:!0,get:()=>r}),vt(t,e,{configurable:!0,get:()=>r.innerHTML,set(n){r.innerHTML="",X(r,n),"html"===e&&Bn(t)}})}function Qn(t,e,r=!1){var n,o;const i=function(t){const e=Un.get(t);return()=>!e||Un.get(t)===e}(e);if(!t.cache.has(e.$option))return;const a=t.cache.get(e.$option),s=e.$item;let l="selector";yt(e,"switch")&&(l="switch"),yt(e,"range")&&(l="range"),yt(e,"onClick")&&(l="button");const{icons:c,constructor:d}=t.art;if(!i())return;const u=function(t,e,r=P(t)){const n=xn.get(e);(!n||cn(n)||n.closed)&&Sn(t,e);const o=r.child();return xn.set(e,o),kn.set(e,r),$n.set(o,vn(e).events),o.add(()=>{En(t,$n.get(o))}),o}(t.art,e,bn(a)),p=()=>cn(u)&&!M(t.art)&&i();if(!p())return;const f=document.createElement("div");try{if(Vn(e),j(f,"art-setting-item"),et(f,"height",`${d.SETTING_ITEM_HEIGHT}px`),f.dataset.name=e.name||"",f.dataset.value=String(e.value||""),!p())return;const i=Rt(f,'
'),h=Rt(f,'
'),m=document.createElement("div");switch(j(m,"art-setting-item-left-icon"),l){case"button":case"switch":case"range":{const t=e.icon||c.config;if(!p())return;X(m,t);break}case"selector":if(null==(n=e.selector)?void 0:n.length){const t=e.icon||c.config;if(!p())return;X(m,t)}else X(m,c.check)}if(X(i,m),!p())return;Jn(e,"icon",m);const v=document.createElement("div");j(v,"art-setting-item-left-text");const g=e.html||"";if(!p())return;X(v,g),X(i,v),Jn(e,"html",v);const y=document.createElement("div");j(y,"art-setting-item-right-tooltip");const b=e.tooltip||"";if(!p())return;switch(X(y,b),X(h,y),Jn(e,"tooltip",y),l){case"switch":{const t=document.createElement("div");j(t,"art-setting-item-right-icon");const r=Rt(t,c.switchOn),n=Rt(t,c.switchOff),o=e.switch;if(!p())return;et(o?n:r,"display","none"),X(h,t),vt(e,"$switch",{configurable:!0,get:()=>t});let i=e.switch;if(!p())return;Vn(e,()=>{const t=i;return()=>{i=t}}),vt(e,"switch",{configurable:!0,get:()=>i,set(t){i=t,f.setAttribute("aria-checked",String(Boolean(t))),t?(et(n,"display","none"),et(r,"display",null)):(et(n,"display",null),et(r,"display","none"))}});break}case"range":{const t=document.createElement("div");j(t,"art-setting-item-right-icon");const r=document.createElement("input");r.type="range",X(t,r);for(const[o,i]of["value","min","max","step"].entries()){const t=e.range[o];if(!p())return;Reflect.set(r,i,String(t))}j(r,"art-setting-range"),X(h,t),vt(e,"$range",{configurable:!0,get:()=>r});let n=[...e.range];if(!p())return;Vn(e,()=>{const t=n,e=[...t],o={min:r.min,max:r.max,step:r.step,value:r.value};return()=>{t.splice(0,t.length,...e),n=t,Object.assign(r,o)}}),vt(e,"range",{configurable:!0,get:()=>n,set(t){n=[...t],r.value=String(t[0]),r.min=String(t[1]),r.max=String(t[2]),r.step=String(t[3])}})}break;case"selector":if(null==(o=e.selector)?void 0:o.length){const t=document.createElement("div");j(t,"art-setting-item-right-icon"),X(t,c.arrowRight),X(h,t)}}if(!p())return;if(function(t,e,r,n){const{art:o}=t,i=Cn(e),a=(t,r,n)=>Ln(o,e,t,r,n,i);switch(n){case"switch":e.onSwitch&&a(r,"click",n=>jn(t,e,r,n,e.onSwitch,e,"switch"));break;case"range":{const n=e.$range;if(n)for(const[o,i]of[["change","onRange"],["input","onChange"]])e[i]&&a(n,o,o=>jn(t,e,r,o,e[i],e,"tooltip",()=>{e.range[0]=n.valueAsNumber}));break}case"selector":a(r,"click",n=>{var o,i;if(null==(o=e.selector)?void 0:o.length)t.render(e.selector);else{if(null==(i=e.$parent)?void 0:i.onSelect)return jn(t,e,r,n,e.$parent.onSelect,e.$parent,"tooltip",()=>t.check(e));t.check(e)}}),e.default&&j(r,"art-current");break;case"button":e.onClick&&a(r,"click",n=>jn(t,e,r,n,e.onClick,e,"tooltip"))}}(t,e,f,l),!p())return;vt(e,"$item",{configurable:!0,get:()=>f}),function(t,e,r,n,o){var i;"range"!==n?r.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")||("switch"===n?(r.setAttribute("role","switch"),r.setAttribute("aria-checked",String(Boolean(e.switch))),r.setAttribute("aria-disabled",String(!e.onSwitch))):"selector"!==n||(null==(i=e.selector)?void 0:i.length)||r.setAttribute("aria-current",String(Boolean(e.default))),zt(o,r,()=>r.click(),()=>cn(o)&&!M(t.art))):Bn(e)}(t,e,f,l,u),r&&(null==s?void 0:s.parentNode)?s.replaceWith(f):X(a,f),e.mounted&&p()&&St(u,()=>{var r;if(!M(t.art))try{const n=null==(r=e.mounted)?void 0:r.call(t.art,f,e);Promise.resolve(n).catch(t=>console.warn("ArtPlayer setting mounted failed:",t))}catch(n){console.warn("ArtPlayer setting mounted failed:",n)}},0)}catch(h){try{u.dispose()}catch(m){console.warn("ArtPlayer setting cleanup failed:",m)}throw f.remove(),h}}function to(t,e=t.option){var r,n,o,i,a,s;if(M(t.art))return;const l=Dn(t),c=t.cache.get(e);if(c&&!cn(bn(c)))return;const d=(Zn.get(t)||0)+1;Zn.set(t,d);const u=()=>Zn.get(t)===d&&!M(t.art),p=t.active,f=["height","width","left","right"].map(e=>[e,t.$parent.style.getPropertyValue(e),t.$parent.style.getPropertyPriority(e)]),h=()=>{t.active=p,p&&t.cache.has(p)&&K(t.cache.get(p),"art-current");for(const[e,r,n]of f)t.$parent.style.setProperty(e,r,n)};if(t.active=e,c)try{K(c,"art-current"),t.resize()}catch(m){throw u()&&t.cache.get(e)===c&&!bn(c).closed&&h(),m}else{const a=document.createElement("div");t.cache.set(e,a);const s=function(t,e,r){const n=P(t.art).child();return yn.set(r,n),n.add(()=>{t.cache.get(e)===r&&t.cache.delete(e),r.remove()}),n}(t,e,a),l=()=>!s.closed&&!M(t.art)&&t.cache.get(e)===a,c=[];try{if(!l())return;j(a,"art-setting-panel"),a.setAttribute("role","group"),a.setAttribute("aria-label",(null==(o=null==(n=null==(r=e[0])?void 0:r.$parent)?void 0:n.$html)?void 0:o.textContent)||t.art.i18n.get("Settings")),X(t.$parent,a),K(a,"art-current"),(null==(i=e[0])?void 0:i.$parent)&&t.createHeader(e[0]);for(let r=0;r{!function(t){const e=pn.get(t);e&&(e.active=!1,e.root=void 0,e.scope=void 0)}(this)}),e.setting&&(this.format(),this.render(),function(t){const{art:e}=t,r=P(e).child(),n=(t,n)=>{if(r.closed||M(e))return;const o=(...t)=>{if(!r.closed&&!M(e))return n(...t)};e.on(t,o),r.add(()=>{e.off(t,o)})};n("blur",()=>{t.show&&(t.show=!1,t.render())}),n("focus",r=>{const n=F(r,e.controls.setting),o=F(r,t.$parent);!t.show||n||o||(t.show=!1,t.render())}),n("resize",()=>t.resize());const o=()=>{r.closed||M(e)||t.resize()},i=e.proxy(t.$parent,"transitionend",e=>{e.target===t.$parent&&"bottom"===e.propertyName&&o()});r.add(()=>{e.events.remove(i)});const{$player:a,$controls:s}=e.template;if(!r.closed&&"undefined"!==typeof ResizeObserver){const t=new ResizeObserver(o);t.observe(a),t.observe(s),r.add(()=>{t.disconnect()})}if(!r.closed&&"undefined"!==typeof MutationObserver){const t=new MutationObserver(o);"undefined"===typeof ResizeObserver&&t.observe(s,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),t.observe(a,{attributes:!0,attributeFilter:["class","style"]}),r.add(()=>{t.disconnect()})}}(this)),In(this)}get builtin(){const t=[],{option:e}=this.art;return e.playbackRate&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,PLAYBACK_RATE:o}}=t;function i(t){return 1===t?e.get("Normal"):t.toFixed(1)}function a(){const e=t.setting.find(`playback-rate-${t.playbackRate}`);t.setting.check(e)}return{width:n,name:"playback-rate",html:e.get("Play Speed"),tooltip:i(t.playbackRate),icon:r.playbackRate,selector:o.map(e=>({value:e,name:`playback-rate-${e}`,default:e===t.playbackRate,html:i(e)})),onSelect:e=>(t.playbackRate=e.value,e.html),mounted:(e,r)=>{a(),Pn(t,r,"video:ratechange",()=>a())}}}(this.art)),e.aspectRatio&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,ASPECT_RATIO:o}}=t;function i(t){return"default"===t?e.get("Default"):t}function a(){const e=t.setting.find(`aspect-ratio-${t.aspectRatio}`);t.setting.check(e)}return{width:n,name:"aspect-ratio",html:e.get("Aspect Ratio"),icon:r.aspectRatio,tooltip:i(t.aspectRatio),selector:o.map(e=>({value:e,name:`aspect-ratio-${e}`,default:e===t.aspectRatio,html:i(e)})),onSelect:e=>(t.aspectRatio=e.value,e.html),mounted:(e,r)=>{a(),Pn(t,r,"aspectRatio",()=>a())}}}(this.art)),e.flip&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,FLIP:o}}=t;function i(t){return e.get(dt(t))}function a(){const e=t.setting.find(`flip-${t.flip}`);t.setting.check(e)}return{width:n,name:"flip",html:e.get("Video Flip"),tooltip:i(t.flip),icon:r.flip,selector:o.map(e=>({value:e,name:`flip-${e}`,default:e===t.flip,html:i(e)})),onSelect:e=>(t.flip=e.value,e.html),mounted:(e,r)=>{a(),Pn(t,r,"flip",()=>a())}}}(this.art)),e.subtitleOffset&&t.push(function(t){const{i18n:e,icons:r,constructor:n}=t;return{width:n.SETTING_ITEM_WIDTH,name:"subtitle-offset",html:e.get("Subtitle Offset"),icon:r.subtitle,tooltip:"0s",range:[0,-10,10,.1],onChange:e=>(t.subtitleOffset=e.range[0],`${e.range[0]}s`),mounted:(e,r)=>{Pn(t,r,"subtitleOffset",t=>{r.$range.value=String(t),r.tooltip=`${t}s`})}}}(this.art)),t}traverse(t,e=this.option){gn(e,t)}check(t){!function(t,e){(null==e?void 0:e.$parent)&&(e.$parent.tooltip=e.html,t.traverse(t=>{t.default=t===e,t.$item&&t.$item.setAttribute("aria-current",String(t.default)),t.default&&t.$item&&K(t.$item,"art-current")},e.$option),t.render(e.$parents))}(this,t)}format(t=this.option,e,r,n=[]){this.option=function(t,e,r,n,o=[]){const i=pn.get(t)||{active:!0},a=[],s=new Set,l=new Set(o),c=(t,e,r)=>{var n;for(let o=0;ovn(t).parent},$parents:{get:()=>vn(t).parents},$option:{get:()=>vn(t).option},$events:{get:()=>vn(t).events},$formatted:{get:()=>!0}}),un.set(t,{parent:r,parents:n,option:o,events:(null==a?void 0:a.events)||[],owner:i}),u.generated&&(t.name=e)}for(const u of a)u.generated||o.push(u.name);return t.id=d,e}(this,t,e,r,n)}find(t=""){return function(t,e=""){let r=null;return gn(t,t=>{t.name===e&&(r=t)}),r}(this.option,t)}resize(){Nn(this)}inactivate(t){!function(t,e){const r=[],n=new Set,o=e=>{if(!n.has(e)){n.add(e);for(const t of e.selector||[])o(t);if(e.selector){const n=t.cache.get(e.selector);t.cache.delete(e.selector);try{n&&wn(n)}catch(i){r.push(i)}}try{Sn(t.art,e)}catch(i){i instanceof A?r.push(...i.errors):r.push(i)}}};if(o(e),r.length)throw new A(r)}(this,t)}remove(t){const e=Dn(this),r=this.find(t);it(r,`Can't find [${t}] in the [setting]`),this.traverse(t=>{Wn(t),Gn(t)},[r]);const n=r.$option.indexOf(r);r.$option.splice(n,1);const o=r.$item,i=[];for(const s of[()=>this.inactivate(r),()=>null==o?void 0:o.remove(),()=>this.render()])try{s()}catch(a){a instanceof A?i.push(...a.errors):i.push(a)}if(i.length)throw new A(i);e()}update(t){return Kn(this,t)}add(t,e=this.option){var r;if(M(this.art))return t;let n=!1;this.traverse(e=>{n||(n=e===t)});const o=e.length,i=n?void 0:function(t){const e={};_n.set(t,e);const r=()=>_n.get(t)===e;return{current:r,finish(){r()&&_n.delete(t)}}}(t);let a=!1;try{e.push(t),this.format(),a=!0,this.createItem(t),this.render()}catch(s){if(M(this.art)||i&&!i.current())throw s;if(e[o]===t&&e.splice(o,1),!n&&a){try{this.inactivate(t)}catch(l){console.warn("ArtPlayer setting cleanup failed:",l)}null==(r=t.$item)||r.remove()}throw s}finally{null==i||i.finish()}return t}createHeader(t){!function(t,e){var r;if(!t.cache.has(e.$option))return;const n=t.cache.get(e.$option),{icons:{arrowLeft:o},constructor:{SETTING_ITEM_HEIGHT:i}}=t.art,a=document.createElement("div");et(a,"height",`${i}px`),j(a,"art-setting-item"),j(a,"art-setting-item-back");const s=Rt(a,'
'),l=document.createElement("div");j(l,"art-setting-item-left-icon"),X(l,o),X(s,l),X(s,e.$parent.html),Ln(t.art,e.$parent,a,"click",()=>t.render(e.$parents),bn(n));const c=bn(n);a.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")||zt(c,a,()=>a.click(),()=>cn(c)&&!M(t.art)),a.setAttribute("aria-label",`${t.art.i18n.get("Back")}: ${(null==(r=a.textContent)?void 0:r.trim())||""}`),X(n,a)}(this,t)}createItem(t,e=!1){Qn(this,t,e)}render(t=this.option){to(this,t)}}class no{constructor(){this.name="artplayer_settings",this.settings={}}get(t){try{const e=JSON.parse(window.localStorage.getItem(this.name))||{};return t?e[t]:e}catch(e){return t?this.settings[t]:this.settings}}set(t,e){try{const r=Object.assign({},this.get(),{[t]:e});window.localStorage.setItem(this.name,JSON.stringify(r))}catch(r){this.settings[t]=e}}del(t){try{const e=this.get();delete e[t],window.localStorage.setItem(this.name,JSON.stringify(e))}catch(e){delete this.settings[t]}}clear(){try{window.localStorage.removeItem(this.name)}catch(t){this.settings={}}}}const oo='.art-video-player{--art-theme: #f00;--art-font-color: #fff;--art-background-color: #000;--art-text-shadow-color: rgba(0, 0, 0, .5);--art-transition-duration: .2s;--art-padding: 10px;--art-border-radius: 3px;--art-progress-height: 6px;--art-progress-color: rgba(255, 255, 255, .25);--art-progress-top-gap: 10px;--art-hover-color: rgba(255, 255, 255, .25);--art-loaded-color: rgba(255, 255, 255, .25);--art-state-size: 80px;--art-state-opacity: .8;--art-bottom-height: 100px;--art-bottom-offset: 20px;--art-bottom-gap: 5px;--art-highlight-width: 8px;--art-highlight-color: rgba(255, 255, 255, .5);--art-control-height: 46px;--art-control-opacity: .75;--art-control-icon-size: 36px;--art-control-icon-scale: 1.1;--art-volume-height: 120px;--art-volume-handle-size: 14px;--art-lock-size: 36px;--art-indicator-scale: 0;--art-indicator-size: 16px;--art-fullscreen-web-index: 9999;--art-settings-icon-size: 24px;--art-settings-max-height: 300px;--art-selector-max-height: 300px;--art-contextmenus-min-width: 250px;--art-subtitle-font-size: 20px;--art-subtitle-gap: 5px;--art-subtitle-bottom: 15px;--art-subtitle-border: #000;--art-widget-background: rgba(0, 0, 0, .85);--art-tip-background: rgba(0, 0, 0, .7);--art-scrollbar-size: 4px;--art-scrollbar-background: rgba(255, 255, 255, .25);--art-scrollbar-background-hover: rgba(255, 255, 255, .5);--art-mini-progress-height: 2px}.art-bg-cover{background-position:center center;background-repeat:no-repeat;background-size:cover}.art-bottom-gradient{background-image:linear-gradient(to top,#000,rgba(0,0,0,.4),transparent);background-repeat:repeat-x;background-position:center bottom}.art-backdrop-filter{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:#000000bf!important}.art-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-video-player{position:relative;margin:0 auto;width:100%;height:100%;outline:0;zoom:1;padding:0;text-align:left;direction:ltr;font-size:14px;line-height:1.3;user-select:none;box-sizing:border-box;color:var(--art-font-color);background-color:var(--art-background-color);text-shadow:0 0 2px var(--art-text-shadow-color);font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,Roboto,Arial,sans-serif;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-touch-action:manipulation;touch-action:manipulation;-ms-high-contrast-adjust:none}.art-video-player *,.art-video-player *:before,.art-video-player *:after{box-sizing:border-box}.art-video-player ::-webkit-scrollbar{width:var(--art-scrollbar-size);height:var(--art-scrollbar-size)}.art-video-player ::-webkit-scrollbar-thumb{background-color:var(--art-scrollbar-background)}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:var(--art-scrollbar-background-hover)}.art-video-player img{max-width:100%;vertical-align:top}.art-video-player svg{fill:var(--art-font-color)}.art-video-player a{color:var(--art-font-color);text-decoration:none}.art-icon{line-height:1;display:flex;justify-content:center;align-items:center}.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{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:#000000bf!important}.art-video{position:absolute;inset:0;z-index:10;width:100%;height:100%}.art-poster{position:absolute;inset:0;z-index:11;width:100%;height:100%;background-position:center center;background-repeat:no-repeat;background-size:cover;pointer-events:none}.art-video-player .art-subtitle{display:none;justify-content:center;align-items:center;flex-direction:column;position:absolute;z-index:20;width:100%;padding:0 5%;text-align:center;pointer-events:none;gap:var(--art-subtitle-gap);bottom:var(--art-subtitle-bottom);font-size:var(--art-subtitle-font-size);transition:bottom var(--art-transition-duration) ease;text-shadow:var(--art-subtitle-border) 1px 0 1px,var(--art-subtitle-border) 0 1px 1px,var(--art-subtitle-border) -1px 0 1px,var(--art-subtitle-border) 0 -1px 1px,var(--art-subtitle-border) 1px 1px 1px,var(--art-subtitle-border) -1px -1px 1px,var(--art-subtitle-border) 1px -1px 1px,var(--art-subtitle-border) -1px 1px 1px}.art-video-player.art-subtitle-show .art-subtitle{display:flex}.art-video-player.art-control-show .art-subtitle{bottom:calc(var(--art-controls-height, var(--art-control-height)) + var(--art-subtitle-bottom))}.art-danmuku{position:absolute;inset:0;z-index:30;width:100%;height:100%;pointer-events:none;overflow:hidden}.art-video-player .art-layers{position:absolute;inset:0;z-index:40;width:100%;height:100%;display:none;pointer-events:none}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:flex}.art-video-player .art-mask{display:flex;justify-content:center;align-items:center;position:absolute;inset:0;z-index:50;width:100%;height:100%;pointer-events:none}.art-video-player .art-mask .art-state{display:flex;justify-content:center;align-items:center;opacity:0;transform:scale(2);width:var(--art-state-size);height:var(--art-state-size);transition:all var(--art-transition-duration) ease}.art-video-player.art-mask-show .art-state{pointer-events:auto;opacity:var(--art-state-opacity);transform:scale(1)}.art-video-player.art-loading-show .art-state{display:none}.art-video-player .art-loading{display:none;justify-content:center;align-items:center;position:absolute;inset:0;z-index:70;width:100%;height:100%;pointer-events:none}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player.art-loading-show .art-mask{display:none}.art-video-player .art-bottom{position:absolute;inset:0;z-index:60;width:100%;height:100%;display:flex;flex-direction:column;justify-content:flex-end;opacity:0;overflow:hidden;pointer-events:none;padding:0 var(--art-padding);transition:all var(--art-transition-duration) ease;background-size:100% var(--art-bottom-height);background-image:linear-gradient(to top,#000,rgba(0,0,0,.4),transparent);background-repeat:repeat-x;background-position:center bottom}.art-video-player .art-bottom .art-controls,.art-video-player .art-bottom .art-progress{transform:translateY(var(--art-bottom-offset));transition:transform var(--art-transition-duration) ease}.art-video-player.art-control-show .art-bottom,.art-video-player.art-hover .art-bottom{opacity:1}.art-video-player.art-control-show .art-bottom .art-controls,.art-video-player.art-hover .art-bottom .art-controls,.art-video-player.art-control-show .art-bottom .art-progress,.art-video-player.art-hover .art-bottom .art-progress{transform:translateY(0)}.art-bottom .art-progress{position:relative;z-index:0;cursor:pointer;pointer-events:auto;padding-top:var(--art-progress-top-gap);padding-bottom:var(--art-bottom-gap)}.art-bottom .art-progress .art-control-progress{position:relative;display:flex;justify-content:center;align-items:center;height:var(--art-progress-height)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:height var(--art-transition-duration) ease;background-color:var(--art-progress-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover{position:absolute;inset:0;z-index:0;width:100%;height:100%;width:0%;background-color:var(--art-hover-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{position:absolute;inset:0;z-index:10;width:100%;height:100%;width:0%;background-color:var(--art-loaded-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{position:absolute;inset:0;z-index:20;width:100%;height:100%;width:0%;background-color:var(--art-theme)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{position:absolute;inset:0;z-index:30;width:100%;height:100%;pointer-events:none}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{position:absolute;inset:0 auto 0 0;z-index:0;width:100%;height:100%;pointer-events:auto;width:var(--art-highlight-width)!important;transform:translate(calc(var(--art-highlight-width) / -2));background-color:var(--art-highlight-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{display:flex;justify-content:center;align-items:center;position:absolute;z-index:40;left:0;border-radius:50%;width:var(--art-indicator-size);height:var(--art-indicator-size);transform:scale(var(--art-indicator-scale));margin-left:calc(var(--art-indicator-size) / -2);transition:transform var(--art-transition-duration) ease}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon{width:100%;height:100%;pointer-events:none}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover{transform:scale(1.2)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active{transform:scale(1)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;z-index:50;top:-25px;left:0;padding:3px 5px;line-height:1;font-size:12px;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease}.art-bottom .art-progress .art-control-thumbnails{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;bottom:calc(var(--art-bottom-gap) + 10px);left:0;border-radius:var(--art-border-radius);pointer-events:none;background-color:var(--art-widget-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease;box-shadow:0 1px 3px #0003,0 1px 2px -1px #0003}.art-bottom .art-progress:hover .art-control-progress .art-control-progress-inner{height:100%}.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{transform:scale(1)}.art-progress-hover .art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip,.art-progress-hover .art-bottom .art-progress .art-control-thumbnails{transform:scale(1);opacity:1}.art-video-player .art-controls{position:relative;z-index:10;pointer-events:auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;flex-shrink:0;height:auto;min-height:var(--art-control-height)}.art-video-player .art-controls .art-controls-left,.art-video-player .art-controls .art-controls-right{display:flex;flex-wrap:wrap;max-width:100%;min-height:var(--art-control-height)}.art-video-player .art-controls .art-controls-center{display:none;justify-content:center;align-items:center;flex:1;height:100%;padding:0 10px}.art-video-player .art-controls .art-controls-right{justify-content:flex-end;margin-left:auto}.art-video-player .art-controls .art-control{display:flex;justify-content:center;align-items:center;flex-shrink:0;max-width:100%;cursor:pointer;white-space:nowrap;opacity:var(--art-control-opacity);min-height:var(--art-control-height);min-width:var(--art-control-height);transition:opacity var(--art-transition-duration) ease}.art-video-player .art-controls .art-control .art-icon{height:var(--art-control-icon-size);width:var(--art-control-icon-size);transform:scale(var(--art-control-icon-scale));transition:transform var(--art-transition-duration) ease}.art-video-player .art-controls .art-control .art-icon:active{transform:scale(calc(var(--art-control-icon-scale) * .8))}.art-video-player .art-controls .art-control:hover{opacity:1}.art-control-volume{position:relative}.art-control-volume .art-volume-panel{display:flex;justify-content:center;align-items:center;position:absolute;left:0;right:0;padding:0 5px;font-size:12px;text-align:center;cursor:default;opacity:0;visibility:hidden;transform:translateY(10px);pointer-events:none;bottom:var(--art-control-height);width:var(--art-control-height);height:var(--art-volume-height);transition:opacity var(--art-transition-duration) ease,transform var(--art-transition-duration) ease}.art-control-volume .art-volume-panel .art-volume-inner{display:flex;flex-direction:column;align-items:center;gap:10px;height:100%;width:100%;padding:10px 0 12px;border-radius:var(--art-border-radius);background-color:var(--art-widget-background)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{flex:1;width:100%;display:flex;cursor:pointer;position:relative;justify-content:center}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{position:relative;display:flex;justify-content:center;width:2px;border-radius:var(--art-border-radius);overflow:hidden;background-color:#ffffff40}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded{position:absolute;inset:0;z-index:0;width:100%;height:100%;background-color:var(--art-theme)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator{position:absolute;width:var(--art-volume-handle-size);height:var(--art-volume-handle-size);margin-top:calc(var(--art-volume-handle-size) / -2);flex-shrink:0;transform:scale(1);border-radius:100%;background-color:var(--art-theme);transition:transform var(--art-transition-duration) ease}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator{transform:scale(.9)}.art-control-volume:hover .art-volume-panel,.art-control-volume:focus-within .art-volume-panel{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.art-video-player .art-notice{display:none;position:absolute;inset:0 0 auto;z-index:80;width:100%;height:100%;height:auto;padding:var(--art-padding);pointer-events:none}.art-video-player .art-notice .art-notice-inner{display:inline-flex;padding:5px;line-height:1;border-radius:var(--art-border-radius);background-color:var(--art-tip-background)}.art-video-player.art-notice-show .art-notice{display:flex}.art-video-player .art-contextmenus{display:none;flex-direction:column;position:absolute;z-index:120;padding:5px 0;border-radius:var(--art-border-radius);font-size:12px;background-color:var(--art-widget-background);min-width:var(--art-contextmenus-min-width)}.art-video-player .art-contextmenus .art-contextmenu{cursor:pointer;display:flex;padding:10px 15px;border-bottom:1px solid rgba(255,255,255,.1)}.art-video-player .art-contextmenus .art-contextmenu span{padding:0 8px}.art-video-player .art-contextmenus .art-contextmenu span:hover,.art-video-player .art-contextmenus .art-contextmenu span.art-current{color:var(--art-theme)}.art-video-player .art-contextmenus .art-contextmenu:hover{background-color:#ffffff1a}.art-video-player .art-contextmenus .art-contextmenu:last-child{border-bottom:none}.art-video-player.art-contextmenu-show .art-contextmenus{display:flex}.art-video-player .art-settings{display:none;flex-direction:column;position:absolute;z-index:90;left:auto;overflow-y:auto;overflow-x:hidden;border-radius:var(--art-border-radius);max-height:var(--art-settings-max-height);right:var(--art-padding);bottom:var(--art-controls-height, var(--art-control-height));transition:all var(--art-transition-duration) ease;background-color:var(--art-widget-background)}.art-video-player .art-settings .art-setting-panel{display:none;flex-direction:column}.art-video-player .art-settings .art-setting-panel.art-current{display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item{display:flex;justify-content:space-between;align-items:center;gap:5px;padding:0 5px;cursor:pointer;overflow:hidden;transition:background-color var(--art-transition-duration) ease}.art-video-player .art-settings .art-setting-panel .art-setting-item:hover{background-color:#ffffff1a}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current{color:var(--art-theme)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check{visibility:hidden;height:15px}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check{visibility:visible}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left{display:flex;justify-content:center;align-items:center;flex-shrink:1;min-width:0;overflow:hidden;gap:5px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;height:var(--art-settings-icon-size);width:var(--art-settings-icon-size)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right{display:flex;justify-content:center;align-items:center;flex-shrink:0;min-width:0;max-width:55%;gap:5px;font-size:12px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#ffffff80}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;min-width:32px;height:24px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{height:3px;width:80px;outline:none;appearance:none;background-color:#fff3}.art-video-player .art-settings .art-setting-panel .art-setting-item-back{border-bottom:1px solid rgba(255,255,255,.1)}.art-video-player.art-setting-show .art-settings{display:flex}.art-video-player .art-info{display:none;position:absolute;left:var(--art-padding);top:var(--art-padding);z-index:100;padding:10px;font-size:12px;border-radius:var(--art-border-radius);background-color:var(--art-widget-background)}.art-video-player .art-info .art-info-panel{display:flex;flex-direction:column;gap:5px}.art-video-player .art-info .art-info-panel .art-info-item{display:flex;align-items:center;gap:5px}.art-video-player .art-info .art-info-panel .art-info-item .art-info-title{width:100px;text-align:right}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;user-select:all}.art-video-player .art-info .art-info-close{position:absolute;top:5px;right:5px;cursor:pointer}.art-video-player.art-info-show .art-info{display:flex}.art-hide-cursor *{cursor:none!important}.art-video-player[data-aspect-ratio]{overflow:hidden}.art-video-player[data-aspect-ratio] .art-video{object-fit:fill;box-sizing:content-box}.art-fullscreen{--art-progress-height: 8px;--art-indicator-size: 20px;--art-control-height: 60px;--art-control-icon-scale: 1.3}.art-fullscreen-web{--art-progress-height: 8px;--art-indicator-size: 20px;--art-control-height: 60px;--art-control-icon-scale: 1.3;position:fixed;inset:0;z-index:var(--art-fullscreen-web-index);width:100%;height:100%}.art-mini-popup{position:fixed;z-index:9999;width:320px;height:180px;max-width:100vw;max-height:100vh;background:#000;border-radius:var(--art-border-radius);cursor:move;user-select:none;overflow:hidden;transition:opacity .2s ease;box-shadow:0 0 5px #00000080}.art-mini-popup svg{fill:#fff}.art-mini-popup .art-video{pointer-events:none}.art-mini-popup .art-mini-close{position:absolute;z-index:20;right:10px;top:10px;cursor:pointer;opacity:0;transition:opacity .2s ease}.art-mini-popup .art-mini-state{position:absolute;inset:0;z-index:30;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none;opacity:0;transition:opacity .2s ease;background-color:#00000040}.art-mini-popup .art-mini-state .art-icon{opacity:.75;cursor:pointer;transform:scale(3);pointer-events:auto;transition:transform .2s ease}.art-mini-popup .art-mini-state .art-icon:active{transform:scale(2.5)}.art-mini-popup.art-mini-dragging{opacity:.9}.art-mini-popup:hover .art-mini-close,.art-mini-popup:focus-within .art-mini-close,.art-mini-popup:hover .art-mini-state,.art-mini-popup:focus-within .art-mini-state{opacity:1}.art-mini-popup [role=button]:focus-visible{outline:2px solid #fff;outline-offset:-2px}.art-video-player[data-flip=horizontal] .art-video{transform:scaleX(-1)}.art-video-player[data-flip=vertical] .art-video{transform:scaleY(-1)}.art-video-player .art-layer-lock{display:none;justify-content:center;align-items:center;position:absolute;top:50%;border-radius:50%;transform:translateY(-50%);height:var(--art-lock-size);width:var(--art-lock-size);left:var(--art-padding);background-color:var(--art-tip-background)}.art-video-player .art-layer-auto-playback{display:none;gap:10px;align-items:center;position:absolute;border-radius:var(--art-border-radius);padding:10px;line-height:1;left:var(--art-padding);bottom:calc(var(--art-controls-height, var(--art-control-height)) + var(--art-bottom-gap) + 10px);background-color:var(--art-widget-background)}.art-video-player .art-layer-auto-playback .art-auto-playback-close{display:flex;justify-content:center;align-items:center;cursor:pointer}.art-video-player .art-layer-auto-playback .art-auto-playback-close svg{width:15px;height:15px;fill:var(--art-theme)}.art-video-player .art-layer-auto-playback .art-auto-playback-jump{color:var(--art-theme);cursor:pointer}.art-video-player.art-lock .art-layer-lock{display:flex}.art-video-player.art-lock:not(.art-control-show) .art-layer-lock{opacity:0;pointer-events:none}.art-video-player.art-lock:not(.art-control-show) .art-layer-lock:focus-within{opacity:1;pointer-events:auto}.art-video-player.art-lock .art-subtitle{bottom:var(--art-subtitle-bottom)!important}.art-video-player.art-mini-progress-bar .art-bottom,.art-video-player.art-lock .art-bottom{opacity:1;padding:0;background-image:none}.art-video-player.art-mini-progress-bar .art-bottom .art-controls,.art-video-player.art-lock .art-bottom .art-controls,.art-video-player.art-mini-progress-bar .art-bottom .art-progress,.art-video-player.art-lock .art-bottom .art-progress{transform:translateY(calc(var(--art-controls-height, var(--art-control-height)) + var(--art-bottom-gap) + var(--art-progress-height) / 4))}.art-video-player.art-mini-progress-bar .art-bottom .art-progress-indicator,.art-video-player.art-lock .art-bottom .art-progress-indicator{display:none!important}.art-video-player.art-control-show .art-layer-lock{display:flex}.art-control-selector{position:relative;display:flex;justify-content:center}.art-control-selector .art-selector-list{display:flex;flex-direction:column;align-items:center;text-align:center;position:absolute;border-radius:var(--art-border-radius);overflow-y:auto;overflow-x:hidden;opacity:0;visibility:hidden;transform:translateY(10px);pointer-events:none;bottom:var(--art-control-height);max-height:var(--art-selector-max-height);background-color:var(--art-widget-background);transition:opacity var(--art-transition-duration) ease,transform var(--art-transition-duration) ease}.art-control-selector .art-selector-list .art-selector-item{display:flex;justify-content:center;align-items:center;width:100%;padding:10px 15px;flex-shrink:0;line-height:1}.art-control-selector .art-selector-list .art-selector-item:hover{background-color:#ffffff1a}.art-control-selector .art-selector-list .art-selector-item:hover,.art-control-selector .art-selector-list .art-selector-item.art-current{color:var(--art-theme)}.art-control-selector:hover:not(.art-selector-dismissed) .art-selector-list,.art-control-selector.art-selector-open .art-selector-list{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.art-video-player [class*=hint--]{position:relative;display:inline-block;font-style:normal}.art-video-player [class*=hint--]:before,.art-video-player [class*=hint--]:after{position:absolute;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);transform:translateZ(0);visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;-webkit-transition:.3s ease;-moz-transition:.3s ease;transition:.3s ease;-webkit-transition-delay:0ms;-moz-transition-delay:0ms;transition-delay:0ms}.art-video-player [class*=hint--]:hover:before,.art-video-player [class*=hint--]:hover:after{visibility:visible;opacity:1}.art-video-player [class*=hint--]:hover:before,.art-video-player [class*=hint--]:hover:after{-webkit-transition-delay:.1s;-moz-transition-delay:.1s;transition-delay:.1s}.art-video-player [class*=hint--]:before{content:"";position:absolute;background:transparent;border:6px solid transparent;z-index:1000001}.art-video-player [class*=hint--]:after{background:#000;color:#fff;padding:8px 10px;font-size:12px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:12px;white-space:nowrap}.art-video-player [class*=hint--][aria-label]:after{content:attr(aria-label)}.art-video-player [class*=hint--][data-hint]:after{content:attr(data-hint)}.art-video-player [aria-label=""]:before,.art-video-player [aria-label=""]:after,.art-video-player [data-hint=""]:before,.art-video-player [data-hint=""]:after{display:none!important}.art-video-player .hint--top-left:before{border-top-color:#000}.art-video-player .hint--top-right:before{border-top-color:#000}.art-video-player .hint--top:before{border-top-color:#000}.art-video-player .hint--bottom-left:before{border-bottom-color:#000}.art-video-player .hint--bottom-right:before{border-bottom-color:#000}.art-video-player .hint--bottom:before{border-bottom-color:#000}.art-video-player .hint--left:before{border-left-color:#000}.art-video-player .hint--right:before{border-right-color:#000}.art-video-player .hint--top:before{margin-bottom:-11px}.art-video-player .hint--top:before,.art-video-player .hint--top:after{bottom:100%;left:50%}.art-video-player .hint--top:before{left:calc(50% - 6px)}.art-video-player .hint--top:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translate(-50%)}.art-video-player .hint--top:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top:hover:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translate(-50%) translateY(-8px)}.art-video-player .hint--bottom:before{margin-top:-11px}.art-video-player .hint--bottom:before,.art-video-player .hint--bottom:after{top:100%;left:50%}.art-video-player .hint--bottom:before{left:calc(50% - 6px)}.art-video-player .hint--bottom:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translate(-50%)}.art-video-player .hint--bottom:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom:hover:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translate(-50%) translateY(8px)}.art-video-player .hint--right:before{margin-left:-11px;margin-bottom:-6px}.art-video-player .hint--right:after{margin-bottom:-14px}.art-video-player .hint--right:before,.art-video-player .hint--right:after{left:100%;bottom:50%}.art-video-player .hint--right:hover:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--right:hover:after{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--left:before{margin-right:-11px;margin-bottom:-6px}.art-video-player .hint--left:after{margin-bottom:-14px}.art-video-player .hint--left:before,.art-video-player .hint--left:after{right:100%;bottom:50%}.art-video-player .hint--left:hover:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--left:hover:after{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--top-left:before{margin-bottom:-11px}.art-video-player .hint--top-left:before,.art-video-player .hint--top-left:after{bottom:100%;left:50%}.art-video-player .hint--top-left:before{left:calc(50% - 6px)}.art-video-player .hint--top-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translate(-100%)}.art-video-player .hint--top-left:after{margin-left:12px}.art-video-player .hint--top-left:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top-left:hover:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translate(-100%) translateY(-8px)}.art-video-player .hint--top-right:before{margin-bottom:-11px}.art-video-player .hint--top-right:before,.art-video-player .hint--top-right:after{bottom:100%;left:50%}.art-video-player .hint--top-right:before{left:calc(50% - 6px)}.art-video-player .hint--top-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translate(0)}.art-video-player .hint--top-right:after{margin-left:-12px}.art-video-player .hint--top-right:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top-right:hover:after{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--bottom-left:before{margin-top:-11px}.art-video-player .hint--bottom-left:before,.art-video-player .hint--bottom-left:after{top:100%;left:50%}.art-video-player .hint--bottom-left:before{left:calc(50% - 6px)}.art-video-player .hint--bottom-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translate(-100%)}.art-video-player .hint--bottom-left:after{margin-left:12px}.art-video-player .hint--bottom-left:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom-left:hover:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translate(-100%) translateY(8px)}.art-video-player .hint--bottom-right:before{margin-top:-11px}.art-video-player .hint--bottom-right:before,.art-video-player .hint--bottom-right:after{top:100%;left:50%}.art-video-player .hint--bottom-right:before{left:calc(50% - 6px)}.art-video-player .hint--bottom-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translate(0)}.art-video-player .hint--bottom-right:after{margin-left:-12px}.art-video-player .hint--bottom-right:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom-right:hover:after{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--small:after,.art-video-player .hint--medium:after,.art-video-player .hint--large:after{white-space:normal;line-height:1.4em;word-wrap:break-word}.art-video-player .hint--small:after{width:80px}.art-video-player .hint--medium:after{width:150px}.art-video-player .hint--large:after{width:300px}.art-video-player [class*=hint--]:after{text-shadow:0 -1px 0px black;box-shadow:4px 4px 8px #0000004d}.art-video-player .hint--error:after{background-color:#b34e4d;text-shadow:0 -1px 0px #592726}.art-video-player .hint--error.hint--top-left:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--top-right:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--top:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--bottom-left:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--bottom-right:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--left:before{border-left-color:#b34e4d}.art-video-player .hint--error.hint--right:before{border-right-color:#b34e4d}.art-video-player .hint--warning:after{background-color:#c09854;text-shadow:0 -1px 0px #6c5328}.art-video-player .hint--warning.hint--top-left:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--top-right:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--top:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--bottom-left:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--bottom-right:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--bottom:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--left:before{border-left-color:#c09854}.art-video-player .hint--warning.hint--right:before{border-right-color:#c09854}.art-video-player .hint--info:after{background-color:#3986ac;text-shadow:0 -1px 0px #1a3c4d}.art-video-player .hint--info.hint--top-left:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--top-right:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--top:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--bottom-left:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--bottom-right:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--bottom:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--left:before{border-left-color:#3986ac}.art-video-player .hint--info.hint--right:before{border-right-color:#3986ac}.art-video-player .hint--success:after{background-color:#458746;text-shadow:0 -1px 0px #1a321a}.art-video-player .hint--success.hint--top-left:before{border-top-color:#458746}.art-video-player .hint--success.hint--top-right:before{border-top-color:#458746}.art-video-player .hint--success.hint--top:before{border-top-color:#458746}.art-video-player .hint--success.hint--bottom-left:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--bottom-right:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--bottom:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--left:before{border-left-color:#458746}.art-video-player .hint--success.hint--right:before{border-right-color:#458746}.art-video-player .hint--always:after,.art-video-player .hint--always:before{opacity:1;visibility:visible}.art-video-player .hint--always.hint--top:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translate(-50%) translateY(-8px)}.art-video-player .hint--always.hint--top-left:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top-left:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translate(-100%) translateY(-8px)}.art-video-player .hint--always.hint--top-right:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top-right:after{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--bottom:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translate(-50%) translateY(8px)}.art-video-player .hint--always.hint--bottom-left:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom-left:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translate(-100%) translateY(8px)}.art-video-player .hint--always.hint--bottom-right:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom-right:after{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--left:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--always.hint--left:after{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--always.hint--right:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--always.hint--right:after{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--rounded:after{border-radius:4px}.art-video-player .hint--no-animate:before,.art-video-player .hint--no-animate:after{-webkit-transition-duration:0ms;-moz-transition-duration:0ms;transition-duration:0ms}.art-video-player .hint--bounce:before,.art-video-player .hint--bounce:after{-webkit-transition:opacity .3s ease,visibility .3s ease,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s ease,visibility .3s ease,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s ease,visibility .3s ease,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.art-video-player .hint--no-shadow:before,.art-video-player .hint--no-shadow:after{text-shadow:initial;box-shadow:initial}.art-video-player .hint--no-arrow:before{display:none}.art-video-player.art-mobile{--art-bottom-gap: 10px;--art-control-height: 38px;--art-control-icon-scale: 1;--art-state-size: 60px;--art-settings-max-height: 180px;--art-selector-max-height: 180px;--art-indicator-scale: 1;--art-control-opacity: 1}.art-video-player.art-mobile .art-controls-left{margin-left:calc(var(--art-padding) / -1)}.art-video-player.art-mobile .art-controls-right{margin-right:calc(var(--art-padding) / -1)}.art-video-player [tabindex]:focus-visible,.art-video-player input:focus-visible,.art-video-player button:focus-visible,.art-video-player a:focus-visible{outline:2px solid currentColor;outline-offset:-2px}.art-video-player.art-keyboard-focus :focus{outline:2px solid currentColor;outline-offset:-2px}.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom{opacity:1}.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom .art-controls,.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom .art-progress{transform:translateY(0)}';class io{constructor(t){var e;this.scope=t.child(),this.cancelled=new Promise(t=>{this.scope.add(()=>{t(void 0)})}),this.signal=null==(e=function(t){if("undefined"===typeof AbortController)return;const e=new AbortController;return t.add(()=>{e.abort()}),e}(this.scope))?void 0:e.signal}get active(){return!this.scope.closed}cancel(){this.scope.dispose()}run(t){return c(this,null,function*(){if(this.active)try{return yield Promise.race([t(),this.cancelled])}finally{this.cancel()}})}}const ao=new WeakMap;function so(t){return ao.get(t)}function lo(t){const e=t.ownedURL;t.ownedURL=void 0,e&&URL.revokeObjectURL(e)}const co=Zt;class uo extends co{constructor(t){super(t),this.name="subtitle",this.option=null,this.destroyEvent=()=>null;const e=function(t,e){const r=P(e).child(),n={scope:r,revision:0,render:0,trackRevision:0};return ao.set(t,n),r.add(()=>{lo(n)}),n}(this,t);this.init(t.option.subtitle).catch(()=>{});let r=!1;const n=()=>{if(e.scope.closed||!this.url)return;const n=t.template.$video.webkitDisplayingFullscreen;"boolean"===typeof n&&n!==r&&(r=n,this.createTrack(n?"subtitles":"metadata",this.url))};t.on("video:timeupdate",n),e.scope.add(()=>{t.off("video:timeupdate",n)})}get url(){return this.art.template.$track.src}set url(t){this.switch(t).catch(()=>{})}get textTrack(){var t,e;return null==(e=null==(t=this.art.template.$video)?void 0:t.textTracks)?void 0:e[0]}get activeCues(){var t;return Array.from((null==(t=this.textTrack)?void 0:t.activeCues)||[])}get cues(){var t;return Array.from((null==(t=this.textTrack)?void 0:t.cues)||[])}style(t,e){const{$subtitle:r}=this.art.template;return"object"===typeof t?rt(r,t):et(r,t,e)}update(){!function(t){const e=so(t);if(e.scope.closed)return;const r=e.revision,n=++e.render,o=()=>!e.scope.closed&&e.revision===r&&e.render===n,{art:i}=t,{$subtitle:a}=i.template;if(a.innerHTML="",!t.activeCues.length)return;if(i.emit("subtitleBeforeUpdate",t.activeCues),!o())return;const s=t.activeCues.map((t,e)=>t.text.split(/\r?\n/).filter(t=>t.trim()).map(t=>`
\n ${i.option.subtitle.escape?mt(t):t}\n
`).join("")).join("");o()&&(a.innerHTML=s,i.emit("subtitleAfterUpdate",t.activeCues))}(this)}switch(t){return c(this,arguments,function*(t,e={}){const{i18n:r,notice:n,option:o}=this.art,i=l(s(s({},o.subtitle),e),{url:t}),a=so(this),c=a.revision+1,d=yield this.init(i);return!a.scope.closed&&a.revision===c&&e.name&&(n.show=`${r.get("Switch Subtitle")}: ${e.name}`),d})}createTrack(t,e){!function(t,e,r){const n=so(t);if(n.scope.closed)return;const o=++n.trackRevision,{art:i}=t,{template:a}=i,s=a.$track,l=s.parentNode,c=s.nextSibling,d=document.createElement("track"),u=n.scope.child();u.add(()=>{d.onload=null,d.onerror=null});let p=!1;try{if(d.default=!0,d.kind=e,d.src=r,d.label=i.option.subtitle.name||"Artplayer",d.track.mode="hidden",d.onload=()=>{u.closed||a.$track!==d||i.emit("subtitleLoad",t.cues,t.option)},d.onerror=()=>{u.closed||a.$track!==d||(i.notice.show=new Error("Failed to load subtitle track"))},u.closed||n.trackRevision!==o)return void u.dispose();s.remove(),a.$video.appendChild(d),a.$track=d;const l=t.textTrack,c=l?i.proxy(l,"cuechange",()=>{u.closed||a.$track!==d||t.update()}):()=>{};if(u.add(()=>{i.events.remove(c)}),u.closed||n.trackRevision!==o)return u.dispose(),void d.remove();const f=n.track;n.track=u,t.destroyEvent=c,s.onload=null,s.onerror=null,p=!0;try{null==f||f.dispose()}finally{n.ownedURL&&n.ownedURL!==r&&lo(n)}}catch(f){if(p)throw f;if(u.dispose(),d.remove(),n.scope.closed||n.trackRevision!==o)throw f;throw a.$track=s,l&&l.insertBefore(s,(null==c?void 0:c.parentNode)===l?c:null),f}}(this,t,e)}init(t){return c(this,null,function*(){const e=so(this),r=function(t){const e=t.request,r=new io(t.scope);return t.request=r,t.revision+=1,null==e||e.cancel(),r}(e),{notice:n,template:{$subtitle:o}}=this.art;return r.run(()=>c(this,null,function*(){if(!this.textTrack)return null;if(h(t,Gt.subtitle),!t.url)return;let i;this.option=t,this.style(t.style);try{if(!r.active)return;const n=yield fetch(t.url,{signal:r.signal});if(!r.active)return;if(!n.ok)throw new Error(`Failed to load subtitle: ${n.status} ${n.statusText}`);const a=yield n.arrayBuffer();if(!r.active)return;const s=function(t,e){const r=new TextDecoder(e.encoding).decode(t);switch(e.type||st(e.url)){case"srt":return{vtt:e.onVttLoad(xt(r))};case"ass":return{vtt:e.onVttLoad($t(r))};case"vtt":return{vtt:e.onVttLoad(r)};default:return}}(a,t);if(!r.active)return;const l=void 0===s?t.url:i=kt(s.vtt);if(!r.active)return;o.innerHTML="";const c=e.trackRevision+1;if(this.url!==l&&this.createTrack("metadata",l),!r.active||e.trackRevision>c)return;return i&&(e.ownedURL=i,i=void 0),l}catch(a){if(!r.active)return;throw o.innerHTML="",n.show=a,a}finally{i&&(e.scope.closed||this.url!==i?URL.revokeObjectURL(i):e.ownedURL=i)}}))})}}const po=`\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Player version:
\n
${m}
\n
\n
\n
Video url:
\n
\n
\n
\n
Video volume:
\n
\n
\n
\n
Video time:
\n
\n
\n
\n
Video duration:
\n
\n
\n
\n
Video resolution:
\n
\n x \n
\n
\n
\n
[x]
\n
\n
\n
\n `;class fo{constructor(t){this.art=t;const{option:e,constructor:r}=t;e.container instanceof Element?this.$container=e.container:(this.$container=H(e.container),it(this.$container,`No container element found by ${e.container}`)),it(V(),"The current browser does not support flex layout");const n=this.$container.tagName.toLowerCase();it("div"===n,`Unsupported container element type, only support 'div' but got '${n}'`),it(r.instances.every(t=>t.template.$container!==this.$container),"Cannot mount multiple instances on the same dom element"),this.query=this.query.bind(this),function(t,e,r){const n=T.get(e);if(n&&n!==t)throw new Error("Cannot mount multiple instances on the same dom element");const o=L(t);o.rollback=r,T.set(e,t),o.releaseContainer=()=>{T.get(e)===t&&T.delete(e)}}(t,this.$container,qn(this.$container)),function(t,e,r){const n=L(t),o=n.mountingTemplate;n.mountingTemplate=e;try{r()}finally{n.mountingTemplate=o}}(t,this,()=>{this.$container.dataset.artId=String(t.id),this.init()})}static get html(){return po}query(t){return H(t,this.$container)}init(){const{option:t}=this.art;var e;if(t.useSSR||(this.$container.innerHTML=fo.html),(e=this).$player=e.query(".art-video-player"),e.$video=e.query(".art-video"),e.$track=e.query("track"),e.$poster=e.query(".art-poster"),e.$subtitle=e.query(".art-subtitle"),e.$danmuku=e.query(".art-danmuku"),e.$bottom=e.query(".art-bottom"),e.$progress=e.query(".art-progress"),e.$controls=e.query(".art-controls"),e.$controlsLeft=e.query(".art-controls-left"),e.$controlsCenter=e.query(".art-controls-center"),e.$controlsRight=e.query(".art-controls-right"),e.$layer=e.query(".art-layers"),e.$loading=e.query(".art-loading"),e.$notice=e.query(".art-notice"),e.$noticeInner=e.query(".art-notice-inner"),e.$mask=e.query(".art-mask"),e.$state=e.query(".art-state"),e.$setting=e.query(".art-settings"),e.$info=e.query(".art-info"),e.$infoPanel=e.query(".art-info-panel"),e.$infoClose=e.query(".art-info-close"),e.$contextmenu=e.query(".art-contextmenus"),t.proxy){const e=t.proxy.call(this.art,this.art);if(M(this.art))return;!function(t){it(t instanceof HTMLVideoElement||t instanceof HTMLCanvasElement,"Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'")}(e),Z(e,this.$video),e.className="art-video",this.$video=e}t.backdrop&&j(this.$player,"art-backdrop"),k&&j(this.$player,"art-mobile")}destroy(t){t?this.$container.innerHTML="":j(this.$player,"art-destroy")}}const ho=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);class mo{on(t,e,r){const n=this.e||(this.e={});let o=ho(n,t)?n[t]:void 0;return o||(o=[],Object.defineProperty(n,t,{value:o,enumerable:!0,configurable:!0,writable:!0})),o.push({fn:e,ctx:r}),this}once(t,e,r){const n=this,o=e;let i=!1;function a(...e){i||(i=!0,n.off(t,a),o.apply(r,e))}return a._=e,this.on(t,a,r)}emit(t,...e){const r=this.e||(this.e={}),n=(ho(r,t)&&r[t]||[]).slice();for(const o of n)o.fn.apply(o.ctx,e);return this}off(t,e){const r=this.e||(this.e={}),n=ho(r,t)?r[t]:void 0,o=[];if(n&&e)for(let i=0,a=n.length;i{e.destroying||e.finalizers.dispose()})}(this);try{if(this.template=new fo(this),P(this).closed)return;if(this.events=new Be(this),P(this).closed)return;if(this.storage=new no,P(this).closed)return;if(this.icons=new Je(this),P(this).closed)return;if(this.i18n=new Ke(this),P(this).closed)return;if(this.notice=new lr(this),P(this).closed)return;if(this.player=new qr(this),P(this).closed)return;if(this.layers=new nr(this),P(this).closed)return;if(this.controls=new Re(this),P(this).closed)return;if(this.contextmenu=new ie(this),P(this).closed)return;if(this.subtitle=new uo(this),P(this).closed)return;if(this.info=new rr(this),P(this).closed)return;if(this.loading=new or(this),P(this).closed)return;if(this.hotkey=new Xe(this),P(this).closed)return;if(this.mask=new ir(this),P(this).closed)return;if(this.setting=new ro(this),P(this).closed)return;if(this.plugins=new sn(this),P(this).closed)return;if("function"===typeof e&&this.on("ready",()=>e.call(this,this)),yo.DEBUG){const t=t=>console.log(`[ART.${this.id}] -> ${t}`);t(`Version@${yo.version}`);for(let e=0;et(`Event@${e.type}`))}(function(t){const e=L(t);return e.rollback=void 0,!e.scope.closed})(this)&&go.push(this)}catch(r){try{z(this,go,!0,yo.REMOVE_SRC_WHEN_DESTROY,!0)}catch(n){console.warn("Failed to clean up ArtPlayer initialization:",n)}throw r}}static get instances(){return go}static get version(){return m}static get config(){return E}static get utils(){return Et}static get scheme(){return Gt}static get Emitter(){return mo}static get validator(){return h}static get kindOf(){return h.kindOf}static get html(){return fo.html}static get option(){return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:t=>t},moreVideoAttr:{controls:!1,preload:b?"auto":"metadata"},i18n:{},icons:{},cssVar:{},customType:{},lang:"undefined"===typeof navigator||null==navigator?void 0:navigator.language.toLowerCase()}}get proxy(){return this.events.proxy}get query(){return this.template.query}get video(){return this.template.$video}reset(){this.video.removeAttribute("src"),this.video.load()}destroy(t=!0){z(this,go,t,yo.REMOVE_SRC_WHEN_DESTROY)}}var bo,wo;return yo.STYLE=oo,yo.DEBUG=!1,yo.CONTEXTMENU=!0,yo.NOTICE_TIME=2e3,yo.SETTING_WIDTH=250,yo.SETTING_ITEM_WIDTH=200,yo.SETTING_ITEM_HEIGHT=35,yo.RESIZE_TIME=200,yo.SCROLL_TIME=200,yo.SCROLL_GAP=50,yo.AUTO_PLAYBACK_MAX=10,yo.AUTO_PLAYBACK_MIN=5,yo.AUTO_PLAYBACK_TIMEOUT=3e3,yo.RECONNECT_TIME_MAX=5,yo.RECONNECT_SLEEP_TIME=1e3,yo.CONTROL_HIDE_TIME=3e3,yo.DBCLICK_TIME=300,yo.DBCLICK_FULLSCREEN=!0,yo.MOBILE_DBCLICK_PLAY=!0,yo.MOBILE_CLICK_PLAY=!1,yo.AUTO_ORIENTATION_TIME=200,yo.INFO_LOOP_TIME=1e3,yo.FAST_FORWARD_VALUE=3,yo.FAST_FORWARD_TIME=1e3,yo.TOUCH_MOVE_RATIO=.5,yo.VOLUME_STEP=.1,yo.SEEK_STEP=5,yo.PLAYBACK_RATE=[.5,.75,1,1.25,1.5,2],yo.ASPECT_RATIO=["default","4:3","16:9"],yo.FLIP=["normal","horizontal","vertical"],yo.FULLSCREEN_WEB_IN_BODY=!0,yo.LOG_VERSION=!0,yo.USE_RAF=!1,yo.REMOVE_SRC_WHEN_DESTROY=!0,bo=yo,wo=oo,$&&(window.Artplayer=bo,v("artplayer-style",wo),setTimeout(()=>{bo.LOG_VERSION&&console.log(`%c ArtPlayer %c ${bo.version} %c https://artplayer.org`,"color: #fff; background: #5f5f5f","color: #fff; background: #4bc729","")},100)),yo}); +!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.Artplayer=e(),define(function(){return t.Artplayer})):(t="undefined"!==typeof globalThis?globalThis:t||self).Artplayer=e()}(this,function(){"use strict";var t=Object.defineProperty,e=Object.defineProperties,r=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable,a=(e,r,n)=>r in e?t(e,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[r]=n,s=(t,e)=>{for(var r in e||(e={}))o.call(e,r)&&a(t,r,e[r]);if(n)for(var r of n(e))i.call(e,r)&&a(t,r,e[r]);return t},l=(t,n)=>e(t,r(n)),c=(t,e,r)=>new Promise((n,o)=>{var i=t=>{try{s(r.next(t))}catch(e){o(e)}},a=t=>{try{s(r.throw(t))}catch(e){o(e)}},s=t=>t.done?n(t.value):Promise.resolve(t.value).then(i,a);s((r=r.apply(t,e)).next())});function d(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var u,p={exports:{}};var f=(u||(u=1,p.exports=function(){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}var e=Object.prototype.toString,r=function(r){if(void 0===r)return"undefined";if(null===r)return"null";var o=t(r);if("boolean"===o)return"boolean";if("string"===o)return"string";if("number"===o)return"number";if("symbol"===o)return"symbol";if("function"===o)return"GeneratorFunction"===n(r)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(r))return"array";if(function(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}(r))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(r))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(r))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(r))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(r))return"regexp";switch(n(r)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(r))return"generator";switch(o=e.call(r)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return o.slice(8,-1).toLowerCase().replace(/\s/g,"")};function n(t){return t.constructor?t.constructor.name:null}function o(t,e){var n=2{document.head.appendChild(r)}):(document.head||document.documentElement).appendChild(r)),r.textContent=e}const g=globalThis.CUSTOM_USER_AGENT,y=null!=g?g:"undefined"===typeof navigator?"":navigator.userAgent,b=/^(?:(?!chrome|android).)*safari/i.test(y),w=/iPad|iPhone|iPod/i.test(y)&&("undefined"===typeof window||!window.MSStream),x=w||y.includes("Macintosh")&&"undefined"!==typeof navigator&&navigator.maxTouchPoints>=1,k=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(y)||x,$="undefined"!==typeof window&&"undefined"!==typeof document;const E={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webkitSupportsFullscreen","webkitDisplayingFullscreen","onenterpictureinpicture","onleavepictureinpicture","disablePictureInPicture","cancelVideoFrameCallback","requestVideoFrameCallback","getVideoPlaybackQuality","requestPictureInPicture","webkitEnterFullScreen","webkitEnterFullscreen","webkitExitFullScreen","webkitExitFullscreen"]};class A extends Error{constructor(t){super("Failed to release ArtPlayer resources"),this.errors=t,this.name="ResourceCleanupError"}}class C{constructor(){this.cleanups=new Set,this.disposed=!1}get closed(){return this.disposed}add(t){let e=!0;const r=()=>{e&&(e=!1,this.cleanups.delete(r),t())};return this.closed?r():this.cleanups.add(r),r}child(){const t=new C,e=this.add(()=>{t.dispose()});return t.add(()=>{e()}),t}dispose(){if(this.closed)return;this.disposed=!0;const t=[];for(const r of Array.from(this.cleanups).reverse())try{r()}catch(e){e instanceof A?t.push(...e.errors):t.push(e)}if(t.length)throw new A(t)}}const S=new WeakMap,T=new WeakMap;function L(t){const e=S.get(t);if(!e)throw new Error("ArtPlayer lifecycle has not been initialized");return e}function P(t){return L(t).scope}function M(t){const e=L(t);return e.destroying||e.scope.closed}function z(t,e,r,n,o=!1){var i,a,s;const l=L(t);if(l.destroying||l.scope.closed)return;l.destroying=!0;const c=[],d=t=>{try{t()}catch(e){c.push(...e instanceof A?e.errors:[e])}};n&&(null==(i=t.template)?void 0:i.$video)&&d(()=>t.reset()),d(()=>l.scope.dispose()),d(()=>{var e;return null==(e=t.template||l.mountingTemplate)?void 0:e.destroy(r)});const u=e.indexOf(t);-1!==u&&e.splice(u,1),t.isDestroy=!0,o||(null==(a=l.releaseContainer)||a.call(l),l.releaseContainer=void 0),d(()=>t.emit("destroy")),d(()=>l.finalizers.dispose()),o&&l.rollback&&d(l.rollback),l.rollback=void 0,null==(s=l.releaseContainer)||s.call(l),l.releaseContainer=void 0;for(const p of c.slice(1))console.warn("Additional ArtPlayer cleanup failure:",p);if(c.length)throw c[0]}const R=new WeakMap;function O(t,e){const r=P(t).child();return R.set(e,r),r}function D(t){const e=R.get(t);if(!e)throw new Error("ArtPlayer component has not been registered");return e}function I(t){var e;null==(e=R.get(t))||e.dispose()}function N(t,e,r,n){const o=D(e);if(o.closed)return;const i=(...t)=>{if(!o.closed)return n(...t)};t.on(r,i),o.add(()=>{t.off(r,i)})}function _(t,e){return{on:(r,n)=>{N(t,e,r,n)},proxy:(r,n,o)=>function(t,e,r,n,o){const i=D(e);if(i.closed)return()=>{};const a=t.events.proxy(r,n,t=>{if(!i.closed)return o(t)});return i.add(()=>{t.events.remove(a)})}(t,e,r,n,o)}}function W(t){var e;if(t.composedPath)return t.composedPath();const r=[];let n=t.target;for(;n;)r.push(n),n=null!=(e=n.parentNode)?e:null;return"undefined"===typeof window||r.includes(window)||r.push(window),r}function F(t,e){return W(t).includes(e)}function V(){const t=document.createElement("div");return t.style.display="flex","flex"===t.style.display}function Y(t){return t.getBoundingClientRect()}function B(){const t=document.createElement("div");t.style.cssText="position:fixed;top:env(safe-area-inset-top,0px);right:env(safe-area-inset-right,0px);bottom:env(safe-area-inset-bottom,0px);left:env(safe-area-inset-left,0px);pointer-events:none;visibility:hidden;";try{document.body.appendChild(t);const e=getComputedStyle(t);return{top:Number.parseFloat(e.top)||0,right:Number.parseFloat(e.right)||0,bottom:Number.parseFloat(e.bottom)||0,left:Number.parseFloat(e.left)||0}}finally{t.remove()}}function H(t,e=document){return e.querySelector(t)}function j(t,e){return t.classList.add(e)}function q(t,e){return t.classList.remove(e)}function U(t,e){return t.classList.contains(e)}function X(t,e){return e instanceof Element?t.appendChild(e):t.insertAdjacentHTML("beforeend",String(e)),t.lastElementChild||t.lastChild}function G(t){return Array.from(t.parentElement.children).filter(e=>e!==t)}function K(t,e){G(t).forEach(t=>q(t,e)),j(t,e)}function Z(t,e){return e.parentNode.replaceChild(t,e),t}function J(t){return document.createElement(t)}function Q(t,e,r="top"){k||(t.setAttribute("aria-label",e),j(t,"hint--rounded"),j(t,`hint--${r}`))}function tt(t="",e=""){const r=J("i");return j(r,"art-icon"),j(r,`art-icon-${t}`),X(r,e),r}function et(t,e,r){return t.style[e]=r,t}function rt(t,e){for(const r in e)et(t,r,e[r]);return t}function nt(t,e,r){return new Promise((n,o)=>{const i=r?r.child():new C;let a=!1,s=()=>{};function l(t){if(!a){a=!0;try{i.dispose()}catch(e){console.warn("Additional image cleanup failure:",e)}try{s()}catch(e){console.warn("Additional image cleanup failure:",e)}o(t)}}function c(t){if(!a&&!i.closed){a=!0;try{i.dispose(),n(t)}catch(e){try{s()}finally{o(e)}}}}if(i.add(()=>{if(!a){a=!0;try{s()}finally{n(void 0)}}}),!i.closed)try{const n=new Image;d(n,()=>{if(!e||1===e)return void c(n);const t=document.createElement("canvas"),o=t.getContext("2d");if(t.width=n.width*e,t.height=n.height*e,!o)throw new TypeError("Canvas 2D context is unavailable");a||i.closed||(o.drawImage(n,0,0,t.width,t.height),a||i.closed||t.toBlob(t=>{if(!a&&!i.closed)try{if(!t)throw new Error("Unable to encode thumbnail image");const e=URL.createObjectURL(t);let n=!1;const o=()=>{n||(n=!0,URL.revokeObjectURL(e))};if(s=r?r.add(o):o,a||i.closed)return void s();const l=new Image;d(l,()=>c(l)),i.closed||(l.src=e)}catch(e){l(e)}}))}),i.closed||(n.src=t)}catch(u){l(u)}function d(e,r){e.onload=()=>{if(!a&&!i.closed)try{r()}catch(u){l(u)}},e.onerror=()=>l(new Error(`Image load failed: ${t}`)),i.add(()=>{e.onload=null,e.onerror=null,a||e.removeAttribute("src")})}})}class ot extends Error{constructor(t,e){super(t),"captureStackTrace"in Error&&"function"===typeof Error.captureStackTrace&&Error.captureStackTrace(this,e||this.constructor),this.name="ArtPlayerError"}}function it(t,e){if(!t)throw new ot(e);return t}function at(t){const e=t;return e&&"function"===typeof e.catch?e.catch(()=>{}):t}function st(t){const e=t.search(/[?#]/),r=(e<0?t:t.slice(0,e)).trim().toLowerCase();return r.slice(r.lastIndexOf(".")+1)}function lt(t,e){const r=document.createElement("a");r.style.display="none",r.href=t,r.download=e,document.body.appendChild(r);try{r.click()}finally{r.remove()}}function ct(t,e,r){return Math.max(Math.min(t,Math.max(e,r)),Math.min(e,r))}function dt(t){return t.charAt(0).toUpperCase()+t.slice(1)}function ut(t){if(!t)return"00:00";const e=Math.floor(t/3600),r=Math.floor((t-3600*e)/60),n=Math.floor(t-3600*e-60*r);return(e>0?[e,r,n]:[r,n]).map(t=>t<10?`0${t}`:String(t)).join(":")}const pt={"&":"&","<":"<",">":">","'":"'",'"':"""},ft={"&":"&","<":"<",">":">","'":"'",""":'"'},ht=/(&|<|>|'|")/g;function mt(t){return t.replace(/[&<>'"]/g,t=>pt[t]||t)}const vt=Object.defineProperty,{hasOwnProperty:gt}=Object.prototype;function yt(t,e){return gt.call(t,e)}function bt(t,e){return Object.getOwnPropertyDescriptor(t,e)}function wt(...t){const e=t=>!!t&&"object"===typeof t&&!Array.isArray(t);return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=t[n],i=r[n];let a;a=Array.isArray(o)&&Array.isArray(i)?o.concat(...i):e(o)&&e(i)?wt(o,i):i,vt(t,n,{value:a,enumerable:!0,configurable:!0,writable:!0})}),t),{})}function xt(t){return"WEBVTT \r\n\r\n".concat((e=t,e.replace(/(\d\d:\d\d:\d\d)[,.](\d+)/g,(t,e,r)=>{let n=r.slice(0,3);return 1===r.length&&(n=`${r}00`),2===r.length&&(n=`${r}0`),`${e},${n}`})).replace(/\{\\([ibu])\}/g,"").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").replace(/\{[\s\S]*?\}/g,"").concat("\r\n\r\n"));var e}function kt(t){return URL.createObjectURL(new Blob([t],{type:"text/vtt"}))}function $t(t){const e=new RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i");function r(t=""){return t.split(/[:.]/).map((t,e,r)=>{if(e===r.length-1){if(1===t.length)return`.${t}00`;if(2===t.length)return`.${t}0`}else if(1===t.length)return(0===e?"0":":0")+t;return 0===e?t:e===r.length-1?`.${t}`:`:${t}`}).join("")}return`WEBVTT\n\n${t.split(/\r?\n/).map(t=>{const n=t.match(e);if(!n)return null;const[,o="",i="",,,a=""]=n;return{start:r(o.trim()),end:r(i.trim()),text:a.replace(/\{[\s\S]*?\}/g,"").replace(/(\\N)/g,"\n").trim().split(/\r?\n/).map(t=>t.trim()).join("\n")}}).filter(t=>t).map((t,e)=>t?`${e+1}\n${t.start} --\x3e ${t.end}\n${t.text}`:"").filter(t=>t.trim()).join("\n\n")}`}const Et=Object.freeze(Object.defineProperty({__proto__:null,ArtPlayerError:ot,addClass:j,append:X,assToVtt:$t,capitalize:dt,clamp:ct,createElement:J,debounce:function(t,e){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>(r=void 0,t.apply(this,n)),e)}},def:vt,download:lt,errorHandle:it,escape:mt,get:bt,getComposedPath:W,getExt:st,getIcon:tt,getRect:Y,getSafeAreaInsets:B,getStyle:function(t,e,r=!0){const n=window.getComputedStyle(t,null).getPropertyValue(e);return r?Number.parseFloat(n):n},has:yt,hasClass:U,includeFromEvent:F,inverseClass:K,isBrowser:$,isIOS:w,isIOS13:x,isInViewport:function(t,e=0){const r=t.getBoundingClientRect(),n=window.innerHeight||document.documentElement.clientHeight,o=window.innerWidth||document.documentElement.clientWidth,i=r.top-e<=n&&r.top+r.height+e>=0,a=r.left-e<=o+e&&r.left+r.width+e>=0;return i&&a},isMobile:k,isSafari:b,loadImg:function(t,e){return nt(t,e,void 0)},mergeDeep:wt,query:H,queryAll:function(t,e=document){return Array.from(e.querySelectorAll(t))},remove:function(t){return t.parentNode.removeChild(t)},removeClass:q,replaceElement:Z,secondToTime:ut,setStyle:et,setStyleText:v,setStyles:rt,siblings:G,silencePromise:at,sleep:function(t=0){return new Promise(e=>setTimeout(e,t))},srtToVtt:xt,supportsFlex:V,throttle:function(t,e){let r=!1;return function(...n){r||(t.apply(this,n),r=!0,setTimeout(()=>{r=!1},e))}},tooltip:Q,unescape:function(t){return t.replace(ht,t=>ft[t]||t)},userAgent:y,vttToBlob:kt},Symbol.toStringTag,{value:"Module"}));function At(){}function Ct(t,e,r,n,o={}){const{capture:i=!1,once:a=!1,signal:s}=o;if(t.closed||(null==s?void 0:s.aborted))return At;let l=At;function c(e){a&&l(),t.closed||("function"===typeof n?n.call(this,e):n.handleEvent(e))}return e.addEventListener(r,c,o),l=t.add(()=>{try{e.removeEventListener(r,c,i)}finally{null==s||s.removeEventListener("abort",l)}}),null==s||s.addEventListener("abort",l,{once:!0}),l}function St(t,e,r){if(t.closed)return At;let n=!0,o=At;const i=setTimeout(()=>{n&&(o(),t.closed||e())},r);return o=t.add(()=>{n=!1,clearTimeout(i)}),o}function Tt(t,e=0){return t.closed?Promise.resolve(!1):new Promise(r=>{let n=!1,o=At;const i=setTimeout(()=>{n=!0,o(),r(!0)},e);o=t.add(()=>{clearTimeout(i),n||r(!1)})})}const Lt=new WeakSet;function Pt(t){Lt.add(t),t.preventDefault()}function Mt(t){return!t.altKey&&!t.ctrlKey&&!t.metaKey&&!t.isComposing&&229!==t.keyCode}function zt(t,e,r=()=>e.click(),n=()=>!0){if(t.closed)return;e.hasAttribute("role")||e.setAttribute("role","button"),e.hasAttribute("tabindex")||(e.tabIndex=0);let o=!1;const i=()=>n()&&"true"!==e.getAttribute("aria-disabled")&&!e.hasAttribute("disabled"),a=t=>(t.composedPath()[0]||t.target)===e;Ct(t,e,"keydown",t=>{const e=t;a(e)&&Mt(e)&&!e.defaultPrevented&&("Enter"===e.key?(Pt(e),!e.repeat&&i()&&r()):" "===e.key&&(Pt(e),!e.repeat&&i()&&(o=!0)))}),Ct(t,e,"keyup",t=>{const n=t;if(" "!==n.key)return;const s=o;o=!1,s&&a(n)&&Mt(n)&&!n.defaultPrevented&&i()&&e.ownerDocument.activeElement===e&&(Pt(n),r())}),Ct(t,e,"blur",()=>{o=!1}),t.add(()=>{o=!1})}function Rt(t,e){return X(t,e)}function Ot(t,e){return e.querySelector(t)}const Dt=new WeakSet;function It(t){const e=t.template.$player;!M(t)&&e.isConnected&&(e.hasAttribute("tabindex")||(e.setAttribute("tabindex","-1"),Dt.has(e)||(Dt.add(e),P(t).add(()=>{Dt.delete(e),"-1"===e.getAttribute("tabindex")&&e.removeAttribute("tabindex")}))),e.focus({preventScroll:!0}))}const Nt=new WeakSet,_t="[tabindex],button,input,select,textarea,a[href],[contenteditable]";function Wt(t){return[t,...t.querySelectorAll(_t)].find(t=>{var e;if(!t.matches(_t)||t.tabIndex<0||t.matches(":disabled")||t.closest("[inert]")||"true"===t.getAttribute("aria-disabled")||!t.getClientRects().length)return!1;const r=null==(e=t.ownerDocument.defaultView)?void 0:e.getComputedStyle(t);return"hidden"!==(null==r?void 0:r.visibility)&&"collapse"!==(null==r?void 0:r.visibility)})}function Ft(t,e,r){var n;const o=null==e?void 0:e.ownerDocument,i=null==o?void 0:o.activeElement;if(!["control","contextmenu"].includes(null!=(n=t.name)?n:"")||Nt.has(t)||!e||!o||!i||!e.contains(i))return()=>{};const a=t.art.template.$player,s=Array.from(a.querySelectorAll(`.art-${t.name}`)),l=s.indexOf(e),c=[...s.slice(l+1),...s.slice(0,l).reverse()];return Nt.add(t),()=>{var e;if(Nt.delete(t),M(t.art)||!a.isConnected||o.activeElement!==o.body)return;const n=r?null==(e=t.cache.get(r))?void 0:e.$ref:void 0;for(const t of[...n?[n]:[],...c]){if(!a.contains(t))continue;const e=Wt(t);if(e)return void e.focus({preventScroll:!0})}It(t.art)}}const Vt="array",Yt="boolean",Bt="string",Ht="number",jt="object",qt="function";function Ut(t,e,r){return it(e===Bt||e===Ht||t instanceof Element,`${r.join(".")} require '${Bt}' or 'Element' type`)}const Xt={html:Ut,disable:`?${Yt}`,name:`?${Bt}`,index:`?${Ht}`,style:`?${jt}`,click:`?${qt}`,mounted:`?${qt}`,tooltip:`?${Bt}|${Ht}`,width:`?${Ht}`,selector:`?${Vt}`,onSelect:`?${qt}`,switch:`?${Yt}`,onSwitch:`?${qt}`,range:`?${Vt}`,onRange:`?${qt}`,onChange:`?${qt}`},Gt={id:Bt,container:Ut,url:Bt,poster:Bt,type:Bt,theme:Bt,lang:Bt,volume:Ht,isLive:Yt,muted:Yt,autoplay:Yt,autoSize:Yt,autoMini:Yt,loop:Yt,flip:Yt,playbackRate:Yt,aspectRatio:Yt,screenshot:Yt,setting:Yt,hotkey:Yt,pip:Yt,mutex:Yt,backdrop:Yt,fullscreen:Yt,fullscreenWeb:Yt,subtitleOffset:Yt,miniProgressBar:Yt,useSSR:Yt,playsInline:Yt,lock:Yt,gesture:Yt,fastForward:Yt,autoPlayback:Yt,autoOrientation:Yt,airplay:Yt,proxy:`?${qt}`,plugins:[qt],layers:[Xt],contextmenu:[Xt],settings:[Xt],controls:[l(s({},Xt),{position:(t,e,r)=>{const n=["top","left","right"];return it("string"===typeof t&&n.includes(t),`${r.join(".")} only accept ${n.toString()} as parameters`)}})],quality:[{default:`?${Yt}`,html:Bt,url:Bt}],highlight:[{time:Ht,text:Bt}],thumbnails:{url:Bt,number:Ht,column:Ht,width:Ht,height:Ht,scale:Ht},subtitle:{url:Bt,name:Bt,type:Bt,style:jt,escape:Yt,encoding:Bt,onVttLoad:qt},moreVideoAttr:jt,i18n:jt,icons:jt,cssVar:jt,customType:jt},Kt=new WeakSet;class Zt{constructor(t){this.id=0,this.art=t,this.cache=new Map,this.add=this.add.bind(this),this.remove=this.remove.bind(this),this.update=this.update.bind(this)}get show(){return U(this.art.template.$player,`art-${this.name}-show`)}set show(t){const{$player:e}=this.art.template,r=`art-${this.name}-show`;t?j(e,r):q(e,r),this.art.emit(this.name,t)}toggle(){this.show=!this.show}add(t){var e;if(M(this.art))return;const r="function"===typeof t?t(this.art):t;if(M(this.art))return;if(r.html=r.html||"",h(r,Xt),!this.$parent||!this.name||r.disable)return;const n=r.name||`${this.name}${this.id}`,o=this.cache;it(!o.has(n),`Can't add an existing [${n}] to the [${this.name}]`),this.id+=1;const i=document.createElement("div"),a=O(this.art,i),s=[],l=Object.getOwnPropertyDescriptor(this,n);let c=!1;a.add(()=>{for(const t of s)this.art.events.remove(t)});try{if(a.closed)return;if(function(t,e,r,n,o,i){j(t,`art-${r}`),j(t,`art-${r}-${n}`);const a=Array.from(e.children);t.dataset.index=String(i.index||o);const s=a.find(e=>Number(e.dataset.index)>=Number(t.dataset.index));s?s.insertAdjacentElement("beforebegin",t):X(e,t),i.html&&X(t,i.html),i.style&&rt(t,i.style),i.tooltip&&Q(t,i.tooltip)}(i,this.$parent,this.name,n,this.id,r),a.closed)return;if(r.click){("control"===this.name&&!r.selector||"contextmenu"===this.name&&!i.querySelector("[data-value]"))&&!i.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")&&zt(a,i);const t=this.art.events.proxy(i,"click",t=>{a.closed||(t.preventDefault(),r.click.call(this.art,this,t))});s.push(t)}if(r.selector&&["left","right"].includes(r.position)&&this.selector(r,i,s),a.closed)return;return function(t,e,r){const n=t;"__proto__"===e?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r}(this,n,i),c=!0,o.set(n,{$ref:i,events:s,option:r}),r.mounted&&r.mounted.call(this.art,i),i}catch(d){try{I(i)}catch(u){console.warn("ArtPlayer component cleanup failed:",u)}throw(null==(e=o.get(n))?void 0:e.$ref)===i&&o.delete(n),c&&this[n]===i&&(l?Object.defineProperty(this,n,l):delete this[n]),i.remove(),d}}remove(t){it(this.cache.has(t),`Can't find [${t}] from the [${this.name}]`);const e=this.cache.get(t);if(Kt.has(e))return;const r=Ft(this,e.$ref);Kt.add(e);try{e.option.beforeUnmount&&e.option.beforeUnmount.call(this.art,e.$ref);try{I(e.$ref)}finally{this.cache.get(t)===e&&(this.cache.delete(t),delete this[t]),e.$ref.remove()}}finally{Kt.delete(e),r()}}update(t){var e;const r=Ft(this,null==(e=this.cache.get(t.name))?void 0:e.$ref,t.name);try{if(this.cache.has(t.name)){const e=this.cache.get(t.name);t=Object.assign(e.option,t),this.remove(t.name)}return this.add(t)}finally{r()}}}function Jt(t){for(const e of t.querySelectorAll("[data-value]"))e.setAttribute("aria-pressed",String(e.classList.contains("art-current")))}function Qt(t,e){var r,n;const o=D(t);if(!o.closed){t.setAttribute("role","group"),t.setAttribute("aria-label",e);for(const i of t.querySelectorAll("[data-value]"))zt(o,i),i.setAttribute("aria-label",`${e}: ${null!=(n=null==(r=i.textContent)?void 0:r.trim())?n:""}`);Jt(t)}}const te=new WeakMap;function ee(t,e){e?te.set(t,e):te.delete(t)}function re(t){const e=new Set;let r=t;for(;!e.has(r);){e.add(r);let t,n=r;for(;n&&!t;)t=te.get(n),n=n.parentElement;if(!t)return r;r=t}return t}function ne(t){const e=t;return!!e&&(["INPUT","TEXTAREA","SELECT"].includes(e.tagName)||e.isContentEditable)}function oe(t){var e;const r=null==(e=t.ownerDocument.defaultView)?void 0:e.getComputedStyle(t).visibility;return t.isConnected&&!t.matches(":disabled")&&!t.closest("[inert]")&&"true"!==t.getAttribute("aria-disabled")&&t.getClientRects().length>0&&"hidden"!==r&&"collapse"!==r}class ie extends Zt{constructor(t){super(t),this.name="contextmenu",this.$parent=t.template.$contextmenu,O(t,this.$parent),k||this.init()}init(){const{option:t,template:{$player:e,$contextmenu:r}}=this.art,{on:n,proxy:o}=_(this.art,r);t.playbackRate&&this.add(function(t){return e=>{const{i18n:r,constructor:{PLAYBACK_RATE:n}}=e,o=n.map(t=>`${1===t?r.get("Normal"):t.toFixed(1)}`).join(""),i=r.get("Play Speed");return l(s({},t),{html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.playbackRate=Number(n),t.show=!1)},mounted:t=>{const{on:r}=_(e,t),n=H('[data-value="1"]',t);n&&K(n,"art-current"),Qt(t,i),r("video:ratechange",()=>{const r=Array.from(t.querySelectorAll("span")).find(t=>Number(t.dataset.value)===e.playbackRate);r&&(K(r,"art-current"),Jt(t))})}})}}({name:"playbackRate",index:10})),t.aspectRatio&&this.add(function(t){return e=>{const{i18n:r,constructor:{ASPECT_RATIO:n}}=e,o=n.map(t=>`${"default"===t?r.get("Default"):t}`).join(""),i=r.get("Aspect Ratio");return l(s({},t),{html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.aspectRatio=n,t.show=!1)},mounted:t=>{const{on:r}=_(e,t),n=H('[data-value="default"]',t);n&&K(n,"art-current"),Qt(t,i),r("aspectRatio",e=>{const r=Array.from(t.querySelectorAll("span")).find(t=>t.dataset.value===e);r&&(K(r,"art-current"),Jt(t))})}})}}({name:"aspectRatio",index:20})),t.flip&&this.add(function(t){return e=>{const{i18n:r,constructor:{FLIP:n}}=e,o=n.map(t=>`${r.get(dt(t))}`).join(""),i=r.get("Video Flip");return l(s({},t),{html:`${i}: ${o}`,click:(t,r)=>{const n=r.target instanceof HTMLElement?r.target.dataset.value:void 0;n&&(e.flip=n.toLowerCase(),t.show=!1)},mounted:t=>{const{on:r}=_(e,t),n=H('[data-value="normal"]',t);n&&K(n,"art-current"),Qt(t,i),r("flip",e=>{const r=Array.from(t.querySelectorAll("span")).find(t=>t.dataset.value===e);r&&(K(r,"art-current"),Jt(t))})}})}}({name:"flip",index:30})),this.add(function(t){return e=>l(s({},t),{html:e.i18n.get("Video Info"),click:t=>{e.info.show=!0,t.show=!1}})}({name:"info",index:40})),this.add(function(t){return l(s({},t),{html:`ArtPlayer ${m}`})}({name:"version",index:50})),this.add(function(t){return e=>l(s({},t),{html:e.i18n.get("Close"),click:t=>{t.show=!1}})}({name:"close",index:60}));for(let s=0;s{this.show=!0,i.closed||M(this.art)||!this.show||function(t,e,r){const{$player:n,$contextmenu:o}=t.template,{height:i,width:a,left:s,top:l}=Y(n),{height:c,width:d}=Y(o);let u=e-s,p=r-l;e+d>s+a&&(u=a-d),r+c>l+i&&(p=i-c),M(t)||rt(o,{top:`${p}px`,left:`${u}px`})}(this.art,t,e)},c=function(t,e){const{art:r}=t,{$player:n,$contextmenu:o}=r.template,i=D(o),a=()=>!i.closed&&!M(r);let s,l=!1,c="",d=0;const u=()=>{const t=n.ownerDocument.activeElement;s=t&&n.contains(t)?re(t):n,ee(o,s)},p=()=>Array.from(o.querySelectorAll("[tabindex],button,input,select,textarea,a[href],[contenteditable]")).filter(t=>t.tabIndex>=0&&oe(t)),f=r.i18n.get("Context Menu");if(!a())return{pointer:()=>!1};o.setAttribute("role","group"),o.setAttribute("aria-label",f);const h=t=>{if(!a())return;if(t)return void(o.contains(n.ownerDocument.activeElement)||u());const e=n.ownerDocument.activeElement,i=o.contains(e)||l&&e===n.ownerDocument.body,d=s;s=void 0,l=!1,c="",ee(o),i&&(d&&n.contains(d)&&oe(d)&&d.focus({preventScroll:!0}),(n.ownerDocument.activeElement===n.ownerDocument.body||o.contains(n.ownerDocument.activeElement))&&It(r))};r.on("contextmenu",h),i.add(()=>{r.off("contextmenu",h),ee(o)}),Ct(i,o,"focusin",()=>{l=!0});let m=!1;return Ct(i,o,"focusout",e=>{o.contains(e.relatedTarget)||m||(m=!0,St(i,()=>{m=!1,a()&&t.show&&!o.contains(n.ownerDocument.activeElement)&&(t.show=!1)},0))}),Ct(i,n,"keydown",n=>{var i;const s=n;if(!a()||!Mt(s)||s.defaultPrevented)return;if(("ContextMenu"===s.key||"F10"===s.key&&s.shiftKey)&&r.constructor.CONTEXTMENU&&!ne(s.target)){Pt(s),u();const r=s.target.getBoundingClientRect();return e(r.left,r.bottom),void(a()&&t.show&&(null==(i=p()[0])||i.focus({preventScroll:!0})))}if(!t.show||!o.contains(s.target))return;if("Escape"===s.key)return Pt(s),void(t.show=!1);if("Tab"===s.key)return void(t.show=!1);if(ne(s.target))return;const l=p(),f=l.indexOf(s.target);let h;if("ArrowDown"===s.key||"ArrowRight"===s.key)h=l[(f+1)%l.length];else if("ArrowUp"===s.key||"ArrowLeft"===s.key)h=l[(f+l.length-1)%l.length];else if("Home"===s.key)h=l[0];else if("End"===s.key)h=l[l.length-1];else{if(1!==s.key.length||" "===s.key)return;{const t=s.key.toLowerCase();c=Date.now()-d>700?t:c+t,d=Date.now();const e=[...c].every(e=>e===t)?t:c;h=[...l.slice(f+1),...l.slice(0,f+1)].find(t=>(t.getAttribute("aria-label")||t.textContent||"").trim().toLowerCase().startsWith(e))}}Pt(s),null==h||h.focus({preventScroll:!0})}),{pointer:t=>!(!a()||!r.constructor.CONTEXTMENU||ne(t.target))&&(u(),!0)}}(this,a);o(e,"contextmenu",t=>{c.pointer(t)&&(t.preventDefault(),a(t.clientX,t.clientY))}),o(e,"click",t=>{F(t,r)||(this.show=!1)}),n("blur",()=>{this.show=!1})}}const ae=new WeakMap,se=new WeakMap,le=new WeakMap;function ce(t,e){const r=ae.get(t);(null==r?void 0:r.active())&&void 0!==r.resumePlaying&&(!e&&r.internalPause?r.internalPause=!1:(r.resumePlaying=e,e||r.pauseRevision++))}function de(t){return le.get(t)||P(t)}function ue(t){const e=ae.get(t),r=le.get(t);return()=>ae.get(t)===e&&(!e||e.active())&&le.get(t)===r&&(!r||!r.closed)}function pe(t){const e=le.get(t),r=P(t).child(),n=r.child();le.set(t,r),r.add(()=>{le.get(t)===r&&le.delete(t)});const o={scope:n,assigned:!1,acceptingEvents:!1,pauseRevision:0,active:()=>!M(t)&&!n.closed&&ae.get(t)===o};return ae.set(t,o),n.add(()=>{ae.get(t)===o&&ae.delete(t),o.onAssigned=void 0,o.onError=void 0}),null==e||e.dispose(),o}function fe(t){t.assigned=!0;const e=t.onAssigned;t.onAssigned=void 0,t.active()&&(null==e||e())}function he(t,e,r){se.set(t,e),e.acceptingEvents=!0;try{t.url=r}finally{se.get(t)===e&&(se.delete(t),fe(e))}}function me(t,e){t.active()&&(t.onError?t.onError(e):console.warn("Failed to initialize ArtPlayer source:",e),t.scope.dispose())}function ve(t,e){const{$progress:r}=t.template,{left:n}=Y(r),o=ct((k?e.touches[0].clientX:e.clientX)-n,0,r.clientWidth),i=o/r.clientWidth*t.duration;return{second:i,time:ut(i),width:o,percentage:ct(o/r.clientWidth,0,1)}}function ge(t,e,r=()=>!0){if(r())if(t.isRotate){const n=(e.touches[0].clientY-t.top)/t.height,o=n*t.duration;if(!r())return;t.emit("setBar","played",n,e),r()&&(t.seek=o)}else{const{second:n,percentage:o}=ve(t,e);if(!r())return;t.emit("setBar","played",o,e),r()&&(t.seek=n)}}const ye=new Map([["ArrowRight",1],["ArrowUp",1],["ArrowLeft",-1],["ArrowDown",-1],["PageUp",10],["PageDown",-10]]);function be(t,e,r){t.getAttribute(e)!==r&&t.setAttribute(e,r)}function we(t,e,r,n,o,i="horizontal"){const a=t=>[t.min,t.max,t.value,t.step].every(Number.isFinite)&&t.max>t.min&&t.step>0,s=(t,e)=>Math.min(e.max,Math.max(e.min,t)),l=()=>{if(t.closed)return;const r=n(),o=a(r),i=o?s(r.value,r):0;be(e,"aria-disabled",String(!o)),be(e,"aria-valuemin",String(o?r.min:0)),be(e,"aria-valuemax",String(o?r.max:0)),be(e,"aria-valuenow",String(i)),be(e,"aria-valuetext",r.text(i))};return t.closed||(e.setAttribute("role","slider"),e.tabIndex=0,e.setAttribute("aria-label",r),e.setAttribute("aria-orientation",i),Ct(t,e,"keydown",t=>{const r=t;if((r.composedPath()[0]||r.target)!==e||!Mt(r)||r.defaultPrevented)return;const i=ye.get(r.key);if(void 0===i&&"Home"!==r.key&&"End"!==r.key)return;Pt(r);const c=n();if(!a(c))return void l();const d="Home"===r.key?c.min:"End"===r.key?c.max:s(c.value,c)+i*c.step;o(s(d,c)),l()}),l()),l}const xe=new WeakMap;function ke(t){return xe.get(t)||0}function $e(t,e,r){let n,o=!1,i=!1,a=!1,s=ke(t);const l=()=>a||ke(t)!==s,c=()=>{var e,r;return!!(null==(r=null==(e=t.template)?void 0:e.$video)?void 0:r.seeking)};return{restore(i=()=>{t.currentTime=e}){if(!r()||l())return;const d=ke(t);i(),s=ke(t),s>d+1&&(a=!0),r()&&(n=t.currentTime,r()&&!l()&&(o=c()))},manual(){a=!0},ready(){if(!r()||c())return!1;const e=void 0!==n&&Math.abs(t.currentTime-n)>.05;if(!l()&&o&&!i&&void 0!==n&&e){if(i=!0,!r())return!1;t.currentTime=n}return r()&&!c()}}}function Ee(t,e){const{icons:r,option:n}=t,{$player:o}=t.template,i=D(e),{on:a}=_(t,e);let s=()=>{};const l=Ot(".art-progress-hover",e),c=Ot(".art-progress-loaded",e),d=Ot(".art-progress-played",e),u=Ot(".art-progress-highlight",e),p=Ot(".art-progress-indicator",e),f=Ot(".art-progress-tip",e);function h(r,n){const{width:o,time:i}=n||ve(t,r);f.textContent=i||"00:00";const a=f.clientWidth;o<=a/2?et(f,"left",0):o>e.clientWidth-a/2?et(f,"left",e.clientWidth-a+"px"):et(f,"left",o-a/2+"px")}r.indicator?X(p,r.indicator):et(p,"backgroundColor","var(--art-theme)"),a("setBar",function(r,n,a){const m="played"===r&&a&&k;if("loaded"===r&&et(c,"width",100*n+"%"),"hover"===r&&(et(l,"width",100*n+"%"),F(a,u)?function(r){const{width:n}=ve(t,r),o=r.target instanceof HTMLElement?r.target.dataset.text:void 0;f.textContent=null!=o?o:"";const i=f.clientWidth;n<=i/2?et(f,"left",0):n>e.clientWidth-i/2?et(f,"left",e.clientWidth-i+"px"):et(f,"left",n-i/2+"px")}(a):h(a),0===n?q(o,"art-progress-hover"):j(o,"art-progress-hover")),"played"===r&&(et(d,"width",100*n+"%"),et(p,"left",100*n+"%")),m){j(o,"art-progress-hover");h(a,{width:e.clientWidth*n,time:ut(n*t.duration)}),s(),s=St(i,()=>{q(o,"art-progress-hover")},500)}}),a("video:loadedmetadata",function(){u.textContent="";for(let e=0;e{t.emit("setBar","played",t.played),t.emit("setBar","loaded",t.loaded)}):(a("video:timeupdate",()=>{t.emit("setBar","played",t.played)}),a("video:progress",()=>{t.emit("setBar","loaded",t.loaded)}),a("video:ended",()=>{t.emit("setBar","played",1)})),t.emit("setBar","loaded",t.loaded||0)}function Ae(t){return e=>l(s({},t),{html:'\n
\n
\n
\n
\n
\n
\n
00:00
\n
\n ',mounted:t=>{Ee(e,t),function(t,e){const{$progress:r}=t.template,n=e.querySelector(".art-progress-indicator"),{on:o,proxy:i}=_(t,e),a=D(e);let s=0;const l=()=>{const e=ue(t);return()=>!a.closed&&!M(t)&&e()},c=()=>{const t=++s,e=l();return()=>t===s&&e()};if(!k){let e;i(r,"click",e=>{e.target!==n&&ge(t,e,c())}),i(r,"mousemove",e=>{const r=l(),{percentage:n}=ve(t,e);r()&&t.emit("setBar","hover",n,e)}),i(r,"mouseleave",e=>{t.emit("setBar","hover",0,e)}),i(r,"mousedown",t=>{e=0===t.button?c():void 0}),o("document:mousemove",r=>{const n=e;if(null==n?void 0:n()){const{second:o,percentage:i}=ve(t,r);if(!n()||e!==n)return;t.emit("setBar","played",i,r),n()&&e===n&&(t.seek=o)}else e=void 0}),o("document:mouseup",()=>{e=void 0})}}(e,t),function(t,e){const r=D(e),{on:n}=_(t,e);let o,i=0;const a=we(r,e,t.i18n.get("Progress"),()=>({min:0,max:t.duration,value:t.currentTime,step:t.constructor.SEEK_STEP,text:e=>`${ut(e)} / ${ut(Number.isFinite(t.duration)&&t.duration>0?t.duration:0)}`}),e=>{const n=++i;null==o||o.dispose();const s=r.child();o=s;const l=de(t).add(()=>{s.dispose()});s.add(()=>{l()}),s.add(()=>{o===s&&(o=void 0)});const c=ue(t),d=()=>n===i&&!s.closed&&!M(t)&&c(),u=$e(t,e,d),p=()=>{d()?u.ready()&&(s.dispose(),a()):s.dispose()};for(const r of["video:seeked","video:ended"])t.on(r,p),s.add(()=>{t.off(r,p)});try{t.emit("setBar","played",e/t.duration),d()&&u.restore(()=>{t.seek=e}),p()}catch(f){throw s.dispose(),f}});n("video:loadedmetadata",a),n("video:durationchange",a),n("video:emptied",a),n("video:timeupdate",a),n("video:seeking",a),n("video:seeked",a),n("video:ended",a)}(e,t)}})}function Ce(t){const{option:e}=t.art;e.isLive||t.add(Ae({name:"progress",position:"top",index:10})),t.add({name:"thumbnails",position:"top",index:20}),t.add(function(t){return e=>l(s({},t),{mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e,a=Rt(t,o.play),s=Rt(t,o.pause);function l(){t.setAttribute("aria-label",i.get("Play")),et(a,"display","flex"),et(s,"display","none")}function c(){t.setAttribute("aria-label",i.get("Pause")),et(a,"display","none"),et(s,"display","flex")}zt(D(t),t,()=>(e.playing?s:a).click()),Q(a,i.get("Play")),Q(s,i.get("Pause")),n(a,"click",()=>{at(e.play())}),n(s,"click",()=>{e.pause()}),e.playing?c():l(),r("video:playing",()=>{c()}),r("video:pause",()=>{l()})}})}({name:"playAndPause",position:"left",index:10})),t.add(function(t){return e=>l(s({},t),{mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e,a=Rt(t,o.volume),s=Rt(t,o.volumeClose);for(const e of[a,s])zt(D(t),e),e.setAttribute("aria-label",i.get("Mute"));const l=Rt(t,'
'),c=Rt(l,'
'),d=Rt(c,'
'),u=Rt(c,'
'),p=Rt(u,'
'),f=Rt(p,'
'),h=Rt(u,'
'),m=D(t);let v=0;const g=we(m,u,i.get("Volume"),()=>({min:0,max:100,value:e.muted?0:100*e.volume,step:100*e.constructor.VOLUME_STEP,text:t=>`${Math.round(t)}%`}),t=>{const r=++v;e.muted=!1,r!==v||m.closed||M(e)||(e.volume=t/100)},"vertical");function y(t){const{top:e,height:r}=Y(u);return 1-(t.clientY-e)/r}function b(){g();const r=t.ownerDocument.activeElement,n=e.muted||0===e.volume,o=n?s:a;if(a.setAttribute("aria-pressed",String(e.muted)),s.setAttribute("aria-pressed",String(e.muted)),n)et(a,"display","none"),et(s,"display","flex"),et(h,"top","100%"),et(f,"top","100%"),d.textContent="0";else{const t=100*e.volume;et(a,"display","flex"),et(s,"display","none"),et(h,"top",100-t+"%"),et(f,"top",100-t+"%"),d.textContent=String(Math.floor(t))}r!==a&&r!==s||r===o||o.focus({preventScroll:!0})}if(b(),r("video:volumechange",b),n(a,"click",()=>{e.muted=!0}),n(s,"click",()=>{e.muted=!1}),k)et(l,"display","none");else{let t=!1;n(u,"mousedown",r=>{t=0===r.button,e.volume=y(r)}),r("document:mousemove",r=>{t&&(e.muted=!1,e.volume=y(r))}),r("document:mouseup",()=>{t&&(t=!1)})}}})}({name:"volume",position:"left",index:20})),e.isLive||t.add(function(t){return e=>l(s({},t),{style:k?{fontSize:"12px",padding:"0 5px"}:{cursor:"auto",padding:"0 10px"},mounted:t=>{const{on:r}=_(e,t);function n(){const r=`${ut(e.currentTime)} / ${ut(e.duration)}`;r!==t.textContent&&(t.textContent=r)}n();const o=["video:loadedmetadata","video:timeupdate","video:progress"];for(let e=0;e{r&&!P(t.art).closed&&(t.art.quality=e.quality)}).catch(t=>{console.warn("ArtPlayer quality initialization failed:",t)}),e.screenshot&&!k&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("Screenshot"),mounted:t=>{const{proxy:r}=_(e,t),{icons:n}=e;zt(D(t),t),Rt(t,n.screenshot),r(t,"click",()=>{at(e.screenshot())})}})}({name:"screenshot",position:"right",index:20})),e.setting&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("Show Setting"),mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e;Rt(t,o.setting),zt(D(t),t),t.setAttribute("aria-expanded","false"),n(t,"click",()=>{e.setting.toggle(),e.setting.resize()}),r("setting",e=>{t.setAttribute("aria-expanded",String(e)),Q(t,i.get(e?"Hide Setting":"Show Setting"))})}})}({name:"setting",position:"right",index:30})),e.pip&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("PIP Mode"),mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e;zt(D(t),t),Rt(t,o.pip),n(t,"click",()=>{e.pip=!e.pip}),r("pip",e=>{Q(t,i.get(e?"Exit PIP Mode":"PIP Mode"))})}})}({name:"pip",position:"right",index:40})),e.airplay&&"WebKitPlaybackTargetAvailabilityEvent"in window&&window.WebKitPlaybackTargetAvailabilityEvent&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("AirPlay"),mounted:t=>{const{proxy:r}=_(e,t),{icons:n}=e;zt(D(t),t),Rt(t,n.airplay),r(t,"click",()=>e.airplay())}})}({name:"airplay",position:"right",index:50})),e.fullscreenWeb&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("Web Fullscreen"),mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e;zt(D(t),t);const a=Rt(t,o.fullscreenWebOn),s=Rt(t,o.fullscreenWebOff);et(s,"display","none"),n(t,"click",()=>{e.fullscreenWeb=!e.fullscreenWeb}),r("fullscreenWeb",e=>{e?(Q(t,i.get("Exit Web Fullscreen")),et(a,"display","none"),et(s,"display","inline-flex")):(Q(t,i.get("Web Fullscreen")),et(a,"display","inline-flex"),et(s,"display","none"))})}})}({name:"fullscreenWeb",position:"right",index:60})),e.fullscreen&&t.add(function(t){return e=>l(s({},t),{tooltip:e.i18n.get("Fullscreen"),mounted:t=>{const{on:r,proxy:n}=_(e,t),{icons:o,i18n:i}=e;zt(D(t),t);const a=Rt(t,o.fullscreenOn),s=Rt(t,o.fullscreenOff);et(s,"display","none"),n(t,"click",()=>{e.fullscreen=!e.fullscreen}),r("fullscreen",e=>{e?(Q(t,i.get("Exit Fullscreen")),et(a,"display","none"),et(s,"display","inline-flex")):(Q(t,i.get("Fullscreen")),et(a,"display","inline-flex"),et(s,"display","none"))})}})}({name:"fullscreen",position:"right",index:70}));for(let r=0;rLe.get(t).option.selector}),vt(t,"$control_item",{get:()=>Le.get(t).item}),vt(t,"$control_value",{get:()=>Le.get(t).value})),Le.set(t,e)}function Me(t,e){t.innerHTML=e}function ze(t,e,r,n,o){const{proxy:i}=t.events,a=D(n),s=r.selector;j(n,"art-control-selector");const l=document.createElement("div");j(l,"art-selector-value"),X(l,r.html),n.textContent="",X(n,l);const d=Rt(n,'
');for(let c=0;cc(null,null,function*(){var o,i;if(a.closed)return;const s=W(n),c=r.selector.find(t=>s.includes(t.$control_item));if(!c)return;const d=++u,p=()=>!a.closed&&d===u,f=a.add(function(t,e){return Se.set(t,e),()=>{Se.get(t)===e&&Se.delete(t)}}(n,p));try{if(e(c),a.closed)return;if(r.onSelect){const e=yield r.onSelect.call(t,c,c.$control_item,n);if(p()){const t=l.contains(l.ownerDocument.activeElement);Me(l,e),null==(i=null==(o=Le.get(c))?void 0:o.refresh)||i.call(o,t)}}}catch(h){console.warn("ArtPlayer selector failed:",h)}finally{f()}}));o.push(p);const f=function(t,e,r,n,o){if(t.closed)return()=>{};const i=Array.from(n.children),a=i.some(t=>t.querySelector(Te));n.setAttribute("role",a?"group":"listbox"),n.setAttribute("aria-label",o);let s=!1,l=!1,c=!1,d="",u=0;const p=()=>i.length>0&&(l||s&&!c),f=()=>r.querySelector('button,a[href],[role="button"]')||r,h=(e=!1)=>{if(t.closed)return;const n=f();r.querySelector(Te)?(r.removeAttribute("role"),r.removeAttribute("tabindex")):(r.setAttribute("role","button"),r.tabIndex=0),n!==r&&(r.removeAttribute("aria-haspopup"),r.removeAttribute("aria-expanded"),r.removeAttribute("aria-disabled")),a?n.removeAttribute("aria-haspopup"):n.setAttribute("aria-haspopup","listbox"),n.setAttribute("aria-expanded",String(p())),n.setAttribute("aria-disabled",String(0===i.length)),e&&r.isConnected&&r.ownerDocument.activeElement===r.ownerDocument.body&&n.focus({preventScroll:!0})},m=(t,r=!1)=>{l=t,c=r,e.classList.toggle("art-selector-open",t),e.classList.toggle("art-selector-dismissed",r),h()},v=e=>{e&&!t.closed&&((e.querySelector(Te)||e).focus({preventScroll:!0}),t.closed||e.scrollIntoView({block:"nearest",inline:"nearest"}))},g=(e=!1)=>{!t.closed&&i.length&&(m(!0),d="",v(i.find(t=>t.classList.contains("art-current"))||i[e?i.length-1:0]))},y=()=>{if(t.closed)return;const o=n.contains(e.ownerDocument.activeElement);m(!1,!0),d="",o&&r.isConnected&&f().focus({preventScroll:!0})};zt(t,r,()=>{r.click(),e.ownerDocument.activeElement===r&&g()}),h();for(const b of i){const e=b.classList.contains("art-current");a?b.setAttribute("aria-current",String(e)):(b.setAttribute("role","option"),b.setAttribute("aria-selected",String(e))),b.querySelector(Te)||(b.tabIndex=-1,zt(t,b,()=>{b.click(),y()}))}return Ct(t,r,"keydown",t=>{const e=t;!Mt(e)||e.defaultPrevented||e.target!==r&&e.target!==f()||("ArrowDown"===e.key||"ArrowUp"===e.key?(Pt(e),g("ArrowUp"===e.key)):"Escape"===e.key&&p()&&(Pt(e),y()))}),Ct(t,r,"click",t=>{t.isTrusted&&0===t.detail&&f()!==r&&g()}),Ct(t,n,"keydown",t=>{var e;const r=t;if(!Mt(r)||r.defaultPrevented)return;if("Escape"===r.key)return Pt(r),void y();const n=i.indexOf(r.target);if(n<0)return;let o;switch(1!==r.key.length&&(d=""),r.key){case"ArrowDown":o=Math.min(n+1,i.length-1);break;case"ArrowUp":o=Math.max(n-1,0);break;case"Home":o=0;break;case"End":o=i.length-1;break;case"ArrowLeft":case"ArrowRight":return void Pt(r);default:{if(1!==r.key.length||" "===r.key)return;const t=Date.now();d=t-u<500?d+r.key.toLocaleLowerCase():r.key.toLocaleLowerCase(),u=t;const a=[...d].every(t=>t===d[0])?d[0]:d;for(let r=1;r<=i.length;r++){const t=(n+r)%i.length;if(null==(e=i[t].textContent)?void 0:e.trim().toLocaleLowerCase().startsWith(a)){o=t;break}}}}Pt(r),void 0!==o&&v(i[o])}),Ct(t,n,"click",t=>{t.isTrusted&&0===t.detail&&y()}),Ct(t,e,"mouseenter",()=>{s=!0,m(l)}),Ct(t,e,"mouseleave",()=>{s=!1,m(n.contains(e.ownerDocument.activeElement))}),Ct(t,e,"focusout",t=>{e.contains(t.relatedTarget)||m(!1,!0)}),t.add(()=>{e.classList.remove("art-selector-open","art-selector-dismissed")}),h}(a,n,l,d,String(r.tooltip||r.name||l.textContent||t.i18n.get("Open")));for(const c of s)Le.get(c).refresh=f}class Re extends Zt{constructor(t){super(t),this.isHover=!1,this.name="control",this.timer=Date.now();const{constructor:e}=t,{$player:r,$bottom:n}=this.art.template,o=function(t,e,r){let n,o,i=!0;const a=()=>!t.closed&&i&&e.contains(e.ownerDocument.activeElement),s=()=>{const t=a(),n=e.classList.contains("art-keyboard-focus");e.classList.toggle("art-keyboard-focus",t),t&&!n&&r()},l=()=>{i=!0,s()},c=()=>{i=!1,s()},d=()=>{n!==e.ownerDocument&&(null==o||o.dispose(),n=e.ownerDocument,o=t.child(),Ct(o,n,"keydown",l,{capture:!0}),Ct(o,n,"mousedown",c,{capture:!0}),Ct(o,n,"touchstart",c,{capture:!0,passive:!0}))};return d(),Ct(t,e,"keydown",l,{capture:!0}),Ct(t,e,"mousedown",c,{capture:!0}),Ct(t,e,"touchstart",c,{capture:!0,passive:!0}),Ct(t,e,"focusin",()=>{d(),s()}),Ct(t,e,"focusout",()=>{e.classList.remove("art-keyboard-focus")}),t.add(()=>{e.classList.remove("art-keyboard-focus")}),a}(O(t,n),r,()=>{this.show=!0}),{on:i,proxy:a}=_(t,n);a(r,"focusin",e=>{var r;t.isFocus=!0,t.isInput="INPUT"===(null==(r=e.target)?void 0:r.tagName)}),a(r,"focusout",e=>{r.contains(e.relatedTarget)||(t.isFocus=!1,t.isInput=!1)}),i("mousemove",()=>{k||(this.show=!0)}),i("click",()=>{k?this.toggle():this.show=!0}),i("document:mousemove",t=>{this.isHover=F(t,n)}),i("video:timeupdate",()=>{!t.setting.show&&!this.isHover&&!t.isInput&&!o()&&t.playing&&this.show&&Date.now()-this.timer>=e.CONTROL_HIDE_TIME&&(this.show=!1)}),i("control",t=>{t?(q(r,"art-hide-cursor"),j(r,"art-hover"),this.timer=Date.now()):(j(r,"art-hide-cursor"),q(r,"art-hover"))}),this.init(),P(t).closed||function(t){const{$bottom:e,$controls:r,$player:n}=t.template,o=D(e),{on:i}=_(t,e),a=()=>{if(o.closed)return;const t=r.offsetHeight;t>0&&n.style.getPropertyValue("--art-controls-height")!==`${t}px`&&n.style.setProperty("--art-controls-height",`${t}px`)};if(i("resize",a),"undefined"!==typeof ResizeObserver){const t=new ResizeObserver(a);return t.observe(r),void o.add(()=>{t.disconnect()})}if("undefined"!==typeof MutationObserver){const t=new MutationObserver(a);t.observe(r,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),o.add(()=>{t.disconnect()})}a()}(t)}init(){Ce(this)}add(t){if(M(this.art))return;const e="function"===typeof t?t(this.art):t,{$progress:r,$controlsLeft:n,$controlsRight:o}=this.art.template;switch(e.position){case"top":this.$parent=r;break;case"left":this.$parent=n;break;case"right":this.$parent=o;break;default:it(!1,"Control option.position must one of 'top', 'left', 'right'")}super.add(e)}check(t){!function(t){var e,r;if(!t)return;const n=t.$control_value.contains(t.$control_value.ownerDocument.activeElement);Me(t.$control_value,t.html);for(let o=0;othis.check(t),t,e,r)}}function Oe(t,e){const{constructor:r,template:{$video:n}}=t;!function(t){const{$player:e}=t.template,r=r=>{var n;if(M(t))return;const o=F(r,e);t.isInput=o&&"INPUT"===(null==(n=r.target)?void 0:n.tagName),t.isFocus=o,t.emit(o?"focus":"blur",r)};t.on("document:click",r),t.on("document:contextmenu",r),P(t).add(()=>{t.off("document:click",r),t.off("document:contextmenu",r)})}(t);let o=[];e.proxy(n,"click",e=>{if(M(t))return;const n=Date.now();o.push(n);const{MOBILE_CLICK_PLAY:i,DBCLICK_TIME:a,MOBILE_DBCLICK_PLAY:s,DBCLICK_FULLSCREEN:l}=r,c=o.filter(t=>n-t<=a);switch(c.length){case 1:if(t.emit("click",e),M(t))return;(!k||!t.isLock&&i)&&at(t.toggle()),o=c;break;case 2:if(t.emit("dblclick",e),M(t))return;k?!t.isLock&&s&&at(t.toggle()):l&&(t.fullscreen=!t.fullscreen),o=[];break;default:o=[]}})}function De(t){let e;const r=()=>{e=void 0},n=r=>e===r&&!M(t)&&!t.isLock&&!t.option.isLive&&t.isRotate===r.rotated&&r.sourceActive(),o=t=>{t&&r()};t.on("document:touchend",r),t.on("document:touchcancel",r),t.on("lock",o),P(t).add(()=>{r(),t.off("document:touchend",r),t.off("document:touchcancel",r),t.off("lock",o)});return{start:(o,i)=>{r();const a=i.touches[0];if(M(t)||t.isLock||t.option.isLive||1!==i.touches.length||!a)return;if(![a.pageX,a.pageY,a.clientX,a.clientY,t.currentTime].every(Number.isFinite))return;const s={target:o,identifier:a.identifier,x:a.pageX,y:a.pageY,time:t.currentTime,rotated:t.isRotate,sourceActive:ue(t)};if(e=s,o===t.template.$progress){const o=t.isRotate?t.height:t.template.$progress.clientWidth;if(!Number.isFinite(o)||o<=0||!Number.isFinite(t.duration)||t.duration<=0)return void r();try{ge(t,i,()=>n(s))}catch(l){throw e===s&&r(),l}n(s)&&(s.time=t.currentTime)}},move:o=>{const i=e,a=o.touches[0];if(!i)return;if(!n(i)||1!==o.touches.length||!a||a.identifier!==i.identifier)return void r();const s=i.rotated?t.height:t.width,l=i.target===t.template.$video?t.constructor.TOUCH_MOVE_RATIO:1;if(![a.pageX,a.pageY,s,t.duration,l].every(Number.isFinite)||s<=0||t.duration<=0)return void r();const c=function(t,e,r,n){const o=e-n,i=r-t;if(Math.abs(i)<2&&Math.abs(o)<2)return 0;const a=180*Math.atan2(o,i)/Math.PI;return a>=-45&&a<45?4:a>=45&&a<135?1:a>=-135&&a<-45?2:a>=135&&a<=180||a>=-180&&a<-135?3:0}(i.x,i.y,a.pageX,a.pageY);if(!(i.rotated?1===c||2===c:3===c||4===c))return;const d=ct((i.rotated?a.pageY-i.y:a.pageX-i.x)/s,-1,1),u=ct(i.time+t.duration*d*l,0,t.duration);t.seek=u,n(i)&&(t.emit("setBar","played",ct(u/t.duration,0,1),o),n(i)&&(t.notice.show=`${ut(u)} / ${ut(t.duration)}`))},cancel:r}}const Ie=["click","mouseup","keydown","touchend","touchcancel","touchmove","mousemove","pointerup","contextmenu","pointermove","visibilitychange","webkitfullscreenchange"],Ne=["resize","scroll","orientationchange"];const _e=new WeakMap;function We(t){const e=_e.get(t);if(!e)throw new Error("ArtPlayer event registry has not been initialized");return e}function Fe(t,e,r,n,o={}){if(Array.isArray(r)){const i=[];try{return r.map(r=>{const a=Fe(t,e,r,n,o);return i.push(a),a})}catch(f){for(const t of i.reverse())try{t()}catch(h){console.warn("Failed to roll back event listener:",h)}throw f}}const i=r,a=We(t);if(a.scope.closed||a.cleaning)return()=>{};const s="boolean"===typeof o?o:{capture:Boolean(null==o?void 0:o.capture),once:Boolean(null==o?void 0:o.once),passive:null==o?void 0:o.passive,signal:null==o?void 0:o.signal},l="boolean"===typeof s?s:s.capture,c="boolean"===typeof s?void 0:s.signal;if(a.scope.closed||a.cleaning||(null==c?void 0:c.aborted))return()=>{};let d=!0;function u(r=!1){(d||r)&&(e.removeEventListener(i,n,l),null==c||c.removeEventListener("abort",p),d=!1,t.destroyEvents.delete(p))}function p(){u()}t.destroyEvents.add(p);try{e.addEventListener(i,n,s),!d||a.scope.closed||a.cleaning?u(!0):(null==c?void 0:c.aborted)?p():null==c||c.addEventListener("abort",p,{once:!0})}catch(f){try{u(!0)}catch(h){console.warn("Failed to roll back event listener:",h)}throw f}return p}function Ve(t){return(e,r)=>{if(M(t))return;const n=(...e)=>{if(!M(t))return r(...e)};t.on(e,n),P(t).add(()=>{t.off(e,n)})}}function Ye(t){if(!t.constructor.USE_RAF)return;const e=P(t);let r=()=>{};const n=()=>{M(t)||(t.playing&&t.emit("raf"),M(t)||(r=function(t,e){if(t.closed)return At;let r=!0,n=At;const o=requestAnimationFrame(o=>{r&&(n(),t.closed||e(o))});return n=t.add(()=>{r=!1,cancelAnimationFrame(o)}),n}(e,n)))};n(),Ve(t)("destroy",()=>r())}class Be{constructor(t){this.destroyEvents=new Set,function(t,e){_e.set(t,{scope:P(e),cleaning:!1})}(this,t),P(t).add(()=>{this.destroy()}),this.proxy=this.proxy.bind(this),this.hover=this.hover.bind(this),Oe(t,this),function(t,e){const{$player:r}=t.template;e.hover(r,e=>{M(t)||(j(r,"art-hover"),t.emit("hover",!0,e))},e=>{M(t)||(q(r,"art-hover"),t.emit("hover",!1,e))})}(t,this),function(t,e){const{$player:r}=t.template;e.proxy(r,"mousemove",e=>{M(t)||t.emit("mousemove",e)})}(t,this),function(t,e){var r,n;const{option:o,constructor:i}=t,a=Ve(t);a("resize",()=>{const{aspectRatio:e,notice:r}=t;"standard"===t.state&&o.autoSize&&t.autoSize(),M(t)||(t.aspectRatio=e,M(t)||(r.show=""))});const s=P(t);let l=()=>{};const c=()=>{M(t)||(l(),l=St(s,()=>t.emit("resize"),i.RESIZE_TIME))};a("window:orientationchange",c),a("window:resize",c);const d=null==(n=null==(r=t.template.$player.ownerDocument.defaultView)?void 0:r.screen)?void 0:n.orientation;"function"===typeof(null==d?void 0:d.addEventListener)&&e.proxy(d,"change",c)}(t,this),function(t,e){if(!k||t.option.isLive)return;const{$video:r,$progress:n}=t.template,o=De(t),i=t=>{e.proxy(t,"touchstart",e=>o.start(t,e)),e.proxy(t,"touchmove",t=>o.move(t)),e.proxy(t,"touchcancel",o.cancel)};t.option.gesture&&i(r),i(n)}(t,this),function(t){const{option:e,constructor:r,template:{$container:n}}=t,o=r.SCROLL_TIME,i=P(t),a=Ve(t);let s=!1;a("window:scroll",()=>{s||(t.emit("view",function(t,e){const r=t.getBoundingClientRect(),n=t.ownerDocument,o=n.defaultView,i=(null==o?void 0:o.innerHeight)||n.documentElement.clientHeight,a=(null==o?void 0:o.innerWidth)||n.documentElement.clientWidth,s=r.top-e<=i&&r.top+r.height+e>=0,l=r.left-e<=a+e&&r.left+r.width+e>=0;return s&&l}(n,r.SCROLL_GAP)),M(t)||(s=!0,St(i,()=>{s=!1},o)))}),a("view",r=>{e.autoMini&&(t.mini=!r)})}(t),function(t,e){let r,n=0;P(t).add(()=>{r=void 0,n++});const o=t=>{if(t){for(const r of t.disposers)e.remove(r);t.disposers.length=0}};function i(i={}){var a;if(M(t))return;const s=++n,l={disposers:[]},c=()=>s!==n||M(t);try{const{$player:n}=t.template,o=i.document||n.ownerDocument||document,s=i.window||(null==(a=n.ownerDocument)?void 0:a.defaultView)||window,d=(n,o,i)=>{for(const a of o){if(c())return;l.disposers.push(e.proxy(n,a,e=>{r!==l||M(t)||t.emit(`${i}:${a}`,e)}))}};d(o,Ie,"document"),d(s,Ne,"window")}catch(u){throw o(l),u}if(c())return void o(l);const d=r;r=l,o(d)}i(),e.bindGlobalEvents=i}(t,this),Ye(t)}proxy(t,e,r,n={}){return Array.isArray(e),Fe(this,t,e,r,n)}hover(t,e,r){e&&this.proxy(t,"mouseenter",e),r&&this.proxy(t,"mouseleave",r)}remove(t){!function(t,e){if(t.destroyEvents.has(e))try{e(),t.destroyEvents.delete(e)}catch(r){console.warn("Failed to remove event listener:",r)}}(this,t)}destroy(){!function(t){const e=We(t);if(!e.cleaning){e.cleaning=!0;try{for(const e of t.destroyEvents)try{e(),t.destroyEvents.delete(e)}catch(r){console.warn("Failed to destroy event listener:",r)}}finally{e.cleaning=!1}}}(this)}}function He(t){if(t&&1===t.nodeType)return t}function je(t){const e=t.tagName.toUpperCase();return"INPUT"===e||"TEXTAREA"===e||"SELECT"===e||t.isContentEditable}function qe(t,e){var r,n,o,i;if(function(t){return Lt.has(t)}(t)||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey||t.isComposing||229===t.keyCode)return!1;const a=function(t,e){var r;const n=t.target;return 9===(null==n?void 0:n.nodeType)?n:(null==n?void 0:n.ownerDocument)||(null==(r=t.view)?void 0:r.document)||e}(t,e);let s=He(a.activeElement);for(;null==(r=null==s?void 0:s.shadowRoot)?void 0:r.activeElement;)s=He(s.shadowRoot.activeElement);if(s&&je(s))return!1;const l=He(null==(n=t.composedPath)?void 0:n.call(t)[0])||He(t.target),c="Enter"===t.key||"Enter"===t.code||"NumpadEnter"===t.code;if(c||" "===t.key||"Space"===t.code){const t='button,summary,[role="button"],[role="switch"]'+(c?",a[href]":"");if((null==(o=null==l?void 0:l.closest)?void 0:o.call(l,t))||(null==(i=null==s?void 0:s.closest)?void 0:i.call(s,t)))return!1}return!l||!je(l)}const Ue=new WeakMap;class Xe{constructor(t){this.art=t,this.keys={},Ue.set(this,{subscribed:!1}),k||this.init()}init(){const t=this.art;if(M(t))return;const e=Ue.get(this);if(t.option.hotkey){if(!e.defaults){const r=function(t){const{constructor:e}=t;return{Escape:()=>{t.fullscreenWeb&&(t.fullscreenWeb=!1)},Space:()=>{at(t.toggle())},ArrowLeft:()=>{t.backward=e.SEEK_STEP},ArrowUp:()=>{t.volume+=e.VOLUME_STEP},ArrowRight:()=>{t.forward=e.SEEK_STEP},ArrowDown:()=>{t.volume-=e.VOLUME_STEP}}}(t);e.defaults=()=>{for(const t of Object.keys(r))this.add(t,r[t])}}e.defaults()}if(e.subscribed)return;e.subscribed=!0;const r=e=>{if(!M(t)){if(t.isFocus&&qe(e,t.template.$player.ownerDocument)){const r=Object.prototype.hasOwnProperty.call(this.keys,e.code)?this.keys[e.code]:void 0;if(r){e.preventDefault();for(let n=0;n{e.subscribed=!1,t.off("document:keydown",r)})}add(t,e){const r=Object.prototype.hasOwnProperty.call(this.keys,t)?this.keys[t]:void 0;return r?r.includes(e)||r.push(e):Object.defineProperty(this.keys,t,{value:[e],enumerable:!0,configurable:!0,writable:!0}),this}remove(t,e){const r=Object.prototype.hasOwnProperty.call(this.keys,t)?this.keys[t]:void 0;if(r){const n=r.indexOf(e);-1!==n&&r.splice(n,1),0===r.length&&delete this.keys[t]}return this}}const Ge={"Context Menu":"\u5feb\u6377\u83dc\u5355",Lock:"\u9501\u5b9a",Back:"\u8fd4\u56de",Settings:"\u8bbe\u7f6e",Progress:"\u64ad\u653e\u8fdb\u5ea6","Video Info":"\u7edf\u8ba1\u4fe1\u606f",Close:"\u5173\u95ed","Video Load Failed":"\u52a0\u8f7d\u5931\u8d25",Volume:"\u97f3\u91cf",Play:"\u64ad\u653e",Pause:"\u6682\u505c",Rate:"\u901f\u5ea6",Mute:"\u9759\u97f3","Video Flip":"\u753b\u9762\u7ffb\u8f6c",Horizontal:"\u6c34\u5e73",Vertical:"\u5782\u76f4",Reconnect:"\u91cd\u65b0\u8fde\u63a5","Show Setting":"\u663e\u793a\u8bbe\u7f6e","Hide Setting":"\u9690\u85cf\u8bbe\u7f6e",Screenshot:"\u622a\u56fe","Play Speed":"\u64ad\u653e\u901f\u5ea6","Aspect Ratio":"\u753b\u9762\u6bd4\u4f8b",Default:"\u9ed8\u8ba4",Normal:"\u6b63\u5e38",Open:"\u6253\u5f00","Switch Video":"\u5207\u6362","Switch Subtitle":"\u5207\u6362\u5b57\u5e55",Fullscreen:"\u5168\u5c4f","Exit Fullscreen":"\u9000\u51fa\u5168\u5c4f","Web Fullscreen":"\u7f51\u9875\u5168\u5c4f","Exit Web Fullscreen":"\u9000\u51fa\u7f51\u9875\u5168\u5c4f","Mini Player":"\u8ff7\u4f60\u64ad\u653e\u5668","PIP Mode":"\u5f00\u542f\u753b\u4e2d\u753b","Exit PIP Mode":"\u9000\u51fa\u753b\u4e2d\u753b","PIP Not Supported":"\u4e0d\u652f\u6301\u753b\u4e2d\u753b","Fullscreen Not Supported":"\u4e0d\u652f\u6301\u5168\u5c4f","Subtitle Offset":"\u5b57\u5e55\u504f\u79fb","Last Seen":"\u4e0a\u6b21\u770b\u5230","Jump Play":"\u8df3\u8f6c\u64ad\u653e",AirPlay:"\u9694\u7a7a\u64ad\u653e","AirPlay Not Available":"\u9694\u7a7a\u64ad\u653e\u4e0d\u53ef\u7528"};!function(t,e){if("undefined"!==typeof window){window[t]=e}}("artplayer-i18n-zh-cn",Ge);class Ke{constructor(t){this.art=t,this.languages={"zh-cn":Ge},this.language={},this.update(t.option.i18n)}init(){const t=this.art.option.lang.toLowerCase();this.language=yt(this.languages,t)&&this.languages[t]||{}}get(t){return yt(this.language,t)&&this.language[t]||t}update(t){this.languages=wt(this.languages,t),this.init()}}const Ze={loading:'\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n',state:'\r\n\r\n\r\n',play:'\r\n \r\n',pause:'\r\n \r\n',check:'\r\n\r\n',volume:'\r\n \r\n \r\n',volumeClose:'\r\n \r\n \r\n',screenshot:'\r\n\t\r\n\r\n',setting:'\r\n \r\n \r\n',pip:'\r\n\r\n',arrowLeft:'\r\n \r\n',arrowRight:'\r\n \r\n',playbackRate:'',aspectRatio:'',config:'',lock:'\r\n\r\n\r\n\r\n\r\n',flip:'\r\n\r\n\r\n\r\n\r\n\r\n',unlock:'\r\n\r\n\r\n',fullscreenOff:'\r\n\r\n\r\n\r\n\r\n',fullscreenOn:'\r\n\r\n\r\n\r\n\r\n',fullscreenWebOff:'\r\n\r\n\r\n\r\n\r\n',fullscreenWebOn:'\r\n\r\n\r\n\r\n\r\n',switchOn:'\r\n\r\n\r\n \r\n',switchOff:'\r\n\r\n\r\n \r\n\r\n',error:'\r\n\r\n\r\n\r\n\r\n',close:'\r\n\r\n\r\n\r\n\r\n',airplay:'\r\n \r\n \r\n \r\n \r\n\r\n'};class Je{constructor(t){const e=s(s({},Ze),t.option.icons);for(const r in e)vt(this,r,{get:()=>tt(r,e[r])})}}const Qe=new WeakMap;function tr(t,e,r){const n=()=>!e.closed&&!M(t),o=t=>{try{e.dispose()}catch(r){console.warn("Failed to release info polling resources:",r)}throw t};try{const{proxy:i,constructor:a,template:{$infoPanel:s,$infoClose:l,$video:c}}=t,d=i(l,"click",()=>{n()&&r()});e.add(()=>{t.events.remove(d)});const u=Array.from(s.querySelectorAll("[data-video]")),p=()=>e.dispose();t.on("destroy",p),e.add(()=>{t.off("destroy",p)}),function(t,e,r){const{$player:n,$info:o,$infoClose:i}=t.template;if(!o)return;const a=()=>!e.closed&&!M(t),s=()=>n.classList.contains("art-info-show"),l=t.i18n.get("Close");if(!a())return;const c=t.i18n.get("Video Info");if(!a())return;i.setAttribute("aria-label",l),o.setAttribute("role","group"),o.setAttribute("aria-label",c),zt(e,i,()=>i.click(),s),Ct(e,o,"keydown",t=>{const e=t;a()&&s()&&Mt(e)&&!e.defaultPrevented&&"Escape"===e.key&&(Pt(e),r())});const d=e=>{var r;if(!a())return;const s=n.ownerDocument,l=s.activeElement;if(e)o.contains(l)||(Qe.delete(t),l&&n.contains(l)&&(Qe.set(t,re(l)),n.classList.contains("art-keyboard-focus")&&i.focus({preventScroll:!0})));else{const e=Qe.get(t);if(Qe.delete(t),!o.contains(l))return;const i=e&&(null==(r=s.defaultView)?void 0:r.getComputedStyle(e).visibility);(null==e?void 0:e.isConnected)&&n.contains(e)&&e.getClientRects().length&&"hidden"!==i&&"collapse"!==i&&!e.matches(":disabled")&&!e.closest("[inert]")&&"true"!==e.getAttribute("aria-disabled")?e.focus({preventScroll:!0}):It(t)}};t.on("info",d),e.add(()=>{t.off("info",d)})}(t,e,r);const f=()=>{var t;try{for(const e of u){if(!n())return;const r=Reflect.get(c,null!=(t=e.dataset.video)?t:"undefined");if(!n())return;const o="number"===typeof r?r.toFixed(2):r;if(!n())return;if(e.textContent!==o){const t=null==o?null:`${o}`;if(!n())return;e.textContent=t}}n()&&St(e,f,a.INFO_LOOP_TIME)}catch(r){o(r)}};n()&&f()}catch(i){o(i)}}const er=new WeakMap;class rr extends Zt{constructor(t){super(t),this.name="info",er.set(this,{revision:0}),k||this.init()}init(){var t;const e=er.get(this),r=++e.revision;if(null==(t=e.scope)||t.dispose(),M(this.art)||e.revision!==r)return;const n=P(this.art).child();e.scope=n,n.add(()=>{e.scope===n&&(e.scope=void 0)}),tr(this.art,n,()=>{this.show=!1})}}class nr extends Zt{constructor(t){super(t);const{option:e,template:{$layer:r}}=t;this.name="layer",this.$parent=r;for(let n=0;n{et(i,"display","none"),et(s,"display",null),M(t)&&(l=!0)};var d;t.on("destroy",c),(d=t,L(d).finalizers).add(()=>{try{l||c()}finally{t.off("destroy",c)}}),M(t)||n.proxy(e.$state,"click",()=>{M(t)||at(t.play())})}}const ar=new WeakMap;function sr(t){const e=ar.get(t);e.revision++,e.pending=void 0,null!==t.timer&&(clearTimeout(t.timer),t.timer=null)}class lr{constructor(t){this.art=t,this.timer=null,ar.set(this,{revision:0});const e=()=>this.destroy();t.on("destroy",e),P(t).add(()=>{t.off("destroy",e)}),P(t).add(()=>{this.destroy()})}destroy(){sr(this)}set show(t){if(M(this.art))return;const e=ar.get(this);e.revision++;const{constructor:r,template:{$player:n,$noticeInner:o}}=this.art;if(t){sr(this);const i=e.revision,a=()=>!M(this.art)&&e.revision===i;if(o.textContent=t instanceof Error?t.message.trim():t,!a())return;if(j(n,"art-notice-show"),!a())return;const s=r.NOTICE_TIME;if(!a())return;const l={};e.pending=l;const c=setTimeout(()=>{if(M(this.art)||e.pending!==l)return;e.pending=void 0;const t=e.revision;o.textContent="",M(this.art)||e.revision!==t||q(n,"art-notice-show")},s);a()?this.timer=c:clearTimeout(c)}else q(n,"art-notice-show")}get show(){const{template:{$player:t}}=this.art;return t.classList.contains("art-notice-show")}}function cr(t,e){return function(t,e){const r=wt(e,t);return r.container=t.container,h(r,Gt)}(t,e)}function dr({width:t,height:e}){return Number.isFinite(t)&&t>0&&Number.isFinite(e)&&e>0}function ur(t,e){if(!dr(t)||!Number.isFinite(e)||e<=0)return;const r=t.width/t.height>e?{width:e*t.height,height:t.height,axis:"width"}:{width:t.width,height:t.width/e,axis:"height"};return dr(r)?r:void 0}function pr(t,e,r,n=!1){const o=e=>{M(t)||r(e)};t[n?"once":"on"](e,o),P(t).add(()=>{t.off(e,o)})}function fr(t,e,r){for(const[n,o]of e){if(M(t)||r&&!r())return;t[n].show=o}}function hr(t){const{option:e,constructor:r,i18n:n,notice:o,template:{$player:i}}=t;let a,s=de(t),l=0;return{reset(){l=0,null==a||a.dispose(),q(i,"art-error")},loadStart(){q(i,"art-error")},schedule(d){(d=>c(null,null,function*(){if(M(t))return;const c=de(t);if(c!==s&&(s=c,l=0),a&&!a.closed)return;const u=c.child();a=u,u.add(()=>{a===u&&(a=void 0)});const p=()=>!M(t)&&!u.closed&&c===de(t),f=l{console.warn("ArtPlayer reconnect failed:",t)})}}}const mr=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],vr=(()=>{if("undefined"===typeof document)return!1;const t=mr[0],e={};for(const r of mr){if(r[1]in document){for(const[n,o]of r.entries())e[t[n]]=o;return e}}return!1})(),gr={change:vr.fullscreenchange,error:vr.fullscreenerror},yr={request:(t=document.documentElement,e)=>new Promise((r,n)=>{const o=()=>{yr.off("change",o),r()};yr.on("change",o);const i=t[vr.requestFullscreen](e);i instanceof Promise&&i.then(o).catch(n)}),exit:()=>new Promise((t,e)=>{if(!yr.isFullscreen)return void t();const r=()=>{yr.off("change",r),t()};yr.on("change",r);const n=document[vr.exitFullscreen]();n instanceof Promise&&n.then(r).catch(e)}),toggle:(t,e)=>yr.isFullscreen?yr.exit():yr.request(t,e),onchange(t){yr.on("change",t)},onerror(t){yr.on("error",t)},on(t,e){const r=gr[t];r&&document.addEventListener(r,e,!1)},off(t,e){const r=gr[t];r&&document.removeEventListener(r,e,!1)},raw:vr};function br(t,e,...r){const n=Reflect.get(t,e);if("function"!==typeof n)throw new TypeError(`Fullscreen method ${e} is not available`);return n.apply(t,r)}Object.defineProperties(yr,{isFullscreen:{get:()=>Boolean(document[vr.fullscreenElement])},element:{enumerable:!0,get:()=>document[vr.fullscreenElement]},isEnabled:{enumerable:!0,get:()=>Boolean(document[vr.fullscreenEnabled])}});const wr=new WeakMap;function xr(t){try{Promise.resolve(t()).catch(()=>{})}catch(e){}}function kr(t){const{document:e,elementProperty:r,changeEvent:n,target:o,exit:i}=t,a=function(t,e,r){let n=wr.get(t);if(!n){n=new WeakMap,wr.set(t,n);const o=n;t.addEventListener(r,()=>{const r=Reflect.get(t,e),n=r&&o.get(r);n&&(o.delete(r),xr(n))})}return n}(e,r,n);a.set(o,i),t.element===o&&(a.delete(o),xr(i))}function $r(t,e,r,n,o=()=>t.element!==t.target){const i=e.child();let a,s,l=!1,c=!1,d=!1,u=!1,p=!1;const f=new Promise((t,e)=>{a=t,s=e});function h(t=!1,e){if(!l){l=!0;try{i.dispose()}catch(r){t||(t=!0,e=r)}t?s(e):a()}}i.add(()=>{l||(l=!0,c=!0,a(),d&&!u&&r&&kr(t))});const m=()=>{d&&!u&&(r?t.element===t.target:o())&&h()};if(Ct(i,t.document,t.changeEvent,m),Ct(i,t.document,t.errorEvent,e=>{e.target!==t.target&&e.target!==t.document||(p=!0,d&&!u&&h(!0,new Error("Fullscreen request failed")))}),!i.closed)try{r&&function(t){var e;null==(e=wr.get(t.document))||e.delete(t.target)}(t);const e=r?t.request():t.exit();u=Boolean(e&&"function"===typeof e.then),d=!0,c&&!u&&r&&kr(t),u?Promise.resolve(e).then(()=>{c?n():h()},t=>h(!0,t)).catch(()=>{}):p?h(!0,new Error("Fullscreen request failed")):m()}catch(v){h(!0,v)}return{promise:f,cancel:()=>i.dispose()}}function Er(t,e){const r=P(t).child(),{$player:n,$video:o}=t.template,i=()=>e.element===n||e.element===o;let a,s=i(),l=0,c=s,d=!1,u=!1,p=!1;function f(){if(i())try{Promise.resolve(e.exit()).catch(()=>{})}catch(t){}}return r.add(()=>{l+=1,c=!1,n.classList.remove("art-fullscreen"),f()}),Ct(r,e.document,e.changeEvent,()=>{const r=i();if(r&&function(t){var e,r;return null!=(r=null==(e=wr.get(t.document))?void 0:e.has(t.target))&&r}(e))return;if(r&&u)return void f();if(r===s||M(t))return;s=r;const o=l,a=()=>M(t)||i()!==r||o!==l&&c!==r;t.emit("fullscreen",r),a()||(r&&(t.state="fullscreen"),a()||(n.classList.toggle("art-fullscreen",r),t.emit("resize")))}),Ct(r,e.document,e.errorEvent,r=>{(r.target===n||r.target===o||r.target===e.document&&(p||void 0!==a||i()))&&!M(t)&&t.emit("fullscreenError",r)}),{get:()=>!M(t)&&i(),set(n){if(M(t))return Promise.resolve();const o=++l;if(c=Boolean(n),c?u=!1:d&&(u=!0),null==a||a.cancel(),a=void 0,d=!1,!c&&!i())return Promise.resolve();p=!0,d=c;const s=$r(e,r,c,()=>{!M(t)&&c||f()},()=>!i());p=!1,l===o?a=s:s.cancel();const h=s.promise.catch(e=>{throw M(t)||l!==o||(t.notice.show=e),e}).finally(()=>{l===o&&(a=void 0,d=!1)});return h.catch(()=>{}),h}}}const Ar=new WeakSet;function Cr(t,e=!1){return"string"===typeof t.webkitPresentationMode?"fullscreen"===t.webkitPresentationMode:"boolean"===typeof t.webkitDisplayingFullscreen?t.webkitDisplayingFullscreen:t.ownerDocument.fullscreenElement===t||e}function Sr(t){Ar.delete(t),t.removeEventListener("webkitbeginfullscreen",Tr),t.removeEventListener("webkitpresentationmodechanged",Tr)}function Tr(t){var e;if(Ar.has(this)&&Cr(this,"webkitbeginfullscreen"===t.type)){Sr(this);try{null==(e=this.webkitExitFullscreen)||e.call(this)}catch(r){}}}function Lr(t){Ar.add(t),t.addEventListener("webkitbeginfullscreen",Tr),t.addEventListener("webkitpresentationmodechanged",Tr)}function Pr(t){const{$video:e}=t.template,r=P(t).child();let n=!1,o=Cr(e),i=o,a=!1,s=0;const l=()=>Cr(e,n);function c(r){if(M(t)||(c=e,Ar.has(c)))return;var c;"boolean"===typeof r&&(n=r);const d=l();if(d&&(a=!1),d===o)return;o=d;const u=s,p=()=>M(t)||l()!==d||u!==s&&i!==d;t.emit("fullscreen",d),p()||(d&&(t.state="fullscreen"),p()||t.emit("resize"))}r.add(()=>{var t;s++,i=!1,a&&Lr(e),l()&&(null==(t=e.webkitExitFullscreen)||t.call(e))}),Ct(r,e,"webkitbeginfullscreen",()=>c(!0)),Ct(r,e,"webkitendfullscreen",()=>c(!1)),Ct(r,e,"webkitpresentationmodechanged",()=>c());const d=()=>c();return t.on("document:webkitfullscreenchange",d),r.add(()=>{t.off("document:webkitfullscreenchange",d)}),{get:()=>!M(t)&&l(),set(r){if(M(t))return;const n=++s;if(i=Boolean(r),r){if(Sr(e),t.state="fullscreen",M(t)||n!==s)return;a=!0;try{e.webkitEnterFullscreen()}catch(o){throw n===s&&(a=!1),o}}else a&&(a=!1,Lr(e)),l()&&e.webkitExitFullscreen()}}}function Mr(t){return{node:t,parent:t.parentNode,next:t.nextSibling}}function zr({node:t,parent:e,next:r}){var n;if(!e)return void(null==(n=t.parentNode)||n.removeChild(t));const o=(null==r?void 0:r.parentNode)===e?r:null;t.parentNode===e&&t.nextSibling===o||e.insertBefore(t,o)}function Rr(t,e,r){const n=Math.max(0,r.viewportWidth-r.width),o=Math.max(0,r.viewportHeight-r.height);return{left:Math.max(0,Math.min(t,n)),top:Math.max(0,Math.min(e,o))}}function Or(t){const{width:e,height:r}=t.getBoundingClientRect(),n=t.ownerDocument.defaultView;return{width:e,height:r,viewportWidth:n.innerWidth,viewportHeight:n.innerHeight}}function Dr(t,e,r,n){const o=e.child();if(o.closed)return;const i=t.template.$mini;if(i){const t=i.style.display;return o.add(()=>{i.style.display=t}),{element:i,cancelDrag:()=>{},fresh:!1}}const a=t.template.$player.ownerDocument,s=a.createElement("div");s.className="art-mini-popup",o.add(()=>{s.remove()});try{const e=a.createElement("div");if(e.className="art-mini-close",e.append(t.icons.close),o.closed)return;const i=a.createElement("div");i.className="art-mini-state";const l=t.icons.play,c=t.icons.pause;if(o.closed)return;i.append(l,c),s.append(e,i),zt(o,e,()=>e.click(),r),zt(o,i,()=>(t.playing?c:l).click(),r);const d=t.i18n.get("Close");if(o.closed||M(t))return;e.setAttribute("aria-label",d);const u=t.i18n.get("Mini Player");if(o.closed||M(t))return;s.setAttribute("role","group"),s.setAttribute("aria-label",u),Ct(o,s,"keydown",t=>{const e=t;r()&&Mt(e)&&!e.defaultPrevented&&"Escape"===e.key&&(Pt(e),n())}),Ct(o,e,"click",n),Ct(o,l,"click",()=>{at(t.play())}),Ct(o,c,"click",()=>{t.pause()});const p=()=>{if(o.closed)return;const e=t.i18n.get(t.playing?"Pause":"Play");o.closed||M(t)||(i.setAttribute("aria-label",e),l.style.display=t.playing?"none":"flex",c.style.display=t.playing?"flex":"none")};p();for(const r of["video:playing","video:pause","video:timeupdate"])t.on(r,p),o.add(()=>{t.off(r,p)});const f=function(t,e,r,n){let o=!1,i=0,a=0;const s=()=>{o=!1,e.classList.remove("art-mini-dragging"),e.style.transform=""};Ct(r,e,"mousedown",t=>{const e=t;0===e.button&&n()&&(o=!0,i=e.clientX,a=e.clientY)});const l=t=>{!r.closed&&o&&n()&&(e.classList.add("art-mini-dragging"),e.style.transform=`translate(${t.clientX-i}px, ${t.clientY-a}px)`)},c=()=>{if(r.closed||!o||!n())return;const i=e.getBoundingClientRect(),a=Rr(i.left,i.top,Or(e));s(),e.style.left=`${a.left}px`,e.style.top=`${a.top}px`,t.storage.set("left",a.left),r.closed||t.storage.set("top",a.top)};return t.on("document:mousemove",l),r.add(()=>{t.off("document:mousemove",l)}),t.on("document:mouseup",c),r.add(()=>{t.off("document:mouseup",c)}),r.add(s),s}(t,s,o,r);if(o.closed)return;if(t.template.$mini=s,a.body.append(s),!o.closed)return{element:s,cancelDrag:f,fresh:!0,focus:()=>e.focus({preventScroll:!0})}}catch(l){throw o.dispose(),t.template.$mini===s&&delete t.template.$mini,l}}function Ir(t){const{$player:e,$video:r}=t.template,n=P(t).child();let o,i,a=0,c=!1,d=!1;const u=()=>!M(t)&&e.classList.contains("art-mini"),p=function(t){const e=t.template.$player;let r;return{entering(){var n;const o=e.ownerDocument,i=o.activeElement,a=i&&e.contains(i);(null==(n=t.template.$mini)?void 0:n.contains(i))||(r=a?re(i):void 0);const s=a&&e.classList.contains("art-keyboard-focus");return e=>{!s||M(t)||o.activeElement!==i&&o.activeElement!==o.body||null==e||e()}},leaving(n){const o=e.ownerDocument,i=null==n?void 0:n.contains(o.activeElement);return()=>{var e;if(!i||M(t)||o.activeElement!==o.body&&!(null==n?void 0:n.contains(o.activeElement)))return;const a=r&&(null==(e=o.defaultView)?void 0:e.getComputedStyle(r).visibility);(null==r?void 0:r.isConnected)&&r.getClientRects().length&&"hidden"!==a&&"collapse"!==a&&"true"!==r.getAttribute("aria-disabled")&&!r.matches(":disabled")&&!r.closest("[inert]")?r.focus({preventScroll:!0}):It(t)}}}}(t);function f(){if(i){const e=i,r=a;i=void 0;try{zr(e)}catch(t){throw r!==a||i||(i=e),t}}}function h(){if(M(t))return;const r=++a;d=!1;const n=p.leaving(t.template.$mini);f(),M(t)||r!==a||(null==o||o.cancelDrag(),e.classList.remove("art-mini"),t.template.$mini&&(t.template.$mini.style.display="none",n(),M(t)||r!==a||t.emit("mini",!1)))}function m(){if(M(t))return;const v=++a;if(c)return void(d=!0);const g=p.entering();if(t.state="mini",!M(t)&&v===a){null!=i||(i=Mr(r)),e.classList.add("art-mini");try{if(!o){c=!0;try{o=Dr(t,n,u,h)}finally{c=!1}}if(d)return d=!1,void m();if(!o||M(t))return;if(v!==a)return void(u()||(o.element.style.display="none"));if(o.fresh?o.element.prepend(r):o.element.append(r),M(t)||v!==a)return;o.element.style.display=o.fresh?"":"flex",o.fresh=!1;const e=t.storage.get("top"),i=function(t,e,r){return"number"===typeof t&&Number.isFinite(t)&&"number"===typeof e&&Number.isFinite(e)&&t>=0&&e>=0&&t+r.width<=r.viewportWidth&&e+r.height<=r.viewportHeight?{left:t,top:e,reset:!1}:l(s({},Rr(r.viewportWidth-r.width-50,r.viewportHeight-r.height-50,r)),{reset:!0})}(t.storage.get("left"),e,Or(o.element));if(M(t)||v!==a)return;if(o.element.style.left=`${i.left}px`,o.element.style.top=`${i.top}px`,i.reset){if(t.storage.set("top",i.top),M(t)||v!==a)return;t.storage.set("left",i.left)}M(t)||v!==a||g(o.focus),M(t)||v!==a||t.emit("mini",!0)}catch(y){const r=d;throw d=!1,M(t)||v!==a&&!r||(f(),e.classList.remove("art-mini"),o&&(o.element.style.display="none")),y}}}return n.add(()=>{a++;try{f()}finally{null==o||o.cancelDrag(),e.classList.remove("art-mini")}}),{get:u,set(t){t?m():h()}}}const Nr=new WeakSet,_r=t=>"picture-in-picture"===t.webkitPresentationMode;function Wr(t){Nr.delete(t),t.removeEventListener("webkitpresentationmodechanged",Fr),t.removeEventListener("enterpictureinpicture",Fr)}function Fr(){var t;if(Nr.has(this)&&_r(this)){Wr(this);try{null==(t=this.webkitSetPresentationMode)||t.call(this,"inline")}catch(e){}}}function Vr(t){Nr.add(t),t.addEventListener("webkitpresentationmodechanged",Fr),t.addEventListener("enterpictureinpicture",Fr)}function Yr(t,e,r,n,o=!0){let i,a=!1;const s=e=>{t.closed||a||(o&&(a=!0,i()),n(e))};return e[o?"once":"on"](r,s),i=t.add(()=>{e.off(r,s)}),s}function Br(t,e,r){return new Promise((n,o)=>{var i;if(M(t)||e===t.url)return void n();const a=null!=(i=function(t){const e=ae.get(t);return(null==e?void 0:e.active())?e.resumePlaying:void 0}(t))?i:t.playing,s=pe(t);s.resumePlaying=a;const l=s.scope.child();let d=!1;const u=(t=!1,e)=>{d||(d=!0,s.resumePlaying=void 0,s.onError=void 0,s.onAssigned=void 0,l.dispose(),t?o(e):n(),t&&s.scope.dispose())};l.add(()=>{u()});const p=()=>!d&&s.active(),f=t=>u(!0,t);s.onError=f;try{const{aspectRatio:n,playbackRate:o}=t;s.internalPause=!0;try{t.pause()}finally{s.internalPause=!1}if(!p())return;const i=l.child();let a=!1,d=!1,h=!1;const m=$e(t,r,p),v=()=>c(null,null,function*(){const e=s.pauseRevision;if(t.aspectRatio=n,p()){if(s.resumePlaying)try{yield t.play()}catch(r){}p()&&(s.pauseRevision===e&&(t.notice.show=""),u())}}),g=()=>{var e,r;if(p()&&!d&&a)try{if(null==(r=null==(e=t.template)?void 0:e.$video)?void 0:r.seeking)return;if(!p())return;if(h||(h=!0,t.playbackRate=o),!m.ready()||!p()||d)return;d=!0,i.dispose(),v().catch(f)}catch(n){f(n)}},y={"video:error":f,"video:loadedmetadata":()=>{if(p())try{m.restore()}catch(t){f(t)}},"video:canplay":()=>{a=!0,g()},"video:seeked":g,seek:m.manual},b=l.child(),w=[],x=Object.keys(y);for(const e of x)Yr(b,t,e,t=>{s.acceptingEvents&&w.push([e,t])},!1);if(he(t,s,e),!p())return;if(t.notice.show="",!p())return;const k=()=>{if(b.dispose(),!e)return void u();const r={};for(const e of x)r[e]=Yr(i,t,e,y[e],"video:seeked"!==e);for(const[t,e]of w){if(!p()||i.closed)break;r[t](e)}w.length=0};s.assigned?k():s.onAssigned=k}catch(h){f(h)}})}function Hr(t){const{option:e,template:{$video:r}}=t;vt(t,"url",{get:()=>r.src,set(n){return c(this,null,function*(){if(M(t))return;const o=function(t){const e=se.get(t);return se.delete(t),e||pe(t)}(t);o.acceptingEvents=!1;try{if(!n)return void((yield Tt(o.scope))&&o.active()&&(t.loading.show=!0));const i=t.url,a=e.type||st(n),s=e.customType[a];if(a&&s){if(!(yield Tt(o.scope))||!o.active())return;t.loading.show=!0}if(!o.active())return;const l=o.scope.child();let c=!1,d=!1;Yr(l,t,"video:canplay",()=>{c=!d}),Yr(l,t,"video:error",()=>{d=!0});try{if(o.acceptingEvents=!0,a&&s){const e=s.call(t,r,n,t);Promise.resolve(e).catch(t=>me(o,t))}else{if(!o.active())return;r.src=n}}finally{l.dispose()}if(!o.active())return;if(i!==t.url&&(t.option.url=n,o.active()&&t.isReady&&i)){const e=()=>{o.active()&&t.emit("restart",n)};c?e():d||Yr(o.scope,t,"video:canplay",e)}}catch(i){me(o,i)}finally{fe(o)}})}})}const jr=[function(t){const{template:{$video:e}}=t;vt(t,"attr",{value(t,r){const n=e;if(void 0===r)return n[t];n[t]=r}})},function(t){const{i18n:e,notice:r,option:n,constructor:{instances:o},template:{$video:i}}=t;vt(t,"play",{value(){return c(this,null,function*(){ce(t,!0);const a=function(t){const e=ue(t),r=ae.get(t),n=null==r?void 0:r.pauseRevision;return()=>e()&&(null==r?void 0:r.pauseRevision)===n}(t),s=yield i.play();if(!a())return s;const l=e.get("Play");if(!a())return s;if(r.show=l,!a())return s;if(t.emit("play"),n.mutex)for(let e=0;et.playing?t.pause():t.play()})},function(t){const{notice:e}=t;vt(t,"seek",{set(r){t.currentTime=r,t.duration&&(e.show=`${ut(t.currentTime)} / ${ut(t.duration)}`),t.emit("seek",t.currentTime,r)}});const r=t;vt(t,"forward",{set(e){r.seek=t.currentTime+e}}),vt(t,"backward",{set(e){r.seek=t.currentTime-e}})},function(t){const{template:{$video:e},i18n:r,notice:n,storage:o}=t;vt(t,"volume",{get:()=>e.volume||0,set:t=>{e.volume=ct(t,0,1),n.show=`${r.get("Volume")}: ${Number.parseInt(String(100*e.volume),10)}`,0!==e.volume&&o.set("volume",e.volume)}}),vt(t,"muted",{get:()=>e.muted,set:r=>{e.muted=r,t.emit("muted",r)}})},function(t){const{$video:e}=t.template;vt(t,"currentTime",{get:()=>e.currentTime||0,set:r=>{const n=Number.parseFloat(r);Number.isNaN(n)||(!function(t){xe.set(t,ke(t)+1)}(t),e.currentTime=ct(n,0,t.duration))}})},function(t){vt(t,"duration",{get:()=>{const{duration:e}=t.template.$video;return e===1/0?0:e||0}})},function(t){const e=e=>Br(t,e,0);vt(t,"switchQuality",{value:e=>Br(t,e,t.currentTime)}),vt(t,"switchUrl",{value:e}),vt(t,"switch",{set:e})},function(t){const{template:{$video:e},i18n:r,notice:n}=t,o=t;vt(t,"playbackRate",{get:()=>e.playbackRate,set(t){if(t){if(t===e.playbackRate)return;e.playbackRate=t,n.show=`${r.get("Rate")}: ${1===t?r.get("Normal"):`${t}x`}`}else o.playbackRate=1}})},function(t){const{i18n:e,notice:r,template:{$video:n,$player:o}}=t;vt(t,"aspectRatio",{get:()=>o.dataset.aspectRatio||"default",set(i){if(!M(t)){if(i||(i="default"),"default"===i)n.style.width="",n.style.height="",n.style.margin="",delete o.dataset.aspectRatio;else{const e=i.split(":").map(Number),r=ur({width:o.clientWidth,height:o.clientHeight},e[0]/e[1]);if(M(t))return;"width"===(null==r?void 0:r.axis)?(n.style.width=`${r.width}px`,n.style.height="100%",n.style.margin="0 auto"):r&&(n.style.width="100%",n.style.height=`${r.height}px`,n.style.margin="auto 0"),o.dataset.aspectRatio=i}r.show=`${e.get("Aspect Ratio")}: ${"default"===i?e.get("Default"):i}`,M(t)||t.emit("aspectRatio",i)}}})},function(t){const{notice:e,template:{$video:r}}=t,n=document.createElement("canvas");function o(o){const i=ue(t);return new Promise((a,s)=>{const l=r=>{try{!M(t)&&i()&&(e.show=r)}catch(n){return void s(n)}s(r)};try{!function(t,e){t.width=e.videoWidth,t.height=e.videoHeight;const r=t.getContext("2d");if(!r)throw new TypeError("Canvas 2D context is unavailable");r.drawImage(e,0,0)}(n,r),o?function(t,e,r){t.toBlob(t=>{try{if(!t)throw new Error("Unable to encode screenshot blob");e(URL.createObjectURL(t))}catch(n){r(n)}})}(n,a,l):a(n.toDataURL("image/png"))}catch(c){l(c)}})}vt(t,"getDataURL",{value:()=>o(!1)}),vt(t,"getBlobUrl",{value:()=>o(!0)}),vt(t,"screenshot",{value:e=>c(null,null,function*(){const n=ue(t),o=yield t.getDataURL();if(!M(t)&&n()){const i=e||`artplayer_${ut(r.currentTime)}`;!M(t)&&n()&<(o,`${i}.png`),!M(t)&&n()&&t.emit("screenshot",o)}return o})})},function(t){const{i18n:e,notice:r,template:{$video:n,$player:o}}=t,i=()=>{if(M(t))return;const i=function(t){const e=yr.raw,r=t.ownerDocument;if(e&&Reflect.get(r,e.fullscreenEnabled))return{document:r,target:t,get element(){return Reflect.get(r,e.fullscreenElement)},elementProperty:e.fullscreenElement,changeEvent:e.fullscreenchange,errorEvent:e.fullscreenerror,request:()=>br(t,e.requestFullscreen,void 0),exit:()=>br(r,e.exitFullscreen)}}(o);i?vt(t,"fullscreen",Er(t,i)):n.webkitSupportsFullscreen&&"function"===typeof n.webkitEnterFullscreen&&"function"===typeof n.webkitExitFullscreen?vt(t,"fullscreen",Pr(t)):vt(t,"fullscreen",{get:()=>!1,set(){M(t)||(r.show=e.get("Fullscreen Not Supported"))}}),vt(t,"fullscreen",bt(t,"fullscreen"))};t.once("video:loadedmetadata",i),P(t).add(()=>{t.off("video:loadedmetadata",i)})},function(t){const e=function(t){const{$player:e}=t.template;let r,n=0;function o(t,r){return null===t.style?e.removeAttribute("style"):e.setAttribute("style",t.style),!!r()&&(e.classList.remove("art-fullscreen-web"),!!r()&&(zr(t.placement),r()))}return P(t).add(()=>{var t;n+=1;const i=r;if(r=void 0,i)try{o(i,()=>!0)}catch(a){try{e.parentNode!==i.placement.parent&&(null==(t=e.parentNode)||t.removeChild(e))}catch(s){throw new A([a,s])}throw a}}),i=>{if(M(t))return;const a=++n,s=()=>a===n&&!M(t),l=function(t){var e;const r=null==(e=t.ownerDocument)?void 0:e.activeElement,n=r&&t.contains(r);return()=>{n&&r.isConnected&&t.contains(r)&&r.ownerDocument.activeElement===r.ownerDocument.body&&r.focus({preventScroll:!0})}}(e);if(i){r||(r={placement:Mr(e),style:e.getAttribute("style")});const n=r;try{const r=e.ownerDocument.body;if(t.constructor.FULLSCREEN_WEB_IN_BODY&&e.parentNode!==r&&r.appendChild(e),!s())return;if(t.state="fullscreenWeb",!s())return;e.style.width="100%",e.style.height="100%",e.classList.add("art-fullscreen-web")}catch(c){throw s()&&o(n,s)&&(r=void 0,l()),c}if(!s())return;if(l(),!s())return;t.emit("fullscreenWeb",!0)}else{if(r){if(!o(r,s))return;r=void 0}else e.classList.remove("art-fullscreen-web");if(!s())return;if(l(),!s())return;t.emit("fullscreenWeb",!1)}s()&&t.emit("resize")}}(t);vt(t,"fullscreenWeb",{get:()=>t.template.$player.classList.contains("art-fullscreen-web"),set:e})},function(t){const{i18n:e,notice:r,template:{$video:n}}=t,o=n.ownerDocument;o.pictureInPictureEnabled&&"function"===typeof n.requestPictureInPicture&&"function"===typeof o.exitPictureInPicture?vt(t,"pip",function(t){const{$video:e}=t.template,r=e.ownerDocument,n=P(t).child(),o=()=>r.pictureInPictureElement===e;let i=o(),a=i,s=!1,l=!1,c=0;function d(){if(o())try{r.exitPictureInPicture().catch(()=>{})}catch(t){}}function u(e,r,n){e.then(()=>{!r||!M(t)&&a||d()},e=>{M(t)||c!==n||(t.notice.show=e)}).finally(()=>{c===n&&(s=!1)}).catch(()=>{})}return e.disablePictureInPicture=!1,n.add(()=>{c++,a=!1,d()}),Ct(n,e,"enterpictureinpicture",()=>{if(l)return void d();if(!o()||i)return;const e=c;t.state="pip",!M(t)&&e===c&&o()&&(i=!0,t.emit("pip",!0))}),Ct(n,e,"leavepictureinpicture",()=>{i&&!o()&&(i=!1,t.emit("pip",!1))}),{get:()=>!M(t)&&o()?e:null,set(n){if(M(t))return;const i=++c;if(a=Boolean(n),a?l=!1:s&&(l=!0),s=!1,a){if(t.state="pip",M(t)||c!==i)return;s=!0;try{u(e.requestPictureInPicture(),!0,i)}catch(d){throw c===i&&(s=!1),d}}else o()&&u(r.exitPictureInPicture(),!1,i)}}}(t)):"function"===typeof n.webkitSupportsPresentationMode&&"function"===typeof n.webkitSetPresentationMode?vt(t,"pip",function(t){const{$video:e}=t.template,r=P(t).child();let n=!1,o=!1,i=0,a=0;function s(r=!1){if(M(t)||Nr.has(e))return;const s=_r(e);if(s&&(o=!1),s===n&&!r)return;const l=i;s&&(t.state="pip"),M(t)||i!==l||_r(e)!==s||(n=s,a++,t.emit("pip",s))}e.webkitSetPresentationMode("inline"),r.add(()=>{i++,o&&Vr(e),_r(e)&&e.webkitSetPresentationMode("inline")});for(const l of["webkitpresentationmodechanged","enterpictureinpicture","leavepictureinpicture"])Ct(r,e,l,()=>s());return{get:()=>!M(t)&&_r(e),set(r){var n;if(M(t))return;const l=++i,c=a;if(r){if(!1===(null==(n=e.webkitSupportsPresentationMode)?void 0:n.call(e,"picture-in-picture")))return void(t.notice.show=t.i18n.get("PIP Not Supported"));if(Wr(e),t.state="pip",M(t)||i!==l)return;o=!0;try{e.webkitSetPresentationMode("picture-in-picture")}catch(d){throw l===i&&(o=!1),d}}else o&&(o=!1,Vr(e)),_r(e)&&e.webkitSetPresentationMode("inline");M(t)||l!==i||c!==a||_r(e)!==Boolean(r)||s(!0)}}}(t)):vt(t,"pip",{get:()=>!1,set(){M(t)||(r.show=e.get("PIP Not Supported"))}})},function(t){const{$video:e}=t.template,r=t;vt(t,"loaded",{get:()=>r.loadedTime/e.duration}),vt(t,"loadedTime",{get:()=>e.buffered.length?e.buffered.end(e.buffered.length-1):0})},function(t){vt(t,"played",{get:()=>t.currentTime/t.duration})},function(t){const{$video:e}=t.template;vt(t,"playing",{get:()=>"boolean"===typeof e.playing?e.playing:!!(e.currentTime>0&&!e.paused&&!e.ended&&e.readyState>2)})},function(t){const{$container:e,$player:r,$video:n}=t.template;vt(t,"autoSize",{value(){if(M(t))return;const o={width:n.videoWidth,height:n.videoHeight};if(!dr(o))return;const i=Y(e),a=ur(i,o.width/o.height);a&&!M(t)&&("width"===a.axis?(r.style.width=a.width/i.width*100+"%",r.style.height="100%"):(r.style.width="100%",r.style.height=a.height/i.height*100+"%"),t.emit("autoSize",{width:t.width,height:t.height}))}})},function(t){const e=t;vt(t,"rect",{get:()=>Y(t.template.$player)});const r=["bottom","height","left","right","top","width"];for(let n=0;ne.rect[o]})}vt(t,"x",{get:()=>e.left+window.pageXOffset}),vt(t,"y",{get:()=>e.top+window.pageYOffset})},function(t){const{template:{$player:e},i18n:r,notice:n}=t;vt(t,"flip",{get:()=>e.dataset.flip||"normal",set(o){M(t)||(o||(o="normal"),"normal"===o?delete e.dataset.flip:e.dataset.flip=o,n.show=`${r.get("Video Flip")}: ${r.get(dt(o))}`,M(t)||t.emit("flip",o))}})},function(t){vt(t,"mini",Ir(t))},function(t){const{template:{$poster:e}}=t;vt(t,"poster",{get:()=>{try{return e.style.backgroundImage.match(/"(.*)"/)[1]}catch(t){return""}},set(t){et(e,"backgroundImage",`url(${t})`)}})},function(t){const{$container:e,$video:r}=t.template;vt(t,"autoHeight",{value(){if(M(t))return;const n=function(t,e){if(!Number.isFinite(t)||t<=0||!dr(e))return;const r=e.height*(t/e.width);return Number.isFinite(r)&&r>0?r:void 0}(e.clientWidth,{width:r.videoWidth,height:r.videoHeight});void 0===n||M(t)||(e.style.height=`${n}px`,t.emit("autoHeight",n))}})},function(t){const{$player:e}=t.template;vt(t,"cssVar",{value:(t,r)=>r?e.style.setProperty(t,r):getComputedStyle(e).getPropertyValue(t)})},function(t){vt(t,"theme",{get:()=>t.cssVar("--art-theme"),set(e){t.cssVar("--art-theme",e)}})},function(t){vt(t,"type",{get:()=>t.option.type,set(e){t.option.type=e}})},function(t){const e=["mini","pip","fullscreen","fullscreenWeb"];vt(t,"state",{get:()=>e.find(e=>t[e])||"standard",set(r){for(let n=0;nt.startTime<=n&&ni[e]===t)){for(const e of r)t.removeCue(e);for(const e of r)t.addCue(e)}}(n.$track.track,n.$video,s),t.subtitle.update(),e.show=`${r.get("Subtitle Offset")}: ${o}s`,t.emit("subtitleOffset",o)}})},function(t){if(M(t))return;const{i18n:e,notice:r,proxy:n,template:{$video:o}}=t;let i=!0;const a=window.WebKitPlaybackTargetAvailabilityEvent;if(M(t))return;const s=a&&o.webkitShowPlaybackTargetPicker;M(t)||(s?n(o,"webkitplaybacktargetavailabilitychanged",e=>{if(!M(t))switch(e.availability){case"available":i=!0;break;case"not-available":i=!1}}):i=!1,M(t)||vt(t,"airplay",{value(){if(!M(t))if(i){const e=o.webkitShowPlaybackTargetPicker;if(M(t))return;Reflect.apply(e,o,[]),M(t)||t.emit("airplay")}else{const n=e.get("AirPlay Not Available");M(t)||(r.show=n)}}}))},function(t){vt(t,"quality",{set(e){const{controls:r,notice:n,i18n:o}=t,i=e.find(t=>t.default)||e[0];r.update({name:"quality",position:"right",index:10,style:{marginRight:"10px"},html:(null==i?void 0:i.html)||"",selector:e,onSelect(e,r,i){return c(this,null,function*(){const r=function(t){return t&&Se.get(t)||(()=>!0)}(i);if(yield t.switchQuality(e.url),!M(t)&&r()){const i=`${o.get("Switch Video")}: ${e.html}`;!M(t)&&r()&&(n.show=i)}return e.html})}})}})},function(t){const{option:e,template:{$progress:r,$video:n}}=t;let o,i,a,l=P(t).child(),c=!1;function d(){const e=l;l=P(t).child(),o=void 0,c=!1,a=void 0,e.dispose()}function u(){const i=a,c=l;if(!i||!o)return;const d=()=>{var e;return!M(t)&&!c.closed&&l===c&&a===i&&i.sourceActive()&&(null==(e=t.controls)?void 0:e.thumbnails)===i.element};if(!d())return;const u=r.clientWidth*i.percentage;if(!(u>0&&ud-f/2?d-f+"px":u-f/2+"px"}}(e.thumbnails,{imageWidth:o.naturalWidth,videoWidth:n.videoWidth,videoHeight:n.videoHeight,progressWidth:r.clientWidth,position:u}));for(const[t,e]of Object.entries(p)){if(!d())return;et(i.element,t,e)}}Ve(t)("setBar",(r,n,s)=>{var p;const f=null==(p=t.controls)?void 0:p.thumbnails,{url:h,scale:m}=e.thumbnails;if(!M(t)&&f&&h&&("hover"===r||"played"===r&&s&&k)){if(i!==f){const t=D(f);if(t.closed)return;i=f,t.add(()=>{i===f&&(i=void 0,d())})}if(a={percentage:n,element:f,sourceActive:ue(t)},o)u();else if(!c){const t=l;c=!0,function(t,e,r){return nt(t,e,r)}(h,m,t).then(e=>{l!==t||t.closed||(c=!1,o=e,u())}).catch(e=>{l!==t||t.closed||(c=!1,console.warn("ArtPlayer thumbnail load failed:",e))})}}}),vt(t,"thumbnails",{get:()=>t.option.thumbnails,set:e=>{M(t)||!e.url||t.option.isLive||M(t)||(t.option.thumbnails=e,d())}})},function(t){!function(t){const{proxy:e,template:{$video:r}}=t;for(let n=0;n{M(t)||t.emit(`video:${e.type}`,e)})}(t);const e=hr(t);!function(t,e){pr(t,"video:canplay",()=>{e.reset(),fr(t,[["loading",!1]])}),pr(t,"video:canplay",()=>{fr(t,[["loading",!1],["controls",!0],["mask",!0]]),M(t)||(t.isReady=!0,t.emit("ready"))},!0)}(t,e),function(t){const{option:e}=t;pr(t,"video:ended",()=>{if(e.loop){const e=ue(t);if(t.seek=0,M(t)||!e())return;at(t.play()),e()&&fr(t,[["controls",!1],["mask",!1]],e)}else fr(t,[["controls",!0],["mask",!0]])})}(t),pr(t,"video:error",e.schedule),function(t,e){const{template:{$poster:r}}=t;pr(t,"video:loadedmetadata",()=>{t.emit("resize"),k&&fr(t,[["loading",!1],["controls",!0],["mask",!0]])}),pr(t,"video:loadstart",()=>{e.loadStart(),fr(t,[["loading",!0],["mask",!1],["controls",!0]])}),pr(t,"video:pause",()=>{fr(t,[["controls",!0],["mask",!0]])}),pr(t,"video:play",()=>{fr(t,[["mask",!1]]),M(t)||et(r,"display","none")}),pr(t,"video:playing",()=>fr(t,[["mask",!1]])),pr(t,"video:progress",()=>{t.playing&&fr(t,[["loading",!1]])}),pr(t,"video:seeked",()=>fr(t,[["loading",!1],["mask",!0]])),pr(t,"video:seeking",()=>fr(t,[["loading",!0],["mask",!1]])),pr(t,"video:timeupdate",()=>fr(t,[["mask",!1]])),pr(t,"video:waiting",()=>fr(t,[["loading",!0],["mask",!1]]))}(t,e)},function(t){if(M(t))return;const{option:e,storage:r,template:{$video:n,$poster:o}}=t;for(const s in e.moreVideoAttr){if(M(t))return;const r=e.moreVideoAttr[s];if(M(t))return;t.attr(s,r)}if(M(t))return;if(e.muted){const r=e.muted;if(M(t))return;t.muted=r}if(M(t))return;if(e.volume){const r=ct(e.volume,0,1);if(M(t))return;n.volume=r}if(M(t))return;const i=r.get("volume");if(M(t))return;if("number"===typeof i&&(n.volume=ct(i,0,1)),M(t))return;if(e.poster){const r=`url(${e.poster})`;if(M(t))return;et(o,"backgroundImage",r)}if(M(t))return;if(e.autoplay){const r=e.autoplay;if(M(t))return;n.autoplay=r}if(M(t))return;if(e.playsInline){if(M(t))return;if(n.playsInline=!0,M(t))return;n["webkit-playsinline"]=!0}if(M(t))return;if(e.theme){const r=e.cssVar,n=e.theme;if(M(t))return;r["--art-theme"]=n}for(const s in e.cssVar){if(M(t))return;const r=e.cssVar[s];if(M(t))return;t.cssVar(s,r)}if(M(t))return;const a=e.url;M(t)||(t.url=a)}];class qr{constructor(t){if(!M(t)){Hr(t);for(const e of jr){if(M(t))return;e(t)}}}}const Ur=new WeakMap,Xr="art-auto-orientation-fullscreen";function Gr(t){if(Ur.get(t.orientation)===t)try{t.orientation.unlock()}catch(e){}}const Kr="art-auto-orientation",Zr=["width","height","transform-origin","transform"];function Jr(t){const{$player:e,$video:r}=t.template,n=()=>{const t={width:r.videoWidth,height:r.videoHeight},n=e.ownerDocument.documentElement,o={width:n.clientWidth,height:n.clientHeight};return dr(t)&&dr(o)&&(t.width>t.height&&o.widtho.height)},o=function(t,e){const{$player:r}=t.template,n=P(t);let o,i=()=>{};function a(){i(),i=()=>{};const e=o;if(o=void 0,e&&t.fullscreenWeb)for(const{name:t,value:o,priority:i}of e)r.style.setProperty(t,o,i);const n=r.classList.contains(Kr);r.classList.remove(Kr),n&&(t.isRotate=!1,M(t)||t.emit("resize"))}function s(n){if(!t.fullscreenWeb||!e())return;const i=B();if(M(t)||!t.fullscreenWeb)return;const a=r.ownerDocument.documentElement;null!=o||(o=Zr.map(t=>({name:t,value:r.style.getPropertyValue(t),priority:r.style.getPropertyPriority(t)}))),r.style.width=a.clientHeight-i.top-i.bottom+"px",r.style.height=a.clientWidth-i.left-i.right+"px",r.style.transformOrigin="0 0",r.style.transform=`rotate(90deg) translate(${i.top}px, -${a.clientWidth-i.right}px)`,r.classList.add(Kr),t.isRotate=!0,n&&t.emit("resize")}return n.add(a),r=>{var l;M(t)||(r?o?s(!1):e()&&(i(),i=St(n,()=>{o||s(!0)},Number(null!=(l=t.constructor.AUTO_ORIENTATION_TIME)?l:0))):a())}}(t,n),i=function(t,e){const{$player:r}=t.template;let n;function o(){const t=n;n=void 0,r.classList.remove(Xr),t&&(t.cancelled=!0,Gr(t),t.settled&&Ur.get(t.orientation)===t&&Ur.delete(t.orientation))}return P(t).add(o),i=>{var a,s;if(M(t))return;if(!i)return void o();if(n&&!n.cancelled&&Ur.get(n.orientation)===n)return;const l=null==(s=null==(a=r.ownerDocument.defaultView)?void 0:a.screen)?void 0:s.orientation;if("function"!==typeof(null==l?void 0:l.lock)||"function"!==typeof l.unlock||!e())return;const c={orientation:l,cancelled:!1,settled:!1};n=c,Ur.set(l,c);const d=()=>!M(t)&&!c.cancelled&&n===c&&Ur.get(l)===c,u=e=>{c.settled=!0;const o=d();Ur.get(l)===c&&Ur.delete(l),n===c&&(n=void 0),o&&(r.classList.remove(Xr),t.notice.show=e)};try{const t=l.lock(l.type.startsWith("portrait")?"landscape":"portrait");Promise.resolve(t).then(()=>{c.settled=!0,d()?r.classList.add(Xr):(Gr(c),Ur.get(l)===c&&Ur.delete(l))}).catch(u)}catch(p){u(p)}}}(t,n);return t.on("fullscreenWeb",o),t.on("fullscreen",i),P(t).add(()=>{t.off("fullscreenWeb",o),t.off("fullscreen",i)}),{name:"autoOrientation",get state(){return e.classList.contains("art-auto-orientation")}}}function Qr(t){return t.get("times")||{}}function tn(t){const{storage:e}=t,r=function(t){const{i18n:e,icons:r,storage:n,constructor:o,template:{$poster:i}}=t,a=t.layers.add({name:"auto-playback",html:'\n
\n
\n
\n '});if(!a||M(t))return()=>{};const s=Ot(".art-auto-playback-last",a),l=Ot(".art-auto-playback-jump",a),c=Ot(".art-auto-playback-close",a);Rt(c,r.close);const d=D(a);let u,p=0;const f=()=>{const r=++p;if(null==u||u.dispose(),d.closed||M(t)||p!==r)return;const f=d.child();u=f;const h=()=>u===f&&!f.closed&&!M(t);f.add(()=>{u===f&&(u=void 0,et(a,"display","none"))});const m=de(t).add(()=>{f.dispose()});f.add(()=>{m()});const v=Qr(n)[t.option.id||t.option.url];if(!h())return;if(et(a,"display","none"),!h()||!v||!(v>=o.AUTO_PLAYBACK_MIN))return;if(!h())return;if(et(a,"display","flex"),!h())return;const g=`${e.get("Last Seen")} ${ut(v)}`;if(!h())return;if(s.textContent=g,!h())return;const y=e.get("Jump Play");if(!h())return;if(l.textContent=y,!h())return;const b=(e,r)=>{const n=t.events.proxy(e,"click",()=>{h()&&r()});f.add(()=>{t.events.remove(n)})};if(b(c,()=>{et(a,"display","none")}),!h())return;if(b(l,()=>{t.seek=v,h()&&(at(t.play()),h()&&(et(i,"display","none"),h()&&et(a,"display","none")))}),!h())return;let w=()=>{},x=!1;const k=()=>{!x&&h()&&(x=!0,w(),St(f,()=>{h()&&et(a,"display","none")},o.AUTO_PLAYBACK_TIMEOUT))};t.on("video:timeupdate",k),w=f.add(()=>{t.off("video:timeupdate",k)}),x&&w()};return()=>{N(t,a,"ready",f),N(t,a,"restart",f)}}(t);return function(t){const{storage:e,constructor:r}=t;Ve(t)("video:timeupdate",()=>{if(!t.playing)return;const n=Qr(e),o=Object.keys(n),i=r.AUTO_PLAYBACK_MAX,a=t.option.id||t.option.url,s=t.currentTime;M(t)||(o.length>i&&delete n[o[0]],n[a]=s,M(t)||e.set("times",n))})}(t),r(),{name:"auto-playback",get times(){return Qr(e)},clear:()=>e.del("times"),delete(t){const r=Qr(e);return delete r[t],e.set("times",r),r}}}function en(t){let e,r=0;return{start:n=>{const o=++r;if(null==e||e.scope.dispose(),o!==r||M(t)||1!==n.touches.length||!t.playing||t.isLock)return;const i={scope:de(t).child(),active:!1,previousRate:1};e=i,i.scope.add(()=>{if(e===i&&(e=void 0,i.active))try{t.playbackRate=i.previousRate}finally{(null==e?void 0:e.active)||q(t.template.$player,"art-fast-forward")}}),St(i.scope,()=>{if(e!==i||M(t)||!t.playing||t.isLock)i.scope.dispose();else try{if(i.previousRate=t.playbackRate,e!==i||i.scope.closed)return;i.active=!0;const r=t.constructor.FAST_FORWARD_VALUE;if(e!==i||i.scope.closed||M(t))return;t.playbackRate=r,e!==i||i.scope.closed||M(t)||j(t.template.$player,"art-fast-forward")}catch(r){try{i.scope.dispose()}catch(n){console.warn("Failed to restore fast-forward playback rate:",n)}throw r}},t.constructor.FAST_FORWARD_TIME)},stop:()=>{r++,null==e||e.scope.dispose()}}}function rn(t){const{proxy:e,template:{$player:r,$video:n}}=t,o=en(t),i=Ve(t);return e(n,"touchstart",t=>o.start(t)),e(n,"touchcancel",o.stop),i("document:touchmove",o.stop),i("document:touchend",o.stop),i("document:touchcancel",o.stop),i("video:pause",o.stop),i("destroy",o.stop),i("lock",t=>{t&&o.stop()}),{name:"fastForward",get state(){return U(r,"art-fast-forward")}}}function nn(t,e,r,n){let o;const i=()=>!r.closed&&!M(t),a=t.i18n.get("Lock");if(!i())return()=>{};e.setAttribute("aria-label",a),zt(r,e),Ct(r,e,"keydown",t=>{const r=t;i()&&n()&&Mt(r)&&!r.defaultPrevented&&"Escape"===r.key&&(Pt(r),e.click())});const s=n=>{if(i())if(e.setAttribute("aria-pressed",String(n)),n&&!o){const{$player:n,$bottom:a}=t.template,s=a.contains(a.ownerDocument.activeElement)&&n.classList.contains("art-keyboard-focus");o=r.child(),function(t,e){const r=new Map,n=e.hasAttribute("inert"),o=e.getAttribute("aria-hidden"),i=(t,e)=>{"-1"===t.getAttribute("tabindex")&&(null===e?t.removeAttribute("tabindex"):t.setAttribute("tabindex",e))};if(t.add(()=>{for(const[t,e]of r)i(t,e);r.clear(),n||""!==e.getAttribute("inert")||e.removeAttribute("inert"),"true"===e.getAttribute("aria-hidden")&&(null===o?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden",o))}),t.closed)return;n||e.setAttribute("inert",""),e.setAttribute("aria-hidden","true");const a=()=>{if(!t.closed){for(const[t,n]of r)e.contains(t)||(i(t,n),r.delete(t));for(const t of e.querySelectorAll("[tabindex],button,input,select,textarea,a[href],[contenteditable]"))r.has(t)||(r.set(t,t.getAttribute("tabindex")),t.setAttribute("tabindex","-1"))}};if(a(),"undefined"!==typeof MutationObserver){const r=new MutationObserver(a);r.observe(e,{childList:!0,subtree:!0}),t.add(()=>{r.disconnect()})}}(o,a),i()&&s&&e.focus({preventScroll:!0})}else if(!n&&o){const t=o;o=void 0,t.dispose()}};return s(n()),s}function on(t){const{layers:e,icons:r,template:{$player:n}}=t;function o(){return U(n,"art-lock")}function i(){M(t)||(j(n,"art-lock"),M(t)||(t.isLock=!0,M(t)||t.emit("lock",!0)))}function a(){M(t)||(q(n,"art-lock"),M(t)||(t.isLock=!1,M(t)||t.emit("lock",!1)))}return e.add({name:"lock",mounted(e){const n=D(e);if(n.closed||M(t))return;const i=Rt(e,r.lock);if(n.closed||M(t))return;const a=Rt(e,r.unlock);if(n.closed||M(t))return;const s=nn(t,e,n,o);n.closed||M(t)||(o()?(et(i,"display","inline-flex"),n.closed||M(t)||et(a,"display","none")):et(i,"display","none"),N(t,e,"lock",e=>{M(t)||(et(i,"display",e?"inline-flex":"none"),n.closed||M(t)||et(a,"display",e?"none":"inline-flex"),n.closed||M(t)||s(e))}))},click(){o()?a():i()}}),{name:"lock",get state(){return o()},set state(t){t?i():a()}}}function an(t){return Ve(t)("control",e=>{e?q(t.template.$player,"art-mini-progress-bar"):j(t.template.$player,"art-mini-progress-bar")}),{name:"mini-progress-bar"}}class sn{constructor(t){this.art=t,this.id=0;const{option:e}=t;!function(t,e){M(t.art)||!e.miniProgressBar||e.isLive||t.add(an),!M(t.art)&&e.lock&&k&&t.add(on),M(t.art)||!e.autoPlayback||e.isLive||t.add(tn),!M(t.art)&&e.autoOrientation&&k&&t.add(Jr),!M(t.art)&&e.fastForward&&k&&!e.isLive&&t.add(rn)}(this,e);for(let r=0;rconsole.warn("Failed to initialize ArtPlayer plugin:",t))}}add(t){it(!M(this.art),"Cannot add a plugin after ArtPlayer is destroyed"),this.id+=1;const e=t.call(this.art,this.art);return e instanceof Promise?e.then(e=>this.next(t,e)):this.next(t,e)}next(t,e){return function(t,e,r){if(M(t.art))return t;const n=r&&r.name||e.name||`plugin${t.id}`;if(M(t.art))return t;let o=n;const i=yt(t,o);if(M(t.art))return t;const a=`Cannot add a plugin that already has the same name: ${n}`;return M(t.art)||(it(!i,a),("object"===typeof n&&null!==n||"function"===typeof n)&&(o=Reflect.ownKeys({[o]:void 0})[0]),M(t.art)||vt(t,o,{value:r})),t}(this,t,e)}}const ln=new WeakMap;function cn(t){return!t.closed&&!ln.get(t)}function dn(t){ln.set(t,(ln.get(t)||0)+1);let e=!0;return()=>{if(!e)return;e=!1;const r=(ln.get(t)||1)-1;r?ln.set(t,r):ln.delete(t)}}const un=new WeakMap,pn=new WeakMap,fn=["$parent","$parents","$option","$events","$formatted"];function hn(t){var e,r;const n=new Set;let o=t;for(;o&&!n.has(o);){n.add(o);const t=un.get(o);if(!t||!t.owner.active||(null==(e=t.owner.scope)?void 0:e.closed)||!t.option.includes(o))return!1;if(!t.parent)return t.owner.root===t.option;if((null==(r=un.get(t.parent))?void 0:r.owner)!==t.owner)return!1;o=t.parent}return!1}function mn(t){let e=t;for(;e;){const r=Object.getOwnPropertyDescriptor(e,"name");if(r)return"set"in r?"function"===typeof r.set:Boolean(r.writable&&(e===t||Object.isExtensible(t)));e=Object.getPrototypeOf(e)}return Object.isExtensible(t)}function vn(t){const e=un.get(t);if(!e)throw new Error("Setting item has not been formatted");return e}function gn(t,e){var r;for(let n=0;n{c&&c!==r&&c.dispose()},()=>En(t,o)])try{e()}catch(d){d instanceof A?l.push(...d.errors):l.push(d)}if(r.closed||M(t)||(o.push(...i.splice(0)),$n.set(r,o),xn.set(e,r),kn.set(e,n)),a(),l.length)throw new A(l)},dispose(){if(s){s=!1;try{r.dispose()}finally{a()}}}}}function Ln(t,e,r,n,o,i){const a=i||Cn(e);if(!cn(a)||M(t))return;const s=t.proxy(r,n,e=>{if(cn(a)&&!M(t))try{return o(e)}catch(r){console.warn("ArtPlayer setting callback failed:",r)}});!cn(a)||M(t)?t.events.remove(s):(vn(e).events.push(s),i&&i!==xn.get(e)&&i.add(()=>{const r=vn(e).events,n=r.indexOf(s);n>=0&&(r.splice(n,1),t.events.remove(s))}))}function Pn(t,e,r,n){const o=Cn(e);if(!cn(o)||M(t))return;const i=(...e)=>{if(cn(o)&&!M(t))return n(...e)};t.on(r,i),o.add(()=>{t.off(r,i)})}const Mn='[tabindex="0"],button,input,select,textarea,a[href],[contenteditable]';function zn(t){var e;if(!t.isConnected||t.matches(":disabled")||t.closest("[inert]")||"true"===t.getAttribute("aria-disabled")||!t.getClientRects().length)return!1;const r=null==(e=t.ownerDocument.defaultView)?void 0:e.getComputedStyle(t).visibility;return"hidden"!==r&&"collapse"!==r}function Rn(t){return Array.from(t.querySelectorAll(Mn)).filter(t=>"-1"!==t.getAttribute("tabindex")&&zn(t))}function On(t,e,r=!1){if(!t.show||M(t.art)||!t.active)return;const n=t.cache.get(t.active);if(!n||!cn(bn(n)))return;const o=function(t,e,r=!1){if(e&&e!==t&&t.contains(e)&&e.matches(Mn)&&"-1"!==e.getAttribute("tabindex")&&zn(e))return e;const n=Rn(t),o=t.querySelector(".art-setting-item.art-current");return n.find(t=>null==e?void 0:e.contains(t))||(r?n[n.length-1]:n.find(t=>null==o?void 0:o.contains(t))||n.find(t=>!t.classList.contains("art-setting-item-back"))||n[0])}(n,e,r);null==o||o.focus({preventScroll:!0}),M(t.art)||null==o||o.scrollIntoView({block:"nearest",inline:"nearest"})}function Dn(t){const e=t.$parent.ownerDocument,r=e.activeElement,n=t.$parent.contains(r);return o=>{n&&!M(t.art)&&(e.activeElement===e.body||e.activeElement===r&&!(null==r?void 0:r.getClientRects().length))&&On(t,o)}}function In(t){const{art:e}=t,r=P(e).child();if(r.closed)return;const n=()=>t.$parent.ownerDocument;let o=!1;const i=()=>{t.show=!1,r.closed||M(e)||t.render()},a=i=>{r.closed||M(e)||(i?n().activeElement===e.controls.setting&&e.template.$player.classList.contains("art-keyboard-focus")&&On(t,void 0,o):t.$parent.contains(n().activeElement)&&function(t){const{art:e,$parent:r}=t,n=e.template.$player,o=r.ownerDocument,i=e.controls.setting;!M(e)&&r.contains(o.activeElement)&&(i&&n.contains(i)&&zn(i)&&i.focus({preventScroll:!0}),(o.activeElement===o.body||r.contains(o.activeElement))&&It(e))}(t))};e.on("setting",a),r.add(()=>{e.off("setting",a)}),Ct(r,e.template.$player,"keydown",r=>{var n,a;const s=r;if(!Mt(s)||s.defaultPrevented||M(e))return;const l=s.target;if(l===e.controls.setting){if("ArrowDown"===s.key||"ArrowUp"===s.key)if(Pt(s),t.show)On(t,void 0,"ArrowUp"===s.key);else{o="ArrowUp"===s.key;try{t.show=!0}finally{o=!1}}else"Escape"===s.key&&t.show&&(Pt(s),i());return}if(!t.show||!t.$parent.contains(l))return;if("Escape"===s.key)return Pt(s),void i();if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"].includes(s.key))return;const c=l.closest(".art-setting-item");if(!c||l!==c&&!l.matches('button,a[href],[role="button"]'))return;const d=t.active&&t.cache.get(t.active);if(!d)return;const u=null==(n=t.active)?void 0:n.find(t=>t.$item===c);if(!cn(bn(d))||u&&!cn(Cn(u)))return void Pt(s);const p=Rn(d),f=p.indexOf(l);if(f<0)return;let h;switch(s.key){case"ArrowDown":h=Math.min(f+1,p.length-1);break;case"ArrowUp":h=Math.max(f-1,0);break;case"Home":h=0;break;case"End":h=p.length-1;break;case"ArrowLeft":{const t=d.querySelector(".art-setting-item-back");return Pt(s),void(null==t||t.click())}case"ArrowRight":return Pt(s),void((null==(a=null==u?void 0:u.selector)?void 0:a.length)&&l.click());default:return}Pt(s),void 0!==h&&On(t,p[h])});let s=!1;Ct(r,t.$parent,"focusout",o=>{const a=o.relatedTarget;a&&(t.$parent.contains(a)||a===e.controls.setting)||s||(s=!0,St(r,()=>{s=!1,r.closed||M(e)||!t.show||t.$parent.contains(n().activeElement)||n().activeElement===e.controls.setting||i()},0))})}function Nn(t){var e,r;const{art:n,active:o}=t,{controls:i,constructor:{SETTING_WIDTH:a,SETTING_ITEM_HEIGHT:s},template:{$player:l,$setting:c,$bottom:d}}=n;if(!i.setting||!t.show||!o)return;const u=l.getBoundingClientRect(),p=i.setting.getBoundingClientRect(),f=u.width/l.offsetWidth||1,h=(p.left-u.left+p.width/2)/f-l.clientLeft,m=function(t){const{containerWidth:e,containerHeight:r,requestedWidth:n,rows:o,rowHeight:i,controlCenter:a,bottom:s,padding:l}=t,c=Math.min(Math.max(0,l),Math.max(0,e/2)),d=Math.min(Math.max(0,n),Math.max(0,e-2*c));return{width:d,height:Math.min(Math.max(0,o*i),Math.max(0,r-s-c)),left:Math.max(c,Math.min(a-d/2,e-c-d))}}({containerWidth:l.clientWidth,containerHeight:l.clientHeight,requestedWidth:(null==(r=null==(e=o[0])?void 0:e.$parent)?void 0:r.width)||a,rows:o.length+(o===t.option?0:1),rowHeight:s,controlCenter:h,bottom:Number.parseFloat(getComputedStyle(c).bottom)||0,padding:Number.parseFloat(getComputedStyle(d).paddingLeft)||0});c.style.height=`${m.height}px`,c.style.width=`${m.width}px`,n.isRotate||k||(h+m.width/2>l.clientWidth?(c.style.left="",c.style.right=""):(c.style.left=`${m.left}px`,c.style.right="auto"))}const _n=new WeakMap;function Wn(t){_n.delete(t)}const Fn=new WeakMap;function Vn(t,e){e?Fn.set(t,e):Fn.delete(t)}function Yn(t){var e;const r=new Map(Reflect.ownKeys(t).map(e=>[e,Object.getOwnPropertyDescriptor(t,e)])),n=[],o=Fn.get(t),i=null==o?void 0:o();for(const a of["html","icon","tooltip"]){const t=null==(e=r.get(a))?void 0:e.value;t instanceof Node&&n.push({node:t,parent:t.parentNode,next:t.nextSibling})}return()=>{var e,a;for(const n of Reflect.ownKeys(t))!r.has(n)&&(null==(e=Object.getOwnPropertyDescriptor(t,n))?void 0:e.configurable)&&Reflect.deleteProperty(t,n);for(const[n,o]of r)Object.defineProperty(t,n,o);null==i||i(),Vn(t,o);for(const{node:t,parent:r,next:o}of n)r?r.insertBefore(t,(null==o?void 0:o.parentNode)===r?o:null):null==(a=t.parentNode)||a.removeChild(t)}}function Bn(t){var e,r;const n=null==(e=t.$item)?void 0:e.querySelector(".art-setting-range");n&&n.setAttribute("aria-label",(null==(r=t.$html)?void 0:r.textContent)||"")}const Hn=new WeakMap;function jn(t,e,r,n,o,i,a,s){return c(this,null,function*(){try{const l=Cn(e),c=Cn(i),d=(Hn.get(i)||0)+1;Hn.set(i,d);const u=()=>cn(l)&&cn(c)&&!M(t.art)&&Hn.get(i)===d;if(null==s||s(),!u())return;const p=yield o.call(t.art,e,r,n);u()&&Reflect.set(i,a,p)}catch(l){console.warn("ArtPlayer setting callback failed:",l)}})}function qn(t){const e=[];return function t(r){const n=Array.from(r.childNodes);e.push({node:r,children:n,attributes:1===r.nodeType?Array.from(r.attributes,t=>[t.name,t.value]):void 0,value:r.nodeValue}),n.forEach(t)}(t),()=>{for(const{node:t,children:r,attributes:n,value:o}of e){for(;t.firstChild;)t.removeChild(t.firstChild);for(const e of r)t.appendChild(e);if(n){const e=t;for(const t of Array.from(e.attributes))e.removeAttribute(t.name);for(const[t,r]of n)e.setAttribute(t,r)}else t.nodeValue=o}}}const Un=new WeakMap;function Xn(t){const e=[];for(const n of t)try{n()}catch(r){r instanceof A?e.push(...r.errors):e.push(r)}if(e.length)throw new A(e)}function Gn(t){var e;null==(e=Un.get(t))||e()}function Kn(t,e){const r=t.find(e.name);if(M(t.art))return r||e;if(!r)return t.add(e);const n=Dn(t);Wn(r),Gn(r);const o=Yn(r),i=r.$item,a=null==i?void 0:i.parentNode,s=null==i?void 0:i.nextSibling,l=i?qn(i):void 0,c=t.active,d=["height","width","left","right"].map(e=>[e,t.$parent.style.getPropertyValue(e),t.$parent.style.getPropertyPriority(e)]),u=function(t,e){const r=new Set,n=new Set,o=e=>{if(!r.has(e)&&(r.add(e),e.selector)){const r=t.cache.get(e.selector);r&&n.add(r),e.selector.forEach(o)}};o(e);const i=[],a=[];try{for(const e of r){const r=Tn(t.art,e);r&&i.push(r)}for(const t of n)a.push(dn(bn(t)))}catch(l){try{Xn([...i.reverse().map(t=>t.resume),...a])}catch(c){console.warn("ArtPlayer setting restore failed:",c)}throw l}let s=!0;return{items:r,resume(){s&&(s=!1,Xn([...i.reverse().map(t=>t.resume),...a]))},dispose(){s&&(s=!1,Xn([...i.reverse().map(t=>t.dispose),...Array.from(n).reverse().map(t=>()=>wn(t)),...a]))}}}(t,r);let p=!0,f=!1;const h=()=>{if(!p)return;p=!1;for(const t of u.items)Un.get(t)===h&&Un.delete(t);if(M(t.art))return void u.dispose();const e=r.$item;try{Xn([u.resume,()=>{e&&e!==i&&e.remove()},o,()=>null==l?void 0:l(),()=>{a&&i&&a.insertBefore(i,(null==s?void 0:s.parentNode)===a?s:null)},()=>t.format(),()=>{if(f){t.active=c,c&&t.cache.has(c)&&K(t.cache.get(c),"art-current");for(const[e,r,n]of d)t.$parent.style.setProperty(e,r,n)}}]),n(i)}catch(m){console.warn("ArtPlayer setting restore failed:",m)}},m=()=>p&&!M(t.art)&&Un.get(r)===h;for(const y of u.items)Un.set(y,h);const v=P(t.art).add(()=>{p=!1;for(const t of u.items)Un.get(t)===h&&Un.delete(t);u.dispose()});try{if(function(t,e,r){for(const n of Reflect.ownKeys(e)){if(!r())return;const o=Object.getOwnPropertyDescriptor(e,n);if(!(null==o?void 0:o.enumerable)||!r())continue;const i=Reflect.get(e,n);if(!r())return;if(!Reflect.set(t,n,i))throw new TypeError(`Cannot assign setting item property [${String(n)}]`)}}(r,e,m),!m())return r;if(t.format(),!m())return r;if(t.createItem(r,!0),!m())return r;if(f=!0,t.render(),!m())return r;p=!1;for(const t of u.items)Un.get(t)===h&&Un.delete(t);return u.dispose(),n(r.$item),r}catch(g){throw m()&&h(),g}finally{v()}}const Zn=new WeakMap;function Jn(t,e,r){vt(t,`$${e}`,{configurable:!0,get:()=>r}),vt(t,e,{configurable:!0,get:()=>r.innerHTML,set(n){r.innerHTML="",X(r,n),"html"===e&&Bn(t)}})}function Qn(t,e,r=!1){var n,o;const i=function(t){const e=Un.get(t);return()=>!e||Un.get(t)===e}(e);if(!t.cache.has(e.$option))return;const a=t.cache.get(e.$option),s=e.$item;let l="selector";yt(e,"switch")&&(l="switch"),yt(e,"range")&&(l="range"),yt(e,"onClick")&&(l="button");const{icons:c,constructor:d}=t.art;if(!i())return;const u=function(t,e,r=P(t)){const n=xn.get(e);(!n||cn(n)||n.closed)&&Sn(t,e);const o=r.child();return xn.set(e,o),kn.set(e,r),$n.set(o,vn(e).events),o.add(()=>{En(t,$n.get(o))}),o}(t.art,e,bn(a)),p=()=>cn(u)&&!M(t.art)&&i();if(!p())return;const f=document.createElement("div");try{if(Vn(e),j(f,"art-setting-item"),et(f,"height",`${d.SETTING_ITEM_HEIGHT}px`),f.dataset.name=e.name||"",f.dataset.value=String(e.value||""),!p())return;const i=Rt(f,'
'),h=Rt(f,'
'),m=document.createElement("div");switch(j(m,"art-setting-item-left-icon"),l){case"button":case"switch":case"range":{const t=e.icon||c.config;if(!p())return;X(m,t);break}case"selector":if(null==(n=e.selector)?void 0:n.length){const t=e.icon||c.config;if(!p())return;X(m,t)}else X(m,c.check)}if(X(i,m),!p())return;Jn(e,"icon",m);const v=document.createElement("div");j(v,"art-setting-item-left-text");const g=e.html||"";if(!p())return;X(v,g),X(i,v),Jn(e,"html",v);const y=document.createElement("div");j(y,"art-setting-item-right-tooltip");const b=e.tooltip||"";if(!p())return;switch(X(y,b),X(h,y),Jn(e,"tooltip",y),l){case"switch":{const t=document.createElement("div");j(t,"art-setting-item-right-icon");const r=Rt(t,c.switchOn),n=Rt(t,c.switchOff),o=e.switch;if(!p())return;et(o?n:r,"display","none"),X(h,t),vt(e,"$switch",{configurable:!0,get:()=>t});let i=e.switch;if(!p())return;Vn(e,()=>{const t=i;return()=>{i=t}}),vt(e,"switch",{configurable:!0,get:()=>i,set(t){i=t,f.setAttribute("aria-checked",String(Boolean(t))),t?(et(n,"display","none"),et(r,"display",null)):(et(n,"display",null),et(r,"display","none"))}});break}case"range":{const t=document.createElement("div");j(t,"art-setting-item-right-icon");const r=document.createElement("input");r.type="range",X(t,r);for(const[o,i]of["value","min","max","step"].entries()){const t=e.range[o];if(!p())return;Reflect.set(r,i,String(t))}j(r,"art-setting-range"),X(h,t),vt(e,"$range",{configurable:!0,get:()=>r});let n=[...e.range];if(!p())return;Vn(e,()=>{const t=n,e=[...t],o={min:r.min,max:r.max,step:r.step,value:r.value};return()=>{t.splice(0,t.length,...e),n=t,Object.assign(r,o)}}),vt(e,"range",{configurable:!0,get:()=>n,set(t){n=[...t],r.value=String(t[0]),r.min=String(t[1]),r.max=String(t[2]),r.step=String(t[3])}})}break;case"selector":if(null==(o=e.selector)?void 0:o.length){const t=document.createElement("div");j(t,"art-setting-item-right-icon"),X(t,c.arrowRight),X(h,t)}}if(!p())return;if(function(t,e,r,n){const{art:o}=t,i=Cn(e),a=(t,r,n)=>Ln(o,e,t,r,n,i);switch(n){case"switch":e.onSwitch&&a(r,"click",n=>jn(t,e,r,n,e.onSwitch,e,"switch"));break;case"range":{const n=e.$range;if(n)for(const[o,i]of[["change","onRange"],["input","onChange"]])e[i]&&a(n,o,o=>jn(t,e,r,o,e[i],e,"tooltip",()=>{e.range[0]=n.valueAsNumber}));break}case"selector":a(r,"click",n=>{var o,i;if(null==(o=e.selector)?void 0:o.length)t.render(e.selector);else{if(null==(i=e.$parent)?void 0:i.onSelect)return jn(t,e,r,n,e.$parent.onSelect,e.$parent,"tooltip",()=>t.check(e));t.check(e)}}),e.default&&j(r,"art-current");break;case"button":e.onClick&&a(r,"click",n=>jn(t,e,r,n,e.onClick,e,"tooltip"))}}(t,e,f,l),!p())return;vt(e,"$item",{configurable:!0,get:()=>f}),function(t,e,r,n,o){var i;"range"!==n?r.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")||("switch"===n?(r.setAttribute("role","switch"),r.setAttribute("aria-checked",String(Boolean(e.switch))),r.setAttribute("aria-disabled",String(!e.onSwitch))):"selector"!==n||(null==(i=e.selector)?void 0:i.length)||r.setAttribute("aria-current",String(Boolean(e.default))),zt(o,r,()=>r.click(),()=>cn(o)&&!M(t.art))):Bn(e)}(t,e,f,l,u),r&&(null==s?void 0:s.parentNode)?s.replaceWith(f):X(a,f),e.mounted&&p()&&St(u,()=>{var r;if(!M(t.art))try{const n=null==(r=e.mounted)?void 0:r.call(t.art,f,e);Promise.resolve(n).catch(t=>console.warn("ArtPlayer setting mounted failed:",t))}catch(n){console.warn("ArtPlayer setting mounted failed:",n)}},0)}catch(h){try{u.dispose()}catch(m){console.warn("ArtPlayer setting cleanup failed:",m)}throw f.remove(),h}}function to(t,e=t.option){var r,n,o,i,a,s;if(M(t.art))return;const l=Dn(t),c=t.cache.get(e);if(c&&!cn(bn(c)))return;const d=(Zn.get(t)||0)+1;Zn.set(t,d);const u=()=>Zn.get(t)===d&&!M(t.art),p=t.active,f=["height","width","left","right"].map(e=>[e,t.$parent.style.getPropertyValue(e),t.$parent.style.getPropertyPriority(e)]),h=()=>{t.active=p,p&&t.cache.has(p)&&K(t.cache.get(p),"art-current");for(const[e,r,n]of f)t.$parent.style.setProperty(e,r,n)};if(t.active=e,c)try{K(c,"art-current"),t.resize()}catch(m){throw u()&&t.cache.get(e)===c&&!bn(c).closed&&h(),m}else{const a=document.createElement("div");t.cache.set(e,a);const s=function(t,e,r){const n=P(t.art).child();return yn.set(r,n),n.add(()=>{t.cache.get(e)===r&&t.cache.delete(e),r.remove()}),n}(t,e,a),l=()=>!s.closed&&!M(t.art)&&t.cache.get(e)===a,c=[];try{if(!l())return;j(a,"art-setting-panel"),a.setAttribute("role","group"),a.setAttribute("aria-label",(null==(o=null==(n=null==(r=e[0])?void 0:r.$parent)?void 0:n.$html)?void 0:o.textContent)||t.art.i18n.get("Settings")),X(t.$parent,a),K(a,"art-current"),(null==(i=e[0])?void 0:i.$parent)&&t.createHeader(e[0]);for(let r=0;r{!function(t){const e=pn.get(t);e&&(e.active=!1,e.root=void 0,e.scope=void 0)}(this)}),e.setting&&(this.format(),this.render(),function(t){const{art:e}=t,r=P(e).child(),n=(t,n)=>{if(r.closed||M(e))return;const o=(...t)=>{if(!r.closed&&!M(e))return n(...t)};e.on(t,o),r.add(()=>{e.off(t,o)})};n("blur",()=>{t.show&&(t.show=!1,t.render())}),n("focus",r=>{const n=F(r,e.controls.setting),o=F(r,t.$parent);!t.show||n||o||(t.show=!1,t.render())}),n("resize",()=>t.resize());const o=()=>{r.closed||M(e)||t.resize()},i=e.proxy(t.$parent,"transitionend",e=>{e.target===t.$parent&&"bottom"===e.propertyName&&o()});r.add(()=>{e.events.remove(i)});const{$player:a,$controls:s}=e.template;if(!r.closed&&"undefined"!==typeof ResizeObserver){const t=new ResizeObserver(o);t.observe(a),t.observe(s),r.add(()=>{t.disconnect()})}if(!r.closed&&"undefined"!==typeof MutationObserver){const t=new MutationObserver(o);"undefined"===typeof ResizeObserver&&t.observe(s,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),t.observe(a,{attributes:!0,attributeFilter:["class","style"]}),r.add(()=>{t.disconnect()})}}(this)),In(this)}get builtin(){const t=[],{option:e}=this.art;return e.playbackRate&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,PLAYBACK_RATE:o}}=t;function i(t){return 1===t?e.get("Normal"):t.toFixed(1)}function a(){const e=t.setting.find(`playback-rate-${t.playbackRate}`);t.setting.check(e)}return{width:n,name:"playback-rate",html:e.get("Play Speed"),tooltip:i(t.playbackRate),icon:r.playbackRate,selector:o.map(e=>({value:e,name:`playback-rate-${e}`,default:e===t.playbackRate,html:i(e)})),onSelect:e=>(t.playbackRate=e.value,e.html),mounted:(e,r)=>{a(),Pn(t,r,"video:ratechange",()=>a())}}}(this.art)),e.aspectRatio&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,ASPECT_RATIO:o}}=t;function i(t){return"default"===t?e.get("Default"):t}function a(){const e=t.setting.find(`aspect-ratio-${t.aspectRatio}`);t.setting.check(e)}return{width:n,name:"aspect-ratio",html:e.get("Aspect Ratio"),icon:r.aspectRatio,tooltip:i(t.aspectRatio),selector:o.map(e=>({value:e,name:`aspect-ratio-${e}`,default:e===t.aspectRatio,html:i(e)})),onSelect:e=>(t.aspectRatio=e.value,e.html),mounted:(e,r)=>{a(),Pn(t,r,"aspectRatio",()=>a())}}}(this.art)),e.flip&&t.push(function(t){const{i18n:e,icons:r,constructor:{SETTING_ITEM_WIDTH:n,FLIP:o}}=t;function i(t){return e.get(dt(t))}function a(){const e=t.setting.find(`flip-${t.flip}`);t.setting.check(e)}return{width:n,name:"flip",html:e.get("Video Flip"),tooltip:i(t.flip),icon:r.flip,selector:o.map(e=>({value:e,name:`flip-${e}`,default:e===t.flip,html:i(e)})),onSelect:e=>(t.flip=e.value,e.html),mounted:(e,r)=>{a(),Pn(t,r,"flip",()=>a())}}}(this.art)),e.subtitleOffset&&t.push(function(t){const{i18n:e,icons:r,constructor:n}=t;return{width:n.SETTING_ITEM_WIDTH,name:"subtitle-offset",html:e.get("Subtitle Offset"),icon:r.subtitle,tooltip:"0s",range:[0,-10,10,.1],onChange:e=>(t.subtitleOffset=e.range[0],`${e.range[0]}s`),mounted:(e,r)=>{Pn(t,r,"subtitleOffset",t=>{r.$range.value=String(t),r.tooltip=`${t}s`})}}}(this.art)),t}traverse(t,e=this.option){gn(e,t)}check(t){!function(t,e){(null==e?void 0:e.$parent)&&(e.$parent.tooltip=e.html,t.traverse(t=>{t.default=t===e,t.$item&&t.$item.setAttribute("aria-current",String(t.default)),t.default&&t.$item&&K(t.$item,"art-current")},e.$option),t.render(e.$parents))}(this,t)}format(t=this.option,e,r,n=[]){this.option=function(t,e,r,n,o=[]){const i=pn.get(t)||{active:!0},a=[],s=new Set,l=new Set(o),c=(t,e,r)=>{var n;for(let o=0;ovn(t).parent},$parents:{get:()=>vn(t).parents},$option:{get:()=>vn(t).option},$events:{get:()=>vn(t).events},$formatted:{get:()=>!0}}),un.set(t,{parent:r,parents:n,option:o,events:(null==a?void 0:a.events)||[],owner:i}),u.generated&&(t.name=e)}for(const u of a)u.generated||o.push(u.name);return t.id=d,e}(this,t,e,r,n)}find(t=""){return function(t,e=""){let r=null;return gn(t,t=>{t.name===e&&(r=t)}),r}(this.option,t)}resize(){Nn(this)}inactivate(t){!function(t,e){const r=[],n=new Set,o=e=>{if(!n.has(e)){n.add(e);for(const t of e.selector||[])o(t);if(e.selector){const n=t.cache.get(e.selector);t.cache.delete(e.selector);try{n&&wn(n)}catch(i){r.push(i)}}try{Sn(t.art,e)}catch(i){i instanceof A?r.push(...i.errors):r.push(i)}}};if(o(e),r.length)throw new A(r)}(this,t)}remove(t){const e=Dn(this),r=this.find(t);it(r,`Can't find [${t}] in the [setting]`),this.traverse(t=>{Wn(t),Gn(t)},[r]);const n=r.$option.indexOf(r);r.$option.splice(n,1);const o=r.$item,i=[];for(const s of[()=>this.inactivate(r),()=>null==o?void 0:o.remove(),()=>this.render()])try{s()}catch(a){a instanceof A?i.push(...a.errors):i.push(a)}if(i.length)throw new A(i);e()}update(t){return Kn(this,t)}add(t,e=this.option){var r;if(M(this.art))return t;let n=!1;this.traverse(e=>{n||(n=e===t)});const o=e.length,i=n?void 0:function(t){const e={};_n.set(t,e);const r=()=>_n.get(t)===e;return{current:r,finish(){r()&&_n.delete(t)}}}(t);let a=!1;try{e.push(t),this.format(),a=!0,this.createItem(t),this.render()}catch(s){if(M(this.art)||i&&!i.current())throw s;if(e[o]===t&&e.splice(o,1),!n&&a){try{this.inactivate(t)}catch(l){console.warn("ArtPlayer setting cleanup failed:",l)}null==(r=t.$item)||r.remove()}throw s}finally{null==i||i.finish()}return t}createHeader(t){!function(t,e){var r;if(!t.cache.has(e.$option))return;const n=t.cache.get(e.$option),{icons:{arrowLeft:o},constructor:{SETTING_ITEM_HEIGHT:i}}=t.art,a=document.createElement("div");et(a,"height",`${i}px`),j(a,"art-setting-item"),j(a,"art-setting-item-back");const s=Rt(a,'
'),l=document.createElement("div");j(l,"art-setting-item-left-icon"),X(l,o),X(s,l),X(s,e.$parent.html),Ln(t.art,e.$parent,a,"click",()=>t.render(e.$parents),bn(n));const c=bn(n);a.querySelector("button,input,select,textarea,a[href],[tabindex],[contenteditable]")||zt(c,a,()=>a.click(),()=>cn(c)&&!M(t.art)),a.setAttribute("aria-label",`${t.art.i18n.get("Back")}: ${(null==(r=a.textContent)?void 0:r.trim())||""}`),X(n,a)}(this,t)}createItem(t,e=!1){Qn(this,t,e)}render(t=this.option){to(this,t)}}class no{constructor(){this.name="artplayer_settings",this.settings={}}get(t){try{const e=JSON.parse(window.localStorage.getItem(this.name))||{};return t?e[t]:e}catch(e){return t?this.settings[t]:this.settings}}set(t,e){try{const r=Object.assign({},this.get(),{[t]:e});window.localStorage.setItem(this.name,JSON.stringify(r))}catch(r){this.settings[t]=e}}del(t){try{const e=this.get();delete e[t],window.localStorage.setItem(this.name,JSON.stringify(e))}catch(e){delete this.settings[t]}}clear(){try{window.localStorage.removeItem(this.name)}catch(t){this.settings={}}}}const oo='.art-video-player{--art-theme: #f00;--art-font-color: #fff;--art-background-color: #000;--art-text-shadow-color: rgba(0, 0, 0, .5);--art-transition-duration: .2s;--art-padding: 10px;--art-border-radius: 3px;--art-progress-height: 6px;--art-progress-color: rgba(255, 255, 255, .25);--art-progress-top-gap: 10px;--art-hover-color: rgba(255, 255, 255, .25);--art-loaded-color: rgba(255, 255, 255, .25);--art-state-size: 80px;--art-state-opacity: .8;--art-bottom-height: 100px;--art-bottom-offset: 20px;--art-bottom-gap: 5px;--art-highlight-width: 8px;--art-highlight-color: rgba(255, 255, 255, .5);--art-control-height: 46px;--art-control-opacity: .75;--art-control-icon-size: 36px;--art-control-icon-scale: 1.1;--art-volume-height: 120px;--art-volume-handle-size: 14px;--art-lock-size: 36px;--art-indicator-scale: 0;--art-indicator-size: 16px;--art-fullscreen-web-index: 9999;--art-settings-icon-size: 24px;--art-settings-max-height: 300px;--art-selector-max-height: 300px;--art-contextmenus-min-width: 250px;--art-subtitle-font-size: 20px;--art-subtitle-gap: 5px;--art-subtitle-bottom: 15px;--art-subtitle-border: #000;--art-widget-background: rgba(0, 0, 0, .85);--art-tip-background: rgba(0, 0, 0, .7);--art-scrollbar-size: 4px;--art-scrollbar-background: rgba(255, 255, 255, .25);--art-scrollbar-background-hover: rgba(255, 255, 255, .5);--art-mini-progress-height: 2px}.art-bg-cover{background-position:center center;background-repeat:no-repeat;background-size:cover}.art-bottom-gradient{background-image:linear-gradient(to top,#000,rgba(0,0,0,.4),transparent);background-repeat:repeat-x;background-position:center bottom}.art-backdrop-filter{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:#000000bf!important}.art-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-video-player{position:relative;margin:0 auto;width:100%;height:100%;outline:0;zoom:1;padding:0;text-align:left;direction:ltr;font-size:14px;line-height:1.3;user-select:none;box-sizing:border-box;color:var(--art-font-color);background-color:var(--art-background-color);text-shadow:0 0 2px var(--art-text-shadow-color);font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,Roboto,Arial,sans-serif;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-touch-action:manipulation;touch-action:manipulation;-ms-high-contrast-adjust:none}.art-video-player *,.art-video-player *:before,.art-video-player *:after{box-sizing:border-box}.art-video-player ::-webkit-scrollbar{width:var(--art-scrollbar-size);height:var(--art-scrollbar-size)}.art-video-player ::-webkit-scrollbar-thumb{background-color:var(--art-scrollbar-background)}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:var(--art-scrollbar-background-hover)}.art-video-player img{max-width:100%;vertical-align:top}.art-video-player svg{fill:var(--art-font-color)}.art-video-player a{color:var(--art-font-color);text-decoration:none}.art-icon{line-height:1;display:flex;justify-content:center;align-items:center}.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{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:#000000bf!important}.art-video{position:absolute;inset:0;z-index:10;width:100%;height:100%}.art-poster{position:absolute;inset:0;z-index:11;width:100%;height:100%;background-position:center center;background-repeat:no-repeat;background-size:cover;pointer-events:none}.art-video-player .art-subtitle{display:none;justify-content:center;align-items:center;flex-direction:column;position:absolute;z-index:20;width:100%;padding:0 5%;text-align:center;pointer-events:none;gap:var(--art-subtitle-gap);bottom:var(--art-subtitle-bottom);font-size:var(--art-subtitle-font-size);transition:bottom var(--art-transition-duration) ease;text-shadow:var(--art-subtitle-border) 1px 0 1px,var(--art-subtitle-border) 0 1px 1px,var(--art-subtitle-border) -1px 0 1px,var(--art-subtitle-border) 0 -1px 1px,var(--art-subtitle-border) 1px 1px 1px,var(--art-subtitle-border) -1px -1px 1px,var(--art-subtitle-border) 1px -1px 1px,var(--art-subtitle-border) -1px 1px 1px}.art-video-player.art-subtitle-show .art-subtitle{display:flex}.art-video-player.art-control-show .art-subtitle{bottom:calc(var(--art-controls-height, var(--art-control-height)) + var(--art-subtitle-bottom))}.art-danmuku{position:absolute;inset:0;z-index:30;width:100%;height:100%;pointer-events:none;overflow:hidden}.art-video-player .art-layers{position:absolute;inset:0;z-index:40;width:100%;height:100%;display:none;pointer-events:none}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:flex}.art-video-player .art-mask{display:flex;justify-content:center;align-items:center;position:absolute;inset:0;z-index:50;width:100%;height:100%;pointer-events:none}.art-video-player .art-mask .art-state{display:flex;justify-content:center;align-items:center;opacity:0;transform:scale(2);width:var(--art-state-size);height:var(--art-state-size);transition:all var(--art-transition-duration) ease}.art-video-player.art-mask-show .art-state{pointer-events:auto;opacity:var(--art-state-opacity);transform:scale(1)}.art-video-player.art-loading-show .art-state{display:none}.art-video-player .art-loading{display:none;justify-content:center;align-items:center;position:absolute;inset:0;z-index:70;width:100%;height:100%;pointer-events:none}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player.art-loading-show .art-mask{display:none}.art-video-player .art-bottom{position:absolute;inset:0;z-index:60;width:100%;height:100%;display:flex;flex-direction:column;justify-content:flex-end;opacity:0;overflow:hidden;pointer-events:none;padding:0 var(--art-padding);transition:all var(--art-transition-duration) ease;background-size:100% var(--art-bottom-height);background-image:linear-gradient(to top,#000,rgba(0,0,0,.4),transparent);background-repeat:repeat-x;background-position:center bottom}.art-video-player .art-bottom .art-controls,.art-video-player .art-bottom .art-progress{transform:translateY(var(--art-bottom-offset));transition:transform var(--art-transition-duration) ease}.art-video-player.art-control-show .art-bottom,.art-video-player.art-hover .art-bottom{opacity:1}.art-video-player.art-control-show .art-bottom .art-controls,.art-video-player.art-hover .art-bottom .art-controls,.art-video-player.art-control-show .art-bottom .art-progress,.art-video-player.art-hover .art-bottom .art-progress{transform:translateY(0)}.art-bottom .art-progress{position:relative;z-index:0;cursor:pointer;pointer-events:auto;padding-top:var(--art-progress-top-gap);padding-bottom:var(--art-bottom-gap)}.art-bottom .art-progress .art-control-progress{position:relative;display:flex;justify-content:center;align-items:center;height:var(--art-progress-height)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:height var(--art-transition-duration) ease;background-color:var(--art-progress-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover{position:absolute;inset:0;z-index:0;width:100%;height:100%;width:0%;background-color:var(--art-hover-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{position:absolute;inset:0;z-index:10;width:100%;height:100%;width:0%;background-color:var(--art-loaded-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{position:absolute;inset:0;z-index:20;width:100%;height:100%;width:0%;background-color:var(--art-theme)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{position:absolute;inset:0;z-index:30;width:100%;height:100%;pointer-events:none}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{position:absolute;inset:0 auto 0 0;z-index:0;width:100%;height:100%;pointer-events:auto;width:var(--art-highlight-width)!important;transform:translate(calc(var(--art-highlight-width) / -2));background-color:var(--art-highlight-color)}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{display:flex;justify-content:center;align-items:center;position:absolute;z-index:40;left:0;border-radius:50%;width:var(--art-indicator-size);height:var(--art-indicator-size);transform:scale(var(--art-indicator-scale));margin-left:calc(var(--art-indicator-size) / -2);transition:transform var(--art-transition-duration) ease}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon{width:100%;height:100%;pointer-events:none}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover{transform:scale(1.2)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active{transform:scale(1)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;z-index:50;top:-25px;left:0;padding:3px 5px;line-height:1;font-size:12px;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease}.art-bottom .art-progress .art-control-thumbnails{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;bottom:calc(var(--art-bottom-gap) + 10px);left:0;border-radius:var(--art-border-radius);pointer-events:none;background-color:var(--art-widget-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease;box-shadow:0 1px 3px #0003,0 1px 2px -1px #0003}.art-bottom .art-progress:hover .art-control-progress .art-control-progress-inner{height:100%}.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{transform:scale(1)}.art-progress-hover .art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip,.art-progress-hover .art-bottom .art-progress .art-control-thumbnails{transform:scale(1);opacity:1}.art-video-player .art-controls{position:relative;z-index:10;pointer-events:auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;flex-shrink:0;height:auto;min-height:var(--art-control-height)}.art-video-player .art-controls .art-controls-left,.art-video-player .art-controls .art-controls-right{display:flex;flex-wrap:wrap;max-width:100%;min-height:var(--art-control-height)}.art-video-player .art-controls .art-controls-center{display:none;justify-content:center;align-items:center;flex:1;height:100%;padding:0 10px}.art-video-player .art-controls .art-controls-right{justify-content:flex-end;margin-left:auto}.art-video-player .art-controls .art-control{display:flex;justify-content:center;align-items:center;flex-shrink:0;max-width:100%;cursor:pointer;white-space:nowrap;opacity:var(--art-control-opacity);min-height:var(--art-control-height);min-width:var(--art-control-height);transition:opacity var(--art-transition-duration) ease}.art-video-player .art-controls .art-control .art-icon{height:var(--art-control-icon-size);width:var(--art-control-icon-size);transform:scale(var(--art-control-icon-scale));transition:transform var(--art-transition-duration) ease}.art-video-player .art-controls .art-control .art-icon:active{transform:scale(calc(var(--art-control-icon-scale) * .8))}.art-video-player .art-controls .art-control:hover{opacity:1}.art-control-volume{position:relative}.art-control-volume .art-volume-panel{display:flex;justify-content:center;align-items:center;position:absolute;left:0;right:0;padding:0 5px;font-size:12px;text-align:center;cursor:default;opacity:0;visibility:hidden;transform:translateY(10px);pointer-events:none;bottom:var(--art-control-height);width:var(--art-control-height);height:var(--art-volume-height);transition:opacity var(--art-transition-duration) ease,transform var(--art-transition-duration) ease}.art-control-volume .art-volume-panel .art-volume-inner{display:flex;flex-direction:column;align-items:center;gap:10px;height:100%;width:100%;padding:10px 0 12px;border-radius:var(--art-border-radius);background-color:var(--art-widget-background)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{flex:1;width:100%;display:flex;cursor:pointer;position:relative;justify-content:center}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{position:relative;display:flex;justify-content:center;width:2px;border-radius:var(--art-border-radius);overflow:hidden;background-color:#ffffff40}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded{position:absolute;inset:0;z-index:0;width:100%;height:100%;background-color:var(--art-theme)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator{position:absolute;width:var(--art-volume-handle-size);height:var(--art-volume-handle-size);margin-top:calc(var(--art-volume-handle-size) / -2);flex-shrink:0;transform:scale(1);border-radius:100%;background-color:var(--art-theme);transition:transform var(--art-transition-duration) ease}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator{transform:scale(.9)}.art-control-volume:hover .art-volume-panel,.art-control-volume:focus-within .art-volume-panel{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.art-video-player .art-notice{display:none;position:absolute;inset:0 0 auto;z-index:80;width:100%;height:100%;height:auto;padding:var(--art-padding);pointer-events:none}.art-video-player .art-notice .art-notice-inner{display:inline-flex;padding:5px;line-height:1;border-radius:var(--art-border-radius);background-color:var(--art-tip-background)}.art-video-player.art-notice-show .art-notice{display:flex}.art-video-player .art-contextmenus{display:none;flex-direction:column;position:absolute;z-index:120;padding:5px 0;border-radius:var(--art-border-radius);font-size:12px;background-color:var(--art-widget-background);min-width:var(--art-contextmenus-min-width)}.art-video-player .art-contextmenus .art-contextmenu{cursor:pointer;display:flex;padding:10px 15px;border-bottom:1px solid rgba(255,255,255,.1)}.art-video-player .art-contextmenus .art-contextmenu span{padding:0 8px}.art-video-player .art-contextmenus .art-contextmenu span:hover,.art-video-player .art-contextmenus .art-contextmenu span.art-current{color:var(--art-theme)}.art-video-player .art-contextmenus .art-contextmenu:hover{background-color:#ffffff1a}.art-video-player .art-contextmenus .art-contextmenu:last-child{border-bottom:none}.art-video-player.art-contextmenu-show .art-contextmenus{display:flex}.art-video-player .art-settings{display:none;flex-direction:column;position:absolute;z-index:90;left:auto;overflow-y:auto;overflow-x:hidden;border-radius:var(--art-border-radius);max-height:var(--art-settings-max-height);right:var(--art-padding);bottom:var(--art-controls-height, var(--art-control-height));transition:all var(--art-transition-duration) ease;background-color:var(--art-widget-background)}.art-video-player .art-settings .art-setting-panel{display:none;flex-direction:column}.art-video-player .art-settings .art-setting-panel.art-current{display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item{display:flex;justify-content:space-between;align-items:center;gap:5px;padding:0 5px;cursor:pointer;overflow:hidden;transition:background-color var(--art-transition-duration) ease}.art-video-player .art-settings .art-setting-panel .art-setting-item:hover{background-color:#ffffff1a}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current{color:var(--art-theme)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check{visibility:hidden;height:15px}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check{visibility:visible}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left{display:flex;justify-content:center;align-items:center;flex-shrink:1;min-width:0;overflow:hidden;gap:5px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;height:var(--art-settings-icon-size);width:var(--art-settings-icon-size)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right{display:flex;justify-content:center;align-items:center;flex-shrink:0;min-width:0;max-width:55%;gap:5px;font-size:12px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#ffffff80}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;min-width:32px;height:24px}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{height:3px;width:80px;outline:none;appearance:none;background-color:#fff3}.art-video-player .art-settings .art-setting-panel .art-setting-item-back{border-bottom:1px solid rgba(255,255,255,.1)}.art-video-player.art-setting-show .art-settings{display:flex}.art-video-player .art-info{display:none;position:absolute;left:var(--art-padding);top:var(--art-padding);z-index:100;padding:10px;font-size:12px;border-radius:var(--art-border-radius);background-color:var(--art-widget-background)}.art-video-player .art-info .art-info-panel{display:flex;flex-direction:column;gap:5px}.art-video-player .art-info .art-info-panel .art-info-item{display:flex;align-items:center;gap:5px}.art-video-player .art-info .art-info-panel .art-info-item .art-info-title{width:100px;text-align:right}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;user-select:all}.art-video-player .art-info .art-info-close{position:absolute;top:5px;right:5px;cursor:pointer}.art-video-player.art-info-show .art-info{display:flex}.art-hide-cursor *{cursor:none!important}.art-video-player[data-aspect-ratio]{overflow:hidden}.art-video-player[data-aspect-ratio] .art-video{object-fit:fill;box-sizing:content-box}.art-fullscreen{--art-progress-height: 8px;--art-indicator-size: 20px;--art-control-height: 60px;--art-control-icon-scale: 1.3}.art-fullscreen-web{--art-progress-height: 8px;--art-indicator-size: 20px;--art-control-height: 60px;--art-control-icon-scale: 1.3;position:fixed;inset:0;z-index:var(--art-fullscreen-web-index);width:100%;height:100%}.art-mini-popup{position:fixed;z-index:9999;width:320px;height:180px;max-width:100vw;max-height:100vh;background:#000;border-radius:var(--art-border-radius);cursor:move;user-select:none;overflow:hidden;transition:opacity .2s ease;box-shadow:0 0 5px #00000080}.art-mini-popup svg{fill:#fff}.art-mini-popup .art-video{pointer-events:none}.art-mini-popup .art-mini-close{position:absolute;z-index:20;right:10px;top:10px;cursor:pointer;opacity:0;transition:opacity .2s ease}.art-mini-popup .art-mini-state{position:absolute;inset:0;z-index:30;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none;opacity:0;transition:opacity .2s ease;background-color:#00000040}.art-mini-popup .art-mini-state .art-icon{opacity:.75;cursor:pointer;transform:scale(3);pointer-events:auto;transition:transform .2s ease}.art-mini-popup .art-mini-state .art-icon:active{transform:scale(2.5)}.art-mini-popup.art-mini-dragging{opacity:.9}.art-mini-popup:hover .art-mini-close,.art-mini-popup:focus-within .art-mini-close,.art-mini-popup:hover .art-mini-state,.art-mini-popup:focus-within .art-mini-state{opacity:1}.art-mini-popup [role=button]:focus-visible{outline:2px solid #fff;outline-offset:-2px}.art-video-player[data-flip=horizontal] .art-video{transform:scaleX(-1)}.art-video-player[data-flip=vertical] .art-video{transform:scaleY(-1)}.art-video-player .art-layer-lock{display:none;justify-content:center;align-items:center;position:absolute;top:50%;border-radius:50%;transform:translateY(-50%);height:var(--art-lock-size);width:var(--art-lock-size);left:var(--art-padding);background-color:var(--art-tip-background)}.art-video-player .art-layer-auto-playback{display:none;gap:10px;align-items:center;position:absolute;border-radius:var(--art-border-radius);padding:10px;line-height:1;left:var(--art-padding);bottom:calc(var(--art-controls-height, var(--art-control-height)) + var(--art-bottom-gap) + 10px);background-color:var(--art-widget-background)}.art-video-player .art-layer-auto-playback .art-auto-playback-close{display:flex;justify-content:center;align-items:center;cursor:pointer}.art-video-player .art-layer-auto-playback .art-auto-playback-close svg{width:15px;height:15px;fill:var(--art-theme)}.art-video-player .art-layer-auto-playback .art-auto-playback-jump{color:var(--art-theme);cursor:pointer}.art-video-player.art-lock .art-layer-lock{display:flex}.art-video-player.art-lock:not(.art-control-show) .art-layer-lock{opacity:0;pointer-events:none}.art-video-player.art-lock:not(.art-control-show) .art-layer-lock:focus-within{opacity:1;pointer-events:auto}.art-video-player.art-lock .art-subtitle{bottom:var(--art-subtitle-bottom)!important}.art-video-player.art-mini-progress-bar .art-bottom,.art-video-player.art-lock .art-bottom{opacity:1;padding:0;background-image:none}.art-video-player.art-mini-progress-bar .art-bottom .art-controls,.art-video-player.art-lock .art-bottom .art-controls,.art-video-player.art-mini-progress-bar .art-bottom .art-progress,.art-video-player.art-lock .art-bottom .art-progress{transform:translateY(calc(var(--art-controls-height, var(--art-control-height)) + var(--art-bottom-gap) + var(--art-progress-height) / 4))}.art-video-player.art-mini-progress-bar .art-bottom .art-progress-indicator,.art-video-player.art-lock .art-bottom .art-progress-indicator{display:none!important}.art-video-player.art-control-show .art-layer-lock{display:flex}.art-control-selector{position:relative;display:flex;justify-content:center}.art-control-selector .art-selector-list{display:flex;flex-direction:column;align-items:center;text-align:center;position:absolute;border-radius:var(--art-border-radius);overflow-y:auto;overflow-x:hidden;opacity:0;visibility:hidden;transform:translateY(10px);pointer-events:none;bottom:var(--art-control-height);max-height:var(--art-selector-max-height);background-color:var(--art-widget-background);transition:opacity var(--art-transition-duration) ease,transform var(--art-transition-duration) ease}.art-control-selector .art-selector-list .art-selector-item{display:flex;justify-content:center;align-items:center;width:100%;padding:10px 15px;flex-shrink:0;line-height:1}.art-control-selector .art-selector-list .art-selector-item:hover{background-color:#ffffff1a}.art-control-selector .art-selector-list .art-selector-item:hover,.art-control-selector .art-selector-list .art-selector-item.art-current{color:var(--art-theme)}.art-control-selector:hover:not(.art-selector-dismissed) .art-selector-list,.art-control-selector.art-selector-open .art-selector-list{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.art-video-player [class*=hint--]{position:relative;display:inline-block;font-style:normal}.art-video-player [class*=hint--]:before,.art-video-player [class*=hint--]:after{position:absolute;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);transform:translateZ(0);visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;-webkit-transition:.3s ease;-moz-transition:.3s ease;transition:.3s ease;-webkit-transition-delay:0ms;-moz-transition-delay:0ms;transition-delay:0ms}.art-video-player [class*=hint--]:hover:before,.art-video-player [class*=hint--]:hover:after{visibility:visible;opacity:1}.art-video-player [class*=hint--]:hover:before,.art-video-player [class*=hint--]:hover:after{-webkit-transition-delay:.1s;-moz-transition-delay:.1s;transition-delay:.1s}.art-video-player [class*=hint--]:before{content:"";position:absolute;background:transparent;border:6px solid transparent;z-index:1000001}.art-video-player [class*=hint--]:after{background:#000;color:#fff;padding:8px 10px;font-size:12px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:12px;white-space:nowrap}.art-video-player [class*=hint--][aria-label]:after{content:attr(aria-label)}.art-video-player [class*=hint--][data-hint]:after{content:attr(data-hint)}.art-video-player [aria-label=""]:before,.art-video-player [aria-label=""]:after,.art-video-player [data-hint=""]:before,.art-video-player [data-hint=""]:after{display:none!important}.art-video-player .hint--top-left:before{border-top-color:#000}.art-video-player .hint--top-right:before{border-top-color:#000}.art-video-player .hint--top:before{border-top-color:#000}.art-video-player .hint--bottom-left:before{border-bottom-color:#000}.art-video-player .hint--bottom-right:before{border-bottom-color:#000}.art-video-player .hint--bottom:before{border-bottom-color:#000}.art-video-player .hint--left:before{border-left-color:#000}.art-video-player .hint--right:before{border-right-color:#000}.art-video-player .hint--top:before{margin-bottom:-11px}.art-video-player .hint--top:before,.art-video-player .hint--top:after{bottom:100%;left:50%}.art-video-player .hint--top:before{left:calc(50% - 6px)}.art-video-player .hint--top:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translate(-50%)}.art-video-player .hint--top:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top:hover:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translate(-50%) translateY(-8px)}.art-video-player .hint--bottom:before{margin-top:-11px}.art-video-player .hint--bottom:before,.art-video-player .hint--bottom:after{top:100%;left:50%}.art-video-player .hint--bottom:before{left:calc(50% - 6px)}.art-video-player .hint--bottom:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translate(-50%)}.art-video-player .hint--bottom:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom:hover:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translate(-50%) translateY(8px)}.art-video-player .hint--right:before{margin-left:-11px;margin-bottom:-6px}.art-video-player .hint--right:after{margin-bottom:-14px}.art-video-player .hint--right:before,.art-video-player .hint--right:after{left:100%;bottom:50%}.art-video-player .hint--right:hover:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--right:hover:after{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--left:before{margin-right:-11px;margin-bottom:-6px}.art-video-player .hint--left:after{margin-bottom:-14px}.art-video-player .hint--left:before,.art-video-player .hint--left:after{right:100%;bottom:50%}.art-video-player .hint--left:hover:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--left:hover:after{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--top-left:before{margin-bottom:-11px}.art-video-player .hint--top-left:before,.art-video-player .hint--top-left:after{bottom:100%;left:50%}.art-video-player .hint--top-left:before{left:calc(50% - 6px)}.art-video-player .hint--top-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translate(-100%)}.art-video-player .hint--top-left:after{margin-left:12px}.art-video-player .hint--top-left:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top-left:hover:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translate(-100%) translateY(-8px)}.art-video-player .hint--top-right:before{margin-bottom:-11px}.art-video-player .hint--top-right:before,.art-video-player .hint--top-right:after{bottom:100%;left:50%}.art-video-player .hint--top-right:before{left:calc(50% - 6px)}.art-video-player .hint--top-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translate(0)}.art-video-player .hint--top-right:after{margin-left:-12px}.art-video-player .hint--top-right:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--top-right:hover:after{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--bottom-left:before{margin-top:-11px}.art-video-player .hint--bottom-left:before,.art-video-player .hint--bottom-left:after{top:100%;left:50%}.art-video-player .hint--bottom-left:before{left:calc(50% - 6px)}.art-video-player .hint--bottom-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translate(-100%)}.art-video-player .hint--bottom-left:after{margin-left:12px}.art-video-player .hint--bottom-left:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom-left:hover:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translate(-100%) translateY(8px)}.art-video-player .hint--bottom-right:before{margin-top:-11px}.art-video-player .hint--bottom-right:before,.art-video-player .hint--bottom-right:after{top:100%;left:50%}.art-video-player .hint--bottom-right:before{left:calc(50% - 6px)}.art-video-player .hint--bottom-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translate(0)}.art-video-player .hint--bottom-right:after{margin-left:-12px}.art-video-player .hint--bottom-right:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--bottom-right:hover:after{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--small:after,.art-video-player .hint--medium:after,.art-video-player .hint--large:after{white-space:normal;line-height:1.4em;word-wrap:break-word}.art-video-player .hint--small:after{width:80px}.art-video-player .hint--medium:after{width:150px}.art-video-player .hint--large:after{width:300px}.art-video-player [class*=hint--]:after{text-shadow:0 -1px 0px black;box-shadow:4px 4px 8px #0000004d}.art-video-player .hint--error:after{background-color:#b34e4d;text-shadow:0 -1px 0px #592726}.art-video-player .hint--error.hint--top-left:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--top-right:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--top:before{border-top-color:#b34e4d}.art-video-player .hint--error.hint--bottom-left:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--bottom-right:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.art-video-player .hint--error.hint--left:before{border-left-color:#b34e4d}.art-video-player .hint--error.hint--right:before{border-right-color:#b34e4d}.art-video-player .hint--warning:after{background-color:#c09854;text-shadow:0 -1px 0px #6c5328}.art-video-player .hint--warning.hint--top-left:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--top-right:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--top:before{border-top-color:#c09854}.art-video-player .hint--warning.hint--bottom-left:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--bottom-right:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--bottom:before{border-bottom-color:#c09854}.art-video-player .hint--warning.hint--left:before{border-left-color:#c09854}.art-video-player .hint--warning.hint--right:before{border-right-color:#c09854}.art-video-player .hint--info:after{background-color:#3986ac;text-shadow:0 -1px 0px #1a3c4d}.art-video-player .hint--info.hint--top-left:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--top-right:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--top:before{border-top-color:#3986ac}.art-video-player .hint--info.hint--bottom-left:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--bottom-right:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--bottom:before{border-bottom-color:#3986ac}.art-video-player .hint--info.hint--left:before{border-left-color:#3986ac}.art-video-player .hint--info.hint--right:before{border-right-color:#3986ac}.art-video-player .hint--success:after{background-color:#458746;text-shadow:0 -1px 0px #1a321a}.art-video-player .hint--success.hint--top-left:before{border-top-color:#458746}.art-video-player .hint--success.hint--top-right:before{border-top-color:#458746}.art-video-player .hint--success.hint--top:before{border-top-color:#458746}.art-video-player .hint--success.hint--bottom-left:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--bottom-right:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--bottom:before{border-bottom-color:#458746}.art-video-player .hint--success.hint--left:before{border-left-color:#458746}.art-video-player .hint--success.hint--right:before{border-right-color:#458746}.art-video-player .hint--always:after,.art-video-player .hint--always:before{opacity:1;visibility:visible}.art-video-player .hint--always.hint--top:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translate(-50%) translateY(-8px)}.art-video-player .hint--always.hint--top-left:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top-left:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translate(-100%) translateY(-8px)}.art-video-player .hint--always.hint--top-right:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--top-right:after{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.art-video-player .hint--always.hint--bottom:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translate(-50%) translateY(8px)}.art-video-player .hint--always.hint--bottom-left:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom-left:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translate(-100%) translateY(8px)}.art-video-player .hint--always.hint--bottom-right:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--bottom-right:after{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.art-video-player .hint--always.hint--left:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--always.hint--left:after{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translate(-8px)}.art-video-player .hint--always.hint--right:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--always.hint--right:after{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translate(8px)}.art-video-player .hint--rounded:after{border-radius:4px}.art-video-player .hint--no-animate:before,.art-video-player .hint--no-animate:after{-webkit-transition-duration:0ms;-moz-transition-duration:0ms;transition-duration:0ms}.art-video-player .hint--bounce:before,.art-video-player .hint--bounce:after{-webkit-transition:opacity .3s ease,visibility .3s ease,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s ease,visibility .3s ease,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s ease,visibility .3s ease,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.art-video-player .hint--no-shadow:before,.art-video-player .hint--no-shadow:after{text-shadow:initial;box-shadow:initial}.art-video-player .hint--no-arrow:before{display:none}.art-video-player.art-mobile{--art-bottom-gap: 10px;--art-control-height: 38px;--art-control-icon-scale: 1;--art-state-size: 60px;--art-settings-max-height: 180px;--art-selector-max-height: 180px;--art-indicator-scale: 1;--art-control-opacity: 1}.art-video-player.art-mobile .art-controls-left{margin-left:calc(var(--art-padding) / -1)}.art-video-player.art-mobile .art-controls-right{margin-right:calc(var(--art-padding) / -1)}.art-video-player [tabindex]:focus-visible,.art-video-player input:focus-visible,.art-video-player button:focus-visible,.art-video-player a:focus-visible{outline:2px solid currentColor;outline-offset:-2px}.art-video-player.art-keyboard-focus :focus{outline:2px solid currentColor;outline-offset:-2px}.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom{opacity:1}.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom .art-controls,.art-video-player.art-keyboard-focus:not(.art-lock) .art-bottom .art-progress{transform:translateY(0)}';class io{constructor(t){var e;this.scope=t.child(),this.cancelled=new Promise(t=>{this.scope.add(()=>{t(void 0)})}),this.signal=null==(e=function(t){if("undefined"===typeof AbortController)return;const e=new AbortController;return t.add(()=>{e.abort()}),e}(this.scope))?void 0:e.signal}get active(){return!this.scope.closed}cancel(){this.scope.dispose()}run(t){return c(this,null,function*(){if(this.active)try{return yield Promise.race([t(),this.cancelled])}finally{this.cancel()}})}}const ao=new WeakMap;function so(t){return ao.get(t)}function lo(t){const e=t.ownedURL;t.ownedURL=void 0,e&&URL.revokeObjectURL(e)}const co=Zt;class uo extends co{constructor(t){super(t),this.name="subtitle",this.option=null,this.destroyEvent=()=>null;const e=function(t,e){const r=P(e).child(),n={scope:r,revision:0,render:0,trackRevision:0};return ao.set(t,n),r.add(()=>{lo(n)}),n}(this,t);this.init(t.option.subtitle).catch(()=>{});let r=!1;const n=()=>{if(e.scope.closed||!this.url)return;const n=t.template.$video.webkitDisplayingFullscreen;"boolean"===typeof n&&n!==r&&(r=n,this.createTrack(n?"subtitles":"metadata",this.url))};t.on("video:timeupdate",n),e.scope.add(()=>{t.off("video:timeupdate",n)})}get url(){return this.art.template.$track.src}set url(t){this.switch(t).catch(()=>{})}get textTrack(){var t,e;return null==(e=null==(t=this.art.template.$video)?void 0:t.textTracks)?void 0:e[0]}get activeCues(){var t;return Array.from((null==(t=this.textTrack)?void 0:t.activeCues)||[])}get cues(){var t;return Array.from((null==(t=this.textTrack)?void 0:t.cues)||[])}style(t,e){const{$subtitle:r}=this.art.template;return"object"===typeof t?rt(r,t):et(r,t,e)}update(){!function(t){const e=so(t);if(e.scope.closed)return;const r=e.revision,n=++e.render,o=()=>!e.scope.closed&&e.revision===r&&e.render===n,{art:i}=t,{$subtitle:a}=i.template;if(a.innerHTML="",!t.activeCues.length)return;if(i.emit("subtitleBeforeUpdate",t.activeCues),!o())return;const s=t.activeCues.map((t,e)=>t.text.split(/\r?\n/).filter(t=>t.trim()).map(t=>`
\n ${i.option.subtitle.escape?mt(t):t}\n
`).join("")).join("");o()&&(a.innerHTML=s,i.emit("subtitleAfterUpdate",t.activeCues))}(this)}switch(t){return c(this,arguments,function*(t,e={}){const{i18n:r,notice:n,option:o}=this.art,i=l(s(s({},o.subtitle),e),{url:t}),a=so(this),c=a.revision+1,d=yield this.init(i);return!a.scope.closed&&a.revision===c&&e.name&&(n.show=`${r.get("Switch Subtitle")}: ${e.name}`),d})}createTrack(t,e){!function(t,e,r){const n=so(t);if(n.scope.closed)return;const o=++n.trackRevision,{art:i}=t,{template:a}=i,s=a.$track,l=s.parentNode,c=s.nextSibling,d=document.createElement("track"),u=n.scope.child();u.add(()=>{d.onload=null,d.onerror=null});let p=!1;try{if(d.default=!0,d.kind=e,d.src=r,d.label=i.option.subtitle.name||"Artplayer",d.track.mode="hidden",d.onload=()=>{u.closed||a.$track!==d||i.emit("subtitleLoad",t.cues,t.option)},d.onerror=()=>{u.closed||a.$track!==d||(i.notice.show=new Error("Failed to load subtitle track"))},u.closed||n.trackRevision!==o)return void u.dispose();s.remove(),a.$video.appendChild(d),a.$track=d;const l=t.textTrack,c=l?i.proxy(l,"cuechange",()=>{u.closed||a.$track!==d||t.update()}):()=>{};if(u.add(()=>{i.events.remove(c)}),u.closed||n.trackRevision!==o)return u.dispose(),void d.remove();const f=n.track;n.track=u,t.destroyEvent=c,s.onload=null,s.onerror=null,p=!0;try{null==f||f.dispose()}finally{n.ownedURL&&n.ownedURL!==r&&lo(n)}}catch(f){if(p)throw f;if(u.dispose(),d.remove(),n.scope.closed||n.trackRevision!==o)throw f;throw a.$track=s,l&&l.insertBefore(s,(null==c?void 0:c.parentNode)===l?c:null),f}}(this,t,e)}init(t){return c(this,null,function*(){const e=so(this),r=function(t){const e=t.request,r=new io(t.scope);return t.request=r,t.revision+=1,null==e||e.cancel(),r}(e),{notice:n,template:{$subtitle:o}}=this.art;return r.run(()=>c(this,null,function*(){if(!this.textTrack)return null;if(h(t,Gt.subtitle),!t.url)return;let i;this.option=t,this.style(t.style);try{if(!r.active)return;const n=yield fetch(t.url,{signal:r.signal});if(!r.active)return;if(!n.ok)throw new Error(`Failed to load subtitle: ${n.status} ${n.statusText}`);const a=yield n.arrayBuffer();if(!r.active)return;const s=function(t,e){const r=new TextDecoder(e.encoding).decode(t);switch(e.type||st(e.url)){case"srt":return{vtt:e.onVttLoad(xt(r))};case"ass":return{vtt:e.onVttLoad($t(r))};case"vtt":return{vtt:e.onVttLoad(r)};default:return}}(a,t);if(!r.active)return;const l=void 0===s?t.url:i=kt(s.vtt);if(!r.active)return;o.innerHTML="";const c=e.trackRevision+1;if(this.url!==l&&this.createTrack("metadata",l),!r.active||e.trackRevision>c)return;return i&&(e.ownedURL=i,i=void 0),l}catch(a){if(!r.active)return;throw o.innerHTML="",n.show=a,a}finally{i&&(e.scope.closed||this.url!==i?URL.revokeObjectURL(i):e.ownedURL=i)}}))})}}const po=`\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Player version:
\n
${m}
\n
\n
\n
Video url:
\n
\n
\n
\n
Video volume:
\n
\n
\n
\n
Video time:
\n
\n
\n
\n
Video duration:
\n
\n
\n
\n
Video resolution:
\n
\n x \n
\n
\n
\n
[x]
\n
\n
\n
\n `;class fo{constructor(t){this.art=t;const{option:e,constructor:r}=t;e.container instanceof Element?this.$container=e.container:(this.$container=H(e.container),it(this.$container,`No container element found by ${e.container}`)),it(V(),"The current browser does not support flex layout");const n=this.$container.tagName.toLowerCase();it("div"===n,`Unsupported container element type, only support 'div' but got '${n}'`),it(r.instances.every(t=>t.template.$container!==this.$container),"Cannot mount multiple instances on the same dom element"),this.query=this.query.bind(this),function(t,e,r){const n=T.get(e);if(n&&n!==t)throw new Error("Cannot mount multiple instances on the same dom element");const o=L(t);o.rollback=r,T.set(e,t),o.releaseContainer=()=>{T.get(e)===t&&T.delete(e)}}(t,this.$container,qn(this.$container)),function(t,e,r){const n=L(t),o=n.mountingTemplate;n.mountingTemplate=e;try{r()}finally{n.mountingTemplate=o}}(t,this,()=>{this.$container.dataset.artId=String(t.id),this.init()})}static get html(){return po}query(t){return H(t,this.$container)}init(){const{option:t}=this.art;var e;if(t.useSSR||(this.$container.innerHTML=fo.html),(e=this).$player=e.query(".art-video-player"),e.$video=e.query(".art-video"),e.$track=e.query("track"),e.$poster=e.query(".art-poster"),e.$subtitle=e.query(".art-subtitle"),e.$danmuku=e.query(".art-danmuku"),e.$bottom=e.query(".art-bottom"),e.$progress=e.query(".art-progress"),e.$controls=e.query(".art-controls"),e.$controlsLeft=e.query(".art-controls-left"),e.$controlsCenter=e.query(".art-controls-center"),e.$controlsRight=e.query(".art-controls-right"),e.$layer=e.query(".art-layers"),e.$loading=e.query(".art-loading"),e.$notice=e.query(".art-notice"),e.$noticeInner=e.query(".art-notice-inner"),e.$mask=e.query(".art-mask"),e.$state=e.query(".art-state"),e.$setting=e.query(".art-settings"),e.$info=e.query(".art-info"),e.$infoPanel=e.query(".art-info-panel"),e.$infoClose=e.query(".art-info-close"),e.$contextmenu=e.query(".art-contextmenus"),t.proxy){const e=t.proxy.call(this.art,this.art);if(M(this.art))return;!function(t){it(t instanceof HTMLVideoElement||t instanceof HTMLCanvasElement,"Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'")}(e),Z(e,this.$video),e.className="art-video",this.$video=e}t.backdrop&&j(this.$player,"art-backdrop"),k&&j(this.$player,"art-mobile")}destroy(t){t?this.$container.innerHTML="":j(this.$player,"art-destroy")}}const ho=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);class mo{on(t,e,r){const n=this.e||(this.e={});let o=ho(n,t)?n[t]:void 0;return o||(o=[],Object.defineProperty(n,t,{value:o,enumerable:!0,configurable:!0,writable:!0})),o.push({fn:e,ctx:r}),this}once(t,e,r){const n=this,o=e;let i=!1;function a(...e){i||(i=!0,n.off(t,a),o.apply(r,e))}return a._=e,this.on(t,a,r)}emit(t,...e){const r=this.e||(this.e={}),n=(ho(r,t)&&r[t]||[]).slice();for(const o of n)o.fn.apply(o.ctx,e);return this}off(t,e){const r=this.e||(this.e={}),n=ho(r,t)?r[t]:void 0,o=[];if(n&&e)for(let i=0,a=n.length;i{e.destroying||e.finalizers.dispose()})}(this);try{if(this.template=new fo(this),P(this).closed)return;if(this.events=new Be(this),P(this).closed)return;if(this.storage=new no,P(this).closed)return;if(this.icons=new Je(this),P(this).closed)return;if(this.i18n=new Ke(this),P(this).closed)return;if(this.notice=new lr(this),P(this).closed)return;if(this.player=new qr(this),P(this).closed)return;if(this.layers=new nr(this),P(this).closed)return;if(this.controls=new Re(this),P(this).closed)return;if(this.contextmenu=new ie(this),P(this).closed)return;if(this.subtitle=new uo(this),P(this).closed)return;if(this.info=new rr(this),P(this).closed)return;if(this.loading=new or(this),P(this).closed)return;if(this.hotkey=new Xe(this),P(this).closed)return;if(this.mask=new ir(this),P(this).closed)return;if(this.setting=new ro(this),P(this).closed)return;if(this.plugins=new sn(this),P(this).closed)return;if("function"===typeof e&&this.on("ready",()=>e.call(this,this)),yo.DEBUG){const t=t=>console.log(`[ART.${this.id}] -> ${t}`);t(`Version@${yo.version}`);for(let e=0;et(`Event@${e.type}`))}(function(t){const e=L(t);return e.rollback=void 0,!e.scope.closed})(this)&&go.push(this)}catch(r){try{z(this,go,!0,yo.REMOVE_SRC_WHEN_DESTROY,!0)}catch(n){console.warn("Failed to clean up ArtPlayer initialization:",n)}throw r}}static get instances(){return go}static get version(){return m}static get config(){return E}static get utils(){return Et}static get scheme(){return Gt}static get Emitter(){return mo}static get validator(){return h}static get kindOf(){return h.kindOf}static get html(){return fo.html}static get option(){return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:t=>t},moreVideoAttr:{controls:!1,preload:b?"auto":"metadata"},i18n:{},icons:{},cssVar:{},customType:{},lang:"undefined"===typeof navigator||null==navigator?void 0:navigator.language.toLowerCase()}}get proxy(){return this.events.proxy}get query(){return this.template.query}get video(){return this.template.$video}reset(){this.video.removeAttribute("src"),this.video.load()}destroy(t=!0){z(this,go,t,yo.REMOVE_SRC_WHEN_DESTROY)}}var bo,wo;return yo.STYLE=oo,yo.DEBUG=!1,yo.CONTEXTMENU=!0,yo.NOTICE_TIME=2e3,yo.SETTING_WIDTH=250,yo.SETTING_ITEM_WIDTH=200,yo.SETTING_ITEM_HEIGHT=35,yo.RESIZE_TIME=200,yo.SCROLL_TIME=200,yo.SCROLL_GAP=50,yo.AUTO_PLAYBACK_MAX=10,yo.AUTO_PLAYBACK_MIN=5,yo.AUTO_PLAYBACK_TIMEOUT=3e3,yo.RECONNECT_TIME_MAX=5,yo.RECONNECT_SLEEP_TIME=1e3,yo.CONTROL_HIDE_TIME=3e3,yo.DBCLICK_TIME=300,yo.DBCLICK_FULLSCREEN=!0,yo.MOBILE_DBCLICK_PLAY=!0,yo.MOBILE_CLICK_PLAY=!1,yo.AUTO_ORIENTATION_TIME=200,yo.INFO_LOOP_TIME=1e3,yo.FAST_FORWARD_VALUE=3,yo.FAST_FORWARD_TIME=1e3,yo.TOUCH_MOVE_RATIO=.5,yo.VOLUME_STEP=.1,yo.SEEK_STEP=5,yo.PLAYBACK_RATE=[.5,.75,1,1.25,1.5,2],yo.ASPECT_RATIO=["default","4:3","16:9"],yo.FLIP=["normal","horizontal","vertical"],yo.FULLSCREEN_WEB_IN_BODY=!0,yo.LOG_VERSION=!0,yo.USE_RAF=!1,yo.REMOVE_SRC_WHEN_DESTROY=!0,bo=yo,wo=oo,$&&(window.Artplayer=bo,v("artplayer-style",wo),setTimeout(()=>{bo.LOG_VERSION&&console.log(`%c ArtPlayer %c ${bo.version} %c https://artplayer.org`,"color: #fff; background: #5f5f5f","color: #fff; background: #4bc729","")},100)),yo}); diff --git a/packages/artplayer/dist/artplayer.mjs b/packages/artplayer/dist/artplayer.mjs index 2687ec25f..58b62c0bc 100644 --- a/packages/artplayer/dist/artplayer.mjs +++ b/packages/artplayer/dist/artplayer.mjs @@ -1,5 +1,5 @@ /*! - * artplayer.js v5.4.1 + * artplayer.js v6.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. @@ -220,7 +220,7 @@ function requireOptionValidator() { } var optionValidatorExports = requireOptionValidator(); const validator = /* @__PURE__ */ getDefaultExportFromCjs(optionValidatorExports); -const version$1 = "5.4.1"; +const version$1 = "6.0.0"; function setStyleText(id2, style) { let $style = document.getElementById(id2); if (!$style) { diff --git a/packages/artplayer/package.json b/packages/artplayer/package.json index 01245b75f..785bde33a 100644 --- a/packages/artplayer/package.json +++ b/packages/artplayer/package.json @@ -1,6 +1,6 @@ { "name": "artplayer", - "version": "5.4.1", + "version": "6.0.0", "description": "ArtPlayer.js is a modern and full featured HTML5 video player", "author": "Harvey Zhao ", "license": "MIT", diff --git a/refactor/baselines/major-version-preparation.json b/refactor/baselines/major-version-preparation.json new file mode 100644 index 000000000..d7a78f38d --- /dev/null +++ b/refactor/baselines/major-version-preparation.json @@ -0,0 +1,904 @@ +{ + "schemaVersion": 1, + "task": "REL-09", + "verifiedAt": "2026-09-15T16:46:07.872Z", + "startedFrom": "69ad6fb17edcd3659856e40ac93411a29f093111", + "node": "v24.21.0", + "yarn": "1.22.22", + "lockfile": { + "path": "yarn.lock", + "sha256": "aa33cfc38c7933ab53ce626a911fdafd7b14023e45f93ca37bf7f2f6a1d3ecce", + "changedFromHead": false, + "additionalTrackedLockfiles": false + }, + "registry": { + "path": "refactor/baselines/version-registry-prepared-2026-09-16.json", + "sha256": "650eaa6270e23a4f1332acc186833e1ad714450a0f9902c364673ac47ddfdd5d" + }, + "commands": [ + { + "command": "yarn install --frozen-lockfile --offline --non-interactive", + "exitCode": 0, + "durationSeconds": 31.23, + "log": { + "path": "refactor/.cache/rel09-frozen-install.log", + "sha256": "85c0a638191a0fe7fa75147f8dc9d471a566389461f48faee17d19e2d6e36c76" + } + }, + { + "command": "yarn check:toolchain --strict", + "exitCode": 0 + }, + { + "command": "yarn ci:build", + "exitCode": 0, + "durationSeconds": 63.01, + "importTests": { + "pass": 5, + "fail": 0 + }, + "log": { + "path": "refactor/.cache/rel09-ci-build.log", + "sha256": "189ef06cfe674230edd8ff729c0a66721935e5c99e5cf55ca29a65da21236676" + } + }, + { + "command": "yarn ci:check", + "exitCode": 0, + "groups": [ + { + "tests": 2952, + "pass": 2952, + "fail": 0, + "cancelled": 0, + "skipped": 0, + "durationMs": 38456.8898 + }, + { + "tests": 180, + "pass": 180, + "fail": 0, + "cancelled": 0, + "skipped": 0, + "durationMs": 26340.8869 + }, + { + "tests": 627, + "pass": 627, + "fail": 0, + "cancelled": 0, + "skipped": 0, + "durationMs": 140192.6386 + } + ], + "log": { + "path": "refactor/.cache/rel09-ci-check.log", + "sha256": "83b69377f51f1918ebbc763a15c923b2e6eaf91dab687177d9b50df1e436e0b0" + } + }, + { + "command": "yarn test:react-consumer", + "exitCode": 0, + "durationSeconds": 34.29, + "log": { + "path": "refactor/.cache/rel09-react-consumer-final.log", + "sha256": "9891f20186ccaef32e67bfd07b92fe15308ae05a5fb089eca3e2c373cb2c54a5" + } + }, + { + "command": "yarn test:vue-consumer", + "exitCode": 0, + "durationSeconds": 45.71, + "log": { + "path": "refactor/.cache/rel09-vue-consumer-final.log", + "sha256": "f037faca66f61079007678ca9202767be9000398dc12dd79eeef56cd8a4a1839" + } + }, + { + "command": "node node_modules/eslint/bin/eslint.js refactor/scripts/react-consumer.mjs refactor/scripts/vue-consumer.mjs", + "exitCode": 0 + } + ], + "packedVersions": { + "report": { + "path": "refactor/.cache/rel09-packs-NmKjMx/report.json", + "sha256": "2738299763fe599b9e290eaeded5466e0a884375a48d6428a84278531c4b75de" + }, + "procedure": { + "path": "refactor/.cache/rel09-pack-validation.mjs", + "sha256": "e95d7c0285eb29e59f3e6d2dcc000688dbbe1c6ff3d4f5981e96f23f78831bcf" + }, + "packages": [ + { + "name": "artplayer", + "version": "6.0.0", + "archiveSha256": "36466dabee011a897c04fa2f8aad159ebd82b290f5ef48b8ad46836d4dd30659", + "changelogSha256": "1444e953d4d41afa3fabb4348c777a00e6b834492b0875a52d41a85cbaa83eb8", + "entries": { + "main": { + "path": "dist/artplayer.js", + "sha256": "8a4caaa50a069875b3898a83765457b3c502700f4731d0c38988d6c463c3d20a" + }, + "legacy": { + "path": "dist/artplayer.legacy.js", + "sha256": "78f8973cf1863b778050140f03736e5d09fd262ffb338a1e2c57dd9b6317a684" + }, + "module": { + "path": "dist/artplayer.mjs", + "sha256": "abbd13775eb45a7e9dbb1ef31ed3600dc7c12de396ec8ca522e890c12f58d6a7" + } + }, + "files": 69 + }, + { + "name": "artplayer-plugin-ads", + "version": "3.0.0", + "archiveSha256": "9cd76ae1f347ec949e2b724e69e446b30bd4e10db5ae1f650769b57ff02306eb", + "changelogSha256": "35e674dd9274d1e0747cf52be576642a84a9f347a994a70141d9a8943c35d432", + "entries": { + "main": { + "path": "dist/artplayer-plugin-ads.js", + "sha256": "0f89f889667a34af6c246526ec2511d04c84a84dca9f2886d06cdb78f55f6061" + }, + "legacy": { + "path": "dist/artplayer-plugin-ads.legacy.js", + "sha256": "29c038b3204d94ec073c5afb77ae404dc4a7dc9ea9c0fa4e00e7ed6b5ca8ca2a" + }, + "module": { + "path": "dist/artplayer-plugin-ads.mjs", + "sha256": "58d7d31b020acd832238d1a439db3c8b3446cfadb0117e02b67d8a20a9476d4c" + } + }, + "files": 13 + }, + { + "name": "artplayer-plugin-ambilight", + "version": "2.0.0", + "archiveSha256": "c56c9475306609cf3665f37c735d23ac355cb36e9cb3004f70543ae11aa9f562", + "changelogSha256": "ff23c1fdc964ee49565cb429b39ba96c4ba4bdb80d4a8d19abeb779c270110a8", + "entries": { + "main": { + "path": "dist/artplayer-plugin-ambilight.js", + "sha256": "158e099f514153cbb74accdc4d39fb1535efd7c4327311a8d9877f565083ad30" + }, + "legacy": { + "path": "dist/artplayer-plugin-ambilight.legacy.js", + "sha256": "2d27124d910d2aacce80a0c124eeb873fea10d8e951e68074277e06612f0f421" + }, + "module": { + "path": "dist/artplayer-plugin-ambilight.mjs", + "sha256": "ab66594ca3308025fcd842c8ba4c1b0bc0f0ad594ce7731d07a879beaf5b31dc" + } + }, + "files": 11 + }, + { + "name": "artplayer-plugin-asr", + "version": "3.0.0", + "archiveSha256": "3a202f5f8aba8ea3550fb9268e78399364937637293b0e8e276ced702e33330b", + "changelogSha256": "1b771a0ff075c7dec5b0c846ab9524c3426ff75d8069b416c5dd08ba6ab05a50", + "entries": { + "main": { + "path": "dist/artplayer-plugin-asr.js", + "sha256": "9c67a929c605474299289a1235b36380e690199845856b2662e3868ad5328866" + }, + "legacy": { + "path": "dist/artplayer-plugin-asr.legacy.js", + "sha256": "81077cd064710602b9ff637ca1de0ec2fc64e7428f59df08cc2c5107c60f830b" + }, + "module": { + "path": "dist/artplayer-plugin-asr.mjs", + "sha256": "1b65897a656c3aac9c09e1ebf6465da523a7338f123c0fe8dfaf84fe12c30109" + } + }, + "files": 11 + }, + { + "name": "artplayer-plugin-audio-track", + "version": "2.0.0", + "archiveSha256": "30c29f44f4e4d252b06d6f7ccacc8f197bec1f47c9bebad030749adfd78ea3a4", + "changelogSha256": "a09c9cc4a4fd7ae67d3b5cb0af547282ff55a04dc2c6f52c94ec92aa42f76fca", + "entries": { + "main": { + "path": "dist/artplayer-plugin-audio-track.js", + "sha256": "4f63f1040f0da7cfa5af993e107e0abbb53fa86cf3b66a8bde3fa9e48cc407b5" + }, + "legacy": { + "path": "dist/artplayer-plugin-audio-track.legacy.js", + "sha256": "c3e9b2bc73043449589a4d7f5066b9ea0284be237092ef889b408235394938ec" + }, + "module": { + "path": "dist/artplayer-plugin-audio-track.mjs", + "sha256": "16ed602d7b1c4b9bf7bafa5aee5acd45a25295ffd0b805d9453f8c0225ac18d4" + } + }, + "files": 13 + }, + { + "name": "artplayer-plugin-auto-thumbnail", + "version": "2.0.0", + "archiveSha256": "5e5d091dbe1ea680899f16d175875a3c822fc8ecdf61724a8c7c26f794bea955", + "changelogSha256": "98d7270c85b530ed3edd7dc7c31e2b1beff40a124b72e576b325a3d60b25c609", + "entries": { + "main": { + "path": "dist/artplayer-plugin-auto-thumbnail.js", + "sha256": "186a64cc377e028570d9634d188595352433ad81778dd7cc7f617d4d37dafdb4" + }, + "legacy": { + "path": "dist/artplayer-plugin-auto-thumbnail.legacy.js", + "sha256": "aa20044bc9ea842e4798d783cca81d8f3bf96433c1b42d0a3454dd5284454b66" + }, + "module": { + "path": "dist/artplayer-plugin-auto-thumbnail.mjs", + "sha256": "72bac6db0a6b23bdfcc603ba5924a7e4418c04120d800068e906dad2833f14a2" + } + }, + "files": 12 + }, + { + "name": "artplayer-plugin-chapter", + "version": "2.0.0", + "archiveSha256": "bc703de53b37225db0845109e73704980b90dc7952dba6fe30329ec2c2ea5917", + "changelogSha256": "ddd2fdeb7cc25324f0f8095993e0ca484cab5b8eec2718b5a639bcf76e9d4a00", + "entries": { + "main": { + "path": "dist/artplayer-plugin-chapter.js", + "sha256": "0219643958932ad9eedb4ac1b4de5dab622c3750558ac18f23d617c05fd26cfa" + }, + "legacy": { + "path": "dist/artplayer-plugin-chapter.legacy.js", + "sha256": "df32619b7092d8450195c0426bff77e48f89f584124ebdc9f1626e89bc99c248" + }, + "module": { + "path": "dist/artplayer-plugin-chapter.mjs", + "sha256": "a926bad28a80691d6862ff8c294963b6c1664cdcdd06474f0e703c10be8ec8d5" + } + }, + "files": 10 + }, + { + "name": "artplayer-plugin-chromecast", + "version": "2.0.0", + "archiveSha256": "ce758d97058e92983d50041881f180304339ad1f4f0586d01980becaefa1872a", + "changelogSha256": "abbd3a84553e83d9a2f2a62dfac85efb46b9c0cb897955af231c8fe99a80a4f6", + "entries": { + "main": { + "path": "dist/artplayer-plugin-chromecast.js", + "sha256": "af07fc1d768a90c444e9510bd60faf1878f63d30dec9ed6a8f91344afae6dc85" + }, + "legacy": { + "path": "dist/artplayer-plugin-chromecast.legacy.js", + "sha256": "884c4f105faf8326c04d6e204180093112908dae388454ee0a44e03c6ca47992" + }, + "module": { + "path": "dist/artplayer-plugin-chromecast.mjs", + "sha256": "e5724e1de64766dfc97a591dbef51af13ad74ddb3b957b911b06468f62338184" + } + }, + "files": 11 + }, + { + "name": "artplayer-plugin-danmuku", + "version": "6.0.0", + "archiveSha256": "35eec7b71e928513b3ef5cf51913394952b928f671c75caca653e323d47b480b", + "changelogSha256": "eb3326d392f2556b654924d2b3e405070688da698a20015fe4dcc4f6a37fe728", + "entries": { + "main": { + "path": "dist/artplayer-plugin-danmuku.js", + "sha256": "fe55cf98d31c65c21c90762ac4fe332436e1a4da562c3ca40501bfca3a5685a1" + }, + "legacy": { + "path": "dist/artplayer-plugin-danmuku.legacy.js", + "sha256": "b722255cf172f1e278dc1251e1350bcf895dbd75b9290f393c319a393466c929" + }, + "module": { + "path": "dist/artplayer-plugin-danmuku.mjs", + "sha256": "d65a09d181e2572c9672cb6f0ddca05a9969cfa276c911c1d370fd97719a92b3" + } + }, + "files": 12 + }, + { + "name": "artplayer-plugin-danmuku-mask", + "version": "2.0.0", + "archiveSha256": "e88039cf66a7d3f5215bbaee4ab057a0bfd8a396431f3a7e8db71b45bd927411", + "changelogSha256": "172002b254b5718245eab9edf62b91c5f2b1fbe63a992208c7472bd448a4f967", + "entries": { + "main": { + "path": "dist/artplayer-plugin-danmuku-mask.js", + "sha256": "b0aab5fea7ba36d19fe7b14c6d4df7d97c6c4359e40d2821e883830b286110ec" + }, + "legacy": { + "path": "dist/artplayer-plugin-danmuku-mask.legacy.js", + "sha256": "1f9941386e5ff3be04295e37877d990c558e39df61eaa7e661c7dc2e38dbacb8" + }, + "module": { + "path": "dist/artplayer-plugin-danmuku-mask.mjs", + "sha256": "6bdb377e56f14dfb2ffaeaad4437499b20a1077c494ec6568f09fe8814300087" + } + }, + "files": 9 + }, + { + "name": "artplayer-plugin-dash-control", + "version": "2.0.0", + "archiveSha256": "982add478246dbd1bed35c330cab2fa1be72a48c14d39de2e6d14e9d671e0207", + "changelogSha256": "680cde6a4112c0755db3b547305c512b7698b1bb757f1b0aa6e2317a400076dc", + "entries": { + "main": { + "path": "dist/artplayer-plugin-dash-control.js", + "sha256": "0758643c74555d9d3439fd4f16ec8d9d82acafb6297a3673b3d3f97c2b5208d4" + }, + "legacy": { + "path": "dist/artplayer-plugin-dash-control.legacy.js", + "sha256": "fe0ff509089e20d596d0c4d70c2ddd3cdbb20722326b17ebbd2f979b187ffaef" + }, + "module": { + "path": "dist/artplayer-plugin-dash-control.mjs", + "sha256": "bee86eb5b1555314c553309033725c515468ebe34f8b5046cc0043cab36bcda1" + } + }, + "files": 10 + }, + { + "name": "artplayer-plugin-document-pip", + "version": "2.0.0", + "archiveSha256": "6c47e4498ace47363dd632967903a271f3f10556bddefc9d99d8d80285886f97", + "changelogSha256": "dac1aa0aa553023aceb20f52d198b25c1105c3735f4caee437cc4cccaad6eef8", + "entries": { + "main": { + "path": "dist/artplayer-plugin-document-pip.js", + "sha256": "ca239553684e2ea3a8ee4ad9c595d28627555fd6c225a015ec4f1a5c6ba2905e" + }, + "legacy": { + "path": "dist/artplayer-plugin-document-pip.legacy.js", + "sha256": "cfa2ecfc9d89c66fc848008e605cb960371e1f2cb64584183be2992db5a4f1fb" + }, + "module": { + "path": "dist/artplayer-plugin-document-pip.mjs", + "sha256": "8fb440a5b6c5399b1b39c5bd0243ba52016df52d6431e06b3a39efc044ab3806" + } + }, + "files": 10 + }, + { + "name": "artplayer-plugin-hls-control", + "version": "2.0.0", + "archiveSha256": "fa22a8c2ce15c76395ea2b19b919585ce56231582c7955f799bd99c309c5a796", + "changelogSha256": "87417eff37486db9653f7992c9d36076e0288077da6234ba10090515e08c3a37", + "entries": { + "main": { + "path": "dist/artplayer-plugin-hls-control.js", + "sha256": "1b00e29272ad720cdcd7f2c30ad777bed07f4ea0dc385ef6035bc5e813942d30" + }, + "legacy": { + "path": "dist/artplayer-plugin-hls-control.legacy.js", + "sha256": "32cb24386ad85d9d1806ef134a3d7db774537395d55528a746b9f5d7e1b9d86a" + }, + "module": { + "path": "dist/artplayer-plugin-hls-control.mjs", + "sha256": "b216eb6d5701e5f084d8cd7ea61a6ddbb9488023fd4144342642ba316a7ed671" + } + }, + "files": 10 + }, + { + "name": "artplayer-plugin-jassub", + "version": "2.0.0", + "archiveSha256": "ba1ae91fdd1e43e8ab8181b2a4de306dad73f2a7ee8aa061ca417a7905ebffc9", + "changelogSha256": "af91fda10ead107aca4ed3324f3da308b064845ae59850e5f1cafe12912c9aa9", + "entries": { + "main": { + "path": "dist/artplayer-plugin-jassub.js", + "sha256": "f26ddb7733e6d3ca941e1567c9245a3a9eb4cfd2471029ab197eae207c78b4c3" + }, + "legacy": { + "path": "dist/artplayer-plugin-jassub.legacy.js", + "sha256": "87b50c68361da3d57b490ac931682699a28b6a0defefecc14d8ce39a1820c9fd" + }, + "module": { + "path": "dist/artplayer-plugin-jassub.mjs", + "sha256": "f1f33eda651516a3d51a37397fffd73fdfb57d5874566ac6a52af4a6279fe89e" + } + }, + "files": 16 + }, + { + "name": "artplayer-plugin-multiple-subtitles", + "version": "2.0.0", + "archiveSha256": "382297a329cb750ffd0552717b7d59421e4aa11db7ea5ea801ee9d719ffa062e", + "changelogSha256": "e4f7d91b3508bc2d571eb4543793d350d79f9737bd8d7e8ef1c27b47f5109b8a", + "entries": { + "main": { + "path": "dist/artplayer-plugin-multiple-subtitles.js", + "sha256": "7322c9a344da5eee595e982ed9b8f898554362fc484938f6147178473c716139" + }, + "legacy": { + "path": "dist/artplayer-plugin-multiple-subtitles.legacy.js", + "sha256": "ddc2f0d569083590621540d5df48f1f55fdb4d6be57a77555531ca094ccc42df" + }, + "module": { + "path": "dist/artplayer-plugin-multiple-subtitles.mjs", + "sha256": "82fdc3658dc3f5bb665a1a634e270ae08a00a47ebfcab456f21edabe019cd049" + } + }, + "files": 12 + }, + { + "name": "artplayer-plugin-vast", + "version": "2.0.0", + "archiveSha256": "49f90faba9f5e6509d49aa7b7fb37e7a6acabbf78173cd008732426b5e24366a", + "changelogSha256": "371a68aa4b892f3bdf9597fd35dc42900abb484b49df2d9ca90e971c26d998b7", + "entries": { + "main": { + "path": "dist/artplayer-plugin-vast.js", + "sha256": "73276e5c8f08bad1a2b7ca0a1c2e81234dbd0f10eb15ab34bdb845d04fe4b85f" + }, + "legacy": { + "path": "dist/artplayer-plugin-vast.legacy.js", + "sha256": "f590eedeb3cfb0eb5d86f76ac98bb1ea306558999d14689ce83703b2368a5a75" + }, + "module": { + "path": "dist/artplayer-plugin-vast.mjs", + "sha256": "3ce7383e4123c52aa189202a82233c8a8dcf68b8d20fe5fd9456f755101ee380" + } + }, + "files": 12 + }, + { + "name": "artplayer-plugin-vtt-thumbnail", + "version": "2.0.0", + "archiveSha256": "117f7feddc84bcd467c96dccde3a57c22f6b17609eb6f6faae3ab74493d3fdd0", + "changelogSha256": "f579f97ebf51cab26191c301d9f00035d68e04979215d22b2b03c6a00cbe7c8b", + "entries": { + "main": { + "path": "dist/artplayer-plugin-vtt-thumbnail.js", + "sha256": "d6a9882fdbde36e30cfa59f59d72f299f89522d85a1b06bdc206659c831bc1a0" + }, + "legacy": { + "path": "dist/artplayer-plugin-vtt-thumbnail.legacy.js", + "sha256": "92539d993e2e2655da5d7ff5773e1d390fd869878b7d46fdc0d0e47c8b7b3bd9" + }, + "module": { + "path": "dist/artplayer-plugin-vtt-thumbnail.mjs", + "sha256": "514217471dc1b2a1802f5e92fda9107577165442547011fbd8bdb981c03203c3" + } + }, + "files": 13 + }, + { + "name": "artplayer-proxy-canvas", + "version": "2.0.0", + "archiveSha256": "bfa575903b78adb9733004655c9a057b0d81e1c74b8db7300da267fedce439b9", + "changelogSha256": "8c9953292d8c1fe4bb05b3e088e2b67aa2ac959fdbcc42efc276f9a846725d81", + "entries": { + "main": { + "path": "dist/artplayer-proxy-canvas.js", + "sha256": "af1a30506cec0a3175b2fcc3a5243900426910c17e0a8cededce8eff4e6fb217" + }, + "legacy": { + "path": "dist/artplayer-proxy-canvas.legacy.js", + "sha256": "17d32dc71098a299efd21a7befa31df3b849b5d3740c3b3f6ad652616126219e" + }, + "module": { + "path": "dist/artplayer-proxy-canvas.mjs", + "sha256": "d4fa408cfb6979355fdffdcbd1655fa60803398af2614827ed16c2c41402ac5b" + } + }, + "files": 13 + }, + { + "name": "artplayer-proxy-mediabunny", + "version": "2.0.0", + "archiveSha256": "902f654653bdc8cfc171349592763c997d797fb31ae67a6e5ea3bc7c53e9db81", + "changelogSha256": "377735ae964f20f6c9050762812e544351a7b28c9e9a319b023dad6f4b037a20", + "entries": { + "main": { + "path": "dist/artplayer-proxy-mediabunny.js", + "sha256": "662598a27e1757692ce4bd560c376bc96520d172ed67427ec519bd269896fa92" + }, + "legacy": { + "path": "dist/artplayer-proxy-mediabunny.legacy.js", + "sha256": "911711b1305b96b060e1bd73012cf1eb89b8f92982a44a8b0786bf29afbe16a0" + }, + "module": { + "path": "dist/artplayer-proxy-mediabunny.mjs", + "sha256": "b63bcb5ca0f6f06f31540397696a1fdba66bfa4df84aad2d06f913f5c6227b8b" + } + }, + "files": 10 + }, + { + "name": "artplayer-tool-iframe", + "version": "2.0.0", + "archiveSha256": "5508d1bbf9ba5da69ea97ee885167dcaadf2b08bd984f06289bc7a2d72016e79", + "changelogSha256": "30a8b02b756c8a8c7a6864f22653d1a5cc7dbf86e9c2c489de221b247ac82ad4", + "entries": { + "main": { + "path": "dist/artplayer-tool-iframe.js", + "sha256": "cb8b4ecffaf0168a3489943b293d9a82a6106e74341fe64d6dc887b47af8eb5b" + }, + "legacy": { + "path": "dist/artplayer-tool-iframe.legacy.js", + "sha256": "0a2f4d60d25d67c388d187170bf7ea0ab3dc910ef4f50390b89010fc3ae2b2fc" + }, + "module": { + "path": "dist/artplayer-tool-iframe.mjs", + "sha256": "71fff5dc0387c18e7e5d24dee18493a5c3806ae86bf0e26a4d1fc5f72bc5775b" + } + }, + "files": 10 + }, + { + "name": "artplayer-tool-thumbnail", + "version": "5.0.0", + "archiveSha256": "8f78d1316c532efa7283f08001d3d595ed77596dcf2527aaebb232241a560eba", + "changelogSha256": "ed09dc3741bcf9ebe06842d709cad72bb6ffc55237feb53e2c763ff017376863", + "entries": { + "main": { + "path": "dist/artplayer-tool-thumbnail.js", + "sha256": "a254d9d66943bd302719edae040d6ee5e0a32f7c9f1ae0727be8cb6c5a335511" + }, + "legacy": { + "path": "dist/artplayer-tool-thumbnail.legacy.js", + "sha256": "6dc0f7f84939a100d93a91943e077db5c2335a2671075d5687a104f797022609" + }, + "module": { + "path": "dist/artplayer-tool-thumbnail.mjs", + "sha256": "4ba4a874a49b628bb8cdb09e53555c4ef2765694cee274a519bf509e1f661492" + } + }, + "files": 12 + } + ], + "siteVersion": "2.0.0", + "coreEsmRuntimeVersion": "6.0.0" + }, + "consumers": [ + { + "framework": "react", + "report": { + "path": "refactor/.cache/react-consumer-AKNaST/report.json", + "sha256": "088db947b50dd3ca39cf3f3faf7a67e0173d7cda34f2203ed49e90ccf01d7af4" + }, + "types": { + "version": "5.9.3", + "diagnostics": [] + }, + "packages": [ + { + "name": "artplayer", + "version": "6.0.0", + "sha256": "36466dabee011a897c04fa2f8aad159ebd82b290f5ef48b8ad46836d4dd30659" + }, + { + "name": "artplayer-plugin-danmuku", + "version": "6.0.0", + "sha256": "35eec7b71e928513b3ef5cf51913394952b928f671c75caca653e323d47b480b" + }, + { + "name": "artplayer-plugin-document-pip", + "version": "2.0.0", + "sha256": "6c47e4498ace47363dd632967903a271f3f10556bddefc9d99d8d80285886f97" + } + ], + "profiles": [ + { + "mode": "development", + "engine": "chromium", + "version": "153.0.8010.12", + "checks": [ + "strict-mode-and-plugin-registration", + "stable-props-retain-instance", + "callback-change-cleans-old-instance", + "option-change-cleans-old-instance", + "native-play-pause-seek-and-decoded-pixels", + "sibling-unmount-preserves-other-instance", + "optional-getInstance", + "unmount-cleans-recorded-instances-and-dom", + "remount-after-empty", + "callback-exception-cleanup-and-original-error", + "cleanup-error-preserves-primary-callback-error", + "original-app-entry-loads-media" + ], + "passed": true + }, + { + "mode": "development", + "engine": "firefox", + "version": "155.0", + "checks": [ + "strict-mode-and-plugin-registration", + "stable-props-retain-instance", + "callback-change-cleans-old-instance", + "option-change-cleans-old-instance", + "native-play-pause-seek-and-decoded-pixels", + "sibling-unmount-preserves-other-instance", + "optional-getInstance", + "unmount-cleans-recorded-instances-and-dom", + "remount-after-empty", + "callback-exception-cleanup-and-original-error", + "cleanup-error-preserves-primary-callback-error", + "original-app-entry-loads-media" + ], + "passed": true + }, + { + "mode": "development", + "engine": "webkit", + "version": "26.6", + "checks": [ + "strict-mode-and-plugin-registration", + "stable-props-retain-instance", + "callback-change-cleans-old-instance", + "option-change-cleans-old-instance", + "native-play-pause-seek-and-decoded-pixels", + "sibling-unmount-preserves-other-instance", + "optional-getInstance", + "unmount-cleans-recorded-instances-and-dom", + "remount-after-empty", + "callback-exception-cleanup-and-original-error", + "cleanup-error-preserves-primary-callback-error", + "original-app-entry-loads-media" + ], + "passed": true + }, + { + "mode": "production", + "engine": "chromium", + "version": "153.0.8010.12", + "checks": [ + "strict-mode-and-plugin-registration", + "stable-props-retain-instance", + "callback-change-cleans-old-instance", + "option-change-cleans-old-instance", + "native-play-pause-seek-and-decoded-pixels", + "sibling-unmount-preserves-other-instance", + "optional-getInstance", + "unmount-cleans-recorded-instances-and-dom", + "remount-after-empty", + "callback-exception-cleanup-and-original-error", + "cleanup-error-preserves-primary-callback-error", + "original-app-entry-loads-media" + ], + "passed": true + }, + { + "mode": "production", + "engine": "firefox", + "version": "155.0", + "checks": [ + "strict-mode-and-plugin-registration", + "stable-props-retain-instance", + "callback-change-cleans-old-instance", + "option-change-cleans-old-instance", + "native-play-pause-seek-and-decoded-pixels", + "sibling-unmount-preserves-other-instance", + "optional-getInstance", + "unmount-cleans-recorded-instances-and-dom", + "remount-after-empty", + "callback-exception-cleanup-and-original-error", + "cleanup-error-preserves-primary-callback-error", + "original-app-entry-loads-media" + ], + "passed": true + }, + { + "mode": "production", + "engine": "webkit", + "version": "26.6", + "checks": [ + "strict-mode-and-plugin-registration", + "stable-props-retain-instance", + "callback-change-cleans-old-instance", + "option-change-cleans-old-instance", + "native-play-pause-seek-and-decoded-pixels", + "sibling-unmount-preserves-other-instance", + "optional-getInstance", + "unmount-cleans-recorded-instances-and-dom", + "remount-after-empty", + "callback-exception-cleanup-and-original-error", + "cleanup-error-preserves-primary-callback-error", + "original-app-entry-loads-media" + ], + "passed": true + } + ] + }, + { + "framework": "vue", + "report": { + "path": "refactor/.cache/vue-consumer-w4ymgo/report.json", + "sha256": "86013059ebba4b0e17679d5cec27d519a9c2894ea3e0894fdaacd7cdd20bc958" + }, + "types": { + "vueTsc": "3.3.11", + "typescript": "5.9.3", + "vue": "3.5.28", + "files": 90, + "isolated": true, + "negativeCases": 3 + }, + "packages": [ + { + "name": "artplayer", + "version": "6.0.0", + "sha256": "36466dabee011a897c04fa2f8aad159ebd82b290f5ef48b8ad46836d4dd30659" + }, + { + "name": "artplayer-plugin-danmuku", + "version": "6.0.0", + "sha256": "35eec7b71e928513b3ef5cf51913394952b928f671c75caca653e323d47b480b" + }, + { + "name": "artplayer-plugin-document-pip", + "version": "2.0.0", + "sha256": "6c47e4498ace47363dd632967903a271f3f10556bddefc9d99d8d80285886f97" + } + ], + "profiles": [ + { + "mode": "development", + "engine": "chromium", + "version": "153.0.8010.12", + "checks": [ + "mount-event-closed-component-ref-and-plugin-registration", + "mutate-option-retains-mount-only-contract", + "replace-option-retains-mount-only-contract", + "native-play-pause-seek-and-decoded-pixels", + "instance-api-updates-source-without-remount", + "key-change-reconstructs-with-current-props", + "sibling-cleanup-retains-other-instance", + "optional-listener-and-unmount", + "cancel-before-mount-does-not-allocate", + "three-mount-unmount-cycles-clean-once", + "vue-captured-listener-error-retains-instance-until-unmount", + "listener-triggered-unmount-cleans-created-instance", + "keepalive-retains-on-deactivation-and-destroys-on-owner-unmount", + "plain-js-event-prop-usage-and-remount", + "original-app-entry-loads-media" + ], + "passed": true + }, + { + "mode": "development", + "engine": "firefox", + "version": "155.0", + "checks": [ + "mount-event-closed-component-ref-and-plugin-registration", + "mutate-option-retains-mount-only-contract", + "replace-option-retains-mount-only-contract", + "native-play-pause-seek-and-decoded-pixels", + "instance-api-updates-source-without-remount", + "key-change-reconstructs-with-current-props", + "sibling-cleanup-retains-other-instance", + "optional-listener-and-unmount", + "cancel-before-mount-does-not-allocate", + "three-mount-unmount-cycles-clean-once", + "vue-captured-listener-error-retains-instance-until-unmount", + "listener-triggered-unmount-cleans-created-instance", + "keepalive-retains-on-deactivation-and-destroys-on-owner-unmount", + "plain-js-event-prop-usage-and-remount", + "original-app-entry-loads-media" + ], + "passed": true + }, + { + "mode": "development", + "engine": "webkit", + "version": "26.6", + "checks": [ + "mount-event-closed-component-ref-and-plugin-registration", + "mutate-option-retains-mount-only-contract", + "replace-option-retains-mount-only-contract", + "native-play-pause-seek-and-decoded-pixels", + "instance-api-updates-source-without-remount", + "key-change-reconstructs-with-current-props", + "sibling-cleanup-retains-other-instance", + "optional-listener-and-unmount", + "cancel-before-mount-does-not-allocate", + "three-mount-unmount-cycles-clean-once", + "vue-captured-listener-error-retains-instance-until-unmount", + "listener-triggered-unmount-cleans-created-instance", + "keepalive-retains-on-deactivation-and-destroys-on-owner-unmount", + "plain-js-event-prop-usage-and-remount", + "original-app-entry-loads-media" + ], + "passed": true + }, + { + "mode": "production", + "engine": "chromium", + "version": "153.0.8010.12", + "checks": [ + "mount-event-closed-component-ref-and-plugin-registration", + "mutate-option-retains-mount-only-contract", + "replace-option-retains-mount-only-contract", + "native-play-pause-seek-and-decoded-pixels", + "instance-api-updates-source-without-remount", + "key-change-reconstructs-with-current-props", + "sibling-cleanup-retains-other-instance", + "optional-listener-and-unmount", + "cancel-before-mount-does-not-allocate", + "three-mount-unmount-cycles-clean-once", + "vue-captured-listener-error-retains-instance-until-unmount", + "listener-triggered-unmount-cleans-created-instance", + "keepalive-retains-on-deactivation-and-destroys-on-owner-unmount", + "plain-js-event-prop-usage-and-remount", + "original-app-entry-loads-media" + ], + "passed": true + }, + { + "mode": "production", + "engine": "firefox", + "version": "155.0", + "checks": [ + "mount-event-closed-component-ref-and-plugin-registration", + "mutate-option-retains-mount-only-contract", + "replace-option-retains-mount-only-contract", + "native-play-pause-seek-and-decoded-pixels", + "instance-api-updates-source-without-remount", + "key-change-reconstructs-with-current-props", + "sibling-cleanup-retains-other-instance", + "optional-listener-and-unmount", + "cancel-before-mount-does-not-allocate", + "three-mount-unmount-cycles-clean-once", + "vue-captured-listener-error-retains-instance-until-unmount", + "listener-triggered-unmount-cleans-created-instance", + "keepalive-retains-on-deactivation-and-destroys-on-owner-unmount", + "plain-js-event-prop-usage-and-remount", + "original-app-entry-loads-media" + ], + "passed": true + }, + { + "mode": "production", + "engine": "webkit", + "version": "26.6", + "checks": [ + "mount-event-closed-component-ref-and-plugin-registration", + "mutate-option-retains-mount-only-contract", + "replace-option-retains-mount-only-contract", + "native-play-pause-seek-and-decoded-pixels", + "instance-api-updates-source-without-remount", + "key-change-reconstructs-with-current-props", + "sibling-cleanup-retains-other-instance", + "optional-listener-and-unmount", + "cancel-before-mount-does-not-allocate", + "three-mount-unmount-cycles-clean-once", + "vue-captured-listener-error-retains-instance-until-unmount", + "listener-triggered-unmount-cleans-created-instance", + "keepalive-retains-on-deactivation-and-destroys-on-owner-unmount", + "plain-js-event-prop-usage-and-remount", + "original-app-entry-loads-media" + ], + "passed": true + } + ] + } + ], + "initialConsumerFailure": { + "cause": "Windows port 0 assigned 6566, rejected by Chromium before production page load", + "report": { + "path": "refactor/.cache/react-consumer-Jmwio4/report.json", + "sha256": "dcdf880e02c385f149f11a73defc957cb39513a2deab02e05ac706e152bef20e" + }, + "log": { + "path": "refactor/.cache/rel09-react-consumer.log", + "sha256": "d3f45ec9aa0b501e787501459b44d99d4b6bfaa6e6d33da07f9a52e2ff51d010" + }, + "fixedIn": [ + "refactor/scripts/react-consumer.mjs", + "refactor/scripts/vue-consumer.mjs" + ] + }, + "scope": { + "formalReviewsStarted": false, + "publicationAuthorized": false, + "remoteCiVerified": false, + "physicalDeviceEvidence": false, + "fullCandidateMatrixPassed": false, + "oldVersionEvidenceReusedAsNew": false + } +} diff --git a/refactor/baselines/version-registry-prepared-2026-09-16.json b/refactor/baselines/version-registry-prepared-2026-09-16.json new file mode 100644 index 000000000..6762749f9 --- /dev/null +++ b/refactor/baselines/version-registry-prepared-2026-09-16.json @@ -0,0 +1,1203 @@ +{ + "schemaVersion": 1, + "capturedAt": "2026-09-15T16:33:58.610Z", + "registry": "https://registry.npmjs.org", + "policy": "Absence is an observation, not name ownership, reservation or publication authorization. Previously used versions cannot be reused even after unpublish.", + "observations": [ + { + "name": "artplayer", + "target": "6.0.0", + "url": "https://registry.npmjs.org/artplayer", + "status": 200, + "observedAt": "2026-09-15T16:33:55.173Z", + "responseSha256": "560fa27d689284c6e1743835b765e790613b0b11d7255ea0390eb0017a7e9748", + "responseBytes": 380531, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "5.4.0", + "beta": "5.3.1-beta.1" + }, + "activeVersions": [ + "1.0.0", + "1.0.2", + "1.0.3", + "1.0.4", + "1.0.5", + "1.0.6", + "1.0.7", + "1.0.8", + "1.0.9", + "3.1.5", + "3.1.6", + "3.1.7", + "3.1.8", + "3.1.9", + "3.1.10", + "3.1.12", + "3.1.13", + "3.1.14", + "3.1.15", + "3.1.16", + "3.1.17", + "3.1.18", + "3.1.19", + "3.2.3", + "3.2.4", + "3.2.5", + "3.2.6", + "3.3.1", + "3.3.2", + "3.3.3", + "3.4.1", + "3.4.2", + "3.5.1", + "3.5.2", + "3.5.4", + "3.5.5", + "3.5.8", + "3.5.9", + "3.5.10", + "3.5.11", + "3.5.12", + "3.5.13", + "3.5.14", + "3.5.15", + "3.5.17", + "3.5.18", + "3.5.19", + "3.5.20", + "3.5.21", + "3.5.22", + "3.5.23", + "3.5.24", + "3.5.26", + "3.5.27", + "3.5.28", + "3.5.29", + "3.5.30", + "3.5.31", + "4.0.0", + "4.0.1", + "4.0.2", + "4.0.3", + "4.0.4", + "4.0.5", + "4.0.6", + "4.0.7", + "4.0.8", + "4.0.9", + "4.1.0", + "4.1.1", + "4.1.2", + "4.1.3", + "4.1.4", + "4.2.0", + "4.2.1", + "4.2.2", + "4.2.3", + "4.2.5", + "4.2.6", + "4.2.7", + "4.3.0", + "4.3.1", + "4.3.2", + "4.3.3", + "4.3.4", + "4.3.5", + "4.3.6", + "4.3.7", + "4.3.8", + "4.3.9", + "4.3.10", + "4.3.11", + "4.3.12", + "4.3.13", + "4.3.16", + "4.3.17", + "4.3.18", + "4.3.19", + "4.3.20", + "4.3.21", + "4.3.22", + "4.3.23", + "4.4.0", + "4.4.1", + "4.4.2", + "4.4.3", + "4.4.5", + "4.4.6", + "4.4.7", + "4.5.0", + "4.5.1", + "4.5.2", + "4.5.3", + "4.5.4", + "4.5.5", + "4.5.6", + "4.5.7", + "4.5.8", + "4.5.9", + "4.5.10", + "4.5.11", + "4.5.12", + "4.6.0", + "4.6.1", + "4.6.2", + "5.0.0", + "5.0.1", + "5.0.2", + "5.0.3", + "5.0.4", + "5.0.5", + "5.0.6", + "5.0.7", + "5.0.8", + "5.0.9", + "5.1.0", + "5.1.1", + "5.1.2", + "5.1.3", + "5.1.4", + "5.1.5", + "5.1.6", + "5.1.7", + "5.2.0", + "5.2.1", + "5.2.2", + "5.2.3", + "5.2.4", + "5.2.5", + "5.3.0-beta.0", + "5.3.0-beta.1", + "5.3.0-beta.2", + "5.3.0-beta.3", + "5.3.0-beta.4", + "5.3.0", + "5.3.1-beta.0", + "5.3.1-beta.1", + "5.4.0" + ], + "historicalVersions": [ + "1.0.0", + "1.0.2", + "1.0.3", + "1.0.4", + "1.0.5", + "1.0.6", + "1.0.7", + "1.0.8", + "1.0.9", + "3.1.5", + "3.1.6", + "3.1.7", + "3.1.8", + "3.1.9", + "3.1.10", + "3.1.12", + "3.1.13", + "3.1.14", + "3.1.15", + "3.1.16", + "3.1.17", + "3.1.18", + "3.1.19", + "3.2.3", + "3.2.4", + "3.2.5", + "3.2.6", + "3.3.1", + "3.3.2", + "3.3.3", + "3.4.1", + "3.4.2", + "3.5.1", + "3.5.2", + "3.5.4", + "3.5.5", + "3.5.8", + "3.5.9", + "3.5.10", + "3.5.11", + "3.5.12", + "3.5.13", + "3.5.14", + "3.5.15", + "3.5.17", + "3.5.18", + "3.5.19", + "3.5.20", + "3.5.21", + "3.5.22", + "3.5.23", + "3.5.24", + "3.5.26", + "3.5.27", + "3.5.28", + "3.5.29", + "3.5.30", + "3.5.31", + "4.0.0", + "4.0.1", + "4.0.2", + "4.0.3", + "4.0.4", + "4.0.5", + "4.0.6", + "4.0.7", + "4.0.8", + "4.0.9", + "4.1.0", + "4.1.1", + "4.1.2", + "4.1.3", + "4.1.4", + "4.2.0", + "4.2.1", + "4.2.2", + "4.2.3", + "4.2.5", + "4.2.6", + "4.2.7", + "4.3.0", + "4.3.1", + "4.3.2", + "4.3.3", + "4.3.4", + "4.3.5", + "4.3.6", + "4.3.7", + "4.3.8", + "4.3.9", + "4.3.10", + "4.3.11", + "4.3.12", + "4.3.13", + "4.3.16", + "4.3.17", + "4.3.18", + "4.3.19", + "4.3.20", + "4.3.21", + "4.3.22", + "4.3.23", + "4.4.0", + "4.4.1", + "4.4.2", + "4.4.3", + "4.4.5", + "4.4.6", + "4.4.7", + "4.5.0", + "4.5.1", + "4.5.2", + "4.5.3", + "4.5.4", + "4.5.5", + "4.5.6", + "4.5.7", + "4.5.8", + "4.5.9", + "4.5.10", + "4.5.11", + "4.5.12", + "4.6.0", + "4.6.1", + "4.6.2", + "5.0.0", + "5.0.1", + "5.0.2", + "5.0.3", + "5.0.4", + "5.0.5", + "5.0.6", + "5.0.7", + "5.0.8", + "5.0.9", + "5.1.0", + "5.1.1", + "5.1.2", + "5.1.3", + "5.1.4", + "5.1.5", + "5.1.6", + "5.1.7", + "5.2.0", + "5.2.1", + "5.2.2", + "5.2.3", + "5.2.4", + "5.2.5", + "5.3.0-beta.0", + "5.3.0-beta.1", + "5.3.0-beta.2", + "5.3.0-beta.3", + "5.3.0-beta.4", + "5.3.0", + "5.3.1-beta.0", + "5.3.1-beta.1", + "5.4.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-plugin-ads", + "target": "3.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-ads", + "status": 200, + "observedAt": "2026-09-15T16:33:53.843Z", + "responseSha256": "f44f323b7c5705a33ef62f093ac12611b308a04ac9d38620e1fad9f0e4df2854", + "responseBytes": 13378, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.0.6" + }, + "activeVersions": [ + "1.0.0", + "1.0.2", + "1.0.3", + "1.0.4", + "1.0.6" + ], + "historicalVersions": [ + "1.0.0", + "1.0.2", + "1.0.3", + "1.0.4", + "1.0.6" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-plugin-ambilight", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-ambilight", + "status": 200, + "observedAt": "2026-09-15T16:33:54.390Z", + "responseSha256": "bde70a20457ea8a083d056b83e2ce26300d9cb75304f05187350c2b781f130e1", + "responseBytes": 4537, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.1.0" + }, + "activeVersions": [ + "1.0.0", + "1.1.0" + ], + "historicalVersions": [ + "1.0.0", + "1.1.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-plugin-asr", + "target": "3.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-asr", + "status": 200, + "observedAt": "2026-09-15T16:33:53.862Z", + "responseSha256": "280de48f746f1eb682b52ec09a09c1ca78876a5061e645412b30c6db898e3c75", + "responseBytes": 4715, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "2.1.0" + }, + "activeVersions": [ + "2.0.0", + "2.1.0" + ], + "historicalVersions": [ + "2.0.0", + "2.1.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-plugin-audio-track", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-audio-track", + "status": 200, + "observedAt": "2026-09-15T16:33:56.269Z", + "responseSha256": "802808f8c7f24d01b562dbc6ef30856451498493b2719e1723097ba069abb26a", + "responseBytes": 5015, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.1.0" + }, + "activeVersions": [ + "1.0.0", + "1.1.0" + ], + "historicalVersions": [ + "1.0.0", + "1.1.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-plugin-auto-thumbnail", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-auto-thumbnail", + "status": 200, + "observedAt": "2026-09-15T16:33:55.457Z", + "responseSha256": "52f735ef9be271f06f806995635b7b9a6ba1aedea9c1ad2c307a63788cd28986", + "responseBytes": 6352, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.1.0" + }, + "activeVersions": [ + "1.0.0", + "1.0.1", + "1.1.0" + ], + "historicalVersions": [ + "1.0.0", + "1.0.1", + "1.1.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-plugin-chapter", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-chapter", + "status": 200, + "observedAt": "2026-09-15T16:33:55.425Z", + "responseSha256": "d225be1116a9293f3c48047de58bba6bd5cc53ac7237b74943c631e8f54b09ef", + "responseBytes": 6068, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.1.0" + }, + "activeVersions": [ + "1.0.0", + "1.0.1", + "1.1.0" + ], + "historicalVersions": [ + "1.0.0", + "1.0.1", + "1.1.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-plugin-chromecast", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-chromecast", + "status": 200, + "observedAt": "2026-09-15T16:33:55.430Z", + "responseSha256": "357ef2db141c991366e9d1e0f4504a9fa9bb13c9cb99892a6d9e03da48c4d705", + "responseBytes": 4572, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.1.0" + }, + "activeVersions": [ + "1.0.0", + "1.1.0" + ], + "historicalVersions": [ + "1.0.0", + "1.1.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-plugin-danmuku", + "target": "6.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-danmuku", + "status": 200, + "observedAt": "2026-09-15T16:33:56.858Z", + "responseSha256": "6fccd0198b2322827b3271a807b60f73a3e4d6f46aeb5494a86aade409caf1d6", + "responseBytes": 193135, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "5.3.0" + }, + "activeVersions": [ + "3.1.8", + "3.1.9", + "3.1.10", + "3.1.12", + "3.1.13", + "3.1.14", + "3.1.15", + "3.1.16", + "3.1.17", + "3.1.18", + "3.1.19", + "3.2.3", + "3.2.4", + "3.2.5", + "3.2.6", + "3.3.1", + "3.3.2", + "3.3.3", + "3.4.1", + "3.4.2", + "3.5.1", + "3.5.2", + "3.5.4", + "3.5.5", + "3.5.8", + "3.5.9", + "3.5.10", + "3.5.11", + "3.5.12", + "3.5.13", + "3.5.14", + "3.5.15", + "3.5.17", + "3.5.18", + "3.5.19", + "3.5.20", + "3.5.21", + "3.5.22", + "3.5.23", + "3.5.24", + "3.5.26", + "3.5.27", + "3.5.28", + "3.5.29", + "3.5.30", + "3.5.31", + "4.1.0", + "4.3.0", + "4.3.12", + "4.3.13", + "4.3.14", + "4.3.15", + "4.3.16", + "4.3.17", + "4.3.18", + "4.3.19", + "4.3.21", + "4.3.22", + "4.3.23", + "4.4.0", + "4.4.1", + "4.4.2", + "4.4.3", + "4.4.6", + "4.4.7", + "4.4.8", + "4.4.10", + "4.4.11", + "5.0.0", + "5.0.1", + "5.1.0", + "5.1.1", + "5.1.2", + "5.1.3", + "5.1.4", + "5.1.5", + "5.1.6", + "5.1.7", + "5.1.8", + "5.2.0", + "5.3.0" + ], + "historicalVersions": [ + "3.1.8", + "3.1.9", + "3.1.10", + "3.1.12", + "3.1.13", + "3.1.14", + "3.1.15", + "3.1.16", + "3.1.17", + "3.1.18", + "3.1.19", + "3.2.3", + "3.2.4", + "3.2.5", + "3.2.6", + "3.3.1", + "3.3.2", + "3.3.3", + "3.4.1", + "3.4.2", + "3.5.1", + "3.5.2", + "3.5.4", + "3.5.5", + "3.5.8", + "3.5.9", + "3.5.10", + "3.5.11", + "3.5.12", + "3.5.13", + "3.5.14", + "3.5.15", + "3.5.17", + "3.5.18", + "3.5.19", + "3.5.20", + "3.5.21", + "3.5.22", + "3.5.23", + "3.5.24", + "3.5.26", + "3.5.27", + "3.5.28", + "3.5.29", + "3.5.30", + "3.5.31", + "4.1.0", + "4.3.0", + "4.3.12", + "4.3.13", + "4.3.14", + "4.3.15", + "4.3.16", + "4.3.17", + "4.3.18", + "4.3.19", + "4.3.21", + "4.3.22", + "4.3.23", + "4.4.0", + "4.4.1", + "4.4.2", + "4.4.3", + "4.4.6", + "4.4.7", + "4.4.8", + "4.4.10", + "4.4.11", + "5.0.0", + "5.0.1", + "5.1.0", + "5.1.1", + "5.1.2", + "5.1.3", + "5.1.4", + "5.1.5", + "5.1.6", + "5.1.7", + "5.1.8", + "5.2.0", + "5.3.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-plugin-danmuku-mask", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-danmuku-mask", + "status": 200, + "observedAt": "2026-09-15T16:33:56.555Z", + "responseSha256": "b4caa94b8179a6c6e6ff8f96ed7ec09a615df48afadd2cad66409cf176395820", + "responseBytes": 5666, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.1.0" + }, + "activeVersions": [ + "1.0.0", + "1.1.0" + ], + "historicalVersions": [ + "1.0.0", + "1.1.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-plugin-dash-control", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-dash-control", + "status": 200, + "observedAt": "2026-09-15T16:33:57.223Z", + "responseSha256": "f353e76d4228b6e025c914ca7ff4835e6d2456796f47fa283b9efb5658cf2b99", + "responseBytes": 4705, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.1.0" + }, + "activeVersions": [ + "1.0.0", + "1.1.0" + ], + "historicalVersions": [ + "1.0.0", + "1.1.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-plugin-document-pip", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-document-pip", + "status": 200, + "observedAt": "2026-09-15T16:33:56.531Z", + "responseSha256": "0271814c8d47a0d48e8be529e7b995d72740fad329abc92d6ade266edc31dcab", + "responseBytes": 8515, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.1.0" + }, + "activeVersions": [ + "1.0.0", + "1.0.1", + "1.0.2", + "1.1.0" + ], + "historicalVersions": [ + "1.0.0", + "1.0.1", + "1.0.2", + "1.1.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-plugin-hls-control", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-hls-control", + "status": 200, + "observedAt": "2026-09-15T16:33:57.752Z", + "responseSha256": "00aab044106c818a3b52a3cb2a73d816f6c099b7e166f22fa1ebf5d3b9756715", + "responseBytes": 6278, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.1.0" + }, + "activeVersions": [ + "1.0.0", + "1.0.1", + "1.1.0" + ], + "historicalVersions": [ + "1.0.0", + "1.0.1", + "1.1.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-plugin-jassub", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-jassub", + "status": 200, + "observedAt": "2026-09-15T16:33:57.501Z", + "responseSha256": "fb63338f053428378c97f8d125bc5b20a67a41ee7a0363db3e3ecb1c4f5144a7", + "responseBytes": 4821, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.1.0" + }, + "activeVersions": [ + "1.0.0", + "1.1.0" + ], + "historicalVersions": [ + "1.0.0", + "1.1.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-plugin-multiple-subtitles", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-multiple-subtitles", + "status": 200, + "observedAt": "2026-09-15T16:33:57.465Z", + "responseSha256": "42f87af15439205eb6d3c114039b33a148dd7340d9be5ea859da0bacc02faa26", + "responseBytes": 6501, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.2.0" + }, + "activeVersions": [ + "1.0.0", + "1.1.0", + "1.2.0" + ], + "historicalVersions": [ + "1.0.0", + "1.1.0", + "1.2.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-plugin-vast", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-vast", + "status": 200, + "observedAt": "2026-09-15T16:33:57.511Z", + "responseSha256": "d72f3611e950231d8c2dc011b4729f519b0d613d542bcc0ee0657f724c89e9f6", + "responseBytes": 2485, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.0.0" + }, + "activeVersions": [ + "1.0.0" + ], + "historicalVersions": [ + "1.0.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-plugin-vtt-thumbnail", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-vtt-thumbnail", + "status": 200, + "observedAt": "2026-09-15T16:33:58.215Z", + "responseSha256": "3c07418004b732ca2af5ada5625a78527a6fc21ee615074d4161b2bcbeecff4d", + "responseBytes": 9554, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.1.0" + }, + "activeVersions": [ + "1.0.0", + "1.0.1", + "1.0.2", + "1.0.3", + "1.1.0" + ], + "historicalVersions": [ + "1.0.0", + "1.0.1", + "1.0.2", + "1.0.3", + "1.1.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-proxy-canvas", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-proxy-canvas", + "status": 200, + "observedAt": "2026-09-15T16:33:58.025Z", + "responseSha256": "13c32741fd3b9705d0a28a50e0796d9ddb73c2090e2fd277902bcf440bcc7d81", + "responseBytes": 4411, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.1.0" + }, + "activeVersions": [ + "1.0.0", + "1.1.0" + ], + "historicalVersions": [ + "1.0.0", + "1.1.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-proxy-mediabunny", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-proxy-mediabunny", + "status": 200, + "observedAt": "2026-09-15T16:33:58.055Z", + "responseSha256": "bc6ce60d42fc7b6719d060f5be244ce605437f5bcf19e2ea79714e24230d1924", + "responseBytes": 5101, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.2.0" + }, + "activeVersions": [ + "1.0.0", + "1.2.0" + ], + "historicalVersions": [ + "1.0.0", + "1.2.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "npm" + }, + { + "name": "artplayer-tool-iframe", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-tool-iframe", + "status": 404, + "observedAt": "2026-09-15T16:33:58.048Z", + "responseSha256": "c8d3eae160a892e32837db3dcae515e843e5383fef52b8141940c8bcf8b6d59f", + "responseBytes": 21, + "nameState": "not-found", + "targetState": "not-observed", + "tags": {}, + "activeVersions": [], + "historicalVersions": [], + "majorConflicts": [], + "ownershipVerified": false, + "distribution": "renamed-npm" + }, + { + "name": "artplayer-tool-thumbnail", + "target": "5.0.0", + "url": "https://registry.npmjs.org/artplayer-tool-thumbnail", + "status": 200, + "observedAt": "2026-09-15T16:33:58.610Z", + "responseSha256": "1a5bbf4d14852e0dba2ed51351818bddf742a1278b46ef60366a6a544d443bcf", + "responseBytes": 2552, + "nameState": "unpublished", + "targetState": "not-observed", + "tags": {}, + "activeVersions": [], + "historicalVersions": [ + "1.0.6", + "1.0.7", + "1.0.8", + "1.0.9", + "3.1.5", + "3.1.6", + "3.1.7", + "3.1.8", + "3.1.9", + "3.1.10", + "3.1.12", + "3.1.13", + "3.1.14", + "3.1.15", + "3.1.16", + "3.1.17", + "3.1.18", + "3.1.19", + "3.2.3", + "3.2.4", + "3.2.5", + "3.2.6", + "3.3.1", + "3.3.2", + "3.3.3", + "3.4.1", + "3.4.2", + "3.5.1", + "3.5.2", + "3.5.4", + "3.5.5", + "3.5.8", + "3.5.9", + "3.5.10", + "3.5.11", + "3.5.12", + "3.5.13", + "3.5.14", + "3.5.15", + "3.5.17", + "3.5.18", + "3.5.19", + "3.5.20", + "3.5.21", + "3.5.22", + "3.5.23", + "3.5.24", + "3.5.26", + "3.5.27", + "3.5.28", + "3.5.29", + "3.5.30", + "3.5.31" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": { + "time": "2024-05-26T01:46:10.518Z", + "versions": [ + "1.0.6", + "1.0.7", + "1.0.8", + "1.0.9", + "3.1.10", + "3.1.12", + "3.1.13", + "3.1.14", + "3.1.15", + "3.1.16", + "3.1.17", + "3.1.18", + "3.1.19", + "3.1.5", + "3.1.6", + "3.1.7", + "3.1.8", + "3.1.9", + "3.2.3", + "3.2.4", + "3.2.5", + "3.2.6", + "3.3.1", + "3.3.2", + "3.3.3", + "3.4.1", + "3.4.2", + "3.5.1", + "3.5.10", + "3.5.11", + "3.5.12", + "3.5.13", + "3.5.14", + "3.5.15", + "3.5.17", + "3.5.18", + "3.5.19", + "3.5.2", + "3.5.20", + "3.5.21", + "3.5.22", + "3.5.23", + "3.5.24", + "3.5.26", + "3.5.27", + "3.5.28", + "3.5.29", + "3.5.30", + "3.5.31", + "3.5.4", + "3.5.5", + "3.5.8", + "3.5.9" + ] + }, + "ownershipVerified": false, + "distribution": "recovered-npm" + }, + { + "name": "artplayer-vitepress", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-vitepress", + "status": 404, + "observedAt": "2026-09-15T16:33:58.486Z", + "responseSha256": "c8d3eae160a892e32837db3dcae515e843e5383fef52b8141940c8bcf8b6d59f", + "responseBytes": 21, + "nameState": "not-found", + "targetState": "not-observed", + "tags": {}, + "activeVersions": [], + "historicalVersions": [], + "majorConflicts": [], + "ownershipVerified": false, + "distribution": "site" + }, + { + "name": "artplayer-plugin-iframe", + "target": "2.0.0", + "url": "https://registry.npmjs.org/artplayer-plugin-iframe", + "status": 200, + "observedAt": "2026-09-15T16:33:58.497Z", + "responseSha256": "f17cc1b990a1fe805919c3a4349bfdbdf2fbd844c4ea2aa94adc23c0d6b31c77", + "responseBytes": 3541, + "nameState": "published", + "targetState": "not-observed", + "tags": { + "latest": "1.0.0" + }, + "activeVersions": [ + "1.0.0" + ], + "historicalVersions": [ + "1.0.0" + ], + "majorConflicts": [], + "prereleasesInTargetMajor": [], + "unpublished": null, + "ownershipVerified": false, + "distribution": "historical-name-only" + } + ] +} diff --git a/refactor/changes/2026-09-16-REL-09-major-versions.md b/refactor/changes/2026-09-16-REL-09-major-versions.md new file mode 100644 index 000000000..ee58fa60b --- /dev/null +++ b/refactor/changes/2026-09-16-REL-09-major-versions.md @@ -0,0 +1,81 @@ +# REL-09: prepare independent major versions + +## Scope and compatibility + +All 22 workspace manifests now use the exact targets frozen by REL-01: core and +Danmuku 6.0.0, Ads and ASR 3.0.0, Thumbnail tool 5.0.0, and the remaining +17 workspaces 2.0.0. The private root and example versions remain unchanged. +Each package has an unreleased CHANGELOG with its own implementation and +migration details. Thumbnail's explicit package file list includes that file; +the other library packages already include it through their existing pack rules. +VitePress remains site distribution, without new npm publication authorization. + +External dependency and peer ranges are unchanged. The 22 packages do not declare +dependencies on one another, so this change needs no workspace dependency range +rewrite and introduces no core-6-only peer requirement. Frozen Yarn installation +retains the root lockfile byte for byte; no example lockfiles are introduced. +The React and Vue example manifests now reference the local core, Danmuku and +Document PiP packages. Their READMEs explain root commands and rebuilding those +libraries before use. External consumer tests still install actual tarballs +outside the repository and verify their contents, rather than using these links. + +`yarn check:versions` runs the existing prepared-plan validator and is now in +`ci:check`. It rejects incomplete version/changelog/example preparation and +unplanned external dependency changes. The frozen source-version inventory, +registry observation and historical consumer fixtures are preserved. + +## Build and package checks + +Canonical Node 24.21.0 and Yarn 1.22.22 were used. The frozen offline root install, +strict toolchain check and `yarn ci:build` passed. That build regenerated library +distributions, editor/site outputs and the docs site through repository scripts. +All five import/SSR/i18n/distribution smoke tests passed. Core's ESM public +`Artplayer.version` was separately asserted to equal the manifest's 6.0.0. + +A local validation packed all 21 libraries with Yarn, then used the existing +`packedFiles`, `checkFiles` and `readMember` helpers to verify: + +- packed manifest names and versions match the frozen targets; +- CHANGELOG content and unreleased headings match the workspace files; +- declared entrypoints/exports exist and implementation TypeScript does not leak; +- main, legacy and ESM bytes match both package/dist and docs/compiled; +- all three entrypoint banners contain the target version. + +The report retains tarball and entrypoint hashes. This preparation check does +not replace REL-02's full candidate compatibility matrix or publication gates. + +The fresh read-only registry snapshot is +`baselines/version-registry-prepared-2026-09-16.json`: all target versions remained +unobserved, with no higher stable major conflict. A 404 or unpublished history +does not establish package-name ownership. No registry write occurred. + +## Native consumer validation and discovered test issue + +React initially passed the three development browser profiles, then failed +before loading the production page: Windows assigned port 6566 to the test +server's port-0 request and Chromium rejected it with `ERR_UNSAFE_PORT`. +The original failed report remains in `.cache/react-consumer-Jmwio4`. +The consumer scripts now start Vite's available-port search at 4173 (React) +and 4174 (Vue), instead of requesting an arbitrary operating-system port. +No player API or browser assertion was changed to resolve this failure. + +Both final isolated consumer runs passed types, frozen installs, development and +production builds, and all six native browser profiles each: Chromium +153.0.8010.12, Firefox 155.0 and Windows WebKit 26.6. Checks include actual +play/pause/seek, decoded pixels, plugin use, component updates and resource +cleanup. Their three tarball hashes match the 21-package preparation snapshot. +Windows WebKit is not physical Safari/device evidence. + +`yarn ci:check` finished successfully in 414.63 seconds. Its three Node test +groups passed 2,952 implementation tests, 180 engineering tests and 627 frozen +baseline tests (3,759 total, zero failures/skips). Strict types, lint, generated +declaration/site checks and the new prepared-version gate also passed. The two +consumer scripts additionally passed targeted lint after their port change. + +The [machine-readable validation record](../baselines/major-version-preparation.json) +links the full command logs, final reports and package hashes. Previously +collected reports with the old version +numbers remain historical evidence; this task does not relabel them as new-major +candidate validation. Existing SDK/device, site, combination and release blockers +remain tracked. After implementation the user will guide the formal review +rounds; this task does not start them, push, deploy or publish. diff --git a/refactor/plan.md b/refactor/plan.md index 5ca1d68e9..926fe3ad3 100644 --- a/refactor/plan.md +++ b/refactor/plan.md @@ -4,7 +4,7 @@ 基线:`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`。总任务 283 项,范围 22 个包及工作区/示例。 -状态:todo 42 / doing 20 / blocked 0 / done 221 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。 +状态:todo 41 / doing 20 / blocked 0 / done 222 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。 前置依赖是启动条件;验收是完成条件。任务可以继续拆分,但不能复用或悄悄删除旧 ID。 @@ -451,7 +451,7 @@ | --- | --- | --- | --- | --- | --- | --- | | REL-08 | workspace
提前建立逐包发布准入台账 | BASE-08, ENG-07 | 每批包/版本/源码/锁文件/工具/tarball integrity、必需测试/设备证据、限制和回退映射 | 受影响能力缺证据明确阻止对应批次;无关批次可独立准备,旧证据在候选内容变化后失效;站点采用真实构建/URL/资源验收,npm 分发依据历史核实,不从版本清单推断新增发布范围;关联 risks.json 和 third-party.json;受影响 bundle/worker/WASM/font/模型的来源与许可通知缺口必须有审查结论,未决项阻止对应批次 | H | done | | REL-01 | workspace
提前确定分包版本与差异方案 | REL-08, CORE-21, SITE-03, PKG-CHAPTER-04, PKG-AMBILIGHT-04, PKG-AUDIO-04, PKG-AUTO-THUMB-04, PKG-VTT-THUMB-04, PKG-HLS-04, PKG-DASH-04, PKG-MULTI-SUB-04, PKG-JASSUB-04, PKG-MASK-04, PKG-ASR-04, PKG-ADS-04, PKG-VAST-04, PKG-CAST-04, PKG-DPIP-04, PKG-CANVAS-04, PKG-IFRAME-04, PKG-TOOL-THUMB-04, PKG-DANMUKU-06, PKG-MB-08, PKG-FACTORY-01 | 每包版本/变更日志/依赖/类型差异方案和独立准入状态;按 version-policy.md 冻结各包下一 major(minor/patch 归零)并核实 registry 占用 | 所有包有方案和剩余门槛,未决项明确阻止相应发布;本步骤不声称已经可发布;全部包有 major 目标,版本冲突明确处理,独立准备任务同步 manifest/锁/依赖/日志;按 BASE-05 区分 21 库与文档站分发,不机械把文档站当库上传 npm | H | done | -| REL-09 | workspace
落实全包下一 major 版本及依赖元数据 | REL-01, DOC-11 | 22 包版本目标落实、适用锁文件/依赖范围/示例/变更日志同步,核实 registry 版本占用 | 版本与 policy 一致,旧核心支持保留;必要拆子任务各自提交,候选构建前完成,不执行 publish | H | todo | +| REL-09 | workspace
落实全包下一 major 版本及依赖元数据 | REL-01, DOC-11 | 22 包版本目标落实、适用锁文件/依赖范围/示例/变更日志同步,核实 registry 版本占用 | 版本与 policy 一致,旧核心支持保留;必要拆子任务各自提交,候选构建前完成,不执行 publish | H | done | | REL-02 | workspace
生成候选 tarball 并验证新旧组合 | REL-01, CORE-22, ENG-07, REL-09, REL-04 | 各候选本地 tarball/integrity 与新旧核心/插件消费者验证报告,外部门槛单独标注 | 隔离安装和可自动化组合通过;设备结论不伪造,最终发布绑定同一候选内容;在目标 major 版本确定后构建 pack,不在测试后改版本;逐包核验完整回退产物、实际候选版本/integrity、应用导入与冻结锁,重跑对应回退并保留报告;缺失历史分发不准入 | H | todo | | REL-03 | workspace
完成真机、外部 SDK 与压力验收 | REL-02, EX-03, SITE-06, MOD-05 | Safari/移动/PiP/Cast/IMA/模型/长播放完整报告 | 包集成与全项目真机/SDK/压力结论齐全才完成本汇总;独立批次先建立自己的完整门槛子任务 | H | todo | | REL-04 | workspace
提前演练回退与主线修复同步 | REL-08, ENG-07 | 分包旧版本/tag/依赖回退方案与 master 差异 | 隔离包演练可回退,主线修复同步流程可执行;正式每批再核对其实际回退产物 | H | done | @@ -695,6 +695,7 @@ - MOD-03: [记录](changes/2026-09-14-MOD-03-slider-updates.md) [记录](baselines/slider-updates-validation.json) [记录](changes/2026-09-14-MOD-03-performance-acceptance.md) [记录](baselines/core-performance-validation.json) - REL-08: [记录](changes/2026-09-14-REL-08-release-ledger.md) [记录](baselines/release-ledger-validation.json) [记录](release-ledger.md) [记录](release-ledger.json) - REL-01: [记录](version-plan.md) [记录](version-plan.json) [记录](baselines/version-registry-2026-09-16.json) [记录](changes/2026-09-16-REL-01-version-plan.md) +- REL-09: [记录](changes/2026-09-16-REL-09-major-versions.md) [记录](baselines/major-version-preparation.json) [记录](baselines/version-registry-prepared-2026-09-16.json) [记录](version-plan.md) - REL-04: [记录](changes/2026-09-15-REL-04-consumer-checkpoint.md) [记录](rollback-rehearsal.md) [记录](baselines/rollback-consumer-validation.json) [记录](changes/2026-09-15-REL-04-workflows-checkpoint.md) [记录](rollback-inventory.md) [记录](baselines/rollback-workflows-validation.json) [记录](changes/2026-09-15-REL-04-pages-recovery.md) [记录](baselines/pages-recovery-validation.json) [记录](changes/2026-09-15-REL-04-acceptance.md) [记录](baselines/rollback-acceptance-validation.json) - PKG-FACTORY-01: [记录](baselines/factory-assignment-gaps.json) [记录](baselines/factory-compatibility-proposals.json) [记录](factory-compatibility-decision.md) [记录](changes/2026-09-12-PKG-FACTORY-01-decision.md) [记录](type-compatibility-policy.md) [记录](baselines/factory-compatibility-validation.json) [记录](changes/2026-09-13-PKG-FACTORY-01-compatible-types.md) - CORE-25: [记录](changes/2026-09-13-CORE-25-defaults-ssr.md) [记录](baselines/defaults-ssr-validation.json) diff --git a/refactor/progress.md b/refactor/progress.md index 1514bee9a..a691b66c7 100644 --- a/refactor/progress.md +++ b/refactor/progress.md @@ -1,5 +1,20 @@ # 进度与证据 +## REL-09 全包下一 major 版本落实 + +22个workspace已设置各自下一major并新增unreleased CHANGELOG;核心/弹幕6.0.0、 +Ads/ASR3.0.0、Thumbnail工具5.0.0,其余17包2.0.0。两个私有示例消费本地包, +根锁文件不变,已有外部依赖与旧核心支持范围保持。check:versions已接入CI。 +冻结安装、严格工具链、ci:build和ci:check通过,三组Node测试共3759项通过。 +21库tarball的版本/CHANGELOG/三个入口与docs复制产物逐一校验;React/Vue +各6组隔离安装真实浏览器验证通过,tarball哈希与本次打包记录相同。 +React验证发现Windows随机端口6566被浏览器拒绝,已修复测试服务端口选择, +保留失败证据并重跑两套消费者通过。见[记录](changes/2026-09-16-REL-09-major-versions.md) +及[证据](baselines/major-version-preparation.json)。 +REL-09 done;222 done、20 doing、41 todo,共283项。完整新版本候选组合、 +设备/SDK、站点与远端流水线准入仍待完成。旧版本报告保留为历史依据, +不等同新版本验证;没有推送、部署、发布,也没有启动由用户指导的正式复盘。 + ## REL-01 全包版本方案冻结 22包下一major、变更日志范围、依赖/类型规则、示例计划与剩余准入已写入 diff --git a/refactor/scripts/react-consumer.mjs b/refactor/scripts/react-consumer.mjs index d86d091e5..8685fdd8b 100644 --- a/refactor/scripts/react-consumer.mjs +++ b/refactor/scripts/react-consumer.mjs @@ -76,7 +76,8 @@ try { for (const mode of ['development', 'production']) { const outDir = path.join(output, mode) await build({ root: consumer, configFile: false, plugins: [react()], mode, define: { 'process.env.NODE_ENV': JSON.stringify(mode) }, build: { outDir, emptyOutDir: false, rollupOptions: { input: { app: path.join(consumer, 'index.html'), harness: path.join(consumer, 'harness.html') } } } }) - const server = await preview({ root: consumer, configFile: false, build: { outDir }, preview: { host: '127.0.0.1', port: 0, open: false } }) + // Windows can assign browser-blocked ports (observed: 6566) for port 0. + const server = await preview({ root: consumer, configFile: false, build: { outDir }, preview: { host: '127.0.0.1', port: 4173, open: false } }) const address = server.httpServer.address() const base = `http://127.0.0.1:${address.port}` try { diff --git a/refactor/scripts/vue-consumer.mjs b/refactor/scripts/vue-consumer.mjs index 10b8fcba7..1112d5ae4 100644 --- a/refactor/scripts/vue-consumer.mjs +++ b/refactor/scripts/vue-consumer.mjs @@ -70,7 +70,8 @@ try { for (const mode of ['development', 'production']) { const outDir = path.join(output, mode) await build({ root: consumer, configFile: false, plugins: [vue({ isProduction: mode === 'production' })], mode, define: { 'process.env.NODE_ENV': JSON.stringify(mode) }, build: { outDir, emptyOutDir: false, rollupOptions: { input: { app: path.join(consumer, 'index.html'), harness: path.join(consumer, 'harness.html'), legacy: path.join(consumer, 'legacy.html') } } } }) - const server = await preview({ root: consumer, configFile: false, build: { outDir }, preview: { host: '127.0.0.1', port: 0, open: false } }) + // Windows can assign browser-blocked ports for port 0; let Vite find availability. + const server = await preview({ root: consumer, configFile: false, build: { outDir }, preview: { host: '127.0.0.1', port: 4174, open: false } }) const base = `http://127.0.0.1:${server.httpServer.address().port}` try { for (const [engine, type] of Object.entries({ chromium, firefox, webkit })) { diff --git a/refactor/tasks.json b/refactor/tasks.json index fa5f43e79..4abae6656 100644 --- a/refactor/tasks.json +++ b/refactor/tasks.json @@ -4982,11 +4982,16 @@ "REL-01", "DOC-11" ], - "status": "todo", + "status": "done", "risk": "H", "deliverable": "22 包版本目标落实、适用锁文件/依赖范围/示例/变更日志同步,核实 registry 版本占用", "acceptance": "版本与 policy 一致,旧核心支持保留;必要拆子任务各自提交,候选构建前完成,不执行 publish", - "evidence": [] + "evidence": [ + "changes/2026-09-16-REL-09-major-versions.md", + "baselines/major-version-preparation.json", + "baselines/version-registry-prepared-2026-09-16.json", + "version-plan.md" + ] }, { "id": "REL-02", diff --git a/refactor/version-plan.md b/refactor/version-plan.md index 93c882f62..02ff70808 100644 --- a/refactor/version-plan.md +++ b/refactor/version-plan.md @@ -4,7 +4,7 @@ ## 版本和候选编号 -REL-09 将22个 workspace manifest 设为各自下一 major 的正式数字版本,minor/patch 归零,不给根 private 管理包或两个 private 示例提升版本。本轮本地候选就是未上传的目标版本 tarball,不加 -rc 后缀;不能将此称为已经发布的预发布版本。 +REL-09 已将22个 workspace manifest 设为各自下一 major 的正式数字版本,minor/patch 归零,根 private 管理包和两个 private 示例版本保持原值。本轮本地候选就是未上传的目标版本 tarball,不加 -rc 后缀;不能将此称为已经发布的预发布版本。 后续经用户授权公开候选时使用 next 标签,正式推广使用 latest;相同版本只能上传一次,标签推广应使用已验证的同一内容。next 标签不是版本隔离或发布授权,明确选择新版本的消费者仍可取得它。若公开后需要改内容,必须准备新版本并重新验证,不能覆盖或撤包后复用原版本。所有实际发布及标签操作仍等待三轮复盘和单独授权。 @@ -41,7 +41,7 @@ REL-09 将22个 workspace manifest 设为各自下一 major 的正式数字版 当前22包没有互相声明的 workspace dependencies/peerDependencies。保留已有外部依赖与版本范围,尤其不因核心升到6而新设只支持6的peer限制;声明中的核心类型引用和实际旧核心支持仍由各包测试验证。VitePress开发依赖、MediaBunny、Mask和VAST运行依赖保持现有范围。 -React/Vue示例各有三项已发布版本依赖:core、Danmuku和Document PiP。REL-09 将仓库内示例指向对应本地包(file:../../packages/),使未发布新版本可以真实安装/构建;原始历史消费夹具保留,隔离tarball验证继续替换其测试来源。示例README同步先构建本地包的步骤;只维护根yarn.lock,不生成示例锁文件。新旧框架消费脚本需重新验证路径处理,不能认为修改package.json就已通过。 +React/Vue示例的core、Danmuku和Document PiP依赖已由REL-09指向对应本地包(file:../../packages/),用于未发布新版本的仓库开发;原始历史消费夹具保留。隔离tarball验证分别打包实际产物并写入独立消费者依赖,避免工作区链接掩盖分发问题。示例README已同步先构建本地包的步骤;只维护根yarn.lock,不生成示例锁文件。验证记录随REL-09维护,修改package.json本身不代表消费验证通过。 21个库分别核对原入口、exports/typesVersions、legacy、声明与资源,不机械统一为一种导出形状。核心声明继续从public/生成;已有/runtime入口和已批准的历史类型冲突说明保持。工具Thumbnail保留npm默认和显式workspace模式;VAST保留npm初始化与显式workspace模式;其他已接受的类型差异不借major升级扩大。 @@ -59,7 +59,7 @@ node refactor/scripts/version-plan.mjs --check node refactor/scripts/version-plan.mjs --prepared ``` -固定Node24.21.0/Yarn1.22.22。capture只读registry并写新的本地证据,不覆盖旧快照;遇到已使用目标、更高major或未知响应退出1。check验证方案与当前清单;prepared还要求22包目标版本、各包CHANGELOG和两个示例依赖全部落地,目前应失败。它们均不代替严格release:preflight,也不执行publish。 +固定Node24.21.0/Yarn1.22.22。capture只读registry并写新的本地证据,不覆盖旧快照;遇到已使用目标、更高major或未知响应退出1。check验证方案与当前清单;prepared还要求22包目标版本、各包CHANGELOG和两个示例依赖全部落地,现由yarn check:versions及ci:check持续执行。REL-01记录的prepared失败是升级前的历史对照。它们均不代替严格release:preflight,也不执行publish。 ## 实施顺序与失效规则 diff --git a/refactor/version-policy.md b/refactor/version-policy.md index 62bb1a28a..b4f88530e 100644 --- a/refactor/version-policy.md +++ b/refactor/version-policy.md @@ -36,11 +36,11 @@ ## 规则与实施 1. 保持 Lerna independent:核心 6.0.0 不意味着全部插件也是 6.0.0。每个包 minor/patch 归零;本次只有一个 major 升级,不按任务或复盘轮次反复加 major。 -2. 允许在目标版本下准备预发布版本,例如 6.0.0-rc.1;具体标识由 REL-01 固定,正式目标保持 6.0.0。预发布、正式 tag 和实际 publish 仍遵循发布流程。 +2. REL-01 已选定精确目标版本,例如 6.0.0,不加 -rc 后缀。本轮候选为未上传的本地 tarball;后续经授权公开候选用 next、正式推广用 latest,均须遵循发布流程。 3. REL-01 核实已发布历史及版本占用,再冻结分包目标、变更日志和依赖范围。若执行期间主线已经发布了目标 major 或存在目标版本,明确记录冲突并重新确定方案;不能覆盖已发布内容、悄悄改成 patch 或凭旧清单直接发布。 4. REL-01 冻结方案,REL-09 落实版本准备;必要时将 REL-09 拆为可验收的子任务,再同步 manifest、适用锁文件、内部 dependencies/peerDependencies、示例和变更日志,独立提交后由 REL-02 构建候选。更新 peer 范围需保留已验证的旧核心支持,不因 major 变化强制全生态同步升级。 5. 全包都纳入大版本目标,不以某包改动较少为由继续发原 minor/patch。允许按实际验证范围分批发布,未交付包保持待办,不伪造完成。 6. 候选版本必须在最终构建/pack/验证前确定,CI-03 校验逐包版本、包内容和发布 tag;不能测试旧版本包后临发布再改版本。版本或依赖变化使相关候选证据失效,必须重跑验证。 7. REVIEW-03 逐包核对目标、声明、入口、版本组合、旧调用及回退产物;release notes 说明本次工程重构采用新 major,但不能笼统声明所有旧 API 已兼容而缺少证据。 -本次决定替代 toolchain-release.md 和 github-ci-cd.md 原先“不自动提升全部 major”的规则。兼容契约与三轮复盘门槛不变;REL-01已冻结方案,REL-09尚未实施升级,没有发布授权。实施完成后等待用户指导启动复盘。 +本次决定替代 toolchain-release.md 和 github-ci-cd.md 原先“不自动提升全部 major”的规则。兼容契约与三轮复盘门槛不变;REL-01已冻结方案,REL-09已将22包manifest及CHANGELOG设为目标版本,并同步本地示例依赖。实际验证与提交状态见tasks.json和progress.md,没有发布授权。实施完成后等待用户指导启动复盘。