@videojs/html 10.0.0-rc.2 → 10.0.0-rc.4
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/README.md +12 -2
- package/dist/default/define/audio/minimal-skin.css +663 -414
- package/dist/default/define/audio/minimal-skin.js +0 -2
- package/dist/default/define/audio/minimal-skin2.js +1 -3
- package/dist/default/define/audio/minimal-ui.js +0 -2
- package/dist/default/define/audio/player.js +0 -2
- package/dist/default/define/audio/skin.css +409 -205
- package/dist/default/define/audio/skin.js +0 -2
- package/dist/default/define/audio/skin2.js +1 -3
- package/dist/default/define/audio/ui.js +0 -2
- package/dist/default/define/background/player.js +0 -2
- package/dist/default/define/background/skin.js +0 -2
- package/dist/default/define/background/skin2.js +1 -3
- package/dist/default/define/extensions/google-cast.js +0 -2
- package/dist/default/define/extensions/mux-data.js +0 -2
- package/dist/default/define/global.css +13 -0
- package/dist/default/define/global.js +1 -3
- package/dist/default/define/i18n.js +0 -2
- package/dist/default/define/live-audio/minimal-skin.css +458 -368
- package/dist/default/define/live-audio/minimal-skin.js +0 -2
- package/dist/default/define/live-audio/minimal-skin2.js +1 -3
- package/dist/default/define/live-audio/minimal-ui.js +0 -2
- package/dist/default/define/live-audio/player.js +0 -2
- package/dist/default/define/live-audio/skin.css +221 -159
- package/dist/default/define/live-audio/skin.js +0 -2
- package/dist/default/define/live-audio/skin2.js +1 -3
- package/dist/default/define/live-audio/ui.js +0 -2
- package/dist/default/define/live-video/minimal-skin.css +1002 -863
- package/dist/default/define/live-video/minimal-skin.js +0 -2
- package/dist/default/define/live-video/minimal-skin2.js +1 -3
- package/dist/default/define/live-video/minimal-ui.js +0 -2
- package/dist/default/define/live-video/player.js +0 -2
- package/dist/default/define/live-video/skin.css +804 -687
- package/dist/default/define/live-video/skin.js +0 -2
- package/dist/default/define/live-video/skin2.js +1 -3
- package/dist/default/define/live-video/ui.js +0 -2
- package/dist/default/define/media/background-video.js +0 -2
- package/dist/default/define/media/cloudflare-video.js +0 -2
- package/dist/default/define/media/dash-video.js +0 -2
- package/dist/default/define/media/hls-audio.js +0 -2
- package/dist/default/define/media/hls-background-video.js +0 -2
- package/dist/default/define/media/hls-video.js +0 -2
- package/dist/default/define/media/hlsjs-video.js +0 -2
- package/dist/default/define/media/mux-audio/hls-js.js +0 -2
- package/dist/default/define/media/mux-audio/spf.js +0 -2
- package/dist/default/define/media/mux-background-video.js +0 -2
- package/dist/default/define/media/mux-video/hls-js.js +0 -2
- package/dist/default/define/media/mux-video/spf.js +0 -2
- package/dist/default/define/media/native-hls-video.js +0 -2
- package/dist/default/define/media/shaka-video.js +0 -2
- package/dist/default/define/media/spotify-audio.js +0 -2
- package/dist/default/define/media/tiktok-video.js +0 -2
- package/dist/default/define/media/twitch-video.js +0 -2
- package/dist/default/define/media/vimeo-video.js +0 -2
- package/dist/default/define/media/wistia-video.js +0 -2
- package/dist/default/define/media/youtube-video.js +0 -2
- package/dist/default/define/shadow.css +22 -0
- package/dist/default/define/shadow.js +4 -0
- package/dist/default/define/ui/airplay-button.js +0 -2
- package/dist/default/define/ui/alert-dialog.js +0 -2
- package/dist/default/define/ui/audio-track-radio-group.js +0 -2
- package/dist/default/define/ui/buffering-indicator.js +0 -2
- package/dist/default/define/ui/captions-button.js +0 -2
- package/dist/default/define/ui/captions-radio-group.js +0 -2
- package/dist/default/define/ui/cast-button.js +0 -2
- package/dist/default/define/ui/container.js +0 -2
- package/dist/default/define/ui/controls-backdrop.js +0 -2
- package/dist/default/define/ui/controls-content.js +0 -2
- package/dist/default/define/ui/controls-group.js +0 -2
- package/dist/default/define/ui/controls.js +0 -2
- package/dist/default/define/ui/dialog-backdrop.js +0 -2
- package/dist/default/define/ui/dialog-close.js +0 -2
- package/dist/default/define/ui/dialog-description.js +0 -2
- package/dist/default/define/ui/dialog-popup.js +0 -2
- package/dist/default/define/ui/dialog-title.js +0 -2
- package/dist/default/define/ui/dialog.js +0 -2
- package/dist/default/define/ui/error-dialog.js +0 -2
- package/dist/default/define/ui/fullscreen-button.js +0 -2
- package/dist/default/define/ui/gesture.js +0 -2
- package/dist/default/define/ui/hotkey.js +0 -2
- package/dist/default/define/ui/live-button.js +0 -2
- package/dist/default/define/ui/menu-checkbox-item.js +0 -2
- package/dist/default/define/ui/menu-content.js +0 -2
- package/dist/default/define/ui/menu-group-label.js +0 -2
- package/dist/default/define/ui/menu-group.js +0 -2
- package/dist/default/define/ui/menu-item-indicator.js +0 -2
- package/dist/default/define/ui/menu-item.js +0 -2
- package/dist/default/define/ui/menu-radio-group.js +0 -2
- package/dist/default/define/ui/menu-radio-item.js +0 -2
- package/dist/default/define/ui/menu-separator.js +0 -2
- package/dist/default/define/ui/menu.js +0 -2
- package/dist/default/define/ui/mute-button.js +0 -2
- package/dist/default/define/ui/pip-button.js +0 -2
- package/dist/default/define/ui/play-button.js +0 -2
- package/dist/default/define/ui/playback-rate-button.js +0 -2
- package/dist/default/define/ui/playback-rate-radio-group.js +0 -2
- package/dist/default/define/ui/popover.js +0 -2
- package/dist/default/define/ui/poster.js +0 -2
- package/dist/default/define/ui/quality-radio-group.js +0 -2
- package/dist/default/define/ui/seek-button.js +0 -2
- package/dist/default/define/ui/seek-indicator-value.js +0 -2
- package/dist/default/define/ui/seek-indicator.js +0 -2
- package/dist/default/define/ui/slider-buffer.js +0 -2
- package/dist/default/define/ui/slider-fill.js +0 -2
- package/dist/default/define/ui/slider-preview.js +0 -2
- package/dist/default/define/ui/slider-thumb.js +0 -2
- package/dist/default/define/ui/slider-thumbnail.js +0 -2
- package/dist/default/define/ui/slider-track.js +0 -2
- package/dist/default/define/ui/slider-value.js +0 -2
- package/dist/default/define/ui/slider.js +0 -2
- package/dist/default/define/ui/status-announcer.js +0 -2
- package/dist/default/define/ui/status-indicator-value.js +0 -2
- package/dist/default/define/ui/status-indicator.js +0 -2
- package/dist/default/define/ui/thumbnail.js +0 -2
- package/dist/default/define/ui/time-group.js +0 -2
- package/dist/default/define/ui/time-separator.js +0 -2
- package/dist/default/define/ui/time-slider-chapter-title.js +0 -2
- package/dist/default/define/ui/time-slider-chapters.js +0 -2
- package/dist/default/define/ui/time-slider.js +0 -2
- package/dist/default/define/ui/time.js +0 -2
- package/dist/default/define/ui/title.js +0 -2
- package/dist/default/define/ui/tooltip-group.js +0 -2
- package/dist/default/define/ui/tooltip-label.js +0 -2
- package/dist/default/define/ui/tooltip-shortcut.js +0 -2
- package/dist/default/define/ui/tooltip.js +0 -2
- package/dist/default/define/ui/volume-indicator-fill.js +0 -2
- package/dist/default/define/ui/volume-indicator-value.js +0 -2
- package/dist/default/define/ui/volume-indicator.js +0 -2
- package/dist/default/define/ui/volume-popover.js +0 -2
- package/dist/default/define/ui/volume-slider.js +0 -2
- package/dist/default/define/video/minimal-skin.css +764 -647
- package/dist/default/define/video/minimal-skin.js +0 -2
- package/dist/default/define/video/minimal-skin2.js +1 -3
- package/dist/default/define/video/minimal-ui.js +0 -2
- package/dist/default/define/video/player.js +0 -2
- package/dist/default/define/video/skin.css +528 -441
- package/dist/default/define/video/skin.js +0 -2
- package/dist/default/define/video/skin2.js +1 -3
- package/dist/default/define/video/ui.js +0 -2
- package/dist/default/extensions/google-cast/extension.js +0 -2
- package/dist/default/extensions/media-extension-element.js +0 -2
- package/dist/default/extensions/mux-data/extension.js +0 -2
- package/dist/default/i18n/cache-key.js +0 -2
- package/dist/default/i18n/context.js +0 -2
- package/dist/default/i18n/controller.js +0 -2
- package/dist/default/i18n/create-i18n.js +0 -2
- package/dist/default/i18n/index.js +2 -2
- package/dist/default/i18n/locale.js +0 -2
- package/dist/default/i18n/locales/all/register.js +0 -2
- package/dist/default/i18n/locales/ar/register.js +0 -2
- package/dist/default/i18n/locales/az/register.js +0 -2
- package/dist/default/i18n/locales/bg/register.js +0 -2
- package/dist/default/i18n/locales/bn/register.js +0 -2
- package/dist/default/i18n/locales/bs/register.js +0 -2
- package/dist/default/i18n/locales/ca/register.js +0 -2
- package/dist/default/i18n/locales/cs/register.js +0 -2
- package/dist/default/i18n/locales/cy/register.js +0 -2
- package/dist/default/i18n/locales/da/register.js +0 -2
- package/dist/default/i18n/locales/de/register.js +0 -2
- package/dist/default/i18n/locales/el/register.js +0 -2
- package/dist/default/i18n/locales/en/register.js +0 -2
- package/dist/default/i18n/locales/es/register.js +0 -2
- package/dist/default/i18n/locales/et/register.js +0 -2
- package/dist/default/i18n/locales/eu/register.js +0 -2
- package/dist/default/i18n/locales/fa/register.js +0 -2
- package/dist/default/i18n/locales/fi/register.js +0 -2
- package/dist/default/i18n/locales/fr/register.js +0 -2
- package/dist/default/i18n/locales/gd/register.js +0 -2
- package/dist/default/i18n/locales/gl/register.js +0 -2
- package/dist/default/i18n/locales/he/register.js +0 -2
- package/dist/default/i18n/locales/hi/register.js +0 -2
- package/dist/default/i18n/locales/hr/register.js +0 -2
- package/dist/default/i18n/locales/hu/register.js +0 -2
- package/dist/default/i18n/locales/id/register.js +0 -2
- package/dist/default/i18n/locales/it/register.js +0 -2
- package/dist/default/i18n/locales/ja/register.js +0 -2
- package/dist/default/i18n/locales/ko/register.js +0 -2
- package/dist/default/i18n/locales/lt/register.js +0 -2
- package/dist/default/i18n/locales/lv/register.js +0 -2
- package/dist/default/i18n/locales/mr/register.js +0 -2
- package/dist/default/i18n/locales/nb/register.js +0 -2
- package/dist/default/i18n/locales/ne/register.js +0 -2
- package/dist/default/i18n/locales/nl/register.js +0 -2
- package/dist/default/i18n/locales/nn/register.js +0 -2
- package/dist/default/i18n/locales/oc/register.js +0 -2
- package/dist/default/i18n/locales/pl/register.js +0 -2
- package/dist/default/i18n/locales/pt/register.js +0 -2
- package/dist/default/i18n/locales/pt-BR/register.js +0 -2
- package/dist/default/i18n/locales/pt-PT/register.js +0 -2
- package/dist/default/i18n/locales/ro/register.js +0 -2
- package/dist/default/i18n/locales/ru/register.js +0 -2
- package/dist/default/i18n/locales/sk/register.js +0 -2
- package/dist/default/i18n/locales/sl/register.js +0 -2
- package/dist/default/i18n/locales/sr/register.js +0 -2
- package/dist/default/i18n/locales/sv/register.js +0 -2
- package/dist/default/i18n/locales/te/register.js +0 -2
- package/dist/default/i18n/locales/th/register.js +0 -2
- package/dist/default/i18n/locales/tr/register.js +0 -2
- package/dist/default/i18n/locales/uk/register.js +0 -2
- package/dist/default/i18n/locales/vi/register.js +0 -2
- package/dist/default/i18n/locales/zh/register.js +0 -2
- package/dist/default/i18n/locales/zh-CN/register.js +0 -2
- package/dist/default/i18n/locales/zh-TW/register.js +0 -2
- package/dist/default/i18n/provider-element.js +0 -2
- package/dist/default/i18n/provider-mixin.js +0 -2
- package/dist/default/i18n/render-text.js +0 -2
- package/dist/default/i18n/text-mixin.js +0 -2
- package/dist/default/icons/dist/element/base.js +0 -2
- package/dist/default/icons/dist/element/default/icons.js +0 -2
- package/dist/default/icons/dist/element/default/index.js +0 -2
- package/dist/default/icons/dist/element/index.js +0 -2
- package/dist/default/icons/dist/element/minimal/icons.js +0 -2
- package/dist/default/icons/dist/element/minimal/index.js +0 -2
- package/dist/default/icons/dist/html/default/airplay-enter.js +0 -2
- package/dist/default/icons/dist/html/default/airplay-exit.js +0 -2
- package/dist/default/icons/dist/html/default/captions-off.js +0 -2
- package/dist/default/icons/dist/html/default/captions-on.js +0 -2
- package/dist/default/icons/dist/html/default/cast-enter.js +0 -2
- package/dist/default/icons/dist/html/default/cast-exit.js +0 -2
- package/dist/default/icons/dist/html/default/check.js +0 -2
- package/dist/default/icons/dist/html/default/chevron.js +0 -2
- package/dist/default/icons/dist/html/default/fullscreen-enter.js +0 -2
- package/dist/default/icons/dist/html/default/fullscreen-exit.js +0 -2
- package/dist/default/icons/dist/html/default/gear.js +0 -2
- package/dist/default/icons/dist/html/default/pause.js +0 -2
- package/dist/default/icons/dist/html/default/pip-enter.js +0 -2
- package/dist/default/icons/dist/html/default/pip-exit.js +0 -2
- package/dist/default/icons/dist/html/default/play.js +0 -2
- package/dist/default/icons/dist/html/default/quality.js +0 -2
- package/dist/default/icons/dist/html/default/restart.js +0 -2
- package/dist/default/icons/dist/html/default/seek.js +0 -2
- package/dist/default/icons/dist/html/default/speech.js +0 -2
- package/dist/default/icons/dist/html/default/speed.js +0 -2
- package/dist/default/icons/dist/html/default/spinner.js +0 -2
- package/dist/default/icons/dist/html/default/switches.js +0 -2
- package/dist/default/icons/dist/html/default/volume-high.js +0 -2
- package/dist/default/icons/dist/html/default/volume-low.js +0 -2
- package/dist/default/icons/dist/html/default/volume-off.js +0 -2
- package/dist/default/icons/dist/html/minimal/airplay-enter.js +0 -2
- package/dist/default/icons/dist/html/minimal/airplay-exit.js +0 -2
- package/dist/default/icons/dist/html/minimal/captions-off.js +0 -2
- package/dist/default/icons/dist/html/minimal/captions-on.js +0 -2
- package/dist/default/icons/dist/html/minimal/cast-enter.js +0 -2
- package/dist/default/icons/dist/html/minimal/cast-exit.js +0 -2
- package/dist/default/icons/dist/html/minimal/check.js +0 -2
- package/dist/default/icons/dist/html/minimal/chevron.js +0 -2
- package/dist/default/icons/dist/html/minimal/fullscreen-enter.js +0 -2
- package/dist/default/icons/dist/html/minimal/fullscreen-exit.js +0 -2
- package/dist/default/icons/dist/html/minimal/gear.js +0 -2
- package/dist/default/icons/dist/html/minimal/pause.js +0 -2
- package/dist/default/icons/dist/html/minimal/pip-enter.js +0 -2
- package/dist/default/icons/dist/html/minimal/pip-exit.js +0 -2
- package/dist/default/icons/dist/html/minimal/play.js +0 -2
- package/dist/default/icons/dist/html/minimal/quality.js +0 -2
- package/dist/default/icons/dist/html/minimal/restart.js +0 -2
- package/dist/default/icons/dist/html/minimal/seek.js +0 -2
- package/dist/default/icons/dist/html/minimal/speech.js +0 -2
- package/dist/default/icons/dist/html/minimal/speed.js +0 -2
- package/dist/default/icons/dist/html/minimal/spinner.js +0 -2
- package/dist/default/icons/dist/html/minimal/switches.js +0 -2
- package/dist/default/icons/dist/html/minimal/volume-high.js +0 -2
- package/dist/default/icons/dist/html/minimal/volume-low.js +0 -2
- package/dist/default/icons/dist/html/minimal/volume-off.js +0 -2
- package/dist/default/icons/element/register/index.js +0 -2
- package/dist/default/index.js +2 -2
- package/dist/default/internal/skins/default-audio/register.js +0 -2
- package/dist/default/internal/skins/default-audio/skin.css +387 -191
- package/dist/default/internal/skins/default-audio/template.js +12 -14
- package/dist/default/internal/skins/default-live-audio/register.js +0 -2
- package/dist/default/internal/skins/default-live-audio/skin.css +199 -145
- package/dist/default/internal/skins/default-live-audio/template.js +5 -7
- package/dist/default/internal/skins/default-live-video/register.js +1 -2
- package/dist/default/internal/skins/default-live-video/skin.css +713 -604
- package/dist/default/internal/skins/default-live-video/template.js +18 -19
- package/dist/default/internal/skins/default-video/register.js +1 -2
- package/dist/default/internal/skins/default-video/skin.css +506 -427
- package/dist/default/internal/skins/default-video/template.js +33 -33
- package/dist/default/internal/skins/minimal-audio/register.js +0 -2
- package/dist/default/internal/skins/minimal-audio/skin.css +641 -400
- package/dist/default/internal/skins/minimal-audio/template.js +12 -14
- package/dist/default/internal/skins/minimal-live-audio/register.js +0 -2
- package/dist/default/internal/skins/minimal-live-audio/skin.css +436 -354
- package/dist/default/internal/skins/minimal-live-audio/template.js +5 -7
- package/dist/default/internal/skins/minimal-live-video/register.js +1 -2
- package/dist/default/internal/skins/minimal-live-video/skin.css +916 -785
- package/dist/default/internal/skins/minimal-live-video/template.js +18 -19
- package/dist/default/internal/skins/minimal-video/register.js +1 -2
- package/dist/default/internal/skins/minimal-video/skin.css +742 -633
- package/dist/default/internal/skins/minimal-video/template.js +33 -33
- package/dist/default/internal/skins/properties.css +11 -0
- package/dist/default/media/background-video/adapter.js +0 -2
- package/dist/default/media/background-video/template.js +0 -2
- package/dist/default/media/cloudflare-video/adapter.js +0 -2
- package/dist/default/media/dash-video/adapter.js +0 -2
- package/dist/default/media/hls-audio/adapter.js +0 -2
- package/dist/default/media/hls-background-video/adapter.js +0 -2
- package/dist/default/media/hls-video/adapter.js +0 -2
- package/dist/default/media/hlsjs-video/adapter.js +0 -2
- package/dist/default/media/mux-audio/hls-js.js +0 -2
- package/dist/default/media/mux-audio/mixin.js +0 -2
- package/dist/default/media/mux-audio/spf.js +0 -2
- package/dist/default/media/mux-video/hls-js.js +0 -2
- package/dist/default/media/mux-video/mixin.js +0 -2
- package/dist/default/media/mux-video/spf.js +0 -2
- package/dist/default/media/native-hls-video/adapter.js +0 -2
- package/dist/default/media/shaka-video/adapter.js +0 -2
- package/dist/default/media/spotify-audio/adapter.js +0 -2
- package/dist/default/media/tiktok-video/adapter.js +0 -2
- package/dist/default/media/twitch-video/adapter.js +0 -2
- package/dist/default/media/vimeo-video/adapter.js +0 -2
- package/dist/default/media/wistia-video/adapter.js +0 -2
- package/dist/default/media/youtube-video/adapter.js +0 -2
- package/dist/default/player/context.js +0 -2
- package/dist/default/player/controller.js +0 -2
- package/dist/default/player/create-player.js +0 -2
- package/dist/default/player/element.js +0 -2
- package/dist/default/player/popup-group-context.js +0 -2
- package/dist/default/presets/audio/minimal-skin.js +0 -2
- package/dist/default/presets/audio/player.js +0 -2
- package/dist/default/presets/audio/skin.js +0 -2
- package/dist/default/presets/background/player.js +0 -2
- package/dist/default/presets/background/skin.js +2 -2
- package/dist/default/presets/live-audio/minimal-skin.js +0 -2
- package/dist/default/presets/live-audio/player.js +0 -2
- package/dist/default/presets/live-audio/skin.js +0 -2
- package/dist/default/presets/live-video/minimal-skin.js +0 -2
- package/dist/default/presets/live-video/player.js +0 -2
- package/dist/default/presets/live-video/skin.js +0 -2
- package/dist/default/presets/skin.js +14 -5
- package/dist/default/presets/video/minimal-skin.js +0 -2
- package/dist/default/presets/video/player.js +0 -2
- package/dist/default/presets/video/skin.js +0 -2
- package/dist/default/registration/safe-define.js +0 -2
- package/dist/default/registration/ui-compounds.js +0 -2
- package/dist/default/store/media-attach-mixin.js +0 -2
- package/dist/default/ui/airplay-button/element.js +0 -2
- package/dist/default/ui/alert-dialog/element.js +0 -2
- package/dist/default/ui/audio-track-radio-group/element.js +5 -2
- package/dist/default/ui/buffering-indicator/element.js +0 -2
- package/dist/default/ui/captions-button/element.js +0 -2
- package/dist/default/ui/captions-radio-group/element.js +5 -2
- package/dist/default/ui/cast-button/element.js +0 -2
- package/dist/default/ui/command-for.js +0 -2
- package/dist/default/ui/container/element.js +0 -2
- package/dist/default/ui/context-part-element.js +0 -2
- package/dist/default/ui/controls/backdrop.js +0 -2
- package/dist/default/ui/controls/content.js +0 -2
- package/dist/default/ui/controls/context.js +0 -2
- package/dist/default/ui/controls/element.js +4 -2
- package/dist/default/ui/controls/group.js +0 -2
- package/dist/default/ui/dialog/backdrop.js +0 -2
- package/dist/default/ui/dialog/close.js +1 -2
- package/dist/default/ui/dialog/context.js +0 -2
- package/dist/default/ui/dialog/description.js +4 -2
- package/dist/default/ui/dialog/element.js +0 -2
- package/dist/default/ui/dialog/popup.js +0 -2
- package/dist/default/ui/dialog/title.js +1 -2
- package/dist/default/ui/error-dialog/element.js +0 -2
- package/dist/default/ui/fullscreen-button/element.js +0 -2
- package/dist/default/ui/gesture/element.js +0 -2
- package/dist/default/ui/hotkey/aria-key-shortcuts-controller.js +0 -2
- package/dist/default/ui/hotkey/element.js +0 -2
- package/dist/default/ui/input-indicator/element.js +0 -2
- package/dist/default/ui/input-indicator/live-indicator.js +0 -2
- package/dist/default/ui/live-button/element.js +0 -2
- package/dist/default/ui/media-button-element.js +0 -2
- package/dist/default/ui/media-ui-element.js +0 -2
- package/dist/default/ui/menu/checkbox-item.js +6 -3
- package/dist/default/ui/menu/content.js +1 -3
- package/dist/default/ui/menu/context.js +0 -2
- package/dist/default/ui/menu/element.js +0 -2
- package/dist/default/ui/menu/group-controller.js +0 -2
- package/dist/default/ui/menu/group-label.js +1 -2
- package/dist/default/ui/menu/group.js +4 -2
- package/dist/default/ui/menu/item-indicator.js +4 -2
- package/dist/default/ui/menu/item.js +4 -2
- package/dist/default/ui/menu/radio-group.js +1 -2
- package/dist/default/ui/menu/radio-item.js +4 -2
- package/dist/default/ui/menu/separator.js +1 -2
- package/dist/default/ui/mute-button/element.js +0 -2
- package/dist/default/ui/pip-button/element.js +0 -2
- package/dist/default/ui/play-button/element.js +0 -2
- package/dist/default/ui/playback-rate-button/element.js +0 -2
- package/dist/default/ui/playback-rate-radio-group/element.js +5 -2
- package/dist/default/ui/popover/element.js +0 -2
- package/dist/default/ui/position-controller.js +0 -2
- package/dist/default/ui/poster/element.js +0 -2
- package/dist/default/ui/quality-radio-group/element.js +6 -2
- package/dist/default/ui/radio-group/context.js +0 -2
- package/dist/default/ui/radio-group/element.js +0 -2
- package/dist/default/ui/radio-options/controller.js +0 -2
- package/dist/default/ui/seek-button/element.js +0 -2
- package/dist/default/ui/seek-indicator/element.js +0 -2
- package/dist/default/ui/seek-indicator/value.js +0 -2
- package/dist/default/ui/slider/buffer.js +0 -2
- package/dist/default/ui/slider/context.js +0 -2
- package/dist/default/ui/slider/element.js +0 -2
- package/dist/default/ui/slider/fill.js +0 -2
- package/dist/default/ui/slider/preview.js +0 -2
- package/dist/default/ui/slider/thumb.js +0 -2
- package/dist/default/ui/slider/thumbnail.js +4 -2
- package/dist/default/ui/slider/track.js +0 -2
- package/dist/default/ui/slider/value.js +1 -2
- package/dist/default/ui/status-announcer/element.js +0 -2
- package/dist/default/ui/status-indicator/element.js +0 -2
- package/dist/default/ui/status-indicator/value.js +0 -2
- package/dist/default/ui/text/element.js +0 -2
- package/dist/default/ui/thumbnail/element.js +28 -8
- package/dist/default/ui/time/element.js +0 -2
- package/dist/default/ui/time/group.js +1 -2
- package/dist/default/ui/time/separator.js +0 -2
- package/dist/default/ui/time-slider/chapter-title.js +0 -2
- package/dist/default/ui/time-slider/chapters.js +0 -2
- package/dist/default/ui/time-slider/element.js +5 -4
- package/dist/default/ui/title/element.js +5 -9
- package/dist/default/ui/tooltip/context.js +0 -2
- package/dist/default/ui/tooltip/element.js +0 -2
- package/dist/default/ui/tooltip/group.js +0 -2
- package/dist/default/ui/tooltip/label.js +0 -2
- package/dist/default/ui/tooltip/shortcut.js +0 -2
- package/dist/default/ui/ui-element.js +0 -2
- package/dist/default/ui/volume-indicator/element.js +0 -2
- package/dist/default/ui/volume-indicator/fill.js +0 -2
- package/dist/default/ui/volume-indicator/value.js +0 -2
- package/dist/default/ui/volume-popover/element.js +0 -2
- package/dist/default/ui/volume-slider/element.js +0 -2
- package/dist/dev/define/audio/minimal-skin.css +663 -414
- package/dist/dev/define/audio/minimal-skin2.js +1 -1
- package/dist/dev/define/audio/minimal-skin2.js.map +1 -1
- package/dist/dev/define/audio/skin.css +409 -205
- package/dist/dev/define/audio/skin2.js +1 -1
- package/dist/dev/define/audio/skin2.js.map +1 -1
- package/dist/dev/define/global.css +13 -0
- package/dist/dev/define/global.js +1 -1
- package/dist/dev/define/global.js.map +1 -1
- package/dist/dev/define/live-audio/minimal-skin.css +458 -368
- package/dist/dev/define/live-audio/minimal-skin2.js +1 -1
- package/dist/dev/define/live-audio/minimal-skin2.js.map +1 -1
- package/dist/dev/define/live-audio/skin.css +221 -159
- 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/minimal-skin.css +1002 -863
- package/dist/dev/define/live-video/minimal-skin2.js +1 -1
- package/dist/dev/define/live-video/minimal-skin2.js.map +1 -1
- package/dist/dev/define/live-video/skin.css +804 -687
- 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/shadow.css +22 -0
- package/dist/dev/define/shadow.js +6 -0
- package/dist/dev/define/shadow.js.map +1 -0
- package/dist/dev/define/video/minimal-skin.css +764 -647
- package/dist/dev/define/video/minimal-skin2.js +1 -1
- package/dist/dev/define/video/minimal-skin2.js.map +1 -1
- package/dist/dev/define/video/skin.css +528 -441
- package/dist/dev/define/video/skin2.js +1 -1
- package/dist/dev/define/video/skin2.js.map +1 -1
- package/dist/dev/i18n/index.d.ts +2 -2
- package/dist/dev/i18n/index.js +2 -2
- package/dist/dev/index.d.ts +3 -3
- package/dist/dev/index.js +2 -2
- package/dist/dev/internal/skins/default-audio/skin.css +387 -191
- package/dist/dev/internal/skins/default-audio/template.js +12 -12
- package/dist/dev/internal/skins/default-audio/template.js.map +1 -1
- package/dist/dev/internal/skins/default-live-audio/skin.css +199 -145
- package/dist/dev/internal/skins/default-live-audio/template.js +5 -5
- package/dist/dev/internal/skins/default-live-audio/template.js.map +1 -1
- package/dist/dev/internal/skins/default-live-video/register.d.ts +1 -0
- package/dist/dev/internal/skins/default-live-video/register.js +1 -0
- package/dist/dev/internal/skins/default-live-video/register.js.map +1 -1
- package/dist/dev/internal/skins/default-live-video/skin.css +713 -604
- package/dist/dev/internal/skins/default-live-video/template.js +18 -17
- package/dist/dev/internal/skins/default-live-video/template.js.map +1 -1
- package/dist/dev/internal/skins/default-video/register.d.ts +1 -0
- package/dist/dev/internal/skins/default-video/register.js +1 -0
- package/dist/dev/internal/skins/default-video/register.js.map +1 -1
- package/dist/dev/internal/skins/default-video/skin.css +506 -427
- package/dist/dev/internal/skins/default-video/template.js +33 -31
- package/dist/dev/internal/skins/default-video/template.js.map +1 -1
- package/dist/dev/internal/skins/minimal-audio/skin.css +641 -400
- package/dist/dev/internal/skins/minimal-audio/template.js +12 -12
- package/dist/dev/internal/skins/minimal-audio/template.js.map +1 -1
- package/dist/dev/internal/skins/minimal-live-audio/skin.css +436 -354
- package/dist/dev/internal/skins/minimal-live-audio/template.js +5 -5
- package/dist/dev/internal/skins/minimal-live-audio/template.js.map +1 -1
- package/dist/dev/internal/skins/minimal-live-video/register.d.ts +1 -0
- package/dist/dev/internal/skins/minimal-live-video/register.js +1 -0
- package/dist/dev/internal/skins/minimal-live-video/register.js.map +1 -1
- package/dist/dev/internal/skins/minimal-live-video/skin.css +916 -785
- package/dist/dev/internal/skins/minimal-live-video/template.js +18 -17
- package/dist/dev/internal/skins/minimal-live-video/template.js.map +1 -1
- package/dist/dev/internal/skins/minimal-video/register.d.ts +1 -0
- package/dist/dev/internal/skins/minimal-video/register.js +1 -0
- package/dist/dev/internal/skins/minimal-video/register.js.map +1 -1
- package/dist/dev/internal/skins/minimal-video/skin.css +742 -633
- package/dist/dev/internal/skins/minimal-video/template.js +33 -31
- package/dist/dev/internal/skins/minimal-video/template.js.map +1 -1
- package/dist/dev/internal/skins/properties.css +11 -0
- package/dist/dev/player/context.d.ts +1 -0
- package/dist/dev/player/context.js.map +1 -1
- package/dist/dev/presets/background/skin.js +2 -0
- package/dist/dev/presets/background/skin.js.map +1 -1
- package/dist/dev/presets/skin.js +14 -3
- package/dist/dev/presets/skin.js.map +1 -1
- package/dist/dev/ui/audio-track-radio-group/element.d.ts +5 -0
- package/dist/dev/ui/audio-track-radio-group/element.js +5 -0
- package/dist/dev/ui/audio-track-radio-group/element.js.map +1 -1
- package/dist/dev/ui/captions-radio-group/element.d.ts +5 -0
- package/dist/dev/ui/captions-radio-group/element.js +5 -0
- package/dist/dev/ui/captions-radio-group/element.js.map +1 -1
- package/dist/dev/ui/controls/element.d.ts +4 -0
- package/dist/dev/ui/controls/element.js +4 -0
- package/dist/dev/ui/controls/element.js.map +1 -1
- package/dist/dev/ui/dialog/close.d.ts +1 -0
- package/dist/dev/ui/dialog/close.js +1 -0
- package/dist/dev/ui/dialog/close.js.map +1 -1
- package/dist/dev/ui/dialog/description.d.ts +4 -0
- package/dist/dev/ui/dialog/description.js +4 -0
- package/dist/dev/ui/dialog/description.js.map +1 -1
- package/dist/dev/ui/dialog/title.d.ts +1 -0
- package/dist/dev/ui/dialog/title.js +1 -0
- package/dist/dev/ui/dialog/title.js.map +1 -1
- package/dist/dev/ui/menu/checkbox-item.d.ts +6 -1
- package/dist/dev/ui/menu/checkbox-item.js +6 -1
- package/dist/dev/ui/menu/checkbox-item.js.map +1 -1
- package/dist/dev/ui/menu/content.js +1 -1
- package/dist/dev/ui/menu/content.js.map +1 -1
- package/dist/dev/ui/menu/group-label.d.ts +1 -0
- package/dist/dev/ui/menu/group-label.js +1 -0
- package/dist/dev/ui/menu/group-label.js.map +1 -1
- package/dist/dev/ui/menu/group.d.ts +4 -0
- package/dist/dev/ui/menu/group.js +4 -0
- package/dist/dev/ui/menu/group.js.map +1 -1
- package/dist/dev/ui/menu/item-indicator.d.ts +4 -0
- package/dist/dev/ui/menu/item-indicator.js +4 -0
- package/dist/dev/ui/menu/item-indicator.js.map +1 -1
- package/dist/dev/ui/menu/item.d.ts +4 -0
- package/dist/dev/ui/menu/item.js +4 -0
- package/dist/dev/ui/menu/item.js.map +1 -1
- package/dist/dev/ui/menu/radio-group.d.ts +1 -0
- package/dist/dev/ui/menu/radio-group.js +1 -0
- package/dist/dev/ui/menu/radio-group.js.map +1 -1
- package/dist/dev/ui/menu/radio-item.d.ts +4 -0
- package/dist/dev/ui/menu/radio-item.js +4 -0
- package/dist/dev/ui/menu/radio-item.js.map +1 -1
- package/dist/dev/ui/menu/separator.d.ts +1 -0
- package/dist/dev/ui/menu/separator.js +1 -0
- package/dist/dev/ui/menu/separator.js.map +1 -1
- package/dist/dev/ui/playback-rate-radio-group/element.d.ts +5 -0
- package/dist/dev/ui/playback-rate-radio-group/element.js +5 -0
- package/dist/dev/ui/playback-rate-radio-group/element.js.map +1 -1
- package/dist/dev/ui/quality-radio-group/element.d.ts +6 -0
- package/dist/dev/ui/quality-radio-group/element.js +6 -0
- package/dist/dev/ui/quality-radio-group/element.js.map +1 -1
- package/dist/dev/ui/slider/thumbnail.d.ts +4 -0
- package/dist/dev/ui/slider/thumbnail.js +4 -0
- package/dist/dev/ui/slider/thumbnail.js.map +1 -1
- package/dist/dev/ui/slider/value.d.ts +1 -0
- package/dist/dev/ui/slider/value.js +1 -0
- package/dist/dev/ui/slider/value.js.map +1 -1
- package/dist/dev/ui/thumbnail/element.d.ts +3 -1
- package/dist/dev/ui/thumbnail/element.js +28 -6
- package/dist/dev/ui/thumbnail/element.js.map +1 -1
- package/dist/dev/ui/time/group.d.ts +1 -0
- package/dist/dev/ui/time/group.js +1 -0
- package/dist/dev/ui/time/group.js.map +1 -1
- package/dist/dev/ui/time-slider/element.js +5 -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 +5 -7
- package/dist/dev/ui/title/element.js.map +1 -1
- package/docs/README.md +1 -1
- package/docs/guides/accessibility.md +93 -0
- package/docs/{concepts/overview.md → guides/architecture.md} +20 -21
- package/docs/{how-to → guides}/autoplay.md +42 -47
- package/docs/{how-to/add-a-background-video.md → guides/background-video.md} +36 -51
- package/docs/guides/browser-support.md +145 -0
- package/docs/guides/build-with-ai.md +167 -0
- package/docs/guides/build-your-own-component.md +245 -0
- package/docs/{concepts → guides}/bundlers.md +13 -5
- package/docs/guides/captions.md +140 -0
- package/docs/{how-to/cast-to-airplay-and-chromecast.md → guides/casting.md} +40 -39
- package/docs/guides/cdn.md +102 -0
- package/docs/guides/content-security-policy.md +37 -0
- package/docs/{how-to/show-and-hide-controls.md → guides/controls.md} +38 -37
- package/docs/guides/customize-skins.md +141 -0
- package/docs/{concepts → guides}/features.md +22 -46
- package/docs/guides/fullscreen.md +145 -0
- package/docs/guides/installation-cdn.md +164 -0
- package/docs/guides/installation-shadcn.md +305 -0
- package/docs/guides/installation-svelte.md +198 -0
- package/docs/guides/installation-vue.md +229 -0
- package/docs/guides/installation.md +186 -0
- package/docs/{how-to/internationalize-the-player.md → guides/internationalization.md} +84 -103
- package/docs/guides/keyboard-shortcuts.md +98 -0
- package/docs/guides/live-streams.md +110 -0
- package/docs/guides/llms.txt +79 -0
- package/docs/{concepts → guides}/media-sources.md +66 -260
- package/docs/{how-to → guides}/migrate-from-media-chrome.md +79 -249
- package/docs/{how-to → guides}/migrate-from-mux-player.md +146 -321
- package/docs/guides/migrate-from-plyr.md +296 -0
- package/docs/guides/migrate-from-video-js-8.md +467 -0
- package/docs/{concepts → guides}/mux-data.md +26 -27
- package/docs/{how-to/use-picture-in-picture.md → guides/picture-in-picture.md} +31 -33
- package/docs/guides/playback-errors.md +129 -0
- package/docs/{how-to/add-a-poster-and-loading-placeholder.md → guides/poster.md} +24 -34
- package/docs/{concepts → guides}/presets.md +17 -131
- package/docs/{how-to/add-quality-selector.md → guides/quality.md} +41 -41
- package/docs/{how-to/self-host-the-player.md → guides/self-hosting.md} +31 -41
- package/docs/guides/skins.md +68 -0
- package/docs/{how-to/use-videojs-with-svelte.md → guides/svelte.md} +15 -18
- package/docs/guides/thumbnails.md +183 -0
- package/docs/{concepts → guides}/typescript.md +10 -3
- package/docs/{concepts → guides}/ui-components.md +8 -14
- package/docs/{how-to/remember-user-preferences.md → guides/user-preferences.md} +25 -28
- package/docs/guides/v10-roadmap.md +92 -0
- package/docs/{how-to/use-videojs-with-vue.md → guides/vue.md} +19 -22
- package/docs/{concepts → guides}/why-videojs.md +36 -17
- package/docs/llms.txt +253 -181
- package/docs/reference/api/aria-key-shortcuts-controller.md +50 -0
- package/docs/reference/{create-i18n.md → api/create-i18n.md} +13 -52
- package/docs/reference/{create-selector.md → api/create-selector.md} +11 -33
- package/docs/reference/api/create-translator.md +36 -0
- package/docs/reference/api/error-codes.md +25 -0
- package/docs/reference/{feature-audio-track.md → api/feature-audio-track.md} +10 -36
- package/docs/reference/{feature-buffer.md → api/feature-buffer.md} +8 -31
- package/docs/reference/{feature-controls.md → api/feature-controls.md} +12 -58
- package/docs/reference/{feature-error.md → api/feature-error.md} +10 -36
- package/docs/reference/{feature-fullscreen.md → api/feature-fullscreen.md} +14 -69
- package/docs/reference/{feature-live.md → api/feature-live.md} +15 -42
- package/docs/reference/{feature-metadata.md → api/feature-metadata.md} +20 -80
- package/docs/reference/{feature-orientation-lock.md → api/feature-orientation-lock.md} +16 -64
- package/docs/reference/{feature-pip.md → api/feature-pip.md} +13 -66
- package/docs/reference/{feature-playback-rate.md → api/feature-playback-rate.md} +11 -46
- package/docs/reference/{feature-playback.md → api/feature-playback.md} +15 -86
- package/docs/reference/{feature-quality.md → api/feature-quality.md} +11 -46
- package/docs/reference/{feature-remote-playback.md → api/feature-remote-playback.md} +12 -47
- package/docs/reference/{feature-source.md → api/feature-source.md} +11 -46
- package/docs/reference/{feature-stream-type.md → api/feature-stream-type.md} +7 -23
- package/docs/reference/api/feature-text-tracks.md +54 -0
- package/docs/reference/{feature-time.md → api/feature-time.md} +12 -56
- package/docs/reference/{feature-volume.md → api/feature-volume.md} +14 -76
- package/docs/reference/{get-i18n-translations.md → api/get-i18n-translations.md} +11 -41
- package/docs/reference/{has-registered-locale.md → api/has-registered-locale.md} +7 -29
- package/docs/reference/{html-create-player.md → api/html-create-player.md} +45 -203
- package/docs/reference/{i-18-n-controller.md → api/i18n-controller.md} +12 -62
- package/docs/reference/api/llms.txt +74 -0
- package/docs/reference/{media-i18n.md → api/media-i18n.md} +8 -16
- package/docs/reference/{media-text.md → api/media-text.md} +3 -7
- package/docs/reference/{on-i18n-registry-change.md → api/on-i18n-registry-change.md} +9 -37
- package/docs/reference/{player-controller.md → api/player-controller.md} +36 -142
- package/docs/reference/{register-i18n.md → api/register-i18n.md} +9 -42
- package/docs/reference/api/snapshot-controller.md +95 -0
- package/docs/reference/api/store-controller.md +85 -0
- package/docs/reference/{subscription-controller.md → api/subscription-controller.md} +12 -70
- package/docs/reference/api/translation-phrases.md +107 -0
- package/docs/reference/api/vjs8-legacy-component.md +21 -0
- package/docs/reference/api/vjs8-legacy-get-player.md +21 -0
- package/docs/reference/api/vjs8-legacy-init.md +21 -0
- package/docs/reference/api/vjs8-legacy-options.md +21 -0
- package/docs/reference/api/vjs8-legacy-plugin.md +21 -0
- package/docs/reference/{airplay-button.md → components/airplay-button.md} +41 -194
- package/docs/reference/{alert-dialog.md → components/alert-dialog.md} +91 -280
- package/docs/reference/components/audio-minimal-skin.md +39 -0
- package/docs/reference/components/audio-skin.md +39 -0
- package/docs/reference/{audio-track-radio-group.md → components/audio-track-radio-group.md} +47 -219
- package/docs/reference/{audio.md → components/audio.md} +16 -17
- package/docs/reference/components/background-video-skin.md +37 -0
- package/docs/reference/{background-video.md → components/background-video.md} +25 -53
- package/docs/reference/{buffering-indicator.md → components/buffering-indicator.md} +21 -65
- package/docs/reference/{captions-button.md → components/captions-button.md} +35 -171
- package/docs/reference/{captions-radio-group.md → components/captions-radio-group.md} +48 -227
- package/docs/reference/{cast-button.md → components/cast-button.md} +39 -179
- package/docs/reference/components/cloudflare-video.md +157 -0
- package/docs/reference/{controls.md → components/controls.md} +52 -171
- package/docs/reference/components/dash-video.md +111 -0
- package/docs/reference/{dialog.md → components/dialog.md} +101 -314
- package/docs/reference/{error-dialog.md → components/error-dialog.md} +66 -162
- package/docs/reference/{fullscreen-button.md → components/fullscreen-button.md} +35 -153
- package/docs/reference/{gesture.md → components/gesture.md} +28 -130
- package/docs/reference/components/google-cast.md +47 -0
- package/docs/reference/components/hls-audio.md +87 -0
- package/docs/reference/components/hls-background-video.md +51 -0
- package/docs/reference/components/hls-video.md +110 -0
- package/docs/reference/components/hlsjs-video.md +126 -0
- package/docs/reference/{hotkey.md → components/hotkey.md} +28 -115
- package/docs/reference/{live-audio-minimal-skin.md → components/live-audio-minimal-skin.md} +12 -16
- package/docs/reference/{live-audio-skin.md → components/live-audio-skin.md} +12 -16
- package/docs/reference/{live-button.md → components/live-button.md} +36 -156
- package/docs/reference/components/live-video-minimal-skin.md +47 -0
- package/docs/reference/components/live-video-skin.md +47 -0
- package/docs/reference/components/llms.txt +122 -0
- package/docs/reference/{menu.md → components/menu.md} +123 -541
- package/docs/reference/{mute-button.md → components/mute-button.md} +50 -200
- package/docs/reference/components/mux-audio.md +127 -0
- package/docs/reference/{mux-background-video.md → components/mux-background-video.md} +9 -15
- package/docs/reference/components/mux-data.md +51 -0
- package/docs/reference/components/mux-video.md +220 -0
- package/docs/reference/components/native-hls-video.md +128 -0
- package/docs/reference/{pip-button.md → components/pip-button.md} +35 -153
- package/docs/reference/{play-button.md → components/play-button.md} +30 -134
- package/docs/reference/{playback-rate-button.md → components/playback-rate-button.md} +25 -105
- package/docs/reference/{playback-rate-radio-group.md → components/playback-rate-radio-group.md} +47 -223
- package/docs/reference/{player-container.md → components/player-container.md} +16 -27
- package/docs/reference/{player.md → components/player.md} +14 -24
- package/docs/reference/components/popover.md +193 -0
- package/docs/reference/{poster.md → components/poster.md} +42 -162
- package/docs/reference/{quality-radio-group.md → components/quality-radio-group.md} +47 -219
- package/docs/reference/{seek-button.md → components/seek-button.md} +26 -127
- package/docs/reference/{seek-indicator.md → components/seek-indicator.md} +55 -233
- package/docs/reference/components/shaka-video.md +161 -0
- package/docs/reference/components/slider.md +414 -0
- package/docs/reference/components/spotify-audio.md +144 -0
- package/docs/reference/{status-announcer.md → components/status-announcer.md} +37 -122
- package/docs/reference/{status-indicator.md → components/status-indicator.md} +57 -278
- package/docs/reference/components/thumbnail.md +321 -0
- package/docs/reference/components/tiktok-video.md +165 -0
- package/docs/reference/{time-slider.md → components/time-slider.md} +136 -595
- package/docs/reference/{time.md → components/time.md} +96 -286
- package/docs/reference/{title.md → components/title.md} +31 -70
- package/docs/reference/components/tooltip.md +274 -0
- package/docs/reference/components/twitch-video.md +161 -0
- package/docs/reference/components/video-minimal-skin.md +51 -0
- package/docs/reference/components/video-skin.md +51 -0
- package/docs/reference/{video.md → components/video.md} +14 -17
- package/docs/reference/components/vimeo-video.md +173 -0
- package/docs/reference/{volume-indicator.md → components/volume-indicator.md} +78 -291
- package/docs/reference/components/volume-popover.md +232 -0
- package/docs/reference/components/volume-slider.md +331 -0
- package/docs/reference/{wistia-video.md → components/wistia-video.md} +22 -30
- package/docs/reference/components/youtube-video.md +163 -0
- package/package.json +39 -38
- package/dist/default/define/audio/minimal-skin.js.map +0 -1
- package/dist/default/define/audio/minimal-skin2.js.map +0 -1
- package/dist/default/define/audio/minimal-ui.js.map +0 -1
- package/dist/default/define/audio/player.js.map +0 -1
- package/dist/default/define/audio/skin.js.map +0 -1
- package/dist/default/define/audio/skin2.js.map +0 -1
- package/dist/default/define/audio/ui.js.map +0 -1
- package/dist/default/define/background/player.js.map +0 -1
- package/dist/default/define/background/skin.js.map +0 -1
- package/dist/default/define/background/skin2.js.map +0 -1
- package/dist/default/define/extensions/google-cast.js.map +0 -1
- package/dist/default/define/extensions/mux-data.js.map +0 -1
- package/dist/default/define/global.js.map +0 -1
- package/dist/default/define/i18n.js.map +0 -1
- package/dist/default/define/live-audio/minimal-skin.js.map +0 -1
- package/dist/default/define/live-audio/minimal-skin2.js.map +0 -1
- package/dist/default/define/live-audio/minimal-ui.js.map +0 -1
- package/dist/default/define/live-audio/player.js.map +0 -1
- package/dist/default/define/live-audio/skin.js.map +0 -1
- package/dist/default/define/live-audio/skin2.js.map +0 -1
- package/dist/default/define/live-audio/ui.js.map +0 -1
- package/dist/default/define/live-video/minimal-skin.js.map +0 -1
- package/dist/default/define/live-video/minimal-skin2.js.map +0 -1
- package/dist/default/define/live-video/minimal-ui.js.map +0 -1
- package/dist/default/define/live-video/player.js.map +0 -1
- package/dist/default/define/live-video/skin.js.map +0 -1
- package/dist/default/define/live-video/skin2.js.map +0 -1
- package/dist/default/define/live-video/ui.js.map +0 -1
- package/dist/default/define/media/background-video.js.map +0 -1
- package/dist/default/define/media/cloudflare-video.js.map +0 -1
- package/dist/default/define/media/dash-video.js.map +0 -1
- package/dist/default/define/media/hls-audio.js.map +0 -1
- package/dist/default/define/media/hls-background-video.js.map +0 -1
- package/dist/default/define/media/hls-video.js.map +0 -1
- package/dist/default/define/media/hlsjs-video.js.map +0 -1
- package/dist/default/define/media/mux-audio/hls-js.js.map +0 -1
- package/dist/default/define/media/mux-audio/spf.js.map +0 -1
- package/dist/default/define/media/mux-background-video.js.map +0 -1
- package/dist/default/define/media/mux-video/hls-js.js.map +0 -1
- package/dist/default/define/media/mux-video/spf.js.map +0 -1
- package/dist/default/define/media/native-hls-video.js.map +0 -1
- package/dist/default/define/media/shaka-video.js.map +0 -1
- package/dist/default/define/media/spotify-audio.js.map +0 -1
- package/dist/default/define/media/tiktok-video.js.map +0 -1
- package/dist/default/define/media/twitch-video.js.map +0 -1
- package/dist/default/define/media/vimeo-video.js.map +0 -1
- package/dist/default/define/media/wistia-video.js.map +0 -1
- package/dist/default/define/media/youtube-video.js.map +0 -1
- package/dist/default/define/shared.css +0 -27
- package/dist/default/define/shared.js +0 -6
- package/dist/default/define/shared.js.map +0 -1
- package/dist/default/define/ui/airplay-button.js.map +0 -1
- package/dist/default/define/ui/alert-dialog.js.map +0 -1
- package/dist/default/define/ui/audio-track-radio-group.js.map +0 -1
- package/dist/default/define/ui/buffering-indicator.js.map +0 -1
- package/dist/default/define/ui/captions-button.js.map +0 -1
- package/dist/default/define/ui/captions-radio-group.js.map +0 -1
- package/dist/default/define/ui/cast-button.js.map +0 -1
- package/dist/default/define/ui/container.js.map +0 -1
- package/dist/default/define/ui/controls-backdrop.js.map +0 -1
- package/dist/default/define/ui/controls-content.js.map +0 -1
- package/dist/default/define/ui/controls-group.js.map +0 -1
- package/dist/default/define/ui/controls.js.map +0 -1
- package/dist/default/define/ui/dialog-backdrop.js.map +0 -1
- package/dist/default/define/ui/dialog-close.js.map +0 -1
- package/dist/default/define/ui/dialog-description.js.map +0 -1
- package/dist/default/define/ui/dialog-popup.js.map +0 -1
- package/dist/default/define/ui/dialog-title.js.map +0 -1
- package/dist/default/define/ui/dialog.js.map +0 -1
- package/dist/default/define/ui/error-dialog.js.map +0 -1
- package/dist/default/define/ui/fullscreen-button.js.map +0 -1
- package/dist/default/define/ui/gesture.js.map +0 -1
- package/dist/default/define/ui/hotkey.js.map +0 -1
- package/dist/default/define/ui/live-button.js.map +0 -1
- package/dist/default/define/ui/menu-checkbox-item.js.map +0 -1
- package/dist/default/define/ui/menu-content.js.map +0 -1
- package/dist/default/define/ui/menu-group-label.js.map +0 -1
- package/dist/default/define/ui/menu-group.js.map +0 -1
- package/dist/default/define/ui/menu-item-indicator.js.map +0 -1
- package/dist/default/define/ui/menu-item.js.map +0 -1
- package/dist/default/define/ui/menu-radio-group.js.map +0 -1
- package/dist/default/define/ui/menu-radio-item.js.map +0 -1
- package/dist/default/define/ui/menu-separator.js.map +0 -1
- package/dist/default/define/ui/menu.js.map +0 -1
- package/dist/default/define/ui/mute-button.js.map +0 -1
- package/dist/default/define/ui/pip-button.js.map +0 -1
- package/dist/default/define/ui/play-button.js.map +0 -1
- package/dist/default/define/ui/playback-rate-button.js.map +0 -1
- package/dist/default/define/ui/playback-rate-radio-group.js.map +0 -1
- package/dist/default/define/ui/popover.js.map +0 -1
- package/dist/default/define/ui/poster.js.map +0 -1
- package/dist/default/define/ui/quality-radio-group.js.map +0 -1
- package/dist/default/define/ui/seek-button.js.map +0 -1
- package/dist/default/define/ui/seek-indicator-value.js.map +0 -1
- package/dist/default/define/ui/seek-indicator.js.map +0 -1
- package/dist/default/define/ui/slider-buffer.js.map +0 -1
- package/dist/default/define/ui/slider-fill.js.map +0 -1
- package/dist/default/define/ui/slider-preview.js.map +0 -1
- package/dist/default/define/ui/slider-thumb.js.map +0 -1
- package/dist/default/define/ui/slider-thumbnail.js.map +0 -1
- package/dist/default/define/ui/slider-track.js.map +0 -1
- package/dist/default/define/ui/slider-value.js.map +0 -1
- package/dist/default/define/ui/slider.js.map +0 -1
- package/dist/default/define/ui/status-announcer.js.map +0 -1
- package/dist/default/define/ui/status-indicator-value.js.map +0 -1
- package/dist/default/define/ui/status-indicator.js.map +0 -1
- package/dist/default/define/ui/thumbnail.js.map +0 -1
- package/dist/default/define/ui/time-group.js.map +0 -1
- package/dist/default/define/ui/time-separator.js.map +0 -1
- package/dist/default/define/ui/time-slider-chapter-title.js.map +0 -1
- package/dist/default/define/ui/time-slider-chapters.js.map +0 -1
- package/dist/default/define/ui/time-slider.js.map +0 -1
- package/dist/default/define/ui/time.js.map +0 -1
- package/dist/default/define/ui/title.js.map +0 -1
- package/dist/default/define/ui/tooltip-group.js.map +0 -1
- package/dist/default/define/ui/tooltip-label.js.map +0 -1
- package/dist/default/define/ui/tooltip-shortcut.js.map +0 -1
- package/dist/default/define/ui/tooltip.js.map +0 -1
- package/dist/default/define/ui/volume-indicator-fill.js.map +0 -1
- package/dist/default/define/ui/volume-indicator-value.js.map +0 -1
- package/dist/default/define/ui/volume-indicator.js.map +0 -1
- package/dist/default/define/ui/volume-popover.js.map +0 -1
- package/dist/default/define/ui/volume-slider.js.map +0 -1
- package/dist/default/define/video/minimal-skin.js.map +0 -1
- package/dist/default/define/video/minimal-skin2.js.map +0 -1
- package/dist/default/define/video/minimal-ui.js.map +0 -1
- package/dist/default/define/video/player.js.map +0 -1
- package/dist/default/define/video/skin.js.map +0 -1
- package/dist/default/define/video/skin2.js.map +0 -1
- package/dist/default/define/video/ui.js.map +0 -1
- package/dist/default/extensions/google-cast/extension.js.map +0 -1
- package/dist/default/extensions/media-extension-element.js.map +0 -1
- package/dist/default/extensions/mux-data/extension.js.map +0 -1
- package/dist/default/i18n/cache-key.js.map +0 -1
- package/dist/default/i18n/context.js.map +0 -1
- package/dist/default/i18n/controller.js.map +0 -1
- package/dist/default/i18n/create-i18n.js.map +0 -1
- package/dist/default/i18n/locale.js.map +0 -1
- package/dist/default/i18n/locales/all/register.js.map +0 -1
- package/dist/default/i18n/locales/ar/register.js.map +0 -1
- package/dist/default/i18n/locales/az/register.js.map +0 -1
- package/dist/default/i18n/locales/bg/register.js.map +0 -1
- package/dist/default/i18n/locales/bn/register.js.map +0 -1
- package/dist/default/i18n/locales/bs/register.js.map +0 -1
- package/dist/default/i18n/locales/ca/register.js.map +0 -1
- package/dist/default/i18n/locales/cs/register.js.map +0 -1
- package/dist/default/i18n/locales/cy/register.js.map +0 -1
- package/dist/default/i18n/locales/da/register.js.map +0 -1
- package/dist/default/i18n/locales/de/register.js.map +0 -1
- package/dist/default/i18n/locales/el/register.js.map +0 -1
- package/dist/default/i18n/locales/en/register.js.map +0 -1
- package/dist/default/i18n/locales/es/register.js.map +0 -1
- package/dist/default/i18n/locales/et/register.js.map +0 -1
- package/dist/default/i18n/locales/eu/register.js.map +0 -1
- package/dist/default/i18n/locales/fa/register.js.map +0 -1
- package/dist/default/i18n/locales/fi/register.js.map +0 -1
- package/dist/default/i18n/locales/fr/register.js.map +0 -1
- package/dist/default/i18n/locales/gd/register.js.map +0 -1
- package/dist/default/i18n/locales/gl/register.js.map +0 -1
- package/dist/default/i18n/locales/he/register.js.map +0 -1
- package/dist/default/i18n/locales/hi/register.js.map +0 -1
- package/dist/default/i18n/locales/hr/register.js.map +0 -1
- package/dist/default/i18n/locales/hu/register.js.map +0 -1
- package/dist/default/i18n/locales/id/register.js.map +0 -1
- package/dist/default/i18n/locales/it/register.js.map +0 -1
- package/dist/default/i18n/locales/ja/register.js.map +0 -1
- package/dist/default/i18n/locales/ko/register.js.map +0 -1
- package/dist/default/i18n/locales/lt/register.js.map +0 -1
- package/dist/default/i18n/locales/lv/register.js.map +0 -1
- package/dist/default/i18n/locales/mr/register.js.map +0 -1
- package/dist/default/i18n/locales/nb/register.js.map +0 -1
- package/dist/default/i18n/locales/ne/register.js.map +0 -1
- package/dist/default/i18n/locales/nl/register.js.map +0 -1
- package/dist/default/i18n/locales/nn/register.js.map +0 -1
- package/dist/default/i18n/locales/oc/register.js.map +0 -1
- package/dist/default/i18n/locales/pl/register.js.map +0 -1
- package/dist/default/i18n/locales/pt/register.js.map +0 -1
- package/dist/default/i18n/locales/pt-BR/register.js.map +0 -1
- package/dist/default/i18n/locales/pt-PT/register.js.map +0 -1
- package/dist/default/i18n/locales/ro/register.js.map +0 -1
- package/dist/default/i18n/locales/ru/register.js.map +0 -1
- package/dist/default/i18n/locales/sk/register.js.map +0 -1
- package/dist/default/i18n/locales/sl/register.js.map +0 -1
- package/dist/default/i18n/locales/sr/register.js.map +0 -1
- package/dist/default/i18n/locales/sv/register.js.map +0 -1
- package/dist/default/i18n/locales/te/register.js.map +0 -1
- package/dist/default/i18n/locales/th/register.js.map +0 -1
- package/dist/default/i18n/locales/tr/register.js.map +0 -1
- package/dist/default/i18n/locales/uk/register.js.map +0 -1
- package/dist/default/i18n/locales/vi/register.js.map +0 -1
- package/dist/default/i18n/locales/zh/register.js.map +0 -1
- package/dist/default/i18n/locales/zh-CN/register.js.map +0 -1
- package/dist/default/i18n/locales/zh-TW/register.js.map +0 -1
- package/dist/default/i18n/provider-element.js.map +0 -1
- package/dist/default/i18n/provider-mixin.js.map +0 -1
- package/dist/default/i18n/render-text.js.map +0 -1
- package/dist/default/i18n/text-mixin.js.map +0 -1
- package/dist/default/icons/dist/element/base.js.map +0 -1
- package/dist/default/icons/dist/element/default/icons.js.map +0 -1
- package/dist/default/icons/dist/element/default/index.js.map +0 -1
- package/dist/default/icons/dist/element/index.js.map +0 -1
- package/dist/default/icons/dist/element/minimal/icons.js.map +0 -1
- package/dist/default/icons/dist/element/minimal/index.js.map +0 -1
- package/dist/default/icons/dist/html/default/airplay-enter.js.map +0 -1
- package/dist/default/icons/dist/html/default/airplay-exit.js.map +0 -1
- package/dist/default/icons/dist/html/default/captions-off.js.map +0 -1
- package/dist/default/icons/dist/html/default/captions-on.js.map +0 -1
- package/dist/default/icons/dist/html/default/cast-enter.js.map +0 -1
- package/dist/default/icons/dist/html/default/cast-exit.js.map +0 -1
- package/dist/default/icons/dist/html/default/check.js.map +0 -1
- package/dist/default/icons/dist/html/default/chevron.js.map +0 -1
- package/dist/default/icons/dist/html/default/fullscreen-enter.js.map +0 -1
- package/dist/default/icons/dist/html/default/fullscreen-exit.js.map +0 -1
- package/dist/default/icons/dist/html/default/gear.js.map +0 -1
- package/dist/default/icons/dist/html/default/pause.js.map +0 -1
- package/dist/default/icons/dist/html/default/pip-enter.js.map +0 -1
- package/dist/default/icons/dist/html/default/pip-exit.js.map +0 -1
- package/dist/default/icons/dist/html/default/play.js.map +0 -1
- package/dist/default/icons/dist/html/default/quality.js.map +0 -1
- package/dist/default/icons/dist/html/default/restart.js.map +0 -1
- package/dist/default/icons/dist/html/default/seek.js.map +0 -1
- package/dist/default/icons/dist/html/default/speech.js.map +0 -1
- package/dist/default/icons/dist/html/default/speed.js.map +0 -1
- package/dist/default/icons/dist/html/default/spinner.js.map +0 -1
- package/dist/default/icons/dist/html/default/switches.js.map +0 -1
- package/dist/default/icons/dist/html/default/volume-high.js.map +0 -1
- package/dist/default/icons/dist/html/default/volume-low.js.map +0 -1
- package/dist/default/icons/dist/html/default/volume-off.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/airplay-enter.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/airplay-exit.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/captions-off.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/captions-on.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/cast-enter.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/cast-exit.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/check.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/chevron.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/fullscreen-enter.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/fullscreen-exit.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/gear.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/pause.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/pip-enter.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/pip-exit.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/play.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/quality.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/restart.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/seek.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/speech.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/speed.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/spinner.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/switches.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/volume-high.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/volume-low.js.map +0 -1
- package/dist/default/icons/dist/html/minimal/volume-off.js.map +0 -1
- package/dist/default/icons/element/register/index.js.map +0 -1
- package/dist/default/internal/skins/default-audio/register.js.map +0 -1
- package/dist/default/internal/skins/default-audio/template.js.map +0 -1
- package/dist/default/internal/skins/default-live-audio/register.js.map +0 -1
- package/dist/default/internal/skins/default-live-audio/template.js.map +0 -1
- package/dist/default/internal/skins/default-live-video/register.js.map +0 -1
- package/dist/default/internal/skins/default-live-video/template.js.map +0 -1
- package/dist/default/internal/skins/default-video/register.js.map +0 -1
- package/dist/default/internal/skins/default-video/template.js.map +0 -1
- package/dist/default/internal/skins/minimal-audio/register.js.map +0 -1
- package/dist/default/internal/skins/minimal-audio/template.js.map +0 -1
- package/dist/default/internal/skins/minimal-live-audio/register.js.map +0 -1
- package/dist/default/internal/skins/minimal-live-audio/template.js.map +0 -1
- package/dist/default/internal/skins/minimal-live-video/register.js.map +0 -1
- package/dist/default/internal/skins/minimal-live-video/template.js.map +0 -1
- package/dist/default/internal/skins/minimal-video/register.js.map +0 -1
- package/dist/default/internal/skins/minimal-video/template.js.map +0 -1
- package/dist/default/media/background-video/adapter.js.map +0 -1
- package/dist/default/media/background-video/template.js.map +0 -1
- package/dist/default/media/cloudflare-video/adapter.js.map +0 -1
- package/dist/default/media/dash-video/adapter.js.map +0 -1
- package/dist/default/media/hls-audio/adapter.js.map +0 -1
- package/dist/default/media/hls-background-video/adapter.js.map +0 -1
- package/dist/default/media/hls-video/adapter.js.map +0 -1
- package/dist/default/media/hlsjs-video/adapter.js.map +0 -1
- package/dist/default/media/mux-audio/hls-js.js.map +0 -1
- package/dist/default/media/mux-audio/mixin.js.map +0 -1
- package/dist/default/media/mux-audio/spf.js.map +0 -1
- package/dist/default/media/mux-video/hls-js.js.map +0 -1
- package/dist/default/media/mux-video/mixin.js.map +0 -1
- package/dist/default/media/mux-video/spf.js.map +0 -1
- package/dist/default/media/native-hls-video/adapter.js.map +0 -1
- package/dist/default/media/shaka-video/adapter.js.map +0 -1
- package/dist/default/media/spotify-audio/adapter.js.map +0 -1
- package/dist/default/media/tiktok-video/adapter.js.map +0 -1
- package/dist/default/media/twitch-video/adapter.js.map +0 -1
- package/dist/default/media/vimeo-video/adapter.js.map +0 -1
- package/dist/default/media/wistia-video/adapter.js.map +0 -1
- package/dist/default/media/youtube-video/adapter.js.map +0 -1
- package/dist/default/player/context.js.map +0 -1
- package/dist/default/player/controller.js.map +0 -1
- package/dist/default/player/create-player.js.map +0 -1
- package/dist/default/player/element.js.map +0 -1
- package/dist/default/player/popup-group-context.js.map +0 -1
- package/dist/default/presets/audio/minimal-skin.js.map +0 -1
- package/dist/default/presets/audio/player.js.map +0 -1
- package/dist/default/presets/audio/skin.js.map +0 -1
- package/dist/default/presets/background/player.js.map +0 -1
- package/dist/default/presets/background/skin.js.map +0 -1
- package/dist/default/presets/live-audio/minimal-skin.js.map +0 -1
- package/dist/default/presets/live-audio/player.js.map +0 -1
- package/dist/default/presets/live-audio/skin.js.map +0 -1
- package/dist/default/presets/live-video/minimal-skin.js.map +0 -1
- package/dist/default/presets/live-video/player.js.map +0 -1
- package/dist/default/presets/live-video/skin.js.map +0 -1
- package/dist/default/presets/skin.js.map +0 -1
- package/dist/default/presets/video/minimal-skin.js.map +0 -1
- package/dist/default/presets/video/player.js.map +0 -1
- package/dist/default/presets/video/skin.js.map +0 -1
- package/dist/default/registration/safe-define.js.map +0 -1
- package/dist/default/registration/ui-compounds.js.map +0 -1
- package/dist/default/store/media-attach-mixin.js.map +0 -1
- package/dist/default/ui/airplay-button/element.js.map +0 -1
- package/dist/default/ui/alert-dialog/element.js.map +0 -1
- package/dist/default/ui/audio-track-radio-group/element.js.map +0 -1
- package/dist/default/ui/buffering-indicator/element.js.map +0 -1
- package/dist/default/ui/captions-button/element.js.map +0 -1
- package/dist/default/ui/captions-radio-group/element.js.map +0 -1
- package/dist/default/ui/cast-button/element.js.map +0 -1
- package/dist/default/ui/command-for.js.map +0 -1
- package/dist/default/ui/container/element.js.map +0 -1
- package/dist/default/ui/context-part-element.js.map +0 -1
- package/dist/default/ui/controls/backdrop.js.map +0 -1
- package/dist/default/ui/controls/content.js.map +0 -1
- package/dist/default/ui/controls/context.js.map +0 -1
- package/dist/default/ui/controls/element.js.map +0 -1
- package/dist/default/ui/controls/group.js.map +0 -1
- package/dist/default/ui/dialog/backdrop.js.map +0 -1
- package/dist/default/ui/dialog/close.js.map +0 -1
- package/dist/default/ui/dialog/context.js.map +0 -1
- package/dist/default/ui/dialog/description.js.map +0 -1
- package/dist/default/ui/dialog/element.js.map +0 -1
- package/dist/default/ui/dialog/popup.js.map +0 -1
- package/dist/default/ui/dialog/title.js.map +0 -1
- package/dist/default/ui/error-dialog/element.js.map +0 -1
- package/dist/default/ui/fullscreen-button/element.js.map +0 -1
- package/dist/default/ui/gesture/element.js.map +0 -1
- package/dist/default/ui/hotkey/aria-key-shortcuts-controller.js.map +0 -1
- package/dist/default/ui/hotkey/element.js.map +0 -1
- package/dist/default/ui/input-indicator/element.js.map +0 -1
- package/dist/default/ui/input-indicator/live-indicator.js.map +0 -1
- package/dist/default/ui/live-button/element.js.map +0 -1
- package/dist/default/ui/media-button-element.js.map +0 -1
- package/dist/default/ui/media-ui-element.js.map +0 -1
- package/dist/default/ui/menu/checkbox-item.js.map +0 -1
- package/dist/default/ui/menu/content.js.map +0 -1
- package/dist/default/ui/menu/context.js.map +0 -1
- package/dist/default/ui/menu/element.js.map +0 -1
- package/dist/default/ui/menu/group-controller.js.map +0 -1
- package/dist/default/ui/menu/group-label.js.map +0 -1
- package/dist/default/ui/menu/group.js.map +0 -1
- package/dist/default/ui/menu/item-indicator.js.map +0 -1
- package/dist/default/ui/menu/item.js.map +0 -1
- package/dist/default/ui/menu/radio-group.js.map +0 -1
- package/dist/default/ui/menu/radio-item.js.map +0 -1
- package/dist/default/ui/menu/separator.js.map +0 -1
- package/dist/default/ui/mute-button/element.js.map +0 -1
- package/dist/default/ui/pip-button/element.js.map +0 -1
- package/dist/default/ui/play-button/element.js.map +0 -1
- package/dist/default/ui/playback-rate-button/element.js.map +0 -1
- package/dist/default/ui/playback-rate-radio-group/element.js.map +0 -1
- package/dist/default/ui/popover/element.js.map +0 -1
- package/dist/default/ui/position-controller.js.map +0 -1
- package/dist/default/ui/poster/element.js.map +0 -1
- package/dist/default/ui/quality-radio-group/element.js.map +0 -1
- package/dist/default/ui/radio-group/context.js.map +0 -1
- package/dist/default/ui/radio-group/element.js.map +0 -1
- package/dist/default/ui/radio-options/controller.js.map +0 -1
- package/dist/default/ui/seek-button/element.js.map +0 -1
- package/dist/default/ui/seek-indicator/element.js.map +0 -1
- package/dist/default/ui/seek-indicator/value.js.map +0 -1
- package/dist/default/ui/slider/buffer.js.map +0 -1
- package/dist/default/ui/slider/context.js.map +0 -1
- package/dist/default/ui/slider/element.js.map +0 -1
- package/dist/default/ui/slider/fill.js.map +0 -1
- package/dist/default/ui/slider/preview.js.map +0 -1
- package/dist/default/ui/slider/thumb.js.map +0 -1
- package/dist/default/ui/slider/thumbnail.js.map +0 -1
- package/dist/default/ui/slider/track.js.map +0 -1
- package/dist/default/ui/slider/value.js.map +0 -1
- package/dist/default/ui/status-announcer/element.js.map +0 -1
- package/dist/default/ui/status-indicator/element.js.map +0 -1
- package/dist/default/ui/status-indicator/value.js.map +0 -1
- package/dist/default/ui/text/element.js.map +0 -1
- package/dist/default/ui/thumbnail/element.js.map +0 -1
- package/dist/default/ui/time/element.js.map +0 -1
- package/dist/default/ui/time/group.js.map +0 -1
- package/dist/default/ui/time/separator.js.map +0 -1
- package/dist/default/ui/time-slider/chapter-title.js.map +0 -1
- package/dist/default/ui/time-slider/chapters.js.map +0 -1
- package/dist/default/ui/time-slider/element.js.map +0 -1
- package/dist/default/ui/title/element.js.map +0 -1
- package/dist/default/ui/tooltip/context.js.map +0 -1
- package/dist/default/ui/tooltip/element.js.map +0 -1
- package/dist/default/ui/tooltip/group.js.map +0 -1
- package/dist/default/ui/tooltip/label.js.map +0 -1
- package/dist/default/ui/tooltip/shortcut.js.map +0 -1
- package/dist/default/ui/ui-element.js.map +0 -1
- package/dist/default/ui/volume-indicator/element.js.map +0 -1
- package/dist/default/ui/volume-indicator/fill.js.map +0 -1
- package/dist/default/ui/volume-indicator/value.js.map +0 -1
- package/dist/default/ui/volume-popover/element.js.map +0 -1
- package/dist/default/ui/volume-slider/element.js.map +0 -1
- package/dist/dev/define/extensions/google-cast.d.ts.map +0 -1
- package/dist/dev/define/extensions/mux-data.d.ts.map +0 -1
- package/dist/dev/define/i18n.d.ts.map +0 -1
- package/dist/dev/define/media/background-video.d.ts.map +0 -1
- package/dist/dev/define/media/cloudflare-video.d.ts.map +0 -1
- package/dist/dev/define/media/dash-video.d.ts.map +0 -1
- package/dist/dev/define/media/hls-audio.d.ts.map +0 -1
- package/dist/dev/define/media/hls-background-video.d.ts.map +0 -1
- package/dist/dev/define/media/hls-video.d.ts.map +0 -1
- package/dist/dev/define/media/hlsjs-video.d.ts.map +0 -1
- package/dist/dev/define/media/mux-audio/hls-js.d.ts.map +0 -1
- package/dist/dev/define/media/mux-audio/spf.d.ts.map +0 -1
- package/dist/dev/define/media/mux-background-video.d.ts.map +0 -1
- package/dist/dev/define/media/mux-video/hls-js.d.ts.map +0 -1
- package/dist/dev/define/media/mux-video/spf.d.ts.map +0 -1
- package/dist/dev/define/media/native-hls-video.d.ts.map +0 -1
- package/dist/dev/define/media/shaka-video.d.ts.map +0 -1
- package/dist/dev/define/media/spotify-audio.d.ts.map +0 -1
- package/dist/dev/define/media/tiktok-video.d.ts.map +0 -1
- package/dist/dev/define/media/twitch-video.d.ts.map +0 -1
- package/dist/dev/define/media/vimeo-video.d.ts.map +0 -1
- package/dist/dev/define/media/wistia-video.d.ts.map +0 -1
- package/dist/dev/define/media/youtube-video.d.ts.map +0 -1
- package/dist/dev/define/shared.css +0 -27
- package/dist/dev/define/shared.js +0 -6
- package/dist/dev/define/shared.js.map +0 -1
- package/dist/dev/define/ui/airplay-button.d.ts.map +0 -1
- package/dist/dev/define/ui/alert-dialog.d.ts.map +0 -1
- package/dist/dev/define/ui/audio-track-radio-group.d.ts.map +0 -1
- package/dist/dev/define/ui/buffering-indicator.d.ts.map +0 -1
- package/dist/dev/define/ui/captions-button.d.ts.map +0 -1
- package/dist/dev/define/ui/captions-radio-group.d.ts.map +0 -1
- package/dist/dev/define/ui/cast-button.d.ts.map +0 -1
- package/dist/dev/define/ui/container.d.ts.map +0 -1
- package/dist/dev/define/ui/controls-backdrop.d.ts.map +0 -1
- package/dist/dev/define/ui/controls-content.d.ts.map +0 -1
- package/dist/dev/define/ui/controls-group.d.ts.map +0 -1
- package/dist/dev/define/ui/controls.d.ts.map +0 -1
- package/dist/dev/define/ui/dialog-backdrop.d.ts.map +0 -1
- package/dist/dev/define/ui/dialog-close.d.ts.map +0 -1
- package/dist/dev/define/ui/dialog-description.d.ts.map +0 -1
- package/dist/dev/define/ui/dialog-popup.d.ts.map +0 -1
- package/dist/dev/define/ui/dialog-title.d.ts.map +0 -1
- package/dist/dev/define/ui/dialog.d.ts.map +0 -1
- package/dist/dev/define/ui/error-dialog.d.ts.map +0 -1
- package/dist/dev/define/ui/fullscreen-button.d.ts.map +0 -1
- package/dist/dev/define/ui/gesture.d.ts.map +0 -1
- package/dist/dev/define/ui/hotkey.d.ts.map +0 -1
- package/dist/dev/define/ui/live-button.d.ts.map +0 -1
- package/dist/dev/define/ui/menu-checkbox-item.d.ts.map +0 -1
- package/dist/dev/define/ui/menu-content.d.ts.map +0 -1
- package/dist/dev/define/ui/menu-group-label.d.ts.map +0 -1
- package/dist/dev/define/ui/menu-group.d.ts.map +0 -1
- package/dist/dev/define/ui/menu-item-indicator.d.ts.map +0 -1
- package/dist/dev/define/ui/menu-item.d.ts.map +0 -1
- package/dist/dev/define/ui/menu-radio-group.d.ts.map +0 -1
- package/dist/dev/define/ui/menu-radio-item.d.ts.map +0 -1
- package/dist/dev/define/ui/menu-separator.d.ts.map +0 -1
- package/dist/dev/define/ui/menu.d.ts.map +0 -1
- package/dist/dev/define/ui/mute-button.d.ts.map +0 -1
- package/dist/dev/define/ui/pip-button.d.ts.map +0 -1
- package/dist/dev/define/ui/play-button.d.ts.map +0 -1
- package/dist/dev/define/ui/playback-rate-button.d.ts.map +0 -1
- package/dist/dev/define/ui/playback-rate-radio-group.d.ts.map +0 -1
- package/dist/dev/define/ui/popover.d.ts.map +0 -1
- package/dist/dev/define/ui/poster.d.ts.map +0 -1
- package/dist/dev/define/ui/quality-radio-group.d.ts.map +0 -1
- package/dist/dev/define/ui/seek-button.d.ts.map +0 -1
- package/dist/dev/define/ui/seek-indicator-value.d.ts.map +0 -1
- package/dist/dev/define/ui/seek-indicator.d.ts.map +0 -1
- package/dist/dev/define/ui/slider-buffer.d.ts.map +0 -1
- package/dist/dev/define/ui/slider-fill.d.ts.map +0 -1
- package/dist/dev/define/ui/slider-preview.d.ts.map +0 -1
- package/dist/dev/define/ui/slider-thumb.d.ts.map +0 -1
- package/dist/dev/define/ui/slider-thumbnail.d.ts.map +0 -1
- package/dist/dev/define/ui/slider-track.d.ts.map +0 -1
- package/dist/dev/define/ui/slider-value.d.ts.map +0 -1
- package/dist/dev/define/ui/slider.d.ts.map +0 -1
- package/dist/dev/define/ui/status-announcer.d.ts.map +0 -1
- package/dist/dev/define/ui/status-indicator-value.d.ts.map +0 -1
- package/dist/dev/define/ui/status-indicator.d.ts.map +0 -1
- package/dist/dev/define/ui/thumbnail.d.ts.map +0 -1
- package/dist/dev/define/ui/time-group.d.ts.map +0 -1
- package/dist/dev/define/ui/time-separator.d.ts.map +0 -1
- package/dist/dev/define/ui/time-slider-chapter-title.d.ts.map +0 -1
- package/dist/dev/define/ui/time-slider-chapters.d.ts.map +0 -1
- package/dist/dev/define/ui/time-slider.d.ts.map +0 -1
- package/dist/dev/define/ui/time.d.ts.map +0 -1
- package/dist/dev/define/ui/title.d.ts.map +0 -1
- package/dist/dev/define/ui/tooltip-group.d.ts.map +0 -1
- package/dist/dev/define/ui/tooltip-label.d.ts.map +0 -1
- package/dist/dev/define/ui/tooltip-shortcut.d.ts.map +0 -1
- package/dist/dev/define/ui/tooltip.d.ts.map +0 -1
- package/dist/dev/define/ui/volume-indicator-fill.d.ts.map +0 -1
- package/dist/dev/define/ui/volume-indicator-value.d.ts.map +0 -1
- package/dist/dev/define/ui/volume-indicator.d.ts.map +0 -1
- package/dist/dev/define/ui/volume-popover.d.ts.map +0 -1
- package/dist/dev/define/ui/volume-slider.d.ts.map +0 -1
- package/dist/dev/extensions/google-cast/extension.d.ts.map +0 -1
- package/dist/dev/extensions/media-extension-element.d.ts.map +0 -1
- package/dist/dev/extensions/mux-data/extension.d.ts.map +0 -1
- package/dist/dev/i18n/context.d.ts.map +0 -1
- package/dist/dev/i18n/controller.d.ts.map +0 -1
- package/dist/dev/i18n/create-i18n.d.ts.map +0 -1
- package/dist/dev/i18n/locale.d.ts.map +0 -1
- package/dist/dev/i18n/provider-element.d.ts.map +0 -1
- package/dist/dev/i18n/provider-mixin.d.ts.map +0 -1
- package/dist/dev/i18n/render-text.d.ts.map +0 -1
- package/dist/dev/i18n/text-mixin.d.ts.map +0 -1
- package/dist/dev/i18n/types.d.ts.map +0 -1
- package/dist/dev/icons/dist/element/base.d.ts.map +0 -1
- package/dist/dev/icons/dist/html/default/index.d.ts.map +0 -1
- package/dist/dev/icons/dist/html/minimal/index.d.ts.map +0 -1
- package/dist/dev/icons/element/register/index.d.ts.map +0 -1
- package/dist/dev/index.d.ts.map +0 -1
- package/dist/dev/media/background-video/adapter.d.ts.map +0 -1
- package/dist/dev/media/background-video/template.d.ts.map +0 -1
- package/dist/dev/media/cloudflare-video/adapter.d.ts.map +0 -1
- package/dist/dev/media/dash-video/adapter.d.ts.map +0 -1
- package/dist/dev/media/hls-audio/adapter.d.ts.map +0 -1
- package/dist/dev/media/hls-background-video/adapter.d.ts.map +0 -1
- package/dist/dev/media/hls-video/adapter.d.ts.map +0 -1
- package/dist/dev/media/hlsjs-video/adapter.d.ts.map +0 -1
- package/dist/dev/media/mux-audio/hls-js.d.ts.map +0 -1
- package/dist/dev/media/mux-audio/spf.d.ts.map +0 -1
- package/dist/dev/media/mux-video/hls-js.d.ts.map +0 -1
- package/dist/dev/media/mux-video/spf.d.ts.map +0 -1
- package/dist/dev/media/native-hls-video/adapter.d.ts.map +0 -1
- package/dist/dev/media/shaka-video/adapter.d.ts.map +0 -1
- package/dist/dev/media/spotify-audio/adapter.d.ts.map +0 -1
- package/dist/dev/media/tiktok-video/adapter.d.ts.map +0 -1
- package/dist/dev/media/twitch-video/adapter.d.ts.map +0 -1
- package/dist/dev/media/vimeo-video/adapter.d.ts.map +0 -1
- package/dist/dev/media/wistia-video/adapter.d.ts.map +0 -1
- package/dist/dev/media/youtube-video/adapter.d.ts.map +0 -1
- package/dist/dev/player/context.d.ts.map +0 -1
- package/dist/dev/player/controller.d.ts.map +0 -1
- package/dist/dev/player/create-player.d.ts.map +0 -1
- package/dist/dev/presets/audio/minimal-skin.d.ts.map +0 -1
- package/dist/dev/presets/audio/player.d.ts.map +0 -1
- package/dist/dev/presets/audio/skin.d.ts.map +0 -1
- package/dist/dev/presets/background/player.d.ts.map +0 -1
- package/dist/dev/presets/background/skin.d.ts.map +0 -1
- package/dist/dev/presets/live-audio/minimal-skin.d.ts.map +0 -1
- package/dist/dev/presets/live-audio/player.d.ts.map +0 -1
- package/dist/dev/presets/live-audio/skin.d.ts.map +0 -1
- package/dist/dev/presets/live-video/minimal-skin.d.ts.map +0 -1
- package/dist/dev/presets/live-video/player.d.ts.map +0 -1
- package/dist/dev/presets/live-video/skin.d.ts.map +0 -1
- package/dist/dev/presets/skin.d.ts.map +0 -1
- package/dist/dev/presets/video/minimal-skin.d.ts.map +0 -1
- package/dist/dev/presets/video/player.d.ts.map +0 -1
- package/dist/dev/presets/video/skin.d.ts.map +0 -1
- package/dist/dev/store/media-attach-mixin.d.ts.map +0 -1
- package/dist/dev/store/types.d.ts.map +0 -1
- package/dist/dev/ui/airplay-button/element.d.ts.map +0 -1
- package/dist/dev/ui/alert-dialog/element.d.ts.map +0 -1
- package/dist/dev/ui/audio-track-radio-group/element.d.ts.map +0 -1
- package/dist/dev/ui/buffering-indicator/element.d.ts.map +0 -1
- package/dist/dev/ui/captions-button/element.d.ts.map +0 -1
- package/dist/dev/ui/captions-radio-group/element.d.ts.map +0 -1
- package/dist/dev/ui/cast-button/element.d.ts.map +0 -1
- package/dist/dev/ui/container/element.d.ts.map +0 -1
- package/dist/dev/ui/context-part-element.d.ts.map +0 -1
- package/dist/dev/ui/controls/backdrop.d.ts.map +0 -1
- package/dist/dev/ui/controls/content.d.ts.map +0 -1
- package/dist/dev/ui/controls/context.d.ts.map +0 -1
- package/dist/dev/ui/controls/element.d.ts.map +0 -1
- package/dist/dev/ui/controls/group.d.ts.map +0 -1
- package/dist/dev/ui/dialog/backdrop.d.ts.map +0 -1
- package/dist/dev/ui/dialog/close.d.ts.map +0 -1
- package/dist/dev/ui/dialog/context.d.ts.map +0 -1
- package/dist/dev/ui/dialog/description.d.ts.map +0 -1
- package/dist/dev/ui/dialog/element.d.ts.map +0 -1
- package/dist/dev/ui/dialog/popup.d.ts.map +0 -1
- package/dist/dev/ui/dialog/title.d.ts.map +0 -1
- package/dist/dev/ui/error-dialog/element.d.ts.map +0 -1
- package/dist/dev/ui/fullscreen-button/element.d.ts.map +0 -1
- package/dist/dev/ui/gesture/element.d.ts.map +0 -1
- package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.d.ts.map +0 -1
- package/dist/dev/ui/hotkey/element.d.ts.map +0 -1
- package/dist/dev/ui/input-indicator/element.d.ts.map +0 -1
- package/dist/dev/ui/input-indicator/live-indicator.d.ts.map +0 -1
- package/dist/dev/ui/live-button/element.d.ts.map +0 -1
- package/dist/dev/ui/media-button-element.d.ts.map +0 -1
- package/dist/dev/ui/media-ui-element.d.ts.map +0 -1
- package/dist/dev/ui/menu/checkbox-item.d.ts.map +0 -1
- package/dist/dev/ui/menu/content.d.ts.map +0 -1
- package/dist/dev/ui/menu/context.d.ts.map +0 -1
- package/dist/dev/ui/menu/element.d.ts.map +0 -1
- package/dist/dev/ui/menu/group-label.d.ts.map +0 -1
- package/dist/dev/ui/menu/group.d.ts.map +0 -1
- package/dist/dev/ui/menu/item-indicator.d.ts.map +0 -1
- package/dist/dev/ui/menu/item.d.ts.map +0 -1
- package/dist/dev/ui/menu/radio-group.d.ts.map +0 -1
- package/dist/dev/ui/menu/radio-item.d.ts.map +0 -1
- package/dist/dev/ui/menu/separator.d.ts.map +0 -1
- package/dist/dev/ui/mute-button/element.d.ts.map +0 -1
- package/dist/dev/ui/pip-button/element.d.ts.map +0 -1
- package/dist/dev/ui/play-button/element.d.ts.map +0 -1
- package/dist/dev/ui/playback-rate-button/element.d.ts.map +0 -1
- package/dist/dev/ui/playback-rate-radio-group/element.d.ts.map +0 -1
- package/dist/dev/ui/popover/element.d.ts.map +0 -1
- package/dist/dev/ui/poster/element.d.ts.map +0 -1
- package/dist/dev/ui/quality-radio-group/element.d.ts.map +0 -1
- package/dist/dev/ui/radio-group/context.d.ts.map +0 -1
- package/dist/dev/ui/radio-group/element.d.ts.map +0 -1
- package/dist/dev/ui/seek-button/element.d.ts.map +0 -1
- package/dist/dev/ui/seek-indicator/element.d.ts.map +0 -1
- package/dist/dev/ui/seek-indicator/value.d.ts.map +0 -1
- package/dist/dev/ui/slider/buffer.d.ts.map +0 -1
- package/dist/dev/ui/slider/context.d.ts.map +0 -1
- package/dist/dev/ui/slider/element.d.ts.map +0 -1
- package/dist/dev/ui/slider/events.d.ts.map +0 -1
- package/dist/dev/ui/slider/fill.d.ts.map +0 -1
- package/dist/dev/ui/slider/preview.d.ts.map +0 -1
- package/dist/dev/ui/slider/thumb.d.ts.map +0 -1
- package/dist/dev/ui/slider/thumbnail.d.ts.map +0 -1
- package/dist/dev/ui/slider/track.d.ts.map +0 -1
- package/dist/dev/ui/slider/value.d.ts.map +0 -1
- package/dist/dev/ui/status-announcer/element.d.ts.map +0 -1
- package/dist/dev/ui/status-indicator/element.d.ts.map +0 -1
- package/dist/dev/ui/status-indicator/value.d.ts.map +0 -1
- package/dist/dev/ui/text/element.d.ts.map +0 -1
- package/dist/dev/ui/thumbnail/element.d.ts.map +0 -1
- package/dist/dev/ui/time/element.d.ts.map +0 -1
- package/dist/dev/ui/time/group.d.ts.map +0 -1
- package/dist/dev/ui/time/separator.d.ts.map +0 -1
- package/dist/dev/ui/time-slider/chapter-title.d.ts.map +0 -1
- package/dist/dev/ui/time-slider/chapters.d.ts.map +0 -1
- package/dist/dev/ui/time-slider/element.d.ts.map +0 -1
- package/dist/dev/ui/title/element.d.ts.map +0 -1
- package/dist/dev/ui/tooltip/context.d.ts.map +0 -1
- package/dist/dev/ui/tooltip/element.d.ts.map +0 -1
- package/dist/dev/ui/tooltip/group.d.ts.map +0 -1
- package/dist/dev/ui/tooltip/label.d.ts.map +0 -1
- package/dist/dev/ui/tooltip/shortcut.d.ts.map +0 -1
- package/dist/dev/ui/ui-element.d.ts.map +0 -1
- package/dist/dev/ui/volume-indicator/element.d.ts.map +0 -1
- package/dist/dev/ui/volume-indicator/fill.d.ts.map +0 -1
- package/dist/dev/ui/volume-indicator/value.d.ts.map +0 -1
- package/dist/dev/ui/volume-popover/element.d.ts.map +0 -1
- package/dist/dev/ui/volume-slider/element.d.ts.map +0 -1
- package/docs/concepts/accessibility.md +0 -68
- package/docs/concepts/browser-support.md +0 -45
- package/docs/concepts/cdn.md +0 -119
- package/docs/concepts/custom-element-lifecycle.md +0 -115
- package/docs/concepts/security.md +0 -32
- package/docs/concepts/skins.md +0 -188
- package/docs/concepts/v10-roadmap.md +0 -75
- package/docs/how-to/add-keyboard-shortcuts-and-gestures.md +0 -98
- package/docs/how-to/build-with-ai.md +0 -39
- package/docs/how-to/build-your-own-component.md +0 -350
- package/docs/how-to/customize-skins.md +0 -358
- package/docs/how-to/go-fullscreen-and-lock-orientation.md +0 -147
- package/docs/how-to/handle-playback-errors.md +0 -88
- package/docs/how-to/installation.md +0 -165
- package/docs/how-to/migrate-from-plyr.md +0 -406
- package/docs/how-to/migrate-from-video-js-8.md +0 -626
- package/docs/how-to/play-live-streams.md +0 -116
- package/docs/how-to/show-captions-and-subtitles.md +0 -140
- package/docs/how-to/show-timeline-thumbnail-previews.md +0 -164
- package/docs/reference/aria-key-shortcuts-controller.md +0 -117
- package/docs/reference/audio-minimal-skin.md +0 -43
- package/docs/reference/audio-skin.md +0 -43
- package/docs/reference/background-video-skin.md +0 -39
- package/docs/reference/cloudflare-video.md +0 -513
- package/docs/reference/create-translator.md +0 -81
- package/docs/reference/dash-video.md +0 -363
- package/docs/reference/feature-text-tracks.md +0 -134
- package/docs/reference/google-cast.md +0 -83
- package/docs/reference/hls-audio.md +0 -212
- package/docs/reference/hls-background-video.md +0 -100
- package/docs/reference/hls-video.md +0 -339
- package/docs/reference/hlsjs-video.md +0 -1047
- package/docs/reference/html-i-18-n-context.md +0 -55
- package/docs/reference/live-video-minimal-skin.md +0 -51
- package/docs/reference/live-video-skin.md +0 -51
- package/docs/reference/media-attach-mixin.md +0 -101
- package/docs/reference/mux-audio.md +0 -951
- package/docs/reference/mux-data.md +0 -107
- package/docs/reference/mux-video.md +0 -1152
- package/docs/reference/native-hls-video.md +0 -375
- package/docs/reference/player-context.md +0 -60
- package/docs/reference/popover.md +0 -505
- package/docs/reference/shaka-video.md +0 -642
- package/docs/reference/slider.md +0 -859
- package/docs/reference/snapshot-controller.md +0 -244
- package/docs/reference/spotify-audio.md +0 -424
- package/docs/reference/store-controller.md +0 -208
- package/docs/reference/thumbnail.md +0 -386
- package/docs/reference/tiktok-video.md +0 -534
- package/docs/reference/tooltip.md +0 -631
- package/docs/reference/translation-phrases.md +0 -453
- package/docs/reference/twitch-video.md +0 -477
- package/docs/reference/video-minimal-skin.md +0 -49
- package/docs/reference/video-skin.md +0 -49
- package/docs/reference/vimeo-video.md +0 -1056
- package/docs/reference/volume-popover.md +0 -527
- package/docs/reference/volume-slider.md +0 -759
- package/docs/reference/youtube-video.md +0 -603
|
@@ -7,6 +7,10 @@ import { applyStateDataAttrs, logMissingFeature, selectControls } from "@videojs
|
|
|
7
7
|
import { ContextProvider } from "@videojs/element/context";
|
|
8
8
|
import { isFunction } from "@videojs/utils/predicate";
|
|
9
9
|
//#region src/ui/controls/element.ts
|
|
10
|
+
/**
|
|
11
|
+
* Tracks controls visibility, reflects it as data attributes, and shares it with its descendant controls parts. Hiding
|
|
12
|
+
* the controls closes any popup open inside it.
|
|
13
|
+
*/
|
|
10
14
|
var ControlsElement = class extends UIElement {
|
|
11
15
|
constructor(..._args) {
|
|
12
16
|
super(..._args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","names":["#core","#mediaState","#provider","#visible","#closeOwnedOverlays"],"sources":["../../../../src/ui/controls/element.ts"],"sourcesContent":["import { ControlsCore, ControlsDataAttrs, type ControlsVisibility, POPUP_HOST_SELECTOR } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectControls } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\nimport { isFunction } from '@videojs/utils/predicate';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { UIElement } from '../ui-element';\nimport { controlsContext } from './context';\n\nexport class ControlsElement extends UIElement {\n static readonly tagName = 'media-controls';\n\n static override properties = {\n visibility: { type: String },\n } satisfies PropertyDeclarationMap<'visibility'>;\n\n visibility: ControlsVisibility = ControlsCore.defaultProps.visibility;\n\n readonly #core = new ControlsCore();\n readonly #mediaState = new PlayerController(this, playerContext, selectControls);\n readonly #provider = new ContextProvider(this, { context: controlsContext });\n #visible = true;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (__DEV__ && this.visibility === 'auto' && !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 this.#core.setProps({ visibility: this.visibility });\n this.#core.setMedia(this.#mediaState.value ?? null);\n\n const state = this.#core.getState();\n if (!state) return;\n\n applyStateDataAttrs(this, state, ControlsDataAttrs);\n\n this.#provider.setValue({\n state,\n stateAttrMap: ControlsDataAttrs,\n });\n\n const wasVisible = this.#visible;\n\n this.#visible = state.visible;\n\n if (wasVisible && !state.visible) {\n this.#closeOwnedOverlays();\n }\n }\n\n #closeOwnedOverlays(): void {\n for (const element of this.querySelectorAll(POPUP_HOST_SELECTOR)) {\n const host = element as Element & { close?: unknown };\n if (!isFunction(host.close)) continue;\n\n host.close('imperative-action');\n }\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"element.js","names":["#core","#mediaState","#provider","#visible","#closeOwnedOverlays"],"sources":["../../../../src/ui/controls/element.ts"],"sourcesContent":["import { ControlsCore, ControlsDataAttrs, type ControlsVisibility, POPUP_HOST_SELECTOR } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectControls } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\nimport { isFunction } from '@videojs/utils/predicate';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { UIElement } from '../ui-element';\nimport { controlsContext } from './context';\n\n/**\n * Tracks controls visibility, reflects it as data attributes, and shares it with its descendant controls parts. Hiding\n * the controls closes any popup open inside it.\n */\nexport class ControlsElement extends UIElement {\n static readonly tagName = 'media-controls';\n\n static override properties = {\n visibility: { type: String },\n } satisfies PropertyDeclarationMap<'visibility'>;\n\n visibility: ControlsVisibility = ControlsCore.defaultProps.visibility;\n\n readonly #core = new ControlsCore();\n readonly #mediaState = new PlayerController(this, playerContext, selectControls);\n readonly #provider = new ContextProvider(this, { context: controlsContext });\n #visible = true;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (__DEV__ && this.visibility === 'auto' && !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 this.#core.setProps({ visibility: this.visibility });\n this.#core.setMedia(this.#mediaState.value ?? null);\n\n const state = this.#core.getState();\n if (!state) return;\n\n applyStateDataAttrs(this, state, ControlsDataAttrs);\n\n this.#provider.setValue({\n state,\n stateAttrMap: ControlsDataAttrs,\n });\n\n const wasVisible = this.#visible;\n\n this.#visible = state.visible;\n\n if (wasVisible && !state.visible) {\n this.#closeOwnedOverlays();\n }\n }\n\n #closeOwnedOverlays(): void {\n for (const element of this.querySelectorAll(POPUP_HOST_SELECTOR)) {\n const host = element as Element & { close?: unknown };\n if (!isFunction(host.close)) continue;\n\n host.close('imperative-action');\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAeA,IAAa,kBAAb,cAAqC,UAAU;;;EAOZ,KAAA,aAAA,aAAa,aAAa;EAE1C,KAAA,QAAA,IAAI,aAAa;EACX,KAAA,cAAA,IAAI,iBAAiB,MAAM,eAAe,cAAc;EAC1D,KAAA,YAAA,IAAI,gBAAgB,MAAM,EAAE,SAAS,gBAAgB,CAAC;EAChE,KAAA,WAAA;;;EAXe,KAAA,UAAA;;;EAEG,KAAA,aAAA,EAC3B,YAAY,EAAE,MAAM,OAAO,EAC7B;;CAIA;CACA;CACA;CACA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EAExB,IAAe,KAAK,eAAe,UAAU,CAAC,KAAKC,YAAY,SAAS,KAAKA,YAAY,aACvF,kBAAkB,KAAK,WAAW,KAAKA,YAAY,WAAW;CAElE;CAEA,OAA0B,UAAgC;EACxD,MAAM,OAAO,QAAQ;EAErB,KAAKD,MAAM,SAAS,EAAE,YAAY,KAAK,WAAW,CAAC;EACnD,KAAKA,MAAM,SAAS,KAAKC,YAAY,SAAS,IAAI;EAElD,MAAM,QAAQ,KAAKD,MAAM,SAAS;EAClC,IAAI,CAAC,OAAO;EAEZ,oBAAoB,MAAM,OAAO,iBAAiB;EAElD,KAAKE,UAAU,SAAS;GACtB;GACA,cAAc;EAChB,CAAC;EAED,MAAM,aAAa,KAAKC;EAExB,KAAKA,WAAW,MAAM;EAEtB,IAAI,cAAc,CAAC,MAAM,SACvB,KAAKC,oBAAoB;CAE7B;CAEA,sBAA4B;EAC1B,KAAK,MAAM,WAAW,KAAK,iBAAiB,mBAAmB,GAAG;GAChE,MAAM,OAAO;GACb,IAAI,CAAC,WAAW,KAAK,KAAK,GAAG;GAE7B,KAAK,MAAM,mBAAmB;EAChC;CACF;AACF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { UIElement } from "../ui-element.js";
|
|
2
2
|
import { PropertyValues } from "@videojs/element";
|
|
3
3
|
//#region src/ui/dialog/close.d.ts
|
|
4
|
+
/** Button that closes its owning dialog; the element itself takes `role="button"` and keyboard focus. */
|
|
4
5
|
declare class DialogCloseElement extends UIElement {
|
|
5
6
|
#private;
|
|
6
7
|
static readonly tagName: string;
|
|
@@ -3,6 +3,7 @@ import { dialogContext } from "./context.js";
|
|
|
3
3
|
import { applyElementProps, applyStateDataAttrs, createButton } from "@videojs/core/dom";
|
|
4
4
|
import { ContextConsumer } from "@videojs/element/context";
|
|
5
5
|
//#region src/ui/dialog/close.ts
|
|
6
|
+
/** Button that closes its owning dialog; the element itself takes `role="button"` and keyboard focus. */
|
|
6
7
|
var DialogCloseElement = class extends UIElement {
|
|
7
8
|
constructor(..._args) {
|
|
8
9
|
super(..._args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"close.js","names":["#ctx","#disconnect"],"sources":["../../../../src/ui/dialog/close.ts"],"sourcesContent":["import { applyElementProps, applyStateDataAttrs, createButton } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { UIElement } from '../ui-element';\nimport { dialogContext } from './context';\n\nexport class DialogCloseElement extends UIElement {\n static readonly tagName: string = 'media-dialog-close';\n\n static override properties = {\n disabled: { type: Boolean },\n } satisfies PropertyDeclarationMap<'disabled'>;\n\n disabled = false;\n\n readonly #ctx = new ContextConsumer(this, { context: dialogContext, subscribe: true });\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#disconnect = new AbortController();\n\n const buttonProps = createButton({\n onActivate: () => this.#ctx.value?.close(),\n isDisabled: () => this.disabled,\n });\n\n applyElementProps(this, buttonProps, { signal: this.#disconnect.signal });\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n const ctx = this.#ctx.value;\n\n if (ctx) applyStateDataAttrs(this, ctx.state, ctx.stateAttrMap);\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"close.js","names":["#ctx","#disconnect"],"sources":["../../../../src/ui/dialog/close.ts"],"sourcesContent":["import { applyElementProps, applyStateDataAttrs, createButton } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { UIElement } from '../ui-element';\nimport { dialogContext } from './context';\n\n/** Button that closes its owning dialog; the element itself takes `role=\"button\"` and keyboard focus. */\nexport class DialogCloseElement extends UIElement {\n static readonly tagName: string = 'media-dialog-close';\n\n static override properties = {\n disabled: { type: Boolean },\n } satisfies PropertyDeclarationMap<'disabled'>;\n\n disabled = false;\n\n readonly #ctx = new ContextConsumer(this, { context: dialogContext, subscribe: true });\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#disconnect = new AbortController();\n\n const buttonProps = createButton({\n onActivate: () => this.#ctx.value?.close(),\n isDisabled: () => this.disabled,\n });\n\n applyElementProps(this, buttonProps, { signal: this.#disconnect.signal });\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n const ctx = this.#ctx.value;\n\n if (ctx) applyStateDataAttrs(this, ctx.state, ctx.stateAttrMap);\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,qBAAb,cAAwC,UAAU;;;EAOrC,KAAA,WAAA;EAEK,KAAA,OAAA,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAe,WAAW;EAAK,CAAC;EAC/C,KAAA,cAAA;;;EATJ,KAAA,UAAA;;;EAEL,KAAA,aAAA,EAC3B,UAAU,EAAE,MAAM,QAAQ,EAC5B;;CAIA;CACA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,KAAKC,cAAc,IAAI,gBAAgB;EAEvC,MAAM,cAAc,aAAa;GAC/B,kBAAkB,KAAKD,KAAK,OAAO,MAAM;GACzC,kBAAkB,KAAK;EACzB,CAAC;EAED,kBAAkB,MAAM,aAAa,EAAE,QAAQ,KAAKC,YAAY,OAAO,CAAC;CAC1E;CAEA,uBAAsC;EACpC,MAAM,qBAAqB;EAC3B,KAAKA,aAAa,MAAM;EACxB,KAAKA,cAAc;CACrB;CAEA,OAA0B,UAAgC;EACxD,MAAM,OAAO,QAAQ;EACrB,MAAM,MAAM,KAAKD,KAAK;EAEtB,IAAI,KAAK,oBAAoB,MAAM,IAAI,OAAO,IAAI,YAAY;CAChE;AACF"}
|
|
@@ -5,6 +5,10 @@ import { DialogState } from "@videojs/core";
|
|
|
5
5
|
import { PropertyValues } from "@videojs/element";
|
|
6
6
|
import { ContextConsumer } from "@videojs/element/context";
|
|
7
7
|
//#region src/ui/dialog/description.d.ts
|
|
8
|
+
/**
|
|
9
|
+
* Text announced as its owning dialog's description. The element takes the `id` that the popup's `aria-describedby`
|
|
10
|
+
* points to.
|
|
11
|
+
*/
|
|
8
12
|
declare class DialogDescriptionElement extends ContextPartElement<DialogState> {
|
|
9
13
|
static readonly tagName: string;
|
|
10
14
|
protected readonly consumer: ContextConsumer<{
|
|
@@ -2,6 +2,10 @@ import { dialogContext } from "./context.js";
|
|
|
2
2
|
import { ContextPartElement } from "../context-part-element.js";
|
|
3
3
|
import { ContextConsumer } from "@videojs/element/context";
|
|
4
4
|
//#region src/ui/dialog/description.ts
|
|
5
|
+
/**
|
|
6
|
+
* Text announced as its owning dialog's description. The element takes the `id` that the popup's `aria-describedby`
|
|
7
|
+
* points to.
|
|
8
|
+
*/
|
|
5
9
|
var DialogDescriptionElement = class extends ContextPartElement {
|
|
6
10
|
constructor(..._args) {
|
|
7
11
|
super(..._args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"description.js","names":[],"sources":["../../../../src/ui/dialog/description.ts"],"sourcesContent":["import type { DialogState } from '@videojs/core';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { dialogContext } from './context';\n\nexport class DialogDescriptionElement extends ContextPartElement<DialogState> {\n static readonly tagName: string = 'media-dialog-description';\n\n protected readonly consumer = new ContextConsumer(this, { context: dialogContext, subscribe: true });\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n const descriptionId = this.consumer.value?.state.descriptionId;\n\n if (descriptionId) this.id = descriptionId;\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"description.js","names":[],"sources":["../../../../src/ui/dialog/description.ts"],"sourcesContent":["import type { DialogState } from '@videojs/core';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { dialogContext } from './context';\n\n/**\n * Text announced as its owning dialog's description. The element takes the `id` that the popup's `aria-describedby`\n * points to.\n */\nexport class DialogDescriptionElement extends ContextPartElement<DialogState> {\n static readonly tagName: string = 'media-dialog-description';\n\n protected readonly consumer = new ContextConsumer(this, { context: dialogContext, subscribe: true });\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n const descriptionId = this.consumer.value?.state.descriptionId;\n\n if (descriptionId) this.id = descriptionId;\n }\n}\n"],"mappings":";;;;;;;;AAWA,IAAa,2BAAb,cAA8C,mBAAgC;;;EAG9C,KAAA,WAAA,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAe,WAAW;EAAK,CAAC;;;EAFjE,KAAA,UAAA;;CAIlC,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EACpB,MAAM,gBAAgB,KAAK,SAAS,OAAO,MAAM;EAEjD,IAAI,eAAe,KAAK,KAAK;CAC/B;AACF"}
|
|
@@ -5,6 +5,7 @@ import { DialogState } from "@videojs/core";
|
|
|
5
5
|
import { PropertyValues } from "@videojs/element";
|
|
6
6
|
import { ContextConsumer } from "@videojs/element/context";
|
|
7
7
|
//#region src/ui/dialog/title.d.ts
|
|
8
|
+
/** Text that labels its owning dialog. The element takes the `id` that the popup's `aria-labelledby` points to. */
|
|
8
9
|
declare class DialogTitleElement extends ContextPartElement<DialogState> {
|
|
9
10
|
static readonly tagName: string;
|
|
10
11
|
protected readonly consumer: ContextConsumer<{
|
|
@@ -2,6 +2,7 @@ import { dialogContext } from "./context.js";
|
|
|
2
2
|
import { ContextPartElement } from "../context-part-element.js";
|
|
3
3
|
import { ContextConsumer } from "@videojs/element/context";
|
|
4
4
|
//#region src/ui/dialog/title.ts
|
|
5
|
+
/** Text that labels its owning dialog. The element takes the `id` that the popup's `aria-labelledby` points to. */
|
|
5
6
|
var DialogTitleElement = class extends ContextPartElement {
|
|
6
7
|
constructor(..._args) {
|
|
7
8
|
super(..._args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"title.js","names":[],"sources":["../../../../src/ui/dialog/title.ts"],"sourcesContent":["import type { DialogState } from '@videojs/core';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { dialogContext } from './context';\n\nexport class DialogTitleElement extends ContextPartElement<DialogState> {\n static readonly tagName: string = 'media-dialog-title';\n\n protected readonly consumer = new ContextConsumer(this, { context: dialogContext, subscribe: true });\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n const titleId = this.consumer.value?.state.titleId;\n\n if (titleId) this.id = titleId;\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"title.js","names":[],"sources":["../../../../src/ui/dialog/title.ts"],"sourcesContent":["import type { DialogState } from '@videojs/core';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { dialogContext } from './context';\n\n/** Text that labels its owning dialog. The element takes the `id` that the popup's `aria-labelledby` points to. */\nexport class DialogTitleElement extends ContextPartElement<DialogState> {\n static readonly tagName: string = 'media-dialog-title';\n\n protected readonly consumer = new ContextConsumer(this, { context: dialogContext, subscribe: true });\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n const titleId = this.consumer.value?.state.titleId;\n\n if (titleId) this.id = titleId;\n }\n}\n"],"mappings":";;;;;AAQA,IAAa,qBAAb,cAAwC,mBAAgC;;;EAGxC,KAAA,WAAA,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAe,WAAW;EAAK,CAAC;;;EAFjE,KAAA,UAAA;;CAIlC,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EACpB,MAAM,UAAU,KAAK,SAAS,OAAO,MAAM;EAE3C,IAAI,SAAS,KAAK,KAAK;CACzB;AACF"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { UIElement } from "../ui-element.js";
|
|
2
2
|
import { PropertyValues } from "@videojs/element";
|
|
3
3
|
//#region src/ui/menu/checkbox-item.d.ts
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Menu item that toggles `checked` when activated and leaves the menu open. The element itself takes
|
|
6
|
+
* `role="menuitemcheckbox"`.
|
|
7
|
+
*
|
|
8
|
+
* @fires checked-change - Fired when the checked state changes.
|
|
9
|
+
*/
|
|
5
10
|
declare class MenuCheckboxItemElement extends UIElement {
|
|
6
11
|
#private;
|
|
7
12
|
static readonly tagName = "media-menu-checkbox-item";
|
|
@@ -3,7 +3,12 @@ import { menuContext } from "./context.js";
|
|
|
3
3
|
import { applyElementProps } from "@videojs/core/dom";
|
|
4
4
|
import { ContextConsumer } from "@videojs/element/context";
|
|
5
5
|
//#region src/ui/menu/checkbox-item.ts
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Menu item that toggles `checked` when activated and leaves the menu open. The element itself takes
|
|
8
|
+
* `role="menuitemcheckbox"`.
|
|
9
|
+
*
|
|
10
|
+
* @fires checked-change - Fired when the checked state changes.
|
|
11
|
+
*/
|
|
7
12
|
var MenuCheckboxItemElement = class extends UIElement {
|
|
8
13
|
constructor(..._args) {
|
|
9
14
|
super(..._args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox-item.js","names":["#ctx","#disconnect","#registered","#cleanupRegistration"],"sources":["../../../../src/ui/menu/checkbox-item.ts"],"sourcesContent":["import { applyElementProps } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { UIElement } from '../ui-element';\nimport { menuContext } from './context';\n\n
|
|
1
|
+
{"version":3,"file":"checkbox-item.js","names":["#ctx","#disconnect","#registered","#cleanupRegistration"],"sources":["../../../../src/ui/menu/checkbox-item.ts"],"sourcesContent":["import { applyElementProps } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { UIElement } from '../ui-element';\nimport { menuContext } from './context';\n\n/**\n * Menu item that toggles `checked` when activated and leaves the menu open. The element itself takes\n * `role=\"menuitemcheckbox\"`.\n *\n * @fires checked-change - Fired when the checked state changes.\n */\nexport class MenuCheckboxItemElement extends UIElement {\n static readonly tagName = 'media-menu-checkbox-item';\n\n static override properties = {\n checked: { type: Boolean },\n disabled: { type: Boolean },\n } satisfies PropertyDeclarationMap<'checked' | 'disabled'>;\n\n checked = false;\n disabled = false;\n\n readonly #ctx = new ContextConsumer(this, { context: menuContext, subscribe: true });\n\n #disconnect: AbortController | null = null;\n #registered = false;\n #cleanupRegistration: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#disconnect = new AbortController();\n this.#registered = false;\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#cleanupRegistration?.();\n this.#cleanupRegistration = null;\n this.#disconnect?.abort();\n this.#disconnect = null;\n this.#registered = false;\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n const ctx = this.#ctx.value;\n if (!ctx || !this.#disconnect) return;\n\n if (!this.#registered) {\n this.#registered = true;\n\n this.#cleanupRegistration = ctx.menu.registerItem(this);\n\n applyElementProps(\n this,\n {\n onClick: () => {\n const currentCtx = this.#ctx.value;\n if (!currentCtx || this.disabled) return;\n\n this.checked = !this.checked;\n this.dispatchEvent(new CustomEvent('checked-change', { detail: { checked: this.checked }, bubbles: true }));\n },\n onPointerenter: () => {\n const currentCtx = this.#ctx.value;\n\n if (!this.disabled) currentCtx?.menu.highlight(this, { focus: false, pointer: true });\n },\n },\n { signal: this.#disconnect.signal }\n );\n }\n\n applyElementProps(this, {\n role: 'menuitemcheckbox',\n 'aria-checked': String(this.checked),\n 'aria-disabled': this.disabled ? 'true' : undefined,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAaA,IAAa,0BAAb,cAA6C,UAAU;;;EAQ3C,KAAA,UAAA;EACC,KAAA,WAAA;EAEK,KAAA,OAAA,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAa,WAAW;EAAK,CAAC;EAE7C,KAAA,cAAA;EACxB,KAAA,cAAA;EAC8B,KAAA,uBAAA;;;EAdlB,KAAA,UAAA;;;EAEG,KAAA,aAAA;GAC3B,SAAS,EAAE,MAAM,QAAQ;GACzB,UAAU,EAAE,MAAM,QAAQ;EAC5B;;CAKA;CAEA;CACA;CACA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,KAAKC,cAAc,IAAI,gBAAgB;EACvC,KAAKC,cAAc;CACrB;CAEA,uBAAsC;EACpC,MAAM,qBAAqB;EAC3B,KAAKC,uBAAuB;EAC5B,KAAKA,uBAAuB;EAC5B,KAAKF,aAAa,MAAM;EACxB,KAAKA,cAAc;EACnB,KAAKC,cAAc;CACrB;CAEA,OAA0B,UAAgC;EACxD,MAAM,OAAO,QAAQ;EAErB,MAAM,MAAM,KAAKF,KAAK;EACtB,IAAI,CAAC,OAAO,CAAC,KAAKC,aAAa;EAE/B,IAAI,CAAC,KAAKC,aAAa;GACrB,KAAKA,cAAc;GAEnB,KAAKC,uBAAuB,IAAI,KAAK,aAAa,IAAI;GAEtD,kBACE,MACA;IACE,eAAe;KAEb,IAAI,CADe,KAAKH,KAAK,SACV,KAAK,UAAU;KAElC,KAAK,UAAU,CAAC,KAAK;KACrB,KAAK,cAAc,IAAI,YAAY,kBAAkB;MAAE,QAAQ,EAAE,SAAS,KAAK,QAAQ;MAAG,SAAS;KAAK,CAAC,CAAC;IAC5G;IACA,sBAAsB;KACpB,MAAM,aAAa,KAAKA,KAAK;KAE7B,IAAI,CAAC,KAAK,UAAU,YAAY,KAAK,UAAU,MAAM;MAAE,OAAO;MAAO,SAAS;KAAK,CAAC;IACtF;GACF,GACA,EAAE,QAAQ,KAAKC,YAAY,OAAO,CACpC;EACF;EAEA,kBAAkB,MAAM;GACtB,MAAM;GACN,gBAAgB,OAAO,KAAK,OAAO;GACnC,iBAAiB,KAAK,WAAW,SAAS,KAAA;EAC5C,CAAC;CACH;AACF"}
|
|
@@ -163,7 +163,7 @@ var MenuContentElement = class MenuContentElement extends UIElement {
|
|
|
163
163
|
applyElementProps(trigger, this.#core.getTriggerAttrs(state, active ? this.id : void 0));
|
|
164
164
|
this.#syncOptionState(trigger);
|
|
165
165
|
}
|
|
166
|
-
if (isSubmenu && active && !this.#wasActive) menu.
|
|
166
|
+
if (isSubmenu && active && !this.#wasActive) menu.highlightInitialItem({ preventScroll: true });
|
|
167
167
|
this.#wasActive = active;
|
|
168
168
|
this.#context = {
|
|
169
169
|
core: this.#core,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","names":["#menu","#parentMenu","#optionStates","#optionState","#syncOptionState","#findTrigger","#optionParent","#optionSource","#root","#provider","#core","#generatedId","#context","#normalizing","#disconnect","#handleKeyDown","#handleFocusOut","#cleanupMenu","#ownsMenu","#rootMenu","#setupMenu","#setOptionParent","#wasActive","#setOptionState","#normalize","#cleanupParentRegistration","#cleanupRegistration","#clearOptionState","#stateTrigger","#triggerWasDisabled","#triggerWasHidden"],"sources":["../../../../src/ui/menu/content.ts"],"sourcesContent":["import { MenuContentDataAttrs, MenuCore, type MenuOptionState, resolveMenuOptionState } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createMenu,\n createTransition,\n isMenuNavigationKey,\n type MenuApi,\n type MenuChangeDetails,\n type MenuOpenChangeReason,\n type UIKeyboardEvent,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer, ContextProvider } from '@videojs/element/context';\n\nimport { UIElement } from '../ui-element';\nimport { type MenuContextValue, menuContext } from './context';\nlet idCounter = 0;\n\n/** One accessible menu page. Root and nested pages are sibling children of `<media-menu>`. */\nexport class MenuContentElement extends UIElement {\n static readonly tagName = 'media-menu-content';\n\n static override properties = {\n open: { type: Boolean },\n defaultOpen: { type: Boolean, attribute: 'default-open' },\n } satisfies PropertyDeclarationMap<'open' | 'defaultOpen'>;\n\n open = false;\n defaultOpen = false;\n\n readonly #root = new ContextConsumer(this, { context: menuContext, subscribe: true });\n readonly #provider = new ContextProvider(this, { context: menuContext });\n readonly #core = new MenuCore();\n readonly #generatedId = `vjs-menu-content-${idCounter++}`;\n #context: MenuContextValue | null = null;\n #menu: MenuApi | null = null;\n #parentMenu: MenuApi | null = null;\n #rootMenu: MenuApi | null = null;\n #ownsMenu = false;\n #disconnect: AbortController | null = null;\n #cleanupRegistration: (() => void) | null = null;\n #cleanupParentRegistration: (() => void) | null = null;\n readonly #optionStates = new Map<symbol, MenuOptionState>();\n readonly #optionSource = Symbol('menu');\n #optionState: MenuOptionState | null = null;\n #optionParent: MenuContextValue | null = null;\n #stateTrigger: HTMLElement | null = null;\n #triggerWasDisabled = false;\n #triggerWasHidden = false;\n #wasActive = false;\n #normalizing = false;\n\n get context(): MenuContextValue | null {\n return this.#context;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.#normalizing) return;\n\n this.#disconnect = new AbortController();\n applyElementProps(\n this,\n { onKeyDown: this.#handleKeyDown, onFocusOut: this.#handleFocusOut },\n { signal: this.#disconnect.signal }\n );\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n\n if (this.#normalizing) return;\n\n this.#cleanupMenu();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n openMenu(reason: MenuOpenChangeReason = 'imperative-action'): void {\n this.#menu?.open(reason);\n }\n\n close(reason: MenuOpenChangeReason = 'imperative-action'): void {\n this.#menu?.close(reason);\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n\n if (!this.hasUpdated && this.defaultOpen && !this.open) this.open = true;\n\n if (this.#ownsMenu && this.#menu && changed.has('open')) this.#menu.syncOpen(this.open);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n const root = this.#root.value ?? null;\n if (!root) return;\n\n if (!this.id) this.id = this.#generatedId;\n\n const trigger = this.#findTrigger();\n const parentContent = trigger?.closest<MenuContentElement>(MenuContentElement.tagName) ?? null;\n\n if (parentContent && !parentContent.context) {\n this.hidden = true;\n requestAnimationFrame(() => this.requestUpdate());\n return;\n }\n\n const parentMenu = parentContent?.context?.menu ?? null;\n const isSubmenu = parentMenu !== null;\n\n if (root.menu !== this.#rootMenu || parentMenu !== this.#parentMenu) {\n this.#cleanupMenu();\n this.#rootMenu = root.menu;\n this.#parentMenu = parentMenu;\n this.#setupMenu(root, parentMenu);\n }\n\n this.#setOptionParent(parentContent?.context ?? root);\n\n const menu = this.#menu;\n if (!menu) return;\n\n const input = menu.input.current;\n\n this.#core.setInput({ ...input, isSubmenu });\n const state = this.#core.getState();\n const active = !isSubmenu || state.open || state.status === 'ending';\n\n applyElementProps(this, {\n ...this.#core.getContentAttrs(),\n hidden: !active,\n });\n applyStateDataAttrs(this, state, MenuContentDataAttrs);\n\n if (trigger) {\n menu.setTriggerElement(trigger);\n applyElementProps(trigger, this.#core.getTriggerAttrs(state, active ? this.id : undefined));\n this.#syncOptionState(trigger);\n }\n\n if (isSubmenu && active && !this.#wasActive) menu.highlightFirstItem({ preventScroll: true });\n\n this.#wasActive = active;\n\n this.#context = {\n core: this.#core,\n menu,\n popup: root.popup,\n state,\n setOptionState: this.#setOptionState,\n };\n this.#provider.setValue(this.#context);\n root.popup.sync();\n this.#normalize();\n }\n\n #setupMenu(root: MenuContextValue, parentMenu: MenuApi | null): void {\n const isSubmenu = parentMenu !== null;\n\n if (isSubmenu) {\n this.#ownsMenu = true;\n this.#menu = createMenu({\n transition: createTransition(),\n onOpenChange: (nextOpen: boolean, details: MenuChangeDetails) => {\n const accepted = this.dispatchEvent(\n new CustomEvent('open-change', {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: { open: nextOpen, ...details },\n })\n );\n\n if (accepted) this.open = nextOpen;\n },\n closeOnEscape: () => true,\n closeOnOutsideClick: () => false,\n });\n this.#menu.setPopupElement(this);\n this.#cleanupParentRegistration = parentMenu.registerSubmenu(this.#menu);\n const signal = this.#disconnect?.signal;\n\n if (signal) this.#menu.input.subscribe(() => this.requestUpdate(), { signal });\n\n this.#menu.syncOpen(this.open);\n } else {\n this.#ownsMenu = false;\n this.#menu = root.menu;\n }\n\n this.#cleanupRegistration = root.popup.registerContent({\n menu: this.#menu,\n parent: parentMenu,\n element: this,\n });\n }\n\n #cleanupMenu(): void {\n this.#cleanupRegistration?.();\n this.#cleanupRegistration = null;\n this.#cleanupParentRegistration?.();\n this.#cleanupParentRegistration = null;\n this.#setOptionParent(null);\n this.#clearOptionState();\n this.#optionStates.clear();\n this.#optionState = null;\n\n if (this.#ownsMenu) this.#menu?.destroy();\n\n this.#menu = null;\n this.#context = null;\n this.#rootMenu = null;\n this.#parentMenu = null;\n this.#ownsMenu = false;\n this.#wasActive = false;\n }\n\n #findTrigger(): HTMLElement | null {\n if (!this.id) return null;\n\n const root = this.getRootNode() as Document | ShadowRoot;\n\n return (\n [...root.querySelectorAll<HTMLElement>('[commandfor], media-menu-item')].find(\n (element) =>\n element.getAttribute('commandfor') === this.id ||\n (element as HTMLElement & { commandfor?: string }).commandfor === this.id\n ) ?? null\n );\n }\n\n /** Keep every page as a direct popup child, including authored nested pages. */\n #normalize(): void {\n const popup = this.closest('media-menu');\n if (!popup || this.parentElement === popup) return;\n\n this.#normalizing = true;\n popup.append(this);\n this.#normalizing = false;\n }\n\n #handleKeyDown = (event: UIKeyboardEvent): void => {\n const isNavigationKey = isMenuNavigationKey(event);\n const defaultPrevented = event.defaultPrevented;\n\n this.#menu?.contentProps.onKeyDown(event);\n\n if (this.#parentMenu && (event.key === 'ArrowLeft' || event.key === 'Escape') && !defaultPrevented) {\n event.preventDefault();\n this.#menu?.close('escape');\n }\n\n if (event.key !== 'Escape' && isNavigationKey) event.stopPropagation();\n };\n\n #handleFocusOut = (event: FocusEvent): void => {\n this.#menu?.contentProps.onFocusOut(event);\n };\n\n #setOptionState = (source: symbol, optionState: MenuOptionState | null): void => {\n const previous = this.#optionStates.get(source);\n if (optionState && isSameOptionState(previous, optionState)) return;\n\n if (!optionState && !previous) return;\n\n if (optionState) this.#optionStates.set(source, optionState);\n else this.#optionStates.delete(source);\n\n this.#optionState = resolveMenuOptionState(this.#optionStates.values());\n\n if ((this.#optionState?.disabled || this.#optionState?.hidden) && this.open && this.#parentMenu) {\n this.close('imperative-action');\n }\n\n this.#syncOptionState(this.#findTrigger());\n this.#optionParent?.setOptionState(this.#optionSource, this.#optionState);\n };\n\n #setOptionParent(parent: MenuContextValue | null): void {\n if (parent?.menu === this.#optionParent?.menu) {\n this.#optionParent = parent;\n return;\n }\n\n this.#optionParent?.setOptionState(this.#optionSource, null);\n this.#optionParent = parent;\n this.#optionParent?.setOptionState(this.#optionSource, this.#optionState);\n }\n\n #syncOptionState(trigger: HTMLElement | null): void {\n if (trigger !== this.#stateTrigger) {\n this.#clearOptionState();\n this.#stateTrigger = trigger;\n this.#triggerWasDisabled = trigger ? isTriggerExplicitlyDisabled(trigger) : false;\n this.#triggerWasHidden = trigger?.hidden === true;\n }\n\n if (!trigger) return;\n\n const disabled = this.#optionState?.disabled || this.#triggerWasDisabled;\n\n applyElementProps(trigger, {\n disabled: disabled || undefined,\n 'aria-disabled': disabled ? 'true' : undefined,\n 'data-availability': this.#optionState?.availability,\n hidden: this.#triggerWasHidden || this.#optionState?.hidden || undefined,\n });\n const value = trigger.querySelector<HTMLElement>('[data-part~=\"value\"], [data-part~=\"hint\"]');\n\n if (value && value.textContent !== this.#optionState?.value) value.textContent = this.#optionState?.value ?? '';\n }\n\n #clearOptionState(): void {\n const trigger = this.#stateTrigger;\n if (!trigger) return;\n\n applyElementProps(trigger, {\n disabled: this.#triggerWasDisabled || undefined,\n 'aria-disabled': this.#triggerWasDisabled ? 'true' : undefined,\n 'data-availability': undefined,\n hidden: this.#triggerWasHidden || undefined,\n });\n const value = trigger.querySelector<HTMLElement>('[data-part~=\"value\"], [data-part~=\"hint\"]');\n\n if (value?.textContent) value.textContent = '';\n\n this.#stateTrigger = null;\n this.#triggerWasDisabled = false;\n this.#triggerWasHidden = false;\n }\n}\n\nfunction isSameOptionState(a: MenuOptionState | undefined, b: MenuOptionState): boolean {\n return (\n a?.value === b.value && a.disabled === b.disabled && a.hidden === b.hidden && a.availability === b.availability\n );\n}\n\nfunction isTriggerExplicitlyDisabled(trigger: HTMLElement): boolean {\n return (\n trigger.hasAttribute('disabled') ||\n ('disabled' in trigger && (trigger as HTMLElement & { disabled?: boolean }).disabled === true)\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"content.js","names":["#menu","#parentMenu","#optionStates","#optionState","#syncOptionState","#findTrigger","#optionParent","#optionSource","#root","#provider","#core","#generatedId","#context","#normalizing","#disconnect","#handleKeyDown","#handleFocusOut","#cleanupMenu","#ownsMenu","#rootMenu","#setupMenu","#setOptionParent","#wasActive","#setOptionState","#normalize","#cleanupParentRegistration","#cleanupRegistration","#clearOptionState","#stateTrigger","#triggerWasDisabled","#triggerWasHidden"],"sources":["../../../../src/ui/menu/content.ts"],"sourcesContent":["import { MenuContentDataAttrs, MenuCore, type MenuOptionState, resolveMenuOptionState } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createMenu,\n createTransition,\n isMenuNavigationKey,\n type MenuApi,\n type MenuChangeDetails,\n type MenuOpenChangeReason,\n type UIKeyboardEvent,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer, ContextProvider } from '@videojs/element/context';\n\nimport { UIElement } from '../ui-element';\nimport { type MenuContextValue, menuContext } from './context';\nlet idCounter = 0;\n\n/** One accessible menu page. Root and nested pages are sibling children of `<media-menu>`. */\nexport class MenuContentElement extends UIElement {\n static readonly tagName = 'media-menu-content';\n\n static override properties = {\n open: { type: Boolean },\n defaultOpen: { type: Boolean, attribute: 'default-open' },\n } satisfies PropertyDeclarationMap<'open' | 'defaultOpen'>;\n\n open = false;\n defaultOpen = false;\n\n readonly #root = new ContextConsumer(this, { context: menuContext, subscribe: true });\n readonly #provider = new ContextProvider(this, { context: menuContext });\n readonly #core = new MenuCore();\n readonly #generatedId = `vjs-menu-content-${idCounter++}`;\n #context: MenuContextValue | null = null;\n #menu: MenuApi | null = null;\n #parentMenu: MenuApi | null = null;\n #rootMenu: MenuApi | null = null;\n #ownsMenu = false;\n #disconnect: AbortController | null = null;\n #cleanupRegistration: (() => void) | null = null;\n #cleanupParentRegistration: (() => void) | null = null;\n readonly #optionStates = new Map<symbol, MenuOptionState>();\n readonly #optionSource = Symbol('menu');\n #optionState: MenuOptionState | null = null;\n #optionParent: MenuContextValue | null = null;\n #stateTrigger: HTMLElement | null = null;\n #triggerWasDisabled = false;\n #triggerWasHidden = false;\n #wasActive = false;\n #normalizing = false;\n\n get context(): MenuContextValue | null {\n return this.#context;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.#normalizing) return;\n\n this.#disconnect = new AbortController();\n applyElementProps(\n this,\n { onKeyDown: this.#handleKeyDown, onFocusOut: this.#handleFocusOut },\n { signal: this.#disconnect.signal }\n );\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n\n if (this.#normalizing) return;\n\n this.#cleanupMenu();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n openMenu(reason: MenuOpenChangeReason = 'imperative-action'): void {\n this.#menu?.open(reason);\n }\n\n close(reason: MenuOpenChangeReason = 'imperative-action'): void {\n this.#menu?.close(reason);\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n\n if (!this.hasUpdated && this.defaultOpen && !this.open) this.open = true;\n\n if (this.#ownsMenu && this.#menu && changed.has('open')) this.#menu.syncOpen(this.open);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n const root = this.#root.value ?? null;\n if (!root) return;\n\n if (!this.id) this.id = this.#generatedId;\n\n const trigger = this.#findTrigger();\n const parentContent = trigger?.closest<MenuContentElement>(MenuContentElement.tagName) ?? null;\n\n if (parentContent && !parentContent.context) {\n this.hidden = true;\n requestAnimationFrame(() => this.requestUpdate());\n return;\n }\n\n const parentMenu = parentContent?.context?.menu ?? null;\n const isSubmenu = parentMenu !== null;\n\n if (root.menu !== this.#rootMenu || parentMenu !== this.#parentMenu) {\n this.#cleanupMenu();\n this.#rootMenu = root.menu;\n this.#parentMenu = parentMenu;\n this.#setupMenu(root, parentMenu);\n }\n\n this.#setOptionParent(parentContent?.context ?? root);\n\n const menu = this.#menu;\n if (!menu) return;\n\n const input = menu.input.current;\n\n this.#core.setInput({ ...input, isSubmenu });\n const state = this.#core.getState();\n const active = !isSubmenu || state.open || state.status === 'ending';\n\n applyElementProps(this, {\n ...this.#core.getContentAttrs(),\n hidden: !active,\n });\n applyStateDataAttrs(this, state, MenuContentDataAttrs);\n\n if (trigger) {\n menu.setTriggerElement(trigger);\n applyElementProps(trigger, this.#core.getTriggerAttrs(state, active ? this.id : undefined));\n this.#syncOptionState(trigger);\n }\n\n if (isSubmenu && active && !this.#wasActive) menu.highlightInitialItem({ preventScroll: true });\n\n this.#wasActive = active;\n\n this.#context = {\n core: this.#core,\n menu,\n popup: root.popup,\n state,\n setOptionState: this.#setOptionState,\n };\n this.#provider.setValue(this.#context);\n root.popup.sync();\n this.#normalize();\n }\n\n #setupMenu(root: MenuContextValue, parentMenu: MenuApi | null): void {\n const isSubmenu = parentMenu !== null;\n\n if (isSubmenu) {\n this.#ownsMenu = true;\n this.#menu = createMenu({\n transition: createTransition(),\n onOpenChange: (nextOpen: boolean, details: MenuChangeDetails) => {\n const accepted = this.dispatchEvent(\n new CustomEvent('open-change', {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: { open: nextOpen, ...details },\n })\n );\n\n if (accepted) this.open = nextOpen;\n },\n closeOnEscape: () => true,\n closeOnOutsideClick: () => false,\n });\n this.#menu.setPopupElement(this);\n this.#cleanupParentRegistration = parentMenu.registerSubmenu(this.#menu);\n const signal = this.#disconnect?.signal;\n\n if (signal) this.#menu.input.subscribe(() => this.requestUpdate(), { signal });\n\n this.#menu.syncOpen(this.open);\n } else {\n this.#ownsMenu = false;\n this.#menu = root.menu;\n }\n\n this.#cleanupRegistration = root.popup.registerContent({\n menu: this.#menu,\n parent: parentMenu,\n element: this,\n });\n }\n\n #cleanupMenu(): void {\n this.#cleanupRegistration?.();\n this.#cleanupRegistration = null;\n this.#cleanupParentRegistration?.();\n this.#cleanupParentRegistration = null;\n this.#setOptionParent(null);\n this.#clearOptionState();\n this.#optionStates.clear();\n this.#optionState = null;\n\n if (this.#ownsMenu) this.#menu?.destroy();\n\n this.#menu = null;\n this.#context = null;\n this.#rootMenu = null;\n this.#parentMenu = null;\n this.#ownsMenu = false;\n this.#wasActive = false;\n }\n\n #findTrigger(): HTMLElement | null {\n if (!this.id) return null;\n\n const root = this.getRootNode() as Document | ShadowRoot;\n\n return (\n [...root.querySelectorAll<HTMLElement>('[commandfor], media-menu-item')].find(\n (element) =>\n element.getAttribute('commandfor') === this.id ||\n (element as HTMLElement & { commandfor?: string }).commandfor === this.id\n ) ?? null\n );\n }\n\n /** Keep every page as a direct popup child, including authored nested pages. */\n #normalize(): void {\n const popup = this.closest('media-menu');\n if (!popup || this.parentElement === popup) return;\n\n this.#normalizing = true;\n popup.append(this);\n this.#normalizing = false;\n }\n\n #handleKeyDown = (event: UIKeyboardEvent): void => {\n const isNavigationKey = isMenuNavigationKey(event);\n const defaultPrevented = event.defaultPrevented;\n\n this.#menu?.contentProps.onKeyDown(event);\n\n if (this.#parentMenu && (event.key === 'ArrowLeft' || event.key === 'Escape') && !defaultPrevented) {\n event.preventDefault();\n this.#menu?.close('escape');\n }\n\n if (event.key !== 'Escape' && isNavigationKey) event.stopPropagation();\n };\n\n #handleFocusOut = (event: FocusEvent): void => {\n this.#menu?.contentProps.onFocusOut(event);\n };\n\n #setOptionState = (source: symbol, optionState: MenuOptionState | null): void => {\n const previous = this.#optionStates.get(source);\n if (optionState && isSameOptionState(previous, optionState)) return;\n\n if (!optionState && !previous) return;\n\n if (optionState) this.#optionStates.set(source, optionState);\n else this.#optionStates.delete(source);\n\n this.#optionState = resolveMenuOptionState(this.#optionStates.values());\n\n if ((this.#optionState?.disabled || this.#optionState?.hidden) && this.open && this.#parentMenu) {\n this.close('imperative-action');\n }\n\n this.#syncOptionState(this.#findTrigger());\n this.#optionParent?.setOptionState(this.#optionSource, this.#optionState);\n };\n\n #setOptionParent(parent: MenuContextValue | null): void {\n if (parent?.menu === this.#optionParent?.menu) {\n this.#optionParent = parent;\n return;\n }\n\n this.#optionParent?.setOptionState(this.#optionSource, null);\n this.#optionParent = parent;\n this.#optionParent?.setOptionState(this.#optionSource, this.#optionState);\n }\n\n #syncOptionState(trigger: HTMLElement | null): void {\n if (trigger !== this.#stateTrigger) {\n this.#clearOptionState();\n this.#stateTrigger = trigger;\n this.#triggerWasDisabled = trigger ? isTriggerExplicitlyDisabled(trigger) : false;\n this.#triggerWasHidden = trigger?.hidden === true;\n }\n\n if (!trigger) return;\n\n const disabled = this.#optionState?.disabled || this.#triggerWasDisabled;\n\n applyElementProps(trigger, {\n disabled: disabled || undefined,\n 'aria-disabled': disabled ? 'true' : undefined,\n 'data-availability': this.#optionState?.availability,\n hidden: this.#triggerWasHidden || this.#optionState?.hidden || undefined,\n });\n const value = trigger.querySelector<HTMLElement>('[data-part~=\"value\"], [data-part~=\"hint\"]');\n\n if (value && value.textContent !== this.#optionState?.value) value.textContent = this.#optionState?.value ?? '';\n }\n\n #clearOptionState(): void {\n const trigger = this.#stateTrigger;\n if (!trigger) return;\n\n applyElementProps(trigger, {\n disabled: this.#triggerWasDisabled || undefined,\n 'aria-disabled': this.#triggerWasDisabled ? 'true' : undefined,\n 'data-availability': undefined,\n hidden: this.#triggerWasHidden || undefined,\n });\n const value = trigger.querySelector<HTMLElement>('[data-part~=\"value\"], [data-part~=\"hint\"]');\n\n if (value?.textContent) value.textContent = '';\n\n this.#stateTrigger = null;\n this.#triggerWasDisabled = false;\n this.#triggerWasHidden = false;\n }\n}\n\nfunction isSameOptionState(a: MenuOptionState | undefined, b: MenuOptionState): boolean {\n return (\n a?.value === b.value && a.disabled === b.disabled && a.hidden === b.hidden && a.availability === b.availability\n );\n}\n\nfunction isTriggerExplicitlyDisabled(trigger: HTMLElement): boolean {\n return (\n trigger.hasAttribute('disabled') ||\n ('disabled' in trigger && (trigger as HTMLElement & { disabled?: boolean }).disabled === true)\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { UIElement } from "../ui-element.js";
|
|
2
2
|
import { PropertyValues } from "@videojs/element";
|
|
3
3
|
//#region src/ui/menu/group-label.d.ts
|
|
4
|
+
/** Non-interactive label that names its enclosing `<media-menu-group>` or `<media-menu-radio-group>`. */
|
|
4
5
|
declare class MenuGroupLabelElement extends UIElement {
|
|
5
6
|
#private;
|
|
6
7
|
static readonly tagName = "media-menu-group-label";
|
|
@@ -3,6 +3,7 @@ import { menuGroupContext } from "./context.js";
|
|
|
3
3
|
import { ContextConsumer } from "@videojs/element/context";
|
|
4
4
|
//#region src/ui/menu/group-label.ts
|
|
5
5
|
let idCounter = 0;
|
|
6
|
+
/** Non-interactive label that names its enclosing `<media-menu-group>` or `<media-menu-radio-group>`. */
|
|
6
7
|
var MenuGroupLabelElement = class extends UIElement {
|
|
7
8
|
static {
|
|
8
9
|
this.tagName = "media-menu-group-label";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group-label.js","names":["#groupCtx","#generatedId","#cleanupRegistration","#registeredId","#registerLabel"],"sources":["../../../../src/ui/menu/group-label.ts"],"sourcesContent":["import type { PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { UIElement } from '../ui-element';\nimport { menuGroupContext } from './context';\n\nlet idCounter = 0;\n\nexport class MenuGroupLabelElement extends UIElement {\n static readonly tagName = 'media-menu-group-label';\n\n readonly #groupCtx = new ContextConsumer(this, { context: menuGroupContext, subscribe: true });\n readonly #generatedId = `vjs-menu-group-label-${idCounter++}`;\n\n #cleanupRegistration: (() => void) | null = null;\n #registeredId: string | null = null;\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#cleanupRegistration?.();\n this.#cleanupRegistration = null;\n this.#registeredId = null;\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n if (!this.id) {\n this.id = this.#generatedId;\n }\n\n this.#registerLabel();\n }\n\n #registerLabel(): void {\n const groupCtx = this.#groupCtx.value;\n\n if (!groupCtx) {\n this.#cleanupRegistration?.();\n this.#cleanupRegistration = null;\n this.#registeredId = null;\n return;\n }\n\n if (this.#registeredId === this.id) return;\n\n this.#cleanupRegistration?.();\n this.#registeredId = this.id;\n this.#cleanupRegistration = groupCtx.registerLabel(this.id);\n }\n}\n"],"mappings":";;;;AAMA,IAAI,YAAY
|
|
1
|
+
{"version":3,"file":"group-label.js","names":["#groupCtx","#generatedId","#cleanupRegistration","#registeredId","#registerLabel"],"sources":["../../../../src/ui/menu/group-label.ts"],"sourcesContent":["import type { PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { UIElement } from '../ui-element';\nimport { menuGroupContext } from './context';\n\nlet idCounter = 0;\n\n/** Non-interactive label that names its enclosing `<media-menu-group>` or `<media-menu-radio-group>`. */\nexport class MenuGroupLabelElement extends UIElement {\n static readonly tagName = 'media-menu-group-label';\n\n readonly #groupCtx = new ContextConsumer(this, { context: menuGroupContext, subscribe: true });\n readonly #generatedId = `vjs-menu-group-label-${idCounter++}`;\n\n #cleanupRegistration: (() => void) | null = null;\n #registeredId: string | null = null;\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#cleanupRegistration?.();\n this.#cleanupRegistration = null;\n this.#registeredId = null;\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n if (!this.id) {\n this.id = this.#generatedId;\n }\n\n this.#registerLabel();\n }\n\n #registerLabel(): void {\n const groupCtx = this.#groupCtx.value;\n\n if (!groupCtx) {\n this.#cleanupRegistration?.();\n this.#cleanupRegistration = null;\n this.#registeredId = null;\n return;\n }\n\n if (this.#registeredId === this.id) return;\n\n this.#cleanupRegistration?.();\n this.#registeredId = this.id;\n this.#cleanupRegistration = groupCtx.registerLabel(this.id);\n }\n}\n"],"mappings":";;;;AAMA,IAAI,YAAY;;AAGhB,IAAa,wBAAb,cAA2C,UAAU;;EACzB,KAAA,UAAA;;CAE1B,YAAqB,IAAI,gBAAgB,MAAM;EAAE,SAAS;EAAkB,WAAW;CAAK,CAAC;CAC7F,eAAwB,wBAAwB;CAEhD,uBAA4C;CAC5C,gBAA+B;CAE/B,uBAAsC;EACpC,MAAM,qBAAqB;EAC3B,KAAKE,uBAAuB;EAC5B,KAAKA,uBAAuB;EAC5B,KAAKC,gBAAgB;CACvB;CAEA,OAA0B,UAAgC;EACxD,MAAM,OAAO,QAAQ;EAErB,IAAI,CAAC,KAAK,IACR,KAAK,KAAK,KAAKF;EAGjB,KAAKG,eAAe;CACtB;CAEA,iBAAuB;EACrB,MAAM,WAAW,KAAKJ,UAAU;EAEhC,IAAI,CAAC,UAAU;GACb,KAAKE,uBAAuB;GAC5B,KAAKA,uBAAuB;GAC5B,KAAKC,gBAAgB;GACrB;EACF;EAEA,IAAI,KAAKA,kBAAkB,KAAK,IAAI;EAEpC,KAAKD,uBAAuB;EAC5B,KAAKC,gBAAgB,KAAK;EAC1B,KAAKD,uBAAuB,SAAS,cAAc,KAAK,EAAE;CAC5D;AACF"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { UIElement } from "../ui-element.js";
|
|
2
2
|
import { PropertyValues } from "@videojs/element";
|
|
3
3
|
//#region src/ui/menu/group.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Groups related menu items; the element itself takes `role="group"`. A `<media-menu-group-label>` child names the
|
|
6
|
+
* group unless it already has an `aria-label` or `aria-labelledby`.
|
|
7
|
+
*/
|
|
4
8
|
declare class MenuGroupElement extends UIElement {
|
|
5
9
|
#private;
|
|
6
10
|
static readonly tagName = "media-menu-group";
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { UIElement } from "../ui-element.js";
|
|
2
2
|
import { MenuGroupController } from "./group-controller.js";
|
|
3
3
|
//#region src/ui/menu/group.ts
|
|
4
|
+
/**
|
|
5
|
+
* Groups related menu items; the element itself takes `role="group"`. A `<media-menu-group-label>` child names the
|
|
6
|
+
* group unless it already has an `aria-label` or `aria-labelledby`.
|
|
7
|
+
*/
|
|
4
8
|
var MenuGroupElement = class extends UIElement {
|
|
5
9
|
static {
|
|
6
10
|
this.tagName = "media-menu-group";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.js","names":["#group"],"sources":["../../../../src/ui/menu/group.ts"],"sourcesContent":["import type { PropertyValues } from '@videojs/element';\n\nimport { UIElement } from '../ui-element';\nimport { MenuGroupController } from './group-controller';\n\nexport class MenuGroupElement extends UIElement {\n static readonly tagName = 'media-menu-group';\n\n readonly #group = new MenuGroupController(this);\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n this.#group.applyProps();\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"group.js","names":["#group"],"sources":["../../../../src/ui/menu/group.ts"],"sourcesContent":["import type { PropertyValues } from '@videojs/element';\n\nimport { UIElement } from '../ui-element';\nimport { MenuGroupController } from './group-controller';\n\n/**\n * Groups related menu items; the element itself takes `role=\"group\"`. A `<media-menu-group-label>` child names the\n * group unless it already has an `aria-label` or `aria-labelledby`.\n */\nexport class MenuGroupElement extends UIElement {\n static readonly tagName = 'media-menu-group';\n\n readonly #group = new MenuGroupController(this);\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n this.#group.applyProps();\n }\n}\n"],"mappings":";;;;;;;AASA,IAAa,mBAAb,cAAsC,UAAU;;EACpB,KAAA,UAAA;;CAE1B,SAAkB,IAAI,oBAAoB,IAAI;CAE9C,OAA0B,UAAgC;EACxD,MAAM,OAAO,QAAQ;EAErB,KAAKA,OAAO,WAAW;CACzB;AACF"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { UIElement } from "../ui-element.js";
|
|
2
2
|
import { PropertyValues } from "@videojs/element";
|
|
3
3
|
//#region src/ui/menu/item-indicator.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Decorative checked-state mark inside a menu item, hidden from assistive technology. It stays `hidden` unless
|
|
6
|
+
* `checked` or `force-mount` is set; option radio groups set `checked` on the indicators in the items they generate.
|
|
7
|
+
*/
|
|
4
8
|
declare class MenuItemIndicatorElement extends UIElement {
|
|
5
9
|
static readonly tagName = "media-menu-item-indicator";
|
|
6
10
|
static properties: {
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { UIElement } from "../ui-element.js";
|
|
2
2
|
import { applyElementProps } from "@videojs/core/dom";
|
|
3
3
|
//#region src/ui/menu/item-indicator.ts
|
|
4
|
+
/**
|
|
5
|
+
* Decorative checked-state mark inside a menu item, hidden from assistive technology. It stays `hidden` unless
|
|
6
|
+
* `checked` or `force-mount` is set; option radio groups set `checked` on the indicators in the items they generate.
|
|
7
|
+
*/
|
|
4
8
|
var MenuItemIndicatorElement = class extends UIElement {
|
|
5
9
|
constructor(..._args) {
|
|
6
10
|
super(..._args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item-indicator.js","names":[],"sources":["../../../../src/ui/menu/item-indicator.ts"],"sourcesContent":["import { applyElementProps } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { UIElement } from '../ui-element';\n\nexport class MenuItemIndicatorElement extends UIElement {\n static readonly tagName = 'media-menu-item-indicator';\n\n static override properties = {\n checked: { type: Boolean },\n forceMount: { type: Boolean, attribute: 'force-mount' },\n } satisfies PropertyDeclarationMap<'checked' | 'forceMount'>;\n\n checked = false;\n forceMount = false;\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n const hidden = !this.checked && !this.forceMount;\n\n applyElementProps(this, {\n 'aria-hidden': 'true',\n hidden: hidden,\n });\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"item-indicator.js","names":[],"sources":["../../../../src/ui/menu/item-indicator.ts"],"sourcesContent":["import { applyElementProps } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { UIElement } from '../ui-element';\n\n/**\n * Decorative checked-state mark inside a menu item, hidden from assistive technology. It stays `hidden` unless\n * `checked` or `force-mount` is set; option radio groups set `checked` on the indicators in the items they generate.\n */\nexport class MenuItemIndicatorElement extends UIElement {\n static readonly tagName = 'media-menu-item-indicator';\n\n static override properties = {\n checked: { type: Boolean },\n forceMount: { type: Boolean, attribute: 'force-mount' },\n } satisfies PropertyDeclarationMap<'checked' | 'forceMount'>;\n\n checked = false;\n forceMount = false;\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n const hidden = !this.checked && !this.forceMount;\n\n applyElementProps(this, {\n 'aria-hidden': 'true',\n hidden: hidden,\n });\n }\n}\n"],"mappings":";;;;;;;AASA,IAAa,2BAAb,cAA8C,UAAU;;;EAQ5C,KAAA,UAAA;EACG,KAAA,aAAA;;;EARa,KAAA,UAAA;;;EAEG,KAAA,aAAA;GAC3B,SAAS,EAAE,MAAM,QAAQ;GACzB,YAAY;IAAE,MAAM;IAAS,WAAW;GAAc;EACxD;;CAKA,OAA0B,UAAgC;EACxD,MAAM,OAAO,QAAQ;EAErB,MAAM,SAAS,CAAC,KAAK,WAAW,CAAC,KAAK;EAEtC,kBAAkB,MAAM;GACtB,eAAe;GACP;EACV,CAAC;CACH;AACF"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { UIElement } from "../ui-element.js";
|
|
2
2
|
import { PropertyValues } from "@videojs/element";
|
|
3
3
|
//#region src/ui/menu/item.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Menu action; the element itself takes `role="menuitem"`. Activation fires a cancelable `select` event and then closes
|
|
6
|
+
* the menu, unless `commandfor` names a nested `<media-menu-content>` page to open instead.
|
|
7
|
+
*/
|
|
4
8
|
declare class MenuItemElement extends UIElement {
|
|
5
9
|
#private;
|
|
6
10
|
static readonly tagName = "media-menu-item";
|
package/dist/dev/ui/menu/item.js
CHANGED
|
@@ -3,6 +3,10 @@ import { menuContext } from "./context.js";
|
|
|
3
3
|
import { applyElementProps, completeMenuItemSelection } from "@videojs/core/dom";
|
|
4
4
|
import { ContextConsumer } from "@videojs/element/context";
|
|
5
5
|
//#region src/ui/menu/item.ts
|
|
6
|
+
/**
|
|
7
|
+
* Menu action; the element itself takes `role="menuitem"`. Activation fires a cancelable `select` event and then closes
|
|
8
|
+
* the menu, unless `commandfor` names a nested `<media-menu-content>` page to open instead.
|
|
9
|
+
*/
|
|
6
10
|
var MenuItemElement = class extends UIElement {
|
|
7
11
|
constructor(..._args) {
|
|
8
12
|
super(..._args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.js","names":["#ctx","#disconnect","#cleanupRegistration","#registeredMenu","#isDisabled","#openSubmenu"],"sources":["../../../../src/ui/menu/item.ts"],"sourcesContent":["import { applyElementProps, completeMenuItemSelection } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { UIElement } from '../ui-element';\nimport { type MenuContextValue, menuContext } from './context';\n\nexport class MenuItemElement extends UIElement {\n static readonly tagName = 'media-menu-item';\n\n static override properties = {\n disabled: { type: Boolean },\n commandfor: { type: String },\n } satisfies PropertyDeclarationMap<'disabled' | 'commandfor'>;\n\n disabled = false;\n /** ID of a nested `<media-menu-content>` page to open when activated. */\n commandfor: string | undefined = undefined;\n readonly #ctx = new ContextConsumer(this, { context: menuContext, subscribe: true });\n\n #disconnect: AbortController | null = null;\n #registeredMenu: MenuContextValue['menu'] | null = null;\n #cleanupRegistration: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#disconnect = new AbortController();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#cleanupRegistration?.();\n this.#cleanupRegistration = null;\n this.#registeredMenu = null;\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n const ctx = this.#ctx.value;\n if (!ctx || !this.#disconnect) return;\n\n if (this.#registeredMenu !== ctx.menu) {\n this.#cleanupRegistration?.();\n this.#registeredMenu = ctx.menu;\n this.#cleanupRegistration = ctx.menu.registerItem(this);\n\n applyElementProps(\n this,\n {\n onClick: (event: MouseEvent) => {\n const currentCtx = this.#ctx.value;\n if (!currentCtx || this.#isDisabled()) return;\n\n const target = this.commandfor;\n\n if (target) {\n this.#openSubmenu(target);\n } else {\n const select = new CustomEvent('select', { bubbles: true, cancelable: true });\n\n if (!this.dispatchEvent(select)) {\n event.preventDefault();\n return;\n }\n\n completeMenuItemSelection(currentCtx.menu);\n }\n\n event.preventDefault();\n },\n onKeyDown: (event: KeyboardEvent) => {\n const currentCtx = this.#ctx.value;\n if (!currentCtx || this.#isDisabled() || event.key !== 'ArrowRight') return;\n\n const target = this.commandfor;\n if (!target) return;\n\n this.#openSubmenu(target);\n event.preventDefault();\n },\n onPointerenter: () => {\n const currentCtx = this.#ctx.value;\n\n if (!this.#isDisabled()) currentCtx?.menu.highlight(this, { focus: false, pointer: true });\n },\n },\n { signal: this.#disconnect.signal }\n );\n }\n\n const hasSubmenu = Boolean(this.commandfor);\n\n applyElementProps(this, {\n role: 'menuitem',\n 'aria-disabled': this.#isDisabled() ? 'true' : undefined,\n ...(hasSubmenu && {\n 'aria-haspopup': 'menu',\n 'aria-expanded': 'false',\n 'data-has-submenu': '',\n }),\n });\n }\n\n #openSubmenu(id: string): void {\n const root = this.getRootNode() as Document | ShadowRoot;\n const submenu = root.querySelector<HTMLElement>(`#${CSS.escape(id)}`) as HTMLElement & {\n openMenu?: (reason?: 'click') => void;\n };\n\n submenu?.openMenu?.('click');\n }\n\n #isDisabled(): boolean {\n return this.disabled || this.getAttribute('aria-disabled') === 'true';\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"item.js","names":["#ctx","#disconnect","#cleanupRegistration","#registeredMenu","#isDisabled","#openSubmenu"],"sources":["../../../../src/ui/menu/item.ts"],"sourcesContent":["import { applyElementProps, completeMenuItemSelection } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { UIElement } from '../ui-element';\nimport { type MenuContextValue, menuContext } from './context';\n\n/**\n * Menu action; the element itself takes `role=\"menuitem\"`. Activation fires a cancelable `select` event and then closes\n * the menu, unless `commandfor` names a nested `<media-menu-content>` page to open instead.\n */\nexport class MenuItemElement extends UIElement {\n static readonly tagName = 'media-menu-item';\n\n static override properties = {\n disabled: { type: Boolean },\n commandfor: { type: String },\n } satisfies PropertyDeclarationMap<'disabled' | 'commandfor'>;\n\n disabled = false;\n /** ID of a nested `<media-menu-content>` page to open when activated. */\n commandfor: string | undefined = undefined;\n readonly #ctx = new ContextConsumer(this, { context: menuContext, subscribe: true });\n\n #disconnect: AbortController | null = null;\n #registeredMenu: MenuContextValue['menu'] | null = null;\n #cleanupRegistration: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#disconnect = new AbortController();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#cleanupRegistration?.();\n this.#cleanupRegistration = null;\n this.#registeredMenu = null;\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n const ctx = this.#ctx.value;\n if (!ctx || !this.#disconnect) return;\n\n if (this.#registeredMenu !== ctx.menu) {\n this.#cleanupRegistration?.();\n this.#registeredMenu = ctx.menu;\n this.#cleanupRegistration = ctx.menu.registerItem(this);\n\n applyElementProps(\n this,\n {\n onClick: (event: MouseEvent) => {\n const currentCtx = this.#ctx.value;\n if (!currentCtx || this.#isDisabled()) return;\n\n const target = this.commandfor;\n\n if (target) {\n this.#openSubmenu(target);\n } else {\n const select = new CustomEvent('select', { bubbles: true, cancelable: true });\n\n if (!this.dispatchEvent(select)) {\n event.preventDefault();\n return;\n }\n\n completeMenuItemSelection(currentCtx.menu);\n }\n\n event.preventDefault();\n },\n onKeyDown: (event: KeyboardEvent) => {\n const currentCtx = this.#ctx.value;\n if (!currentCtx || this.#isDisabled() || event.key !== 'ArrowRight') return;\n\n const target = this.commandfor;\n if (!target) return;\n\n this.#openSubmenu(target);\n event.preventDefault();\n },\n onPointerenter: () => {\n const currentCtx = this.#ctx.value;\n\n if (!this.#isDisabled()) currentCtx?.menu.highlight(this, { focus: false, pointer: true });\n },\n },\n { signal: this.#disconnect.signal }\n );\n }\n\n const hasSubmenu = Boolean(this.commandfor);\n\n applyElementProps(this, {\n role: 'menuitem',\n 'aria-disabled': this.#isDisabled() ? 'true' : undefined,\n ...(hasSubmenu && {\n 'aria-haspopup': 'menu',\n 'aria-expanded': 'false',\n 'data-has-submenu': '',\n }),\n });\n }\n\n #openSubmenu(id: string): void {\n const root = this.getRootNode() as Document | ShadowRoot;\n const submenu = root.querySelector<HTMLElement>(`#${CSS.escape(id)}`) as HTMLElement & {\n openMenu?: (reason?: 'click') => void;\n };\n\n submenu?.openMenu?.('click');\n }\n\n #isDisabled(): boolean {\n return this.disabled || this.getAttribute('aria-disabled') === 'true';\n }\n}\n"],"mappings":";;;;;;;;;AAWA,IAAa,kBAAb,cAAqC,UAAU;;;EAQlC,KAAA,WAAA;EAEsB,KAAA,aAAA,KAAA;EACjB,KAAA,OAAA,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAa,WAAW;EAAK,CAAC;EAE7C,KAAA,cAAA;EACa,KAAA,kBAAA;EACP,KAAA,uBAAA;;;EAdlB,KAAA,UAAA;;;EAEG,KAAA,aAAA;GAC3B,UAAU,EAAE,MAAM,QAAQ;GAC1B,YAAY,EAAE,MAAM,OAAO;EAC7B;;CAKA;CAEA;CACA;CACA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,KAAKC,cAAc,IAAI,gBAAgB;CACzC;CAEA,uBAAsC;EACpC,MAAM,qBAAqB;EAC3B,KAAKC,uBAAuB;EAC5B,KAAKA,uBAAuB;EAC5B,KAAKC,kBAAkB;EACvB,KAAKF,aAAa,MAAM;EACxB,KAAKA,cAAc;CACrB;CAEA,OAA0B,UAAgC;EACxD,MAAM,OAAO,QAAQ;EAErB,MAAM,MAAM,KAAKD,KAAK;EACtB,IAAI,CAAC,OAAO,CAAC,KAAKC,aAAa;EAE/B,IAAI,KAAKE,oBAAoB,IAAI,MAAM;GACrC,KAAKD,uBAAuB;GAC5B,KAAKC,kBAAkB,IAAI;GAC3B,KAAKD,uBAAuB,IAAI,KAAK,aAAa,IAAI;GAEtD,kBACE,MACA;IACE,UAAU,UAAsB;KAC9B,MAAM,aAAa,KAAKF,KAAK;KAC7B,IAAI,CAAC,cAAc,KAAKI,YAAY,GAAG;KAEvC,MAAM,SAAS,KAAK;KAEpB,IAAI,QACF,KAAKC,aAAa,MAAM;UACnB;MACL,MAAM,SAAS,IAAI,YAAY,UAAU;OAAE,SAAS;OAAM,YAAY;MAAK,CAAC;MAE5E,IAAI,CAAC,KAAK,cAAc,MAAM,GAAG;OAC/B,MAAM,eAAe;OACrB;MACF;MAEA,0BAA0B,WAAW,IAAI;KAC3C;KAEA,MAAM,eAAe;IACvB;IACA,YAAY,UAAyB;KAEnC,IAAI,CADe,KAAKL,KAAK,SACV,KAAKI,YAAY,KAAK,MAAM,QAAQ,cAAc;KAErE,MAAM,SAAS,KAAK;KACpB,IAAI,CAAC,QAAQ;KAEb,KAAKC,aAAa,MAAM;KACxB,MAAM,eAAe;IACvB;IACA,sBAAsB;KACpB,MAAM,aAAa,KAAKL,KAAK;KAE7B,IAAI,CAAC,KAAKI,YAAY,GAAG,YAAY,KAAK,UAAU,MAAM;MAAE,OAAO;MAAO,SAAS;KAAK,CAAC;IAC3F;GACF,GACA,EAAE,QAAQ,KAAKH,YAAY,OAAO,CACpC;EACF;EAEA,MAAM,aAAa,QAAQ,KAAK,UAAU;EAE1C,kBAAkB,MAAM;GACtB,MAAM;GACN,iBAAiB,KAAKG,YAAY,IAAI,SAAS,KAAA;GAC/C,GAAI,cAAc;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,oBAAoB;GACtB;EACF,CAAC;CACH;CAEA,aAAa,IAAkB;EAM7B,KALkB,YACC,CAAC,CAAC,cAA2B,IAAI,IAAI,OAAO,EAAE,GAI3D,CAAC,EAAE,WAAW,OAAO;CAC7B;CAEA,cAAuB;EACrB,OAAO,KAAK,YAAY,KAAK,aAAa,eAAe,MAAM;CACjE;AACF"}
|
|
@@ -3,6 +3,7 @@ import { MenuRadioItemElement } from "./radio-item.js";
|
|
|
3
3
|
import { MenuOptionState } from "@videojs/core";
|
|
4
4
|
import { PropertyValues } from "@videojs/element";
|
|
5
5
|
//#region src/ui/menu/radio-group.d.ts
|
|
6
|
+
/** Group of mutually exclusive `<media-menu-radio-item>` children; the element itself takes `role="group"`. */
|
|
6
7
|
declare class MenuRadioGroupElement extends RadioGroupElement {
|
|
7
8
|
#private;
|
|
8
9
|
static readonly tagName: string;
|
|
@@ -5,6 +5,7 @@ import { MenuRadioItemElement } from "./radio-item.js";
|
|
|
5
5
|
import { ContextConsumer } from "@videojs/element/context";
|
|
6
6
|
import { findElementChild } from "@videojs/utils/dom";
|
|
7
7
|
//#region src/ui/menu/radio-group.ts
|
|
8
|
+
/** Group of mutually exclusive `<media-menu-radio-item>` children; the element itself takes `role="group"`. */
|
|
8
9
|
var MenuRadioGroupElement = class extends RadioGroupElement {
|
|
9
10
|
static {
|
|
10
11
|
this.tagName = "media-menu-radio-group";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-group.js","names":["#group","#menu","#optionSource","#clearMenuOptionState","#ariaLabel","#optionMenu","#setOptionState"],"sources":["../../../../src/ui/menu/radio-group.ts"],"sourcesContent":["import type { MenuOptionState } from '@videojs/core';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\nimport { findElementChild } from '@videojs/utils/dom';\n\nimport { RadioGroupElement } from '../radio-group/element';\nimport { type MenuContextValue, menuContext } from './context';\nimport { MenuGroupController } from './group-controller';\nimport { MenuRadioItemElement } from './radio-item';\n\nexport class MenuRadioGroupElement extends RadioGroupElement {\n static readonly tagName: string = 'media-menu-radio-group';\n\n readonly #group = new MenuGroupController(this);\n readonly #menu = new ContextConsumer(this, { context: menuContext, subscribe: true });\n readonly #optionSource = Symbol('menu-option');\n #ariaLabel: string | null = null;\n #optionMenu: MenuContextValue['menu'] | null = null;\n #setOptionState: MenuContextValue['setOptionState'] | null = null;\n\n override disconnectedCallback(): void {\n this.#clearMenuOptionState();\n super.disconnectedCallback();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n this.#group.applyProps();\n }\n\n protected setItemLabel(item: MenuRadioItemElement, label: string): void {\n const labelPart = item.querySelector<HTMLElement>('[data-part~=\"label\"]');\n\n if (labelPart) {\n labelPart.textContent = label;\n } else {\n item.textContent = label;\n }\n }\n\n /** Applies a generated fallback without replacing an author-provided accessible name. */\n protected applyDefaultAriaLabel(label: string): void {\n if (this.hasAttribute('aria-labelledby')) return;\n\n const current = this.getAttribute('aria-label');\n if (current !== null && current !== this.#ariaLabel) return;\n\n this.#ariaLabel = label;\n this.setAttribute('aria-label', label);\n }\n\n protected publishMenuOptionState(\n disabled: boolean,\n hidden: boolean,\n availability: MenuOptionState['availability']\n ): void {\n const context = this.#menu.value ?? null;\n\n if (context?.menu !== this.#optionMenu) {\n this.#clearMenuOptionState();\n this.#optionMenu = context?.menu ?? null;\n this.#setOptionState = context?.setOptionState ?? null;\n }\n\n if (!this.#setOptionState) return;\n\n const selectedItem = findElementChild(\n this,\n (item): item is MenuRadioItemElement => item instanceof MenuRadioItemElement && item.value === this.value\n );\n const label = selectedItem?.querySelector<HTMLElement>('[data-part~=\"label\"]')?.textContent;\n const value = label ?? selectedItem?.textContent?.trim() ?? '';\n\n this.#setOptionState(this.#optionSource, { value, disabled, hidden, availability });\n }\n\n #clearMenuOptionState(): void {\n this.#setOptionState?.(this.#optionSource, null);\n this.#optionMenu = null;\n this.#setOptionState = null;\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"radio-group.js","names":["#group","#menu","#optionSource","#clearMenuOptionState","#ariaLabel","#optionMenu","#setOptionState"],"sources":["../../../../src/ui/menu/radio-group.ts"],"sourcesContent":["import type { MenuOptionState } from '@videojs/core';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\nimport { findElementChild } from '@videojs/utils/dom';\n\nimport { RadioGroupElement } from '../radio-group/element';\nimport { type MenuContextValue, menuContext } from './context';\nimport { MenuGroupController } from './group-controller';\nimport { MenuRadioItemElement } from './radio-item';\n\n/** Group of mutually exclusive `<media-menu-radio-item>` children; the element itself takes `role=\"group\"`. */\nexport class MenuRadioGroupElement extends RadioGroupElement {\n static readonly tagName: string = 'media-menu-radio-group';\n\n readonly #group = new MenuGroupController(this);\n readonly #menu = new ContextConsumer(this, { context: menuContext, subscribe: true });\n readonly #optionSource = Symbol('menu-option');\n #ariaLabel: string | null = null;\n #optionMenu: MenuContextValue['menu'] | null = null;\n #setOptionState: MenuContextValue['setOptionState'] | null = null;\n\n override disconnectedCallback(): void {\n this.#clearMenuOptionState();\n super.disconnectedCallback();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n this.#group.applyProps();\n }\n\n protected setItemLabel(item: MenuRadioItemElement, label: string): void {\n const labelPart = item.querySelector<HTMLElement>('[data-part~=\"label\"]');\n\n if (labelPart) {\n labelPart.textContent = label;\n } else {\n item.textContent = label;\n }\n }\n\n /** Applies a generated fallback without replacing an author-provided accessible name. */\n protected applyDefaultAriaLabel(label: string): void {\n if (this.hasAttribute('aria-labelledby')) return;\n\n const current = this.getAttribute('aria-label');\n if (current !== null && current !== this.#ariaLabel) return;\n\n this.#ariaLabel = label;\n this.setAttribute('aria-label', label);\n }\n\n protected publishMenuOptionState(\n disabled: boolean,\n hidden: boolean,\n availability: MenuOptionState['availability']\n ): void {\n const context = this.#menu.value ?? null;\n\n if (context?.menu !== this.#optionMenu) {\n this.#clearMenuOptionState();\n this.#optionMenu = context?.menu ?? null;\n this.#setOptionState = context?.setOptionState ?? null;\n }\n\n if (!this.#setOptionState) return;\n\n const selectedItem = findElementChild(\n this,\n (item): item is MenuRadioItemElement => item instanceof MenuRadioItemElement && item.value === this.value\n );\n const label = selectedItem?.querySelector<HTMLElement>('[data-part~=\"label\"]')?.textContent;\n const value = label ?? selectedItem?.textContent?.trim() ?? '';\n\n this.#setOptionState(this.#optionSource, { value, disabled, hidden, availability });\n }\n\n #clearMenuOptionState(): void {\n this.#setOptionState?.(this.#optionSource, null);\n this.#optionMenu = null;\n this.#setOptionState = null;\n }\n}\n"],"mappings":";;;;;;;;AAWA,IAAa,wBAAb,cAA2C,kBAAkB;;EACzB,KAAA,UAAA;;CAElC,SAAkB,IAAI,oBAAoB,IAAI;CAC9C,QAAiB,IAAI,gBAAgB,MAAM;EAAE,SAAS;EAAa,WAAW;CAAK,CAAC;CACpF,gBAAyB,OAAO,aAAa;CAC7C,aAA4B;CAC5B,cAA+C;CAC/C,kBAA6D;CAE7D,uBAAsC;EACpC,KAAKG,sBAAsB;EAC3B,MAAM,qBAAqB;CAC7B;CAEA,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EAEpB,KAAKH,OAAO,WAAW;CACzB;CAEA,aAAuB,MAA4B,OAAqB;EACtE,MAAM,YAAY,KAAK,cAA2B,wBAAsB;EAExE,IAAI,WACF,UAAU,cAAc;OAExB,KAAK,cAAc;CAEvB;;CAGA,sBAAgC,OAAqB;EACnD,IAAI,KAAK,aAAa,iBAAiB,GAAG;EAE1C,MAAM,UAAU,KAAK,aAAa,YAAY;EAC9C,IAAI,YAAY,QAAQ,YAAY,KAAKI,YAAY;EAErD,KAAKA,aAAa;EAClB,KAAK,aAAa,cAAc,KAAK;CACvC;CAEA,uBACE,UACA,QACA,cACM;EACN,MAAM,UAAU,KAAKH,MAAM,SAAS;EAEpC,IAAI,SAAS,SAAS,KAAKI,aAAa;GACtC,KAAKF,sBAAsB;GAC3B,KAAKE,cAAc,SAAS,QAAQ;GACpC,KAAKC,kBAAkB,SAAS,kBAAkB;EACpD;EAEA,IAAI,CAAC,KAAKA,iBAAiB;EAE3B,MAAM,eAAe,iBACnB,OACC,SAAuC,gBAAgB,wBAAwB,KAAK,UAAU,KAAK,KACtG;EAEA,MAAM,QADQ,cAAc,cAA2B,wBAAsB,CAAC,EAAE,eACzD,cAAc,aAAa,KAAK,KAAK;EAE5D,KAAKA,gBAAgB,KAAKJ,eAAe;GAAE;GAAO;GAAU;GAAQ;EAAa,CAAC;CACpF;CAEA,wBAA8B;EAC5B,KAAKI,kBAAkB,KAAKJ,eAAe,IAAI;EAC/C,KAAKG,cAAc;EACnB,KAAKC,kBAAkB;CACzB;AACF"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { UIElement } from "../ui-element.js";
|
|
2
2
|
import { PropertyValues } from "@videojs/element";
|
|
3
3
|
//#region src/ui/menu/radio-item.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Menu item that selects its `value` in the enclosing `<media-menu-radio-group>` and closes the menu. The element
|
|
6
|
+
* itself takes `role="menuitemradio"`, checked while its value matches the group's.
|
|
7
|
+
*/
|
|
4
8
|
declare class MenuRadioItemElement extends UIElement {
|
|
5
9
|
#private;
|
|
6
10
|
static readonly tagName = "media-menu-radio-item";
|
|
@@ -4,6 +4,10 @@ import { menuContext } from "./context.js";
|
|
|
4
4
|
import { applyElementProps, completeMenuItemSelection } from "@videojs/core/dom";
|
|
5
5
|
import { ContextConsumer } from "@videojs/element/context";
|
|
6
6
|
//#region src/ui/menu/radio-item.ts
|
|
7
|
+
/**
|
|
8
|
+
* Menu item that selects its `value` in the enclosing `<media-menu-radio-group>` and closes the menu. The element
|
|
9
|
+
* itself takes `role="menuitemradio"`, checked while its value matches the group's.
|
|
10
|
+
*/
|
|
7
11
|
var MenuRadioItemElement = class extends UIElement {
|
|
8
12
|
constructor(..._args) {
|
|
9
13
|
super(..._args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-item.js","names":["menuRadioGroupContext","#menuCtx","#groupCtx","#disconnect","#registered","#cleanupRegistration"],"sources":["../../../../src/ui/menu/radio-item.ts"],"sourcesContent":["import { applyElementProps, completeMenuItemSelection } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { UIElement } from '../ui-element';\nimport { menuContext, menuRadioGroupContext } from './context';\n\nexport class MenuRadioItemElement extends UIElement {\n static readonly tagName = 'media-menu-radio-item';\n\n static override properties = {\n value: { type: String },\n disabled: { type: Boolean },\n } satisfies PropertyDeclarationMap<'value' | 'disabled'>;\n\n value = '';\n disabled = false;\n\n readonly #menuCtx = new ContextConsumer(this, { context: menuContext, subscribe: true });\n readonly #groupCtx = new ContextConsumer(this, { context: menuRadioGroupContext, subscribe: true });\n\n #disconnect: AbortController | null = null;\n #registered = false;\n #cleanupRegistration: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#disconnect = new AbortController();\n this.#registered = false;\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#cleanupRegistration?.();\n this.#cleanupRegistration = null;\n this.#disconnect?.abort();\n this.#disconnect = null;\n this.#registered = false;\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n const menuCtx = this.#menuCtx.value;\n const groupCtx = this.#groupCtx.value;\n if (!menuCtx || !groupCtx || !this.#disconnect) return;\n\n if (!this.#registered) {\n this.#registered = true;\n\n this.#cleanupRegistration = menuCtx.menu.registerItem(this);\n\n applyElementProps(\n this,\n {\n onClick: () => {\n const currentMenuCtx = this.#menuCtx.value;\n const currentGroupCtx = this.#groupCtx.value;\n if (!currentMenuCtx || !currentGroupCtx || this.disabled) return;\n\n currentGroupCtx.onValueChange(this.value);\n completeMenuItemSelection(currentMenuCtx.menu);\n },\n onPointerenter: () => {\n const currentMenuCtx = this.#menuCtx.value;\n\n if (!this.disabled) currentMenuCtx?.menu.highlight(this, { focus: false, pointer: true });\n },\n },\n { signal: this.#disconnect.signal }\n );\n }\n\n const checked = groupCtx.value === this.value;\n\n applyElementProps(this, {\n role: 'menuitemradio',\n 'aria-checked': String(checked),\n 'aria-disabled': this.disabled ? 'true' : undefined,\n });\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"radio-item.js","names":["menuRadioGroupContext","#menuCtx","#groupCtx","#disconnect","#registered","#cleanupRegistration"],"sources":["../../../../src/ui/menu/radio-item.ts"],"sourcesContent":["import { applyElementProps, completeMenuItemSelection } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { UIElement } from '../ui-element';\nimport { menuContext, menuRadioGroupContext } from './context';\n\n/**\n * Menu item that selects its `value` in the enclosing `<media-menu-radio-group>` and closes the menu. The element\n * itself takes `role=\"menuitemradio\"`, checked while its value matches the group's.\n */\nexport class MenuRadioItemElement extends UIElement {\n static readonly tagName = 'media-menu-radio-item';\n\n static override properties = {\n value: { type: String },\n disabled: { type: Boolean },\n } satisfies PropertyDeclarationMap<'value' | 'disabled'>;\n\n value = '';\n disabled = false;\n\n readonly #menuCtx = new ContextConsumer(this, { context: menuContext, subscribe: true });\n readonly #groupCtx = new ContextConsumer(this, { context: menuRadioGroupContext, subscribe: true });\n\n #disconnect: AbortController | null = null;\n #registered = false;\n #cleanupRegistration: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#disconnect = new AbortController();\n this.#registered = false;\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#cleanupRegistration?.();\n this.#cleanupRegistration = null;\n this.#disconnect?.abort();\n this.#disconnect = null;\n this.#registered = false;\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n const menuCtx = this.#menuCtx.value;\n const groupCtx = this.#groupCtx.value;\n if (!menuCtx || !groupCtx || !this.#disconnect) return;\n\n if (!this.#registered) {\n this.#registered = true;\n\n this.#cleanupRegistration = menuCtx.menu.registerItem(this);\n\n applyElementProps(\n this,\n {\n onClick: () => {\n const currentMenuCtx = this.#menuCtx.value;\n const currentGroupCtx = this.#groupCtx.value;\n if (!currentMenuCtx || !currentGroupCtx || this.disabled) return;\n\n currentGroupCtx.onValueChange(this.value);\n completeMenuItemSelection(currentMenuCtx.menu);\n },\n onPointerenter: () => {\n const currentMenuCtx = this.#menuCtx.value;\n\n if (!this.disabled) currentMenuCtx?.menu.highlight(this, { focus: false, pointer: true });\n },\n },\n { signal: this.#disconnect.signal }\n );\n }\n\n const checked = groupCtx.value === this.value;\n\n applyElementProps(this, {\n role: 'menuitemradio',\n 'aria-checked': String(checked),\n 'aria-disabled': this.disabled ? 'true' : undefined,\n });\n }\n}\n"],"mappings":";;;;;;;;;;AAWA,IAAa,uBAAb,cAA0C,UAAU;;;EAQ1C,KAAA,QAAA;EACG,KAAA,WAAA;EAES,KAAA,WAAA,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAa,WAAW;EAAK,CAAC;EAClE,KAAA,YAAA,IAAI,gBAAgB,MAAM;GAAE,SAASA;GAAuB,WAAW;EAAK,CAAC;EAE5D,KAAA,cAAA;EACxB,KAAA,cAAA;EAC8B,KAAA,uBAAA;;;EAflB,KAAA,UAAA;;;EAEG,KAAA,aAAA;GAC3B,OAAO,EAAE,MAAM,OAAO;GACtB,UAAU,EAAE,MAAM,QAAQ;EAC5B;;CAKA;CACA;CAEA;CACA;CACA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,KAAKG,cAAc,IAAI,gBAAgB;EACvC,KAAKC,cAAc;CACrB;CAEA,uBAAsC;EACpC,MAAM,qBAAqB;EAC3B,KAAKC,uBAAuB;EAC5B,KAAKA,uBAAuB;EAC5B,KAAKF,aAAa,MAAM;EACxB,KAAKA,cAAc;EACnB,KAAKC,cAAc;CACrB;CAEA,OAA0B,UAAgC;EACxD,MAAM,OAAO,QAAQ;EAErB,MAAM,UAAU,KAAKH,SAAS;EAC9B,MAAM,WAAW,KAAKC,UAAU;EAChC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAKC,aAAa;EAEhD,IAAI,CAAC,KAAKC,aAAa;GACrB,KAAKA,cAAc;GAEnB,KAAKC,uBAAuB,QAAQ,KAAK,aAAa,IAAI;GAE1D,kBACE,MACA;IACE,eAAe;KACb,MAAM,iBAAiB,KAAKJ,SAAS;KACrC,MAAM,kBAAkB,KAAKC,UAAU;KACvC,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,KAAK,UAAU;KAE1D,gBAAgB,cAAc,KAAK,KAAK;KACxC,0BAA0B,eAAe,IAAI;IAC/C;IACA,sBAAsB;KACpB,MAAM,iBAAiB,KAAKD,SAAS;KAErC,IAAI,CAAC,KAAK,UAAU,gBAAgB,KAAK,UAAU,MAAM;MAAE,OAAO;MAAO,SAAS;KAAK,CAAC;IAC1F;GACF,GACA,EAAE,QAAQ,KAAKE,YAAY,OAAO,CACpC;EACF;EAEA,MAAM,UAAU,SAAS,UAAU,KAAK;EAExC,kBAAkB,MAAM;GACtB,MAAM;GACN,gBAAgB,OAAO,OAAO;GAC9B,iBAAiB,KAAK,WAAW,SAAS,KAAA;EAC5C,CAAC;CACH;AACF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { UIElement } from "../ui-element.js";
|
|
2
2
|
import { PropertyValues } from "@videojs/element";
|
|
3
3
|
//#region src/ui/menu/separator.d.ts
|
|
4
|
+
/** Visual divider between groups of menu items; the element itself takes `role="separator"`. */
|
|
4
5
|
declare class MenuSeparatorElement extends UIElement {
|
|
5
6
|
static readonly tagName = "media-menu-separator";
|
|
6
7
|
protected update(_changed: PropertyValues): void;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { UIElement } from "../ui-element.js";
|
|
2
2
|
import { applyElementProps } from "@videojs/core/dom";
|
|
3
3
|
//#region src/ui/menu/separator.ts
|
|
4
|
+
/** Visual divider between groups of menu items; the element itself takes `role="separator"`. */
|
|
4
5
|
var MenuSeparatorElement = class extends UIElement {
|
|
5
6
|
static {
|
|
6
7
|
this.tagName = "media-menu-separator";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"separator.js","names":[],"sources":["../../../../src/ui/menu/separator.ts"],"sourcesContent":["import { applyElementProps } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\n\nimport { UIElement } from '../ui-element';\n\nexport class MenuSeparatorElement extends UIElement {\n static readonly tagName = 'media-menu-separator';\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n applyElementProps(this, { role: 'separator' });\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"separator.js","names":[],"sources":["../../../../src/ui/menu/separator.ts"],"sourcesContent":["import { applyElementProps } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\n\nimport { UIElement } from '../ui-element';\n\n/** Visual divider between groups of menu items; the element itself takes `role=\"separator\"`. */\nexport class MenuSeparatorElement extends UIElement {\n static readonly tagName = 'media-menu-separator';\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n applyElementProps(this, { role: 'separator' });\n }\n}\n"],"mappings":";;;;AAMA,IAAa,uBAAb,cAA0C,UAAU;;EACxB,KAAA,UAAA;;CAE1B,OAA0B,UAAgC;EACxD,MAAM,OAAO,QAAQ;EAErB,kBAAkB,MAAM,EAAE,MAAM,YAAY,CAAC;CAC/C;AACF"}
|
|
@@ -2,6 +2,11 @@ import { MenuRadioGroupElement } from "../menu/radio-group.js";
|
|
|
2
2
|
import { PlaybackRateRadioGroupCore } from "@videojs/core";
|
|
3
3
|
import { PropertyValues } from "@videojs/element";
|
|
4
4
|
//#region src/ui/playback-rate-radio-group/element.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Menu radio group that generates a `<media-menu-radio-item>` per available playback rate and shares the selected label
|
|
7
|
+
* and availability with an enclosing menu. An optional `<template>` holding one `<media-menu-radio-item>` customizes
|
|
8
|
+
* each generated item.
|
|
9
|
+
*/
|
|
5
10
|
declare class PlaybackRateRadioGroupElement extends MenuRadioGroupElement {
|
|
6
11
|
#private;
|
|
7
12
|
static readonly tagName = "media-playback-rate-radio-group";
|
|
@@ -8,6 +8,11 @@ import { PlaybackRateRadioGroupCore, PlaybackRateRadioGroupDataAttrs } from "@vi
|
|
|
8
8
|
import { applyStateDataAttrs, logMissingFeature, selectPlaybackRate } from "@videojs/core/dom";
|
|
9
9
|
import { translateText } from "@videojs/core/i18n";
|
|
10
10
|
//#region src/ui/playback-rate-radio-group/element.ts
|
|
11
|
+
/**
|
|
12
|
+
* Menu radio group that generates a `<media-menu-radio-item>` per available playback rate and shares the selected label
|
|
13
|
+
* and availability with an enclosing menu. An optional `<template>` holding one `<media-menu-radio-item>` customizes
|
|
14
|
+
* each generated item.
|
|
15
|
+
*/
|
|
11
16
|
var PlaybackRateRadioGroupElement = class extends MenuRadioGroupElement {
|
|
12
17
|
constructor(..._args) {
|
|
13
18
|
super(..._args);
|