@videojs/html 10.0.0-beta.15 → 10.0.0-beta.17
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/{abort-CzqmAxxH.js → abort-BL-SGV3o.js} +1 -1
- package/cdn/{abort-CzqmAxxH.js.map → abort-BL-SGV3o.js.map} +1 -1
- package/cdn/{abort-KaHR4JO1.js → abort-DGNIECLn.js} +1 -1
- package/cdn/{abort-KaHR4JO1.js.map → abort-DGNIECLn.js.map} +1 -1
- 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 +4 -5
- package/cdn/audio-ui.js +1 -1
- package/cdn/audio.dev.js +22 -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/compounds-Df_1JbZD.js +8 -0
- package/cdn/compounds-Df_1JbZD.js.map +1 -0
- package/cdn/{volume-slider-Co5X4Z1t.js → compounds-VFPcCeRV.js} +2439 -946
- package/cdn/compounds-VFPcCeRV.js.map +1 -0
- 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-p9xCO0yC.js → create-player-CyG77t-m.js} +778 -1955
- package/cdn/create-player-CyG77t-m.js.map +1 -0
- package/cdn/create-player-Gom2ZZe3.js +7 -0
- package/cdn/create-player-Gom2ZZe3.js.map +1 -0
- package/cdn/{hls-26YJVjvD.js → hls-BAbdl84H.js} +3 -3
- package/cdn/{hls-26YJVjvD.js.map → hls-BAbdl84H.js.map} +1 -1
- package/cdn/{hls-BriQI4q1.js → hls-BrzPpueW.js} +9 -12
- package/cdn/{hls-BriQI4q1.js.map → hls-BrzPpueW.js.map} +1 -1
- package/cdn/hotkey-element-DR3ZAqKa.js +2 -0
- package/cdn/hotkey-element-DR3ZAqKa.js.map +1 -0
- package/cdn/hotkey-element-Dlta37Be.js +369 -0
- package/cdn/hotkey-element-Dlta37Be.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 +966 -681
- 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-hheRmkup.js} +92 -8
- package/cdn/media-props-mixin-hheRmkup.js.map +1 -0
- package/cdn/media-props-mixin-yRWj8yXF.js +47 -0
- package/cdn/media-props-mixin-yRWj8yXF.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/minimal-ui-B3BBK5nX.js +2 -0
- package/cdn/minimal-ui-B3BBK5nX.js.map +1 -0
- package/cdn/minimal-ui-CPRSYky_.js +28 -0
- package/cdn/minimal-ui-CPRSYky_.js.map +1 -0
- package/cdn/minimal-ui-Cnaig4X6.js +22 -0
- package/cdn/minimal-ui-Cnaig4X6.js.map +1 -0
- package/cdn/minimal-ui-DOePmQfq.js +2 -0
- package/cdn/minimal-ui-DOePmQfq.js.map +1 -0
- package/cdn/mux-DGgCyz_A.js +3102 -0
- package/cdn/mux-DGgCyz_A.js.map +1 -0
- package/cdn/mux-fYfPUpq3.js +25 -0
- package/cdn/mux-fYfPUpq3.js.map +1 -0
- package/cdn/{native-hls-D2rfyyyW.js → native-hls-BuCYu7Rd.js} +2 -3
- package/cdn/{native-hls-D2rfyyyW.js.map → native-hls-BuCYu7Rd.js.map} +1 -1
- package/cdn/native-hls-DnqJ-0zL.js +2 -0
- package/cdn/{native-hls-CjRvSXAJ.js.map → native-hls-DnqJ-0zL.js.map} +1 -1
- package/cdn/player-Cu5_r0Gk.js +2 -0
- package/cdn/{player-Cz9-_j7J.js.map → player-Cu5_r0Gk.js.map} +1 -1
- package/cdn/player-DIOgBqQf.js +382 -0
- package/cdn/player-DIOgBqQf.js.map +1 -0
- package/cdn/{player-D0bhjT8X.js → player-DxBoqZVw.js} +4 -3
- package/cdn/{player-D0bhjT8X.js.map → player-DxBoqZVw.js.map} +1 -1
- package/cdn/player-eEH-XjnF.js +2 -0
- package/cdn/player-eEH-XjnF.js.map +1 -0
- package/cdn/{shallow-equal-uPuCQhnd.js → shallow-equal-1KBb-lrM.js} +1 -1
- package/cdn/{shallow-equal-uPuCQhnd.js.map → shallow-equal-1KBb-lrM.js.map} +1 -1
- package/cdn/{shallow-equal-C8Fs4TTE.js → shallow-equal-Ca0qjpLJ.js} +1 -1
- package/cdn/{shallow-equal-C8Fs4TTE.js.map → shallow-equal-Ca0qjpLJ.js.map} +1 -1
- package/cdn/{skin-element-zakTHELS.js → skin-element-BTPr5DoY.js} +2 -2
- package/cdn/{skin-element-zakTHELS.js.map → skin-element-BTPr5DoY.js.map} +1 -1
- package/cdn/{skin-element-DB-cKAAx.js → skin-element-u6pdmSSs.js} +2 -2
- package/cdn/{skin-element-DB-cKAAx.js.map → skin-element-u6pdmSSs.js.map} +1 -1
- package/cdn/ui-34pkHFdT.js +25 -0
- package/cdn/ui-34pkHFdT.js.map +1 -0
- package/cdn/ui-DWoV_Da1.js +2 -0
- package/cdn/ui-DWoV_Da1.js.map +1 -0
- package/cdn/ui-DXtTKomo.js +2 -0
- package/cdn/ui-DXtTKomo.js.map +1 -0
- package/cdn/ui-X5WOdCCw.js +31 -0
- package/cdn/ui-X5WOdCCw.js.map +1 -0
- 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 +4 -5
- package/cdn/video-ui.js +1 -1
- package/cdn/video.dev.js +32 -7
- package/cdn/video.dev.js.map +1 -1
- package/cdn/video.js +1 -1
- package/cdn/video.js.map +1 -1
- 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/minimal-ui.js +28 -12
- package/dist/default/define/audio/minimal-ui.js.map +1 -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 +32 -12
- package/dist/default/define/audio/ui.js.map +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/compounds.js +62 -0
- package/dist/default/define/ui/compounds.js.map +1 -0
- package/dist/default/define/ui/controls.js +2 -5
- package/dist/default/define/ui/controls.js.map +1 -1
- package/dist/default/define/ui/error-dialog.js +2 -9
- package/dist/default/define/ui/error-dialog.js.map +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 +2 -13
- package/dist/default/define/ui/slider.js.map +1 -1
- package/dist/default/define/ui/time-slider.js +2 -17
- package/dist/default/define/ui/time-slider.js.map +1 -1
- package/dist/default/define/ui/time.js +2 -7
- package/dist/default/define/ui/time.js.map +1 -1
- package/dist/default/define/ui/volume-slider.js +2 -13
- package/dist/default/define/ui/volume-slider.js.map +1 -1
- package/dist/default/define/video/minimal-skin.css +23 -0
- package/dist/default/define/video/minimal-ui.js +39 -18
- package/dist/default/define/video/minimal-ui.js.map +1 -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 +43 -18
- package/dist/default/define/video/ui.js.map +1 -0
- package/dist/default/index.js +6 -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/gesture/gesture-element.js +84 -0
- package/dist/default/ui/gesture/gesture-element.js.map +1 -0
- 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/minimal-ui.js +28 -12
- package/dist/dev/define/audio/minimal-ui.js.map +1 -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 +32 -12
- package/dist/dev/define/audio/ui.js.map +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/compounds.d.ts +12 -0
- package/dist/dev/define/ui/compounds.d.ts.map +1 -0
- package/dist/dev/define/ui/compounds.js +62 -0
- package/dist/dev/define/ui/compounds.js.map +1 -0
- package/dist/dev/define/ui/controls.d.ts +2 -0
- package/dist/dev/define/ui/controls.d.ts.map +1 -1
- package/dist/dev/define/ui/controls.js +2 -5
- package/dist/dev/define/ui/controls.js.map +1 -1
- package/dist/dev/define/ui/error-dialog.d.ts +6 -0
- package/dist/dev/define/ui/error-dialog.d.ts.map +1 -1
- package/dist/dev/define/ui/error-dialog.js +2 -9
- package/dist/dev/define/ui/error-dialog.js.map +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.d.ts +10 -0
- package/dist/dev/define/ui/slider.d.ts.map +1 -1
- package/dist/dev/define/ui/slider.js +2 -13
- package/dist/dev/define/ui/slider.js.map +1 -1
- package/dist/dev/define/ui/time-slider.d.ts +14 -0
- package/dist/dev/define/ui/time-slider.d.ts.map +1 -1
- package/dist/dev/define/ui/time-slider.js +2 -17
- package/dist/dev/define/ui/time-slider.js.map +1 -1
- package/dist/dev/define/ui/time.d.ts +4 -0
- package/dist/dev/define/ui/time.d.ts.map +1 -1
- package/dist/dev/define/ui/time.js +2 -7
- package/dist/dev/define/ui/time.js.map +1 -1
- package/dist/dev/define/ui/volume-slider.d.ts +10 -0
- package/dist/dev/define/ui/volume-slider.d.ts.map +1 -1
- package/dist/dev/define/ui/volume-slider.js +2 -13
- package/dist/dev/define/ui/volume-slider.js.map +1 -1
- package/dist/dev/define/video/minimal-skin.css +23 -0
- package/dist/dev/define/video/minimal-ui.js +39 -18
- package/dist/dev/define/video/minimal-ui.js.map +1 -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 +26 -0
- package/dist/dev/define/video/skin.js.map +1 -1
- package/dist/dev/define/video/ui.js +43 -18
- package/dist/dev/define/video/ui.js.map +1 -0
- package/dist/dev/index.d.ts +7 -2
- package/dist/dev/index.js +6 -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/gesture/gesture-element.d.ts +22 -0
- package/dist/dev/ui/gesture/gesture-element.d.ts.map +1 -0
- package/dist/dev/ui/gesture/gesture-element.js +84 -0
- package/dist/dev/ui/gesture/gesture-element.js.map +1 -0
- 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/minimal-ui-BL9eBXck.js +0 -0
- package/cdn/minimal-ui-a1UOKF79.js +0 -0
- 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/ui-CFIgmrlA.js +0 -0
- package/cdn/ui-Ccp_LyCf.js +0 -0
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fullscreen-button-element.js","names":[],"sources":["../../../../src/ui/fullscreen-button/fullscreen-button-element.ts"],"sourcesContent":["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\n protected activate(state: MediaFullscreenState): void {\n this.core.toggle(state);\n }\n}\n"],"mappings":";;;;;;AAOA,IAAa,0BAAb,cAA6C,mBAAyC;;;cAG1D,IAAI,sBAAsB;sBAClB;oBACF,IAAI,iBAAiB,MAAM,eAAe,iBAAiB;;;
|
|
1
|
+
{"version":3,"file":"fullscreen-button-element.js","names":[],"sources":["../../../../src/ui/fullscreen-button/fullscreen-button-element.ts"],"sourcesContent":["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"],"mappings":";;;;;;AAOA,IAAa,0BAAb,cAA6C,mBAAyC;;;cAG1D,IAAI,sBAAsB;sBAClB;oBACF,IAAI,iBAAiB,MAAM,eAAe,iBAAiB;sBAChD;;;iBALjB;;CAO1B,SAAmB,OAAmC;AACpD,OAAK,KAAK,OAAO,MAAM"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { MediaElement } from "../media-element.js";
|
|
2
|
+
import { GestureActionName, GesturePointerType, GestureRegion } from "@videojs/core/dom";
|
|
3
|
+
import { PropertyDeclarationMap, PropertyValues } from "@videojs/element";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/gesture/gesture-element.d.ts
|
|
6
|
+
declare class GestureElement extends MediaElement {
|
|
7
|
+
#private;
|
|
8
|
+
static readonly tagName = "media-gesture";
|
|
9
|
+
static properties: PropertyDeclarationMap;
|
|
10
|
+
type: 'tap' | 'doubletap' | (string & {});
|
|
11
|
+
action: GestureActionName | (string & {});
|
|
12
|
+
value: number | undefined;
|
|
13
|
+
pointer: GesturePointerType | undefined;
|
|
14
|
+
region: GestureRegion | undefined;
|
|
15
|
+
disabled: boolean;
|
|
16
|
+
connectedCallback(): void;
|
|
17
|
+
disconnectedCallback(): void;
|
|
18
|
+
protected update(changed: PropertyValues): void;
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { GestureElement };
|
|
22
|
+
//# sourceMappingURL=gesture-element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gesture-element.d.ts","names":[],"sources":["../../../../src/ui/gesture/gesture-element.ts"],"mappings":";;;;;cAea,cAAA,SAAuB,YAAA;EAAA;kBAClB,OAAA;EAAA,OAEA,UAAA,EAAY,sBAAA;EAS5B,IAAA;EACA,MAAA,EAAQ,iBAAA;EACR,KAAA;EACA,OAAA,EAAS,kBAAA;EACT,MAAA,EAAQ,aAAA;EACR,QAAA;EAUS,iBAAA,CAAA;EAMA,oBAAA,CAAA;EAAA,UAKU,MAAA,CAAO,OAAA,EAAS,cAAA;AAAA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { containerContext, playerContext } from "../../player/context.js";
|
|
2
|
+
import { MediaElement } from "../media-element.js";
|
|
3
|
+
import { PlayerController } from "../../player/player-controller.js";
|
|
4
|
+
import { createDoubleTapGesture, createTapGesture, resolveGestureAction } from "@videojs/core/dom";
|
|
5
|
+
import { ContextConsumer } from "@videojs/element/context";
|
|
6
|
+
//#region src/ui/gesture/gesture-element.ts
|
|
7
|
+
var GestureElement = class extends MediaElement {
|
|
8
|
+
constructor(..._args) {
|
|
9
|
+
super(..._args);
|
|
10
|
+
this.type = "";
|
|
11
|
+
this.action = "";
|
|
12
|
+
this.value = void 0;
|
|
13
|
+
this.pointer = void 0;
|
|
14
|
+
this.region = void 0;
|
|
15
|
+
this.disabled = false;
|
|
16
|
+
}
|
|
17
|
+
static {
|
|
18
|
+
this.tagName = "media-gesture";
|
|
19
|
+
}
|
|
20
|
+
static {
|
|
21
|
+
this.properties = {
|
|
22
|
+
type: { type: String },
|
|
23
|
+
action: { type: String },
|
|
24
|
+
value: { type: Number },
|
|
25
|
+
pointer: { type: String },
|
|
26
|
+
region: { type: String },
|
|
27
|
+
disabled: { type: Boolean }
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
#player = new PlayerController(this, playerContext);
|
|
31
|
+
#container = new ContextConsumer(this, {
|
|
32
|
+
context: containerContext,
|
|
33
|
+
callback: () => this.requestUpdate(),
|
|
34
|
+
subscribe: true
|
|
35
|
+
});
|
|
36
|
+
#cleanup = null;
|
|
37
|
+
connectedCallback() {
|
|
38
|
+
super.connectedCallback();
|
|
39
|
+
this.style.display = "none";
|
|
40
|
+
this.#register();
|
|
41
|
+
}
|
|
42
|
+
disconnectedCallback() {
|
|
43
|
+
super.disconnectedCallback();
|
|
44
|
+
this.#unregister();
|
|
45
|
+
}
|
|
46
|
+
update(changed) {
|
|
47
|
+
super.update(changed);
|
|
48
|
+
if (this.isConnected) {
|
|
49
|
+
this.#unregister();
|
|
50
|
+
this.#register();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
#register() {
|
|
54
|
+
const store = this.#player.value;
|
|
55
|
+
const container = this.#container.value?.container;
|
|
56
|
+
if (!this.type || !this.action || !store || !container) return;
|
|
57
|
+
const resolver = resolveGestureAction(this.action);
|
|
58
|
+
if (!resolver) return;
|
|
59
|
+
const { value } = this;
|
|
60
|
+
const onActivate = (event) => {
|
|
61
|
+
resolver({
|
|
62
|
+
store,
|
|
63
|
+
value,
|
|
64
|
+
event
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
const options = {
|
|
68
|
+
pointer: this.pointer,
|
|
69
|
+
region: this.region,
|
|
70
|
+
disabled: this.disabled,
|
|
71
|
+
action: this.action
|
|
72
|
+
};
|
|
73
|
+
if (this.type === "doubletap") this.#cleanup = createDoubleTapGesture(container, onActivate, options);
|
|
74
|
+
else this.#cleanup = createTapGesture(container, onActivate, options);
|
|
75
|
+
}
|
|
76
|
+
#unregister() {
|
|
77
|
+
this.#cleanup?.();
|
|
78
|
+
this.#cleanup = null;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
//#endregion
|
|
82
|
+
export { GestureElement };
|
|
83
|
+
|
|
84
|
+
//# sourceMappingURL=gesture-element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gesture-element.js","names":["#player","#container","#register","#unregister","#cleanup"],"sources":["../../../../src/ui/gesture/gesture-element.ts"],"sourcesContent":["import {\n createDoubleTapGesture,\n createTapGesture,\n type GestureActionName,\n type GesturePointerType,\n type GestureRegion,\n resolveGestureAction,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { containerContext, playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class GestureElement extends MediaElement {\n static readonly tagName = 'media-gesture';\n\n static override properties: PropertyDeclarationMap = {\n type: { type: String },\n action: { type: String },\n value: { type: Number },\n pointer: { type: String },\n region: { type: String },\n disabled: { type: Boolean },\n };\n\n type: 'tap' | 'doubletap' | (string & {}) = '';\n action: GestureActionName | (string & {}) = '';\n value: number | undefined = undefined;\n pointer: GesturePointerType | undefined = undefined;\n region: GestureRegion | undefined = undefined;\n disabled = false;\n\n readonly #player = new PlayerController(this, playerContext);\n readonly #container = new ContextConsumer(this, {\n context: containerContext,\n callback: () => this.requestUpdate(),\n subscribe: true,\n });\n #cleanup: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.style.display = 'none';\n this.#register();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#unregister();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n // Re-register when attributes change.\n if (this.isConnected) {\n this.#unregister();\n this.#register();\n }\n }\n\n #register(): void {\n const store = this.#player.value;\n const container = this.#container.value?.container;\n if (!this.type || !this.action || !store || !container) return;\n\n const resolver = resolveGestureAction(this.action);\n if (!resolver) return;\n\n const { value } = this;\n\n const onActivate = (event: PointerEvent) => {\n resolver({ store, value, event });\n };\n\n const options = {\n pointer: this.pointer,\n region: this.region,\n disabled: this.disabled,\n action: this.action,\n };\n\n if (this.type === 'doubletap') {\n this.#cleanup = createDoubleTapGesture(container, onActivate, options);\n } else {\n this.#cleanup = createTapGesture(container, onActivate, options);\n }\n }\n\n #unregister(): void {\n this.#cleanup?.();\n this.#cleanup = null;\n }\n}\n"],"mappings":";;;;;;AAeA,IAAa,iBAAb,cAAoC,aAAa;;;cAYH;gBACA;eAChB,KAAA;iBACc,KAAA;gBACN,KAAA;kBACzB;;;iBAhBe;;;oBAE2B;GACnD,MAAM,EAAE,MAAM,QAAQ;GACtB,QAAQ,EAAE,MAAM,QAAQ;GACxB,OAAO,EAAE,MAAM,QAAQ;GACvB,SAAS,EAAE,MAAM,QAAQ;GACzB,QAAQ,EAAE,MAAM,QAAQ;GACxB,UAAU,EAAE,MAAM,SAAS;GAC5B;;CASD,UAAmB,IAAI,iBAAiB,MAAM,cAAc;CAC5D,aAAsB,IAAI,gBAAgB,MAAM;EAC9C,SAAS;EACT,gBAAgB,KAAK,eAAe;EACpC,WAAW;EACZ,CAAC;CACF,WAAgC;CAEhC,oBAAmC;AACjC,QAAM,mBAAmB;AACzB,OAAK,MAAM,UAAU;AACrB,QAAA,UAAgB;;CAGlB,uBAAsC;AACpC,QAAM,sBAAsB;AAC5B,QAAA,YAAkB;;CAGpB,OAA0B,SAA+B;AACvD,QAAM,OAAO,QAAQ;AAGrB,MAAI,KAAK,aAAa;AACpB,SAAA,YAAkB;AAClB,SAAA,UAAgB;;;CAIpB,YAAkB;EAChB,MAAM,QAAQ,MAAA,OAAa;EAC3B,MAAM,YAAY,MAAA,UAAgB,OAAO;AACzC,MAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,UAAU,CAAC,SAAS,CAAC,UAAW;EAExD,MAAM,WAAW,qBAAqB,KAAK,OAAO;AAClD,MAAI,CAAC,SAAU;EAEf,MAAM,EAAE,UAAU;EAElB,MAAM,cAAc,UAAwB;AAC1C,YAAS;IAAE;IAAO;IAAO;IAAO,CAAC;;EAGnC,MAAM,UAAU;GACd,SAAS,KAAK;GACd,QAAQ,KAAK;GACb,UAAU,KAAK;GACf,QAAQ,KAAK;GACd;AAED,MAAI,KAAK,SAAS,YAChB,OAAA,UAAgB,uBAAuB,WAAW,YAAY,QAAQ;MAEtE,OAAA,UAAgB,iBAAiB,WAAW,YAAY,QAAQ;;CAIpE,cAAoB;AAClB,QAAA,WAAiB;AACjB,QAAA,UAAgB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PlayerControllerHost } from "../../player/player-controller.js";
|
|
2
|
+
import { ReactiveController } from "@videojs/element";
|
|
3
|
+
|
|
4
|
+
//#region src/ui/hotkey/aria-key-shortcuts-controller.d.ts
|
|
5
|
+
/** Provides `aria-keyshortcuts` for a given hotkey action name. */
|
|
6
|
+
declare class AriaKeyShortcutsController implements ReactiveController {
|
|
7
|
+
#private;
|
|
8
|
+
constructor(host: PlayerControllerHost, action: string);
|
|
9
|
+
get value(): string | undefined;
|
|
10
|
+
hostConnected(): void;
|
|
11
|
+
hostDisconnected(): void;
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { AriaKeyShortcutsController };
|
|
15
|
+
//# sourceMappingURL=aria-key-shortcuts-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aria-key-shortcuts-controller.d.ts","names":[],"sources":["../../../../src/ui/hotkey/aria-key-shortcuts-controller.ts"],"mappings":";;;;;cASa,0BAAA,YAAsC,kBAAA;EAAA;cAIrC,IAAA,EAAM,oBAAA,EAAsB,MAAA;EAAA,IAMpC,KAAA,CAAA;EAMJ,aAAA,CAAA;EACA,gBAAA,CAAA;AAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { containerContext } from "../../player/context.js";
|
|
2
|
+
import { findHotkeyCoordinator } from "@videojs/core/dom";
|
|
3
|
+
import { ContextConsumer } from "@videojs/element/context";
|
|
4
|
+
//#region src/ui/hotkey/aria-key-shortcuts-controller.ts
|
|
5
|
+
/** Provides `aria-keyshortcuts` for a given hotkey action name. */
|
|
6
|
+
var AriaKeyShortcutsController = class {
|
|
7
|
+
#action;
|
|
8
|
+
#container;
|
|
9
|
+
constructor(host, action) {
|
|
10
|
+
this.#action = action;
|
|
11
|
+
this.#container = new ContextConsumer(host, {
|
|
12
|
+
context: containerContext,
|
|
13
|
+
subscribe: true
|
|
14
|
+
});
|
|
15
|
+
host.addController(this);
|
|
16
|
+
}
|
|
17
|
+
get value() {
|
|
18
|
+
const container = this.#container.value?.container;
|
|
19
|
+
if (!container) return void 0;
|
|
20
|
+
return findHotkeyCoordinator(container)?.getAriaKeys(this.#action);
|
|
21
|
+
}
|
|
22
|
+
hostConnected() {}
|
|
23
|
+
hostDisconnected() {}
|
|
24
|
+
};
|
|
25
|
+
//#endregion
|
|
26
|
+
export { AriaKeyShortcutsController };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=aria-key-shortcuts-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aria-key-shortcuts-controller.js","names":["#action","#container"],"sources":["../../../../src/ui/hotkey/aria-key-shortcuts-controller.ts"],"sourcesContent":["import { findHotkeyCoordinator } from '@videojs/core/dom';\nimport type { ReactiveController } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport type { ContainerContextConsumer } from '../../player/context';\nimport { containerContext } from '../../player/context';\nimport type { PlayerControllerHost } from '../../player/player-controller';\n\n/** Provides `aria-keyshortcuts` for a given hotkey action name. */\nexport class AriaKeyShortcutsController implements ReactiveController {\n #action: string;\n #container: ContainerContextConsumer;\n\n constructor(host: PlayerControllerHost, action: string) {\n this.#action = action;\n this.#container = new ContextConsumer(host, { context: containerContext, subscribe: true });\n host.addController(this);\n }\n\n get value(): string | undefined {\n const container = this.#container.value?.container;\n if (!container) return undefined;\n return findHotkeyCoordinator(container)?.getAriaKeys(this.#action);\n }\n\n hostConnected(): void {}\n hostDisconnected(): void {}\n}\n"],"mappings":";;;;;AASA,IAAa,6BAAb,MAAsE;CACpE;CACA;CAEA,YAAY,MAA4B,QAAgB;AACtD,QAAA,SAAe;AACf,QAAA,YAAkB,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAkB,WAAW;GAAM,CAAC;AAC3F,OAAK,cAAc,KAAK;;CAG1B,IAAI,QAA4B;EAC9B,MAAM,YAAY,MAAA,UAAgB,OAAO;AACzC,MAAI,CAAC,UAAW,QAAO,KAAA;AACvB,SAAO,sBAAsB,UAAU,EAAE,YAAY,MAAA,OAAa;;CAGpE,gBAAsB;CACtB,mBAAyB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { MediaElement } from "../media-element.js";
|
|
2
|
+
import { HotkeyActionName } from "@videojs/core/dom";
|
|
3
|
+
import { PropertyDeclarationMap, PropertyValues } from "@videojs/element";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/hotkey/hotkey-element.d.ts
|
|
6
|
+
declare class HotkeyElement extends MediaElement {
|
|
7
|
+
#private;
|
|
8
|
+
static readonly tagName = "media-hotkey";
|
|
9
|
+
static properties: PropertyDeclarationMap;
|
|
10
|
+
keys: string;
|
|
11
|
+
action: HotkeyActionName | (string & {});
|
|
12
|
+
value: number | undefined;
|
|
13
|
+
disabled: boolean;
|
|
14
|
+
target: 'player' | 'document';
|
|
15
|
+
connectedCallback(): void;
|
|
16
|
+
disconnectedCallback(): void;
|
|
17
|
+
protected update(changed: PropertyValues): void;
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { HotkeyElement };
|
|
21
|
+
//# sourceMappingURL=hotkey-element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hotkey-element.d.ts","names":[],"sources":["../../../../src/ui/hotkey/hotkey-element.ts"],"mappings":";;;;;cAQa,aAAA,SAAsB,YAAA;EAAA;kBACjB,OAAA;EAAA,OAEA,UAAA,EAAY,sBAAA;EAQ5B,IAAA;EACA,MAAA,EAAQ,gBAAA;EACR,KAAA;EACA,QAAA;EACA,MAAA;EAUS,iBAAA,CAAA;EAMA,oBAAA,CAAA;EAAA,UAKU,MAAA,CAAO,OAAA,EAAS,cAAA;AAAA"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { containerContext, playerContext } from "../../player/context.js";
|
|
2
|
+
import { MediaElement } from "../media-element.js";
|
|
3
|
+
import { PlayerController } from "../../player/player-controller.js";
|
|
4
|
+
import { createHotkey, isHotkeyToggleAction, resolveHotkeyAction } from "@videojs/core/dom";
|
|
5
|
+
import { ContextConsumer } from "@videojs/element/context";
|
|
6
|
+
//#region src/ui/hotkey/hotkey-element.ts
|
|
7
|
+
var HotkeyElement = class extends MediaElement {
|
|
8
|
+
constructor(..._args) {
|
|
9
|
+
super(..._args);
|
|
10
|
+
this.keys = "";
|
|
11
|
+
this.action = "";
|
|
12
|
+
this.value = void 0;
|
|
13
|
+
this.disabled = false;
|
|
14
|
+
this.target = "player";
|
|
15
|
+
}
|
|
16
|
+
static {
|
|
17
|
+
this.tagName = "media-hotkey";
|
|
18
|
+
}
|
|
19
|
+
static {
|
|
20
|
+
this.properties = {
|
|
21
|
+
keys: { type: String },
|
|
22
|
+
action: { type: String },
|
|
23
|
+
value: { type: Number },
|
|
24
|
+
disabled: { type: Boolean },
|
|
25
|
+
target: { type: String }
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
#player = new PlayerController(this, playerContext);
|
|
29
|
+
#container = new ContextConsumer(this, {
|
|
30
|
+
context: containerContext,
|
|
31
|
+
callback: () => this.requestUpdate(),
|
|
32
|
+
subscribe: true
|
|
33
|
+
});
|
|
34
|
+
#cleanup = null;
|
|
35
|
+
connectedCallback() {
|
|
36
|
+
super.connectedCallback();
|
|
37
|
+
this.style.display = "none";
|
|
38
|
+
this.#register();
|
|
39
|
+
}
|
|
40
|
+
disconnectedCallback() {
|
|
41
|
+
super.disconnectedCallback();
|
|
42
|
+
this.#unregister();
|
|
43
|
+
}
|
|
44
|
+
update(changed) {
|
|
45
|
+
super.update(changed);
|
|
46
|
+
if (this.isConnected) {
|
|
47
|
+
this.#unregister();
|
|
48
|
+
this.#register();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
#register() {
|
|
52
|
+
const store = this.#player.value;
|
|
53
|
+
const container = this.#container.value?.container;
|
|
54
|
+
if (!this.keys || !this.action || !store || !container) return;
|
|
55
|
+
const resolver = resolveHotkeyAction(this.action);
|
|
56
|
+
if (!resolver) return;
|
|
57
|
+
const { value, action } = this;
|
|
58
|
+
this.#cleanup = createHotkey(container, {
|
|
59
|
+
keys: this.keys,
|
|
60
|
+
action,
|
|
61
|
+
target: this.target,
|
|
62
|
+
disabled: this.disabled,
|
|
63
|
+
repeatable: !isHotkeyToggleAction(action),
|
|
64
|
+
onActivate: (_event, key) => {
|
|
65
|
+
resolver({
|
|
66
|
+
store,
|
|
67
|
+
key,
|
|
68
|
+
value
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
#unregister() {
|
|
74
|
+
this.#cleanup?.();
|
|
75
|
+
this.#cleanup = null;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
//#endregion
|
|
79
|
+
export { HotkeyElement };
|
|
80
|
+
|
|
81
|
+
//# sourceMappingURL=hotkey-element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hotkey-element.js","names":["#player","#container","#register","#unregister","#cleanup"],"sources":["../../../../src/ui/hotkey/hotkey-element.ts"],"sourcesContent":["import { createHotkey, type HotkeyActionName, isHotkeyToggleAction, resolveHotkeyAction } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { containerContext, playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class HotkeyElement extends MediaElement {\n static readonly tagName = 'media-hotkey';\n\n static override properties: PropertyDeclarationMap = {\n keys: { type: String },\n action: { type: String },\n value: { type: Number },\n disabled: { type: Boolean },\n target: { type: String },\n };\n\n keys = '';\n action: HotkeyActionName | (string & {}) = '';\n value: number | undefined = undefined;\n disabled = false;\n target: 'player' | 'document' = 'player';\n\n readonly #player = new PlayerController(this, playerContext);\n readonly #container = new ContextConsumer(this, {\n context: containerContext,\n callback: () => this.requestUpdate(),\n subscribe: true,\n });\n #cleanup: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.style.display = 'none';\n this.#register();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#unregister();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n // Re-register when attributes change.\n if (this.isConnected) {\n this.#unregister();\n this.#register();\n }\n }\n\n #register(): void {\n const store = this.#player.value;\n const container = this.#container.value?.container;\n if (!this.keys || !this.action || !store || !container) return;\n\n const resolver = resolveHotkeyAction(this.action);\n if (!resolver) return;\n\n const { value, action } = this;\n\n this.#cleanup = createHotkey(container, {\n keys: this.keys,\n action,\n target: this.target,\n disabled: this.disabled,\n repeatable: !isHotkeyToggleAction(action),\n onActivate: (_event, key) => {\n resolver({ store, key, value });\n },\n });\n }\n\n #unregister(): void {\n this.#cleanup?.();\n this.#cleanup = null;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,gBAAb,cAAmC,aAAa;;;cAWvC;gBACoC;eACf,KAAA;kBACjB;gBACqB;;;iBAdN;;;oBAE2B;GACnD,MAAM,EAAE,MAAM,QAAQ;GACtB,QAAQ,EAAE,MAAM,QAAQ;GACxB,OAAO,EAAE,MAAM,QAAQ;GACvB,UAAU,EAAE,MAAM,SAAS;GAC3B,QAAQ,EAAE,MAAM,QAAQ;GACzB;;CAQD,UAAmB,IAAI,iBAAiB,MAAM,cAAc;CAC5D,aAAsB,IAAI,gBAAgB,MAAM;EAC9C,SAAS;EACT,gBAAgB,KAAK,eAAe;EACpC,WAAW;EACZ,CAAC;CACF,WAAgC;CAEhC,oBAAmC;AACjC,QAAM,mBAAmB;AACzB,OAAK,MAAM,UAAU;AACrB,QAAA,UAAgB;;CAGlB,uBAAsC;AACpC,QAAM,sBAAsB;AAC5B,QAAA,YAAkB;;CAGpB,OAA0B,SAA+B;AACvD,QAAM,OAAO,QAAQ;AAGrB,MAAI,KAAK,aAAa;AACpB,SAAA,YAAkB;AAClB,SAAA,UAAgB;;;CAIpB,YAAkB;EAChB,MAAM,QAAQ,MAAA,OAAa;EAC3B,MAAM,YAAY,MAAA,UAAgB,OAAO;AACzC,MAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,UAAU,CAAC,SAAS,CAAC,UAAW;EAExD,MAAM,WAAW,oBAAoB,KAAK,OAAO;AACjD,MAAI,CAAC,SAAU;EAEf,MAAM,EAAE,OAAO,WAAW;AAE1B,QAAA,UAAgB,aAAa,WAAW;GACtC,MAAM,KAAK;GACX;GACA,QAAQ,KAAK;GACb,UAAU,KAAK;GACf,YAAY,CAAC,qBAAqB,OAAO;GACzC,aAAa,QAAQ,QAAQ;AAC3B,aAAS;KAAE;KAAO;KAAK;KAAO,CAAC;;GAElC,CAAC;;CAGJ,cAAoB;AAClB,QAAA,WAAiB;AACjB,QAAA,UAAgB"}
|
|
@@ -15,6 +15,8 @@ declare abstract class MediaButtonElement<Core extends MediaButtonComponent> ext
|
|
|
15
15
|
protected abstract readonly stateAttrMap: StateAttrMap<InferComponentState<Core>>;
|
|
16
16
|
protected abstract readonly mediaState: PlayerController<any, InferMediaState<Core> | undefined>;
|
|
17
17
|
protected abstract activate(state: InferMediaState<Core>): void;
|
|
18
|
+
/** Override to set the hotkey action name for `aria-keyshortcuts`. */
|
|
19
|
+
protected readonly hotkeyAction: string | undefined;
|
|
18
20
|
get $state(): State<ButtonState>;
|
|
19
21
|
connectedCallback(): void;
|
|
20
22
|
disconnectedCallback(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-button-element.d.ts","names":[],"sources":["../../../src/ui/media-button-element.ts"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"media-button-element.d.ts","names":[],"sources":["../../../src/ui/media-button-element.ts"],"mappings":";;;;;;;;uBAgBsB,kBAAA,cAAgC,oBAAA,UAA8B,YAAA;EAAA;SAClE,UAAA,EAAY,sBAAA;EAK5B,QAAA;EACA,KAAA;EAAA,4BAE4B,IAAA,EAAM,IAAA;EAAA,4BACN,YAAA,EAAc,YAAA,CAAa,mBAAA,CAAoB,IAAA;EAAA,4BAC/C,UAAA,EAAY,gBAAA,MAAsB,eAAA,CAAgB,IAAA;EAAA,mBAE3D,QAAA,CAAS,KAAA,EAAO,eAAA,CAAgB,IAAA;EAHT;EAAA,mBAMvB,YAAA;EAAA,IAEf,MAAA,CAAA,GAAU,KAAA,CAAM,WAAA;EAOX,iBAAA,CAAA;EAsBA,oBAAA,CAAA;EAlC0B;EAyCnC,QAAA,CAAA;EAAA,UAImB,UAAA,CAAW,OAAA,EAAS,cAAA;EAAA,UAKpB,MAAA,CAAO,OAAA,EAAS,cAAA;AAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MediaElement } from "./media-element.js";
|
|
2
|
+
import { AriaKeyShortcutsController } from "./hotkey/aria-key-shortcuts-controller.js";
|
|
2
3
|
import { applyElementProps, applyStateDataAttrs, createButton, logMissingFeature } from "@videojs/core/dom";
|
|
3
4
|
//#region src/ui/media-button-element.ts
|
|
4
5
|
/** Abstract base for HTML custom elements that render a media-control button. */
|
|
@@ -7,6 +8,7 @@ var MediaButtonElement = class extends MediaElement {
|
|
|
7
8
|
super(..._args);
|
|
8
9
|
this.disabled = false;
|
|
9
10
|
this.label = "";
|
|
11
|
+
this.hotkeyAction = void 0;
|
|
10
12
|
}
|
|
11
13
|
static {
|
|
12
14
|
this.properties = {
|
|
@@ -18,8 +20,11 @@ var MediaButtonElement = class extends MediaElement {
|
|
|
18
20
|
return this.core.state;
|
|
19
21
|
}
|
|
20
22
|
#disconnect = null;
|
|
23
|
+
#hotkeyRegistry = null;
|
|
21
24
|
connectedCallback() {
|
|
22
25
|
super.connectedCallback();
|
|
26
|
+
if (this.destroyed) return;
|
|
27
|
+
if (this.hotkeyAction && !this.#hotkeyRegistry) this.#hotkeyRegistry = new AriaKeyShortcutsController(this, this.hotkeyAction);
|
|
23
28
|
this.#disconnect = new AbortController();
|
|
24
29
|
const buttonProps = createButton({
|
|
25
30
|
onActivate: () => this.activate(this.mediaState.value),
|
|
@@ -47,7 +52,10 @@ var MediaButtonElement = class extends MediaElement {
|
|
|
47
52
|
if (!media) return;
|
|
48
53
|
this.core.setMedia(media);
|
|
49
54
|
const state = this.core.getState();
|
|
50
|
-
applyElementProps(this,
|
|
55
|
+
applyElementProps(this, {
|
|
56
|
+
...this.core.getAttrs?.(state),
|
|
57
|
+
"aria-keyshortcuts": this.#hotkeyRegistry?.value
|
|
58
|
+
});
|
|
51
59
|
applyStateDataAttrs(this, state, this.stateAttrMap);
|
|
52
60
|
}
|
|
53
61
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-button-element.js","names":["#disconnect"],"sources":["../../../src/ui/media-button-element.ts"],"sourcesContent":["import type {\n ButtonState,\n InferComponentState,\n InferMediaState,\n MediaButtonComponent,\n StateAttrMap,\n} from '@videojs/core';\nimport { applyElementProps, applyStateDataAttrs, createButton, logMissingFeature } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport type { State } from '@videojs/store';\n\nimport type { PlayerController } from '../player/player-controller';\nimport { MediaElement } from './media-element';\n\n/** Abstract base for HTML custom elements that render a media-control button. */\nexport abstract class MediaButtonElement<Core extends MediaButtonComponent> extends MediaElement {\n static override properties: PropertyDeclarationMap = {\n label: { type: String },\n disabled: { type: Boolean },\n };\n\n disabled = false;\n label = '';\n\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 protected abstract activate(state: InferMediaState<Core>): void;\n\n get $state(): State<ButtonState> {\n return this.core.state;\n }\n\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.#disconnect = new AbortController();\n\n const buttonProps = createButton({\n onActivate: () => this.activate(this.mediaState.value!),\n isDisabled: () => this.disabled || !this.mediaState.value,\n });\n\n applyElementProps(this, buttonProps, { signal: this.#disconnect.signal });\n\n if (__DEV__ && !this.mediaState.value && this.mediaState.displayName) {\n logMissingFeature(this.localName, this.mediaState.displayName);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n /** Returns the button's current label derived from media state. */\n getLabel(): string | undefined {\n return this.core.state.current.label || undefined;\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.mediaState.value;\n\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n applyElementProps(this, this.core.getAttrs?.(state)
|
|
1
|
+
{"version":3,"file":"media-button-element.js","names":["#hotkeyRegistry","#disconnect"],"sources":["../../../src/ui/media-button-element.ts"],"sourcesContent":["import type {\n ButtonState,\n InferComponentState,\n InferMediaState,\n MediaButtonComponent,\n StateAttrMap,\n} from '@videojs/core';\nimport { applyElementProps, applyStateDataAttrs, createButton, logMissingFeature } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport type { State } from '@videojs/store';\n\nimport type { PlayerController } from '../player/player-controller';\nimport { AriaKeyShortcutsController } from './hotkey/aria-key-shortcuts-controller';\nimport { MediaElement } from './media-element';\n\n/** Abstract base for HTML custom elements that render a media-control button. */\nexport abstract class MediaButtonElement<Core extends MediaButtonComponent> extends MediaElement {\n static override properties: PropertyDeclarationMap = {\n label: { type: String },\n disabled: { type: Boolean },\n };\n\n disabled = false;\n label = '';\n\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 protected abstract activate(state: InferMediaState<Core>): void;\n\n /** Override to set the hotkey action name for `aria-keyshortcuts`. */\n protected readonly hotkeyAction: string | undefined = undefined;\n\n get $state(): State<ButtonState> {\n return this.core.state;\n }\n\n #disconnect: AbortController | null = null;\n #hotkeyRegistry: AriaKeyShortcutsController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n if (this.hotkeyAction && !this.#hotkeyRegistry) {\n this.#hotkeyRegistry = new AriaKeyShortcutsController(this, this.hotkeyAction);\n }\n\n this.#disconnect = new AbortController();\n\n const buttonProps = createButton({\n onActivate: () => this.activate(this.mediaState.value!),\n isDisabled: () => this.disabled || !this.mediaState.value,\n });\n\n applyElementProps(this, buttonProps, { signal: this.#disconnect.signal });\n\n if (__DEV__ && !this.mediaState.value && this.mediaState.displayName) {\n logMissingFeature(this.localName, this.mediaState.displayName);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n /** Returns the button's current label derived from media state. */\n getLabel(): string | undefined {\n return this.core.state.current.label || undefined;\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.mediaState.value;\n\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n applyElementProps(this, {\n ...this.core.getAttrs?.(state),\n 'aria-keyshortcuts': this.#hotkeyRegistry?.value,\n });\n applyStateDataAttrs(this, state, this.stateAttrMap);\n }\n}\n"],"mappings":";;;;;AAgBA,IAAsB,qBAAtB,cAAoF,aAAa;;;kBAMpF;eACH;sBAS8C,KAAA;;;oBAfD;GACnD,OAAO,EAAE,MAAM,QAAQ;GACvB,UAAU,EAAE,MAAM,SAAS;GAC5B;;CAcD,IAAI,SAA6B;AAC/B,SAAO,KAAK,KAAK;;CAGnB,cAAsC;CACtC,kBAAqD;CAErD,oBAAmC;AACjC,QAAM,mBAAmB;AACzB,MAAI,KAAK,UAAW;AAEpB,MAAI,KAAK,gBAAgB,CAAC,MAAA,eACxB,OAAA,iBAAuB,IAAI,2BAA2B,MAAM,KAAK,aAAa;AAGhF,QAAA,aAAmB,IAAI,iBAAiB;EAExC,MAAM,cAAc,aAAa;GAC/B,kBAAkB,KAAK,SAAS,KAAK,WAAW,MAAO;GACvD,kBAAkB,KAAK,YAAY,CAAC,KAAK,WAAW;GACrD,CAAC;AAEF,oBAAkB,MAAM,aAAa,EAAE,QAAQ,MAAA,WAAiB,QAAQ,CAAC;AAEzE,MAAe,CAAC,KAAK,WAAW,SAAS,KAAK,WAAW,YACvD,mBAAkB,KAAK,WAAW,KAAK,WAAW,YAAY;;CAIlE,uBAAsC;AACpC,QAAM,sBAAsB;AAC5B,QAAA,YAAkB,OAAO;AACzB,QAAA,aAAmB;;;CAIrB,WAA+B;AAC7B,SAAO,KAAK,KAAK,MAAM,QAAQ,SAAS,KAAA;;CAG1C,WAA8B,SAA+B;AAC3D,QAAM,WAAW,QAAQ;AACzB,OAAK,KAAK,WAAW,KAAK;;CAG5B,OAA0B,SAA+B;AACvD,QAAM,OAAO,QAAQ;EAErB,MAAM,QAAQ,KAAK,WAAW;AAE9B,MAAI,CAAC,MAAO;AAEZ,OAAK,KAAK,SAAS,MAAM;EACzB,MAAM,QAAQ,KAAK,KAAK,UAAU;AAClC,oBAAkB,MAAM;GACtB,GAAG,KAAK,KAAK,WAAW,MAAM;GAC9B,qBAAqB,MAAA,gBAAsB;GAC5C,CAAC;AACF,sBAAoB,MAAM,OAAO,KAAK,aAAa"}
|
|
@@ -12,6 +12,7 @@ declare class MuteButtonElement extends MediaButtonElement<MuteButtonCore> {
|
|
|
12
12
|
readonly volumeLevel: "data-volume-level";
|
|
13
13
|
};
|
|
14
14
|
protected readonly mediaState: PlayerController<_videojs_core_dom0.AnyPlayerStore, MediaVolumeState | undefined>;
|
|
15
|
+
protected readonly hotkeyAction = "toggleMuted";
|
|
15
16
|
protected activate(state: MediaVolumeState): void;
|
|
16
17
|
}
|
|
17
18
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mute-button-element.d.ts","names":[],"sources":["../../../../src/ui/mute-button/mute-button-element.ts"],"mappings":";;;;;;cAOa,iBAAA,SAA0B,kBAAA,CAAmB,cAAA;EAAA,gBACxC,OAAA;EAAA,mBAEG,IAAA,EAAI,cAAA;EAAA,mBACJ,YAAA;IAAA;;;qBACA,UAAA,EAAU,gBAAA,CAFN,kBAAA,CAEM,cAAA,EAAA,gBAAA;EAAA,
|
|
1
|
+
{"version":3,"file":"mute-button-element.d.ts","names":[],"sources":["../../../../src/ui/mute-button/mute-button-element.ts"],"mappings":";;;;;;cAOa,iBAAA,SAA0B,kBAAA,CAAmB,cAAA;EAAA,gBACxC,OAAA;EAAA,mBAEG,IAAA,EAAI,cAAA;EAAA,mBACJ,YAAA;IAAA;;;qBACA,UAAA,EAAU,gBAAA,CAFN,kBAAA,CAEM,cAAA,EAAA,gBAAA;EAAA,mBACD,YAAA;EAAA,UAElB,QAAA,CAAS,KAAA,EAAO,gBAAA;AAAA"}
|
|
@@ -10,6 +10,7 @@ var MuteButtonElement = class extends MediaButtonElement {
|
|
|
10
10
|
this.core = new MuteButtonCore();
|
|
11
11
|
this.stateAttrMap = MuteButtonDataAttrs;
|
|
12
12
|
this.mediaState = new PlayerController(this, playerContext, selectVolume);
|
|
13
|
+
this.hotkeyAction = "toggleMuted";
|
|
13
14
|
}
|
|
14
15
|
static {
|
|
15
16
|
this.tagName = "media-mute-button";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mute-button-element.js","names":[],"sources":["../../../../src/ui/mute-button/mute-button-element.ts"],"sourcesContent":["import { type MediaVolumeState, MuteButtonCore, MuteButtonDataAttrs } from '@videojs/core';\nimport { selectVolume } 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 MuteButtonElement extends MediaButtonElement<MuteButtonCore> {\n static readonly tagName = 'media-mute-button';\n\n protected readonly core = new MuteButtonCore();\n protected readonly stateAttrMap = MuteButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectVolume);\n\n protected activate(state: MediaVolumeState): void {\n this.core.toggle(state);\n }\n}\n"],"mappings":";;;;;;AAOA,IAAa,oBAAb,cAAuC,mBAAmC;;;cAG9C,IAAI,gBAAgB;sBACZ;oBACF,IAAI,iBAAiB,MAAM,eAAe,aAAa;;;
|
|
1
|
+
{"version":3,"file":"mute-button-element.js","names":[],"sources":["../../../../src/ui/mute-button/mute-button-element.ts"],"sourcesContent":["import { type MediaVolumeState, MuteButtonCore, MuteButtonDataAttrs } from '@videojs/core';\nimport { selectVolume } 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 MuteButtonElement extends MediaButtonElement<MuteButtonCore> {\n static readonly tagName = 'media-mute-button';\n\n protected readonly core = new MuteButtonCore();\n protected readonly stateAttrMap = MuteButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectVolume);\n protected override readonly hotkeyAction = 'toggleMuted';\n\n protected activate(state: MediaVolumeState): void {\n this.core.toggle(state);\n }\n}\n"],"mappings":";;;;;;AAOA,IAAa,oBAAb,cAAuC,mBAAmC;;;cAG9C,IAAI,gBAAgB;sBACZ;oBACF,IAAI,iBAAiB,MAAM,eAAe,aAAa;sBAC5C;;;iBALjB;;CAO1B,SAAmB,OAA+B;AAChD,OAAK,KAAK,OAAO,MAAM"}
|
|
@@ -12,6 +12,7 @@ declare class PiPButtonElement extends MediaButtonElement<PiPButtonCore> {
|
|
|
12
12
|
readonly availability: "data-availability";
|
|
13
13
|
};
|
|
14
14
|
protected readonly mediaState: PlayerController<_videojs_core_dom0.AnyPlayerStore, MediaPictureInPictureState | undefined>;
|
|
15
|
+
protected readonly hotkeyAction = "togglePictureInPicture";
|
|
15
16
|
protected activate(state: MediaPictureInPictureState): void;
|
|
16
17
|
}
|
|
17
18
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pip-button-element.d.ts","names":[],"sources":["../../../../src/ui/pip-button/pip-button-element.ts"],"mappings":";;;;;;cAOa,gBAAA,SAAyB,kBAAA,CAAmB,aAAA;EAAA,gBACvC,OAAA;EAAA,mBAEG,IAAA,EAAI,aAAA;EAAA,mBACJ,YAAA;IAAA;;;qBACA,UAAA,EAAU,gBAAA,CAFN,kBAAA,CAEM,cAAA,EAAA,0BAAA;EAAA,
|
|
1
|
+
{"version":3,"file":"pip-button-element.d.ts","names":[],"sources":["../../../../src/ui/pip-button/pip-button-element.ts"],"mappings":";;;;;;cAOa,gBAAA,SAAyB,kBAAA,CAAmB,aAAA;EAAA,gBACvC,OAAA;EAAA,mBAEG,IAAA,EAAI,aAAA;EAAA,mBACJ,YAAA;IAAA;;;qBACA,UAAA,EAAU,gBAAA,CAFN,kBAAA,CAEM,cAAA,EAAA,0BAAA;EAAA,mBACD,YAAA;EAAA,UAElB,QAAA,CAAS,KAAA,EAAO,0BAAA;AAAA"}
|
|
@@ -10,6 +10,7 @@ var PiPButtonElement = class extends MediaButtonElement {
|
|
|
10
10
|
this.core = new PiPButtonCore();
|
|
11
11
|
this.stateAttrMap = PiPButtonDataAttrs;
|
|
12
12
|
this.mediaState = new PlayerController(this, playerContext, selectPiP);
|
|
13
|
+
this.hotkeyAction = "togglePictureInPicture";
|
|
13
14
|
}
|
|
14
15
|
static {
|
|
15
16
|
this.tagName = "media-pip-button";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pip-button-element.js","names":[],"sources":["../../../../src/ui/pip-button/pip-button-element.ts"],"sourcesContent":["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\n protected activate(state: MediaPictureInPictureState): void {\n this.core.toggle(state);\n }\n}\n"],"mappings":";;;;;;AAOA,IAAa,mBAAb,cAAsC,mBAAkC;;;cAG5C,IAAI,eAAe;sBACX;oBACF,IAAI,iBAAiB,MAAM,eAAe,UAAU;;;
|
|
1
|
+
{"version":3,"file":"pip-button-element.js","names":[],"sources":["../../../../src/ui/pip-button/pip-button-element.ts"],"sourcesContent":["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 = 'togglePictureInPicture';\n\n protected activate(state: MediaPictureInPictureState): void {\n this.core.toggle(state);\n }\n}\n"],"mappings":";;;;;;AAOA,IAAa,mBAAb,cAAsC,mBAAkC;;;cAG5C,IAAI,eAAe;sBACX;oBACF,IAAI,iBAAiB,MAAM,eAAe,UAAU;sBACzC;;;iBALjB;;CAO1B,SAAmB,OAAyC;AAC1D,OAAK,KAAK,OAAO,MAAM"}
|
|
@@ -13,6 +13,7 @@ declare class PlayButtonElement extends MediaButtonElement<PlayButtonCore> {
|
|
|
13
13
|
readonly started: "data-started";
|
|
14
14
|
};
|
|
15
15
|
protected readonly mediaState: PlayerController<_videojs_core_dom0.AnyPlayerStore, MediaPlaybackState | undefined>;
|
|
16
|
+
protected readonly hotkeyAction = "togglePaused";
|
|
16
17
|
protected activate(state: MediaPlaybackState): void;
|
|
17
18
|
}
|
|
18
19
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"play-button-element.d.ts","names":[],"sources":["../../../../src/ui/play-button/play-button-element.ts"],"mappings":";;;;;;cAOa,iBAAA,SAA0B,kBAAA,CAAmB,cAAA;EAAA,gBACxC,OAAA;EAAA,mBAEG,IAAA,EAAI,cAAA;EAAA,mBACJ,YAAA;IAAA;;;;qBACA,UAAA,EAAU,gBAAA,CAFN,kBAAA,CAEM,cAAA,EAAA,kBAAA;EAAA,
|
|
1
|
+
{"version":3,"file":"play-button-element.d.ts","names":[],"sources":["../../../../src/ui/play-button/play-button-element.ts"],"mappings":";;;;;;cAOa,iBAAA,SAA0B,kBAAA,CAAmB,cAAA;EAAA,gBACxC,OAAA;EAAA,mBAEG,IAAA,EAAI,cAAA;EAAA,mBACJ,YAAA;IAAA;;;;qBACA,UAAA,EAAU,gBAAA,CAFN,kBAAA,CAEM,cAAA,EAAA,kBAAA;EAAA,mBACD,YAAA;EAAA,UAElB,QAAA,CAAS,KAAA,EAAO,kBAAA;AAAA"}
|
|
@@ -10,6 +10,7 @@ var PlayButtonElement = class extends MediaButtonElement {
|
|
|
10
10
|
this.core = new PlayButtonCore();
|
|
11
11
|
this.stateAttrMap = PlayButtonDataAttrs;
|
|
12
12
|
this.mediaState = new PlayerController(this, playerContext, selectPlayback);
|
|
13
|
+
this.hotkeyAction = "togglePaused";
|
|
13
14
|
}
|
|
14
15
|
static {
|
|
15
16
|
this.tagName = "media-play-button";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"play-button-element.js","names":[],"sources":["../../../../src/ui/play-button/play-button-element.ts"],"sourcesContent":["import { type MediaPlaybackState, PlayButtonCore, PlayButtonDataAttrs } from '@videojs/core';\nimport { selectPlayback } 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 PlayButtonElement extends MediaButtonElement<PlayButtonCore> {\n static readonly tagName = 'media-play-button';\n\n protected readonly core = new PlayButtonCore();\n protected readonly stateAttrMap = PlayButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlayback);\n\n protected activate(state: MediaPlaybackState): void {\n this.core.toggle(state);\n }\n}\n"],"mappings":";;;;;;AAOA,IAAa,oBAAb,cAAuC,mBAAmC;;;cAG9C,IAAI,gBAAgB;sBACZ;oBACF,IAAI,iBAAiB,MAAM,eAAe,eAAe;;;
|
|
1
|
+
{"version":3,"file":"play-button-element.js","names":[],"sources":["../../../../src/ui/play-button/play-button-element.ts"],"sourcesContent":["import { type MediaPlaybackState, PlayButtonCore, PlayButtonDataAttrs } from '@videojs/core';\nimport { selectPlayback } 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 PlayButtonElement extends MediaButtonElement<PlayButtonCore> {\n static readonly tagName = 'media-play-button';\n\n protected readonly core = new PlayButtonCore();\n protected readonly stateAttrMap = PlayButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlayback);\n protected override readonly hotkeyAction = 'togglePaused';\n\n protected activate(state: MediaPlaybackState): void {\n this.core.toggle(state);\n }\n}\n"],"mappings":";;;;;;AAOA,IAAa,oBAAb,cAAuC,mBAAmC;;;cAG9C,IAAI,gBAAgB;sBACZ;oBACF,IAAI,iBAAiB,MAAM,eAAe,eAAe;sBAC9C;;;iBALjB;;CAO1B,SAAmB,OAAiC;AAClD,OAAK,KAAK,OAAO,MAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover-element.d.ts","names":[],"sources":["../../../../src/ui/popover/popover-element.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"popover-element.d.ts","names":[],"sources":["../../../../src/ui/popover/popover-element.ts"],"mappings":";;;;;;cAoBa,cAAA,SAAuB,YAAA;EAAA;kBAClB,OAAA;EAAA,OAEA,UAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAahB,IAAA;EACA,WAAA;EACA,IAAA,iBAAI,WAAA;EACJ,KAAA,EADI,cAAA,CACC,YAAA;EACL,KAAA,EAAO,YAAA;EACP,aAAA;EACA,mBAAA;EACA,WAAA;EACA,KAAA;EACA,UAAA;EAYS,iBAAA,CAAA;EAAA,UAmCU,YAAA,CAAa,OAAA,EAAS,cAAA;EAUhC,oBAAA,CAAA;EAMA,eAAA,CAAA;EAAA,UAMU,UAAA,CAAW,OAAA,EAAS,cAAA;EAAA,UAiBpB,MAAA,CAAO,QAAA,EAAU,cAAA;AAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { MediaElement } from "../media-element.js";
|
|
2
|
+
import { PositionController } from "../position-controller.js";
|
|
2
3
|
import { PopoverCore, PopoverDataAttrs } from "@videojs/core";
|
|
3
4
|
import { applyElementProps, applyStateDataAttrs, createPopover, createTransition, getAnchorNameStyle, getAnchorPositionStyle, getPopupPositionRect, resolveOffsets } from "@videojs/core/dom";
|
|
4
|
-
import { SnapshotController } from "@videojs/store/html";
|
|
5
5
|
import { applyStyles, supportsAnchorPositioning, tryHidePopover, tryShowPopover } from "@videojs/utils/dom";
|
|
6
|
+
import { SnapshotController } from "@videojs/store/html";
|
|
6
7
|
//#region src/ui/popover/popover-element.ts
|
|
7
8
|
var PopoverElement = class extends MediaElement {
|
|
8
9
|
constructor(..._args) {
|
|
@@ -51,15 +52,12 @@ var PopoverElement = class extends MediaElement {
|
|
|
51
52
|
};
|
|
52
53
|
}
|
|
53
54
|
#core = new PopoverCore();
|
|
55
|
+
#position = new PositionController(this);
|
|
54
56
|
#popover = null;
|
|
55
57
|
#snapshot = null;
|
|
56
58
|
#disconnect = null;
|
|
57
59
|
#triggerAbort = null;
|
|
58
60
|
#currentTrigger = null;
|
|
59
|
-
#positionAbort = null;
|
|
60
|
-
#positionFrame = 0;
|
|
61
|
-
#resizeObserver = null;
|
|
62
|
-
#positionTrigger = null;
|
|
63
61
|
connectedCallback() {
|
|
64
62
|
super.connectedCallback();
|
|
65
63
|
if (this.destroyed) return;
|
|
@@ -90,12 +88,10 @@ var PopoverElement = class extends MediaElement {
|
|
|
90
88
|
}
|
|
91
89
|
disconnectedCallback() {
|
|
92
90
|
super.disconnectedCallback();
|
|
93
|
-
this.#cleanupPositioning();
|
|
94
91
|
this.#disconnect?.abort();
|
|
95
92
|
this.#disconnect = null;
|
|
96
93
|
}
|
|
97
94
|
destroyCallback() {
|
|
98
|
-
this.#cleanupPositioning();
|
|
99
95
|
this.#cleanupTrigger();
|
|
100
96
|
this.#popover?.destroy();
|
|
101
97
|
super.destroyCallback();
|
|
@@ -112,7 +108,7 @@ var PopoverElement = class extends MediaElement {
|
|
|
112
108
|
update(_changed) {
|
|
113
109
|
super.update(_changed);
|
|
114
110
|
if (!this.#popover) return;
|
|
115
|
-
const triggerEl = this.#findTrigger();
|
|
111
|
+
const triggerEl = this.#position.findTrigger();
|
|
116
112
|
this.#syncTrigger(triggerEl);
|
|
117
113
|
const input = this.#popover.input.current;
|
|
118
114
|
this.#core.setInput(input);
|
|
@@ -126,7 +122,7 @@ var PopoverElement = class extends MediaElement {
|
|
|
126
122
|
applyStyles(this.#currentTrigger, getAnchorNameStyle(this.id));
|
|
127
123
|
}
|
|
128
124
|
if (!state.open) {
|
|
129
|
-
this.#
|
|
125
|
+
this.#position.cleanup();
|
|
130
126
|
return;
|
|
131
127
|
}
|
|
132
128
|
const posOpts = {
|
|
@@ -141,15 +137,11 @@ var PopoverElement = class extends MediaElement {
|
|
|
141
137
|
const offsets = resolveOffsets(this);
|
|
142
138
|
applyStyles(this, getAnchorPositionStyle(this.id, posOpts, triggerRect, selfRect, boundaryRect, offsets));
|
|
143
139
|
}
|
|
144
|
-
this.#
|
|
145
|
-
}
|
|
146
|
-
#findTrigger() {
|
|
147
|
-
if (!this.id) return null;
|
|
148
|
-
return this.getRootNode().querySelector(`[commandfor="${this.id}"]`);
|
|
140
|
+
this.#position.sync(this.#currentTrigger);
|
|
149
141
|
}
|
|
150
142
|
#syncTrigger(triggerEl) {
|
|
151
143
|
if (triggerEl === this.#currentTrigger) return;
|
|
152
|
-
this.#
|
|
144
|
+
this.#position.cleanup();
|
|
153
145
|
this.#cleanupTrigger();
|
|
154
146
|
this.#currentTrigger = triggerEl;
|
|
155
147
|
this.#popover?.setTriggerElement(triggerEl);
|
|
@@ -171,46 +163,6 @@ var PopoverElement = class extends MediaElement {
|
|
|
171
163
|
this.#triggerAbort = null;
|
|
172
164
|
this.#currentTrigger = null;
|
|
173
165
|
}
|
|
174
|
-
#syncPositioning() {
|
|
175
|
-
if (supportsAnchorPositioning()) return;
|
|
176
|
-
const triggerEl = this.#currentTrigger;
|
|
177
|
-
if (!triggerEl) return;
|
|
178
|
-
if (this.#positionAbort && this.#positionTrigger === triggerEl) return;
|
|
179
|
-
this.#cleanupPositioning();
|
|
180
|
-
this.#positionAbort = new AbortController();
|
|
181
|
-
this.#positionTrigger = triggerEl;
|
|
182
|
-
const { signal } = this.#positionAbort;
|
|
183
|
-
const reposition = () => {
|
|
184
|
-
cancelAnimationFrame(this.#positionFrame);
|
|
185
|
-
this.#positionFrame = requestAnimationFrame(() => {
|
|
186
|
-
if (signal.aborted) return;
|
|
187
|
-
this.requestUpdate();
|
|
188
|
-
});
|
|
189
|
-
};
|
|
190
|
-
window.addEventListener("scroll", reposition, {
|
|
191
|
-
capture: true,
|
|
192
|
-
passive: true,
|
|
193
|
-
signal
|
|
194
|
-
});
|
|
195
|
-
window.addEventListener("resize", reposition, { signal });
|
|
196
|
-
if (typeof ResizeObserver === "function") {
|
|
197
|
-
this.#resizeObserver = new ResizeObserver(() => {
|
|
198
|
-
reposition();
|
|
199
|
-
});
|
|
200
|
-
this.#resizeObserver.observe(triggerEl);
|
|
201
|
-
this.#resizeObserver.observe(this);
|
|
202
|
-
}
|
|
203
|
-
reposition();
|
|
204
|
-
}
|
|
205
|
-
#cleanupPositioning() {
|
|
206
|
-
this.#positionAbort?.abort();
|
|
207
|
-
this.#positionAbort = null;
|
|
208
|
-
this.#positionTrigger = null;
|
|
209
|
-
cancelAnimationFrame(this.#positionFrame);
|
|
210
|
-
this.#positionFrame = 0;
|
|
211
|
-
this.#resizeObserver?.disconnect();
|
|
212
|
-
this.#resizeObserver = null;
|
|
213
|
-
}
|
|
214
166
|
};
|
|
215
167
|
//#endregion
|
|
216
168
|
export { PopoverElement };
|