@videojs/html 10.0.0-beta.15 → 10.0.0-beta.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cdn/audio-minimal-ui.dev.js +4 -5
- package/cdn/audio-minimal-ui.js +1 -1
- package/cdn/audio-minimal.dev.js +7 -8
- package/cdn/audio-minimal.dev.js.map +1 -1
- package/cdn/audio-minimal.js +1 -1
- package/cdn/audio-minimal.js.map +1 -1
- package/cdn/audio-ui.dev.js +5 -5
- package/cdn/audio-ui.js +1 -1
- package/cdn/audio.dev.js +23 -7
- package/cdn/audio.dev.js.map +1 -1
- package/cdn/audio.js +1 -1
- package/cdn/audio.js.map +1 -1
- package/cdn/background.dev.js +3 -3
- package/cdn/background.js +1 -1
- package/cdn/background.js.map +1 -1
- package/cdn/context-C-IpVHEt.js +14 -0
- package/cdn/context-C-IpVHEt.js.map +1 -0
- package/cdn/{context-BjrbhiSk.js → context-CvJ83xGk.js} +2 -83
- package/cdn/context-CvJ83xGk.js.map +1 -0
- package/cdn/create-player-B_oNyyb5.js +7 -0
- package/cdn/create-player-B_oNyyb5.js.map +1 -0
- package/cdn/{create-player-p9xCO0yC.js → create-player-DckZq-sE.js} +56 -1416
- package/cdn/create-player-DckZq-sE.js.map +1 -0
- package/cdn/{hls-BriQI4q1.js → hls-CJCXZSGG.js} +8 -11
- package/cdn/{hls-BriQI4q1.js.map → hls-CJCXZSGG.js.map} +1 -1
- package/cdn/{hls-26YJVjvD.js → hls-lPH0rWmB.js} +3 -3
- package/cdn/{hls-26YJVjvD.js.map → hls-lPH0rWmB.js.map} +1 -1
- package/cdn/hotkey-B7OaweHa.js +154 -0
- package/cdn/hotkey-B7OaweHa.js.map +1 -0
- package/cdn/hotkey-BLEt77Z0.js +2 -0
- package/cdn/hotkey-BLEt77Z0.js.map +1 -0
- package/cdn/media/dash-video.dev.js +3 -4
- package/cdn/media/dash-video.dev.js.map +1 -1
- package/cdn/media/dash-video.js +2 -2
- package/cdn/media/hls-video.dev.js +4 -5
- package/cdn/media/hls-video.dev.js.map +1 -1
- package/cdn/media/hls-video.js +1 -1
- package/cdn/media/hls-video.js.map +1 -1
- package/cdn/media/mux-audio.dev.d.ts +1 -0
- package/cdn/media/mux-audio.dev.js +29 -0
- package/cdn/media/mux-audio.dev.js.map +1 -0
- package/cdn/media/mux-audio.js +2 -0
- package/cdn/media/mux-audio.js.map +1 -0
- package/cdn/media/mux-video.dev.js +5 -3099
- package/cdn/media/mux-video.dev.js.map +1 -1
- package/cdn/media/mux-video.js +1 -24
- package/cdn/media/mux-video.js.map +1 -1
- package/cdn/media/native-hls-video.dev.js +4 -4
- package/cdn/media/native-hls-video.js +1 -1
- package/cdn/media/simple-hls-video.dev.js +965 -680
- package/cdn/media/simple-hls-video.dev.js.map +1 -1
- package/cdn/media/simple-hls-video.js +6 -6
- package/cdn/media/simple-hls-video.js.map +1 -1
- package/cdn/{media-attach-mixin-DfKkofgF.js → media-attach-mixin-CMH1ziXP.js} +2 -2
- package/cdn/{media-attach-mixin-DfKkofgF.js.map → media-attach-mixin-CMH1ziXP.js.map} +1 -1
- package/cdn/{media-attach-mixin-Dv2D43tb.js → media-attach-mixin-DUzmXEJ3.js} +2 -2
- package/cdn/{media-attach-mixin-Dv2D43tb.js.map → media-attach-mixin-DUzmXEJ3.js.map} +1 -1
- package/cdn/{media-props-mixin-Dc5dpCV4.js → media-props-mixin-CZLZIhGT.js} +92 -8
- package/cdn/media-props-mixin-CZLZIhGT.js.map +1 -0
- package/cdn/media-props-mixin-DrjlZybt.js +47 -0
- package/cdn/media-props-mixin-DrjlZybt.js.map +1 -0
- package/cdn/{minimal-BUUGNZK7.js → minimal-D9Dw-L2P.js} +1 -1
- package/cdn/{minimal-BUUGNZK7.js.map → minimal-D9Dw-L2P.js.map} +1 -1
- package/cdn/{minimal-CJGOJ6pE.js → minimal-Dc5nNl_-.js} +1 -1
- package/cdn/{minimal-CJGOJ6pE.js.map → minimal-Dc5nNl_-.js.map} +1 -1
- package/cdn/mux-CBXn2z5k.js +3102 -0
- package/cdn/mux-CBXn2z5k.js.map +1 -0
- package/cdn/mux-DmGzBNIq.js +25 -0
- package/cdn/mux-DmGzBNIq.js.map +1 -0
- package/cdn/{native-hls-D2rfyyyW.js → native-hls-BCOLtRUl.js} +2 -3
- package/cdn/{native-hls-D2rfyyyW.js.map → native-hls-BCOLtRUl.js.map} +1 -1
- package/cdn/native-hls-BU8--1Kg.js +2 -0
- package/cdn/{native-hls-CjRvSXAJ.js.map → native-hls-BU8--1Kg.js.map} +1 -1
- package/cdn/player-DAmuLGE1.js +2 -0
- package/cdn/{player-Cz9-_j7J.js.map → player-DAmuLGE1.js.map} +1 -1
- package/cdn/{player-D0bhjT8X.js → player-Dbl1MUJ2.js} +3 -3
- package/cdn/{player-D0bhjT8X.js.map → player-Dbl1MUJ2.js.map} +1 -1
- package/cdn/poster-B9COb7AR.js +2 -0
- package/cdn/poster-B9COb7AR.js.map +1 -0
- package/cdn/poster-qAhnKWea.js +480 -0
- package/cdn/poster-qAhnKWea.js.map +1 -0
- package/cdn/{skin-element-DB-cKAAx.js → skin-element-DbmY-ske.js} +2 -2
- package/cdn/{skin-element-DB-cKAAx.js.map → skin-element-DbmY-ske.js.map} +1 -1
- package/cdn/{skin-element-zakTHELS.js → skin-element-ih3VrnYx.js} +2 -2
- package/cdn/{skin-element-zakTHELS.js.map → skin-element-ih3VrnYx.js.map} +1 -1
- package/cdn/video-minimal-ui.dev.js +4 -5
- package/cdn/video-minimal-ui.js +1 -1
- package/cdn/video-minimal.dev.js +7 -8
- package/cdn/video-minimal.dev.js.map +1 -1
- package/cdn/video-minimal.js +1 -1
- package/cdn/video-minimal.js.map +1 -1
- package/cdn/video-ui.dev.js +5 -5
- package/cdn/video-ui.js +1 -1
- package/cdn/video.dev.js +26 -7
- package/cdn/video.dev.js.map +1 -1
- package/cdn/video.js +1 -1
- package/cdn/video.js.map +1 -1
- package/cdn/volume-slider-BbIc1N4U.js +8 -0
- package/cdn/volume-slider-BbIc1N4U.js.map +1 -0
- package/cdn/{volume-slider-Co5X4Z1t.js → volume-slider-C6ek7oC9.js} +1855 -386
- package/cdn/volume-slider-C6ek7oC9.js.map +1 -0
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
- package/dist/default/define/audio/minimal-skin.css +23 -0
- package/dist/default/define/audio/skin.css +23 -0
- package/dist/default/define/audio/skin.js +1 -1
- package/dist/default/define/audio/skin.js.map +1 -1
- package/dist/default/define/audio/ui.js +1 -0
- package/dist/default/define/background/skin.js +1 -1
- package/dist/default/define/media/mux-audio.js +13 -0
- package/dist/default/define/media/mux-audio.js.map +1 -0
- package/dist/default/define/skin-element.js +1 -1
- package/dist/default/define/ui/hotkey.js +7 -0
- package/dist/default/define/ui/hotkey.js.map +1 -0
- package/dist/default/define/ui/slider.js +1 -1
- package/dist/default/define/ui/time-slider.js +1 -1
- package/dist/default/define/ui/volume-slider.js +1 -1
- package/dist/default/define/video/minimal-skin.css +23 -0
- package/dist/default/define/video/skin.css +23 -0
- package/dist/default/define/video/skin.js +1 -1
- package/dist/default/define/video/skin.js.map +1 -1
- package/dist/default/define/video/ui.js +1 -0
- package/dist/default/index.js +5 -1
- package/dist/default/media/container-element.js +16 -0
- package/dist/default/media/container-element.js.map +1 -1
- package/dist/default/media/mux-audio/index.js +18 -0
- package/dist/default/media/mux-audio/index.js.map +1 -0
- package/dist/default/player/context.js.map +1 -1
- package/dist/default/ui/alert-dialog/alert-dialog-element.js +1 -0
- package/dist/default/ui/alert-dialog/alert-dialog-element.js.map +1 -1
- package/dist/default/ui/buffering-indicator/buffering-indicator-element.js +1 -0
- package/dist/default/ui/buffering-indicator/buffering-indicator-element.js.map +1 -1
- package/dist/default/ui/captions-button/captions-button-element.js +1 -0
- package/dist/default/ui/captions-button/captions-button-element.js.map +1 -1
- package/dist/default/ui/error-dialog/error-dialog-element.js +1 -0
- package/dist/default/ui/error-dialog/error-dialog-element.js.map +1 -1
- package/dist/default/ui/fullscreen-button/fullscreen-button-element.js +1 -0
- package/dist/default/ui/fullscreen-button/fullscreen-button-element.js.map +1 -1
- package/dist/default/ui/hotkey/aria-key-shortcuts-controller.js +28 -0
- package/dist/default/ui/hotkey/aria-key-shortcuts-controller.js.map +1 -0
- package/dist/default/ui/hotkey/hotkey-element.js +81 -0
- package/dist/default/ui/hotkey/hotkey-element.js.map +1 -0
- package/dist/default/ui/media-button-element.js +9 -1
- package/dist/default/ui/media-button-element.js.map +1 -1
- package/dist/default/ui/mute-button/mute-button-element.js +1 -0
- package/dist/default/ui/mute-button/mute-button-element.js.map +1 -1
- package/dist/default/ui/pip-button/pip-button-element.js +1 -0
- package/dist/default/ui/pip-button/pip-button-element.js.map +1 -1
- package/dist/default/ui/play-button/play-button-element.js +1 -0
- package/dist/default/ui/play-button/play-button-element.js.map +1 -1
- package/dist/default/ui/popover/popover-element.js +7 -55
- package/dist/default/ui/popover/popover-element.js.map +1 -1
- package/dist/default/ui/position-controller.js +76 -0
- package/dist/default/ui/position-controller.js.map +1 -0
- package/dist/default/ui/slider/slider-element.js +1 -1
- package/dist/default/ui/slider/slider-preview-element.js +1 -1
- package/dist/default/ui/time-slider/time-slider-element.js +5 -5
- package/dist/default/ui/time-slider/time-slider-element.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-element.js +8 -54
- package/dist/default/ui/tooltip/tooltip-element.js.map +1 -1
- package/dist/default/ui/volume-slider/volume-slider-element.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
- package/dist/dev/define/audio/minimal-skin.css +23 -0
- package/dist/dev/define/audio/skin.css +23 -0
- package/dist/dev/define/audio/skin.d.ts.map +1 -1
- package/dist/dev/define/audio/skin.js +16 -0
- package/dist/dev/define/audio/skin.js.map +1 -1
- package/dist/dev/define/audio/ui.js +1 -0
- package/dist/dev/define/background/skin.js +1 -1
- package/dist/dev/define/media/mux-audio.d.ts +14 -0
- package/dist/dev/define/media/mux-audio.d.ts.map +1 -0
- package/dist/dev/define/media/mux-audio.js +13 -0
- package/dist/dev/define/media/mux-audio.js.map +1 -0
- package/dist/dev/define/skin-element.d.ts +1 -1
- package/dist/dev/define/skin-element.js +1 -1
- package/dist/dev/define/ui/hotkey.d.ts +9 -0
- package/dist/dev/define/ui/hotkey.d.ts.map +1 -0
- package/dist/dev/define/ui/hotkey.js +7 -0
- package/dist/dev/define/ui/hotkey.js.map +1 -0
- package/dist/dev/define/ui/slider.js +1 -1
- package/dist/dev/define/ui/time-slider.js +1 -1
- package/dist/dev/define/ui/volume-slider.js +1 -1
- package/dist/dev/define/video/minimal-skin.css +23 -0
- package/dist/dev/define/video/skin.css +23 -0
- package/dist/dev/define/video/skin.d.ts.map +1 -1
- package/dist/dev/define/video/skin.js +19 -0
- package/dist/dev/define/video/skin.js.map +1 -1
- package/dist/dev/define/video/ui.js +1 -0
- package/dist/dev/index.d.ts +6 -2
- package/dist/dev/index.js +5 -1
- package/dist/dev/media/container-element.d.ts +3 -0
- package/dist/dev/media/container-element.d.ts.map +1 -1
- package/dist/dev/media/container-element.js +16 -0
- package/dist/dev/media/container-element.js.map +1 -1
- package/dist/dev/media/mux-audio/index.d.ts +11 -0
- package/dist/dev/media/mux-audio/index.d.ts.map +1 -0
- package/dist/dev/media/mux-audio/index.js +18 -0
- package/dist/dev/media/mux-audio/index.js.map +1 -0
- package/dist/dev/player/context.d.ts +4 -2
- package/dist/dev/player/context.d.ts.map +1 -1
- package/dist/dev/player/context.js.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-element.d.ts.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-element.js +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-element.js.map +1 -1
- package/dist/dev/ui/buffering-indicator/buffering-indicator-element.d.ts.map +1 -1
- package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js +1 -0
- package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js.map +1 -1
- package/dist/dev/ui/captions-button/captions-button-element.d.ts +1 -0
- package/dist/dev/ui/captions-button/captions-button-element.d.ts.map +1 -1
- package/dist/dev/ui/captions-button/captions-button-element.js +1 -0
- package/dist/dev/ui/captions-button/captions-button-element.js.map +1 -1
- package/dist/dev/ui/context-part-element.d.ts +1 -1
- package/dist/dev/ui/error-dialog/error-dialog-element.d.ts.map +1 -1
- package/dist/dev/ui/error-dialog/error-dialog-element.js +1 -0
- package/dist/dev/ui/error-dialog/error-dialog-element.js.map +1 -1
- package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts +1 -0
- package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts.map +1 -1
- package/dist/dev/ui/fullscreen-button/fullscreen-button-element.js +1 -0
- package/dist/dev/ui/fullscreen-button/fullscreen-button-element.js.map +1 -1
- package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.d.ts +15 -0
- package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.d.ts.map +1 -0
- package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.js +28 -0
- package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.js.map +1 -0
- package/dist/dev/ui/hotkey/hotkey-element.d.ts +21 -0
- package/dist/dev/ui/hotkey/hotkey-element.d.ts.map +1 -0
- package/dist/dev/ui/hotkey/hotkey-element.js +81 -0
- package/dist/dev/ui/hotkey/hotkey-element.js.map +1 -0
- package/dist/dev/ui/media-button-element.d.ts +2 -0
- package/dist/dev/ui/media-button-element.d.ts.map +1 -1
- package/dist/dev/ui/media-button-element.js +9 -1
- package/dist/dev/ui/media-button-element.js.map +1 -1
- package/dist/dev/ui/mute-button/mute-button-element.d.ts +1 -0
- package/dist/dev/ui/mute-button/mute-button-element.d.ts.map +1 -1
- package/dist/dev/ui/mute-button/mute-button-element.js +1 -0
- package/dist/dev/ui/mute-button/mute-button-element.js.map +1 -1
- package/dist/dev/ui/pip-button/pip-button-element.d.ts +1 -0
- package/dist/dev/ui/pip-button/pip-button-element.d.ts.map +1 -1
- package/dist/dev/ui/pip-button/pip-button-element.js +1 -0
- package/dist/dev/ui/pip-button/pip-button-element.js.map +1 -1
- package/dist/dev/ui/play-button/play-button-element.d.ts +1 -0
- package/dist/dev/ui/play-button/play-button-element.d.ts.map +1 -1
- package/dist/dev/ui/play-button/play-button-element.js +1 -0
- package/dist/dev/ui/play-button/play-button-element.js.map +1 -1
- package/dist/dev/ui/popover/popover-element.d.ts.map +1 -1
- package/dist/dev/ui/popover/popover-element.js +7 -55
- package/dist/dev/ui/popover/popover-element.js.map +1 -1
- package/dist/dev/ui/position-controller.js +76 -0
- package/dist/dev/ui/position-controller.js.map +1 -0
- package/dist/dev/ui/slider/slider-element.js +1 -1
- package/dist/dev/ui/slider/slider-preview-element.d.ts +21 -0
- package/dist/dev/ui/slider/slider-preview-element.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-preview-element.js +1 -1
- package/dist/dev/ui/time-slider/time-slider-element.d.ts +2 -2
- package/dist/dev/ui/time-slider/time-slider-element.js +5 -5
- package/dist/dev/ui/time-slider/time-slider-element.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-element.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-element.js +8 -54
- package/dist/dev/ui/tooltip/tooltip-element.js.map +1 -1
- package/dist/dev/ui/volume-slider/volume-slider-element.js +1 -1
- package/package.json +8 -8
- package/cdn/context-BjrbhiSk.js.map +0 -1
- package/cdn/context-CdkhXQEw.js +0 -14
- package/cdn/context-CdkhXQEw.js.map +0 -1
- package/cdn/create-player-BqU8r8H4.js +0 -7
- package/cdn/create-player-BqU8r8H4.js.map +0 -1
- package/cdn/create-player-p9xCO0yC.js.map +0 -1
- package/cdn/delegate-B626t_Va.js +0 -2
- package/cdn/delegate-B626t_Va.js.map +0 -1
- package/cdn/delegate-BCw-LjP_.js +0 -56
- package/cdn/delegate-BCw-LjP_.js.map +0 -1
- package/cdn/media-props-mixin-Bd_N2HWy.js +0 -47
- package/cdn/media-props-mixin-Bd_N2HWy.js.map +0 -1
- package/cdn/media-props-mixin-Dc5dpCV4.js.map +0 -1
- package/cdn/native-hls-CjRvSXAJ.js +0 -2
- package/cdn/player-Cz9-_j7J.js +0 -2
- package/cdn/poster-2FPYTjyv.js +0 -2
- package/cdn/poster-2FPYTjyv.js.map +0 -1
- package/cdn/poster-gVT-J1-z.js +0 -215
- package/cdn/poster-gVT-J1-z.js.map +0 -1
- package/cdn/volume-slider-Co5X4Z1t.js.map +0 -1
- package/cdn/volume-slider-D18sXnIA.js +0 -8
- package/cdn/volume-slider-D18sXnIA.js.map +0 -1
- /package/cdn/{minimal-ui-BL9eBXck.js → minimal-ui-DXFwjywa.js} +0 -0
- /package/cdn/{minimal-ui-a1UOKF79.js → minimal-ui-jrmrxIOn.js} +0 -0
- /package/cdn/{ui-CFIgmrlA.js → ui-18UYtw8D.js} +0 -0
- /package/cdn/{ui-Ccp_LyCf.js → ui-8HVY3XSt.js} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as MediaElement,
|
|
2
|
-
import {
|
|
1
|
+
import { a as MediaElement, c as audioFeatures, i as MediaContainerElement, t as createPlayer } from "./create-player-DckZq-sE.js";
|
|
2
|
+
import { o as safeDefine } from "./context-CvJ83xGk.js";
|
|
3
3
|
|
|
4
4
|
//#region src/define/audio/player.ts
|
|
5
5
|
const { ProviderMixin } = createPlayer({ features: audioFeatures });
|
|
@@ -12,4 +12,4 @@ safeDefine(AudioPlayerElement);
|
|
|
12
12
|
safeDefine(MediaContainerElement);
|
|
13
13
|
|
|
14
14
|
//#endregion
|
|
15
|
-
//# sourceMappingURL=player-
|
|
15
|
+
//# sourceMappingURL=player-Dbl1MUJ2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"player-
|
|
1
|
+
{"version":3,"file":"player-Dbl1MUJ2.js","names":[],"sources":["../src/define/audio/player.ts"],"sourcesContent":["import { audioFeatures } from '@videojs/core/dom';\nimport { MediaContainerElement } from '../../media/container-element';\nimport { createPlayer } from '../../player/create-player';\nimport { MediaElement } from '../../ui/media-element';\nimport { safeDefine } from '../safe-define';\n\nconst { ProviderMixin } = createPlayer({\n features: audioFeatures,\n});\n\nexport class AudioPlayerElement extends ProviderMixin(MediaElement) {\n static readonly tagName = 'audio-player';\n}\n\n// Provider must be defined before consumer for context handshake during upgrade.\nsafeDefine(AudioPlayerElement);\nsafeDefine(MediaContainerElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [AudioPlayerElement.tagName]: AudioPlayerElement;\n }\n}\n"],"mappings":";;;;AAMA,MAAM,EAAE,kBAAkB,aAAa,EACrC,UAAU,eACX,CAAC;AAEF,IAAa,qBAAb,cAAwC,cAAc,aAAa,CAAC;;iBACxC;;;AAI5B,WAAW,mBAAmB;AAC9B,WAAW,sBAAsB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e,c as t,n,o as r,p as i,r as a,s as o,t as s,u as c}from"./volume-slider-BbIc1N4U.js";import{E as l,S as u,a as d,i as f,n as p,o as m,s as h,t as g,u as _}from"./create-player-B_oNyyb5.js";import{i as v,o as y,r as b}from"./context-C-IpVHEt.js";const{ProviderMixin:x}=g({features:_});y(class extends x(d){static{this.tagName=`video-player`}}),y(f);var S=class e{static defaultProps={delay:500};state=u({visible:!1});#e={...e.defaultProps};#t=null;setProps(t){this.#e=i(t,e.defaultProps)}destroy(){this.#n()}update(e){let t=e.waiting&&!e.paused;t&&!this.state.current.visible&&!this.#t?this.#t=setTimeout(()=>{this.#t=null,this.state.patch({visible:!0})},this.#e.delay):t||(this.#n(),this.state.patch({visible:!1}))}#n(){this.#t!==null&&(clearTimeout(this.#t),this.#t=null)}};const C={visible:`data-visible`};var w=class e{static defaultProps={label:``,disabled:!1};state=u({subtitlesShowing:!1,availability:`unavailable`,label:``});#e={...e.defaultProps};#t=null;constructor(e){e&&this.setProps(e)}setProps(t){this.#e=i(t,e.defaultProps)}getLabel(e){let{label:t}=this.#e;if(l(t)){let n=t(e);if(n)return n}else if(t)return t;return e.subtitlesShowing?`Disable captions`:`Enable captions`}getAttrs(e){return{"aria-label":this.getLabel(e),"aria-disabled":this.#e.disabled?`true`:void 0}}setMedia(e){this.#t=e}getState(){let e=this.#t,t=e.textTrackList.some(e=>e.kind===`captions`||e.kind===`subtitles`)?`available`:`unavailable`;return this.state.patch({subtitlesShowing:e.subtitlesShowing,availability:t}),this.state.patch({label:this.getLabel(this.state.current)}),this.state.current}toggle(e){this.#e.disabled||e.toggleSubtitles()}};const T={subtitlesShowing:`data-active`,availability:`data-availability`};var E=class{#e=null;setMedia(e){this.#e=e}getState(){let e=this.#e;return{visible:e.controlsVisible,userActive:e.userActive}}};const D={visible:`data-visible`,userActive:`data-user-active`};var O=class e{static defaultProps={label:``,disabled:!1};state=u({fullscreen:!1,availability:`available`,label:``});#e={...e.defaultProps};#t=null;constructor(e){e&&this.setProps(e)}setProps(t){this.#e=i(t,e.defaultProps)}getLabel(e){let{label:t}=this.#e;if(l(t)){let n=t(e);if(n)return n}else if(t)return t;return e.fullscreen?`Exit fullscreen`:`Enter fullscreen`}getAttrs(e){return{"aria-label":this.getLabel(e),"aria-disabled":this.#e.disabled?`true`:void 0}}setMedia(e){this.#t=e}getState(){let e=this.#t;return this.state.patch({fullscreen:e.fullscreen,availability:e.fullscreenAvailability}),this.state.patch({label:this.getLabel(this.state.current)}),this.state.current}async toggle(e){if(!this.#e.disabled&&e.fullscreenAvailability===`available`)try{e.fullscreen?await e.exitFullscreen():await e.requestFullscreen()}catch{}}};const k={fullscreen:`data-fullscreen`,availability:`data-availability`};var A=class e{static defaultProps={label:``,disabled:!1};state=u({pip:!1,availability:`available`,label:``});#e={...e.defaultProps};#t=null;constructor(e){e&&this.setProps(e)}setProps(t){this.#e=i(t,e.defaultProps)}getLabel(e){let{label:t}=this.#e;if(l(t)){let n=t(e);if(n)return n}else if(t)return t;return e.pip?`Exit picture-in-picture`:`Enter picture-in-picture`}getAttrs(e){return{"aria-label":this.getLabel(e),"aria-disabled":this.#e.disabled?`true`:void 0}}setMedia(e){this.#t=e}getState(){let e=this.#t;return this.state.patch({pip:e.pip,availability:e.pipAvailability}),this.state.patch({label:this.getLabel(this.state.current)}),this.state.current}async toggle(e){if(!this.#e.disabled&&e.pipAvailability===`available`)try{e.pip?await e.exitPictureInPicture():await e.requestPictureInPicture()}catch{}}};const j={pip:`data-pip`,availability:`data-availability`};var M=class{#e=null;setMedia(e){this.#e=e}getState(){return{visible:!this.#e.started}}};const N={visible:`data-visible`};y(class extends d{constructor(...e){super(...e),this.delay=S.defaultProps.delay}static{this.tagName=`media-buffering-indicator`}static{this.properties={delay:{type:Number}}}#e=new S;#t=new p(this,b,t);#n=null;connectedCallback(){super.connectedCallback(),!this.destroyed&&(this.#n=new AbortController,this.#e.state.subscribe(()=>this.requestUpdate(),{signal:this.#n.signal}))}disconnectedCallback(){super.disconnectedCallback(),this.#n?.abort(),this.#n=null}willUpdate(e){super.willUpdate(e),this.#e.setProps(this)}update(e){super.update(e);let t=this.#t.value;t&&(this.#e.update(t),a(this,this.#e.state.current,C))}}),y(class extends n{constructor(...e){super(...e),this.core=new w,this.stateAttrMap=T,this.mediaState=new p(this,b,c),this.hotkeyAction=`toggleSubtitles`}static{this.tagName=`media-captions-button`}activate(e){this.core.toggle(e)}});const P=v(Symbol(`@videojs/controls`));var F=class extends d{static{this.tagName=`media-controls`}#e=new E;#t=new p(this,b,e);#n=new m(this,{context:P});connectedCallback(){super.connectedCallback()}update(e){super.update(e);let t=this.#t.value;if(!t)return;this.#e.setMedia(t);let n=this.#e.getState();a(this,n,D),this.#n.setValue({state:n,stateAttrMap:D})}},I=class extends s{constructor(...e){super(...e),this.consumer=new h(this,{context:P,subscribe:!0})}static{this.tagName=`media-controls-group`}connectedCallback(){super.connectedCallback(),(this.hasAttribute(`aria-label`)||this.hasAttribute(`aria-labelledby`))&&this.setAttribute(`role`,`group`)}};y(F),y(I),y(class extends n{constructor(...e){super(...e),this.core=new O,this.stateAttrMap=k,this.mediaState=new p(this,b,r),this.hotkeyAction=`toggleFullscreen`}static{this.tagName=`media-fullscreen-button`}activate(e){this.core.toggle(e)}}),y(class extends n{constructor(...e){super(...e),this.core=new A,this.stateAttrMap=j,this.mediaState=new p(this,b,o),this.hotkeyAction=`togglePiP`}static{this.tagName=`media-pip-button`}activate(e){this.core.toggle(e)}});var L=class extends d{connectedCallback(){super.connectedCallback()}update(e){super.update(e);let t=this.mediaState.value;if(!t)return;this.core.setMedia(t);let n=this.core.getState();a(this,n,this.stateAttrMap)}};y(class extends L{constructor(...e){super(...e),this.core=new M,this.stateAttrMap=N,this.mediaState=new p(this,b,t)}static{this.tagName=`media-poster`}});
|
|
2
|
+
//# sourceMappingURL=poster-B9COb7AR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poster-B9COb7AR.js","names":["#props","#clearTimer","#timer","#props","#media","#media","#props","#media","#props","#media","#media","#core","#state","#disconnect","createContext","#core","#mediaState","#provider","ContextProvider","ContextConsumer"],"sources":["../src/define/video/player.ts","../../core/dist/default/core/ui/buffering-indicator/buffering-indicator-core.js","../../core/dist/default/core/ui/buffering-indicator/buffering-indicator-data-attrs.js","../../core/dist/default/core/ui/captions-button/captions-button-core.js","../../core/dist/default/core/ui/captions-button/captions-button-data-attrs.js","../../core/dist/default/core/ui/controls/controls-core.js","../../core/dist/default/core/ui/controls/controls-data-attrs.js","../../core/dist/default/core/ui/fullscreen-button/fullscreen-button-core.js","../../core/dist/default/core/ui/fullscreen-button/fullscreen-button-data-attrs.js","../../core/dist/default/core/ui/pip-button/pip-button-core.js","../../core/dist/default/core/ui/pip-button/pip-button-data-attrs.js","../../core/dist/default/core/ui/poster/poster-core.js","../../core/dist/default/core/ui/poster/poster-data-attrs.js","../src/ui/buffering-indicator/buffering-indicator-element.ts","../src/define/ui/buffering-indicator.ts","../src/ui/captions-button/captions-button-element.ts","../src/define/ui/captions-button.ts","../src/ui/controls/context.ts","../src/ui/controls/controls-element.ts","../src/ui/controls/controls-group-element.ts","../src/define/ui/controls.ts","../src/ui/fullscreen-button/fullscreen-button-element.ts","../src/define/ui/fullscreen-button.ts","../src/ui/pip-button/pip-button-element.ts","../src/define/ui/pip-button.ts","../src/ui/media-ui-element.ts","../src/ui/poster/poster-element.ts","../src/define/ui/poster.ts"],"sourcesContent":["import { videoFeatures } from '@videojs/core/dom';\nimport { MediaContainerElement } from '../../media/container-element';\nimport { createPlayer } from '../../player/create-player';\nimport { MediaElement } from '../../ui/media-element';\nimport { safeDefine } from '../safe-define';\n\nconst { ProviderMixin } = createPlayer({\n features: videoFeatures,\n});\n\nexport class VideoPlayerElement extends ProviderMixin(MediaElement) {\n static readonly tagName = 'video-player';\n}\n\n// Provider must be defined before consumer for context handshake during upgrade.\nsafeDefine(VideoPlayerElement);\nsafeDefine(MediaContainerElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VideoPlayerElement.tagName]: VideoPlayerElement;\n }\n}\n","import { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\n//#region src/core/ui/buffering-indicator/buffering-indicator-core.ts\nvar BufferingIndicatorCore = class BufferingIndicatorCore {\n\tstatic defaultProps = { delay: 500 };\n\tstate = createState({ visible: false });\n\t#props = { ...BufferingIndicatorCore.defaultProps };\n\t#timer = null;\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, BufferingIndicatorCore.defaultProps);\n\t}\n\tdestroy() {\n\t\tthis.#clearTimer();\n\t}\n\tupdate(media) {\n\t\tconst buffering = media.waiting && !media.paused;\n\t\tif (buffering && !this.state.current.visible && !this.#timer) this.#timer = setTimeout(() => {\n\t\t\tthis.#timer = null;\n\t\t\tthis.state.patch({ visible: true });\n\t\t}, this.#props.delay);\n\t\telse if (!buffering) {\n\t\t\tthis.#clearTimer();\n\t\t\tthis.state.patch({ visible: false });\n\t\t}\n\t}\n\t#clearTimer() {\n\t\tif (this.#timer !== null) {\n\t\t\tclearTimeout(this.#timer);\n\t\t\tthis.#timer = null;\n\t\t}\n\t}\n};\n//#endregion\nexport { BufferingIndicatorCore };\n\n//# sourceMappingURL=buffering-indicator-core.js.map","//#region src/core/ui/buffering-indicator/buffering-indicator-data-attrs.ts\nconst BufferingIndicatorDataAttrs = { visible: \"data-visible\" };\n//#endregion\nexport { BufferingIndicatorDataAttrs };\n\n//# sourceMappingURL=buffering-indicator-data-attrs.js.map","import { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\nimport { isFunction } from \"@videojs/utils/predicate\";\n//#region src/core/ui/captions-button/captions-button-core.ts\nvar CaptionsButtonCore = class CaptionsButtonCore {\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\tsubtitlesShowing: false,\n\t\tavailability: \"unavailable\",\n\t\tlabel: \"\"\n\t});\n\t#props = { ...CaptionsButtonCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, CaptionsButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst { label } = this.#props;\n\t\tif (isFunction(label)) {\n\t\t\tconst customLabel = label(state);\n\t\t\tif (customLabel) return customLabel;\n\t\t} else if (label) return label;\n\t\treturn state.subtitlesShowing ? \"Disable captions\" : \"Enable captions\";\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": this.#props.disabled ? \"true\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tconst availability = media.textTrackList.some((t) => t.kind === \"captions\" || t.kind === \"subtitles\") ? \"available\" : \"unavailable\";\n\t\tthis.state.patch({\n\t\t\tsubtitlesShowing: media.subtitlesShowing,\n\t\t\tavailability\n\t\t});\n\t\tthis.state.patch({ label: this.getLabel(this.state.current) });\n\t\treturn this.state.current;\n\t}\n\ttoggle(media) {\n\t\tif (this.#props.disabled) return;\n\t\tmedia.toggleSubtitles();\n\t}\n};\n//#endregion\nexport { CaptionsButtonCore };\n\n//# sourceMappingURL=captions-button-core.js.map","//#region src/core/ui/captions-button/captions-button-data-attrs.ts\nconst CaptionsButtonDataAttrs = {\n\tsubtitlesShowing: \"data-active\",\n\tavailability: \"data-availability\"\n};\n//#endregion\nexport { CaptionsButtonDataAttrs };\n\n//# sourceMappingURL=captions-button-data-attrs.js.map","//#region src/core/ui/controls/controls-core.ts\nvar ControlsCore = class {\n\t#media = null;\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\treturn {\n\t\t\tvisible: media.controlsVisible,\n\t\t\tuserActive: media.userActive\n\t\t};\n\t}\n};\n//#endregion\nexport { ControlsCore };\n\n//# sourceMappingURL=controls-core.js.map","//#region src/core/ui/controls/controls-data-attrs.ts\nconst ControlsDataAttrs = {\n\tvisible: \"data-visible\",\n\tuserActive: \"data-user-active\"\n};\n//#endregion\nexport { ControlsDataAttrs };\n\n//# sourceMappingURL=controls-data-attrs.js.map","import { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\nimport { isFunction } from \"@videojs/utils/predicate\";\n//#region src/core/ui/fullscreen-button/fullscreen-button-core.ts\nvar FullscreenButtonCore = class FullscreenButtonCore {\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\tfullscreen: false,\n\t\tavailability: \"available\",\n\t\tlabel: \"\"\n\t});\n\t#props = { ...FullscreenButtonCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, FullscreenButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst { label } = this.#props;\n\t\tif (isFunction(label)) {\n\t\t\tconst customLabel = label(state);\n\t\t\tif (customLabel) return customLabel;\n\t\t} else if (label) return label;\n\t\treturn state.fullscreen ? \"Exit fullscreen\" : \"Enter fullscreen\";\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": this.#props.disabled ? \"true\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tthis.state.patch({\n\t\t\tfullscreen: media.fullscreen,\n\t\t\tavailability: media.fullscreenAvailability\n\t\t});\n\t\tthis.state.patch({ label: this.getLabel(this.state.current) });\n\t\treturn this.state.current;\n\t}\n\tasync toggle(media) {\n\t\tif (this.#props.disabled) return;\n\t\tif (media.fullscreenAvailability !== \"available\") return;\n\t\ttry {\n\t\t\tif (media.fullscreen) await media.exitFullscreen();\n\t\t\telse await media.requestFullscreen();\n\t\t} catch {}\n\t}\n};\n//#endregion\nexport { FullscreenButtonCore };\n\n//# sourceMappingURL=fullscreen-button-core.js.map","//#region src/core/ui/fullscreen-button/fullscreen-button-data-attrs.ts\nconst FullscreenButtonDataAttrs = {\n\tfullscreen: \"data-fullscreen\",\n\tavailability: \"data-availability\"\n};\n//#endregion\nexport { FullscreenButtonDataAttrs };\n\n//# sourceMappingURL=fullscreen-button-data-attrs.js.map","import { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\nimport { isFunction } from \"@videojs/utils/predicate\";\n//#region src/core/ui/pip-button/pip-button-core.ts\nvar PiPButtonCore = class PiPButtonCore {\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\tpip: false,\n\t\tavailability: \"available\",\n\t\tlabel: \"\"\n\t});\n\t#props = { ...PiPButtonCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, PiPButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst { label } = this.#props;\n\t\tif (isFunction(label)) {\n\t\t\tconst customLabel = label(state);\n\t\t\tif (customLabel) return customLabel;\n\t\t} else if (label) return label;\n\t\treturn state.pip ? \"Exit picture-in-picture\" : \"Enter picture-in-picture\";\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": this.#props.disabled ? \"true\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tthis.state.patch({\n\t\t\tpip: media.pip,\n\t\t\tavailability: media.pipAvailability\n\t\t});\n\t\tthis.state.patch({ label: this.getLabel(this.state.current) });\n\t\treturn this.state.current;\n\t}\n\tasync toggle(media) {\n\t\tif (this.#props.disabled) return;\n\t\tif (media.pipAvailability !== \"available\") return;\n\t\ttry {\n\t\t\tif (media.pip) await media.exitPictureInPicture();\n\t\t\telse await media.requestPictureInPicture();\n\t\t} catch {}\n\t}\n};\n//#endregion\nexport { PiPButtonCore };\n\n//# sourceMappingURL=pip-button-core.js.map","//#region src/core/ui/pip-button/pip-button-data-attrs.ts\nconst PiPButtonDataAttrs = {\n\tpip: \"data-pip\",\n\tavailability: \"data-availability\"\n};\n//#endregion\nexport { PiPButtonDataAttrs };\n\n//# sourceMappingURL=pip-button-data-attrs.js.map","//#region src/core/ui/poster/poster-core.ts\nvar PosterCore = class {\n\t#media = null;\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\treturn { visible: !this.#media.started };\n\t}\n};\n//#endregion\nexport { PosterCore };\n\n//# sourceMappingURL=poster-core.js.map","//#region src/core/ui/poster/poster-data-attrs.ts\nconst PosterDataAttrs = { visible: \"data-visible\" };\n//#endregion\nexport { PosterDataAttrs };\n\n//# sourceMappingURL=poster-data-attrs.js.map","import { BufferingIndicatorCore, BufferingIndicatorDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectPlayback } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class BufferingIndicatorElement extends MediaElement {\n static readonly tagName = 'media-buffering-indicator';\n\n static override properties = {\n delay: { type: Number },\n } satisfies PropertyDeclarationMap<keyof BufferingIndicatorCore.Props>;\n\n delay = BufferingIndicatorCore.defaultProps.delay;\n\n readonly #core = new BufferingIndicatorCore();\n readonly #state = new PlayerController(this, playerContext, selectPlayback);\n\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.#disconnect = new AbortController();\n\n this.#core.state.subscribe(() => this.requestUpdate(), {\n signal: this.#disconnect.signal,\n });\n\n if (__DEV__ && !this.#state.value) {\n logMissingFeature(this.localName, this.#state.displayName!);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.#core.setProps(this);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.#state.value;\n\n if (!media) return;\n\n this.#core.update(media);\n applyStateDataAttrs(this, this.#core.state.current, BufferingIndicatorDataAttrs);\n }\n}\n","import { BufferingIndicatorElement } from '../../ui/buffering-indicator/buffering-indicator-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(BufferingIndicatorElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [BufferingIndicatorElement.tagName]: BufferingIndicatorElement;\n }\n}\n","import { CaptionsButtonCore, CaptionsButtonDataAttrs, type MediaTextTrackState } from '@videojs/core';\nimport { selectTextTrack } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class CaptionsButtonElement extends MediaButtonElement<CaptionsButtonCore> {\n static readonly tagName = 'media-captions-button';\n\n protected readonly core = new CaptionsButtonCore();\n protected readonly stateAttrMap = CaptionsButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectTextTrack);\n protected override readonly hotkeyAction = 'toggleSubtitles';\n\n protected activate(state: MediaTextTrackState): void {\n this.core.toggle(state);\n }\n}\n","import { CaptionsButtonElement } from '../../ui/captions-button/captions-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(CaptionsButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [CaptionsButtonElement.tagName]: CaptionsButtonElement;\n }\n}\n","import type { ControlsState, StateAttrMap } from '@videojs/core';\nimport { createContext } from '@videojs/element/context';\n\nexport interface ControlsContextValue {\n state: ControlsState;\n stateAttrMap: StateAttrMap<ControlsState>;\n}\n\nconst CONTROLS_CONTEXT_KEY = Symbol('@videojs/controls');\n\nexport const controlsContext = createContext<ControlsContextValue>(CONTROLS_CONTEXT_KEY);\n","import { ControlsCore, ControlsDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectControls } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\nimport { controlsContext } from './context';\n\nexport class ControlsElement extends MediaElement {\n static readonly tagName = 'media-controls';\n\n readonly #core = new ControlsCore();\n readonly #mediaState = new PlayerController(this, playerContext, selectControls);\n readonly #provider = new ContextProvider(this, { context: controlsContext });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n const media = this.#mediaState.value;\n if (!media) return;\n\n this.#core.setMedia(media);\n const state = this.#core.getState();\n\n applyStateDataAttrs(this, state, ControlsDataAttrs);\n\n this.#provider.setValue({\n state,\n stateAttrMap: ControlsDataAttrs,\n });\n }\n}\n","import type { ControlsState } from '@videojs/core';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { controlsContext } from './context';\n\nexport class ControlsGroupElement extends ContextPartElement<ControlsState> {\n static readonly tagName = 'media-controls-group';\n\n protected readonly consumer = new ContextConsumer(this, { context: controlsContext, subscribe: true });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.hasAttribute('aria-label') || this.hasAttribute('aria-labelledby')) {\n this.setAttribute('role', 'group');\n }\n }\n}\n","import { ControlsElement } from '../../ui/controls/controls-element';\nimport { ControlsGroupElement } from '../../ui/controls/controls-group-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(ControlsElement);\nsafeDefine(ControlsGroupElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ControlsElement.tagName]: ControlsElement;\n }\n}\n","import { FullscreenButtonCore, FullscreenButtonDataAttrs, type MediaFullscreenState } from '@videojs/core';\nimport { selectFullscreen } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class FullscreenButtonElement extends MediaButtonElement<FullscreenButtonCore> {\n static readonly tagName = 'media-fullscreen-button';\n\n protected readonly core = new FullscreenButtonCore();\n protected readonly stateAttrMap = FullscreenButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectFullscreen);\n protected override readonly hotkeyAction = 'toggleFullscreen';\n\n protected activate(state: MediaFullscreenState): void {\n this.core.toggle(state);\n }\n}\n","import { FullscreenButtonElement } from '../../ui/fullscreen-button/fullscreen-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(FullscreenButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [FullscreenButtonElement.tagName]: FullscreenButtonElement;\n }\n}\n","import { type MediaPictureInPictureState, PiPButtonCore, PiPButtonDataAttrs } from '@videojs/core';\nimport { selectPiP } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PiPButtonElement extends MediaButtonElement<PiPButtonCore> {\n static readonly tagName = 'media-pip-button';\n\n protected readonly core = new PiPButtonCore();\n protected readonly stateAttrMap = PiPButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPiP);\n protected override readonly hotkeyAction = 'togglePiP';\n\n protected activate(state: MediaPictureInPictureState): void {\n this.core.toggle(state);\n }\n}\n","import { PiPButtonElement } from '../../ui/pip-button/pip-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(PiPButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [PiPButtonElement.tagName]: PiPButtonElement;\n }\n}\n","import type { InferComponentState, InferMediaState, MediaUIComponent, StateAttrMap } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\n\nimport type { PlayerController } from '../player/player-controller';\nimport { MediaElement } from './media-element';\n\n/** Abstract base for HTML custom elements that display media state with data attributes. */\nexport abstract class MediaUIElement<Core extends MediaUIComponent> extends MediaElement {\n protected abstract readonly core: Core;\n protected abstract readonly stateAttrMap: StateAttrMap<InferComponentState<Core>>;\n protected abstract readonly mediaState: PlayerController<any, InferMediaState<Core> | undefined>;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (__DEV__ && !this.mediaState.value && this.mediaState.displayName) {\n logMissingFeature(this.localName, this.mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.mediaState.value;\n\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n applyStateDataAttrs(this, state, this.stateAttrMap);\n }\n}\n","import { PosterCore, PosterDataAttrs } from '@videojs/core';\nimport { selectPlayback } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaUIElement } from '../media-ui-element';\n\nexport class PosterElement extends MediaUIElement<PosterCore> {\n static readonly tagName = 'media-poster';\n\n protected readonly core = new PosterCore();\n protected readonly stateAttrMap = PosterDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlayback);\n}\n","import { PosterElement } from '../../ui/poster/poster-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(PosterElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [PosterElement.tagName]: PosterElement;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,480 @@
|
|
|
1
|
+
import { c as selectPiP, d as selectTextTrack, i as logMissingFeature, l as selectPlayback, m as defaults, n as MediaButtonElement, o as selectControls, r as applyStateDataAttrs, s as selectFullscreen, t as ContextPartElement } from "./volume-slider-C6ek7oC9.js";
|
|
2
|
+
import { E as isFunction, S as createState, a as MediaElement, i as MediaContainerElement, n as PlayerController, o as ContextProvider, s as ContextConsumer, t as createPlayer, u as videoFeatures } from "./create-player-DckZq-sE.js";
|
|
3
|
+
import { i as createContext, o as safeDefine, r as playerContext } from "./context-CvJ83xGk.js";
|
|
4
|
+
|
|
5
|
+
//#region src/define/video/player.ts
|
|
6
|
+
const { ProviderMixin } = createPlayer({ features: videoFeatures });
|
|
7
|
+
var VideoPlayerElement = class extends ProviderMixin(MediaElement) {
|
|
8
|
+
static {
|
|
9
|
+
this.tagName = "video-player";
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
safeDefine(VideoPlayerElement);
|
|
13
|
+
safeDefine(MediaContainerElement);
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
//#region ../core/dist/dev/core/ui/buffering-indicator/buffering-indicator-core.js
|
|
17
|
+
var BufferingIndicatorCore = class BufferingIndicatorCore {
|
|
18
|
+
static defaultProps = { delay: 500 };
|
|
19
|
+
state = createState({ visible: false });
|
|
20
|
+
#props = { ...BufferingIndicatorCore.defaultProps };
|
|
21
|
+
#timer = null;
|
|
22
|
+
setProps(props) {
|
|
23
|
+
this.#props = defaults(props, BufferingIndicatorCore.defaultProps);
|
|
24
|
+
}
|
|
25
|
+
destroy() {
|
|
26
|
+
this.#clearTimer();
|
|
27
|
+
}
|
|
28
|
+
update(media) {
|
|
29
|
+
const buffering = media.waiting && !media.paused;
|
|
30
|
+
if (buffering && !this.state.current.visible && !this.#timer) this.#timer = setTimeout(() => {
|
|
31
|
+
this.#timer = null;
|
|
32
|
+
this.state.patch({ visible: true });
|
|
33
|
+
}, this.#props.delay);
|
|
34
|
+
else if (!buffering) {
|
|
35
|
+
this.#clearTimer();
|
|
36
|
+
this.state.patch({ visible: false });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
#clearTimer() {
|
|
40
|
+
if (this.#timer !== null) {
|
|
41
|
+
clearTimeout(this.#timer);
|
|
42
|
+
this.#timer = null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
//#endregion
|
|
48
|
+
//#region ../core/dist/dev/core/ui/buffering-indicator/buffering-indicator-data-attrs.js
|
|
49
|
+
const BufferingIndicatorDataAttrs = { visible: "data-visible" };
|
|
50
|
+
|
|
51
|
+
//#endregion
|
|
52
|
+
//#region ../core/dist/dev/core/ui/captions-button/captions-button-core.js
|
|
53
|
+
var CaptionsButtonCore = class CaptionsButtonCore {
|
|
54
|
+
static defaultProps = {
|
|
55
|
+
label: "",
|
|
56
|
+
disabled: false
|
|
57
|
+
};
|
|
58
|
+
state = createState({
|
|
59
|
+
subtitlesShowing: false,
|
|
60
|
+
availability: "unavailable",
|
|
61
|
+
label: ""
|
|
62
|
+
});
|
|
63
|
+
#props = { ...CaptionsButtonCore.defaultProps };
|
|
64
|
+
#media = null;
|
|
65
|
+
constructor(props) {
|
|
66
|
+
if (props) this.setProps(props);
|
|
67
|
+
}
|
|
68
|
+
setProps(props) {
|
|
69
|
+
this.#props = defaults(props, CaptionsButtonCore.defaultProps);
|
|
70
|
+
}
|
|
71
|
+
getLabel(state) {
|
|
72
|
+
const { label } = this.#props;
|
|
73
|
+
if (isFunction(label)) {
|
|
74
|
+
const customLabel = label(state);
|
|
75
|
+
if (customLabel) return customLabel;
|
|
76
|
+
} else if (label) return label;
|
|
77
|
+
return state.subtitlesShowing ? "Disable captions" : "Enable captions";
|
|
78
|
+
}
|
|
79
|
+
getAttrs(state) {
|
|
80
|
+
return {
|
|
81
|
+
"aria-label": this.getLabel(state),
|
|
82
|
+
"aria-disabled": this.#props.disabled ? "true" : void 0
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
setMedia(media) {
|
|
86
|
+
this.#media = media;
|
|
87
|
+
}
|
|
88
|
+
getState() {
|
|
89
|
+
const media = this.#media;
|
|
90
|
+
const availability = media.textTrackList.some((t) => t.kind === "captions" || t.kind === "subtitles") ? "available" : "unavailable";
|
|
91
|
+
this.state.patch({
|
|
92
|
+
subtitlesShowing: media.subtitlesShowing,
|
|
93
|
+
availability
|
|
94
|
+
});
|
|
95
|
+
this.state.patch({ label: this.getLabel(this.state.current) });
|
|
96
|
+
return this.state.current;
|
|
97
|
+
}
|
|
98
|
+
toggle(media) {
|
|
99
|
+
if (this.#props.disabled) return;
|
|
100
|
+
media.toggleSubtitles();
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
//#endregion
|
|
105
|
+
//#region ../core/dist/dev/core/ui/captions-button/captions-button-data-attrs.js
|
|
106
|
+
const CaptionsButtonDataAttrs = {
|
|
107
|
+
subtitlesShowing: "data-active",
|
|
108
|
+
availability: "data-availability"
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
//#endregion
|
|
112
|
+
//#region ../core/dist/dev/core/ui/controls/controls-core.js
|
|
113
|
+
var ControlsCore = class {
|
|
114
|
+
#media = null;
|
|
115
|
+
setMedia(media) {
|
|
116
|
+
this.#media = media;
|
|
117
|
+
}
|
|
118
|
+
getState() {
|
|
119
|
+
const media = this.#media;
|
|
120
|
+
return {
|
|
121
|
+
visible: media.controlsVisible,
|
|
122
|
+
userActive: media.userActive
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
//#endregion
|
|
128
|
+
//#region ../core/dist/dev/core/ui/controls/controls-data-attrs.js
|
|
129
|
+
const ControlsDataAttrs = {
|
|
130
|
+
visible: "data-visible",
|
|
131
|
+
userActive: "data-user-active"
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
//#endregion
|
|
135
|
+
//#region ../core/dist/dev/core/ui/fullscreen-button/fullscreen-button-core.js
|
|
136
|
+
var FullscreenButtonCore = class FullscreenButtonCore {
|
|
137
|
+
static defaultProps = {
|
|
138
|
+
label: "",
|
|
139
|
+
disabled: false
|
|
140
|
+
};
|
|
141
|
+
state = createState({
|
|
142
|
+
fullscreen: false,
|
|
143
|
+
availability: "available",
|
|
144
|
+
label: ""
|
|
145
|
+
});
|
|
146
|
+
#props = { ...FullscreenButtonCore.defaultProps };
|
|
147
|
+
#media = null;
|
|
148
|
+
constructor(props) {
|
|
149
|
+
if (props) this.setProps(props);
|
|
150
|
+
}
|
|
151
|
+
setProps(props) {
|
|
152
|
+
this.#props = defaults(props, FullscreenButtonCore.defaultProps);
|
|
153
|
+
}
|
|
154
|
+
getLabel(state) {
|
|
155
|
+
const { label } = this.#props;
|
|
156
|
+
if (isFunction(label)) {
|
|
157
|
+
const customLabel = label(state);
|
|
158
|
+
if (customLabel) return customLabel;
|
|
159
|
+
} else if (label) return label;
|
|
160
|
+
return state.fullscreen ? "Exit fullscreen" : "Enter fullscreen";
|
|
161
|
+
}
|
|
162
|
+
getAttrs(state) {
|
|
163
|
+
return {
|
|
164
|
+
"aria-label": this.getLabel(state),
|
|
165
|
+
"aria-disabled": this.#props.disabled ? "true" : void 0
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
setMedia(media) {
|
|
169
|
+
this.#media = media;
|
|
170
|
+
}
|
|
171
|
+
getState() {
|
|
172
|
+
const media = this.#media;
|
|
173
|
+
this.state.patch({
|
|
174
|
+
fullscreen: media.fullscreen,
|
|
175
|
+
availability: media.fullscreenAvailability
|
|
176
|
+
});
|
|
177
|
+
this.state.patch({ label: this.getLabel(this.state.current) });
|
|
178
|
+
return this.state.current;
|
|
179
|
+
}
|
|
180
|
+
async toggle(media) {
|
|
181
|
+
if (this.#props.disabled) return;
|
|
182
|
+
if (media.fullscreenAvailability !== "available") return;
|
|
183
|
+
try {
|
|
184
|
+
if (media.fullscreen) await media.exitFullscreen();
|
|
185
|
+
else await media.requestFullscreen();
|
|
186
|
+
} catch {}
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
//#endregion
|
|
191
|
+
//#region ../core/dist/dev/core/ui/fullscreen-button/fullscreen-button-data-attrs.js
|
|
192
|
+
const FullscreenButtonDataAttrs = {
|
|
193
|
+
fullscreen: "data-fullscreen",
|
|
194
|
+
availability: "data-availability"
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
//#endregion
|
|
198
|
+
//#region ../core/dist/dev/core/ui/pip-button/pip-button-core.js
|
|
199
|
+
var PiPButtonCore = class PiPButtonCore {
|
|
200
|
+
static defaultProps = {
|
|
201
|
+
label: "",
|
|
202
|
+
disabled: false
|
|
203
|
+
};
|
|
204
|
+
state = createState({
|
|
205
|
+
pip: false,
|
|
206
|
+
availability: "available",
|
|
207
|
+
label: ""
|
|
208
|
+
});
|
|
209
|
+
#props = { ...PiPButtonCore.defaultProps };
|
|
210
|
+
#media = null;
|
|
211
|
+
constructor(props) {
|
|
212
|
+
if (props) this.setProps(props);
|
|
213
|
+
}
|
|
214
|
+
setProps(props) {
|
|
215
|
+
this.#props = defaults(props, PiPButtonCore.defaultProps);
|
|
216
|
+
}
|
|
217
|
+
getLabel(state) {
|
|
218
|
+
const { label } = this.#props;
|
|
219
|
+
if (isFunction(label)) {
|
|
220
|
+
const customLabel = label(state);
|
|
221
|
+
if (customLabel) return customLabel;
|
|
222
|
+
} else if (label) return label;
|
|
223
|
+
return state.pip ? "Exit picture-in-picture" : "Enter picture-in-picture";
|
|
224
|
+
}
|
|
225
|
+
getAttrs(state) {
|
|
226
|
+
return {
|
|
227
|
+
"aria-label": this.getLabel(state),
|
|
228
|
+
"aria-disabled": this.#props.disabled ? "true" : void 0
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
setMedia(media) {
|
|
232
|
+
this.#media = media;
|
|
233
|
+
}
|
|
234
|
+
getState() {
|
|
235
|
+
const media = this.#media;
|
|
236
|
+
this.state.patch({
|
|
237
|
+
pip: media.pip,
|
|
238
|
+
availability: media.pipAvailability
|
|
239
|
+
});
|
|
240
|
+
this.state.patch({ label: this.getLabel(this.state.current) });
|
|
241
|
+
return this.state.current;
|
|
242
|
+
}
|
|
243
|
+
async toggle(media) {
|
|
244
|
+
if (this.#props.disabled) return;
|
|
245
|
+
if (media.pipAvailability !== "available") return;
|
|
246
|
+
try {
|
|
247
|
+
if (media.pip) await media.exitPictureInPicture();
|
|
248
|
+
else await media.requestPictureInPicture();
|
|
249
|
+
} catch {}
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
//#endregion
|
|
254
|
+
//#region ../core/dist/dev/core/ui/pip-button/pip-button-data-attrs.js
|
|
255
|
+
const PiPButtonDataAttrs = {
|
|
256
|
+
pip: "data-pip",
|
|
257
|
+
availability: "data-availability"
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
//#endregion
|
|
261
|
+
//#region ../core/dist/dev/core/ui/poster/poster-core.js
|
|
262
|
+
var PosterCore = class {
|
|
263
|
+
#media = null;
|
|
264
|
+
setMedia(media) {
|
|
265
|
+
this.#media = media;
|
|
266
|
+
}
|
|
267
|
+
getState() {
|
|
268
|
+
return { visible: !this.#media.started };
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
//#endregion
|
|
273
|
+
//#region ../core/dist/dev/core/ui/poster/poster-data-attrs.js
|
|
274
|
+
const PosterDataAttrs = { visible: "data-visible" };
|
|
275
|
+
|
|
276
|
+
//#endregion
|
|
277
|
+
//#region src/ui/buffering-indicator/buffering-indicator-element.ts
|
|
278
|
+
var BufferingIndicatorElement = class extends MediaElement {
|
|
279
|
+
constructor(..._args) {
|
|
280
|
+
super(..._args);
|
|
281
|
+
this.delay = BufferingIndicatorCore.defaultProps.delay;
|
|
282
|
+
}
|
|
283
|
+
static {
|
|
284
|
+
this.tagName = "media-buffering-indicator";
|
|
285
|
+
}
|
|
286
|
+
static {
|
|
287
|
+
this.properties = { delay: { type: Number } };
|
|
288
|
+
}
|
|
289
|
+
#core = new BufferingIndicatorCore();
|
|
290
|
+
#state = new PlayerController(this, playerContext, selectPlayback);
|
|
291
|
+
#disconnect = null;
|
|
292
|
+
connectedCallback() {
|
|
293
|
+
super.connectedCallback();
|
|
294
|
+
if (this.destroyed) return;
|
|
295
|
+
this.#disconnect = new AbortController();
|
|
296
|
+
this.#core.state.subscribe(() => this.requestUpdate(), { signal: this.#disconnect.signal });
|
|
297
|
+
if (!this.#state.value) logMissingFeature(this.localName, this.#state.displayName);
|
|
298
|
+
}
|
|
299
|
+
disconnectedCallback() {
|
|
300
|
+
super.disconnectedCallback();
|
|
301
|
+
this.#disconnect?.abort();
|
|
302
|
+
this.#disconnect = null;
|
|
303
|
+
}
|
|
304
|
+
willUpdate(changed) {
|
|
305
|
+
super.willUpdate(changed);
|
|
306
|
+
this.#core.setProps(this);
|
|
307
|
+
}
|
|
308
|
+
update(changed) {
|
|
309
|
+
super.update(changed);
|
|
310
|
+
const media = this.#state.value;
|
|
311
|
+
if (!media) return;
|
|
312
|
+
this.#core.update(media);
|
|
313
|
+
applyStateDataAttrs(this, this.#core.state.current, BufferingIndicatorDataAttrs);
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
//#endregion
|
|
318
|
+
//#region src/define/ui/buffering-indicator.ts
|
|
319
|
+
safeDefine(BufferingIndicatorElement);
|
|
320
|
+
|
|
321
|
+
//#endregion
|
|
322
|
+
//#region src/ui/captions-button/captions-button-element.ts
|
|
323
|
+
var CaptionsButtonElement = class extends MediaButtonElement {
|
|
324
|
+
constructor(..._args) {
|
|
325
|
+
super(..._args);
|
|
326
|
+
this.core = new CaptionsButtonCore();
|
|
327
|
+
this.stateAttrMap = CaptionsButtonDataAttrs;
|
|
328
|
+
this.mediaState = new PlayerController(this, playerContext, selectTextTrack);
|
|
329
|
+
this.hotkeyAction = "toggleSubtitles";
|
|
330
|
+
}
|
|
331
|
+
static {
|
|
332
|
+
this.tagName = "media-captions-button";
|
|
333
|
+
}
|
|
334
|
+
activate(state) {
|
|
335
|
+
this.core.toggle(state);
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
|
|
339
|
+
//#endregion
|
|
340
|
+
//#region src/define/ui/captions-button.ts
|
|
341
|
+
safeDefine(CaptionsButtonElement);
|
|
342
|
+
|
|
343
|
+
//#endregion
|
|
344
|
+
//#region src/ui/controls/context.ts
|
|
345
|
+
const CONTROLS_CONTEXT_KEY = Symbol("@videojs/controls");
|
|
346
|
+
const controlsContext = createContext(CONTROLS_CONTEXT_KEY);
|
|
347
|
+
|
|
348
|
+
//#endregion
|
|
349
|
+
//#region src/ui/controls/controls-element.ts
|
|
350
|
+
var ControlsElement = class extends MediaElement {
|
|
351
|
+
static {
|
|
352
|
+
this.tagName = "media-controls";
|
|
353
|
+
}
|
|
354
|
+
#core = new ControlsCore();
|
|
355
|
+
#mediaState = new PlayerController(this, playerContext, selectControls);
|
|
356
|
+
#provider = new ContextProvider(this, { context: controlsContext });
|
|
357
|
+
connectedCallback() {
|
|
358
|
+
super.connectedCallback();
|
|
359
|
+
if (!this.#mediaState.value && this.#mediaState.displayName) logMissingFeature(this.localName, this.#mediaState.displayName);
|
|
360
|
+
}
|
|
361
|
+
update(_changed) {
|
|
362
|
+
super.update(_changed);
|
|
363
|
+
const media = this.#mediaState.value;
|
|
364
|
+
if (!media) return;
|
|
365
|
+
this.#core.setMedia(media);
|
|
366
|
+
const state = this.#core.getState();
|
|
367
|
+
applyStateDataAttrs(this, state, ControlsDataAttrs);
|
|
368
|
+
this.#provider.setValue({
|
|
369
|
+
state,
|
|
370
|
+
stateAttrMap: ControlsDataAttrs
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
//#endregion
|
|
376
|
+
//#region src/ui/controls/controls-group-element.ts
|
|
377
|
+
var ControlsGroupElement = class extends ContextPartElement {
|
|
378
|
+
constructor(..._args) {
|
|
379
|
+
super(..._args);
|
|
380
|
+
this.consumer = new ContextConsumer(this, {
|
|
381
|
+
context: controlsContext,
|
|
382
|
+
subscribe: true
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
static {
|
|
386
|
+
this.tagName = "media-controls-group";
|
|
387
|
+
}
|
|
388
|
+
connectedCallback() {
|
|
389
|
+
super.connectedCallback();
|
|
390
|
+
if (this.hasAttribute("aria-label") || this.hasAttribute("aria-labelledby")) this.setAttribute("role", "group");
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
|
|
394
|
+
//#endregion
|
|
395
|
+
//#region src/define/ui/controls.ts
|
|
396
|
+
safeDefine(ControlsElement);
|
|
397
|
+
safeDefine(ControlsGroupElement);
|
|
398
|
+
|
|
399
|
+
//#endregion
|
|
400
|
+
//#region src/ui/fullscreen-button/fullscreen-button-element.ts
|
|
401
|
+
var FullscreenButtonElement = class extends MediaButtonElement {
|
|
402
|
+
constructor(..._args) {
|
|
403
|
+
super(..._args);
|
|
404
|
+
this.core = new FullscreenButtonCore();
|
|
405
|
+
this.stateAttrMap = FullscreenButtonDataAttrs;
|
|
406
|
+
this.mediaState = new PlayerController(this, playerContext, selectFullscreen);
|
|
407
|
+
this.hotkeyAction = "toggleFullscreen";
|
|
408
|
+
}
|
|
409
|
+
static {
|
|
410
|
+
this.tagName = "media-fullscreen-button";
|
|
411
|
+
}
|
|
412
|
+
activate(state) {
|
|
413
|
+
this.core.toggle(state);
|
|
414
|
+
}
|
|
415
|
+
};
|
|
416
|
+
|
|
417
|
+
//#endregion
|
|
418
|
+
//#region src/define/ui/fullscreen-button.ts
|
|
419
|
+
safeDefine(FullscreenButtonElement);
|
|
420
|
+
|
|
421
|
+
//#endregion
|
|
422
|
+
//#region src/ui/pip-button/pip-button-element.ts
|
|
423
|
+
var PiPButtonElement = class extends MediaButtonElement {
|
|
424
|
+
constructor(..._args) {
|
|
425
|
+
super(..._args);
|
|
426
|
+
this.core = new PiPButtonCore();
|
|
427
|
+
this.stateAttrMap = PiPButtonDataAttrs;
|
|
428
|
+
this.mediaState = new PlayerController(this, playerContext, selectPiP);
|
|
429
|
+
this.hotkeyAction = "togglePiP";
|
|
430
|
+
}
|
|
431
|
+
static {
|
|
432
|
+
this.tagName = "media-pip-button";
|
|
433
|
+
}
|
|
434
|
+
activate(state) {
|
|
435
|
+
this.core.toggle(state);
|
|
436
|
+
}
|
|
437
|
+
};
|
|
438
|
+
|
|
439
|
+
//#endregion
|
|
440
|
+
//#region src/define/ui/pip-button.ts
|
|
441
|
+
safeDefine(PiPButtonElement);
|
|
442
|
+
|
|
443
|
+
//#endregion
|
|
444
|
+
//#region src/ui/media-ui-element.ts
|
|
445
|
+
/** Abstract base for HTML custom elements that display media state with data attributes. */
|
|
446
|
+
var MediaUIElement = class extends MediaElement {
|
|
447
|
+
connectedCallback() {
|
|
448
|
+
super.connectedCallback();
|
|
449
|
+
if (!this.mediaState.value && this.mediaState.displayName) logMissingFeature(this.localName, this.mediaState.displayName);
|
|
450
|
+
}
|
|
451
|
+
update(changed) {
|
|
452
|
+
super.update(changed);
|
|
453
|
+
const media = this.mediaState.value;
|
|
454
|
+
if (!media) return;
|
|
455
|
+
this.core.setMedia(media);
|
|
456
|
+
const state = this.core.getState();
|
|
457
|
+
applyStateDataAttrs(this, state, this.stateAttrMap);
|
|
458
|
+
}
|
|
459
|
+
};
|
|
460
|
+
|
|
461
|
+
//#endregion
|
|
462
|
+
//#region src/ui/poster/poster-element.ts
|
|
463
|
+
var PosterElement = class extends MediaUIElement {
|
|
464
|
+
constructor(..._args) {
|
|
465
|
+
super(..._args);
|
|
466
|
+
this.core = new PosterCore();
|
|
467
|
+
this.stateAttrMap = PosterDataAttrs;
|
|
468
|
+
this.mediaState = new PlayerController(this, playerContext, selectPlayback);
|
|
469
|
+
}
|
|
470
|
+
static {
|
|
471
|
+
this.tagName = "media-poster";
|
|
472
|
+
}
|
|
473
|
+
};
|
|
474
|
+
|
|
475
|
+
//#endregion
|
|
476
|
+
//#region src/define/ui/poster.ts
|
|
477
|
+
safeDefine(PosterElement);
|
|
478
|
+
|
|
479
|
+
//#endregion
|
|
480
|
+
//# sourceMappingURL=poster-qAhnKWea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poster-qAhnKWea.js","names":["#props","#clearTimer","#timer","#props","#media","#media","#props","#media","#props","#media","#media","#core","#state","#disconnect","#core","#mediaState","#provider"],"sources":["../src/define/video/player.ts","../../core/dist/dev/core/ui/buffering-indicator/buffering-indicator-core.js","../../core/dist/dev/core/ui/buffering-indicator/buffering-indicator-data-attrs.js","../../core/dist/dev/core/ui/captions-button/captions-button-core.js","../../core/dist/dev/core/ui/captions-button/captions-button-data-attrs.js","../../core/dist/dev/core/ui/controls/controls-core.js","../../core/dist/dev/core/ui/controls/controls-data-attrs.js","../../core/dist/dev/core/ui/fullscreen-button/fullscreen-button-core.js","../../core/dist/dev/core/ui/fullscreen-button/fullscreen-button-data-attrs.js","../../core/dist/dev/core/ui/pip-button/pip-button-core.js","../../core/dist/dev/core/ui/pip-button/pip-button-data-attrs.js","../../core/dist/dev/core/ui/poster/poster-core.js","../../core/dist/dev/core/ui/poster/poster-data-attrs.js","../src/ui/buffering-indicator/buffering-indicator-element.ts","../src/define/ui/buffering-indicator.ts","../src/ui/captions-button/captions-button-element.ts","../src/define/ui/captions-button.ts","../src/ui/controls/context.ts","../src/ui/controls/controls-element.ts","../src/ui/controls/controls-group-element.ts","../src/define/ui/controls.ts","../src/ui/fullscreen-button/fullscreen-button-element.ts","../src/define/ui/fullscreen-button.ts","../src/ui/pip-button/pip-button-element.ts","../src/define/ui/pip-button.ts","../src/ui/media-ui-element.ts","../src/ui/poster/poster-element.ts","../src/define/ui/poster.ts"],"sourcesContent":["import { videoFeatures } from '@videojs/core/dom';\nimport { MediaContainerElement } from '../../media/container-element';\nimport { createPlayer } from '../../player/create-player';\nimport { MediaElement } from '../../ui/media-element';\nimport { safeDefine } from '../safe-define';\n\nconst { ProviderMixin } = createPlayer({\n features: videoFeatures,\n});\n\nexport class VideoPlayerElement extends ProviderMixin(MediaElement) {\n static readonly tagName = 'video-player';\n}\n\n// Provider must be defined before consumer for context handshake during upgrade.\nsafeDefine(VideoPlayerElement);\nsafeDefine(MediaContainerElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VideoPlayerElement.tagName]: VideoPlayerElement;\n }\n}\n","import { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\n//#region src/core/ui/buffering-indicator/buffering-indicator-core.ts\nvar BufferingIndicatorCore = class BufferingIndicatorCore {\n\tstatic defaultProps = { delay: 500 };\n\tstate = createState({ visible: false });\n\t#props = { ...BufferingIndicatorCore.defaultProps };\n\t#timer = null;\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, BufferingIndicatorCore.defaultProps);\n\t}\n\tdestroy() {\n\t\tthis.#clearTimer();\n\t}\n\tupdate(media) {\n\t\tconst buffering = media.waiting && !media.paused;\n\t\tif (buffering && !this.state.current.visible && !this.#timer) this.#timer = setTimeout(() => {\n\t\t\tthis.#timer = null;\n\t\t\tthis.state.patch({ visible: true });\n\t\t}, this.#props.delay);\n\t\telse if (!buffering) {\n\t\t\tthis.#clearTimer();\n\t\t\tthis.state.patch({ visible: false });\n\t\t}\n\t}\n\t#clearTimer() {\n\t\tif (this.#timer !== null) {\n\t\t\tclearTimeout(this.#timer);\n\t\t\tthis.#timer = null;\n\t\t}\n\t}\n};\n//#endregion\nexport { BufferingIndicatorCore };\n\n//# sourceMappingURL=buffering-indicator-core.js.map","//#region src/core/ui/buffering-indicator/buffering-indicator-data-attrs.ts\nconst BufferingIndicatorDataAttrs = { visible: \"data-visible\" };\n//#endregion\nexport { BufferingIndicatorDataAttrs };\n\n//# sourceMappingURL=buffering-indicator-data-attrs.js.map","import { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\nimport { isFunction } from \"@videojs/utils/predicate\";\n//#region src/core/ui/captions-button/captions-button-core.ts\nvar CaptionsButtonCore = class CaptionsButtonCore {\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\tsubtitlesShowing: false,\n\t\tavailability: \"unavailable\",\n\t\tlabel: \"\"\n\t});\n\t#props = { ...CaptionsButtonCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, CaptionsButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst { label } = this.#props;\n\t\tif (isFunction(label)) {\n\t\t\tconst customLabel = label(state);\n\t\t\tif (customLabel) return customLabel;\n\t\t} else if (label) return label;\n\t\treturn state.subtitlesShowing ? \"Disable captions\" : \"Enable captions\";\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": this.#props.disabled ? \"true\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tconst availability = media.textTrackList.some((t) => t.kind === \"captions\" || t.kind === \"subtitles\") ? \"available\" : \"unavailable\";\n\t\tthis.state.patch({\n\t\t\tsubtitlesShowing: media.subtitlesShowing,\n\t\t\tavailability\n\t\t});\n\t\tthis.state.patch({ label: this.getLabel(this.state.current) });\n\t\treturn this.state.current;\n\t}\n\ttoggle(media) {\n\t\tif (this.#props.disabled) return;\n\t\tmedia.toggleSubtitles();\n\t}\n};\n//#endregion\nexport { CaptionsButtonCore };\n\n//# sourceMappingURL=captions-button-core.js.map","//#region src/core/ui/captions-button/captions-button-data-attrs.ts\nconst CaptionsButtonDataAttrs = {\n\tsubtitlesShowing: \"data-active\",\n\tavailability: \"data-availability\"\n};\n//#endregion\nexport { CaptionsButtonDataAttrs };\n\n//# sourceMappingURL=captions-button-data-attrs.js.map","//#region src/core/ui/controls/controls-core.ts\nvar ControlsCore = class {\n\t#media = null;\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\treturn {\n\t\t\tvisible: media.controlsVisible,\n\t\t\tuserActive: media.userActive\n\t\t};\n\t}\n};\n//#endregion\nexport { ControlsCore };\n\n//# sourceMappingURL=controls-core.js.map","//#region src/core/ui/controls/controls-data-attrs.ts\nconst ControlsDataAttrs = {\n\tvisible: \"data-visible\",\n\tuserActive: \"data-user-active\"\n};\n//#endregion\nexport { ControlsDataAttrs };\n\n//# sourceMappingURL=controls-data-attrs.js.map","import { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\nimport { isFunction } from \"@videojs/utils/predicate\";\n//#region src/core/ui/fullscreen-button/fullscreen-button-core.ts\nvar FullscreenButtonCore = class FullscreenButtonCore {\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\tfullscreen: false,\n\t\tavailability: \"available\",\n\t\tlabel: \"\"\n\t});\n\t#props = { ...FullscreenButtonCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, FullscreenButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst { label } = this.#props;\n\t\tif (isFunction(label)) {\n\t\t\tconst customLabel = label(state);\n\t\t\tif (customLabel) return customLabel;\n\t\t} else if (label) return label;\n\t\treturn state.fullscreen ? \"Exit fullscreen\" : \"Enter fullscreen\";\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": this.#props.disabled ? \"true\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tthis.state.patch({\n\t\t\tfullscreen: media.fullscreen,\n\t\t\tavailability: media.fullscreenAvailability\n\t\t});\n\t\tthis.state.patch({ label: this.getLabel(this.state.current) });\n\t\treturn this.state.current;\n\t}\n\tasync toggle(media) {\n\t\tif (this.#props.disabled) return;\n\t\tif (media.fullscreenAvailability !== \"available\") return;\n\t\ttry {\n\t\t\tif (media.fullscreen) await media.exitFullscreen();\n\t\t\telse await media.requestFullscreen();\n\t\t} catch {}\n\t}\n};\n//#endregion\nexport { FullscreenButtonCore };\n\n//# sourceMappingURL=fullscreen-button-core.js.map","//#region src/core/ui/fullscreen-button/fullscreen-button-data-attrs.ts\nconst FullscreenButtonDataAttrs = {\n\tfullscreen: \"data-fullscreen\",\n\tavailability: \"data-availability\"\n};\n//#endregion\nexport { FullscreenButtonDataAttrs };\n\n//# sourceMappingURL=fullscreen-button-data-attrs.js.map","import { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\nimport { isFunction } from \"@videojs/utils/predicate\";\n//#region src/core/ui/pip-button/pip-button-core.ts\nvar PiPButtonCore = class PiPButtonCore {\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\tpip: false,\n\t\tavailability: \"available\",\n\t\tlabel: \"\"\n\t});\n\t#props = { ...PiPButtonCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, PiPButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst { label } = this.#props;\n\t\tif (isFunction(label)) {\n\t\t\tconst customLabel = label(state);\n\t\t\tif (customLabel) return customLabel;\n\t\t} else if (label) return label;\n\t\treturn state.pip ? \"Exit picture-in-picture\" : \"Enter picture-in-picture\";\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": this.#props.disabled ? \"true\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tthis.state.patch({\n\t\t\tpip: media.pip,\n\t\t\tavailability: media.pipAvailability\n\t\t});\n\t\tthis.state.patch({ label: this.getLabel(this.state.current) });\n\t\treturn this.state.current;\n\t}\n\tasync toggle(media) {\n\t\tif (this.#props.disabled) return;\n\t\tif (media.pipAvailability !== \"available\") return;\n\t\ttry {\n\t\t\tif (media.pip) await media.exitPictureInPicture();\n\t\t\telse await media.requestPictureInPicture();\n\t\t} catch {}\n\t}\n};\n//#endregion\nexport { PiPButtonCore };\n\n//# sourceMappingURL=pip-button-core.js.map","//#region src/core/ui/pip-button/pip-button-data-attrs.ts\nconst PiPButtonDataAttrs = {\n\tpip: \"data-pip\",\n\tavailability: \"data-availability\"\n};\n//#endregion\nexport { PiPButtonDataAttrs };\n\n//# sourceMappingURL=pip-button-data-attrs.js.map","//#region src/core/ui/poster/poster-core.ts\nvar PosterCore = class {\n\t#media = null;\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\treturn { visible: !this.#media.started };\n\t}\n};\n//#endregion\nexport { PosterCore };\n\n//# sourceMappingURL=poster-core.js.map","//#region src/core/ui/poster/poster-data-attrs.ts\nconst PosterDataAttrs = { visible: \"data-visible\" };\n//#endregion\nexport { PosterDataAttrs };\n\n//# sourceMappingURL=poster-data-attrs.js.map","import { BufferingIndicatorCore, BufferingIndicatorDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectPlayback } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class BufferingIndicatorElement extends MediaElement {\n static readonly tagName = 'media-buffering-indicator';\n\n static override properties = {\n delay: { type: Number },\n } satisfies PropertyDeclarationMap<keyof BufferingIndicatorCore.Props>;\n\n delay = BufferingIndicatorCore.defaultProps.delay;\n\n readonly #core = new BufferingIndicatorCore();\n readonly #state = new PlayerController(this, playerContext, selectPlayback);\n\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.#disconnect = new AbortController();\n\n this.#core.state.subscribe(() => this.requestUpdate(), {\n signal: this.#disconnect.signal,\n });\n\n if (__DEV__ && !this.#state.value) {\n logMissingFeature(this.localName, this.#state.displayName!);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.#core.setProps(this);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.#state.value;\n\n if (!media) return;\n\n this.#core.update(media);\n applyStateDataAttrs(this, this.#core.state.current, BufferingIndicatorDataAttrs);\n }\n}\n","import { BufferingIndicatorElement } from '../../ui/buffering-indicator/buffering-indicator-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(BufferingIndicatorElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [BufferingIndicatorElement.tagName]: BufferingIndicatorElement;\n }\n}\n","import { CaptionsButtonCore, CaptionsButtonDataAttrs, type MediaTextTrackState } from '@videojs/core';\nimport { selectTextTrack } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class CaptionsButtonElement extends MediaButtonElement<CaptionsButtonCore> {\n static readonly tagName = 'media-captions-button';\n\n protected readonly core = new CaptionsButtonCore();\n protected readonly stateAttrMap = CaptionsButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectTextTrack);\n protected override readonly hotkeyAction = 'toggleSubtitles';\n\n protected activate(state: MediaTextTrackState): void {\n this.core.toggle(state);\n }\n}\n","import { CaptionsButtonElement } from '../../ui/captions-button/captions-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(CaptionsButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [CaptionsButtonElement.tagName]: CaptionsButtonElement;\n }\n}\n","import type { ControlsState, StateAttrMap } from '@videojs/core';\nimport { createContext } from '@videojs/element/context';\n\nexport interface ControlsContextValue {\n state: ControlsState;\n stateAttrMap: StateAttrMap<ControlsState>;\n}\n\nconst CONTROLS_CONTEXT_KEY = Symbol('@videojs/controls');\n\nexport const controlsContext = createContext<ControlsContextValue>(CONTROLS_CONTEXT_KEY);\n","import { ControlsCore, ControlsDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectControls } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\nimport { controlsContext } from './context';\n\nexport class ControlsElement extends MediaElement {\n static readonly tagName = 'media-controls';\n\n readonly #core = new ControlsCore();\n readonly #mediaState = new PlayerController(this, playerContext, selectControls);\n readonly #provider = new ContextProvider(this, { context: controlsContext });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n const media = this.#mediaState.value;\n if (!media) return;\n\n this.#core.setMedia(media);\n const state = this.#core.getState();\n\n applyStateDataAttrs(this, state, ControlsDataAttrs);\n\n this.#provider.setValue({\n state,\n stateAttrMap: ControlsDataAttrs,\n });\n }\n}\n","import type { ControlsState } from '@videojs/core';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { controlsContext } from './context';\n\nexport class ControlsGroupElement extends ContextPartElement<ControlsState> {\n static readonly tagName = 'media-controls-group';\n\n protected readonly consumer = new ContextConsumer(this, { context: controlsContext, subscribe: true });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.hasAttribute('aria-label') || this.hasAttribute('aria-labelledby')) {\n this.setAttribute('role', 'group');\n }\n }\n}\n","import { ControlsElement } from '../../ui/controls/controls-element';\nimport { ControlsGroupElement } from '../../ui/controls/controls-group-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(ControlsElement);\nsafeDefine(ControlsGroupElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ControlsElement.tagName]: ControlsElement;\n }\n}\n","import { FullscreenButtonCore, FullscreenButtonDataAttrs, type MediaFullscreenState } from '@videojs/core';\nimport { selectFullscreen } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class FullscreenButtonElement extends MediaButtonElement<FullscreenButtonCore> {\n static readonly tagName = 'media-fullscreen-button';\n\n protected readonly core = new FullscreenButtonCore();\n protected readonly stateAttrMap = FullscreenButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectFullscreen);\n protected override readonly hotkeyAction = 'toggleFullscreen';\n\n protected activate(state: MediaFullscreenState): void {\n this.core.toggle(state);\n }\n}\n","import { FullscreenButtonElement } from '../../ui/fullscreen-button/fullscreen-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(FullscreenButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [FullscreenButtonElement.tagName]: FullscreenButtonElement;\n }\n}\n","import { type MediaPictureInPictureState, PiPButtonCore, PiPButtonDataAttrs } from '@videojs/core';\nimport { selectPiP } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PiPButtonElement extends MediaButtonElement<PiPButtonCore> {\n static readonly tagName = 'media-pip-button';\n\n protected readonly core = new PiPButtonCore();\n protected readonly stateAttrMap = PiPButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPiP);\n protected override readonly hotkeyAction = 'togglePiP';\n\n protected activate(state: MediaPictureInPictureState): void {\n this.core.toggle(state);\n }\n}\n","import { PiPButtonElement } from '../../ui/pip-button/pip-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(PiPButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [PiPButtonElement.tagName]: PiPButtonElement;\n }\n}\n","import type { InferComponentState, InferMediaState, MediaUIComponent, StateAttrMap } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\n\nimport type { PlayerController } from '../player/player-controller';\nimport { MediaElement } from './media-element';\n\n/** Abstract base for HTML custom elements that display media state with data attributes. */\nexport abstract class MediaUIElement<Core extends MediaUIComponent> extends MediaElement {\n protected abstract readonly core: Core;\n protected abstract readonly stateAttrMap: StateAttrMap<InferComponentState<Core>>;\n protected abstract readonly mediaState: PlayerController<any, InferMediaState<Core> | undefined>;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (__DEV__ && !this.mediaState.value && this.mediaState.displayName) {\n logMissingFeature(this.localName, this.mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.mediaState.value;\n\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n applyStateDataAttrs(this, state, this.stateAttrMap);\n }\n}\n","import { PosterCore, PosterDataAttrs } from '@videojs/core';\nimport { selectPlayback } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaUIElement } from '../media-ui-element';\n\nexport class PosterElement extends MediaUIElement<PosterCore> {\n static readonly tagName = 'media-poster';\n\n protected readonly core = new PosterCore();\n protected readonly stateAttrMap = PosterDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlayback);\n}\n","import { PosterElement } from '../../ui/poster/poster-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(PosterElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [PosterElement.tagName]: PosterElement;\n }\n}\n"],"mappings":"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"}
|