@videojs/html 10.0.0-rc.4 → 10.0.0-rc.5
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/compat-skin.css +1923 -0
- package/dist/default/define/audio/compat-skin.js +6 -0
- package/dist/default/define/audio/compat-skin2.js +4 -0
- package/dist/default/define/audio/neutral-skin.css +1855 -0
- package/dist/default/define/audio/neutral-skin.js +6 -0
- package/dist/default/define/audio/neutral-skin2.js +4 -0
- package/dist/default/define/audio/{minimal-ui.js → neutral-ui.js} +1 -1
- package/dist/default/define/audio/skin.css +1220 -1411
- package/dist/default/define/audio/skin2.js +1 -1
- package/dist/default/define/background/skin.css +8 -19
- package/dist/default/define/global.css +5 -21
- package/dist/default/define/live-audio/compat-skin.css +1708 -0
- package/dist/default/define/live-audio/compat-skin.js +6 -0
- package/dist/default/define/live-audio/compat-skin2.js +4 -0
- package/dist/default/define/live-audio/neutral-skin.css +1270 -0
- package/dist/default/define/live-audio/neutral-skin.js +6 -0
- package/dist/default/define/live-audio/neutral-skin2.js +4 -0
- package/dist/default/define/live-audio/{minimal-ui.js → neutral-ui.js} +1 -1
- package/dist/default/define/live-audio/skin.css +849 -959
- package/dist/default/define/live-audio/skin2.js +1 -1
- package/dist/default/define/live-video/compat-skin.css +2251 -0
- package/dist/default/define/live-video/compat-skin.js +6 -0
- package/dist/default/define/live-video/compat-skin2.js +4 -0
- package/dist/default/define/live-video/neutral-skin.css +2101 -0
- package/dist/default/define/live-video/neutral-skin.js +6 -0
- package/dist/default/define/live-video/neutral-skin2.js +4 -0
- package/dist/default/define/live-video/{minimal-ui.js → neutral-ui.js} +1 -1
- package/dist/default/define/live-video/skin.css +1565 -1784
- package/dist/default/define/live-video/skin2.js +1 -1
- package/dist/default/define/media/dash-video.js +5 -1
- package/dist/default/define/media/shaka-video.js +1 -0
- package/dist/default/define/shadow.css +2 -12
- package/dist/default/define/video/compat-skin.css +2529 -0
- package/dist/default/define/video/compat-skin.js +6 -0
- package/dist/default/define/video/compat-skin2.js +4 -0
- package/dist/default/define/video/neutral-skin.css +2849 -0
- package/dist/default/define/video/neutral-skin.js +6 -0
- package/dist/default/define/video/neutral-skin2.js +4 -0
- package/dist/default/define/video/{minimal-ui.js → neutral-ui.js} +1 -1
- package/dist/default/define/video/skin.css +2046 -2454
- package/dist/default/define/video/skin2.js +1 -1
- package/dist/default/extensions/google-cast/extension.js +18 -17
- package/dist/default/extensions/mux-data/extension.js +24 -24
- package/dist/default/extensions/player-extension-element.js +49 -0
- package/dist/default/i18n/index.js +2 -2
- package/dist/default/i18n/locale.js +10 -2
- package/dist/default/i18n/provider-element.js +1 -0
- package/dist/default/i18n/provider-mixin.js +11 -9
- package/dist/default/i18n/render-text.js +5 -1
- package/dist/default/i18n/text/airplay.js +1 -0
- package/dist/default/i18n/text/buttons.js +1 -0
- package/dist/default/i18n/text/captions.js +1 -0
- package/dist/default/i18n/text/cast.js +1 -0
- package/dist/default/i18n/text/common.js +1 -0
- package/dist/default/i18n/text/container.js +1 -0
- package/dist/default/i18n/text/errors.js +1 -0
- package/dist/default/i18n/text/fullscreen.js +1 -0
- package/dist/default/i18n/text/live.js +1 -0
- package/dist/default/i18n/text/menu.js +1 -0
- package/dist/default/i18n/text/pip.js +1 -0
- package/dist/default/i18n/text/playback.js +1 -0
- package/dist/default/i18n/text/seek.js +1 -0
- package/dist/default/i18n/text/slider.js +1 -0
- package/dist/default/i18n/text/status.js +1 -0
- package/dist/default/i18n/text/time.js +1 -0
- package/dist/default/i18n/text/volume.js +1 -0
- package/dist/default/icons/compat/index.js +26 -0
- package/dist/default/icons/dist/element/compat/icons.js +30 -0
- package/dist/default/icons/dist/element/{minimal → compat}/index.js +2 -2
- package/dist/default/icons/dist/element/index.js +2 -1
- package/dist/default/icons/dist/element/{minimal → neutral}/icons.js +1 -1
- package/dist/default/icons/dist/element/neutral/index.js +8 -0
- package/dist/default/icons/dist/html/compat/airplay-enter.js +4 -0
- package/dist/default/icons/dist/html/compat/airplay-exit.js +4 -0
- package/dist/default/icons/dist/html/compat/captions-off.js +4 -0
- package/dist/default/icons/dist/html/compat/captions-on.js +4 -0
- package/dist/default/icons/dist/html/compat/cast-enter.js +4 -0
- package/dist/default/icons/dist/html/compat/cast-exit.js +4 -0
- package/dist/default/icons/dist/html/compat/check.js +4 -0
- package/dist/default/icons/dist/html/compat/chevron.js +4 -0
- package/dist/default/icons/dist/html/compat/fullscreen-enter.js +4 -0
- package/dist/default/icons/dist/html/compat/fullscreen-exit.js +4 -0
- package/dist/default/icons/dist/html/compat/gear.js +4 -0
- package/dist/default/icons/dist/html/compat/pause.js +4 -0
- package/dist/default/icons/dist/html/compat/pip-enter.js +4 -0
- package/dist/default/icons/dist/html/compat/pip-exit.js +4 -0
- package/dist/default/icons/dist/html/compat/play.js +4 -0
- package/dist/default/icons/dist/html/compat/quality.js +4 -0
- package/dist/default/icons/dist/html/compat/restart.js +4 -0
- package/dist/default/icons/dist/html/compat/seek.js +4 -0
- package/dist/default/icons/dist/html/compat/speech.js +4 -0
- package/dist/default/icons/dist/html/compat/speed.js +4 -0
- package/dist/default/icons/dist/html/{minimal → compat}/spinner.js +1 -1
- package/dist/default/icons/dist/html/compat/switches.js +4 -0
- package/dist/default/icons/dist/html/compat/volume-high.js +4 -0
- package/dist/default/icons/dist/html/compat/volume-low.js +4 -0
- package/dist/default/icons/dist/html/compat/volume-off.js +4 -0
- package/dist/default/icons/dist/html/{minimal → neutral}/airplay-enter.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/airplay-exit.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/captions-off.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/captions-on.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/cast-enter.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/cast-exit.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/check.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/chevron.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/fullscreen-enter.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/fullscreen-exit.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/gear.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/pause.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/pip-enter.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/pip-exit.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/play.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/quality.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/restart.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/seek.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/speech.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/speed.js +1 -1
- package/dist/default/icons/dist/html/neutral/spinner.js +4 -0
- package/dist/default/icons/dist/html/{minimal → neutral}/switches.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/volume-high.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/volume-low.js +1 -1
- package/dist/default/icons/dist/html/{minimal → neutral}/volume-off.js +1 -1
- package/dist/default/icons/element/compat/index.js +1 -0
- package/dist/default/icons/element/neutral/index.js +1 -0
- package/dist/default/icons/neutral/index.js +26 -0
- package/dist/default/index.js +4 -3
- package/dist/default/internal/skins/compat-audio/register.js +70 -0
- package/dist/default/internal/skins/compat-audio/skin.css +1891 -0
- package/dist/default/internal/skins/compat-audio/template.js +215 -0
- package/dist/default/internal/skins/compat-live-audio/register.js +50 -0
- package/dist/default/internal/skins/compat-live-audio/skin.css +1676 -0
- package/dist/default/internal/skins/compat-live-audio/template.js +112 -0
- package/dist/default/internal/skins/compat-live-video/register.js +86 -0
- package/dist/default/internal/skins/compat-live-video/skin.css +2219 -0
- package/dist/default/internal/skins/compat-live-video/template.js +237 -0
- package/dist/default/internal/skins/compat-video/register.js +115 -0
- package/dist/default/internal/skins/compat-video/skin.css +2497 -0
- package/dist/default/internal/skins/compat-video/template.js +457 -0
- package/dist/default/internal/skins/default-audio/register.js +8 -8
- package/dist/default/internal/skins/default-audio/skin.css +1213 -1365
- package/dist/default/internal/skins/default-live-audio/register.js +4 -4
- package/dist/default/internal/skins/default-live-audio/skin.css +842 -913
- package/dist/default/internal/skins/default-live-video/register.js +8 -8
- package/dist/default/internal/skins/default-live-video/skin.css +1548 -1728
- package/dist/default/internal/skins/default-video/register.js +13 -13
- package/dist/default/internal/skins/default-video/skin.css +2034 -2403
- package/dist/default/internal/skins/{minimal-audio → neutral-audio}/register.js +20 -20
- package/dist/default/internal/skins/neutral-audio/skin.css +1823 -0
- package/dist/default/internal/skins/{minimal-audio → neutral-audio}/template.js +24 -24
- package/dist/default/internal/skins/{minimal-live-audio → neutral-live-audio}/register.js +13 -13
- package/dist/default/internal/skins/neutral-live-audio/skin.css +1238 -0
- package/dist/default/internal/skins/{minimal-live-audio → neutral-live-audio}/template.js +14 -14
- package/dist/default/internal/skins/{minimal-live-video → neutral-live-video}/register.js +28 -28
- package/dist/default/internal/skins/neutral-live-video/skin.css +2069 -0
- package/dist/default/internal/skins/{minimal-live-video → neutral-live-video}/template.js +47 -47
- package/dist/default/internal/skins/{minimal-video → neutral-video}/register.js +40 -40
- package/dist/default/internal/skins/neutral-video/skin.css +2817 -0
- package/dist/default/internal/skins/{minimal-video → neutral-video}/template.js +75 -75
- package/dist/default/player/context.js +9 -1
- package/dist/default/player/create-player.js +2 -1
- package/dist/default/player/element.js +47 -10
- package/dist/default/presets/audio/compat-skin.js +19 -0
- package/dist/default/presets/audio/index.js +3 -2
- package/dist/default/presets/audio/neutral-skin.js +19 -0
- package/dist/default/presets/live-audio/compat-skin.js +19 -0
- package/dist/default/presets/live-audio/index.js +3 -2
- package/dist/default/presets/live-audio/neutral-skin.js +19 -0
- package/dist/default/presets/live-video/compat-skin.js +19 -0
- package/dist/default/presets/live-video/index.js +3 -2
- package/dist/default/presets/live-video/neutral-skin.js +19 -0
- package/dist/default/presets/video/compat-skin.js +19 -0
- package/dist/default/presets/video/index.js +3 -2
- package/dist/default/presets/video/neutral-skin.js +19 -0
- package/dist/default/store/media-attach-mixin.js +2 -0
- package/dist/default/ui/airplay-button/element.js +1 -1
- package/dist/default/ui/buffering-indicator/element.js +4 -0
- package/dist/default/ui/dialog/context.js +1 -0
- package/dist/default/ui/dialog/element.js +4 -2
- package/dist/default/ui/media-button-element.js +7 -6
- package/dist/default/ui/media-ui-element.js +6 -1
- package/dist/default/ui/menu/context.js +2 -0
- package/dist/default/ui/play-button/element.js +1 -1
- package/dist/default/ui/playback-rate-button/element.js +4 -2
- package/dist/default/ui/popover/element.js +4 -2
- package/dist/default/ui/radio-group/context.js +1 -0
- package/dist/default/ui/seek-indicator/element.js +7 -1
- package/dist/default/ui/slider/context.js +1 -0
- package/dist/default/ui/status-indicator/element.js +14 -1
- package/dist/default/ui/text/element.js +1 -0
- package/dist/default/ui/thumbnail/element.js +3 -2
- package/dist/default/ui/tooltip/context.js +1 -0
- package/dist/default/ui/tooltip/element.js +4 -2
- package/dist/default/ui/volume-popover/element.js +1 -1
- package/dist/default/ui/volume-slider/element.js +1 -1
- package/dist/default/version.js +27 -0
- package/dist/dev/define/audio/compat-skin.css +1923 -0
- package/dist/dev/define/audio/compat-skin.d.ts +1 -0
- package/dist/dev/define/audio/compat-skin.js +8 -0
- package/dist/dev/define/audio/compat-skin.js.map +1 -0
- package/dist/dev/define/audio/compat-skin2.js +6 -0
- package/dist/dev/define/audio/compat-skin2.js.map +1 -0
- package/dist/dev/define/audio/neutral-skin.css +1855 -0
- package/dist/dev/define/audio/neutral-skin.d.ts +1 -0
- package/dist/dev/define/audio/neutral-skin.js +8 -0
- package/dist/dev/define/audio/neutral-skin.js.map +1 -0
- package/dist/dev/define/audio/neutral-skin2.js +6 -0
- package/dist/dev/define/audio/neutral-skin2.js.map +1 -0
- package/dist/dev/define/audio/{minimal-ui.js → neutral-ui.js} +2 -2
- package/dist/dev/define/audio/{minimal-ui.js.map → neutral-ui.js.map} +1 -1
- package/dist/dev/define/audio/skin.css +1220 -1411
- package/dist/dev/define/audio/skin2.js +1 -1
- package/dist/dev/define/audio/skin2.js.map +1 -1
- package/dist/dev/define/background/skin.css +8 -19
- package/dist/dev/define/global.css +5 -21
- package/dist/dev/define/live-audio/compat-skin.css +1708 -0
- package/dist/dev/define/live-audio/compat-skin.d.ts +1 -0
- package/dist/dev/define/live-audio/compat-skin.js +8 -0
- package/dist/dev/define/live-audio/compat-skin.js.map +1 -0
- package/dist/dev/define/live-audio/compat-skin2.js +6 -0
- package/dist/dev/define/live-audio/compat-skin2.js.map +1 -0
- package/dist/dev/define/live-audio/neutral-skin.css +1270 -0
- package/dist/dev/define/live-audio/neutral-skin.d.ts +1 -0
- package/dist/dev/define/live-audio/neutral-skin.js +8 -0
- package/dist/dev/define/live-audio/neutral-skin.js.map +1 -0
- package/dist/dev/define/live-audio/neutral-skin2.js +6 -0
- package/dist/dev/define/live-audio/neutral-skin2.js.map +1 -0
- package/dist/dev/define/live-audio/{minimal-ui.js → neutral-ui.js} +2 -2
- package/dist/dev/define/live-audio/{minimal-ui.js.map → neutral-ui.js.map} +1 -1
- package/dist/dev/define/live-audio/skin.css +849 -959
- package/dist/dev/define/live-audio/skin2.js +1 -1
- package/dist/dev/define/live-audio/skin2.js.map +1 -1
- package/dist/dev/define/live-video/compat-skin.css +2251 -0
- package/dist/dev/define/live-video/compat-skin.d.ts +1 -0
- package/dist/dev/define/live-video/compat-skin.js +8 -0
- package/dist/dev/define/live-video/compat-skin.js.map +1 -0
- package/dist/dev/define/live-video/compat-skin2.js +6 -0
- package/dist/dev/define/live-video/compat-skin2.js.map +1 -0
- package/dist/dev/define/live-video/neutral-skin.css +2101 -0
- package/dist/dev/define/live-video/neutral-skin.d.ts +1 -0
- package/dist/dev/define/live-video/neutral-skin.js +8 -0
- package/dist/dev/define/live-video/neutral-skin.js.map +1 -0
- package/dist/dev/define/live-video/neutral-skin2.js +6 -0
- package/dist/dev/define/live-video/neutral-skin2.js.map +1 -0
- package/dist/dev/define/live-video/{minimal-ui.js → neutral-ui.js} +2 -2
- package/dist/dev/define/live-video/{minimal-ui.js.map → neutral-ui.js.map} +1 -1
- package/dist/dev/define/live-video/skin.css +1565 -1784
- package/dist/dev/define/live-video/skin2.js +1 -1
- package/dist/dev/define/live-video/skin2.js.map +1 -1
- package/dist/dev/define/media/background-video.d.ts +1 -2
- package/dist/dev/define/media/cloudflare-video.d.ts +3 -2
- package/dist/dev/define/media/cloudflare-video.js.map +1 -1
- package/dist/dev/define/media/dash-video.d.ts +8 -3
- package/dist/dev/define/media/dash-video.js +5 -1
- package/dist/dev/define/media/dash-video.js.map +1 -1
- package/dist/dev/define/media/hls-audio.d.ts +1 -2
- package/dist/dev/define/media/hls-background-video.d.ts +1 -2
- package/dist/dev/define/media/hls-video.d.ts +1 -2
- package/dist/dev/define/media/hlsjs-video.d.ts +3 -2
- package/dist/dev/define/media/hlsjs-video.js.map +1 -1
- package/dist/dev/define/media/mux-audio/hls-js.d.ts +3 -2
- package/dist/dev/define/media/mux-audio/hls-js.js.map +1 -1
- package/dist/dev/define/media/mux-audio/index.d.ts +2 -2
- package/dist/dev/define/media/mux-audio/spf.d.ts +3 -2
- package/dist/dev/define/media/mux-audio/spf.js.map +1 -1
- package/dist/dev/define/media/mux-background-video.d.ts +1 -2
- package/dist/dev/define/media/mux-video/hls-js.d.ts +3 -2
- package/dist/dev/define/media/mux-video/hls-js.js.map +1 -1
- package/dist/dev/define/media/mux-video/index.d.ts +2 -2
- package/dist/dev/define/media/mux-video/spf.d.ts +3 -2
- package/dist/dev/define/media/mux-video/spf.js.map +1 -1
- package/dist/dev/define/media/native-hls-video.d.ts +3 -2
- package/dist/dev/define/media/native-hls-video.js.map +1 -1
- package/dist/dev/define/media/shaka-video.d.ts +4 -2
- package/dist/dev/define/media/shaka-video.js +1 -0
- package/dist/dev/define/media/shaka-video.js.map +1 -1
- package/dist/dev/define/media/spotify-audio.d.ts +3 -2
- package/dist/dev/define/media/spotify-audio.js.map +1 -1
- package/dist/dev/define/media/tiktok-video.d.ts +3 -2
- package/dist/dev/define/media/tiktok-video.js.map +1 -1
- package/dist/dev/define/media/twitch-video.d.ts +3 -2
- package/dist/dev/define/media/twitch-video.js.map +1 -1
- package/dist/dev/define/media/vimeo-video.d.ts +3 -2
- package/dist/dev/define/media/vimeo-video.js.map +1 -1
- package/dist/dev/define/media/wistia-video.d.ts +3 -2
- package/dist/dev/define/media/wistia-video.js.map +1 -1
- package/dist/dev/define/media/youtube-video.d.ts +3 -2
- package/dist/dev/define/media/youtube-video.js.map +1 -1
- package/dist/dev/define/shadow.css +2 -12
- package/dist/dev/define/ui/menu-radio-group.d.ts +1 -0
- package/dist/dev/define/ui/menu.d.ts +1 -0
- package/dist/dev/define/ui/popover.d.ts +1 -0
- package/dist/dev/define/video/compat-skin.css +2529 -0
- package/dist/dev/define/video/compat-skin.d.ts +1 -0
- package/dist/dev/define/video/compat-skin.js +8 -0
- package/dist/dev/define/video/compat-skin.js.map +1 -0
- package/dist/dev/define/video/compat-skin2.js +6 -0
- package/dist/dev/define/video/compat-skin2.js.map +1 -0
- package/dist/dev/define/video/neutral-skin.css +2849 -0
- package/dist/dev/define/video/neutral-skin.d.ts +1 -0
- package/dist/dev/define/video/neutral-skin.js +8 -0
- package/dist/dev/define/video/neutral-skin.js.map +1 -0
- package/dist/dev/define/video/neutral-skin2.js +6 -0
- package/dist/dev/define/video/neutral-skin2.js.map +1 -0
- package/dist/dev/define/video/{minimal-ui.js → neutral-ui.js} +2 -2
- package/dist/dev/define/video/{minimal-ui.js.map → neutral-ui.js.map} +1 -1
- package/dist/dev/define/video/skin.css +2046 -2454
- package/dist/dev/define/video/skin2.js +1 -1
- package/dist/dev/define/video/skin2.js.map +1 -1
- package/dist/dev/extensions/google-cast/extension.d.ts +8 -7
- package/dist/dev/extensions/google-cast/extension.js +18 -17
- package/dist/dev/extensions/google-cast/extension.js.map +1 -1
- package/dist/dev/extensions/mux-data/extension.d.ts +6 -6
- package/dist/dev/extensions/mux-data/extension.js +24 -24
- package/dist/dev/extensions/mux-data/extension.js.map +1 -1
- package/dist/dev/extensions/player-extension-element.d.ts +30 -0
- package/dist/dev/extensions/player-extension-element.js +51 -0
- package/dist/dev/extensions/player-extension-element.js.map +1 -0
- package/dist/dev/i18n/context.d.ts +4 -5
- package/dist/dev/i18n/controller.d.ts +3 -4
- package/dist/dev/i18n/controller.js.map +1 -1
- package/dist/dev/i18n/create-i18n.d.ts +3 -4
- package/dist/dev/i18n/index.d.ts +2 -2
- package/dist/dev/i18n/index.js +2 -2
- package/dist/dev/i18n/locale.d.ts +12 -5
- package/dist/dev/i18n/locale.js +10 -2
- package/dist/dev/i18n/locale.js.map +1 -1
- package/dist/dev/i18n/provider-element.d.ts +4 -3
- package/dist/dev/i18n/provider-element.js +1 -0
- package/dist/dev/i18n/provider-element.js.map +1 -1
- package/dist/dev/i18n/provider-mixin.d.ts +1 -2
- package/dist/dev/i18n/provider-mixin.js +11 -9
- package/dist/dev/i18n/provider-mixin.js.map +1 -1
- package/dist/dev/i18n/render-text.d.ts +6 -3
- package/dist/dev/i18n/render-text.js +5 -1
- package/dist/dev/i18n/render-text.js.map +1 -1
- package/dist/dev/i18n/text/airplay.d.ts +1 -0
- package/dist/dev/i18n/text/airplay.js +1 -0
- package/dist/dev/i18n/text/buttons.d.ts +1 -0
- package/dist/dev/i18n/text/buttons.js +1 -0
- package/dist/dev/i18n/text/captions.d.ts +1 -0
- package/dist/dev/i18n/text/captions.js +1 -0
- package/dist/dev/i18n/text/cast.d.ts +1 -0
- package/dist/dev/i18n/text/cast.js +1 -0
- package/dist/dev/i18n/text/common.d.ts +1 -0
- package/dist/dev/i18n/text/common.js +1 -0
- package/dist/dev/i18n/text/container.d.ts +1 -0
- package/dist/dev/i18n/text/container.js +1 -0
- package/dist/dev/i18n/text/errors.d.ts +1 -0
- package/dist/dev/i18n/text/errors.js +1 -0
- package/dist/dev/i18n/text/fullscreen.d.ts +1 -0
- package/dist/dev/i18n/text/fullscreen.js +1 -0
- package/dist/dev/i18n/text/live.d.ts +1 -0
- package/dist/dev/i18n/text/live.js +1 -0
- package/dist/dev/i18n/text/menu.d.ts +1 -0
- package/dist/dev/i18n/text/menu.js +1 -0
- package/dist/dev/i18n/text/pip.d.ts +1 -0
- package/dist/dev/i18n/text/pip.js +1 -0
- package/dist/dev/i18n/text/playback.d.ts +1 -0
- package/dist/dev/i18n/text/playback.js +1 -0
- package/dist/dev/i18n/text/seek.d.ts +1 -0
- package/dist/dev/i18n/text/seek.js +1 -0
- package/dist/dev/i18n/text/slider.d.ts +1 -0
- package/dist/dev/i18n/text/slider.js +1 -0
- package/dist/dev/i18n/text/status.d.ts +1 -0
- package/dist/dev/i18n/text/status.js +1 -0
- package/dist/dev/i18n/text/time.d.ts +1 -0
- package/dist/dev/i18n/text/time.js +1 -0
- package/dist/dev/i18n/text/volume.d.ts +1 -0
- package/dist/dev/i18n/text/volume.js +1 -0
- package/dist/dev/i18n/text-mixin.d.ts +1 -2
- package/dist/dev/i18n/text-mixin.js.map +1 -1
- package/dist/dev/i18n/types.d.ts +2 -3
- package/dist/dev/icons/{minimal → compat}/index.d.ts +1 -1
- package/dist/dev/icons/compat/index.js +26 -0
- package/dist/dev/icons/dist/element/base.d.ts +1 -2
- package/dist/dev/icons/dist/element/base.js.map +1 -1
- package/dist/dev/icons/dist/element/compat/icons.js +32 -0
- package/dist/dev/icons/dist/element/compat/icons.js.map +1 -0
- package/dist/dev/icons/dist/element/{minimal → compat}/index.js +2 -2
- package/dist/dev/icons/dist/element/compat/index.js.map +1 -0
- package/dist/dev/icons/dist/element/index.js +2 -1
- package/dist/dev/icons/dist/element/index.js.map +1 -1
- package/dist/dev/icons/dist/element/{minimal → neutral}/icons.js +1 -1
- package/dist/dev/icons/dist/element/{minimal → neutral}/icons.js.map +1 -1
- package/dist/dev/icons/dist/element/neutral/index.d.ts +1 -0
- package/dist/dev/icons/dist/element/neutral/index.js +10 -0
- package/dist/dev/icons/dist/element/{minimal → neutral}/index.js.map +1 -1
- package/dist/dev/icons/dist/html/compat/airplay-enter.js +6 -0
- package/dist/dev/icons/dist/html/compat/airplay-enter.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/airplay-exit.js +6 -0
- package/dist/dev/icons/dist/html/compat/airplay-exit.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/captions-off.js +6 -0
- package/dist/dev/icons/dist/html/compat/captions-off.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/captions-on.js +6 -0
- package/dist/dev/icons/dist/html/compat/captions-on.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/cast-enter.js +6 -0
- package/dist/dev/icons/dist/html/compat/cast-enter.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/cast-exit.js +6 -0
- package/dist/dev/icons/dist/html/compat/cast-exit.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/check.js +6 -0
- package/dist/dev/icons/dist/html/compat/check.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/chevron.js +6 -0
- package/dist/dev/icons/dist/html/compat/chevron.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/fullscreen-enter.js +6 -0
- package/dist/dev/icons/dist/html/compat/fullscreen-enter.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/fullscreen-exit.js +6 -0
- package/dist/dev/icons/dist/html/compat/fullscreen-exit.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/gear.js +6 -0
- package/dist/dev/icons/dist/html/compat/gear.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/index.d.ts +28 -0
- package/dist/dev/icons/dist/html/compat/pause.js +6 -0
- package/dist/dev/icons/dist/html/compat/pause.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/pip-enter.js +6 -0
- package/dist/dev/icons/dist/html/compat/pip-enter.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/pip-exit.js +6 -0
- package/dist/dev/icons/dist/html/compat/pip-exit.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/play.js +6 -0
- package/dist/dev/icons/dist/html/compat/play.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/quality.js +6 -0
- package/dist/dev/icons/dist/html/compat/quality.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/restart.js +6 -0
- package/dist/dev/icons/dist/html/compat/restart.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/seek.js +6 -0
- package/dist/dev/icons/dist/html/compat/seek.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/speech.js +6 -0
- package/dist/dev/icons/dist/html/compat/speech.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/speed.js +6 -0
- package/dist/dev/icons/dist/html/compat/speed.js.map +1 -0
- package/dist/dev/icons/dist/html/{minimal → compat}/spinner.js +1 -1
- package/dist/dev/icons/dist/html/compat/spinner.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/switches.js +6 -0
- package/dist/dev/icons/dist/html/compat/switches.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/volume-high.js +6 -0
- package/dist/dev/icons/dist/html/compat/volume-high.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/volume-low.js +6 -0
- package/dist/dev/icons/dist/html/compat/volume-low.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/volume-off.js +6 -0
- package/dist/dev/icons/dist/html/compat/volume-off.js.map +1 -0
- package/dist/dev/icons/dist/html/default/index.d.ts +25 -26
- package/dist/dev/icons/dist/html/{minimal → neutral}/airplay-enter.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/airplay-enter.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/airplay-exit.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/airplay-exit.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/captions-off.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/captions-off.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/captions-on.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/captions-on.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/cast-enter.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/cast-enter.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/cast-exit.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/cast-exit.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/check.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/check.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/chevron.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/chevron.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/fullscreen-enter.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/fullscreen-enter.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/fullscreen-exit.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/fullscreen-exit.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/gear.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/gear.js.map +1 -1
- package/dist/dev/icons/dist/html/neutral/index.d.ts +28 -0
- package/dist/dev/icons/dist/html/{minimal → neutral}/pause.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/pause.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/pip-enter.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/pip-enter.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/pip-exit.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/pip-exit.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/play.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/play.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/quality.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/quality.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/restart.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/restart.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/seek.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/seek.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/speech.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/speech.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/speed.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/speed.js.map +1 -1
- package/dist/dev/icons/dist/html/neutral/spinner.js +6 -0
- package/dist/dev/icons/dist/html/{minimal → neutral}/spinner.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/switches.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/switches.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/volume-high.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/volume-high.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/volume-low.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/volume-low.js.map +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/volume-off.js +1 -1
- package/dist/dev/icons/dist/html/{minimal → neutral}/volume-off.js.map +1 -1
- package/dist/dev/icons/element/compat/index.d.ts +1 -0
- package/dist/dev/icons/element/compat/index.js +1 -0
- package/dist/dev/icons/element/neutral/index.d.ts +1 -0
- package/dist/dev/icons/element/neutral/index.js +1 -0
- package/dist/dev/icons/element/register/index.d.ts +1 -2
- package/dist/dev/icons/neutral/index.d.ts +2 -0
- package/dist/dev/icons/neutral/index.js +26 -0
- package/dist/dev/index.d.ts +12 -7
- package/dist/dev/index.js +4 -3
- package/dist/dev/internal/skins/compat-audio/register.d.ts +43 -0
- package/dist/dev/internal/skins/compat-audio/register.js +72 -0
- package/dist/dev/internal/skins/compat-audio/register.js.map +1 -0
- package/dist/dev/internal/skins/compat-audio/skin.css +1891 -0
- package/dist/dev/internal/skins/compat-audio/template.js +217 -0
- package/dist/dev/internal/skins/compat-audio/template.js.map +1 -0
- package/dist/dev/internal/skins/compat-live-audio/register.d.ts +27 -0
- package/dist/dev/internal/skins/compat-live-audio/register.js +52 -0
- package/dist/dev/internal/skins/compat-live-audio/register.js.map +1 -0
- package/dist/dev/internal/skins/compat-live-audio/skin.css +1676 -0
- package/dist/dev/internal/skins/compat-live-audio/template.js +114 -0
- package/dist/dev/internal/skins/compat-live-audio/template.js.map +1 -0
- package/dist/dev/internal/skins/compat-live-video/register.d.ts +45 -0
- package/dist/dev/internal/skins/compat-live-video/register.js +88 -0
- package/dist/dev/internal/skins/compat-live-video/register.js.map +1 -0
- package/dist/dev/internal/skins/compat-live-video/skin.css +2219 -0
- package/dist/dev/internal/skins/compat-live-video/template.js +239 -0
- package/dist/dev/internal/skins/compat-live-video/template.js.map +1 -0
- package/dist/dev/internal/skins/compat-video/register.d.ts +62 -0
- package/dist/dev/internal/skins/compat-video/register.js +117 -0
- package/dist/dev/internal/skins/compat-video/register.js.map +1 -0
- package/dist/dev/internal/skins/compat-video/skin.css +2497 -0
- package/dist/dev/internal/skins/compat-video/template.js +459 -0
- package/dist/dev/internal/skins/compat-video/template.js.map +1 -0
- package/dist/dev/internal/skins/default-audio/register.d.ts +12 -12
- package/dist/dev/internal/skins/default-audio/register.js +8 -8
- package/dist/dev/internal/skins/default-audio/skin.css +1213 -1365
- package/dist/dev/internal/skins/default-live-audio/register.d.ts +4 -4
- package/dist/dev/internal/skins/default-live-audio/register.js +4 -4
- package/dist/dev/internal/skins/default-live-audio/skin.css +842 -913
- package/dist/dev/internal/skins/default-live-video/register.d.ts +10 -10
- package/dist/dev/internal/skins/default-live-video/register.js +8 -8
- package/dist/dev/internal/skins/default-live-video/skin.css +1548 -1728
- package/dist/dev/internal/skins/default-video/register.d.ts +18 -18
- package/dist/dev/internal/skins/default-video/register.js +13 -13
- package/dist/dev/internal/skins/default-video/skin.css +2034 -2403
- package/dist/dev/internal/skins/{minimal-audio → neutral-audio}/register.d.ts +14 -14
- package/dist/dev/internal/skins/{minimal-audio → neutral-audio}/register.js +20 -20
- package/dist/dev/internal/skins/{minimal-audio → neutral-audio}/register.js.map +1 -1
- package/dist/dev/internal/skins/neutral-audio/skin.css +1823 -0
- package/dist/dev/internal/skins/{minimal-audio → neutral-audio}/template.js +24 -24
- package/dist/dev/internal/skins/{minimal-audio → neutral-audio}/template.js.map +1 -1
- package/dist/dev/internal/skins/{minimal-live-audio → neutral-live-audio}/register.d.ts +4 -4
- package/dist/dev/internal/skins/{minimal-live-audio → neutral-live-audio}/register.js +13 -13
- package/dist/dev/internal/skins/{minimal-live-audio → neutral-live-audio}/register.js.map +1 -1
- package/dist/dev/internal/skins/neutral-live-audio/skin.css +1238 -0
- package/dist/dev/internal/skins/{minimal-live-audio → neutral-live-audio}/template.js +14 -14
- package/dist/dev/internal/skins/{minimal-live-audio → neutral-live-audio}/template.js.map +1 -1
- package/dist/dev/internal/skins/{minimal-live-video → neutral-live-video}/register.d.ts +10 -10
- package/dist/dev/internal/skins/{minimal-live-video → neutral-live-video}/register.js +28 -28
- package/dist/dev/internal/skins/{minimal-live-video → neutral-live-video}/register.js.map +1 -1
- package/dist/dev/internal/skins/neutral-live-video/skin.css +2069 -0
- package/dist/dev/internal/skins/{minimal-live-video → neutral-live-video}/template.js +47 -47
- package/dist/dev/internal/skins/{minimal-live-video → neutral-live-video}/template.js.map +1 -1
- package/dist/dev/internal/skins/{minimal-video → neutral-video}/register.d.ts +20 -20
- package/dist/dev/internal/skins/{minimal-video → neutral-video}/register.js +40 -40
- package/dist/dev/internal/skins/{minimal-video → neutral-video}/register.js.map +1 -1
- package/dist/dev/internal/skins/neutral-video/skin.css +2817 -0
- package/dist/dev/internal/skins/{minimal-video → neutral-video}/template.js +75 -75
- package/dist/dev/internal/skins/{minimal-video → neutral-video}/template.js.map +1 -1
- package/dist/dev/media/background-video/adapter.d.ts +1 -2
- package/dist/dev/media/background-video/template.d.ts +1 -2
- package/dist/dev/media/cloudflare-video/adapter.d.ts +3 -15
- package/dist/dev/media/dash-video/adapter.d.ts +3 -15
- package/dist/dev/media/hls-audio/adapter.d.ts +3 -15
- package/dist/dev/media/hls-background-video/adapter.d.ts +8 -5
- package/dist/dev/media/hls-background-video/adapter.js.map +1 -1
- package/dist/dev/media/hls-video/adapter.d.ts +3 -15
- package/dist/dev/media/hlsjs-video/adapter.d.ts +3 -15
- package/dist/dev/media/mux-audio/hls-js.d.ts +3 -15
- package/dist/dev/media/mux-audio/mixin.js.map +1 -1
- package/dist/dev/media/mux-audio/spf.d.ts +3 -15
- package/dist/dev/media/mux-video/hls-js.d.ts +3 -15
- package/dist/dev/media/mux-video/mixin.js.map +1 -1
- package/dist/dev/media/mux-video/spf.d.ts +3 -15
- package/dist/dev/media/native-hls-video/adapter.d.ts +3 -15
- package/dist/dev/media/shaka-video/adapter.d.ts +3 -15
- package/dist/dev/media/spotify-audio/adapter.d.ts +3 -15
- package/dist/dev/media/tiktok-video/adapter.d.ts +3 -15
- package/dist/dev/media/twitch-video/adapter.d.ts +3 -15
- package/dist/dev/media/vimeo-video/adapter.d.ts +3 -15
- package/dist/dev/media/wistia-video/adapter.d.ts +1 -2
- package/dist/dev/media/youtube-video/adapter.d.ts +3 -15
- package/dist/dev/player/context.d.ts +34 -15
- package/dist/dev/player/context.js +9 -1
- package/dist/dev/player/context.js.map +1 -1
- package/dist/dev/player/controller.d.ts +3 -4
- package/dist/dev/player/controller.js.map +1 -1
- package/dist/dev/player/create-player.d.ts +5 -6
- package/dist/dev/player/create-player.js +2 -1
- package/dist/dev/player/create-player.js.map +1 -1
- package/dist/dev/player/element.js +47 -10
- package/dist/dev/player/element.js.map +1 -1
- package/dist/dev/presets/audio/compat-skin.d.ts +15 -0
- package/dist/dev/presets/audio/compat-skin.js +21 -0
- package/dist/dev/presets/audio/compat-skin.js.map +1 -0
- package/dist/dev/presets/audio/index.d.ts +3 -2
- package/dist/dev/presets/audio/index.js +3 -2
- package/dist/dev/presets/audio/neutral-skin.d.ts +15 -0
- package/dist/dev/presets/audio/neutral-skin.js +21 -0
- package/dist/dev/presets/audio/neutral-skin.js.map +1 -0
- package/dist/dev/presets/audio/player.d.ts +2 -3
- package/dist/dev/presets/audio/skin.d.ts +2 -3
- package/dist/dev/presets/audio/skin.js.map +1 -1
- package/dist/dev/presets/background/player.d.ts +2 -3
- package/dist/dev/presets/background/skin.d.ts +1 -2
- package/dist/dev/presets/live-audio/compat-skin.d.ts +15 -0
- package/dist/dev/presets/live-audio/compat-skin.js +21 -0
- package/dist/dev/presets/live-audio/compat-skin.js.map +1 -0
- package/dist/dev/presets/live-audio/index.d.ts +3 -2
- package/dist/dev/presets/live-audio/index.js +3 -2
- package/dist/dev/presets/live-audio/neutral-skin.d.ts +15 -0
- package/dist/dev/presets/live-audio/neutral-skin.js +21 -0
- package/dist/dev/presets/live-audio/neutral-skin.js.map +1 -0
- package/dist/dev/presets/live-audio/player.d.ts +2 -3
- package/dist/dev/presets/live-audio/skin.d.ts +2 -3
- package/dist/dev/presets/live-audio/skin.js.map +1 -1
- package/dist/dev/presets/live-video/compat-skin.d.ts +15 -0
- package/dist/dev/presets/live-video/compat-skin.js +21 -0
- package/dist/dev/presets/live-video/compat-skin.js.map +1 -0
- package/dist/dev/presets/live-video/index.d.ts +3 -2
- package/dist/dev/presets/live-video/index.js +3 -2
- package/dist/dev/presets/live-video/neutral-skin.d.ts +15 -0
- package/dist/dev/presets/live-video/neutral-skin.js +21 -0
- package/dist/dev/presets/live-video/neutral-skin.js.map +1 -0
- package/dist/dev/presets/live-video/player.d.ts +2 -3
- package/dist/dev/presets/live-video/skin.d.ts +2 -3
- package/dist/dev/presets/live-video/skin.js.map +1 -1
- package/dist/dev/presets/skin.d.ts +1 -2
- package/dist/dev/presets/video/compat-skin.d.ts +15 -0
- package/dist/dev/presets/video/compat-skin.js +21 -0
- package/dist/dev/presets/video/compat-skin.js.map +1 -0
- package/dist/dev/presets/video/index.d.ts +3 -2
- package/dist/dev/presets/video/index.js +3 -2
- package/dist/dev/presets/video/neutral-skin.d.ts +15 -0
- package/dist/dev/presets/video/neutral-skin.js +21 -0
- package/dist/dev/presets/video/neutral-skin.js.map +1 -0
- package/dist/dev/presets/video/player.d.ts +2 -3
- package/dist/dev/presets/video/skin.d.ts +2 -3
- package/dist/dev/presets/video/skin.js.map +1 -1
- package/dist/dev/store/media-attach-mixin.d.ts +6 -4
- package/dist/dev/store/media-attach-mixin.js +2 -0
- package/dist/dev/store/media-attach-mixin.js.map +1 -1
- package/dist/dev/store/types.d.ts +2 -4
- package/dist/dev/ui/airplay-button/element.d.ts +4 -5
- package/dist/dev/ui/airplay-button/element.js +1 -1
- package/dist/dev/ui/airplay-button/element.js.map +1 -1
- package/dist/dev/ui/alert-dialog/element.d.ts +1 -2
- package/dist/dev/ui/audio-track-radio-group/element.d.ts +4 -5
- package/dist/dev/ui/audio-track-radio-group/element.js.map +1 -1
- package/dist/dev/ui/buffering-indicator/element.d.ts +2 -2
- package/dist/dev/ui/buffering-indicator/element.js +4 -0
- package/dist/dev/ui/buffering-indicator/element.js.map +1 -1
- package/dist/dev/ui/captions-button/element.d.ts +7 -10
- package/dist/dev/ui/captions-button/element.js.map +1 -1
- package/dist/dev/ui/captions-radio-group/element.d.ts +4 -5
- package/dist/dev/ui/captions-radio-group/element.js.map +1 -1
- package/dist/dev/ui/cast-button/element.d.ts +3 -4
- package/dist/dev/ui/cast-button/element.js.map +1 -1
- package/dist/dev/ui/container/element.d.ts +1 -2
- package/dist/dev/ui/container/element.js.map +1 -1
- package/dist/dev/ui/context-part-element.d.ts +2 -3
- package/dist/dev/ui/context-part-element.js.map +1 -1
- package/dist/dev/ui/controls/backdrop.d.ts +1 -2
- package/dist/dev/ui/controls/content.d.ts +1 -2
- package/dist/dev/ui/controls/context.d.ts +1 -2
- package/dist/dev/ui/controls/element.d.ts +1 -2
- package/dist/dev/ui/controls/element.js.map +1 -1
- package/dist/dev/ui/controls/group.d.ts +1 -2
- package/dist/dev/ui/dialog/backdrop.d.ts +1 -2
- package/dist/dev/ui/dialog/close.d.ts +1 -2
- package/dist/dev/ui/dialog/close.js.map +1 -1
- package/dist/dev/ui/dialog/context.d.ts +4 -3
- package/dist/dev/ui/dialog/context.js +1 -0
- package/dist/dev/ui/dialog/context.js.map +1 -1
- package/dist/dev/ui/dialog/description.d.ts +1 -2
- package/dist/dev/ui/dialog/element.d.ts +5 -4
- package/dist/dev/ui/dialog/element.js +4 -2
- package/dist/dev/ui/dialog/element.js.map +1 -1
- package/dist/dev/ui/dialog/popup.d.ts +1 -2
- package/dist/dev/ui/dialog/popup.js.map +1 -1
- package/dist/dev/ui/dialog/title.d.ts +1 -2
- package/dist/dev/ui/error-dialog/element.d.ts +1 -2
- package/dist/dev/ui/error-dialog/element.js.map +1 -1
- package/dist/dev/ui/fullscreen-button/element.d.ts +3 -5
- package/dist/dev/ui/fullscreen-button/element.js.map +1 -1
- package/dist/dev/ui/gesture/element.d.ts +1 -2
- package/dist/dev/ui/gesture/element.js.map +1 -1
- package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.d.ts +2 -3
- package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.js.map +1 -1
- package/dist/dev/ui/hotkey/element.d.ts +1 -2
- package/dist/dev/ui/hotkey/element.js.map +1 -1
- package/dist/dev/ui/input-indicator/element.d.ts +5 -4
- package/dist/dev/ui/input-indicator/element.js.map +1 -1
- package/dist/dev/ui/input-indicator/live-indicator.d.ts +2 -3
- package/dist/dev/ui/input-indicator/live-indicator.js.map +1 -1
- package/dist/dev/ui/live-button/element.d.ts +4 -4
- package/dist/dev/ui/live-button/element.js.map +1 -1
- package/dist/dev/ui/media-button-element.d.ts +17 -8
- package/dist/dev/ui/media-button-element.js +7 -6
- package/dist/dev/ui/media-button-element.js.map +1 -1
- package/dist/dev/ui/media-ui-element.d.ts +15 -7
- package/dist/dev/ui/media-ui-element.js +6 -1
- package/dist/dev/ui/media-ui-element.js.map +1 -1
- package/dist/dev/ui/menu/checkbox-item.d.ts +1 -2
- package/dist/dev/ui/menu/checkbox-item.js.map +1 -1
- package/dist/dev/ui/menu/content.d.ts +1 -2
- package/dist/dev/ui/menu/content.js.map +1 -1
- package/dist/dev/ui/menu/context.d.ts +9 -5
- package/dist/dev/ui/menu/context.js +2 -0
- package/dist/dev/ui/menu/context.js.map +1 -1
- package/dist/dev/ui/menu/element.d.ts +1 -2
- package/dist/dev/ui/menu/element.js.map +1 -1
- package/dist/dev/ui/menu/group-controller.js.map +1 -1
- package/dist/dev/ui/menu/group-label.d.ts +1 -2
- package/dist/dev/ui/menu/group-label.js.map +1 -1
- package/dist/dev/ui/menu/group.d.ts +1 -2
- package/dist/dev/ui/menu/group.js.map +1 -1
- package/dist/dev/ui/menu/item-indicator.d.ts +1 -2
- package/dist/dev/ui/menu/item.d.ts +1 -2
- package/dist/dev/ui/menu/item.js.map +1 -1
- package/dist/dev/ui/menu/radio-group.d.ts +1 -2
- package/dist/dev/ui/menu/radio-group.js.map +1 -1
- package/dist/dev/ui/menu/radio-item.d.ts +1 -2
- package/dist/dev/ui/menu/radio-item.js.map +1 -1
- package/dist/dev/ui/menu/separator.d.ts +1 -2
- package/dist/dev/ui/mute-button/element.d.ts +3 -4
- package/dist/dev/ui/mute-button/element.js.map +1 -1
- package/dist/dev/ui/pip-button/element.d.ts +4 -6
- package/dist/dev/ui/pip-button/element.js.map +1 -1
- package/dist/dev/ui/play-button/element.d.ts +3 -5
- package/dist/dev/ui/play-button/element.js +1 -1
- package/dist/dev/ui/play-button/element.js.map +1 -1
- package/dist/dev/ui/playback-rate-button/element.d.ts +4 -5
- package/dist/dev/ui/playback-rate-button/element.js +4 -2
- package/dist/dev/ui/playback-rate-button/element.js.map +1 -1
- package/dist/dev/ui/playback-rate-radio-group/element.d.ts +4 -5
- package/dist/dev/ui/playback-rate-radio-group/element.js.map +1 -1
- package/dist/dev/ui/popover/element.d.ts +1 -2
- package/dist/dev/ui/popover/element.js +4 -2
- package/dist/dev/ui/popover/element.js.map +1 -1
- package/dist/dev/ui/position-controller.js.map +1 -1
- package/dist/dev/ui/poster/element.d.ts +1 -2
- package/dist/dev/ui/poster/element.js.map +1 -1
- package/dist/dev/ui/quality-radio-group/element.d.ts +4 -5
- package/dist/dev/ui/quality-radio-group/element.js.map +1 -1
- package/dist/dev/ui/radio-group/context.d.ts +4 -3
- package/dist/dev/ui/radio-group/context.js +1 -0
- package/dist/dev/ui/radio-group/context.js.map +1 -1
- package/dist/dev/ui/radio-group/element.d.ts +1 -2
- package/dist/dev/ui/radio-group/element.js.map +1 -1
- package/dist/dev/ui/radio-options/controller.js.map +1 -1
- package/dist/dev/ui/seek-button/element.d.ts +2 -3
- package/dist/dev/ui/seek-button/element.js.map +1 -1
- package/dist/dev/ui/seek-indicator/element.d.ts +3 -4
- package/dist/dev/ui/seek-indicator/element.js +7 -1
- package/dist/dev/ui/seek-indicator/element.js.map +1 -1
- package/dist/dev/ui/seek-indicator/value.d.ts +1 -2
- package/dist/dev/ui/slider/buffer.d.ts +1 -2
- package/dist/dev/ui/slider/context.d.ts +4 -3
- package/dist/dev/ui/slider/context.js +1 -0
- package/dist/dev/ui/slider/context.js.map +1 -1
- package/dist/dev/ui/slider/element.d.ts +1 -2
- package/dist/dev/ui/slider/element.js.map +1 -1
- package/dist/dev/ui/slider/events.d.ts +4 -3
- package/dist/dev/ui/slider/fill.d.ts +1 -2
- package/dist/dev/ui/slider/preview.d.ts +1 -2
- package/dist/dev/ui/slider/preview.js.map +1 -1
- package/dist/dev/ui/slider/thumb.d.ts +1 -2
- package/dist/dev/ui/slider/thumb.js.map +1 -1
- package/dist/dev/ui/slider/thumbnail.d.ts +1 -2
- package/dist/dev/ui/slider/thumbnail.js.map +1 -1
- package/dist/dev/ui/slider/track.d.ts +1 -2
- package/dist/dev/ui/slider/value.d.ts +1 -2
- package/dist/dev/ui/slider/value.js.map +1 -1
- package/dist/dev/ui/status-announcer/element.d.ts +1 -2
- package/dist/dev/ui/status-announcer/element.js.map +1 -1
- package/dist/dev/ui/status-indicator/element.d.ts +9 -4
- package/dist/dev/ui/status-indicator/element.js +14 -1
- package/dist/dev/ui/status-indicator/element.js.map +1 -1
- package/dist/dev/ui/status-indicator/value.d.ts +1 -2
- package/dist/dev/ui/text/element.d.ts +4 -3
- package/dist/dev/ui/text/element.js +1 -0
- package/dist/dev/ui/text/element.js.map +1 -1
- package/dist/dev/ui/thumbnail/element.d.ts +5 -6
- package/dist/dev/ui/thumbnail/element.js +3 -2
- package/dist/dev/ui/thumbnail/element.js.map +1 -1
- package/dist/dev/ui/time/element.d.ts +1 -2
- package/dist/dev/ui/time/element.js.map +1 -1
- package/dist/dev/ui/time/group.d.ts +1 -2
- package/dist/dev/ui/time/separator.d.ts +1 -2
- package/dist/dev/ui/time-slider/chapter-title.d.ts +1 -2
- package/dist/dev/ui/time-slider/chapter-title.js.map +1 -1
- package/dist/dev/ui/time-slider/chapters.d.ts +1 -2
- package/dist/dev/ui/time-slider/chapters.js.map +1 -1
- package/dist/dev/ui/time-slider/element.d.ts +1 -2
- package/dist/dev/ui/time-slider/element.js.map +1 -1
- package/dist/dev/ui/title/element.d.ts +1 -2
- package/dist/dev/ui/title/element.js.map +1 -1
- package/dist/dev/ui/tooltip/context.d.ts +2 -2
- package/dist/dev/ui/tooltip/context.js +1 -0
- package/dist/dev/ui/tooltip/context.js.map +1 -1
- package/dist/dev/ui/tooltip/element.d.ts +1 -2
- package/dist/dev/ui/tooltip/element.js +4 -2
- package/dist/dev/ui/tooltip/element.js.map +1 -1
- package/dist/dev/ui/tooltip/group.d.ts +1 -2
- package/dist/dev/ui/tooltip/group.js.map +1 -1
- package/dist/dev/ui/tooltip/label.d.ts +1 -2
- package/dist/dev/ui/tooltip/label.js.map +1 -1
- package/dist/dev/ui/tooltip/shortcut.d.ts +1 -2
- package/dist/dev/ui/ui-element.d.ts +3 -3
- package/dist/dev/ui/ui-element.js.map +1 -1
- package/dist/dev/ui/volume-indicator/element.d.ts +3 -4
- package/dist/dev/ui/volume-indicator/element.js.map +1 -1
- package/dist/dev/ui/volume-indicator/fill.d.ts +1 -2
- package/dist/dev/ui/volume-indicator/value.d.ts +1 -2
- package/dist/dev/ui/volume-popover/element.d.ts +1 -2
- package/dist/dev/ui/volume-popover/element.js +1 -1
- package/dist/dev/ui/volume-popover/element.js.map +1 -1
- package/dist/dev/ui/volume-slider/element.d.ts +1 -2
- package/dist/dev/ui/volume-slider/element.js +1 -1
- package/dist/dev/ui/volume-slider/element.js.map +1 -1
- package/dist/dev/version.d.ts +21 -0
- package/dist/dev/version.js +29 -0
- package/dist/dev/version.js.map +1 -0
- package/docs/README.md +1 -1
- package/docs/guides/autoplay.md +10 -21
- package/docs/guides/background-video.md +74 -7
- package/docs/guides/browser-support.md +48 -36
- package/docs/guides/build-your-own-component.md +5 -5
- package/docs/guides/captions.md +46 -6
- package/docs/guides/casting.md +24 -8
- package/docs/guides/cdn.md +11 -10
- package/docs/guides/content-security-policy.md +29 -5
- package/docs/guides/controls.md +25 -10
- package/docs/guides/customize-skins.md +2 -2
- package/docs/guides/features.md +3 -1
- package/docs/guides/fullscreen.md +35 -8
- package/docs/guides/installation-cdn.md +5 -5
- package/docs/guides/installation-shadcn.md +4 -4
- package/docs/guides/installation-svelte.md +5 -5
- package/docs/guides/installation-vue.md +5 -5
- package/docs/guides/installation.md +5 -5
- package/docs/guides/internationalization.md +37 -28
- package/docs/guides/keyboard-shortcuts.md +27 -15
- package/docs/guides/live-streams.md +51 -13
- package/docs/guides/llms.txt +6 -5
- package/docs/guides/media-sources.md +8 -5
- package/docs/guides/migrate-from-media-chrome.md +182 -51
- package/docs/guides/migrate-from-mux-player.md +191 -116
- package/docs/guides/migrate-from-plyr.md +171 -81
- package/docs/guides/migrate-from-video-js-8.md +255 -190
- package/docs/guides/migrate-from-vidstack.md +865 -0
- package/docs/guides/mux-data.md +23 -9
- package/docs/guides/picture-in-picture.md +22 -16
- package/docs/guides/playback-errors.md +10 -7
- package/docs/guides/poster.md +32 -11
- package/docs/guides/presets.md +15 -5
- package/docs/guides/quality.md +44 -5
- package/docs/guides/self-hosting.md +5 -5
- package/docs/guides/skins.md +6 -4
- package/docs/guides/thumbnails.md +24 -14
- package/docs/guides/ui-components.md +1 -1
- package/docs/guides/user-preferences.md +38 -15
- package/docs/guides/v10-roadmap.md +1 -1
- package/docs/llms.txt +45 -11
- package/docs/reference/api/create-i18n.md +3 -3
- package/docs/reference/api/create-translator.md +1 -1
- package/docs/reference/api/feature-audio-track.md +1 -1
- package/docs/reference/api/feature-controls.md +2 -2
- package/docs/reference/api/feature-fullscreen.md +1 -2
- package/docs/reference/api/feature-pip.md +3 -4
- package/docs/reference/api/feature-playback.md +2 -3
- package/docs/reference/api/feature-quality.md +2 -2
- package/docs/reference/api/feature-remote-playback.md +1 -1
- package/docs/reference/api/feature-source.md +2 -8
- package/docs/reference/api/feature-text-tracks.md +6 -8
- package/docs/reference/api/feature-volume.md +1 -1
- package/docs/reference/api/find-locale-keys.md +32 -0
- package/docs/reference/api/get-locale-key.md +32 -0
- package/docs/reference/api/html-create-player.md +24 -26
- package/docs/reference/api/i18n-controller.md +1 -1
- package/docs/reference/api/is-text.md +33 -0
- package/docs/reference/api/llms.txt +23 -2
- package/docs/reference/api/load-locale.md +36 -0
- package/docs/reference/api/media-capabilities.md +255 -0
- package/docs/reference/api/player-controller.md +39 -20
- package/docs/reference/api/player-store.md +112 -0
- package/docs/reference/api/preset-audio.md +116 -0
- package/docs/reference/api/preset-background.md +103 -0
- package/docs/reference/api/preset-live-audio.md +119 -0
- package/docs/reference/api/preset-live-video.md +124 -0
- package/docs/reference/api/preset-video.md +123 -0
- package/docs/reference/api/register-i18n.md +13 -0
- package/docs/reference/api/resolve-adapter-type.md +98 -0
- package/docs/reference/api/resolve-mime-type.md +48 -0
- package/docs/reference/api/resolve-translation.md +36 -0
- package/docs/reference/api/translate-text.md +56 -0
- package/docs/reference/api/translation-phrases.md +13 -0
- package/docs/reference/api/ui-element.md +296 -0
- package/docs/reference/components/audio-compat-skin.md +33 -0
- package/docs/reference/components/{audio-minimal-skin.md → audio-neutral-skin.md} +6 -6
- package/docs/reference/components/audio-skin.md +2 -2
- package/docs/reference/components/background-video-skin.md +1 -1
- package/docs/reference/components/background-video.md +1 -1
- package/docs/reference/components/captions-button.md +1 -1
- package/docs/reference/components/captions-radio-group.md +1 -1
- package/docs/reference/components/cloudflare-video.md +1 -1
- package/docs/reference/components/controls.md +2 -2
- package/docs/reference/components/dash-video.md +1 -1
- package/docs/reference/components/fullscreen-button.md +1 -1
- package/docs/reference/components/google-cast.md +4 -4
- package/docs/reference/components/hls-audio.md +1 -1
- package/docs/reference/components/hls-background-video.md +1 -1
- package/docs/reference/components/hls-video.md +1 -1
- package/docs/reference/components/hlsjs-video.md +2 -2
- package/docs/reference/components/icons.md +130 -0
- package/docs/reference/components/live-audio-compat-skin.md +35 -0
- package/docs/reference/components/{live-audio-minimal-skin.md → live-audio-neutral-skin.md} +6 -6
- package/docs/reference/components/live-audio-skin.md +2 -2
- package/docs/reference/components/live-video-compat-skin.md +41 -0
- package/docs/reference/components/{live-video-minimal-skin.md → live-video-neutral-skin.md} +6 -6
- package/docs/reference/components/live-video-skin.md +2 -2
- package/docs/reference/components/llms.txt +16 -6
- package/docs/reference/components/menu.md +7 -2
- package/docs/reference/components/mux-audio.md +2 -2
- package/docs/reference/components/mux-background-video.md +1 -1
- package/docs/reference/components/mux-data.md +4 -4
- package/docs/reference/components/mux-video.md +4 -4
- package/docs/reference/components/native-hls-video.md +1 -1
- package/docs/reference/components/pip-button.md +2 -2
- package/docs/reference/components/player.md +26 -2
- package/docs/reference/components/popover.md +6 -8
- package/docs/reference/components/shaka-video.md +1 -1
- package/docs/reference/components/spotify-audio.md +1 -1
- package/docs/reference/components/status-indicator.md +27 -4
- package/docs/reference/components/thumbnail.md +1 -1
- package/docs/reference/components/tiktok-video.md +1 -1
- package/docs/reference/components/twitch-video.md +1 -1
- package/docs/reference/components/video-compat-skin.md +45 -0
- package/docs/reference/components/{video-minimal-skin.md → video-neutral-skin.md} +6 -6
- package/docs/reference/components/video-skin.md +2 -2
- package/docs/reference/components/vimeo-video.md +1 -1
- package/docs/reference/components/wistia-video.md +1 -1
- package/docs/reference/components/youtube-video.md +1 -1
- package/package.json +54 -42
- package/dist/default/define/audio/minimal-skin.css +0 -2048
- package/dist/default/define/audio/minimal-skin.js +0 -6
- package/dist/default/define/audio/minimal-skin2.js +0 -4
- package/dist/default/define/live-audio/minimal-skin.css +0 -1378
- package/dist/default/define/live-audio/minimal-skin.js +0 -6
- package/dist/default/define/live-audio/minimal-skin2.js +0 -4
- package/dist/default/define/live-video/minimal-skin.css +0 -2311
- package/dist/default/define/live-video/minimal-skin.js +0 -6
- package/dist/default/define/live-video/minimal-skin2.js +0 -4
- package/dist/default/define/video/minimal-skin.css +0 -3232
- package/dist/default/define/video/minimal-skin.js +0 -6
- package/dist/default/define/video/minimal-skin2.js +0 -4
- package/dist/default/extensions/media-extension-element.js +0 -54
- package/dist/default/icons/element/minimal/index.js +0 -1
- package/dist/default/icons/minimal/index.js +0 -26
- package/dist/default/internal/skins/minimal-audio/skin.css +0 -1977
- package/dist/default/internal/skins/minimal-live-audio/skin.css +0 -1307
- package/dist/default/internal/skins/minimal-live-video/skin.css +0 -2240
- package/dist/default/internal/skins/minimal-video/skin.css +0 -3161
- package/dist/default/presets/audio/minimal-skin.js +0 -19
- package/dist/default/presets/live-audio/minimal-skin.js +0 -19
- package/dist/default/presets/live-video/minimal-skin.js +0 -19
- package/dist/default/presets/video/minimal-skin.js +0 -19
- package/dist/dev/define/audio/minimal-skin.css +0 -2048
- package/dist/dev/define/audio/minimal-skin.d.ts +0 -1
- package/dist/dev/define/audio/minimal-skin.js +0 -8
- package/dist/dev/define/audio/minimal-skin.js.map +0 -1
- package/dist/dev/define/audio/minimal-skin2.js +0 -6
- package/dist/dev/define/audio/minimal-skin2.js.map +0 -1
- package/dist/dev/define/live-audio/minimal-skin.css +0 -1378
- package/dist/dev/define/live-audio/minimal-skin.d.ts +0 -1
- package/dist/dev/define/live-audio/minimal-skin.js +0 -8
- package/dist/dev/define/live-audio/minimal-skin.js.map +0 -1
- package/dist/dev/define/live-audio/minimal-skin2.js +0 -6
- package/dist/dev/define/live-audio/minimal-skin2.js.map +0 -1
- package/dist/dev/define/live-video/minimal-skin.css +0 -2311
- package/dist/dev/define/live-video/minimal-skin.d.ts +0 -1
- package/dist/dev/define/live-video/minimal-skin.js +0 -8
- package/dist/dev/define/live-video/minimal-skin.js.map +0 -1
- package/dist/dev/define/live-video/minimal-skin2.js +0 -6
- package/dist/dev/define/live-video/minimal-skin2.js.map +0 -1
- package/dist/dev/define/video/minimal-skin.css +0 -3232
- package/dist/dev/define/video/minimal-skin.d.ts +0 -1
- package/dist/dev/define/video/minimal-skin.js +0 -8
- package/dist/dev/define/video/minimal-skin.js.map +0 -1
- package/dist/dev/define/video/minimal-skin2.js +0 -6
- package/dist/dev/define/video/minimal-skin2.js.map +0 -1
- package/dist/dev/extensions/media-extension-element.d.ts +0 -29
- package/dist/dev/extensions/media-extension-element.js +0 -56
- package/dist/dev/extensions/media-extension-element.js.map +0 -1
- package/dist/dev/icons/dist/html/minimal/index.d.ts +0 -29
- package/dist/dev/icons/element/minimal/index.d.ts +0 -1
- package/dist/dev/icons/element/minimal/index.js +0 -1
- package/dist/dev/icons/minimal/index.js +0 -26
- package/dist/dev/internal/skins/minimal-audio/skin.css +0 -1977
- package/dist/dev/internal/skins/minimal-live-audio/skin.css +0 -1307
- package/dist/dev/internal/skins/minimal-live-video/skin.css +0 -2240
- package/dist/dev/internal/skins/minimal-video/skin.css +0 -3161
- package/dist/dev/presets/audio/minimal-skin.d.ts +0 -16
- package/dist/dev/presets/audio/minimal-skin.js +0 -21
- package/dist/dev/presets/audio/minimal-skin.js.map +0 -1
- package/dist/dev/presets/live-audio/minimal-skin.d.ts +0 -16
- package/dist/dev/presets/live-audio/minimal-skin.js +0 -21
- package/dist/dev/presets/live-audio/minimal-skin.js.map +0 -1
- package/dist/dev/presets/live-video/minimal-skin.d.ts +0 -16
- package/dist/dev/presets/live-video/minimal-skin.js +0 -21
- package/dist/dev/presets/live-video/minimal-skin.js.map +0 -1
- package/dist/dev/presets/video/minimal-skin.d.ts +0 -16
- package/dist/dev/presets/video/minimal-skin.js +0 -21
- package/dist/dev/presets/video/minimal-skin.js.map +0 -1
- /package/dist/dev/define/audio/{minimal-ui.d.ts → neutral-ui.d.ts} +0 -0
- /package/dist/dev/define/live-audio/{minimal-ui.d.ts → neutral-ui.d.ts} +0 -0
- /package/dist/dev/define/live-video/{minimal-ui.d.ts → neutral-ui.d.ts} +0 -0
- /package/dist/dev/define/video/{minimal-ui.d.ts → neutral-ui.d.ts} +0 -0
- /package/dist/dev/icons/dist/element/{minimal → compat}/index.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","names":[
|
|
1
|
+
{"version":3,"file":"element.js","names":[],"sources":["../../../../src/ui/error-dialog/element.ts"],"sourcesContent":["import {\n type DialogInput,\n ErrorDialogCore,\n ErrorDialogDataAttrs,\n getErrorDialogDismissText,\n getErrorDialogTitleText,\n getErrorDialogUnexpectedText,\n resolveErrorDialogDescription,\n} from '@videojs/core';\nimport {\n applyStateDataAttrs,\n createDialog,\n createTransition,\n type DialogApi,\n type DialogModality,\n selectError,\n} from '@videojs/core/dom';\nimport { translateText } from '@videojs/core/i18n';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextConsumer, ContextProvider } from '@videojs/element/context';\nimport type { ErrorLike } from '@videojs/media';\nimport { SnapshotController } from '@videojs/store/html';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { containerContext, playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { dialogContext } from '../dialog/context';\nimport { UIElement } from '../ui-element';\n\nlet idCounter = 0;\n\nfunction hasAuthoredContent(host: HTMLElement): boolean {\n return Array.from(host.childNodes).some((node) => !!node.textContent?.trim());\n}\n\nexport class ErrorDialogElement extends UIElement {\n static readonly tagName = 'media-error-dialog';\n\n readonly #core = new ErrorDialogCore();\n readonly #provider = new ContextProvider(this, { context: dialogContext });\n readonly #popupId = `vjs-error-dialog-popup-${idCounter++}`;\n readonly #titleId = `vjs-error-dialog-title-${idCounter++}`;\n readonly #descriptionId = `vjs-error-dialog-desc-${idCounter++}`;\n readonly #errorState = new PlayerController(this, playerContext, selectError);\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #container = new ContextConsumer(this, { context: containerContext, subscribe: true });\n\n #dialog: DialogApi | null = null;\n #snapshot: SnapshotController<DialogInput> | null = null;\n #modalitySnapshot: SnapshotController<DialogModality> | null = null;\n #lastError: ErrorLike | null = null;\n #lastDescription: ReturnType<typeof resolveErrorDialogDescription> | null = null;\n #seenCopyParts = new WeakSet<HTMLElement>();\n #authoredCopyParts = new WeakSet<HTMLElement>();\n\n constructor() {\n super();\n this.#core.setTitleId(this.#titleId);\n this.#core.setDescriptionId(this.#descriptionId);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.destroyed) return;\n\n this.#dialog = createDialog({\n transition: createTransition(),\n onOpenChange: (nextOpen: boolean) => {\n if (!nextOpen) {\n this.#errorState.value?.dismissError();\n }\n },\n });\n\n if (this.#snapshot) {\n this.#snapshot.track(this.#dialog.input);\n } else {\n this.#snapshot = new SnapshotController(this, this.#dialog.input);\n }\n\n if (this.#modalitySnapshot) {\n this.#modalitySnapshot.track(this.#dialog.modality);\n } else {\n this.#modalitySnapshot = new SnapshotController(this, this.#dialog.modality);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#dialog?.destroy();\n this.#dialog = null;\n }\n\n protected override willUpdate(_changed: PropertyValues): void {\n super.willUpdate(_changed);\n\n if (!this.#dialog) return;\n\n this.#dialog.setInteractionRoot(this.#container.value?.container ?? null);\n\n const errorState = this.#errorState.value;\n const hasError = Boolean(errorState?.error);\n const { active: isOpen } = this.#dialog.input.current;\n\n if (errorState?.error) {\n this.#lastError = errorState.error;\n }\n\n const errorForCopy = errorState?.error ?? (isOpen ? this.#lastError : null);\n\n this.#syncDialogCopy(errorForCopy);\n\n if (!hasError && !isOpen) {\n this.#lastError = null;\n this.#lastDescription = null;\n }\n\n if (hasError && !isOpen) {\n this.#dialog.open();\n } else if (!hasError && isOpen) {\n this.#dialog.close();\n }\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n if (!this.#dialog) return;\n\n const input = this.#dialog.input.current;\n\n this.#core.setInput(input);\n this.#core.setDocumentModal(this.#dialog.modality.current.documentModal);\n const state = this.#core.getState();\n\n applyStateDataAttrs(this, state, ErrorDialogDataAttrs);\n\n this.#provider.setValue({\n state,\n stateAttrMap: ErrorDialogDataAttrs,\n dialog: this.#dialog,\n popupId: this.#popupId,\n popupAttrs: this.#core.getPopupAttrs(state),\n close: () => this.#dialog?.close(),\n });\n }\n\n #syncDialogCopy(error: ErrorLike | null): void {\n const t = this.#i18n.value;\n const title = this.querySelector<HTMLElement>('media-dialog-title');\n\n if (title && !this.#hasAuthoredCopy(title)) {\n title.textContent = translateText(getErrorDialogTitleText(), t);\n }\n\n const desc = this.querySelector<HTMLElement>('media-dialog-description');\n\n if (desc && !this.#hasAuthoredCopy(desc)) {\n const description = error ? resolveErrorDialogDescription(error) : null;\n\n if (description) {\n this.#lastDescription = description;\n }\n\n const copy = description ?? this.#lastDescription;\n\n desc.textContent = copy ? translateText(copy, t) : translateText(getErrorDialogUnexpectedText(), t);\n }\n\n const close = this.querySelector<HTMLElement>('media-dialog-close');\n\n if (close && !this.#hasAuthoredCopy(close)) {\n close.textContent = translateText(getErrorDialogDismissText(), t);\n }\n }\n\n #hasAuthoredCopy(el: HTMLElement): boolean {\n if (!this.#seenCopyParts.has(el)) {\n this.#seenCopyParts.add(el);\n\n if (hasAuthoredContent(el)) {\n this.#authoredCopyParts.add(el);\n }\n }\n\n return this.#authoredCopyParts.has(el);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { PlayerController } from "../../player/controller.js";
|
|
2
2
|
import { MediaButtonElement } from "../media-button-element.js";
|
|
3
3
|
import { index_d_exports } from "../../index.js";
|
|
4
|
-
import { FullscreenButtonCore } from "@videojs/core";
|
|
4
|
+
import { FullscreenButtonCore, FullscreenButtonState } from "@videojs/core";
|
|
5
5
|
import { ButtonActivationSource, UIEvent } from "@videojs/core/dom";
|
|
6
6
|
import { MediaFullscreenState } from "@videojs/media";
|
|
7
7
|
//#region src/ui/fullscreen-button/element.d.ts
|
|
8
|
-
declare class FullscreenButtonElement extends MediaButtonElement<
|
|
8
|
+
export declare class FullscreenButtonElement extends MediaButtonElement<FullscreenButtonState, MediaFullscreenState> {
|
|
9
9
|
#private;
|
|
10
10
|
static readonly tagName = "media-fullscreen-button";
|
|
11
11
|
protected readonly core: FullscreenButtonCore;
|
|
@@ -16,15 +16,13 @@ declare class FullscreenButtonElement extends MediaButtonElement<FullscreenButto
|
|
|
16
16
|
readonly hidden: 'data-hidden';
|
|
17
17
|
};
|
|
18
18
|
protected readonly mediaState: PlayerController<index_d_exports.AnyPlayerStore, {
|
|
19
|
-
|
|
19
|
+
isFullscreen: boolean;
|
|
20
20
|
fullscreenAvailability: import("@videojs/media").MediaFeatureAvailability;
|
|
21
21
|
requestFullscreen: () => Promise<void>;
|
|
22
22
|
exitFullscreen: () => Promise<void>;
|
|
23
|
-
toggleFullscreen: () => Promise<void>;
|
|
24
23
|
} | undefined>;
|
|
25
24
|
protected readonly hotkeyAction = "toggleFullscreen";
|
|
26
25
|
protected activate(state: MediaFullscreenState, _event: UIEvent, source: ButtonActivationSource): Promise<void>;
|
|
27
26
|
}
|
|
28
27
|
//#endregion
|
|
29
|
-
export { FullscreenButtonElement };
|
|
30
28
|
//# sourceMappingURL=element.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","names":[
|
|
1
|
+
{"version":3,"file":"element.js","names":[],"sources":["../../../../src/ui/fullscreen-button/element.ts"],"sourcesContent":["import { FullscreenButtonCore, FullscreenButtonDataAttrs, type FullscreenButtonState } from '@videojs/core';\nimport { type ButtonActivationSource, selectFullscreen, type UIEvent } from '@videojs/core/dom';\nimport { ContextConsumer } from '@videojs/element/context';\nimport type { MediaFullscreenState } from '@videojs/media';\n\nimport { containerContext, playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class FullscreenButtonElement extends MediaButtonElement<FullscreenButtonState, MediaFullscreenState> {\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 readonly #container = new ContextConsumer(this, { context: containerContext, subscribe: true });\n\n protected activate(state: MediaFullscreenState, _event: UIEvent, source: ButtonActivationSource): Promise<void> {\n if (source === 'pointer') {\n this.#container.value?.container?.focus({ preventScroll: true });\n }\n\n return this.core.toggle(state);\n }\n}\n"],"mappings":";;;;;;;AASA,IAAa,0BAAb,cAA6C,mBAAgE;;;EAGjF,KAAA,OAAA,IAAI,qBAAqB;EACjB,KAAA,eAAA;EACF,KAAA,aAAA,IAAI,iBAAiB,MAAM,eAAe,gBAAgB;EAC/C,KAAA,eAAA;EACrB,KAAA,aAAA,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAkB,WAAW;EAAK,CAAC;;;EANpE,KAAA,UAAA;;CAM1B;CAEA,SAAmB,OAA6B,QAAiB,QAA+C;EAC9G,IAAI,WAAW,WACb,KAAK,WAAW,OAAO,WAAW,MAAM,EAAE,eAAe,KAAK,CAAC;EAGjE,OAAO,KAAK,KAAK,OAAO,KAAK;CAC/B;AACF"}
|
|
@@ -2,7 +2,7 @@ import { UIElement } from "../ui-element.js";
|
|
|
2
2
|
import { GestureProps } from "@videojs/core";
|
|
3
3
|
import { PropertyDeclarationMap, PropertyValues } from "@videojs/element";
|
|
4
4
|
//#region src/ui/gesture/element.d.ts
|
|
5
|
-
declare class GestureElement extends UIElement {
|
|
5
|
+
export declare class GestureElement extends UIElement {
|
|
6
6
|
#private;
|
|
7
7
|
static readonly tagName = "media-gesture";
|
|
8
8
|
static properties: PropertyDeclarationMap;
|
|
@@ -17,5 +17,4 @@ declare class GestureElement extends UIElement {
|
|
|
17
17
|
protected update(changed: PropertyValues): void;
|
|
18
18
|
}
|
|
19
19
|
//#endregion
|
|
20
|
-
export { GestureElement };
|
|
21
20
|
//# sourceMappingURL=element.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","names":[
|
|
1
|
+
{"version":3,"file":"element.js","names":[],"sources":["../../../../src/ui/gesture/element.ts"],"sourcesContent":["import type { GestureProps } from '@videojs/core';\nimport {\n createDoubleTapGesture,\n createTapGesture,\n getGestureActionValue,\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/controller';\nimport { UIElement } from '../ui-element';\n\nexport class GestureElement extends UIElement {\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: GestureProps['type'] | '' = '';\n action: GestureProps['action'] = '';\n value: GestureProps['value'] = undefined;\n pointer: GestureProps['pointer'] = undefined;\n region: GestureProps['region'] = undefined;\n disabled: NonNullable<GestureProps['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, region } = this;\n const actionValue = getGestureActionValue(this.action, region, value);\n\n const onActivate = (event: PointerEvent) => {\n resolver({ store, value: actionValue, event });\n };\n\n const options = {\n pointer: this.pointer,\n region,\n disabled: this.disabled,\n action: this.action,\n value: actionValue,\n };\n\n if (this.type === 'doubletap') {\n this.#cleanup = createDoubleTapGesture(container, onActivate, options);\n } else if (this.type === 'tap') {\n this.#cleanup = createTapGesture(container, onActivate, options);\n }\n }\n\n #unregister(): void {\n this.#cleanup?.();\n this.#cleanup = null;\n }\n}\n"],"mappings":";;;;;;AAcA,IAAa,iBAAb,cAAoC,UAAU;;;EAYV,KAAA,OAAA;EACD,KAAA,SAAA;EACF,KAAA,QAAA,KAAA;EACI,KAAA,UAAA,KAAA;EACF,KAAA,SAAA,KAAA;EACiB,KAAA,WAAA;EAE/B,KAAA,UAAA,IAAI,iBAAiB,MAAM,aAAa;EACrC,KAAA,aAAA,IAAI,gBAAgB,MAAM;GAC9C,SAAS;GACT,gBAAgB,KAAK,cAAc;GACnC,WAAW;EACb,CAAC;EAC+B,KAAA,WAAA;;;EAxBN,KAAA,UAAA;;;EAE2B,KAAA,aAAA;GACnD,MAAM,EAAE,MAAM,OAAO;GACrB,QAAQ,EAAE,MAAM,OAAO;GACvB,OAAO,EAAE,MAAM,OAAO;GACtB,SAAS,EAAE,MAAM,OAAO;GACxB,QAAQ,EAAE,MAAM,OAAO;GACvB,UAAU,EAAE,MAAM,QAAQ;EAC5B;;CASA;CACA;CAKA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,KAAK,MAAM,UAAU;EACrB,KAAK,UAAU;CACjB;CAEA,uBAAsC;EACpC,MAAM,qBAAqB;EAC3B,KAAK,YAAY;CACnB;CAEA,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EAGpB,IAAI,KAAK,aAAa;GACpB,KAAK,YAAY;GACjB,KAAK,UAAU;EACjB;CACF;CAEA,YAAkB;EAChB,MAAM,QAAQ,KAAK,QAAQ;EAC3B,MAAM,YAAY,KAAK,WAAW,OAAO;EACzC,IAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,UAAU,CAAC,SAAS,CAAC,WAAW;EAExD,MAAM,WAAW,qBAAqB,KAAK,MAAM;EACjD,IAAI,CAAC,UAAU;EAEf,MAAM,EAAE,OAAO,WAAW;EAC1B,MAAM,cAAc,sBAAsB,KAAK,QAAQ,QAAQ,KAAK;EAEpE,MAAM,cAAc,UAAwB;GAC1C,SAAS;IAAE;IAAO,OAAO;IAAa;GAAM,CAAC;EAC/C;EAEA,MAAM,UAAU;GACd,SAAS,KAAK;GACd;GACA,UAAU,KAAK;GACf,QAAQ,KAAK;GACb,OAAO;EACT;EAEA,IAAI,KAAK,SAAS,aAChB,KAAK,WAAW,uBAAuB,WAAW,YAAY,OAAO;OAChE,IAAI,KAAK,SAAS,OACvB,KAAK,WAAW,iBAAiB,WAAW,YAAY,OAAO;CAEnE;CAEA,cAAoB;EAClB,KAAK,WAAW;EAChB,KAAK,WAAW;CAClB;AACF"}
|
|
@@ -2,11 +2,11 @@ import { PlayerControllerHost } from "../../player/controller.js";
|
|
|
2
2
|
import { HotkeyShortcutDetails } from "@videojs/core/dom";
|
|
3
3
|
import { ReactiveController } from "@videojs/element";
|
|
4
4
|
//#region src/ui/hotkey/aria-key-shortcuts-controller.d.ts
|
|
5
|
-
interface AriaKeyShortcutsControllerOptions {
|
|
5
|
+
export interface AriaKeyShortcutsControllerOptions {
|
|
6
6
|
value?: (() => number | undefined) | undefined;
|
|
7
7
|
}
|
|
8
8
|
/** Provides hotkey shortcut metadata for a given hotkey action name. */
|
|
9
|
-
declare class AriaKeyShortcutsController implements ReactiveController {
|
|
9
|
+
export declare class AriaKeyShortcutsController implements ReactiveController {
|
|
10
10
|
#private;
|
|
11
11
|
/**
|
|
12
12
|
* @param host - Host element whose nearest player container supplies hotkey registrations.
|
|
@@ -22,5 +22,4 @@ declare class AriaKeyShortcutsController implements ReactiveController {
|
|
|
22
22
|
hostDisconnected(): void;
|
|
23
23
|
}
|
|
24
24
|
//#endregion
|
|
25
|
-
export { AriaKeyShortcutsController, AriaKeyShortcutsControllerOptions };
|
|
26
25
|
//# sourceMappingURL=aria-key-shortcuts-controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aria-key-shortcuts-controller.js","names":[
|
|
1
|
+
{"version":3,"file":"aria-key-shortcuts-controller.js","names":[],"sources":["../../../../src/ui/hotkey/aria-key-shortcuts-controller.ts"],"sourcesContent":["import { getHotkeyCoordinator, type HotkeyShortcutDetails } 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/controller';\n\nexport interface AriaKeyShortcutsControllerOptions {\n value?: (() => number | undefined) | undefined;\n}\n\n/** Provides hotkey shortcut metadata for a given hotkey action name. */\nexport class AriaKeyShortcutsController implements ReactiveController {\n #host: PlayerControllerHost;\n #action: string;\n #getValue: (() => number | undefined) | undefined;\n #container: ContainerContextConsumer;\n #unsubscribe: (() => void) | null = null;\n\n /**\n * @param host - Host element whose nearest player container supplies hotkey registrations.\n * @param action - Registered hotkey action to look up.\n * @param options - Optional value resolver for value-dependent shortcuts.\n */\n constructor(host: PlayerControllerHost, action: string, options: AriaKeyShortcutsControllerOptions = {}) {\n this.#host = host;\n this.#action = action;\n this.#getValue = options.value;\n this.#container = new ContextConsumer(host, {\n context: containerContext,\n callback: (ctx) => this.#connect(ctx?.container),\n subscribe: true,\n });\n host.addController(this);\n }\n\n get value(): string | undefined {\n return this.aria;\n }\n\n get aria(): string | undefined {\n return this.details.aria;\n }\n\n get shortcut(): string | undefined {\n return this.details.shortcut;\n }\n\n get details(): HotkeyShortcutDetails {\n const container = this.#container.value?.container;\n if (!container) return {};\n\n return getHotkeyCoordinator(container).getShortcut(this.#action, this.#getValue?.());\n }\n\n hostConnected(): void {\n this.#connect(this.#container.value?.container);\n }\n\n hostDisconnected(): void {\n this.#disconnect();\n }\n\n #connect(container: HTMLElement | null | undefined): void {\n this.#disconnect();\n\n if (!container) return;\n\n const coordinator = getHotkeyCoordinator(container);\n const notify = () => {\n this.#host.requestUpdate();\n };\n\n this.#unsubscribe = coordinator.subscribeShortcutChanges(notify);\n notify();\n }\n\n #disconnect(): void {\n this.#unsubscribe?.();\n this.#unsubscribe = null;\n }\n}\n"],"mappings":";;;;;AAaA,IAAa,6BAAb,MAAsE;CACpE;CACA;CACA;CACA;CACA,eAAoC;;;;;;CAOpC,YAAY,MAA4B,QAAgB,UAA6C,CAAC,GAAG;EACvG,KAAK,QAAQ;EACb,KAAK,UAAU;EACf,KAAK,YAAY,QAAQ;EACzB,KAAK,aAAa,IAAI,gBAAgB,MAAM;GAC1C,SAAS;GACT,WAAW,QAAQ,KAAK,SAAS,KAAK,SAAS;GAC/C,WAAW;EACb,CAAC;EACD,KAAK,cAAc,IAAI;CACzB;CAEA,IAAI,QAA4B;EAC9B,OAAO,KAAK;CACd;CAEA,IAAI,OAA2B;EAC7B,OAAO,KAAK,QAAQ;CACtB;CAEA,IAAI,WAA+B;EACjC,OAAO,KAAK,QAAQ;CACtB;CAEA,IAAI,UAAiC;EACnC,MAAM,YAAY,KAAK,WAAW,OAAO;EACzC,IAAI,CAAC,WAAW,OAAO,CAAC;EAExB,OAAO,qBAAqB,SAAS,CAAC,CAAC,YAAY,KAAK,SAAS,KAAK,YAAY,CAAC;CACrF;CAEA,gBAAsB;EACpB,KAAK,SAAS,KAAK,WAAW,OAAO,SAAS;CAChD;CAEA,mBAAyB;EACvB,KAAK,YAAY;CACnB;CAEA,SAAS,WAAiD;EACxD,KAAK,YAAY;EAEjB,IAAI,CAAC,WAAW;EAEhB,MAAM,cAAc,qBAAqB,SAAS;EAClD,MAAM,eAAe;GACnB,KAAK,MAAM,cAAc;EAC3B;EAEA,KAAK,eAAe,YAAY,yBAAyB,MAAM;EAC/D,OAAO;CACT;CAEA,cAAoB;EAClB,KAAK,eAAe;EACpB,KAAK,eAAe;CACtB;AACF"}
|
|
@@ -2,7 +2,7 @@ import { UIElement } from "../ui-element.js";
|
|
|
2
2
|
import { HotkeyProps } from "@videojs/core";
|
|
3
3
|
import { PropertyDeclarationMap, PropertyValues } from "@videojs/element";
|
|
4
4
|
//#region src/ui/hotkey/element.d.ts
|
|
5
|
-
declare class HotkeyElement extends UIElement {
|
|
5
|
+
export declare class HotkeyElement extends UIElement {
|
|
6
6
|
#private;
|
|
7
7
|
static readonly tagName = "media-hotkey";
|
|
8
8
|
static properties: PropertyDeclarationMap;
|
|
@@ -16,5 +16,4 @@ declare class HotkeyElement extends UIElement {
|
|
|
16
16
|
protected update(changed: PropertyValues): void;
|
|
17
17
|
}
|
|
18
18
|
//#endregion
|
|
19
|
-
export { HotkeyElement };
|
|
20
19
|
//# sourceMappingURL=element.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","names":[
|
|
1
|
+
{"version":3,"file":"element.js","names":[],"sources":["../../../../src/ui/hotkey/element.ts"],"sourcesContent":["import type { HotkeyProps } from '@videojs/core';\nimport { createHotkey, 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/controller';\nimport { UIElement } from '../ui-element';\n\nexport class HotkeyElement extends UIElement {\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: HotkeyProps['keys'] = '';\n action: HotkeyProps['action'] | '' = '';\n value: HotkeyProps['value'] = undefined;\n disabled: NonNullable<HotkeyProps['disabled']> = false;\n target: NonNullable<HotkeyProps['target']> = '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 value,\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":";;;;;;AASA,IAAa,gBAAb,cAAmC,UAAU;;;EAWf,KAAA,OAAA;EACS,KAAA,SAAA;EACP,KAAA,QAAA,KAAA;EACmB,KAAA,WAAA;EACJ,KAAA,SAAA;EAE1B,KAAA,UAAA,IAAI,iBAAiB,MAAM,aAAa;EACrC,KAAA,aAAA,IAAI,gBAAgB,MAAM;GAC9C,SAAS;GACT,gBAAgB,KAAK,cAAc;GACnC,WAAW;EACb,CAAC;EAC+B,KAAA,WAAA;;;EAtBN,KAAA,UAAA;;;EAE2B,KAAA,aAAA;GACnD,MAAM,EAAE,MAAM,OAAO;GACrB,QAAQ,EAAE,MAAM,OAAO;GACvB,OAAO,EAAE,MAAM,OAAO;GACtB,UAAU,EAAE,MAAM,QAAQ;GAC1B,QAAQ,EAAE,MAAM,OAAO;EACzB;;CAQA;CACA;CAKA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,KAAK,MAAM,UAAU;EACrB,KAAK,UAAU;CACjB;CAEA,uBAAsC;EACpC,MAAM,qBAAqB;EAC3B,KAAK,YAAY;CACnB;CAEA,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EAGpB,IAAI,KAAK,aAAa;GACpB,KAAK,YAAY;GACjB,KAAK,UAAU;EACjB;CACF;CAEA,YAAkB;EAChB,MAAM,QAAQ,KAAK,QAAQ;EAC3B,MAAM,YAAY,KAAK,WAAW,OAAO;EACzC,IAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,UAAU,CAAC,SAAS,CAAC,WAAW;EAExD,MAAM,WAAW,oBAAoB,KAAK,MAAM;EAChD,IAAI,CAAC,UAAU;EAEf,MAAM,EAAE,OAAO,WAAW;EAE1B,KAAK,WAAW,aAAa,WAAW;GACtC,MAAM,KAAK;GACX;GACA;GACA,QAAQ,KAAK;GACb,UAAU,KAAK;GACf,YAAY,CAAC,qBAAqB,MAAM;GACxC,aAAa,QAAQ,QAAQ;IAC3B,SAAS;KAAE;KAAO;KAAK;IAAM,CAAC;GAChC;EACF,CAAC;CACH;CAEA,cAAoB;EAClB,KAAK,WAAW;EAChB,KAAK,WAAW;CAClB;AACF"}
|
|
@@ -10,23 +10,25 @@ import { State } from "@videojs/store";
|
|
|
10
10
|
import { ContextConsumer } from "@videojs/element/context";
|
|
11
11
|
//#region src/ui/input-indicator/element.d.ts
|
|
12
12
|
/** Shared imperative API for status / volume / seek indicator cores. */
|
|
13
|
-
interface InputIndicatorCoreApi<IndicatorState extends IndicatorLifecycleState> {
|
|
13
|
+
export interface InputIndicatorCoreApi<IndicatorState extends IndicatorLifecycleState> {
|
|
14
14
|
readonly state: State<IndicatorState>;
|
|
15
15
|
destroy(): void;
|
|
16
16
|
close(): void;
|
|
17
17
|
processEvent(event: InputActionEvent, snapshot: MediaSnapshot): boolean;
|
|
18
18
|
}
|
|
19
|
-
interface InputIndicatorOptions {
|
|
19
|
+
export interface InputIndicatorOptions {
|
|
20
20
|
replayOnUpdate?: boolean | undefined;
|
|
21
21
|
}
|
|
22
|
-
declare abstract class InputIndicatorElement<IndicatorState extends IndicatorLifecycleState> extends UIElement {
|
|
22
|
+
export declare abstract class InputIndicatorElement<IndicatorState extends IndicatorLifecycleState> extends UIElement {
|
|
23
23
|
#private;
|
|
24
24
|
protected abstract get core(): InputIndicatorCoreApi<IndicatorState>;
|
|
25
|
+
/** @internal */
|
|
25
26
|
protected abstract get transition(): TransitionApi;
|
|
26
27
|
protected abstract get liveIndicator(): LiveIndicator<IndicatorState>;
|
|
27
28
|
protected get options(): InputIndicatorOptions;
|
|
28
29
|
protected abstract syncCoreProps(): void;
|
|
29
30
|
protected readonly player: PlayerController<index_d_exports.AnyPlayerStore, index_d_exports.AnyPlayerStore>;
|
|
31
|
+
/** @internal */
|
|
30
32
|
protected readonly container: ContextConsumer<import("@lit/context").Context<typeof CONTAINER_CONTEXT_KEY, ContainerContextValue>, this>;
|
|
31
33
|
connectedCallback(): void;
|
|
32
34
|
disconnectedCallback(): void;
|
|
@@ -35,5 +37,4 @@ declare abstract class InputIndicatorElement<IndicatorState extends IndicatorLif
|
|
|
35
37
|
protected update(changed: PropertyValues): void;
|
|
36
38
|
}
|
|
37
39
|
//#endregion
|
|
38
|
-
export { InputIndicatorCoreApi, InputIndicatorElement, InputIndicatorOptions };
|
|
39
40
|
//# sourceMappingURL=element.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","names":[
|
|
1
|
+
{"version":3,"file":"element.js","names":[],"sources":["../../../../src/ui/input-indicator/element.ts"],"sourcesContent":["import {\n getRenderedIndicatorState,\n type IndicatorLifecycleState,\n type IndicatorVisibilityHandle,\n type InputActionEvent,\n isIndicatorPresent,\n type MediaSnapshot,\n} from '@videojs/core';\nimport {\n getIndicatorVisibilityCoordinator,\n getMediaSnapshot,\n subscribeToInputActions,\n type TransitionApi,\n} from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\nimport type { State as StoreState } from '@videojs/store';\n\nimport { containerContext, playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { UIElement } from '../ui-element';\nimport type { LiveIndicator } from './live-indicator';\n\n/** Shared imperative API for status / volume / seek indicator cores. */\nexport interface InputIndicatorCoreApi<IndicatorState extends IndicatorLifecycleState> {\n readonly state: StoreState<IndicatorState>;\n destroy(): void;\n close(): void;\n processEvent(event: InputActionEvent, snapshot: MediaSnapshot): boolean;\n}\n\nexport interface InputIndicatorOptions {\n replayOnUpdate?: boolean | undefined;\n}\n\nexport abstract class InputIndicatorElement<IndicatorState extends IndicatorLifecycleState> extends UIElement {\n protected abstract get core(): InputIndicatorCoreApi<IndicatorState>;\n /** @internal */\n protected abstract get transition(): TransitionApi;\n protected abstract get liveIndicator(): LiveIndicator<IndicatorState>;\n protected get options(): InputIndicatorOptions {\n return {};\n }\n\n protected abstract syncCoreProps(): void;\n\n protected readonly player = new PlayerController(this, playerContext);\n /** @internal */\n protected readonly container = new ContextConsumer(this, {\n context: containerContext,\n callback: () => this.#reconnect(),\n subscribe: true,\n });\n\n #disconnect: AbortController | null = null;\n #inputActionUnsubscribe: (() => void) | null = null;\n #visibilityUnsubscribe: (() => void) | null = null;\n #visibilityHandle: IndicatorVisibilityHandle | null = null;\n #lastGeneration = 0;\n #snapshot: IndicatorState | null = null;\n\n #getVisibilityHandle(): IndicatorVisibilityHandle {\n return (this.#visibilityHandle ??= { close: () => this.core.close() });\n }\n\n #payloadSnapshot(): IndicatorState {\n return this.#snapshot ?? this.core.state.current;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.destroyed) return;\n\n this.#snapshot = this.core.state.current;\n\n this.#disconnect = new AbortController();\n this.core.state.subscribe(() => this.requestUpdate(), { signal: this.#disconnect.signal });\n this.transition.state.subscribe(() => this.requestUpdate(), { signal: this.#disconnect.signal });\n this.hidden = true;\n this.#reconnect();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#inputActionUnsubscribe?.();\n this.#visibilityUnsubscribe?.();\n this.#inputActionUnsubscribe = null;\n this.#visibilityUnsubscribe = null;\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n override destroyCallback(): void {\n this.#inputActionUnsubscribe?.();\n this.#visibilityUnsubscribe?.();\n this.core.destroy();\n this.transition.destroy();\n this.liveIndicator.remove();\n super.destroyCallback();\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.syncCoreProps();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n this.#syncTransition();\n\n const currentState = this.core.state.current;\n const transitionState = this.transition.state.current;\n const present = isIndicatorPresent(currentState, transitionState);\n\n if (!present) {\n this.liveIndicator.remove();\n return;\n }\n\n const state = getRenderedIndicatorState(currentState, this.#payloadSnapshot(), transitionState);\n\n this.liveIndicator.render(state);\n }\n\n #syncTransition(): void {\n const currentState = this.core.state.current;\n\n if (currentState.open) {\n this.#snapshot = currentState;\n\n if (this.#lastGeneration !== currentState.generation) {\n this.#lastGeneration = currentState.generation;\n const transitionState = this.transition.state.current;\n\n if (!transitionState.active || this.options.replayOnUpdate !== false) {\n void this.transition.open(this.liveIndicator.element);\n } else if (transitionState.status === 'ending') {\n this.transition.cancel();\n }\n }\n\n return;\n }\n\n const { active, status } = this.transition.state.current;\n\n if (active && status !== 'ending') {\n void this.transition.close(this.liveIndicator.element);\n }\n }\n\n #reconnect(): void {\n // Context can resolve before this field assignment completes.\n if (!this.container) return;\n\n this.#inputActionUnsubscribe?.();\n this.#visibilityUnsubscribe?.();\n this.#inputActionUnsubscribe = null;\n this.#visibilityUnsubscribe = null;\n\n const container = this.container.value?.container;\n if (!container) return;\n\n const visibility = getIndicatorVisibilityCoordinator(container);\n const visibilityHandle = this.#getVisibilityHandle();\n\n this.#visibilityUnsubscribe = visibility.register(visibilityHandle);\n\n this.#inputActionUnsubscribe = subscribeToInputActions(container, (event) => {\n if (this.core.processEvent(event, getMediaSnapshot(this.player.value))) {\n visibility.show(visibilityHandle);\n }\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { StateAttrMap } from "@videojs/core";
|
|
2
2
|
//#region src/ui/input-indicator/live-indicator.d.ts
|
|
3
|
-
interface LiveIndicatorOptions<State extends object> {
|
|
3
|
+
export interface LiveIndicatorOptions<State extends object> {
|
|
4
4
|
host: HTMLElement;
|
|
5
5
|
dataAttrs: StateAttrMap<State>;
|
|
6
6
|
render: (element: HTMLElement, state: State) => void;
|
|
7
7
|
}
|
|
8
|
-
declare class LiveIndicator<State extends object> {
|
|
8
|
+
export declare class LiveIndicator<State extends object> {
|
|
9
9
|
#private;
|
|
10
10
|
constructor(options: LiveIndicatorOptions<State>);
|
|
11
11
|
get element(): HTMLElement;
|
|
@@ -13,5 +13,4 @@ declare class LiveIndicator<State extends object> {
|
|
|
13
13
|
remove(): void;
|
|
14
14
|
}
|
|
15
15
|
//#endregion
|
|
16
|
-
export { LiveIndicator, LiveIndicatorOptions };
|
|
17
16
|
//# sourceMappingURL=live-indicator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-indicator.js","names":[
|
|
1
|
+
{"version":3,"file":"live-indicator.js","names":[],"sources":["../../../../src/ui/input-indicator/live-indicator.ts"],"sourcesContent":["import type { StateAttrMap } from '@videojs/core';\nimport { applyStateDataAttrs } from '@videojs/core/dom';\n\nexport interface LiveIndicatorOptions<State extends object> {\n host: HTMLElement;\n dataAttrs: StateAttrMap<State>;\n render: (element: HTMLElement, state: State) => void;\n}\n\nexport class LiveIndicator<State extends object> {\n readonly #host: HTMLElement;\n readonly #dataAttrs: StateAttrMap<State>;\n readonly #render: (element: HTMLElement, state: State) => void;\n\n constructor(options: LiveIndicatorOptions<State>) {\n this.#host = options.host;\n this.#dataAttrs = options.dataAttrs;\n this.#render = options.render;\n }\n\n get element(): HTMLElement {\n return this.#host;\n }\n\n render(state: State): HTMLElement {\n this.#host.hidden = false;\n applyStateDataAttrs(this.#host, state, this.#dataAttrs);\n this.#render(this.#host, state);\n\n return this.#host;\n }\n\n remove(): void {\n this.#host.hidden = true;\n\n for (const key in this.#dataAttrs) {\n const name = this.#dataAttrs[key];\n\n if (name) this.#host.removeAttribute(name);\n }\n }\n}\n"],"mappings":";;AASA,IAAa,gBAAb,MAAiD;CAC/C;CACA;CACA;CAEA,YAAY,SAAsC;EAChD,KAAK,QAAQ,QAAQ;EACrB,KAAK,aAAa,QAAQ;EAC1B,KAAK,UAAU,QAAQ;CACzB;CAEA,IAAI,UAAuB;EACzB,OAAO,KAAK;CACd;CAEA,OAAO,OAA2B;EAChC,KAAK,MAAM,SAAS;EACpB,oBAAoB,KAAK,OAAO,OAAO,KAAK,UAAU;EACtD,KAAK,QAAQ,KAAK,OAAO,KAAK;EAE9B,OAAO,KAAK;CACd;CAEA,SAAe;EACb,KAAK,MAAM,SAAS;EAEpB,KAAK,MAAM,OAAO,KAAK,YAAY;GACjC,MAAM,OAAO,KAAK,WAAW;GAE7B,IAAI,MAAM,KAAK,MAAM,gBAAgB,IAAI;EAC3C;CACF;AACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { UIElement } from "../ui-element.js";
|
|
2
2
|
import { PlayerController } from "../../player/controller.js";
|
|
3
3
|
import { index_d_exports } from "../../index.js";
|
|
4
|
-
import { LiveButtonCore } from "@videojs/core";
|
|
4
|
+
import { LiveButtonCore, LiveButtonState } from "@videojs/core";
|
|
5
5
|
import { PropertyDeclarationMap, PropertyValues } from "@videojs/element";
|
|
6
6
|
import { State } from "@videojs/store";
|
|
7
7
|
import { Text } from "@videojs/core/i18n";
|
|
@@ -13,12 +13,13 @@ import { Text } from "@videojs/core/i18n";
|
|
|
13
13
|
* Doesn't extend `MediaButtonElement` because that base couples a button to a single feature selector; the LiveButton
|
|
14
14
|
* needs three.
|
|
15
15
|
*/
|
|
16
|
-
declare class LiveButtonElement extends UIElement {
|
|
16
|
+
export declare class LiveButtonElement extends UIElement {
|
|
17
17
|
#private;
|
|
18
18
|
static readonly tagName = "media-live-button";
|
|
19
19
|
static properties: PropertyDeclarationMap;
|
|
20
20
|
disabled: boolean;
|
|
21
21
|
label: Text | string;
|
|
22
|
+
/** @internal */
|
|
22
23
|
protected readonly core: LiveButtonCore;
|
|
23
24
|
protected readonly live: PlayerController<index_d_exports.AnyPlayerStore, {
|
|
24
25
|
liveEdgeStart: number;
|
|
@@ -34,7 +35,7 @@ declare class LiveButtonElement extends UIElement {
|
|
|
34
35
|
buffered: [number, number][];
|
|
35
36
|
seekable: [number, number][];
|
|
36
37
|
} | undefined>;
|
|
37
|
-
get $state(): State<
|
|
38
|
+
get $state(): State<LiveButtonState>;
|
|
38
39
|
connectedCallback(): void;
|
|
39
40
|
disconnectedCallback(): void;
|
|
40
41
|
/** Returns the button's current label derived from media state. */
|
|
@@ -45,5 +46,4 @@ declare class LiveButtonElement extends UIElement {
|
|
|
45
46
|
protected update(changed: PropertyValues): void;
|
|
46
47
|
}
|
|
47
48
|
//#endregion
|
|
48
|
-
export { LiveButtonElement };
|
|
49
49
|
//# sourceMappingURL=element.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","names":[
|
|
1
|
+
{"version":3,"file":"element.js","names":[],"sources":["../../../../src/ui/live-button/element.ts"],"sourcesContent":["import { LiveButtonCore, LiveButtonDataAttrs, type LiveButtonMediaState, type LiveButtonState } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createButton,\n logMissingFeature,\n selectBuffer,\n selectLive,\n selectTime,\n} from '@videojs/core/dom';\nimport { resolveText, type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport type { State } from '@videojs/store';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { UIElement } from '../ui-element';\n\n/**\n * `<media-live-button>` — selects from `live`, `time`, and `buffer` features and composes them into the\n * `LiveButtonMediaState` consumed by `LiveButtonCore`.\n *\n * Doesn't extend `MediaButtonElement` because that base couples a button to a single feature selector; the LiveButton\n * needs three.\n */\nexport class LiveButtonElement extends UIElement {\n static readonly tagName = 'media-live-button';\n\n static override properties: PropertyDeclarationMap = {\n label: { type: String },\n disabled: { type: Boolean },\n };\n\n disabled = false;\n label: Text | string = '';\n\n /** @internal */\n protected readonly core = new LiveButtonCore();\n\n protected readonly live = new PlayerController(this, playerContext, selectLive);\n protected readonly time = new PlayerController(this, playerContext, selectTime);\n protected readonly buffer = new PlayerController(this, playerContext, selectBuffer);\n readonly #i18n = new I18nController(this, i18nContext);\n\n get $state(): State<LiveButtonState> {\n return this.core.state;\n }\n\n #defaultContent = false;\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.destroyed) return;\n\n this.#defaultContent ||= !this.textContent?.trim();\n\n if (this.#defaultContent) {\n this.textContent = translateText(LiveButtonCore.defaultText, this.#i18n.value);\n }\n\n this.#disconnect = new AbortController();\n\n const buttonProps = createButton({\n onActivate: () => {\n const media = this.#getMedia();\n\n if (media) this.core.seekToLive(media);\n },\n isDisabled: () => this.disabled || !this.#getMedia(),\n });\n\n applyElementProps(this, buttonProps, { signal: this.#disconnect.signal });\n\n if (__DEV__ && !this.#getMedia()) {\n logMissingFeature(this.localName, this.live.displayName ?? 'live');\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 ? resolveText(this.core.state.current.label) : undefined;\n }\n\n /** Resolved label for tooltips and other display surfaces. */\n getResolvedLabel(): string | undefined {\n const media = this.#getMedia();\n if (!media) return undefined;\n\n const state = this.core.getState();\n\n return translateText(this.core.getLabel(state), this.#i18n.value);\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 if (this.#defaultContent) {\n this.textContent = translateText(LiveButtonCore.defaultText, this.#i18n.value);\n }\n\n const media = this.#getMedia();\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n const attrs = this.core.getAttrs(state);\n\n applyElementProps(this, {\n ...attrs,\n 'aria-label': translateText(attrs['aria-label'], this.#i18n.value),\n });\n applyStateDataAttrs(this, state, LiveButtonDataAttrs);\n }\n\n /**\n * Compose the LiveButton media state from the three feature slices. Returns `null` when any are missing so the button\n * stays disabled until all three features are registered on the player.\n */\n #getMedia(): LiveButtonMediaState | null {\n const live = this.live.value;\n const time = this.time.value;\n const buffer = this.buffer.value;\n if (!live || !time || !buffer) return null;\n\n return {\n currentTime: time.currentTime,\n seek: time.seek,\n seekable: buffer.seekable,\n liveEdgeStart: live.liveEdgeStart,\n targetLiveWindow: live.targetLiveWindow,\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA2BA,IAAa,oBAAb,cAAuC,UAAU;;;EAQpC,KAAA,WAAA;EACY,KAAA,QAAA;EAGG,KAAA,OAAA,IAAI,eAAe;EAEnB,KAAA,OAAA,IAAI,iBAAiB,MAAM,eAAe,UAAU;EACpD,KAAA,OAAA,IAAI,iBAAiB,MAAM,eAAe,UAAU;EAClD,KAAA,SAAA,IAAI,iBAAiB,MAAM,eAAe,YAAY;EACjE,KAAA,QAAA,IAAI,eAAe,MAAM,WAAW;EAMnC,KAAA,kBAAA;EACoB,KAAA,cAAA;;;EAvBZ,KAAA,UAAA;;;EAE2B,KAAA,aAAA;GACnD,OAAO,EAAE,MAAM,OAAO;GACtB,UAAU,EAAE,MAAM,QAAQ;EAC5B;;CAWA;CAEA,IAAI,SAAiC;EACnC,OAAO,KAAK,KAAK;CACnB;CAEA;CACA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EAExB,IAAI,KAAK,WAAW;EAEpB,KAAK,oBAAoB,CAAC,KAAK,aAAa,KAAK;EAEjD,IAAI,KAAK,iBACP,KAAK,cAAc,cAAc,eAAe,aAAa,KAAK,MAAM,KAAK;EAG/E,KAAK,cAAc,IAAI,gBAAgB;EAEvC,MAAM,cAAc,aAAa;GAC/B,kBAAkB;IAChB,MAAM,QAAQ,KAAK,UAAU;IAE7B,IAAI,OAAO,KAAK,KAAK,WAAW,KAAK;GACvC;GACA,kBAAkB,KAAK,YAAY,CAAC,KAAK,UAAU;EACrD,CAAC;EAED,kBAAkB,MAAM,aAAa,EAAE,QAAQ,KAAK,YAAY,OAAO,CAAC;EAExE,IAAe,CAAC,KAAK,UAAU,GAC7B,kBAAkB,KAAK,WAAW,KAAK,KAAK,eAAe,MAAM;CAErE;CAEA,uBAAsC;EACpC,MAAM,qBAAqB;EAC3B,KAAK,aAAa,MAAM;EACxB,KAAK,cAAc;CACrB;;CAGA,WAA+B;EAC7B,OAAO,KAAK,KAAK,MAAM,QAAQ,QAAQ,YAAY,KAAK,KAAK,MAAM,QAAQ,KAAK,IAAI,KAAA;CACtF;;CAGA,mBAAuC;EAErC,IAAI,CADU,KAAK,UACV,GAAG,OAAO,KAAA;EAEnB,MAAM,QAAQ,KAAK,KAAK,SAAS;EAEjC,OAAO,cAAc,KAAK,KAAK,SAAS,KAAK,GAAG,KAAK,MAAM,KAAK;CAClE;CAEA,WAA8B,SAA+B;EAC3D,MAAM,WAAW,OAAO;EACxB,KAAK,KAAK,SAAS,IAAI;CACzB;CAEA,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EAEpB,IAAI,KAAK,iBACP,KAAK,cAAc,cAAc,eAAe,aAAa,KAAK,MAAM,KAAK;EAG/E,MAAM,QAAQ,KAAK,UAAU;EAC7B,IAAI,CAAC,OAAO;EAEZ,KAAK,KAAK,SAAS,KAAK;EACxB,MAAM,QAAQ,KAAK,KAAK,SAAS;EACjC,MAAM,QAAQ,KAAK,KAAK,SAAS,KAAK;EAEtC,kBAAkB,MAAM;GACtB,GAAG;GACH,cAAc,cAAc,MAAM,eAAe,KAAK,MAAM,KAAK;EACnE,CAAC;EACD,oBAAoB,MAAM,OAAO,mBAAmB;CACtD;;;;;CAMA,YAAyC;EACvC,MAAM,OAAO,KAAK,KAAK;EACvB,MAAM,OAAO,KAAK,KAAK;EACvB,MAAM,SAAS,KAAK,OAAO;EAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,OAAO;EAEtC,OAAO;GACL,aAAa,KAAK;GAClB,MAAM,KAAK;GACX,UAAU,OAAO;GACjB,eAAe,KAAK;GACpB,kBAAkB,KAAK;EACzB;CACF;AACF"}
|
|
@@ -1,21 +1,31 @@
|
|
|
1
1
|
import { UIElement } from "./ui-element.js";
|
|
2
2
|
import { PlayerController } from "../player/controller.js";
|
|
3
|
-
import { ButtonState,
|
|
3
|
+
import { ButtonState, MediaButtonComponent, StateAttrMap } from "@videojs/core";
|
|
4
4
|
import { ButtonActivationSource, UIEvent } from "@videojs/core/dom";
|
|
5
5
|
import { PropertyDeclarationMap, PropertyValues } from "@videojs/element";
|
|
6
6
|
import { State } from "@videojs/store";
|
|
7
7
|
import { Text } from "@videojs/core/i18n";
|
|
8
8
|
//#region src/ui/media-button-element.d.ts
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
type LabelParams = Record<string, string | number>;
|
|
10
|
+
/** The core a media button element drives: it reads `MediaState` and computes `ComponentState`. */
|
|
11
|
+
type MediaButtonCore<ComponentState extends ButtonState, MediaState> = MediaButtonComponent<object, ComponentState> & {
|
|
12
|
+
setMedia(media: MediaState): void;
|
|
13
|
+
getLabelParams?: (state: ComponentState) => LabelParams | undefined;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Abstract base for HTML custom elements that render a media-control button. `ComponentState` is the state the button
|
|
17
|
+
* reflects to data attributes, and `MediaState` is the player state it reads and acts on. Pass both: a subclass that
|
|
18
|
+
* omits them still compiles, but types `activate(state)` and `mediaState` as the `ButtonState` and `object` defaults.
|
|
19
|
+
*/
|
|
20
|
+
export declare abstract class MediaButtonElement<ComponentState extends ButtonState = ButtonState, MediaState extends object = object> extends UIElement {
|
|
11
21
|
#private;
|
|
12
22
|
static properties: PropertyDeclarationMap;
|
|
13
23
|
disabled: boolean;
|
|
14
24
|
label: Text | string;
|
|
15
|
-
protected abstract readonly core:
|
|
16
|
-
protected abstract readonly stateAttrMap: StateAttrMap<
|
|
17
|
-
protected abstract readonly mediaState: PlayerController<any,
|
|
18
|
-
protected abstract activate(state:
|
|
25
|
+
protected abstract readonly core: MediaButtonCore<ComponentState, MediaState>;
|
|
26
|
+
protected abstract readonly stateAttrMap: StateAttrMap<ComponentState>;
|
|
27
|
+
protected abstract readonly mediaState: PlayerController<any, MediaState | undefined>;
|
|
28
|
+
protected abstract activate(state: MediaState, event: UIEvent, source: ButtonActivationSource): void | Promise<void>;
|
|
19
29
|
protected getIsButtonDisabled(): boolean;
|
|
20
30
|
protected handleActivate(event: UIEvent, source: ButtonActivationSource): void;
|
|
21
31
|
/** Override to set the hotkey action name for `aria-keyshortcuts`. */
|
|
@@ -34,5 +44,4 @@ declare abstract class MediaButtonElement<Core extends MediaButtonComponent> ext
|
|
|
34
44
|
protected update(changed: PropertyValues): void;
|
|
35
45
|
}
|
|
36
46
|
//#endregion
|
|
37
|
-
export { MediaButtonElement };
|
|
38
47
|
//# sourceMappingURL=media-button-element.d.ts.map
|
|
@@ -6,10 +6,11 @@ import { HOTKEY_SHORTCUT_CHANGE_EVENT, applyElementProps, applyStateDataAttrs, c
|
|
|
6
6
|
import { isText, resolveText, translateText } from "@videojs/core/i18n";
|
|
7
7
|
import { isBoolean, isObject } from "@videojs/utils/predicate";
|
|
8
8
|
//#region src/ui/media-button-element.ts
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Abstract base for HTML custom elements that render a media-control button. `ComponentState` is the state the button
|
|
11
|
+
* reflects to data attributes, and `MediaState` is the player state it reads and acts on. Pass both: a subclass that
|
|
12
|
+
* omits them still compiles, but types `activate(state)` and `mediaState` as the `ButtonState` and `object` defaults.
|
|
13
|
+
*/
|
|
13
14
|
var MediaButtonElement = class extends UIElement {
|
|
14
15
|
constructor(..._args) {
|
|
15
16
|
super(..._args);
|
|
@@ -73,7 +74,7 @@ var MediaButtonElement = class extends UIElement {
|
|
|
73
74
|
if (!media) return void 0;
|
|
74
75
|
this.core.setMedia(media);
|
|
75
76
|
const state = this.core.getState();
|
|
76
|
-
return translateText(this.core.getLabel(state), this.#i18n.value,
|
|
77
|
+
return translateText(this.core.getLabel(state), this.#i18n.value, this.core.getLabelParams?.(state));
|
|
77
78
|
}
|
|
78
79
|
willUpdate(changed) {
|
|
79
80
|
super.willUpdate(changed);
|
|
@@ -87,7 +88,7 @@ var MediaButtonElement = class extends UIElement {
|
|
|
87
88
|
this.core.setMedia(media);
|
|
88
89
|
const state = this.core.getState();
|
|
89
90
|
const attrs = this.core.getAttrs?.(state) ?? {};
|
|
90
|
-
if (isText(attrs["aria-label"])) attrs["aria-label"] = translateText(attrs["aria-label"], this.#i18n.value,
|
|
91
|
+
if (isText(attrs["aria-label"])) attrs["aria-label"] = translateText(attrs["aria-label"], this.#i18n.value, this.core.getLabelParams?.(state));
|
|
91
92
|
applyElementProps(this, {
|
|
92
93
|
...attrs,
|
|
93
94
|
"aria-keyshortcuts": this.#hotkeyRegistry?.aria,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-button-element.js","names":[
|
|
1
|
+
{"version":3,"file":"media-button-element.js","names":[],"sources":["../../../src/ui/media-button-element.ts"],"sourcesContent":["import type { ButtonState, MediaButtonComponent, StateAttrMap } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n type ButtonActivationSource,\n createButton,\n HOTKEY_SHORTCUT_CHANGE_EVENT,\n logMissingFeature,\n type UIEvent,\n} from '@videojs/core/dom';\nimport { isText, resolveText, type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport type { State } from '@videojs/store';\nimport { isBoolean, isObject } from '@videojs/utils/predicate';\n\nimport { i18nContext } from '../i18n/context';\nimport { I18nController } from '../i18n/controller';\nimport type { PlayerController } from '../player/controller';\nimport { AriaKeyShortcutsController } from './hotkey/aria-key-shortcuts-controller';\nimport { UIElement } from './ui-element';\n\ntype LabelParams = Record<string, string | number>;\n\n/** The core a media button element drives: it reads `MediaState` and computes `ComponentState`. */\ntype MediaButtonCore<ComponentState extends ButtonState, MediaState> = MediaButtonComponent<object, ComponentState> & {\n setMedia(media: MediaState): void;\n getLabelParams?: (state: ComponentState) => LabelParams | undefined;\n};\n\n/**\n * Abstract base for HTML custom elements that render a media-control button. `ComponentState` is the state the button\n * reflects to data attributes, and `MediaState` is the player state it reads and acts on. Pass both: a subclass that\n * omits them still compiles, but types `activate(state)` and `mediaState` as the `ButtonState` and `object` defaults.\n */\nexport abstract class MediaButtonElement<\n ComponentState extends ButtonState = ButtonState,\n MediaState extends object = object,\n> extends UIElement {\n static override properties: PropertyDeclarationMap = {\n label: { type: String },\n disabled: { type: Boolean },\n };\n\n disabled = false;\n label: Text | string = '';\n\n protected abstract readonly core: MediaButtonCore<ComponentState, MediaState>;\n protected abstract readonly stateAttrMap: StateAttrMap<ComponentState>;\n protected abstract readonly mediaState: PlayerController<any, MediaState | undefined>;\n\n protected abstract activate(state: MediaState, event: UIEvent, source: ButtonActivationSource): void | Promise<void>;\n\n protected getIsButtonDisabled(): boolean {\n return this.disabled || !this.mediaState.value;\n }\n\n protected handleActivate(event: UIEvent, source: ButtonActivationSource): void {\n // `createButton` invokes `onActivate` synchronously from click/keyup\n // handlers, so any rejection here would be unhandled. Log in dev for\n // visibility but absorb the failure at this UI boundary.\n Promise.resolve(this.activate(this.mediaState.value!, event, source)).catch((error) => {\n if (__DEV__) console.error(`[${this.localName}]`, error);\n });\n }\n\n /** Override to set the hotkey action name for `aria-keyshortcuts`. */\n protected readonly hotkeyAction: string | undefined = undefined;\n\n /** Override to match hotkeys that use action values, such as seek steps. */\n protected get hotkeyValue(): number | undefined {\n return undefined;\n }\n\n get $state(): State<ButtonState> {\n return this.core.state;\n }\n\n #disconnect: AbortController | null = null;\n #hotkeyRegistry: AriaKeyShortcutsController | null = null;\n #lastHotkeyShortcut: string | undefined;\n readonly #i18n = new I18nController(this, i18nContext);\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.destroyed) return;\n\n if (this.hotkeyAction && !this.#hotkeyRegistry) {\n this.#hotkeyRegistry = new AriaKeyShortcutsController(this, this.hotkeyAction, {\n value: () => this.hotkeyValue,\n });\n }\n\n this.#disconnect = new AbortController();\n\n const buttonProps = createButton({\n onActivate: (event, source) => this.handleActivate(event, source),\n isDisabled: () => this.getIsButtonDisabled(),\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 ? resolveText(this.core.state.current.label) : undefined;\n }\n\n getShortcut(): string | undefined {\n return this.#hotkeyRegistry?.shortcut;\n }\n\n /** Resolved label for tooltips and other display surfaces. */\n getResolvedLabel(): string | undefined {\n const media = this.mediaState.value;\n if (!media) return undefined;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n\n return translateText(this.core.getLabel(state), this.#i18n.value, this.core.getLabelParams?.(state));\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 this.#syncHotkeyShortcut();\n\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n const attrs = (this.core.getAttrs?.(state) ?? {}) as Record<string, unknown>;\n\n if (isText(attrs['aria-label'])) {\n attrs['aria-label'] = translateText(attrs['aria-label'], this.#i18n.value, this.core.getLabelParams?.(state));\n }\n\n applyElementProps(this, {\n ...attrs,\n 'aria-keyshortcuts': this.#hotkeyRegistry?.aria,\n // A button whose core reports itself hidden takes the real attribute, not\n // just the data one: `data-hidden` is a styling hook a skin may or may not\n // act on, where `hidden` removes the control the way the React components\n // do by rendering nothing.\n ...(isHideable(state) && { hidden: state.hidden ? '' : undefined }),\n });\n applyStateDataAttrs(this, state, this.stateAttrMap);\n }\n\n #syncHotkeyShortcut(): void {\n const shortcut = this.getShortcut();\n if (shortcut === this.#lastHotkeyShortcut) return;\n\n this.#lastHotkeyShortcut = shortcut;\n this.dispatchEvent(new CustomEvent(HOTKEY_SHORTCUT_CHANGE_EVENT));\n }\n}\n\n/** Whether a button's core reports whether it should be shown at all. */\nfunction isHideable(state: unknown): state is { hidden: boolean } {\n return isObject(state) && isBoolean((state as { hidden?: unknown }).hidden);\n}\n"],"mappings":"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"}
|
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
import { UIElement } from "./ui-element.js";
|
|
2
2
|
import { PlayerController } from "../player/controller.js";
|
|
3
|
-
import {
|
|
3
|
+
import { MediaUIComponent, StateAttrMap } from "@videojs/core";
|
|
4
4
|
import { PropertyValues } from "@videojs/element";
|
|
5
5
|
//#region src/ui/media-ui-element.d.ts
|
|
6
|
-
/**
|
|
7
|
-
|
|
6
|
+
/** The core a media UI element drives: it reads `MediaState` and computes `ComponentState`. */
|
|
7
|
+
type MediaUICore<ComponentState extends object, MediaState> = MediaUIComponent<object, ComponentState> & {
|
|
8
|
+
setMedia(media: MediaState): void;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Abstract base for HTML custom elements that display media state with data attributes. `ComponentState` is the state
|
|
12
|
+
* the element reflects to data attributes, and `MediaState` is the player state it reads.
|
|
13
|
+
*
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
export declare abstract class MediaUIElement<ComponentState extends object = object, MediaState extends object = object> extends UIElement {
|
|
8
17
|
#private;
|
|
9
|
-
protected abstract readonly core:
|
|
10
|
-
protected abstract readonly stateAttrMap: StateAttrMap<
|
|
11
|
-
protected abstract readonly mediaState: PlayerController<any,
|
|
18
|
+
protected abstract readonly core: MediaUICore<ComponentState, MediaState>;
|
|
19
|
+
protected abstract readonly stateAttrMap: StateAttrMap<ComponentState>;
|
|
20
|
+
protected abstract readonly mediaState: PlayerController<any, MediaState | undefined>;
|
|
12
21
|
connectedCallback(): void;
|
|
13
22
|
protected update(changed: PropertyValues): void;
|
|
14
23
|
}
|
|
15
24
|
//#endregion
|
|
16
|
-
export { MediaUIElement };
|
|
17
25
|
//# sourceMappingURL=media-ui-element.d.ts.map
|
|
@@ -5,7 +5,12 @@ import { applyElementProps, applyStateDataAttrs, logMissingFeature } from "@vide
|
|
|
5
5
|
import { isText, translateText } from "@videojs/core/i18n";
|
|
6
6
|
import { isFunction } from "@videojs/utils/predicate";
|
|
7
7
|
//#region src/ui/media-ui-element.ts
|
|
8
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* Abstract base for HTML custom elements that display media state with data attributes. `ComponentState` is the state
|
|
10
|
+
* the element reflects to data attributes, and `MediaState` is the player state it reads.
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
9
14
|
var MediaUIElement = class extends UIElement {
|
|
10
15
|
#i18n = new I18nController(this, i18nContext);
|
|
11
16
|
connectedCallback() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-ui-element.js","names":[
|
|
1
|
+
{"version":3,"file":"media-ui-element.js","names":[],"sources":["../../../src/ui/media-ui-element.ts"],"sourcesContent":["import type { MediaUIComponent, StateAttrMap } from '@videojs/core';\nimport { applyElementProps, applyStateDataAttrs, logMissingFeature } from '@videojs/core/dom';\nimport { isText, translateText } from '@videojs/core/i18n';\nimport type { PropertyValues } from '@videojs/element';\nimport { isFunction } from '@videojs/utils/predicate';\n\nimport { i18nContext } from '../i18n/context';\nimport { I18nController } from '../i18n/controller';\nimport type { PlayerController } from '../player/controller';\nimport { UIElement } from './ui-element';\n\n/** The core a media UI element drives: it reads `MediaState` and computes `ComponentState`. */\ntype MediaUICore<ComponentState extends object, MediaState> = MediaUIComponent<object, ComponentState> & {\n setMedia(media: MediaState): void;\n};\n\n/**\n * Abstract base for HTML custom elements that display media state with data attributes. `ComponentState` is the state\n * the element reflects to data attributes, and `MediaState` is the player state it reads.\n *\n * @internal\n */\nexport abstract class MediaUIElement<\n ComponentState extends object = object,\n MediaState extends object = object,\n> extends UIElement {\n readonly #i18n = new I18nController(this, i18nContext);\n\n protected abstract readonly core: MediaUICore<ComponentState, MediaState>;\n protected abstract readonly stateAttrMap: StateAttrMap<ComponentState>;\n protected abstract readonly mediaState: PlayerController<any, MediaState | 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 if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n\n if (isFunction(this.core.getAttrs)) {\n const attrs = this.core.getAttrs(state) as Record<string, unknown>;\n\n if (isText(attrs['aria-label'])) {\n attrs['aria-label'] = translateText(attrs['aria-label'], this.#i18n.value);\n }\n\n applyElementProps(this, attrs);\n }\n\n applyStateDataAttrs(this, state, this.stateAttrMap);\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAsBA,IAAsB,iBAAtB,cAGU,UAAU;CAClB,QAAiB,IAAI,eAAe,MAAM,WAAW;CAMrD,oBAAmC;EACjC,MAAM,kBAAkB;EAExB,IAAe,CAAC,KAAK,WAAW,SAAS,KAAK,WAAW,aACvD,kBAAkB,KAAK,WAAW,KAAK,WAAW,WAAW;CAEjE;CAEA,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EAEpB,MAAM,QAAQ,KAAK,WAAW;EAC9B,IAAI,CAAC,OAAO;EAEZ,KAAK,KAAK,SAAS,KAAK;EACxB,MAAM,QAAQ,KAAK,KAAK,SAAS;EAEjC,IAAI,WAAW,KAAK,KAAK,QAAQ,GAAG;GAClC,MAAM,QAAQ,KAAK,KAAK,SAAS,KAAK;GAEtC,IAAI,OAAO,MAAM,aAAa,GAC5B,MAAM,gBAAgB,cAAc,MAAM,eAAe,KAAK,MAAM,KAAK;GAG3E,kBAAkB,MAAM,KAAK;EAC/B;EAEA,oBAAoB,MAAM,OAAO,KAAK,YAAY;CACpD;AACF"}
|