@videojs/html 10.0.0-alpha.4 → 10.0.0-alpha.6
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/dist/default/define/audio/minimal-skin.css +11 -0
- package/dist/default/define/audio/minimal-skin.js +26 -0
- package/dist/default/define/audio/minimal-skin.js.map +1 -0
- package/dist/default/define/audio/player.js +8 -4
- package/dist/default/define/audio/player.js.map +1 -1
- package/dist/default/define/audio/skin.css +12 -0
- package/dist/default/define/audio/skin.js +26 -0
- package/dist/default/define/audio/skin.js.map +1 -0
- package/dist/default/define/background/player.js +8 -4
- package/dist/default/define/background/player.js.map +1 -1
- package/dist/default/define/background/skin.js +2 -1
- package/dist/default/define/background/skin.js.map +1 -1
- package/dist/default/define/media/background-video.js +2 -1
- package/dist/default/define/media/background-video.js.map +1 -1
- package/dist/default/define/media/container.js +8 -0
- package/dist/default/define/media/container.js.map +1 -0
- package/dist/default/define/media/hls-video.js +2 -1
- package/dist/default/define/media/hls-video.js.map +1 -1
- package/dist/default/define/safe-define.js +9 -0
- package/dist/default/define/safe-define.js.map +1 -0
- package/dist/default/define/skin-mixin.js +35 -0
- package/dist/default/define/skin-mixin.js.map +1 -0
- package/dist/default/define/ui/buffering-indicator.js +2 -1
- package/dist/default/define/ui/buffering-indicator.js.map +1 -1
- package/dist/default/define/ui/controls-group.js +8 -0
- package/dist/default/define/ui/controls-group.js.map +1 -0
- package/dist/default/define/ui/controls.js +3 -2
- package/dist/default/define/ui/controls.js.map +1 -1
- package/dist/default/define/ui/fullscreen-button.js +2 -1
- package/dist/default/define/ui/fullscreen-button.js.map +1 -1
- package/dist/default/define/ui/mute-button.js +2 -1
- package/dist/default/define/ui/mute-button.js.map +1 -1
- package/dist/default/define/ui/pip-button.js +2 -1
- package/dist/default/define/ui/pip-button.js.map +1 -1
- package/dist/default/define/ui/play-button.js +2 -1
- package/dist/default/define/ui/play-button.js.map +1 -1
- package/dist/default/define/ui/playback-rate-button.js +8 -0
- package/dist/default/define/ui/playback-rate-button.js.map +1 -0
- package/dist/default/define/ui/popover.js +8 -0
- package/dist/default/define/ui/popover.js.map +1 -0
- package/dist/default/define/ui/poster.js +2 -1
- package/dist/default/define/ui/poster.js.map +1 -1
- package/dist/default/define/ui/seek-button.js +2 -1
- package/dist/default/define/ui/seek-button.js.map +1 -1
- package/dist/default/define/ui/slider-buffer.js +8 -0
- package/dist/default/define/ui/slider-buffer.js.map +1 -0
- package/dist/default/define/ui/slider-fill.js +8 -0
- package/dist/default/define/ui/slider-fill.js.map +1 -0
- package/dist/default/define/ui/slider-thumb.js +8 -0
- package/dist/default/define/ui/slider-thumb.js.map +1 -0
- package/dist/default/define/ui/slider-track.js +8 -0
- package/dist/default/define/ui/slider-track.js.map +1 -0
- package/dist/default/define/ui/slider-value.js +8 -0
- package/dist/default/define/ui/slider-value.js.map +1 -0
- package/dist/default/define/ui/slider.js +16 -0
- package/dist/default/define/ui/slider.js.map +1 -0
- package/dist/default/define/ui/thumbnail.js +8 -0
- package/dist/default/define/ui/thumbnail.js.map +1 -0
- package/dist/default/define/ui/time-group.js +8 -0
- package/dist/default/define/ui/time-group.js.map +1 -0
- package/dist/default/define/ui/time-separator.js +8 -0
- package/dist/default/define/ui/time-separator.js.map +1 -0
- package/dist/default/define/ui/time-slider.js +18 -0
- package/dist/default/define/ui/time-slider.js.map +1 -0
- package/dist/default/define/ui/time.js +4 -3
- package/dist/default/define/ui/time.js.map +1 -1
- package/dist/default/define/ui/volume-slider.js +16 -0
- package/dist/default/define/ui/volume-slider.js.map +1 -0
- package/dist/default/define/video/minimal-skin.css +762 -0
- package/dist/default/define/video/minimal-skin.js +131 -0
- package/dist/default/define/video/minimal-skin.js.map +1 -0
- package/dist/default/define/video/minimal-skin.tailwind.js +134 -0
- package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -0
- package/dist/default/define/video/player.js +8 -4
- package/dist/default/define/video/player.js.map +1 -1
- package/dist/default/define/video/skin.css +763 -0
- package/dist/default/define/video/skin.js +125 -0
- package/dist/default/define/video/skin.js.map +1 -0
- package/dist/default/define/video/skin.tailwind.js +127 -0
- package/dist/default/define/video/skin.tailwind.js.map +1 -0
- package/dist/default/icons/dist/render/default/index.js +27 -0
- package/dist/default/icons/dist/render/default/index.js.map +1 -0
- package/dist/default/icons/dist/render/minimal/index.js +27 -0
- package/dist/default/icons/dist/render/minimal/index.js.map +1 -0
- package/dist/default/index.js +17 -3
- package/dist/default/media/container-element.js +15 -0
- package/dist/default/media/container-element.js.map +1 -0
- package/dist/default/player/create-player.js +0 -5
- package/dist/default/player/create-player.js.map +1 -1
- package/dist/default/player/player-controller.js +3 -0
- package/dist/default/player/player-controller.js.map +1 -1
- package/dist/default/presets/audio.js +5 -0
- package/dist/default/presets/background.js +3 -0
- package/dist/default/presets/video.js +7 -0
- package/dist/default/skins/dist/default/video/default.tailwind.js +90 -0
- package/dist/default/skins/dist/default/video/default.tailwind.js.map +1 -0
- package/dist/default/skins/dist/default/video/minimal.tailwind.js +86 -0
- package/dist/default/skins/dist/default/video/minimal.tailwind.js.map +1 -0
- package/dist/default/store/container-mixin.js +14 -7
- package/dist/default/store/container-mixin.js.map +1 -1
- package/dist/default/ui/buffering-indicator/buffering-indicator-element.js.map +1 -1
- package/dist/default/ui/context-part-element.js +28 -0
- package/dist/default/ui/context-part-element.js.map +1 -0
- package/dist/default/ui/controls/context.js +9 -0
- package/dist/default/ui/controls/context.js.map +1 -0
- package/dist/default/ui/controls/controls-element.js +15 -6
- package/dist/default/ui/controls/controls-element.js.map +1 -1
- package/dist/default/ui/controls/controls-group-element.js +11 -2
- package/dist/default/ui/controls/controls-group-element.js.map +1 -1
- package/dist/default/ui/fullscreen-button/fullscreen-button-element.js +8 -39
- package/dist/default/ui/fullscreen-button/fullscreen-button-element.js.map +1 -1
- package/dist/default/ui/media-button-element.js +50 -0
- package/dist/default/ui/media-button-element.js.map +1 -0
- package/dist/default/ui/media-ui-element.js +22 -0
- package/dist/default/ui/media-ui-element.js.map +1 -0
- package/dist/default/ui/mute-button/mute-button-element.js +8 -39
- package/dist/default/ui/mute-button/mute-button-element.js.map +1 -1
- package/dist/default/ui/pip-button/pip-button-element.js +8 -39
- package/dist/default/ui/pip-button/pip-button-element.js.map +1 -1
- package/dist/default/ui/play-button/play-button-element.js +8 -39
- package/dist/default/ui/play-button/play-button-element.js.map +1 -1
- package/dist/default/ui/playback-rate-button/playback-rate-button-element.js +25 -0
- package/dist/default/ui/playback-rate-button/playback-rate-button-element.js.map +1 -0
- package/dist/default/ui/popover/popover-element.js +163 -0
- package/dist/default/ui/popover/popover-element.js.map +1 -0
- package/dist/default/ui/poster/poster-element.js +9 -14
- package/dist/default/ui/poster/poster-element.js.map +1 -1
- package/dist/default/ui/seek-button/seek-button-element.js +10 -36
- package/dist/default/ui/seek-button/seek-button-element.js.map +1 -1
- package/dist/default/ui/slider/context.js +9 -0
- package/dist/default/ui/slider/context.js.map +1 -0
- package/dist/default/ui/slider/slider-buffer-element.js +21 -0
- package/dist/default/ui/slider/slider-buffer-element.js.map +1 -0
- package/dist/default/ui/slider/slider-element.js +117 -0
- package/dist/default/ui/slider/slider-element.js.map +1 -0
- package/dist/default/ui/slider/slider-fill-element.js +21 -0
- package/dist/default/ui/slider/slider-fill-element.js.map +1 -0
- package/dist/default/ui/slider/slider-thumb-element.js +43 -0
- package/dist/default/ui/slider/slider-thumb-element.js.map +1 -0
- package/dist/default/ui/slider/slider-track-element.js +21 -0
- package/dist/default/ui/slider/slider-track-element.js.map +1 -0
- package/dist/default/ui/slider/slider-value-element.js +38 -0
- package/dist/default/ui/slider/slider-value-element.js.map +1 -0
- package/dist/default/ui/thumbnail/thumbnail-element.js +136 -0
- package/dist/default/ui/thumbnail/thumbnail-element.js.map +1 -0
- package/dist/default/ui/time/time-element.js +8 -16
- package/dist/default/ui/time/time-element.js.map +1 -1
- package/dist/default/ui/time-slider/time-slider-element.js +128 -0
- package/dist/default/ui/time-slider/time-slider-element.js.map +1 -0
- package/dist/default/ui/volume-slider/volume-slider-element.js +117 -0
- package/dist/default/ui/volume-slider/volume-slider-element.js.map +1 -0
- package/dist/dev/define/audio/minimal-skin.css +11 -0
- package/dist/dev/define/audio/minimal-skin.d.ts +17 -0
- package/dist/dev/define/audio/minimal-skin.d.ts.map +1 -0
- package/dist/dev/define/audio/minimal-skin.js +26 -0
- package/dist/dev/define/audio/minimal-skin.js.map +1 -0
- package/dist/dev/define/audio/player.d.ts +4 -3
- package/dist/dev/define/audio/player.d.ts.map +1 -1
- package/dist/dev/define/audio/player.js +8 -4
- package/dist/dev/define/audio/player.js.map +1 -1
- package/dist/dev/define/audio/skin.css +12 -0
- package/dist/dev/define/audio/skin.d.ts +17 -1
- package/dist/dev/define/audio/skin.d.ts.map +1 -0
- package/dist/dev/define/audio/skin.js +26 -0
- package/dist/dev/define/audio/skin.js.map +1 -0
- package/dist/dev/define/background/player.d.ts +4 -3
- package/dist/dev/define/background/player.d.ts.map +1 -1
- package/dist/dev/define/background/player.js +8 -4
- package/dist/dev/define/background/player.js.map +1 -1
- package/dist/dev/define/background/skin.d.ts.map +1 -1
- package/dist/dev/define/background/skin.js +2 -1
- package/dist/dev/define/background/skin.js.map +1 -1
- package/dist/dev/define/media/background-video.d.ts.map +1 -1
- package/dist/dev/define/media/background-video.js +2 -1
- package/dist/dev/define/media/background-video.js.map +1 -1
- package/dist/dev/define/media/container.d.ts +9 -0
- package/dist/dev/define/media/container.d.ts.map +1 -0
- package/dist/dev/define/media/container.js +8 -0
- package/dist/dev/define/media/container.js.map +1 -0
- package/dist/dev/define/media/hls-video.d.ts.map +1 -1
- package/dist/dev/define/media/hls-video.js +2 -1
- package/dist/dev/define/media/hls-video.js.map +1 -1
- package/dist/dev/define/safe-define.d.ts +9 -0
- package/dist/dev/define/safe-define.d.ts.map +1 -0
- package/dist/dev/define/safe-define.js +9 -0
- package/dist/dev/define/safe-define.js.map +1 -0
- package/dist/dev/define/skin-mixin.d.ts +13 -0
- package/dist/dev/define/skin-mixin.d.ts.map +1 -0
- package/dist/dev/define/skin-mixin.js +35 -0
- package/dist/dev/define/skin-mixin.js.map +1 -0
- package/dist/dev/define/ui/buffering-indicator.d.ts.map +1 -1
- package/dist/dev/define/ui/buffering-indicator.js +2 -1
- package/dist/dev/define/ui/buffering-indicator.js.map +1 -1
- package/dist/dev/define/ui/controls-group.d.ts +9 -0
- package/dist/dev/define/ui/controls-group.d.ts.map +1 -0
- package/dist/dev/define/ui/controls-group.js +8 -0
- package/dist/dev/define/ui/controls-group.js.map +1 -0
- package/dist/dev/define/ui/controls.d.ts +0 -2
- package/dist/dev/define/ui/controls.d.ts.map +1 -1
- package/dist/dev/define/ui/controls.js +3 -2
- package/dist/dev/define/ui/controls.js.map +1 -1
- package/dist/dev/define/ui/fullscreen-button.d.ts.map +1 -1
- package/dist/dev/define/ui/fullscreen-button.js +2 -1
- package/dist/dev/define/ui/fullscreen-button.js.map +1 -1
- package/dist/dev/define/ui/mute-button.d.ts.map +1 -1
- package/dist/dev/define/ui/mute-button.js +2 -1
- package/dist/dev/define/ui/mute-button.js.map +1 -1
- package/dist/dev/define/ui/pip-button.d.ts.map +1 -1
- package/dist/dev/define/ui/pip-button.js +2 -1
- package/dist/dev/define/ui/pip-button.js.map +1 -1
- package/dist/dev/define/ui/play-button.d.ts.map +1 -1
- package/dist/dev/define/ui/play-button.js +2 -1
- package/dist/dev/define/ui/play-button.js.map +1 -1
- package/dist/dev/define/ui/playback-rate-button.d.ts +9 -0
- package/dist/dev/define/ui/playback-rate-button.d.ts.map +1 -0
- package/dist/dev/define/ui/playback-rate-button.js +8 -0
- package/dist/dev/define/ui/playback-rate-button.js.map +1 -0
- package/dist/dev/define/ui/popover.d.ts +9 -0
- package/dist/dev/define/ui/popover.d.ts.map +1 -0
- package/dist/dev/define/ui/popover.js +8 -0
- package/dist/dev/define/ui/popover.js.map +1 -0
- package/dist/dev/define/ui/poster.d.ts.map +1 -1
- package/dist/dev/define/ui/poster.js +2 -1
- package/dist/dev/define/ui/poster.js.map +1 -1
- package/dist/dev/define/ui/seek-button.d.ts.map +1 -1
- package/dist/dev/define/ui/seek-button.js +2 -1
- package/dist/dev/define/ui/seek-button.js.map +1 -1
- package/dist/dev/define/ui/slider-buffer.d.ts +9 -0
- package/dist/dev/define/ui/slider-buffer.d.ts.map +1 -0
- package/dist/dev/define/ui/slider-buffer.js +8 -0
- package/dist/dev/define/ui/slider-buffer.js.map +1 -0
- package/dist/dev/define/ui/slider-fill.d.ts +9 -0
- package/dist/dev/define/ui/slider-fill.d.ts.map +1 -0
- package/dist/dev/define/ui/slider-fill.js +8 -0
- package/dist/dev/define/ui/slider-fill.js.map +1 -0
- package/dist/dev/define/ui/slider-thumb.d.ts +9 -0
- package/dist/dev/define/ui/slider-thumb.d.ts.map +1 -0
- package/dist/dev/define/ui/slider-thumb.js +8 -0
- package/dist/dev/define/ui/slider-thumb.js.map +1 -0
- package/dist/dev/define/ui/slider-track.d.ts +9 -0
- package/dist/dev/define/ui/slider-track.d.ts.map +1 -0
- package/dist/dev/define/ui/slider-track.js +8 -0
- package/dist/dev/define/ui/slider-track.js.map +1 -0
- package/dist/dev/define/ui/slider-value.d.ts +9 -0
- package/dist/dev/define/ui/slider-value.d.ts.map +1 -0
- package/dist/dev/define/ui/slider-value.js +8 -0
- package/dist/dev/define/ui/slider-value.js.map +1 -0
- package/dist/dev/define/ui/slider.d.ts +9 -0
- package/dist/dev/define/ui/slider.d.ts.map +1 -0
- package/dist/dev/define/ui/slider.js +16 -0
- package/dist/dev/define/ui/slider.js.map +1 -0
- package/dist/dev/define/ui/thumbnail.d.ts +9 -0
- package/dist/dev/define/ui/thumbnail.d.ts.map +1 -0
- package/dist/dev/define/ui/thumbnail.js +8 -0
- package/dist/dev/define/ui/thumbnail.js.map +1 -0
- package/dist/dev/define/ui/time-group.d.ts +9 -0
- package/dist/dev/define/ui/time-group.d.ts.map +1 -0
- package/dist/dev/define/ui/time-group.js +8 -0
- package/dist/dev/define/ui/time-group.js.map +1 -0
- package/dist/dev/define/ui/time-separator.d.ts +9 -0
- package/dist/dev/define/ui/time-separator.d.ts.map +1 -0
- package/dist/dev/define/ui/time-separator.js +8 -0
- package/dist/dev/define/ui/time-separator.js.map +1 -0
- package/dist/dev/define/ui/time-slider.d.ts +9 -0
- package/dist/dev/define/ui/time-slider.d.ts.map +1 -0
- package/dist/dev/define/ui/time-slider.js +18 -0
- package/dist/dev/define/ui/time-slider.js.map +1 -0
- package/dist/dev/define/ui/time.d.ts +0 -4
- package/dist/dev/define/ui/time.d.ts.map +1 -1
- package/dist/dev/define/ui/time.js +4 -3
- package/dist/dev/define/ui/time.js.map +1 -1
- package/dist/dev/define/ui/volume-slider.d.ts +9 -0
- package/dist/dev/define/ui/volume-slider.d.ts.map +1 -0
- package/dist/dev/define/ui/volume-slider.js +16 -0
- package/dist/dev/define/ui/volume-slider.js.map +1 -0
- package/dist/dev/define/video/minimal-skin.css +762 -0
- package/dist/dev/define/video/minimal-skin.d.ts +30 -0
- package/dist/dev/define/video/minimal-skin.d.ts.map +1 -0
- package/dist/dev/define/video/minimal-skin.js +131 -0
- package/dist/dev/define/video/minimal-skin.js.map +1 -0
- package/dist/dev/define/video/minimal-skin.tailwind.d.ts +30 -0
- package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -0
- package/dist/dev/define/video/minimal-skin.tailwind.js +134 -0
- package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -0
- package/dist/dev/define/video/player.d.ts +4 -3
- package/dist/dev/define/video/player.d.ts.map +1 -1
- package/dist/dev/define/video/player.js +8 -4
- package/dist/dev/define/video/player.js.map +1 -1
- package/dist/dev/define/video/skin.css +763 -0
- package/dist/dev/define/video/skin.d.ts +30 -1
- package/dist/dev/define/video/skin.d.ts.map +1 -0
- package/dist/dev/define/video/skin.js +125 -0
- package/dist/dev/define/video/skin.js.map +1 -0
- package/dist/dev/define/video/skin.tailwind.d.ts +30 -0
- package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -0
- package/dist/dev/define/video/skin.tailwind.js +127 -0
- package/dist/dev/define/video/skin.tailwind.js.map +1 -0
- package/dist/dev/icons/dist/render/default/index.js +27 -0
- package/dist/dev/icons/dist/render/default/index.js.map +1 -0
- package/dist/dev/icons/dist/render/minimal/index.js +27 -0
- package/dist/dev/icons/dist/render/minimal/index.js.map +1 -0
- package/dist/dev/index.d.ts +19 -4
- package/dist/dev/index.js +17 -3
- package/dist/dev/media/container-element.d.ts +13 -0
- package/dist/dev/media/container-element.d.ts.map +1 -0
- package/dist/dev/media/container-element.js +15 -0
- package/dist/dev/media/container-element.js.map +1 -0
- package/dist/dev/player/create-player.d.ts +6 -14
- package/dist/dev/player/create-player.d.ts.map +1 -1
- package/dist/dev/player/create-player.js +0 -5
- package/dist/dev/player/create-player.js.map +1 -1
- package/dist/dev/player/player-controller.d.ts +1 -0
- package/dist/dev/player/player-controller.d.ts.map +1 -1
- package/dist/dev/player/player-controller.js +3 -0
- package/dist/dev/player/player-controller.js.map +1 -1
- package/dist/dev/presets/audio.d.ts +4 -0
- package/dist/dev/presets/audio.js +5 -0
- package/dist/dev/presets/background.d.ts +2 -0
- package/dist/dev/presets/background.js +3 -0
- package/dist/dev/presets/video.d.ts +6 -0
- package/dist/dev/presets/video.js +7 -0
- package/dist/dev/skins/dist/default/video/default.tailwind.js +90 -0
- package/dist/dev/skins/dist/default/video/default.tailwind.js.map +1 -0
- package/dist/dev/skins/dist/default/video/minimal.tailwind.js +86 -0
- package/dist/dev/skins/dist/default/video/minimal.tailwind.js.map +1 -0
- package/dist/dev/store/container-mixin.d.ts +1 -1
- package/dist/dev/store/container-mixin.js +14 -7
- package/dist/dev/store/container-mixin.js.map +1 -1
- package/dist/dev/store/provider-mixin.d.ts +1 -1
- package/dist/dev/store/types.d.ts +1 -3
- package/dist/dev/store/types.d.ts.map +1 -1
- package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js +2 -2
- package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js.map +1 -1
- package/dist/dev/ui/context-part-element.d.ts +32 -0
- package/dist/dev/ui/context-part-element.d.ts.map +1 -0
- package/dist/dev/ui/context-part-element.js +28 -0
- package/dist/dev/ui/context-part-element.js.map +1 -0
- package/dist/dev/ui/controls/context.d.ts +10 -0
- package/dist/dev/ui/controls/context.d.ts.map +1 -0
- package/dist/dev/ui/controls/context.js +9 -0
- package/dist/dev/ui/controls/context.js.map +1 -0
- package/dist/dev/ui/controls/controls-element.d.ts +1 -1
- package/dist/dev/ui/controls/controls-element.d.ts.map +1 -1
- package/dist/dev/ui/controls/controls-element.js +17 -8
- package/dist/dev/ui/controls/controls-element.js.map +1 -1
- package/dist/dev/ui/controls/controls-group-element.d.ts +8 -2
- package/dist/dev/ui/controls/controls-group-element.d.ts.map +1 -1
- package/dist/dev/ui/controls/controls-group-element.js +11 -2
- package/dist/dev/ui/controls/controls-group-element.js.map +1 -1
- package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts +11 -18
- package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts.map +1 -1
- package/dist/dev/ui/fullscreen-button/fullscreen-button-element.js +8 -40
- package/dist/dev/ui/fullscreen-button/fullscreen-button-element.js.map +1 -1
- package/dist/dev/ui/media-button-element.d.ts +24 -0
- package/dist/dev/ui/media-button-element.d.ts.map +1 -0
- package/dist/dev/ui/media-button-element.js +51 -0
- package/dist/dev/ui/media-button-element.js.map +1 -0
- package/dist/dev/ui/media-ui-element.d.ts +17 -0
- package/dist/dev/ui/media-ui-element.d.ts.map +1 -0
- package/dist/dev/ui/media-ui-element.js +23 -0
- package/dist/dev/ui/media-ui-element.js.map +1 -0
- package/dist/dev/ui/mute-button/mute-button-element.d.ts +11 -18
- package/dist/dev/ui/mute-button/mute-button-element.d.ts.map +1 -1
- package/dist/dev/ui/mute-button/mute-button-element.js +8 -40
- package/dist/dev/ui/mute-button/mute-button-element.js.map +1 -1
- package/dist/dev/ui/pip-button/pip-button-element.d.ts +11 -18
- package/dist/dev/ui/pip-button/pip-button-element.d.ts.map +1 -1
- package/dist/dev/ui/pip-button/pip-button-element.js +8 -40
- package/dist/dev/ui/pip-button/pip-button-element.js.map +1 -1
- package/dist/dev/ui/play-button/play-button-element.d.ts +12 -18
- package/dist/dev/ui/play-button/play-button-element.d.ts.map +1 -1
- package/dist/dev/ui/play-button/play-button-element.js +8 -40
- package/dist/dev/ui/play-button/play-button-element.js.map +1 -1
- package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts +18 -0
- package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts.map +1 -0
- package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js +25 -0
- package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js.map +1 -0
- package/dist/dev/ui/popover/popover-element.d.ts +65 -0
- package/dist/dev/ui/popover/popover-element.d.ts.map +1 -0
- package/dist/dev/ui/popover/popover-element.js +163 -0
- package/dist/dev/ui/popover/popover-element.js.map +1 -0
- package/dist/dev/ui/poster/poster-element.d.ts +11 -6
- package/dist/dev/ui/poster/poster-element.d.ts.map +1 -1
- package/dist/dev/ui/poster/poster-element.js +9 -15
- package/dist/dev/ui/poster/poster-element.js.map +1 -1
- package/dist/dev/ui/seek-button/seek-button-element.d.ts +14 -22
- package/dist/dev/ui/seek-button/seek-button-element.d.ts.map +1 -1
- package/dist/dev/ui/seek-button/seek-button-element.js +10 -37
- package/dist/dev/ui/seek-button/seek-button-element.js.map +1 -1
- package/dist/dev/ui/slider/context.d.ts +24 -0
- package/dist/dev/ui/slider/context.d.ts.map +1 -0
- package/dist/dev/ui/slider/context.js +9 -0
- package/dist/dev/ui/slider/context.js.map +1 -0
- package/dist/dev/ui/slider/slider-buffer-element.d.ts +15 -0
- package/dist/dev/ui/slider/slider-buffer-element.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-buffer-element.js +21 -0
- package/dist/dev/ui/slider/slider-buffer-element.js.map +1 -0
- package/dist/dev/ui/slider/slider-element.d.ts +56 -0
- package/dist/dev/ui/slider/slider-element.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-element.js +117 -0
- package/dist/dev/ui/slider/slider-element.js.map +1 -0
- package/dist/dev/ui/slider/slider-events.d.ts +18 -0
- package/dist/dev/ui/slider/slider-events.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-fill-element.d.ts +15 -0
- package/dist/dev/ui/slider/slider-fill-element.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-fill-element.js +21 -0
- package/dist/dev/ui/slider/slider-fill-element.js.map +1 -0
- package/dist/dev/ui/slider/slider-thumb-element.d.ts +14 -0
- package/dist/dev/ui/slider/slider-thumb-element.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-thumb-element.js +43 -0
- package/dist/dev/ui/slider/slider-thumb-element.js.map +1 -0
- package/dist/dev/ui/slider/slider-track-element.d.ts +15 -0
- package/dist/dev/ui/slider/slider-track-element.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-track-element.js +21 -0
- package/dist/dev/ui/slider/slider-track-element.js.map +1 -0
- package/dist/dev/ui/slider/slider-value-element.d.ts +19 -0
- package/dist/dev/ui/slider/slider-value-element.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-value-element.js +38 -0
- package/dist/dev/ui/slider/slider-value-element.js.map +1 -0
- package/dist/dev/ui/thumbnail/thumbnail-element.d.ts +42 -0
- package/dist/dev/ui/thumbnail/thumbnail-element.d.ts.map +1 -0
- package/dist/dev/ui/thumbnail/thumbnail-element.js +136 -0
- package/dist/dev/ui/thumbnail/thumbnail-element.js.map +1 -0
- package/dist/dev/ui/time/time-element.d.ts.map +1 -1
- package/dist/dev/ui/time/time-element.js +10 -18
- package/dist/dev/ui/time/time-element.js.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-element.d.ts +49 -0
- package/dist/dev/ui/time-slider/time-slider-element.d.ts.map +1 -0
- package/dist/dev/ui/time-slider/time-slider-element.js +129 -0
- package/dist/dev/ui/time-slider/time-slider-element.js.map +1 -0
- package/dist/dev/ui/volume-slider/volume-slider-element.d.ts +44 -0
- package/dist/dev/ui/volume-slider/volume-slider-element.d.ts.map +1 -0
- package/dist/dev/ui/volume-slider/volume-slider-element.js +118 -0
- package/dist/dev/ui/volume-slider/volume-slider-element.js.map +1 -0
- package/package.json +41 -6
- package/dist/default/player/player-mixin.js +0 -23
- package/dist/default/player/player-mixin.js.map +0 -1
- package/dist/dev/player/player-mixin.d.ts +0 -20
- package/dist/dev/player/player-mixin.d.ts.map +0 -1
- package/dist/dev/player/player-mixin.js +0 -23
- package/dist/dev/player/player-mixin.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-mixin.js","names":["#
|
|
1
|
+
{"version":3,"file":"container-mixin.js","names":["#contextStore","#attachMedia","#observer","#detach"],"sources":["../../../src/store/container-mixin.ts"],"sourcesContent":["import type { MediaContainer, PlayerStore, PlayerTarget } from '@videojs/core/dom';\nimport { ContextConsumer } from '@videojs/element/context';\nimport { noop } from '@videojs/utils/function';\nimport type { MediaElementConstructor } from '@/ui/media-element';\nimport type { PlayerContext } from '../player/context';\nimport type { PlayerConsumer, PlayerConsumerConstructor } from './types';\n\nexport type ContainerMixin<Store extends PlayerStore> = <Class extends MediaElementConstructor>(\n BaseClass: Class\n) => Class & PlayerConsumerConstructor<Store>;\n\n/**\n * Create a mixin that consumes player context and auto-attaches media elements.\n *\n * @param context - Player context to consume from an ancestor provider.\n */\nexport function createContainerMixin<Store extends PlayerStore>(context: PlayerContext<Store>): ContainerMixin<Store> {\n return <Class extends MediaElementConstructor>(BaseClass: Class) => {\n class PlayerContainerElement extends BaseClass implements PlayerConsumer<Store>, MediaContainer {\n #detach = noop;\n #observer: MutationObserver | null = null;\n #contextStore: Store | null = null;\n\n constructor(...args: any[]) {\n super(...args);\n\n // Created in the constructor body (after all field initializers) so\n // that #contextStore's private slot exists if the callback fires\n // synchronously — which happens when the element is already connected.\n // The host's controller list keeps the consumer alive; no field needed.\n new ContextConsumer(this, {\n context,\n callback: (value) => {\n this.#contextStore = value ?? null;\n this.#attachMedia();\n },\n subscribe: true,\n });\n }\n\n get store(): Store | null {\n return this.#contextStore;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n this.#observer = new MutationObserver((records) => {\n if (records.some(hasMediaNode)) this.#attachMedia();\n });\n\n this.#observer.observe(this, { childList: true, subtree: true });\n\n this.#attachMedia();\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.#observer?.disconnect();\n this.#observer = null;\n this.#detach();\n }\n\n #attachMedia() {\n // Prefer the cached context value; fall back to `this.store` which\n // ProviderMixin overrides when both mixins are applied to one element.\n const store = this.#contextStore ?? this.store;\n if (!store) return;\n\n const media = this.querySelector<HTMLMediaElement>('video, audio');\n\n if (!media) {\n this.#detach();\n this.#detach = noop;\n return;\n }\n\n const target: PlayerTarget = {\n media,\n container: this,\n };\n\n const hasMediaChanged = store.target?.media !== target.media,\n hasContainerChanged = store.target?.container !== target.container;\n\n if (hasMediaChanged || hasContainerChanged) {\n this.#detach();\n this.#detach = store.attach(target);\n }\n }\n }\n\n return PlayerContainerElement;\n };\n}\n\nfunction isMediaNode(node: Node): boolean {\n return node instanceof HTMLMediaElement;\n}\n\nfunction hasMediaNode(record: MutationRecord): boolean {\n for (const node of record.addedNodes) {\n if (isMediaNode(node)) return true;\n }\n\n for (const node of record.removedNodes) {\n if (isMediaNode(node)) return true;\n }\n\n return false;\n}\n"],"mappings":";;;;;;;;;AAgBA,SAAgB,qBAAgD,SAAsD;AACpH,SAA+C,cAAqB;EAClE,MAAM,+BAA+B,UAA2D;GAC9F,UAAU;GACV,YAAqC;GACrC,gBAA8B;GAE9B,YAAY,GAAG,MAAa;AAC1B,UAAM,GAAG,KAAK;AAMd,QAAI,gBAAgB,MAAM;KACxB;KACA,WAAW,UAAU;AACnB,YAAKA,eAAgB,SAAS;AAC9B,YAAKC,aAAc;;KAErB,WAAW;KACZ,CAAC;;GAGJ,IAAI,QAAsB;AACxB,WAAO,MAAKD;;GAGd,AAAS,oBAAoB;AAC3B,UAAM,mBAAmB;AAEzB,UAAKE,WAAY,IAAI,kBAAkB,YAAY;AACjD,SAAI,QAAQ,KAAK,aAAa,CAAE,OAAKD,aAAc;MACnD;AAEF,UAAKC,SAAU,QAAQ,MAAM;KAAE,WAAW;KAAM,SAAS;KAAM,CAAC;AAEhE,UAAKD,aAAc;;GAGrB,AAAS,uBAAuB;AAC9B,UAAM,sBAAsB;AAC5B,UAAKC,UAAW,YAAY;AAC5B,UAAKA,WAAY;AACjB,UAAKC,QAAS;;GAGhB,eAAe;IAGb,MAAM,QAAQ,MAAKH,gBAAiB,KAAK;AACzC,QAAI,CAAC,MAAO;IAEZ,MAAM,QAAQ,KAAK,cAAgC,eAAe;AAElE,QAAI,CAAC,OAAO;AACV,WAAKG,QAAS;AACd,WAAKA,SAAU;AACf;;IAGF,MAAM,SAAuB;KAC3B;KACA,WAAW;KACZ;IAED,MAAM,kBAAkB,MAAM,QAAQ,UAAU,OAAO,OACrD,sBAAsB,MAAM,QAAQ,cAAc,OAAO;AAE3D,QAAI,mBAAmB,qBAAqB;AAC1C,WAAKA,QAAS;AACd,WAAKA,SAAU,MAAM,OAAO,OAAO;;;;AAKzC,SAAO;;;AAIX,SAAS,YAAY,MAAqB;AACxC,QAAO,gBAAgB;;AAGzB,SAAS,aAAa,QAAiC;AACrD,MAAK,MAAM,QAAQ,OAAO,WACxB,KAAI,YAAY,KAAK,CAAE,QAAO;AAGhC,MAAK,MAAM,QAAQ,OAAO,aACxB,KAAI,YAAY,KAAK,CAAE,QAAO;AAGhC,QAAO"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { PlayerContext } from "../player/context.js";
|
|
2
1
|
import { MediaElementConstructor } from "../ui/media-element.js";
|
|
2
|
+
import { PlayerContext } from "../player/context.js";
|
|
3
3
|
import { PlayerProviderConstructor } from "./types.js";
|
|
4
4
|
import { PlayerStore } from "@videojs/core/dom";
|
|
5
5
|
|
|
@@ -3,8 +3,6 @@ import { PlayerStore } from "@videojs/core/dom";
|
|
|
3
3
|
import { Constructor } from "@videojs/utils/types";
|
|
4
4
|
|
|
5
5
|
//#region src/store/types.d.ts
|
|
6
|
-
interface PlayerElement<Store extends PlayerStore> extends MediaElement, PlayerProvider<Store> {}
|
|
7
|
-
interface PlayerElementConstructor<Store extends PlayerStore> extends Constructor<PlayerElement<Store>> {}
|
|
8
6
|
interface PlayerProvider<Store extends PlayerStore> extends MediaElement {
|
|
9
7
|
readonly store: Store;
|
|
10
8
|
}
|
|
@@ -14,5 +12,5 @@ interface PlayerConsumer<Store extends PlayerStore> extends MediaElement {
|
|
|
14
12
|
}
|
|
15
13
|
interface PlayerConsumerConstructor<Store extends PlayerStore> extends Constructor<PlayerConsumer<Store>> {}
|
|
16
14
|
//#endregion
|
|
17
|
-
export { PlayerConsumer, PlayerConsumerConstructor,
|
|
15
|
+
export { PlayerConsumer, PlayerConsumerConstructor, PlayerProvider, PlayerProviderConstructor };
|
|
18
16
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/store/types.ts"],"mappings":";;;;;UAQiB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/store/types.ts"],"mappings":";;;;;UAQiB,cAAA,eAA6B,WAAA,UAAqB,YAAA;EAAA,SACxD,KAAA,EAAO,KAAA;AAAA;AAAA,UAGD,yBAAA,eAAwC,WAAA,UAAqB,WAAA,CAAY,cAAA,CAAe,KAAA;AAAA,UAMxF,cAAA,eAA6B,WAAA,UAAqB,YAAA;EAAA,SACxD,KAAA,EAAO,KAAA;AAAA;AAAA,UAGD,yBAAA,eAAwC,WAAA,UAAqB,WAAA,CAAY,cAAA,CAAe,KAAA"}
|
|
@@ -5,7 +5,7 @@ import { applyStateDataAttrs, logMissingFeature, selectPlayback } from "@videojs
|
|
|
5
5
|
import { BufferingIndicatorCore, BufferingIndicatorDataAttrs } from "@videojs/core";
|
|
6
6
|
|
|
7
7
|
//#region src/ui/buffering-indicator/buffering-indicator-element.ts
|
|
8
|
-
var BufferingIndicatorElement = class
|
|
8
|
+
var BufferingIndicatorElement = class extends MediaElement {
|
|
9
9
|
constructor(..._args) {
|
|
10
10
|
super(..._args);
|
|
11
11
|
this.delay = BufferingIndicatorCore.defaultProps.delay;
|
|
@@ -23,7 +23,7 @@ var BufferingIndicatorElement = class BufferingIndicatorElement extends MediaEle
|
|
|
23
23
|
super.connectedCallback();
|
|
24
24
|
this.#disconnect = new AbortController();
|
|
25
25
|
this.#core.state.subscribe(() => this.requestUpdate(), { signal: this.#disconnect.signal });
|
|
26
|
-
if (!this.#state.value) logMissingFeature(
|
|
26
|
+
if (!this.#state.value) logMissingFeature(this.localName, this.#state.displayName);
|
|
27
27
|
}
|
|
28
28
|
disconnectedCallback() {
|
|
29
29
|
super.disconnectedCallback();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffering-indicator-element.js","names":["#core","#state","#disconnect"],"sources":["../../../../src/ui/buffering-indicator/buffering-indicator-element.ts"],"sourcesContent":["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\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(
|
|
1
|
+
{"version":3,"file":"buffering-indicator-element.js","names":["#core","#state","#disconnect"],"sources":["../../../../src/ui/buffering-indicator/buffering-indicator-element.ts"],"sourcesContent":["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\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"],"mappings":";;;;;;;AAQA,IAAa,4BAAb,cAA+C,aAAa;;;eAOlD,uBAAuB,aAAa;;;iBANlB;;;oBAEG,EAC3B,OAAO,EAAE,MAAM,QAAQ,EACxB;;CAID,CAASA,OAAQ,IAAI,wBAAwB;CAC7C,CAASC,QAAS,IAAI,iBAAiB,MAAM,eAAe,eAAe;CAE3E,cAAsC;CAEtC,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;AAEzB,QAAKC,aAAc,IAAI,iBAAiB;AAExC,QAAKF,KAAM,MAAM,gBAAgB,KAAK,eAAe,EAAE,EACrD,QAAQ,MAAKE,WAAY,QAC1B,CAAC;AAEF,MAAe,CAAC,MAAKD,MAAO,MAC1B,mBAAkB,KAAK,WAAW,MAAKA,MAAO,YAAa;;CAI/D,AAAS,uBAA6B;AACpC,QAAM,sBAAsB;AAC5B,QAAKC,YAAa,OAAO;AACzB,QAAKA,aAAc;;CAGrB,AAAmB,WAAW,SAA+B;AAC3D,QAAM,WAAW,QAAQ;AACzB,QAAKF,KAAM,SAAS,KAAK;;CAG3B,AAAmB,OAAO,SAA+B;AACvD,QAAM,OAAO,QAAQ;EAErB,MAAM,QAAQ,MAAKC,MAAO;AAE1B,MAAI,CAAC,MAAO;AAEZ,QAAKD,KAAM,OAAO,MAAM;AACxB,sBAAoB,MAAM,MAAKA,KAAM,MAAM,SAAS,4BAA4B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { MediaElement } from "./media-element.js";
|
|
2
|
+
import { PropertyValues } from "@videojs/element";
|
|
3
|
+
import { StateAttrMap } from "@videojs/core";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/context-part-element.d.ts
|
|
6
|
+
/** Shape that compound context values must satisfy for parts to consume. */
|
|
7
|
+
interface PartContextValue<State extends object> {
|
|
8
|
+
state: State;
|
|
9
|
+
stateAttrMap: StateAttrMap<State>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Abstract base for compound-component part elements that consume a parent
|
|
13
|
+
* context and apply data attributes from `ctx.state` + `ctx.stateAttrMap`.
|
|
14
|
+
*
|
|
15
|
+
* Subclasses only need to declare the `consumer` property:
|
|
16
|
+
*
|
|
17
|
+
* ```ts
|
|
18
|
+
* export class SliderTrackElement extends ContextPartElement<SliderState> {
|
|
19
|
+
* static readonly tagName = 'media-slider-track';
|
|
20
|
+
* protected readonly consumer = new ContextConsumer(this, { context: sliderContext, subscribe: true });
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
declare abstract class ContextPartElement<State extends object> extends MediaElement {
|
|
25
|
+
protected abstract readonly consumer: {
|
|
26
|
+
value?: PartContextValue<State> | undefined;
|
|
27
|
+
};
|
|
28
|
+
protected update(_changed: PropertyValues): void;
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { ContextPartElement };
|
|
32
|
+
//# sourceMappingURL=context-part-element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-part-element.d.ts","names":[],"sources":["../../../src/ui/context-part-element.ts"],"mappings":";;;;;;UAOiB,gBAAA;EACf,KAAA,EAAO,KAAA;EACP,YAAA,EAAc,YAAA,CAAa,KAAA;AAAA;;;;;;;;;;;;;;uBAgBP,kBAAA,+BAAiD,YAAA;EAAA,4BACzC,QAAA;IAAY,KAAA,GAAQ,gBAAA,CAAiB,KAAA;EAAA;EAAA,UAE9C,MAAA,CAAO,QAAA,EAAU,cAAA;AAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { MediaElement } from "./media-element.js";
|
|
2
|
+
import { applyStateDataAttrs } from "@videojs/core/dom";
|
|
3
|
+
|
|
4
|
+
//#region src/ui/context-part-element.ts
|
|
5
|
+
/**
|
|
6
|
+
* Abstract base for compound-component part elements that consume a parent
|
|
7
|
+
* context and apply data attributes from `ctx.state` + `ctx.stateAttrMap`.
|
|
8
|
+
*
|
|
9
|
+
* Subclasses only need to declare the `consumer` property:
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* export class SliderTrackElement extends ContextPartElement<SliderState> {
|
|
13
|
+
* static readonly tagName = 'media-slider-track';
|
|
14
|
+
* protected readonly consumer = new ContextConsumer(this, { context: sliderContext, subscribe: true });
|
|
15
|
+
* }
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
var ContextPartElement = class extends MediaElement {
|
|
19
|
+
update(_changed) {
|
|
20
|
+
super.update(_changed);
|
|
21
|
+
const ctx = this.consumer.value;
|
|
22
|
+
if (ctx) applyStateDataAttrs(this, ctx.state, ctx.stateAttrMap);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
27
|
+
export { ContextPartElement };
|
|
28
|
+
//# sourceMappingURL=context-part-element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-part-element.js","names":[],"sources":["../../../src/ui/context-part-element.ts"],"sourcesContent":["import type { StateAttrMap } from '@videojs/core';\nimport { applyStateDataAttrs } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\n\nimport { MediaElement } from './media-element';\n\n/** Shape that compound context values must satisfy for parts to consume. */\nexport interface PartContextValue<State extends object> {\n state: State;\n stateAttrMap: StateAttrMap<State>;\n}\n\n/**\n * Abstract base for compound-component part elements that consume a parent\n * context and apply data attributes from `ctx.state` + `ctx.stateAttrMap`.\n *\n * Subclasses only need to declare the `consumer` property:\n *\n * ```ts\n * export class SliderTrackElement extends ContextPartElement<SliderState> {\n * static readonly tagName = 'media-slider-track';\n * protected readonly consumer = new ContextConsumer(this, { context: sliderContext, subscribe: true });\n * }\n * ```\n */\nexport abstract class ContextPartElement<State extends object> extends MediaElement {\n protected abstract readonly consumer: { value?: PartContextValue<State> | undefined };\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n const ctx = this.consumer.value;\n if (ctx) applyStateDataAttrs(this, ctx.state, ctx.stateAttrMap);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAyBA,IAAsB,qBAAtB,cAAuE,aAAa;CAGlF,AAAmB,OAAO,UAAgC;AACxD,QAAM,OAAO,SAAS;EACtB,MAAM,MAAM,KAAK,SAAS;AAC1B,MAAI,IAAK,qBAAoB,MAAM,IAAI,OAAO,IAAI,aAAa"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ControlsState, StateAttrMap } from "@videojs/core";
|
|
2
|
+
|
|
3
|
+
//#region src/ui/controls/context.d.ts
|
|
4
|
+
interface ControlsContextValue {
|
|
5
|
+
state: ControlsState;
|
|
6
|
+
stateAttrMap: StateAttrMap<ControlsState>;
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { ControlsContextValue };
|
|
10
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","names":[],"sources":["../../../../src/ui/controls/context.ts"],"mappings":";;;UAGiB,oBAAA;EACf,KAAA,EAAO,aAAA;EACP,YAAA,EAAc,YAAA,CAAa,aAAA;AAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createContext } from "@videojs/element/context";
|
|
2
|
+
|
|
3
|
+
//#region src/ui/controls/context.ts
|
|
4
|
+
const CONTROLS_CONTEXT_KEY = Symbol("@videojs/controls");
|
|
5
|
+
const controlsContext = createContext(CONTROLS_CONTEXT_KEY);
|
|
6
|
+
|
|
7
|
+
//#endregion
|
|
8
|
+
export { controlsContext };
|
|
9
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/controls/context.ts"],"sourcesContent":["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"],"mappings":";;;AAQA,MAAM,uBAAuB,OAAO,oBAAoB;AAExD,MAAa,kBAAkB,cAAoC,qBAAqB"}
|
|
@@ -6,7 +6,7 @@ declare class ControlsElement extends MediaElement {
|
|
|
6
6
|
#private;
|
|
7
7
|
static readonly tagName = "media-controls";
|
|
8
8
|
connectedCallback(): void;
|
|
9
|
-
protected update(
|
|
9
|
+
protected update(_changed: PropertyValues): void;
|
|
10
10
|
}
|
|
11
11
|
//#endregion
|
|
12
12
|
export { ControlsElement };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls-element.d.ts","names":[],"sources":["../../../../src/ui/controls/controls-element.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"controls-element.d.ts","names":[],"sources":["../../../../src/ui/controls/controls-element.ts"],"mappings":";;;;cAUa,eAAA,SAAwB,YAAA;EAAA;kBACnB,OAAA;EAMP,iBAAA,CAAA;EAAA,UAQU,MAAA,CAAO,QAAA,EAAU,cAAA;AAAA"}
|
|
@@ -1,25 +1,34 @@
|
|
|
1
1
|
import { playerContext } from "../../player/context.js";
|
|
2
2
|
import { MediaElement } from "../media-element.js";
|
|
3
3
|
import { PlayerController } from "../../player/player-controller.js";
|
|
4
|
+
import { controlsContext } from "./context.js";
|
|
4
5
|
import { applyStateDataAttrs, logMissingFeature, selectControls } from "@videojs/core/dom";
|
|
6
|
+
import { ContextProvider } from "@videojs/element/context";
|
|
5
7
|
import { ControlsCore, ControlsDataAttrs } from "@videojs/core";
|
|
6
8
|
|
|
7
9
|
//#region src/ui/controls/controls-element.ts
|
|
8
|
-
var ControlsElement = class
|
|
10
|
+
var ControlsElement = class extends MediaElement {
|
|
9
11
|
static {
|
|
10
12
|
this.tagName = "media-controls";
|
|
11
13
|
}
|
|
12
14
|
#core = new ControlsCore();
|
|
13
|
-
#
|
|
15
|
+
#mediaState = new PlayerController(this, playerContext, selectControls);
|
|
16
|
+
#provider = new ContextProvider(this, { context: controlsContext });
|
|
14
17
|
connectedCallback() {
|
|
15
18
|
super.connectedCallback();
|
|
16
|
-
if (!this.#
|
|
19
|
+
if (!this.#mediaState.value && this.#mediaState.displayName) logMissingFeature(this.localName, this.#mediaState.displayName);
|
|
17
20
|
}
|
|
18
|
-
update(
|
|
19
|
-
super.update(
|
|
20
|
-
const
|
|
21
|
-
if (!
|
|
22
|
-
|
|
21
|
+
update(_changed) {
|
|
22
|
+
super.update(_changed);
|
|
23
|
+
const media = this.#mediaState.value;
|
|
24
|
+
if (!media) return;
|
|
25
|
+
this.#core.setMedia(media);
|
|
26
|
+
const state = this.#core.getState();
|
|
27
|
+
applyStateDataAttrs(this, state, ControlsDataAttrs);
|
|
28
|
+
this.#provider.setValue({
|
|
29
|
+
state,
|
|
30
|
+
stateAttrMap: ControlsDataAttrs
|
|
31
|
+
});
|
|
23
32
|
}
|
|
24
33
|
};
|
|
25
34
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls-element.js","names":["#core","#
|
|
1
|
+
{"version":3,"file":"controls-element.js","names":["#core","#mediaState","#provider"],"sources":["../../../../src/ui/controls/controls-element.ts"],"sourcesContent":["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"],"mappings":";;;;;;;;;AAUA,IAAa,kBAAb,cAAqC,aAAa;;iBACtB;;CAE1B,CAASA,OAAQ,IAAI,cAAc;CACnC,CAASC,aAAc,IAAI,iBAAiB,MAAM,eAAe,eAAe;CAChF,CAASC,WAAY,IAAI,gBAAgB,MAAM,EAAE,SAAS,iBAAiB,CAAC;CAE5E,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;AAEzB,MAAe,CAAC,MAAKD,WAAY,SAAS,MAAKA,WAAY,YACzD,mBAAkB,KAAK,WAAW,MAAKA,WAAY,YAAY;;CAInE,AAAmB,OAAO,UAAgC;AACxD,QAAM,OAAO,SAAS;EAEtB,MAAM,QAAQ,MAAKA,WAAY;AAC/B,MAAI,CAAC,MAAO;AAEZ,QAAKD,KAAM,SAAS,MAAM;EAC1B,MAAM,QAAQ,MAAKA,KAAM,UAAU;AAEnC,sBAAoB,MAAM,OAAO,kBAAkB;AAEnD,QAAKE,SAAU,SAAS;GACtB;GACA,cAAc;GACf,CAAC"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ControlsContextValue } from "./context.js";
|
|
2
|
+
import { ContextPartElement } from "../context-part-element.js";
|
|
3
|
+
import { ContextConsumer } from "@videojs/element/context";
|
|
4
|
+
import { ControlsState } from "@videojs/core";
|
|
2
5
|
|
|
3
6
|
//#region src/ui/controls/controls-group-element.d.ts
|
|
4
|
-
declare class ControlsGroupElement extends
|
|
7
|
+
declare class ControlsGroupElement extends ContextPartElement<ControlsState> {
|
|
5
8
|
static readonly tagName = "media-controls-group";
|
|
9
|
+
protected readonly consumer: ContextConsumer<{
|
|
10
|
+
__context__: ControlsContextValue;
|
|
11
|
+
}, this>;
|
|
6
12
|
connectedCallback(): void;
|
|
7
13
|
}
|
|
8
14
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls-group-element.d.ts","names":[],"sources":["../../../../src/ui/controls/controls-group-element.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"controls-group-element.d.ts","names":[],"sources":["../../../../src/ui/controls/controls-group-element.ts"],"mappings":";;;;;;cAMa,oBAAA,SAA6B,kBAAA,CAAmB,aAAA;EAAA,gBAC3C,OAAA;EAAA,mBAEG,QAAA,EAAQ,eAAA;iBAH6C,oBAAA;EAAA;EAK/D,iBAAA,CAAA;AAAA"}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { controlsContext } from "./context.js";
|
|
2
|
+
import { ContextPartElement } from "../context-part-element.js";
|
|
3
|
+
import { ContextConsumer } from "@videojs/element/context";
|
|
2
4
|
|
|
3
5
|
//#region src/ui/controls/controls-group-element.ts
|
|
4
|
-
var ControlsGroupElement = class extends
|
|
6
|
+
var ControlsGroupElement = class extends ContextPartElement {
|
|
7
|
+
constructor(..._args) {
|
|
8
|
+
super(..._args);
|
|
9
|
+
this.consumer = new ContextConsumer(this, {
|
|
10
|
+
context: controlsContext,
|
|
11
|
+
subscribe: true
|
|
12
|
+
});
|
|
13
|
+
}
|
|
5
14
|
static {
|
|
6
15
|
this.tagName = "media-controls-group";
|
|
7
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls-group-element.js","names":[],"sources":["../../../../src/ui/controls/controls-group-element.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"controls-group-element.js","names":[],"sources":["../../../../src/ui/controls/controls-group-element.ts"],"sourcesContent":["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"],"mappings":";;;;;AAMA,IAAa,uBAAb,cAA0C,mBAAkC;;;kBAG5C,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAiB,WAAW;GAAM,CAAC;;;iBAF5E;;CAI1B,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;AAEzB,MAAI,KAAK,aAAa,aAAa,IAAI,KAAK,aAAa,kBAAkB,CACzE,MAAK,aAAa,QAAQ,QAAQ"}
|
|
@@ -1,25 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import * as
|
|
1
|
+
import { PlayerController } from "../../player/player-controller.js";
|
|
2
|
+
import { MediaButtonElement } from "../media-button-element.js";
|
|
3
|
+
import * as _videojs_core_dom0 from "@videojs/core/dom";
|
|
4
|
+
import { FullscreenButtonCore, MediaFullscreenState } from "@videojs/core";
|
|
4
5
|
|
|
5
6
|
//#region src/ui/fullscreen-button/fullscreen-button-element.d.ts
|
|
6
|
-
declare class FullscreenButtonElement extends
|
|
7
|
-
#private;
|
|
7
|
+
declare class FullscreenButtonElement extends MediaButtonElement<FullscreenButtonCore> {
|
|
8
8
|
static readonly tagName = "media-fullscreen-button";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
disabled: {
|
|
14
|
-
type: BooleanConstructor;
|
|
15
|
-
};
|
|
9
|
+
protected readonly core: FullscreenButtonCore;
|
|
10
|
+
protected readonly stateAttrMap: {
|
|
11
|
+
readonly fullscreen: "data-fullscreen";
|
|
12
|
+
readonly availability: "data-availability";
|
|
16
13
|
};
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
connectedCallback(): void;
|
|
20
|
-
disconnectedCallback(): void;
|
|
21
|
-
protected willUpdate(changed: PropertyValues): void;
|
|
22
|
-
protected update(changed: PropertyValues): void;
|
|
14
|
+
protected readonly mediaState: PlayerController<_videojs_core_dom0.AnyPlayerStore, MediaFullscreenState | undefined>;
|
|
15
|
+
protected activate(state: MediaFullscreenState): void;
|
|
23
16
|
}
|
|
24
17
|
//#endregion
|
|
25
18
|
export { FullscreenButtonElement };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fullscreen-button-element.d.ts","names":[],"sources":["../../../../src/ui/fullscreen-button/fullscreen-button-element.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"fullscreen-button-element.d.ts","names":[],"sources":["../../../../src/ui/fullscreen-button/fullscreen-button-element.ts"],"mappings":";;;;;;cAOa,uBAAA,SAAgC,kBAAA,CAAmB,oBAAA;EAAA,gBAC9C,OAAA;EAAA,mBAEG,IAAA,EAAI,oBAAA;EAAA,mBACJ,YAAA;IAAA;;;qBACA,UAAA,EAAU,gBAAA,CAFN,kBAAA,CAEM,cAAA,EAAA,oBAAA;EAAA,UAEnB,QAAA,CAAS,KAAA,EAAO,oBAAA;AAAA"}
|
|
@@ -1,54 +1,22 @@
|
|
|
1
1
|
import { playerContext } from "../../player/context.js";
|
|
2
|
-
import { MediaElement } from "../media-element.js";
|
|
3
2
|
import { PlayerController } from "../../player/player-controller.js";
|
|
4
|
-
import {
|
|
3
|
+
import { MediaButtonElement } from "../media-button-element.js";
|
|
4
|
+
import { selectFullscreen } from "@videojs/core/dom";
|
|
5
5
|
import { FullscreenButtonCore, FullscreenButtonDataAttrs } from "@videojs/core";
|
|
6
6
|
|
|
7
7
|
//#region src/ui/fullscreen-button/fullscreen-button-element.ts
|
|
8
|
-
var FullscreenButtonElement = class
|
|
8
|
+
var FullscreenButtonElement = class extends MediaButtonElement {
|
|
9
9
|
constructor(..._args) {
|
|
10
10
|
super(..._args);
|
|
11
|
-
this.
|
|
12
|
-
this.
|
|
11
|
+
this.core = new FullscreenButtonCore();
|
|
12
|
+
this.stateAttrMap = FullscreenButtonDataAttrs;
|
|
13
|
+
this.mediaState = new PlayerController(this, playerContext, selectFullscreen);
|
|
13
14
|
}
|
|
14
15
|
static {
|
|
15
16
|
this.tagName = "media-fullscreen-button";
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
this.
|
|
19
|
-
label: { type: String },
|
|
20
|
-
disabled: { type: Boolean }
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
#core = new FullscreenButtonCore();
|
|
24
|
-
#state = new PlayerController(this, playerContext, selectFullscreen);
|
|
25
|
-
#disconnect = null;
|
|
26
|
-
connectedCallback() {
|
|
27
|
-
super.connectedCallback();
|
|
28
|
-
this.#disconnect = new AbortController();
|
|
29
|
-
const buttonProps = createButton({
|
|
30
|
-
onActivate: () => this.#core.toggle(this.#state.value),
|
|
31
|
-
isDisabled: () => this.disabled || !this.#state.value
|
|
32
|
-
});
|
|
33
|
-
applyElementProps(this, buttonProps, this.#disconnect.signal);
|
|
34
|
-
if (!this.#state.value) logMissingFeature(FullscreenButtonElement.tagName, "fullscreen");
|
|
35
|
-
}
|
|
36
|
-
disconnectedCallback() {
|
|
37
|
-
super.disconnectedCallback();
|
|
38
|
-
this.#disconnect?.abort();
|
|
39
|
-
this.#disconnect = null;
|
|
40
|
-
}
|
|
41
|
-
willUpdate(changed) {
|
|
42
|
-
super.willUpdate(changed);
|
|
43
|
-
this.#core.setProps(this);
|
|
44
|
-
}
|
|
45
|
-
update(changed) {
|
|
46
|
-
super.update(changed);
|
|
47
|
-
const media = this.#state.value;
|
|
48
|
-
if (!media) return;
|
|
49
|
-
const state = this.#core.getState(media);
|
|
50
|
-
applyElementProps(this, this.#core.getAttrs(state));
|
|
51
|
-
applyStateDataAttrs(this, state, FullscreenButtonDataAttrs);
|
|
18
|
+
activate(state) {
|
|
19
|
+
this.core.toggle(state);
|
|
52
20
|
}
|
|
53
21
|
};
|
|
54
22
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fullscreen-button-element.js","names":[
|
|
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;;;iBAJjE;;CAM1B,AAAU,SAAS,OAAmC;AACpD,OAAK,KAAK,OAAO,MAAM"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { MediaElement } from "./media-element.js";
|
|
2
|
+
import { PlayerController } from "../player/player-controller.js";
|
|
3
|
+
import { PropertyDeclarationMap, PropertyValues } from "@videojs/element";
|
|
4
|
+
import { InferComponentState, InferMediaState, MediaUIComponent, StateAttrMap } from "@videojs/core";
|
|
5
|
+
|
|
6
|
+
//#region src/ui/media-button-element.d.ts
|
|
7
|
+
/** Abstract base for HTML custom elements that render a media-control button. */
|
|
8
|
+
declare abstract class MediaButtonElement<Core extends MediaUIComponent> extends MediaElement {
|
|
9
|
+
#private;
|
|
10
|
+
static properties: PropertyDeclarationMap;
|
|
11
|
+
disabled: boolean;
|
|
12
|
+
label: string;
|
|
13
|
+
protected abstract readonly core: Core;
|
|
14
|
+
protected abstract readonly stateAttrMap: StateAttrMap<InferComponentState<Core>>;
|
|
15
|
+
protected abstract readonly mediaState: PlayerController<any, InferMediaState<Core> | undefined>;
|
|
16
|
+
protected abstract activate(state: InferMediaState<Core>): void;
|
|
17
|
+
connectedCallback(): void;
|
|
18
|
+
disconnectedCallback(): void;
|
|
19
|
+
protected willUpdate(changed: PropertyValues): void;
|
|
20
|
+
protected update(changed: PropertyValues): void;
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { MediaButtonElement };
|
|
24
|
+
//# sourceMappingURL=media-button-element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-button-element.d.ts","names":[],"sources":["../../../src/ui/media-button-element.ts"],"mappings":";;;;;;;uBAQsB,kBAAA,cAAgC,gBAAA,UAA0B,YAAA;EAAA;SAC9D,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;EAI1C,iBAAA,CAAA;EAiBA,oBAAA,CAAA;EAAA,UAMU,UAAA,CAAW,OAAA,EAAS,cAAA;EAAA,UAKpB,MAAA,CAAO,OAAA,EAAS,cAAA;AAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { MediaElement } from "./media-element.js";
|
|
2
|
+
import { applyElementProps, applyStateDataAttrs, createButton, logMissingFeature } from "@videojs/core/dom";
|
|
3
|
+
|
|
4
|
+
//#region src/ui/media-button-element.ts
|
|
5
|
+
/** Abstract base for HTML custom elements that render a media-control button. */
|
|
6
|
+
var MediaButtonElement = class extends MediaElement {
|
|
7
|
+
constructor(..._args) {
|
|
8
|
+
super(..._args);
|
|
9
|
+
this.disabled = false;
|
|
10
|
+
this.label = "";
|
|
11
|
+
}
|
|
12
|
+
static {
|
|
13
|
+
this.properties = {
|
|
14
|
+
label: { type: String },
|
|
15
|
+
disabled: { type: Boolean }
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
#disconnect = null;
|
|
19
|
+
connectedCallback() {
|
|
20
|
+
super.connectedCallback();
|
|
21
|
+
this.#disconnect = new AbortController();
|
|
22
|
+
const buttonProps = createButton({
|
|
23
|
+
onActivate: () => this.activate(this.mediaState.value),
|
|
24
|
+
isDisabled: () => this.disabled || !this.mediaState.value
|
|
25
|
+
});
|
|
26
|
+
applyElementProps(this, buttonProps, { signal: this.#disconnect.signal });
|
|
27
|
+
if (!this.mediaState.value && this.mediaState.displayName) logMissingFeature(this.localName, this.mediaState.displayName);
|
|
28
|
+
}
|
|
29
|
+
disconnectedCallback() {
|
|
30
|
+
super.disconnectedCallback();
|
|
31
|
+
this.#disconnect?.abort();
|
|
32
|
+
this.#disconnect = null;
|
|
33
|
+
}
|
|
34
|
+
willUpdate(changed) {
|
|
35
|
+
super.willUpdate(changed);
|
|
36
|
+
this.core.setProps?.(this);
|
|
37
|
+
}
|
|
38
|
+
update(changed) {
|
|
39
|
+
super.update(changed);
|
|
40
|
+
const media = this.mediaState.value;
|
|
41
|
+
if (!media) return;
|
|
42
|
+
this.core.setMedia(media);
|
|
43
|
+
const state = this.core.getState();
|
|
44
|
+
applyElementProps(this, this.core.getAttrs?.(state) ?? {});
|
|
45
|
+
applyStateDataAttrs(this, state, this.stateAttrMap);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
//#endregion
|
|
50
|
+
export { MediaButtonElement };
|
|
51
|
+
//# sourceMappingURL=media-button-element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-button-element.js","names":["#disconnect"],"sources":["../../../src/ui/media-button-element.ts"],"sourcesContent":["import type { InferComponentState, InferMediaState, MediaUIComponent, StateAttrMap } from '@videojs/core';\nimport { applyElementProps, applyStateDataAttrs, createButton, logMissingFeature } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, 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 render a media-control button. */\nexport abstract class MediaButtonElement<Core extends MediaUIComponent> 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 #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 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) ?? {});\n applyStateDataAttrs(this, state, this.stateAttrMap);\n }\n}\n"],"mappings":";;;;;AAQA,IAAsB,qBAAtB,cAAgF,aAAa;;;kBAMhF;eACH;;;oBAN6C;GACnD,OAAO,EAAE,MAAM,QAAQ;GACvB,UAAU,EAAE,MAAM,SAAS;GAC5B;;CAWD,cAAsC;CAEtC,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;AAEzB,QAAKA,aAAc,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,MAAKA,WAAY,QAAQ,CAAC;AAEzE,MAAe,CAAC,KAAK,WAAW,SAAS,KAAK,WAAW,YACvD,mBAAkB,KAAK,WAAW,KAAK,WAAW,YAAY;;CAIlE,AAAS,uBAA6B;AACpC,QAAM,sBAAsB;AAC5B,QAAKA,YAAa,OAAO;AACzB,QAAKA,aAAc;;CAGrB,AAAmB,WAAW,SAA+B;AAC3D,QAAM,WAAW,QAAQ;AACzB,OAAK,KAAK,WAAW,KAAK;;CAG5B,AAAmB,OAAO,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,KAAK,KAAK,WAAW,MAAM,IAAI,EAAE,CAAC;AAC1D,sBAAoB,MAAM,OAAO,KAAK,aAAa"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { MediaElement } from "./media-element.js";
|
|
2
|
+
import { PlayerController } from "../player/player-controller.js";
|
|
3
|
+
import { PropertyValues } from "@videojs/element";
|
|
4
|
+
import { InferComponentState, InferMediaState, MediaUIComponent, StateAttrMap } from "@videojs/core";
|
|
5
|
+
|
|
6
|
+
//#region src/ui/media-ui-element.d.ts
|
|
7
|
+
/** Abstract base for HTML custom elements that display media state with data attributes. */
|
|
8
|
+
declare abstract class MediaUIElement<Core extends MediaUIComponent> extends MediaElement {
|
|
9
|
+
protected abstract readonly core: Core;
|
|
10
|
+
protected abstract readonly stateAttrMap: StateAttrMap<InferComponentState<Core>>;
|
|
11
|
+
protected abstract readonly mediaState: PlayerController<any, InferMediaState<Core> | undefined>;
|
|
12
|
+
connectedCallback(): void;
|
|
13
|
+
protected update(changed: PropertyValues): void;
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { MediaUIElement };
|
|
17
|
+
//# sourceMappingURL=media-ui-element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-ui-element.d.ts","names":[],"sources":["../../../src/ui/media-ui-element.ts"],"mappings":";;;;;;;uBAQsB,cAAA,cAA4B,gBAAA,UAA0B,YAAA;EAAA,4BAC9C,IAAA,EAAM,IAAA;EAAA,4BACN,YAAA,EAAc,YAAA,CAAa,mBAAA,CAAoB,IAAA;EAAA,4BAC/C,UAAA,EAAY,gBAAA,MAAsB,eAAA,CAAgB,IAAA;EAErE,iBAAA,CAAA;EAAA,UAQU,MAAA,CAAO,OAAA,EAAS,cAAA;AAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { MediaElement } from "./media-element.js";
|
|
2
|
+
import { applyStateDataAttrs, logMissingFeature } from "@videojs/core/dom";
|
|
3
|
+
|
|
4
|
+
//#region src/ui/media-ui-element.ts
|
|
5
|
+
/** Abstract base for HTML custom elements that display media state with data attributes. */
|
|
6
|
+
var MediaUIElement = class extends MediaElement {
|
|
7
|
+
connectedCallback() {
|
|
8
|
+
super.connectedCallback();
|
|
9
|
+
if (!this.mediaState.value && this.mediaState.displayName) logMissingFeature(this.localName, this.mediaState.displayName);
|
|
10
|
+
}
|
|
11
|
+
update(changed) {
|
|
12
|
+
super.update(changed);
|
|
13
|
+
const media = this.mediaState.value;
|
|
14
|
+
if (!media) return;
|
|
15
|
+
this.core.setMedia(media);
|
|
16
|
+
const state = this.core.getState();
|
|
17
|
+
applyStateDataAttrs(this, state, this.stateAttrMap);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
export { MediaUIElement };
|
|
23
|
+
//# sourceMappingURL=media-ui-element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-ui-element.js","names":[],"sources":["../../../src/ui/media-ui-element.ts"],"sourcesContent":["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"],"mappings":";;;;;AAQA,IAAsB,iBAAtB,cAA4E,aAAa;CAKvF,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;AAEzB,MAAe,CAAC,KAAK,WAAW,SAAS,KAAK,WAAW,YACvD,mBAAkB,KAAK,WAAW,KAAK,WAAW,YAAY;;CAIlE,AAAmB,OAAO,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,sBAAoB,MAAM,OAAO,KAAK,aAAa"}
|