@videojs/react 10.0.0-beta.27 → 10.0.0-beta.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/default/__generated__/skins/default-video/styles/buttons.css +132 -18
- package/dist/default/__generated__/skins/default-video/styles/captions.css +22 -0
- package/dist/default/__generated__/skins/default-video/styles/container.css +121 -8
- package/dist/default/__generated__/skins/default-video/styles/controls.css +436 -21
- package/dist/default/__generated__/skins/default-video/styles/dialog.css +169 -0
- package/dist/default/__generated__/skins/default-video/styles/indicator.css +459 -0
- package/dist/default/__generated__/skins/default-video/styles/menus.css +254 -0
- package/dist/default/__generated__/skins/default-video/styles/overlays.css +26 -2
- package/dist/default/__generated__/skins/default-video/styles/popups.css +338 -12
- package/dist/default/__generated__/skins/default-video/styles/poster.css +4 -4
- package/dist/default/__generated__/skins/default-video/styles/sliders.css +355 -31
- package/dist/default/__generated__/skins/default-video/styles/styles.css +2455 -216
- package/dist/default/__generated__/skins/default-video/styles/theme.css +4 -19
- package/dist/default/__generated__/skins/default-video/styles/video.css +29 -0
- package/dist/default/__generated__/skins/minimal-video/styles/base.css +25 -0
- package/dist/default/__generated__/skins/minimal-video/styles/buttons.css +266 -0
- package/dist/default/__generated__/skins/minimal-video/styles/captions.css +22 -0
- package/dist/default/__generated__/skins/minimal-video/styles/container.css +158 -0
- package/dist/default/__generated__/skins/minimal-video/styles/controls.css +182 -0
- package/dist/default/__generated__/skins/minimal-video/styles/dialog.css +77 -0
- package/dist/default/__generated__/skins/minimal-video/styles/indicator.css +322 -0
- package/dist/default/__generated__/skins/minimal-video/styles/menus.css +254 -0
- package/dist/default/__generated__/skins/minimal-video/styles/overlays.css +35 -0
- package/dist/default/__generated__/skins/minimal-video/styles/popups.css +371 -0
- package/dist/default/__generated__/skins/minimal-video/styles/poster.css +47 -0
- package/dist/default/__generated__/skins/minimal-video/styles/sliders.css +436 -0
- package/dist/default/__generated__/skins/minimal-video/styles/styles.css +2246 -0
- package/dist/default/__generated__/skins/minimal-video/styles/theme.css +7 -0
- package/dist/default/__generated__/skins/minimal-video/styles/video.css +29 -0
- package/dist/default/i18n/context.js +0 -1
- package/dist/default/i18n/context.js.map +1 -1
- package/dist/default/i18n/create-i18n.js +0 -1
- package/dist/default/i18n/create-i18n.js.map +1 -1
- package/dist/default/i18n/index.js +2 -1
- package/dist/default/i18n/text.js +20 -0
- package/dist/default/i18n/text.js.map +1 -0
- package/dist/default/icons/dist/react/default/airplay-exit.js +3 -3
- package/dist/default/icons/dist/react/default/airplay-exit.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/airplay-exit.js +3 -3
- package/dist/default/icons/dist/react/minimal/airplay-exit.js.map +1 -1
- package/dist/default/index.js +2 -1
- package/dist/default/media/audio.js +0 -1
- package/dist/default/media/audio.js.map +1 -1
- package/dist/default/media/hls-background-video/media.js +18 -3
- package/dist/default/media/hls-background-video/media.js.map +1 -1
- package/dist/default/media/video.js +0 -1
- package/dist/default/media/video.js.map +1 -1
- package/dist/default/player/container.js +0 -1
- package/dist/default/player/container.js.map +1 -1
- package/dist/default/player/context.js +0 -1
- package/dist/default/player/context.js.map +1 -1
- package/dist/default/player/create-player.js +0 -1
- package/dist/default/player/create-player.js.map +1 -1
- package/dist/default/player/popup-group-context.js +0 -1
- package/dist/default/player/popup-group-context.js.map +1 -1
- package/dist/default/presets/audio/minimal-skin.css +117 -118
- package/dist/default/presets/audio/minimal-skin.js +2 -1
- package/dist/default/presets/audio/minimal-skin.js.map +1 -1
- package/dist/default/presets/audio/minimal-skin.tailwind.js +2 -1
- package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/audio/skin.css +95 -99
- package/dist/default/presets/audio/skin.js +2 -1
- package/dist/default/presets/audio/skin.js.map +1 -1
- package/dist/default/presets/audio/skin.tailwind.js +2 -1
- package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
- package/dist/default/presets/background/skin.js +1 -0
- package/dist/default/presets/background/skin.js.map +1 -1
- package/dist/default/presets/live-audio/minimal-skin.css +117 -118
- package/dist/default/presets/live-audio/minimal-skin.js +1 -0
- package/dist/default/presets/live-audio/minimal-skin.js.map +1 -1
- package/dist/default/presets/live-audio/minimal-skin.tailwind.js +1 -0
- package/dist/default/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/live-audio/skin.css +95 -99
- package/dist/default/presets/live-audio/skin.js +1 -0
- package/dist/default/presets/live-audio/skin.js.map +1 -1
- package/dist/default/presets/live-audio/skin.tailwind.js +1 -0
- package/dist/default/presets/live-audio/skin.tailwind.js.map +1 -1
- package/dist/default/presets/live-video/minimal-skin.css +158 -137
- package/dist/default/presets/live-video/minimal-skin.js +4 -8
- package/dist/default/presets/live-video/minimal-skin.js.map +1 -1
- package/dist/default/presets/live-video/minimal-skin.tailwind.js +6 -8
- package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/live-video/skin.css +120 -106
- package/dist/default/presets/live-video/skin.js +4 -8
- package/dist/default/presets/live-video/skin.js.map +1 -1
- package/dist/default/presets/live-video/skin.tailwind.js +8 -10
- package/dist/default/presets/live-video/skin.tailwind.js.map +1 -1
- package/dist/default/presets/video/minimal-skin.css +158 -137
- package/dist/default/presets/video/minimal-skin.js +4 -8
- package/dist/default/presets/video/minimal-skin.js.map +1 -1
- package/dist/default/presets/video/minimal-skin.tailwind.js +6 -8
- package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/video/skin.css +120 -106
- package/dist/default/presets/video/skin.js +4 -8
- package/dist/default/presets/video/skin.js.map +1 -1
- package/dist/default/presets/video/skin.tailwind.js +7 -9
- package/dist/default/presets/video/skin.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/button.js +3 -1
- package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/poster.js +8 -1
- package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js +13 -13
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +3 -3
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +8 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +13 -12
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +7 -6
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +4 -4
- package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
- package/dist/default/ui/airplay-button/airplay-button.js +0 -1
- package/dist/default/ui/airplay-button/airplay-button.js.map +1 -1
- package/dist/default/ui/alert-dialog/alert-dialog-close.js +0 -1
- package/dist/default/ui/alert-dialog/alert-dialog-close.js.map +1 -1
- package/dist/default/ui/alert-dialog/alert-dialog-description.js +0 -1
- package/dist/default/ui/alert-dialog/alert-dialog-description.js.map +1 -1
- package/dist/default/ui/alert-dialog/alert-dialog-popup.js +0 -1
- package/dist/default/ui/alert-dialog/alert-dialog-popup.js.map +1 -1
- package/dist/default/ui/alert-dialog/alert-dialog-root.js +0 -1
- package/dist/default/ui/alert-dialog/alert-dialog-root.js.map +1 -1
- package/dist/default/ui/alert-dialog/alert-dialog-title.js +0 -1
- package/dist/default/ui/alert-dialog/alert-dialog-title.js.map +1 -1
- package/dist/default/ui/alert-dialog/context.js +0 -1
- package/dist/default/ui/alert-dialog/context.js.map +1 -1
- package/dist/default/ui/audio-track/use-audio-track-options.js +0 -1
- package/dist/default/ui/audio-track/use-audio-track-options.js.map +1 -1
- package/dist/default/ui/audio-track-radio-group/audio-track-radio-group.js +0 -1
- package/dist/default/ui/audio-track-radio-group/audio-track-radio-group.js.map +1 -1
- package/dist/default/ui/buffering-indicator/buffering-indicator.js +0 -1
- package/dist/default/ui/buffering-indicator/buffering-indicator.js.map +1 -1
- package/dist/default/ui/captions-button/captions-button.js +0 -1
- package/dist/default/ui/captions-button/captions-button.js.map +1 -1
- package/dist/default/ui/captions-radio-group/captions-radio-group.js +0 -1
- package/dist/default/ui/captions-radio-group/captions-radio-group.js.map +1 -1
- package/dist/default/ui/captions-radio-group/use-captions-options.js +0 -1
- package/dist/default/ui/captions-radio-group/use-captions-options.js.map +1 -1
- package/dist/default/ui/cast-button/cast-button.js +0 -1
- package/dist/default/ui/cast-button/cast-button.js.map +1 -1
- package/dist/default/ui/controls/context.js +0 -1
- package/dist/default/ui/controls/context.js.map +1 -1
- package/dist/default/ui/controls/controls-group.js +0 -1
- package/dist/default/ui/controls/controls-group.js.map +1 -1
- package/dist/default/ui/controls/controls-root.js +0 -1
- package/dist/default/ui/controls/controls-root.js.map +1 -1
- package/dist/default/ui/create-context-part.js +0 -1
- package/dist/default/ui/create-context-part.js.map +1 -1
- package/dist/default/ui/create-media-button.js +0 -1
- package/dist/default/ui/create-media-button.js.map +1 -1
- package/dist/default/ui/error-dialog/context.js +0 -1
- package/dist/default/ui/error-dialog/context.js.map +1 -1
- package/dist/default/ui/error-dialog/error-dialog-close.js +0 -1
- package/dist/default/ui/error-dialog/error-dialog-close.js.map +1 -1
- package/dist/default/ui/error-dialog/error-dialog-description.js +0 -1
- package/dist/default/ui/error-dialog/error-dialog-description.js.map +1 -1
- package/dist/default/ui/error-dialog/error-dialog-root.js +0 -1
- package/dist/default/ui/error-dialog/error-dialog-root.js.map +1 -1
- package/dist/default/ui/error-dialog/error-dialog-title.js +0 -1
- package/dist/default/ui/error-dialog/error-dialog-title.js.map +1 -1
- package/dist/default/ui/fullscreen-button/fullscreen-button.js +0 -1
- package/dist/default/ui/fullscreen-button/fullscreen-button.js.map +1 -1
- package/dist/default/ui/gesture/gesture.js +0 -1
- package/dist/default/ui/gesture/gesture.js.map +1 -1
- package/dist/default/ui/gesture/use-doubletap-gesture.js +0 -1
- package/dist/default/ui/gesture/use-doubletap-gesture.js.map +1 -1
- package/dist/default/ui/gesture/use-tap-gesture.js +0 -1
- package/dist/default/ui/gesture/use-tap-gesture.js.map +1 -1
- package/dist/default/ui/hooks/create-radio-options-hook.js +0 -1
- package/dist/default/ui/hooks/create-radio-options-hook.js.map +1 -1
- package/dist/default/ui/hooks/use-button.js +0 -1
- package/dist/default/ui/hooks/use-button.js.map +1 -1
- package/dist/default/ui/hooks/use-positioned-state.js +0 -1
- package/dist/default/ui/hooks/use-positioned-state.js.map +1 -1
- package/dist/default/ui/hooks/use-slider.js +0 -1
- package/dist/default/ui/hooks/use-slider.js.map +1 -1
- package/dist/default/ui/hotkey/hotkey.js +0 -1
- package/dist/default/ui/hotkey/hotkey.js.map +1 -1
- package/dist/default/ui/hotkey/use-hotkey-shortcut.js +0 -1
- package/dist/default/ui/hotkey/use-hotkey-shortcut.js.map +1 -1
- package/dist/default/ui/hotkey/use-hotkey.js +0 -1
- package/dist/default/ui/hotkey/use-hotkey.js.map +1 -1
- package/dist/default/ui/input-indicator/use-indicator-visibility.js +0 -1
- package/dist/default/ui/input-indicator/use-indicator-visibility.js.map +1 -1
- package/dist/default/ui/input-indicator/use-input-action-subscription.js +0 -1
- package/dist/default/ui/input-indicator/use-input-action-subscription.js.map +1 -1
- package/dist/default/ui/input-indicator/use-input-indicator-root.js +0 -1
- package/dist/default/ui/input-indicator/use-input-indicator-root.js.map +1 -1
- package/dist/default/ui/input-indicator/use-rendered-indicator-state.js +0 -1
- package/dist/default/ui/input-indicator/use-rendered-indicator-state.js.map +1 -1
- package/dist/default/ui/live-button/live-button.js +0 -1
- package/dist/default/ui/live-button/live-button.js.map +1 -1
- package/dist/default/ui/menu/context.js +6 -2
- package/dist/default/ui/menu/context.js.map +1 -1
- package/dist/default/ui/menu/menu-checkbox-item.js +0 -1
- package/dist/default/ui/menu/menu-checkbox-item.js.map +1 -1
- package/dist/default/ui/menu/menu-content.js +0 -1
- package/dist/default/ui/menu/menu-content.js.map +1 -1
- package/dist/default/ui/menu/menu-group-label.js +0 -1
- package/dist/default/ui/menu/menu-group-label.js.map +1 -1
- package/dist/default/ui/menu/menu-group.js +0 -1
- package/dist/default/ui/menu/menu-group.js.map +1 -1
- package/dist/default/ui/menu/menu-item-indicator.js +3 -3
- package/dist/default/ui/menu/menu-item-indicator.js.map +1 -1
- package/dist/default/ui/menu/menu-item.js +0 -1
- package/dist/default/ui/menu/menu-item.js.map +1 -1
- package/dist/default/ui/menu/menu-radio-group.js +0 -1
- package/dist/default/ui/menu/menu-radio-group.js.map +1 -1
- package/dist/default/ui/menu/menu-radio-item.js +19 -16
- package/dist/default/ui/menu/menu-radio-item.js.map +1 -1
- package/dist/default/ui/menu/menu-root.js +5 -7
- package/dist/default/ui/menu/menu-root.js.map +1 -1
- package/dist/default/ui/menu/menu-separator.js +0 -1
- package/dist/default/ui/menu/menu-separator.js.map +1 -1
- package/dist/default/ui/menu/menu-trigger.js +26 -12
- package/dist/default/ui/menu/menu-trigger.js.map +1 -1
- package/dist/default/ui/menu/use-menu-group.js +0 -1
- package/dist/default/ui/menu/use-menu-group.js.map +1 -1
- package/dist/default/ui/mute-button/mute-button.js +0 -1
- package/dist/default/ui/mute-button/mute-button.js.map +1 -1
- package/dist/default/ui/pip-button/pip-button.js +0 -1
- package/dist/default/ui/pip-button/pip-button.js.map +1 -1
- package/dist/default/ui/play-button/play-button.js +0 -1
- package/dist/default/ui/play-button/play-button.js.map +1 -1
- package/dist/default/ui/playback-rate/use-playback-rate-options.js +0 -1
- package/dist/default/ui/playback-rate/use-playback-rate-options.js.map +1 -1
- package/dist/default/ui/playback-rate-button/playback-rate-button.js +0 -1
- package/dist/default/ui/playback-rate-button/playback-rate-button.js.map +1 -1
- package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group.js +0 -1
- package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group.js.map +1 -1
- package/dist/default/ui/popover/context.js +0 -1
- package/dist/default/ui/popover/context.js.map +1 -1
- package/dist/default/ui/popover/popover-arrow.js +0 -1
- package/dist/default/ui/popover/popover-arrow.js.map +1 -1
- package/dist/default/ui/popover/popover-popup.js +0 -1
- package/dist/default/ui/popover/popover-popup.js.map +1 -1
- package/dist/default/ui/popover/popover-root.js +0 -1
- package/dist/default/ui/popover/popover-root.js.map +1 -1
- package/dist/default/ui/popover/popover-trigger.js +0 -1
- package/dist/default/ui/popover/popover-trigger.js.map +1 -1
- package/dist/default/ui/popover/use-popup-position.js +0 -1
- package/dist/default/ui/popover/use-popup-position.js.map +1 -1
- package/dist/default/ui/poster/poster.js +64 -18
- package/dist/default/ui/poster/poster.js.map +1 -1
- package/dist/default/ui/quality/use-quality-options.js +0 -1
- package/dist/default/ui/quality/use-quality-options.js.map +1 -1
- package/dist/default/ui/quality-radio-group/quality-radio-group.js +0 -1
- package/dist/default/ui/quality-radio-group/quality-radio-group.js.map +1 -1
- package/dist/default/ui/seek-button/seek-button.js +0 -1
- package/dist/default/ui/seek-button/seek-button.js.map +1 -1
- package/dist/default/ui/seek-indicator/context.js +0 -1
- package/dist/default/ui/seek-indicator/context.js.map +1 -1
- package/dist/default/ui/seek-indicator/seek-indicator-root.js +0 -1
- package/dist/default/ui/seek-indicator/seek-indicator-root.js.map +1 -1
- package/dist/default/ui/seek-indicator/seek-indicator-value.js +0 -1
- package/dist/default/ui/seek-indicator/seek-indicator-value.js.map +1 -1
- package/dist/default/ui/slider/context.js +0 -1
- package/dist/default/ui/slider/context.js.map +1 -1
- package/dist/default/ui/slider/slider-buffer.js +0 -1
- package/dist/default/ui/slider/slider-buffer.js.map +1 -1
- package/dist/default/ui/slider/slider-fill.js +0 -1
- package/dist/default/ui/slider/slider-fill.js.map +1 -1
- package/dist/default/ui/slider/slider-preview.js +0 -1
- package/dist/default/ui/slider/slider-preview.js.map +1 -1
- package/dist/default/ui/slider/slider-root.js +0 -1
- package/dist/default/ui/slider/slider-root.js.map +1 -1
- package/dist/default/ui/slider/slider-thumb.js +0 -1
- package/dist/default/ui/slider/slider-thumb.js.map +1 -1
- package/dist/default/ui/slider/slider-thumbnail.js +0 -1
- package/dist/default/ui/slider/slider-thumbnail.js.map +1 -1
- package/dist/default/ui/slider/slider-track.js +0 -1
- package/dist/default/ui/slider/slider-track.js.map +1 -1
- package/dist/default/ui/slider/slider-value.js +0 -1
- package/dist/default/ui/slider/slider-value.js.map +1 -1
- package/dist/default/ui/status-announcer/status-announcer.js +0 -1
- package/dist/default/ui/status-announcer/status-announcer.js.map +1 -1
- package/dist/default/ui/status-indicator/context.js +0 -1
- package/dist/default/ui/status-indicator/context.js.map +1 -1
- package/dist/default/ui/status-indicator/status-indicator-root.js +0 -1
- package/dist/default/ui/status-indicator/status-indicator-root.js.map +1 -1
- package/dist/default/ui/status-indicator/status-indicator-value.js +0 -1
- package/dist/default/ui/status-indicator/status-indicator-value.js.map +1 -1
- package/dist/default/ui/thumbnail/thumbnail.js +0 -1
- package/dist/default/ui/thumbnail/thumbnail.js.map +1 -1
- package/dist/default/ui/time/time-group.js +0 -1
- package/dist/default/ui/time/time-group.js.map +1 -1
- package/dist/default/ui/time/time-separator.js +0 -1
- package/dist/default/ui/time/time-separator.js.map +1 -1
- package/dist/default/ui/time/time-value.js +0 -1
- package/dist/default/ui/time/time-value.js.map +1 -1
- package/dist/default/ui/time-slider/time-slider-chapters/slider-segments.js +0 -1
- package/dist/default/ui/time-slider/time-slider-chapters/slider-segments.js.map +1 -1
- package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js +0 -1
- package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js.map +1 -1
- package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapters.js +0 -1
- package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapters.js.map +1 -1
- package/dist/default/ui/time-slider/time-slider-root.js +0 -1
- package/dist/default/ui/time-slider/time-slider-root.js.map +1 -1
- package/dist/default/ui/tooltip/context.js +0 -1
- package/dist/default/ui/tooltip/context.js.map +1 -1
- package/dist/default/ui/tooltip/group-context.js +0 -1
- package/dist/default/ui/tooltip/group-context.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-arrow.js +0 -1
- package/dist/default/ui/tooltip/tooltip-arrow.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-label.js +0 -1
- package/dist/default/ui/tooltip/tooltip-label.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-popup.js +0 -1
- package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-provider.js +0 -1
- package/dist/default/ui/tooltip/tooltip-provider.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-root.js +0 -1
- package/dist/default/ui/tooltip/tooltip-root.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-shortcut.js +0 -1
- package/dist/default/ui/tooltip/tooltip-shortcut.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-trigger.js +0 -1
- package/dist/default/ui/tooltip/tooltip-trigger.js.map +1 -1
- package/dist/default/ui/volume-indicator/context.js +0 -1
- package/dist/default/ui/volume-indicator/context.js.map +1 -1
- package/dist/default/ui/volume-indicator/volume-indicator-fill.js +0 -1
- package/dist/default/ui/volume-indicator/volume-indicator-fill.js.map +1 -1
- package/dist/default/ui/volume-indicator/volume-indicator-root.js +0 -1
- package/dist/default/ui/volume-indicator/volume-indicator-root.js.map +1 -1
- package/dist/default/ui/volume-indicator/volume-indicator-value.js +0 -1
- package/dist/default/ui/volume-indicator/volume-indicator-value.js.map +1 -1
- package/dist/default/ui/volume-slider/volume-slider-root.js +0 -1
- package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -1
- package/dist/default/utils/merge-props.js +0 -1
- package/dist/default/utils/merge-props.js.map +1 -1
- package/dist/default/utils/use-attach-iframe.js +0 -1
- package/dist/default/utils/use-attach-iframe.js.map +1 -1
- package/dist/default/utils/use-attach-media.js +0 -1
- package/dist/default/utils/use-attach-media.js.map +1 -1
- package/dist/default/utils/use-composed-refs.js +0 -1
- package/dist/default/utils/use-composed-refs.js.map +1 -1
- package/dist/default/utils/use-destroy.js +0 -1
- package/dist/default/utils/use-destroy.js.map +1 -1
- package/dist/default/utils/use-force-render.js +0 -1
- package/dist/default/utils/use-force-render.js.map +1 -1
- package/dist/default/utils/use-latest-ref.js +0 -1
- package/dist/default/utils/use-latest-ref.js.map +1 -1
- package/dist/default/utils/use-media-component.js +0 -1
- package/dist/default/utils/use-media-component.js.map +1 -1
- package/dist/default/utils/use-media-instance.js +0 -1
- package/dist/default/utils/use-media-instance.js.map +1 -1
- package/dist/default/utils/use-render.js +2 -9
- package/dist/default/utils/use-render.js.map +1 -1
- package/dist/default/utils/use-safe-id.js +0 -1
- package/dist/default/utils/use-safe-id.js.map +1 -1
- package/dist/dev/__generated__/skins/default-video/styles/buttons.css +132 -18
- package/dist/dev/__generated__/skins/default-video/styles/captions.css +22 -0
- package/dist/dev/__generated__/skins/default-video/styles/container.css +121 -8
- package/dist/dev/__generated__/skins/default-video/styles/controls.css +436 -21
- package/dist/dev/__generated__/skins/default-video/styles/dialog.css +169 -0
- package/dist/dev/__generated__/skins/default-video/styles/indicator.css +459 -0
- package/dist/dev/__generated__/skins/default-video/styles/menus.css +254 -0
- package/dist/dev/__generated__/skins/default-video/styles/overlays.css +26 -2
- package/dist/dev/__generated__/skins/default-video/styles/popups.css +338 -12
- package/dist/dev/__generated__/skins/default-video/styles/poster.css +4 -4
- package/dist/dev/__generated__/skins/default-video/styles/sliders.css +355 -31
- package/dist/dev/__generated__/skins/default-video/styles/styles.css +2455 -216
- package/dist/dev/__generated__/skins/default-video/styles/theme.css +4 -19
- package/dist/dev/__generated__/skins/default-video/styles/video.css +29 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/base.css +25 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/buttons.css +266 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/captions.css +22 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/container.css +158 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/controls.css +182 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/dialog.css +77 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/indicator.css +322 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/menus.css +254 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/overlays.css +35 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/popups.css +371 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/poster.css +47 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/sliders.css +436 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/styles.css +2246 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/theme.css +7 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/video.css +29 -0
- package/dist/dev/i18n/context.d.ts.map +1 -1
- package/dist/dev/i18n/context.js +0 -1
- package/dist/dev/i18n/context.js.map +1 -1
- package/dist/dev/i18n/create-i18n.d.ts.map +1 -1
- package/dist/dev/i18n/create-i18n.js +0 -1
- package/dist/dev/i18n/create-i18n.js.map +1 -1
- package/dist/dev/i18n/index.d.ts +2 -1
- package/dist/dev/i18n/index.js +2 -1
- package/dist/dev/i18n/text.d.ts +11 -0
- package/dist/dev/i18n/text.d.ts.map +1 -0
- package/dist/dev/i18n/text.js +20 -0
- package/dist/dev/i18n/text.js.map +1 -0
- package/dist/dev/icons/dist/react/default/airplay-exit.js +3 -3
- package/dist/dev/icons/dist/react/default/airplay-exit.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/airplay-exit.js +3 -3
- package/dist/dev/icons/dist/react/minimal/airplay-exit.js.map +1 -1
- package/dist/dev/icons/index.d.ts +6 -1
- package/dist/dev/icons/index.d.ts.map +1 -0
- package/dist/dev/icons/minimal/index.d.ts +6 -1
- package/dist/dev/icons/minimal/index.d.ts.map +1 -0
- package/dist/dev/index.d.ts +3 -2
- package/dist/dev/index.js +2 -1
- package/dist/dev/media/audio.d.ts.map +1 -1
- package/dist/dev/media/audio.js +0 -1
- package/dist/dev/media/audio.js.map +1 -1
- package/dist/dev/media/hls-background-video/media.d.ts +8 -0
- package/dist/dev/media/hls-background-video/media.d.ts.map +1 -1
- package/dist/dev/media/hls-background-video/media.js +18 -3
- package/dist/dev/media/hls-background-video/media.js.map +1 -1
- package/dist/dev/media/video.d.ts.map +1 -1
- package/dist/dev/media/video.js +0 -1
- package/dist/dev/media/video.js.map +1 -1
- package/dist/dev/player/container.d.ts.map +1 -1
- package/dist/dev/player/container.js +0 -1
- package/dist/dev/player/container.js.map +1 -1
- package/dist/dev/player/context.d.ts.map +1 -1
- package/dist/dev/player/context.js +0 -1
- package/dist/dev/player/context.js.map +1 -1
- package/dist/dev/player/create-player.d.ts.map +1 -1
- package/dist/dev/player/create-player.js +0 -1
- package/dist/dev/player/create-player.js.map +1 -1
- package/dist/dev/player/popup-group-context.js +0 -1
- package/dist/dev/player/popup-group-context.js.map +1 -1
- package/dist/dev/presets/audio/minimal-skin.css +117 -118
- package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/audio/minimal-skin.js +2 -1
- package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
- package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/audio/minimal-skin.tailwind.js +2 -1
- package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/audio/player.d.ts +2 -2
- package/dist/dev/presets/audio/skin.css +95 -99
- package/dist/dev/presets/audio/skin.d.ts.map +1 -1
- package/dist/dev/presets/audio/skin.js +2 -1
- package/dist/dev/presets/audio/skin.js.map +1 -1
- package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/audio/skin.tailwind.js +2 -1
- package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
- package/dist/dev/presets/background/skin.d.ts.map +1 -1
- package/dist/dev/presets/background/skin.js +1 -0
- package/dist/dev/presets/background/skin.js.map +1 -1
- package/dist/dev/presets/live-audio/minimal-skin.css +117 -118
- package/dist/dev/presets/live-audio/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/live-audio/minimal-skin.js +1 -0
- package/dist/dev/presets/live-audio/minimal-skin.js.map +1 -1
- package/dist/dev/presets/live-audio/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/live-audio/minimal-skin.tailwind.js +1 -0
- package/dist/dev/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/live-audio/player.d.ts +2 -2
- package/dist/dev/presets/live-audio/skin.css +95 -99
- package/dist/dev/presets/live-audio/skin.d.ts.map +1 -1
- package/dist/dev/presets/live-audio/skin.js +1 -0
- package/dist/dev/presets/live-audio/skin.js.map +1 -1
- package/dist/dev/presets/live-audio/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/live-audio/skin.tailwind.js +1 -0
- package/dist/dev/presets/live-audio/skin.tailwind.js.map +1 -1
- package/dist/dev/presets/live-video/minimal-skin.css +158 -137
- package/dist/dev/presets/live-video/minimal-skin.js +4 -8
- package/dist/dev/presets/live-video/minimal-skin.js.map +1 -1
- package/dist/dev/presets/live-video/minimal-skin.tailwind.js +6 -8
- package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/live-video/player.d.ts +2 -2
- package/dist/dev/presets/live-video/skin.css +120 -106
- package/dist/dev/presets/live-video/skin.js +4 -8
- package/dist/dev/presets/live-video/skin.js.map +1 -1
- package/dist/dev/presets/live-video/skin.tailwind.js +8 -10
- package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -1
- package/dist/dev/presets/types.d.ts +15 -2
- package/dist/dev/presets/types.d.ts.map +1 -1
- package/dist/dev/presets/video/minimal-skin.css +158 -137
- package/dist/dev/presets/video/minimal-skin.js +4 -8
- package/dist/dev/presets/video/minimal-skin.js.map +1 -1
- package/dist/dev/presets/video/minimal-skin.tailwind.js +6 -8
- package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/video/player.d.ts +2 -2
- package/dist/dev/presets/video/skin.css +120 -106
- package/dist/dev/presets/video/skin.js +4 -8
- package/dist/dev/presets/video/skin.js.map +1 -1
- package/dist/dev/presets/video/skin.tailwind.js +7 -9
- package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/button.js +3 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +8 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +13 -13
- package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +3 -3
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +8 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +13 -12
- package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +7 -6
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +4 -4
- package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
- package/dist/dev/ui/airplay-button/airplay-button.d.ts.map +1 -1
- package/dist/dev/ui/airplay-button/airplay-button.js +0 -1
- package/dist/dev/ui/airplay-button/airplay-button.js.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-close.d.ts.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-close.js +0 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-close.js.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-description.d.ts.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-description.js +0 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-description.js.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-popup.d.ts.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-popup.js +0 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-popup.js.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-root.d.ts.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-root.js +0 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-root.js.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-title.d.ts.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-title.js +0 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-title.js.map +1 -1
- package/dist/dev/ui/alert-dialog/context.d.ts.map +1 -1
- package/dist/dev/ui/alert-dialog/context.js +0 -1
- package/dist/dev/ui/alert-dialog/context.js.map +1 -1
- package/dist/dev/ui/audio-track/use-audio-track-options.d.ts.map +1 -1
- package/dist/dev/ui/audio-track/use-audio-track-options.js +0 -1
- package/dist/dev/ui/audio-track/use-audio-track-options.js.map +1 -1
- package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.d.ts.map +1 -1
- package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.js +0 -1
- package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.js.map +1 -1
- package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts.map +1 -1
- package/dist/dev/ui/buffering-indicator/buffering-indicator.js +0 -1
- package/dist/dev/ui/buffering-indicator/buffering-indicator.js.map +1 -1
- package/dist/dev/ui/captions-button/captions-button.d.ts.map +1 -1
- package/dist/dev/ui/captions-button/captions-button.js +0 -1
- package/dist/dev/ui/captions-button/captions-button.js.map +1 -1
- package/dist/dev/ui/captions-radio-group/captions-radio-group.d.ts.map +1 -1
- package/dist/dev/ui/captions-radio-group/captions-radio-group.js +0 -1
- package/dist/dev/ui/captions-radio-group/captions-radio-group.js.map +1 -1
- package/dist/dev/ui/captions-radio-group/use-captions-options.d.ts.map +1 -1
- package/dist/dev/ui/captions-radio-group/use-captions-options.js +0 -1
- package/dist/dev/ui/captions-radio-group/use-captions-options.js.map +1 -1
- package/dist/dev/ui/cast-button/cast-button.d.ts.map +1 -1
- package/dist/dev/ui/cast-button/cast-button.js +0 -1
- package/dist/dev/ui/cast-button/cast-button.js.map +1 -1
- package/dist/dev/ui/controls/context.js +0 -1
- package/dist/dev/ui/controls/context.js.map +1 -1
- package/dist/dev/ui/controls/controls-group.d.ts.map +1 -1
- package/dist/dev/ui/controls/controls-group.js +0 -1
- package/dist/dev/ui/controls/controls-group.js.map +1 -1
- package/dist/dev/ui/controls/controls-root.d.ts.map +1 -1
- package/dist/dev/ui/controls/controls-root.js +0 -1
- package/dist/dev/ui/controls/controls-root.js.map +1 -1
- package/dist/dev/ui/create-context-part.js +0 -1
- package/dist/dev/ui/create-context-part.js.map +1 -1
- package/dist/dev/ui/create-media-button.js +0 -1
- package/dist/dev/ui/create-media-button.js.map +1 -1
- package/dist/dev/ui/error-dialog/context.d.ts.map +1 -1
- package/dist/dev/ui/error-dialog/context.js +0 -1
- package/dist/dev/ui/error-dialog/context.js.map +1 -1
- package/dist/dev/ui/error-dialog/error-dialog-close.d.ts.map +1 -1
- package/dist/dev/ui/error-dialog/error-dialog-close.js +0 -1
- package/dist/dev/ui/error-dialog/error-dialog-close.js.map +1 -1
- package/dist/dev/ui/error-dialog/error-dialog-description.d.ts.map +1 -1
- package/dist/dev/ui/error-dialog/error-dialog-description.js +0 -1
- package/dist/dev/ui/error-dialog/error-dialog-description.js.map +1 -1
- package/dist/dev/ui/error-dialog/error-dialog-root.d.ts.map +1 -1
- package/dist/dev/ui/error-dialog/error-dialog-root.js +0 -1
- package/dist/dev/ui/error-dialog/error-dialog-root.js.map +1 -1
- package/dist/dev/ui/error-dialog/error-dialog-title.d.ts.map +1 -1
- package/dist/dev/ui/error-dialog/error-dialog-title.js +0 -1
- package/dist/dev/ui/error-dialog/error-dialog-title.js.map +1 -1
- package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts.map +1 -1
- package/dist/dev/ui/fullscreen-button/fullscreen-button.js +0 -1
- package/dist/dev/ui/fullscreen-button/fullscreen-button.js.map +1 -1
- package/dist/dev/ui/gesture/gesture.d.ts +6 -13
- package/dist/dev/ui/gesture/gesture.d.ts.map +1 -1
- package/dist/dev/ui/gesture/gesture.js +0 -1
- package/dist/dev/ui/gesture/gesture.js.map +1 -1
- package/dist/dev/ui/gesture/use-doubletap-gesture.d.ts +2 -5
- package/dist/dev/ui/gesture/use-doubletap-gesture.d.ts.map +1 -1
- package/dist/dev/ui/gesture/use-doubletap-gesture.js +0 -1
- package/dist/dev/ui/gesture/use-doubletap-gesture.js.map +1 -1
- package/dist/dev/ui/gesture/use-tap-gesture.d.ts +2 -5
- package/dist/dev/ui/gesture/use-tap-gesture.d.ts.map +1 -1
- package/dist/dev/ui/gesture/use-tap-gesture.js +0 -1
- package/dist/dev/ui/gesture/use-tap-gesture.js.map +1 -1
- package/dist/dev/ui/hooks/create-radio-options-hook.d.ts.map +1 -1
- package/dist/dev/ui/hooks/create-radio-options-hook.js +0 -1
- package/dist/dev/ui/hooks/create-radio-options-hook.js.map +1 -1
- package/dist/dev/ui/hooks/use-button.d.ts.map +1 -1
- package/dist/dev/ui/hooks/use-button.js +0 -1
- package/dist/dev/ui/hooks/use-button.js.map +1 -1
- package/dist/dev/ui/hooks/use-positioned-state.js +0 -1
- package/dist/dev/ui/hooks/use-positioned-state.js.map +1 -1
- package/dist/dev/ui/hooks/use-slider.d.ts.map +1 -1
- package/dist/dev/ui/hooks/use-slider.js +0 -1
- package/dist/dev/ui/hooks/use-slider.js.map +1 -1
- package/dist/dev/ui/hotkey/hotkey.d.ts +6 -12
- package/dist/dev/ui/hotkey/hotkey.d.ts.map +1 -1
- package/dist/dev/ui/hotkey/hotkey.js +0 -1
- package/dist/dev/ui/hotkey/hotkey.js.map +1 -1
- package/dist/dev/ui/hotkey/use-hotkey-shortcut.d.ts.map +1 -1
- package/dist/dev/ui/hotkey/use-hotkey-shortcut.js +0 -1
- package/dist/dev/ui/hotkey/use-hotkey-shortcut.js.map +1 -1
- package/dist/dev/ui/hotkey/use-hotkey.d.ts.map +1 -1
- package/dist/dev/ui/hotkey/use-hotkey.js +0 -1
- package/dist/dev/ui/hotkey/use-hotkey.js.map +1 -1
- package/dist/dev/ui/input-indicator/use-indicator-visibility.js +0 -1
- package/dist/dev/ui/input-indicator/use-indicator-visibility.js.map +1 -1
- package/dist/dev/ui/input-indicator/use-input-action-subscription.js +0 -1
- package/dist/dev/ui/input-indicator/use-input-action-subscription.js.map +1 -1
- package/dist/dev/ui/input-indicator/use-input-indicator-root.js +0 -1
- package/dist/dev/ui/input-indicator/use-input-indicator-root.js.map +1 -1
- package/dist/dev/ui/input-indicator/use-rendered-indicator-state.js +0 -1
- package/dist/dev/ui/input-indicator/use-rendered-indicator-state.js.map +1 -1
- package/dist/dev/ui/live-button/live-button.d.ts.map +1 -1
- package/dist/dev/ui/live-button/live-button.js +0 -1
- package/dist/dev/ui/live-button/live-button.js.map +1 -1
- package/dist/dev/ui/menu/context.d.ts.map +1 -1
- package/dist/dev/ui/menu/context.js +6 -2
- package/dist/dev/ui/menu/context.js.map +1 -1
- package/dist/dev/ui/menu/menu-checkbox-item.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-checkbox-item.js +0 -1
- package/dist/dev/ui/menu/menu-checkbox-item.js.map +1 -1
- package/dist/dev/ui/menu/menu-content.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-content.js +0 -1
- package/dist/dev/ui/menu/menu-content.js.map +1 -1
- package/dist/dev/ui/menu/menu-group-label.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-group-label.js +0 -1
- package/dist/dev/ui/menu/menu-group-label.js.map +1 -1
- package/dist/dev/ui/menu/menu-group.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-group.js +0 -1
- package/dist/dev/ui/menu/menu-group.js.map +1 -1
- package/dist/dev/ui/menu/menu-item-indicator.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-item-indicator.js +3 -3
- package/dist/dev/ui/menu/menu-item-indicator.js.map +1 -1
- package/dist/dev/ui/menu/menu-item.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-item.js +0 -1
- package/dist/dev/ui/menu/menu-item.js.map +1 -1
- package/dist/dev/ui/menu/menu-radio-group.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-radio-group.js +0 -1
- package/dist/dev/ui/menu/menu-radio-group.js.map +1 -1
- package/dist/dev/ui/menu/menu-radio-item.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-radio-item.js +19 -16
- package/dist/dev/ui/menu/menu-radio-item.js.map +1 -1
- package/dist/dev/ui/menu/menu-root.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-root.js +5 -7
- package/dist/dev/ui/menu/menu-root.js.map +1 -1
- package/dist/dev/ui/menu/menu-separator.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-separator.js +0 -1
- package/dist/dev/ui/menu/menu-separator.js.map +1 -1
- package/dist/dev/ui/menu/menu-trigger.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-trigger.js +26 -12
- package/dist/dev/ui/menu/menu-trigger.js.map +1 -1
- package/dist/dev/ui/menu/use-menu-group.js +0 -1
- package/dist/dev/ui/menu/use-menu-group.js.map +1 -1
- package/dist/dev/ui/mute-button/mute-button.d.ts.map +1 -1
- package/dist/dev/ui/mute-button/mute-button.js +0 -1
- package/dist/dev/ui/mute-button/mute-button.js.map +1 -1
- package/dist/dev/ui/pip-button/pip-button.d.ts.map +1 -1
- package/dist/dev/ui/pip-button/pip-button.js +0 -1
- package/dist/dev/ui/pip-button/pip-button.js.map +1 -1
- package/dist/dev/ui/play-button/play-button.d.ts.map +1 -1
- package/dist/dev/ui/play-button/play-button.js +0 -1
- package/dist/dev/ui/play-button/play-button.js.map +1 -1
- package/dist/dev/ui/playback-rate/use-playback-rate-options.d.ts.map +1 -1
- package/dist/dev/ui/playback-rate/use-playback-rate-options.js +0 -1
- package/dist/dev/ui/playback-rate/use-playback-rate-options.js.map +1 -1
- package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts.map +1 -1
- package/dist/dev/ui/playback-rate-button/playback-rate-button.js +0 -1
- package/dist/dev/ui/playback-rate-button/playback-rate-button.js.map +1 -1
- package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.d.ts.map +1 -1
- package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.js +0 -1
- package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.js.map +1 -1
- package/dist/dev/ui/popover/context.d.ts.map +1 -1
- package/dist/dev/ui/popover/context.js +0 -1
- package/dist/dev/ui/popover/context.js.map +1 -1
- package/dist/dev/ui/popover/popover-arrow.d.ts.map +1 -1
- package/dist/dev/ui/popover/popover-arrow.js +0 -1
- package/dist/dev/ui/popover/popover-arrow.js.map +1 -1
- package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
- package/dist/dev/ui/popover/popover-popup.js +0 -1
- package/dist/dev/ui/popover/popover-popup.js.map +1 -1
- package/dist/dev/ui/popover/popover-root.d.ts.map +1 -1
- package/dist/dev/ui/popover/popover-root.js +0 -1
- package/dist/dev/ui/popover/popover-root.js.map +1 -1
- package/dist/dev/ui/popover/popover-trigger.d.ts.map +1 -1
- package/dist/dev/ui/popover/popover-trigger.js +0 -1
- package/dist/dev/ui/popover/popover-trigger.js.map +1 -1
- package/dist/dev/ui/popover/use-popup-position.js +0 -1
- package/dist/dev/ui/popover/use-popup-position.js.map +1 -1
- package/dist/dev/ui/poster/poster.d.ts +15 -4
- package/dist/dev/ui/poster/poster.d.ts.map +1 -1
- package/dist/dev/ui/poster/poster.js +64 -18
- package/dist/dev/ui/poster/poster.js.map +1 -1
- package/dist/dev/ui/quality/use-quality-options.d.ts.map +1 -1
- package/dist/dev/ui/quality/use-quality-options.js +0 -1
- package/dist/dev/ui/quality/use-quality-options.js.map +1 -1
- package/dist/dev/ui/quality-radio-group/quality-radio-group.d.ts.map +1 -1
- package/dist/dev/ui/quality-radio-group/quality-radio-group.js +0 -1
- package/dist/dev/ui/quality-radio-group/quality-radio-group.js.map +1 -1
- package/dist/dev/ui/seek-button/seek-button.d.ts.map +1 -1
- package/dist/dev/ui/seek-button/seek-button.js +0 -1
- package/dist/dev/ui/seek-button/seek-button.js.map +1 -1
- package/dist/dev/ui/seek-indicator/context.js +0 -1
- package/dist/dev/ui/seek-indicator/context.js.map +1 -1
- package/dist/dev/ui/seek-indicator/seek-indicator-root.d.ts.map +1 -1
- package/dist/dev/ui/seek-indicator/seek-indicator-root.js +0 -1
- package/dist/dev/ui/seek-indicator/seek-indicator-root.js.map +1 -1
- package/dist/dev/ui/seek-indicator/seek-indicator-value.d.ts.map +1 -1
- package/dist/dev/ui/seek-indicator/seek-indicator-value.js +0 -1
- package/dist/dev/ui/seek-indicator/seek-indicator-value.js.map +1 -1
- package/dist/dev/ui/slider/context.js +0 -1
- package/dist/dev/ui/slider/context.js.map +1 -1
- package/dist/dev/ui/slider/slider-buffer.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-buffer.js +0 -1
- package/dist/dev/ui/slider/slider-buffer.js.map +1 -1
- package/dist/dev/ui/slider/slider-fill.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-fill.js +0 -1
- package/dist/dev/ui/slider/slider-fill.js.map +1 -1
- package/dist/dev/ui/slider/slider-preview.d.ts +5 -9
- package/dist/dev/ui/slider/slider-preview.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-preview.js +0 -1
- package/dist/dev/ui/slider/slider-preview.js.map +1 -1
- package/dist/dev/ui/slider/slider-root.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-root.js +0 -1
- package/dist/dev/ui/slider/slider-root.js.map +1 -1
- package/dist/dev/ui/slider/slider-thumb.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-thumb.js +0 -1
- package/dist/dev/ui/slider/slider-thumb.js.map +1 -1
- package/dist/dev/ui/slider/slider-thumbnail.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-thumbnail.js +0 -1
- package/dist/dev/ui/slider/slider-thumbnail.js.map +1 -1
- package/dist/dev/ui/slider/slider-track.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-track.js +0 -1
- package/dist/dev/ui/slider/slider-track.js.map +1 -1
- package/dist/dev/ui/slider/slider-value.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-value.js +0 -1
- package/dist/dev/ui/slider/slider-value.js.map +1 -1
- package/dist/dev/ui/status-announcer/status-announcer.d.ts.map +1 -1
- package/dist/dev/ui/status-announcer/status-announcer.js +0 -1
- package/dist/dev/ui/status-announcer/status-announcer.js.map +1 -1
- package/dist/dev/ui/status-indicator/context.js +0 -1
- package/dist/dev/ui/status-indicator/context.js.map +1 -1
- package/dist/dev/ui/status-indicator/status-indicator-root.d.ts.map +1 -1
- package/dist/dev/ui/status-indicator/status-indicator-root.js +0 -1
- package/dist/dev/ui/status-indicator/status-indicator-root.js.map +1 -1
- package/dist/dev/ui/status-indicator/status-indicator-value.d.ts.map +1 -1
- package/dist/dev/ui/status-indicator/status-indicator-value.js +0 -1
- package/dist/dev/ui/status-indicator/status-indicator-value.js.map +1 -1
- package/dist/dev/ui/thumbnail/thumbnail.d.ts.map +1 -1
- package/dist/dev/ui/thumbnail/thumbnail.js +0 -1
- package/dist/dev/ui/thumbnail/thumbnail.js.map +1 -1
- package/dist/dev/ui/time/time-group.d.ts.map +1 -1
- package/dist/dev/ui/time/time-group.js +0 -1
- package/dist/dev/ui/time/time-group.js.map +1 -1
- package/dist/dev/ui/time/time-separator.d.ts.map +1 -1
- package/dist/dev/ui/time/time-separator.js +0 -1
- package/dist/dev/ui/time/time-separator.js.map +1 -1
- package/dist/dev/ui/time/time-value.d.ts.map +1 -1
- package/dist/dev/ui/time/time-value.js +0 -1
- package/dist/dev/ui/time/time-value.js.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-chapters/slider-segments.js +0 -1
- package/dist/dev/ui/time-slider/time-slider-chapters/slider-segments.js.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.d.ts.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js +0 -1
- package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.d.ts.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.js +0 -1
- package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.js.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-root.d.ts.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-root.js +0 -1
- package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -1
- package/dist/dev/ui/tooltip/context.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/context.js +0 -1
- package/dist/dev/ui/tooltip/context.js.map +1 -1
- package/dist/dev/ui/tooltip/group-context.js +0 -1
- package/dist/dev/ui/tooltip/group-context.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-arrow.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-arrow.js +0 -1
- package/dist/dev/ui/tooltip/tooltip-arrow.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-label.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-label.js +0 -1
- package/dist/dev/ui/tooltip/tooltip-label.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-popup.js +0 -1
- package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-provider.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-provider.js +0 -1
- package/dist/dev/ui/tooltip/tooltip-provider.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-root.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-root.js +0 -1
- package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-shortcut.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-shortcut.js +0 -1
- package/dist/dev/ui/tooltip/tooltip-shortcut.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-trigger.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-trigger.js +0 -1
- package/dist/dev/ui/tooltip/tooltip-trigger.js.map +1 -1
- package/dist/dev/ui/volume-indicator/context.js +0 -1
- package/dist/dev/ui/volume-indicator/context.js.map +1 -1
- package/dist/dev/ui/volume-indicator/volume-indicator-fill.d.ts.map +1 -1
- package/dist/dev/ui/volume-indicator/volume-indicator-fill.js +0 -1
- package/dist/dev/ui/volume-indicator/volume-indicator-fill.js.map +1 -1
- package/dist/dev/ui/volume-indicator/volume-indicator-root.d.ts.map +1 -1
- package/dist/dev/ui/volume-indicator/volume-indicator-root.js +0 -1
- package/dist/dev/ui/volume-indicator/volume-indicator-root.js.map +1 -1
- package/dist/dev/ui/volume-indicator/volume-indicator-value.d.ts.map +1 -1
- package/dist/dev/ui/volume-indicator/volume-indicator-value.js +0 -1
- package/dist/dev/ui/volume-indicator/volume-indicator-value.js.map +1 -1
- package/dist/dev/ui/volume-slider/volume-slider-root.d.ts.map +1 -1
- package/dist/dev/ui/volume-slider/volume-slider-root.js +0 -1
- package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -1
- package/dist/dev/utils/merge-props.d.ts.map +1 -1
- package/dist/dev/utils/merge-props.js +0 -1
- package/dist/dev/utils/merge-props.js.map +1 -1
- package/dist/dev/utils/use-attach-iframe.js +0 -1
- package/dist/dev/utils/use-attach-iframe.js.map +1 -1
- package/dist/dev/utils/use-attach-media.d.ts.map +1 -1
- package/dist/dev/utils/use-attach-media.js +0 -1
- package/dist/dev/utils/use-attach-media.js.map +1 -1
- package/dist/dev/utils/use-composed-refs.d.ts.map +1 -1
- package/dist/dev/utils/use-composed-refs.js +0 -1
- package/dist/dev/utils/use-composed-refs.js.map +1 -1
- package/dist/dev/utils/use-destroy.d.ts.map +1 -1
- package/dist/dev/utils/use-destroy.js +0 -1
- package/dist/dev/utils/use-destroy.js.map +1 -1
- package/dist/dev/utils/use-force-render.js +0 -1
- package/dist/dev/utils/use-force-render.js.map +1 -1
- package/dist/dev/utils/use-latest-ref.d.ts.map +1 -1
- package/dist/dev/utils/use-latest-ref.js +0 -1
- package/dist/dev/utils/use-latest-ref.js.map +1 -1
- package/dist/dev/utils/use-media-component.d.ts.map +1 -1
- package/dist/dev/utils/use-media-component.js +0 -1
- package/dist/dev/utils/use-media-component.js.map +1 -1
- package/dist/dev/utils/use-media-instance.d.ts.map +1 -1
- package/dist/dev/utils/use-media-instance.js +0 -1
- package/dist/dev/utils/use-media-instance.js.map +1 -1
- package/dist/dev/utils/use-render.d.ts.map +1 -1
- package/dist/dev/utils/use-render.js +2 -9
- package/dist/dev/utils/use-render.js.map +1 -1
- package/dist/dev/utils/use-safe-id.js +0 -1
- package/dist/dev/utils/use-safe-id.js.map +1 -1
- package/docs/README.md +1 -1
- package/docs/concepts/features.md +2 -2
- package/docs/concepts/media-sources.md +79 -1
- package/docs/concepts/skins.md +128 -126
- package/docs/how-to/build-your-own-component.md +1 -1
- package/docs/how-to/customize-skins.md +511 -505
- package/docs/how-to/migrate-from-media-chrome.md +412 -0
- package/docs/how-to/migrate-from-mux-player.md +551 -0
- package/docs/how-to/migrate-from-plyr.md +385 -0
- package/docs/how-to/migrate-from-video-js-8.md +594 -0
- package/docs/llms.txt +9 -0
- package/docs/reference/create-player.md +2 -2
- package/docs/reference/feature-volume.md +4 -2
- package/docs/reference/menu.md +6 -18
- package/docs/reference/mute-button.md +34 -0
- package/docs/reference/popover.md +6 -6
- package/docs/reference/poster.md +187 -13
- package/docs/reference/slider.md +1 -1
- package/docs/reference/time-slider.md +1 -1
- package/docs/reference/tooltip.md +10 -10
- package/docs/reference/volume-slider.md +2 -2
- package/package.json +13 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-radio-options-hook.js","names":[],"sources":["../../../../src/ui/hooks/create-radio-options-hook.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"create-radio-options-hook.js","names":[],"sources":["../../../../src/ui/hooks/create-radio-options-hook.ts"],"sourcesContent":["import type { RadioOption, RadioOptionsState } from '@videojs/core';\nimport { logMissingFeature } from '@videojs/core/dom';\nimport { type Text, type TextParams, translateText } from '@videojs/core/i18n';\nimport type { UnknownState } from '@videojs/store';\nimport { useCallback, useState } from 'react';\n\nimport { useTranslator } from '../../i18n/context';\nimport { usePlayer } from '../../player/context';\n\ninterface RadioOptionsCore<Props, Media, State extends RadioOptionsState> {\n setProps(props: Props): void;\n setMedia(media: Media): void;\n getState(): State;\n getLabel(state: State): Text | string;\n getLabelParams?(state: State): TextParams | undefined;\n selectValue(media: Media, value: string): void;\n}\n\ninterface RadioOptionsHookConfig<Props, Media, State extends RadioOptionsState> {\n name: string;\n feature: string;\n selector: ((state: UnknownState) => Media | null) & { displayName?: string | undefined };\n createCore: () => RadioOptionsCore<Props, Media, State>;\n}\n\ntype StateOption<State extends RadioOptionsState> = State extends RadioOptionsState<infer Option> ? Option : never;\n\nexport type TranslatedRadioOption<Option extends RadioOption> = Omit<Option, 'label' | 'labelParams' | 'disabled'> & {\n label: string;\n disabled: boolean;\n};\n\nexport interface RadioOptionsHookResult<Option extends RadioOption, State extends RadioOptionsState> {\n state: State;\n label: string;\n value: string;\n selectedLabel: string;\n options: TranslatedRadioOption<Option>[];\n disabled: boolean;\n hidden: boolean;\n setValue: (value: string) => void;\n}\n\n/** Creates framework adapter mechanics shared by media-backed radio option hooks. */\nexport function createRadioOptionsHook<Props, Media, State extends RadioOptionsState>({\n name,\n feature,\n selector,\n createCore,\n}: RadioOptionsHookConfig<Props, Media, State>): (\n props?: Props\n) => RadioOptionsHookResult<StateOption<State>, State> | null {\n return function useRadioOptions(props?: Props): RadioOptionsHookResult<StateOption<State>, State> | null {\n 'use no memo';\n\n const media = usePlayer(selector);\n const t = useTranslator();\n const [core] = useState(createCore);\n\n core.setProps(props ?? ({} as Props));\n\n const setValue = useCallback((value: string) => core.selectValue(media!, value), [core, media]);\n\n if (!media) {\n if (__DEV__) logMissingFeature(name, selector.displayName ?? feature);\n return null;\n }\n\n core.setMedia(media);\n const state = core.getState();\n const options = state.options.map((option) => {\n const { label, labelParams, disabled, ...rest } = option;\n\n return {\n ...rest,\n label: translateText(label, t, labelParams),\n disabled: state.disabled || disabled,\n } as TranslatedRadioOption<StateOption<State>>;\n });\n\n return {\n state,\n label: translateText(core.getLabel(state), t, core.getLabelParams?.(state)),\n value: state.value,\n selectedLabel: options.find((option) => option.value === state.value)?.label ?? '',\n options,\n disabled: state.disabled,\n hidden: state.hidden,\n setValue,\n };\n };\n}\n"],"mappings":";;;;;;;AA4CA,SAAgB,uBAAsE,EACpF,MACA,SACA,UACA,cAG4D;CAC5D,OAAO,SAAS,gBAAgB,OAAyE;EACvG;EAEA,MAAM,QAAQ,UAAU,QAAQ;EAChC,MAAM,IAAI,cAAc;EACxB,MAAM,CAAC,QAAQ,SAAS,UAAU;EAElC,KAAK,SAAS,SAAU,CAAC,CAAW;EAEpC,MAAM,WAAW,aAAa,UAAkB,KAAK,YAAY,OAAQ,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC;EAE9F,IAAI,CAAC,OAAO;GACG,kBAAkB,MAAM,SAAS,eAAe,OAAO;GACpE,OAAO;EACT;EAEA,KAAK,SAAS,KAAK;EACnB,MAAM,QAAQ,KAAK,SAAS;EAC5B,MAAM,UAAU,MAAM,QAAQ,KAAK,WAAW;GAC5C,MAAM,EAAE,OAAO,aAAa,UAAU,GAAG,SAAS;GAElD,OAAO;IACL,GAAG;IACH,OAAO,cAAc,OAAO,GAAG,WAAW;IAC1C,UAAU,MAAM,YAAY;GAC9B;EACF,CAAC;EAED,OAAO;GACL;GACA,OAAO,cAAc,KAAK,SAAS,KAAK,GAAG,GAAG,KAAK,iBAAiB,KAAK,CAAC;GAC1E,OAAO,MAAM;GACb,eAAe,QAAQ,MAAM,WAAW,OAAO,UAAU,MAAM,KAAK,CAAC,EAAE,SAAS;GAChF;GACA,UAAU,MAAM;GAChB,QAAQ,MAAM;GACd;EACF;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-button.d.ts","names":[],"sources":["../../../../src/ui/hooks/use-button.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"use-button.d.ts","names":[],"sources":["../../../../src/ui/hooks/use-button.ts"],"mappings":";;;UAKiB;EACf;EACA,aAAa,OAAO;EACpB;;UAGe;EACf,iBAAiB,gBAAgB,oCAAoC;EACrE,WAAW,IAAI;;;;;;;;;;;;;;;;;;;;;;iBAuBD,UAAU,QAAQ,sBAAsB;kBAuBvC;OACH,aAAa;OACb,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-button.js","names":[],"sources":["../../../../src/ui/hooks/use-button.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"use-button.js","names":[],"sources":["../../../../src/ui/hooks/use-button.ts"],"sourcesContent":["import { createButton, type UIEvent } from '@videojs/core/dom';\nimport type { ComponentPropsWithRef, Ref } from 'react';\nimport { useCallback } from 'react';\nimport { mergeProps } from '../../utils/merge-props';\n\nexport interface UseButtonParameters {\n displayName: string;\n onActivate: (event: UIEvent) => void;\n isDisabled: () => boolean;\n}\n\nexport interface UseButtonReturnValue {\n getButtonProps: (externalProps?: ComponentPropsWithRef<'button'>) => ComponentPropsWithRef<'button'>;\n buttonRef: Ref<HTMLElement>;\n}\n\n/**\n * Hook for button behavior with keyboard and pointer interaction.\n *\n * @example\n * ```tsx\n * const { getButtonProps, buttonRef } = useButton({\n * displayName: 'PlayButton',\n * onActivate: () => togglePlayback(),\n * isDisabled: () => disabled,\n * });\n *\n * return useRender('button', componentProps, {\n * state,\n * ref: [forwardedRef, buttonRef],\n * props: [elementProps, getButtonProps],\n * });\n * ```\n *\n * @param params - Button configuration with activation handler and disabled check.\n */\nexport function useButton(params: UseButtonParameters): UseButtonReturnValue {\n const { displayName, onActivate, isDisabled } = params;\n\n const buttonRef = useCallback(\n (element: HTMLElement | null) => {\n if (__DEV__ && element && element.tagName !== 'BUTTON') {\n console.warn(`${displayName} should render a <button> element for accessibility`);\n }\n },\n [displayName]\n );\n\n const getButtonProps = useCallback(\n (externalProps?: ComponentPropsWithRef<'button'>): ComponentPropsWithRef<'button'> => {\n const buttonProps = createButton({ onActivate, isDisabled });\n return mergeProps(buttonProps, externalProps);\n },\n [onActivate, isDisabled]\n );\n\n return { getButtonProps, buttonRef };\n}\n\nexport namespace useButton {\n export type Parameters = UseButtonParameters;\n export type ReturnValue = UseButtonReturnValue;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAoCA,SAAgB,UAAU,QAAmD;CAC3E,MAAM,EAAE,aAAa,YAAY,eAAe;CAEhD,MAAM,YAAY,aACf,YAAgC;EAC/B,IAAe,WAAW,QAAQ,YAAY,UAC5C,QAAQ,KAAK,GAAG,YAAY,oDAAoD;CAEpF,GACA,CAAC,WAAW,CACd;CAUA,OAAO;EAAE,gBARc,aACpB,kBAAqF;GAEpF,OAAO,WADa,aAAa;IAAE;IAAY;GAAW,CAC9B,GAAG,aAAa;EAC9C,GACA,CAAC,YAAY,UAAU,CAGH;EAAG;CAAU;AACrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-positioned-state.js","names":[],"sources":["../../../../src/ui/hooks/use-positioned-state.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"use-positioned-state.js","names":[],"sources":["../../../../src/ui/hooks/use-positioned-state.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\n\ninterface PopupState {\n open: boolean;\n side: string | undefined;\n}\n\ninterface PositionedState<State extends PopupState> {\n state: State;\n preferredSide: State['side'];\n setPositionedSide: (side: State['side']) => void;\n}\n\nexport function usePositionedState<State extends PopupState>(preferredState: State): PositionedState<State> {\n const preferredSide = preferredState.side;\n const [position, setPosition] = useState<{ preferred: State['side']; side: State['side'] }>({\n preferred: preferredSide,\n side: preferredSide,\n });\n\n const side = preferredState.open && position.preferred === preferredSide ? position.side : preferredSide;\n\n const state = useMemo(\n () => (side === preferredSide ? preferredState : { ...preferredState, side }),\n [side, preferredState, preferredSide]\n );\n\n const setPositionedSide = useCallback(\n (nextSide: State['side']) =>\n setPosition((prev) =>\n prev.preferred === preferredSide && prev.side === nextSide ? prev : { preferred: preferredSide, side: nextSide }\n ),\n [preferredSide]\n );\n\n useEffect(() => {\n if (!preferredState.open) setPositionedSide(preferredSide);\n }, [preferredState.open, preferredSide, setPositionedSide]);\n\n return { state, preferredSide, setPositionedSide };\n}\n"],"mappings":";;AAaA,SAAgB,mBAA6C,gBAA+C;CAC1G,MAAM,gBAAgB,eAAe;CACrC,MAAM,CAAC,UAAU,eAAe,SAA4D;EAC1F,WAAW;EACX,MAAM;CACR,CAAC;CAED,MAAM,OAAO,eAAe,QAAQ,SAAS,cAAc,gBAAgB,SAAS,OAAO;CAE3F,MAAM,QAAQ,cACL,SAAS,gBAAgB,iBAAiB;EAAE,GAAG;EAAgB;CAAK,GAC3E;EAAC;EAAM;EAAgB;CAAa,CACtC;CAEA,MAAM,oBAAoB,aACvB,aACC,aAAa,SACX,KAAK,cAAc,iBAAiB,KAAK,SAAS,WAAW,OAAO;EAAE,WAAW;EAAe,MAAM;CAAS,CACjH,GACF,CAAC,aAAa,CAChB;CAEA,gBAAgB;EACd,IAAI,CAAC,eAAe,MAAM,kBAAkB,aAAa;CAC3D,GAAG;EAAC,eAAe;EAAM;EAAe;CAAiB,CAAC;CAE1D,OAAO;EAAE;EAAO;EAAe;CAAkB;AACnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-slider.d.ts","names":[],"sources":["../../../../src/ui/hooks/use-slider.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"use-slider.d.ts","names":[],"sources":["../../../../src/ui/hooks/use-slider.ts"],"mappings":";;;UAkBiB,iBAAiB,cAAc,cAAc,qBACpD,KACN;EAUF,eAAe,OAAO,gBAAgB;EACtC;EACA;;EAEA,kBAAkB,oBAAoB,mBAAmB;;EAEzD,aAAa,OAAO,UAAU;;UAGf,qBAAqB,cAAc,cAAc;EAChE,OAAO;EACP,OAAO;EACP,SAAS;EACT,SAAS,MAAM,YAAY;EAC3B,UAAU,MAAM,YAAY;EAC5B,WAAW;EACX,WAAW;EACX,YAAY;;;;;;;;;iBAUE,UAAU,cAAc,cAAc,aACpD,SAAS,iBAAiB,SACzB,qBAAqB;kBA6GP;OACH,UAAU;OACV,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-slider.js","names":[],"sources":["../../../../src/ui/hooks/use-slider.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"use-slider.js","names":[],"sources":["../../../../src/ui/hooks/use-slider.ts"],"sourcesContent":["import type { SliderInput, SliderState } from '@videojs/core';\nimport {\n createSlider,\n type SliderApi,\n type SliderOptions,\n type SliderRootProps,\n type SliderRootStyle,\n type SliderThumbProps,\n selectControls,\n} from '@videojs/core/dom';\nimport { useSnapshot } from '@videojs/store/react';\nimport { applyStyles, isRTL } from '@videojs/utils/dom';\nimport { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { useOptionalPlayer } from '../../player/context';\nimport { useDestroy } from '../../utils/use-destroy';\nimport { useForceRender } from '../../utils/use-force-render';\nimport { useLatestRef } from '../../utils/use-latest-ref';\n\nexport interface UseSliderOptions<State extends SliderState = SliderState>\n extends Pick<\n SliderOptions,\n | 'getPercent'\n | 'getStepPercent'\n | 'getLargeStepPercent'\n | 'changeThrottle'\n | 'onValueChange'\n | 'onValueCommit'\n | 'onDragStart'\n | 'onDragEnd'\n > {\n computeState: (input: SliderInput) => State;\n orientation?: 'horizontal' | 'vertical' | undefined;\n disabled?: boolean | undefined;\n /** Adjust a raw 0–100 percent for thumb alignment. Called for fill and pointer percents. */\n adjustPercent?: ((rawPercent: number, thumbSize: number, trackSize: number) => number) | undefined;\n /** Compute CSS variable map from the (possibly alignment-adjusted) state. */\n getCSSVars: (state: State) => Record<string, string>;\n}\n\nexport interface UseSliderReturnValue<State extends SliderState = SliderState> {\n state: State;\n input: SliderApi['input'];\n cssVars: Record<string, string>;\n rootRef: React.RefCallback<HTMLElement>;\n thumbRef: React.RefCallback<HTMLElement>;\n rootProps: SliderRootProps;\n rootStyle: SliderRootStyle;\n thumbProps: SliderThumbProps;\n}\n\n/**\n * Manages slider input lifecycle for React.\n *\n * Wraps `createSlider()` from `@videojs/core/dom` and subscribes to its\n * input state via `useSnapshot`. Returns split props for the root\n * (pointer events) and thumb (keyboard/focus) elements.\n */\nexport function useSlider<State extends SliderState = SliderState>(\n options: UseSliderOptions<State>\n): UseSliderReturnValue<State> {\n const optionsRef = useLatestRef(options);\n const controls = useOptionalPlayer(selectControls);\n const requestControlsLock = controls?.requestControlsLock;\n const releaseControlsLockRef = useRef<(() => void) | null>(null);\n\n const releaseControlsLock = useCallback(() => {\n releaseControlsLockRef.current?.();\n releaseControlsLockRef.current = null;\n }, []);\n\n useEffect(() => releaseControlsLock, [releaseControlsLock]);\n\n const rootElementRef = useRef<HTMLElement | null>(null);\n const thumbElementRef = useRef<HTMLElement | null>(null);\n const forceRender = useForceRender();\n\n // Lazy-init the slider handle. Stable across re-renders.\n const [slider] = useState<SliderApi>(() => {\n const stableOptions: SliderOptions = {\n getElement: () => rootElementRef.current!,\n getThumbElement: () => thumbElementRef.current,\n getOrientation: () => optionsRef.current.orientation ?? 'horizontal',\n isRTL: () => (rootElementRef.current ? isRTL(rootElementRef.current) : false),\n isDisabled: () => optionsRef.current.disabled ?? false,\n getPercent: () => optionsRef.current.getPercent(),\n getStepPercent: () => optionsRef.current.getStepPercent(),\n getLargeStepPercent: () => optionsRef.current.getLargeStepPercent(),\n changeThrottle: optionsRef.current.changeThrottle,\n adjustPercent: optionsRef.current.adjustPercent,\n onValueChange: (percent) => optionsRef.current.onValueChange?.(percent),\n onValueCommit: (percent) => optionsRef.current.onValueCommit?.(percent),\n onDragStart: () => {\n releaseControlsLockRef.current ??= requestControlsLock?.() ?? null;\n optionsRef.current.onDragStart?.();\n },\n onDragEnd: () => {\n releaseControlsLock();\n optionsRef.current.onDragEnd?.();\n },\n };\n\n return createSlider(stableOptions);\n });\n\n useDestroy(slider);\n\n // Percentage changes are rendered directly below. React only needs to\n // re-render when interaction state changes.\n const interaction = useSnapshot(slider.input, ({ dragging, pointing, focused }) => ({\n dragging,\n pointing,\n focused,\n }));\n const input = { ...slider.input.current, ...interaction };\n\n // Compute derived state from input + caller-provided projection.\n const state = options.computeState(input);\n\n // Force a synchronous re-render after mount so edge thumb alignment\n // can read DOM measurements from the now-populated element refs.\n useLayoutEffect(() => {\n if (state.thumbAlignment === 'edge' && rootElementRef.current && thumbElementRef.current) {\n forceRender();\n }\n }, [state.thumbAlignment]);\n\n // Adjust CSS var percents for edge thumb alignment using live DOM measurements.\n const cssVars = options.getCSSVars(slider.adjustForAlignment(state));\n\n const syncStyles = useCallback(\n (element = rootElementRef.current) => {\n if (!element) return;\n const next = optionsRef.current.computeState(slider.input.current);\n applyStyles(element, optionsRef.current.getCSSVars(slider.adjustForAlignment(next)));\n },\n [slider]\n );\n\n useLayoutEffect(() => {\n syncStyles();\n return slider.input.subscribe(syncStyles);\n }, [slider, syncStyles]);\n\n // Ref callbacks for root and thumb elements.\n const rootRef = useCallback(\n (element: HTMLElement | null) => {\n rootElementRef.current = element;\n syncStyles(element);\n },\n [syncStyles]\n );\n\n const thumbRef = useCallback((element: HTMLElement | null) => {\n thumbElementRef.current = element;\n }, []);\n\n return {\n state,\n input: slider.input,\n cssVars,\n rootRef,\n thumbRef,\n rootProps: slider.rootProps,\n rootStyle: slider.rootStyle,\n thumbProps: slider.thumbProps,\n };\n}\n\nexport namespace useSlider {\n export type Options = UseSliderOptions;\n export type ReturnValue = UseSliderReturnValue;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAyDA,SAAgB,UACd,SAC6B;CAC7B,MAAM,aAAa,aAAa,OAAO;CAEvC,MAAM,sBADW,kBAAkB,cACA,CAAC,EAAE;CACtC,MAAM,yBAAyB,OAA4B,IAAI;CAE/D,MAAM,sBAAsB,kBAAkB;EAC5C,uBAAuB,UAAU;EACjC,uBAAuB,UAAU;CACnC,GAAG,CAAC,CAAC;CAEL,gBAAgB,qBAAqB,CAAC,mBAAmB,CAAC;CAE1D,MAAM,iBAAiB,OAA2B,IAAI;CACtD,MAAM,kBAAkB,OAA2B,IAAI;CACvD,MAAM,cAAc,eAAe;CAGnC,MAAM,CAAC,UAAU,eAA0B;EAwBzC,OAAO,aAAa;GAtBlB,kBAAkB,eAAe;GACjC,uBAAuB,gBAAgB;GACvC,sBAAsB,WAAW,QAAQ,eAAe;GACxD,aAAc,eAAe,UAAU,MAAM,eAAe,OAAO,IAAI;GACvE,kBAAkB,WAAW,QAAQ,YAAY;GACjD,kBAAkB,WAAW,QAAQ,WAAW;GAChD,sBAAsB,WAAW,QAAQ,eAAe;GACxD,2BAA2B,WAAW,QAAQ,oBAAoB;GAClE,gBAAgB,WAAW,QAAQ;GACnC,eAAe,WAAW,QAAQ;GAClC,gBAAgB,YAAY,WAAW,QAAQ,gBAAgB,OAAO;GACtE,gBAAgB,YAAY,WAAW,QAAQ,gBAAgB,OAAO;GACtE,mBAAmB;IACjB,uBAAuB,YAAY,sBAAsB,KAAK;IAC9D,WAAW,QAAQ,cAAc;GACnC;GACA,iBAAiB;IACf,oBAAoB;IACpB,WAAW,QAAQ,YAAY;GACjC;EAG8B,CAAC;CACnC,CAAC;CAED,WAAW,MAAM;CAIjB,MAAM,cAAc,YAAY,OAAO,QAAQ,EAAE,UAAU,UAAU,eAAe;EAClF;EACA;EACA;CACF,EAAE;CACF,MAAM,QAAQ;EAAE,GAAG,OAAO,MAAM;EAAS,GAAG;CAAY;CAGxD,MAAM,QAAQ,QAAQ,aAAa,KAAK;CAIxC,sBAAsB;EACpB,IAAI,MAAM,mBAAmB,UAAU,eAAe,WAAW,gBAAgB,SAC/E,YAAY;CAEhB,GAAG,CAAC,MAAM,cAAc,CAAC;CAGzB,MAAM,UAAU,QAAQ,WAAW,OAAO,mBAAmB,KAAK,CAAC;CAEnE,MAAM,aAAa,aAChB,UAAU,eAAe,YAAY;EACpC,IAAI,CAAC,SAAS;EACd,MAAM,OAAO,WAAW,QAAQ,aAAa,OAAO,MAAM,OAAO;EACjE,YAAY,SAAS,WAAW,QAAQ,WAAW,OAAO,mBAAmB,IAAI,CAAC,CAAC;CACrF,GACA,CAAC,MAAM,CACT;CAEA,sBAAsB;EACpB,WAAW;EACX,OAAO,OAAO,MAAM,UAAU,UAAU;CAC1C,GAAG,CAAC,QAAQ,UAAU,CAAC;CAGvB,MAAM,UAAU,aACb,YAAgC;EAC/B,eAAe,UAAU;EACzB,WAAW,OAAO;CACpB,GACA,CAAC,UAAU,CACb;CAEA,MAAM,WAAW,aAAa,YAAgC;EAC5D,gBAAgB,UAAU;CAC5B,GAAG,CAAC,CAAC;CAEL,OAAO;EACL;EACA,OAAO,OAAO;EACd;EACA;EACA;EACA,WAAW,OAAO;EAClB,WAAW,OAAO;EAClB,YAAY,OAAO;CACrB;AACF"}
|
|
@@ -1,21 +1,15 @@
|
|
|
1
|
-
import { HotkeyActionName } from "@videojs/core/dom";
|
|
2
1
|
import { ReactNode } from "react";
|
|
2
|
+
import { HotkeyProps } from "@videojs/core";
|
|
3
3
|
//#region src/ui/hotkey/hotkey.d.ts
|
|
4
|
-
interface HotkeyProps {
|
|
5
|
-
|
|
6
|
-
action: HotkeyActionName | (string & {});
|
|
7
|
-
value?: number;
|
|
8
|
-
disabled?: boolean;
|
|
9
|
-
target?: 'player' | 'document';
|
|
10
|
-
}
|
|
11
|
-
declare function Hotkey({ keys, action, value, disabled, target }: HotkeyProps): ReactNode;
|
|
4
|
+
interface HotkeyProps$1 extends HotkeyProps {}
|
|
5
|
+
declare function Hotkey({ keys, action, value, disabled, target }: HotkeyProps$1): ReactNode;
|
|
12
6
|
declare namespace Hotkey {
|
|
13
|
-
type Props = HotkeyProps;
|
|
7
|
+
type Props = HotkeyProps$1;
|
|
14
8
|
}
|
|
15
9
|
/** @deprecated Use `HotkeyProps` instead. */
|
|
16
|
-
type MediaHotkeyProps = HotkeyProps;
|
|
10
|
+
type MediaHotkeyProps = HotkeyProps$1;
|
|
17
11
|
/** @deprecated Use `Hotkey` instead. */
|
|
18
12
|
declare const MediaHotkey: typeof Hotkey;
|
|
19
13
|
//#endregion
|
|
20
|
-
export { Hotkey, HotkeyProps, MediaHotkey, MediaHotkeyProps };
|
|
14
|
+
export { Hotkey, HotkeyProps$1 as HotkeyProps, MediaHotkey, MediaHotkeyProps };
|
|
21
15
|
//# sourceMappingURL=hotkey.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hotkey.d.ts","names":[],"sources":["../../../../src/ui/hotkey/hotkey.tsx"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"hotkey.d.ts","names":[],"sources":["../../../../src/ui/hotkey/hotkey.tsx"],"mappings":";;;UAQiB,sBAAoB;iBAErB,SAAS,MAAM,QAAQ,OAAO,UAAU,UAAU,gBAAc;kBA0B/D;OACH,QAAQ;;;KAIV,mBAAmB;;cAGlB,oBAAW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hotkey.js","names":[],"sources":["../../../../src/ui/hotkey/hotkey.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"hotkey.js","names":[],"sources":["../../../../src/ui/hotkey/hotkey.tsx"],"sourcesContent":["import type { HotkeyProps as CoreHotkeyProps } from '@videojs/core';\nimport type { AnyPlayerStore } from '@videojs/core/dom';\nimport { createHotkey, isHotkeyToggleAction, resolveHotkeyAction } from '@videojs/core/dom';\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\n\nimport { useContainer, usePlayer } from '../../player/context';\n\nexport interface HotkeyProps extends CoreHotkeyProps {}\n\nexport function Hotkey({ keys, action, value, disabled, target }: HotkeyProps): ReactNode {\n const store = usePlayer() as AnyPlayerStore;\n const container = useContainer();\n\n useEffect(() => {\n if (!container || !keys || !action || disabled) return;\n\n const resolver = resolveHotkeyAction(action);\n if (!resolver) return;\n\n return createHotkey(container, {\n keys,\n action,\n value,\n target,\n disabled,\n repeatable: !isHotkeyToggleAction(action),\n onActivate: (_event, key) => {\n resolver({ store, key, value });\n },\n });\n }, [container, store, keys, action, value, disabled, target]);\n\n return null;\n}\n\nexport namespace Hotkey {\n export type Props = HotkeyProps;\n}\n\n/** @deprecated Use `HotkeyProps` instead. */\nexport type MediaHotkeyProps = HotkeyProps;\n\n/** @deprecated Use `Hotkey` instead. */\nexport const MediaHotkey = Hotkey;\n"],"mappings":";;;;AAUA,SAAgB,OAAO,EAAE,MAAM,QAAQ,OAAO,UAAU,UAAkC;CACxF,MAAM,QAAQ,UAAU;CACxB,MAAM,YAAY,aAAa;CAE/B,gBAAgB;EACd,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,UAAU;EAEhD,MAAM,WAAW,oBAAoB,MAAM;EAC3C,IAAI,CAAC,UAAU;EAEf,OAAO,aAAa,WAAW;GAC7B;GACA;GACA;GACA;GACA;GACA,YAAY,CAAC,qBAAqB,MAAM;GACxC,aAAa,QAAQ,QAAQ;IAC3B,SAAS;KAAE;KAAO;KAAK;IAAM,CAAC;GAChC;EACF,CAAC;CACH,GAAG;EAAC;EAAW;EAAO;EAAM;EAAQ;EAAO;EAAU;CAAM,CAAC;CAE5D,OAAO;AACT;;AAUA,MAAa,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-hotkey-shortcut.d.ts","names":[],"sources":["../../../../src/ui/hotkey/use-hotkey-shortcut.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"use-hotkey-shortcut.d.ts","names":[],"sources":["../../../../src/ui/hotkey/use-hotkey-shortcut.ts"],"mappings":";;iBAKgB,kBAAkB,4BAA4B,6BAA6B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-hotkey-shortcut.js","names":[],"sources":["../../../../src/ui/hotkey/use-hotkey-shortcut.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"use-hotkey-shortcut.js","names":[],"sources":["../../../../src/ui/hotkey/use-hotkey-shortcut.ts"],"sourcesContent":["import { getHotkeyCoordinator, type HotkeyShortcutDetails } from '@videojs/core/dom';\nimport { useEffect, useState } from 'react';\n\nimport { useContainer } from '../../player/context';\n\nexport function useHotkeyShortcut(action: string | undefined, value?: number | undefined): HotkeyShortcutDetails {\n const container = useContainer();\n\n const [shortcut, setShortcut] = useState<HotkeyShortcutDetails>({});\n\n useEffect(() => {\n if (!container || !action) {\n setShortcut({});\n return;\n }\n\n const coordinator = getHotkeyCoordinator(container);\n const update = () => setShortcut(coordinator.getShortcut(action, value));\n\n update();\n return coordinator.subscribeShortcutChanges(update);\n }, [container, action, value]);\n\n return shortcut;\n}\n"],"mappings":";;;;AAKA,SAAgB,kBAAkB,QAA4B,OAAmD;CAC/G,MAAM,YAAY,aAAa;CAE/B,MAAM,CAAC,UAAU,eAAe,SAAgC,CAAC,CAAC;CAElE,gBAAgB;EACd,IAAI,CAAC,aAAa,CAAC,QAAQ;GACzB,YAAY,CAAC,CAAC;GACd;EACF;EAEA,MAAM,cAAc,qBAAqB,SAAS;EAClD,MAAM,eAAe,YAAY,YAAY,YAAY,QAAQ,KAAK,CAAC;EAEvE,OAAO;EACP,OAAO,YAAY,yBAAyB,MAAM;CACpD,GAAG;EAAC;EAAW;EAAQ;CAAK,CAAC;CAE7B,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-hotkey.d.ts","names":[],"sources":["../../../../src/ui/hotkey/use-hotkey.ts"],"mappings":";
|
|
1
|
+
{"version":3,"file":"use-hotkey.d.ts","names":[],"sources":["../../../../src/ui/hotkey/use-hotkey.ts"],"mappings":";UAMiB;EACf;EACA,aAAa,OAAO,eAAe;EACnC;EACA;EACA;;iBAGc,UAAU,SAAS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-hotkey.js","names":[],"sources":["../../../../src/ui/hotkey/use-hotkey.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"use-hotkey.js","names":[],"sources":["../../../../src/ui/hotkey/use-hotkey.ts"],"sourcesContent":["import { createHotkey } from '@videojs/core/dom';\nimport { useEffect } from 'react';\n\nimport { useContainer } from '../../player/context';\nimport { useLatestRef } from '../../utils/use-latest-ref';\n\nexport interface UseHotkeyOptions {\n keys: string;\n onActivate: (event: KeyboardEvent, key: string) => void;\n target?: 'player' | 'document';\n repeatable?: boolean;\n disabled?: boolean;\n}\n\nexport function useHotkey(options: UseHotkeyOptions): void {\n const { keys, target = 'player', repeatable = true, disabled = false } = options;\n const container = useContainer();\n const onActivateRef = useLatestRef(options.onActivate);\n\n useEffect(() => {\n if (!container || !keys || disabled) return;\n\n return createHotkey(container, {\n keys,\n target,\n repeatable,\n disabled,\n onActivate: (event, key) => onActivateRef.current(event, key),\n });\n }, [container, keys, target, repeatable, disabled]);\n}\n"],"mappings":";;;;;AAcA,SAAgB,UAAU,SAAiC;CACzD,MAAM,EAAE,MAAM,SAAS,UAAU,aAAa,MAAM,WAAW,UAAU;CACzE,MAAM,YAAY,aAAa;CAC/B,MAAM,gBAAgB,aAAa,QAAQ,UAAU;CAErD,gBAAgB;EACd,IAAI,CAAC,aAAa,CAAC,QAAQ,UAAU;EAErC,OAAO,aAAa,WAAW;GAC7B;GACA;GACA;GACA;GACA,aAAa,OAAO,QAAQ,cAAc,QAAQ,OAAO,GAAG;EAC9D,CAAC;CACH,GAAG;EAAC;EAAW;EAAM;EAAQ;EAAY;CAAQ,CAAC;AACpD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-indicator-visibility.js","names":[],"sources":["../../../../src/ui/input-indicator/use-indicator-visibility.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"use-indicator-visibility.js","names":[],"sources":["../../../../src/ui/input-indicator/use-indicator-visibility.ts"],"sourcesContent":["import type { IndicatorVisibilityHandle } from '@videojs/core';\nimport { getIndicatorVisibilityCoordinator } from '@videojs/core/dom';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { useContainer } from '../../player/context';\nimport { useLatestRef } from '../../utils/use-latest-ref';\n\nexport function useIndicatorVisibility(close: () => void): () => void {\n const container = useContainer();\n const closeRef = useLatestRef(close);\n const coordinatorRef = useRef<ReturnType<typeof getIndicatorVisibilityCoordinator> | null>(null);\n const [handle] = useState<IndicatorVisibilityHandle>(() => ({\n close: () => closeRef.current(),\n }));\n\n useEffect(() => {\n if (!container) return;\n\n const coordinator = getIndicatorVisibilityCoordinator(container);\n coordinatorRef.current = coordinator;\n\n return coordinator.register(handle);\n }, [container, handle]);\n\n return useCallback(() => {\n coordinatorRef.current?.show(handle);\n }, [handle]);\n}\n"],"mappings":";;;;;AAOA,SAAgB,uBAAuB,OAA+B;CACpE,MAAM,YAAY,aAAa;CAC/B,MAAM,WAAW,aAAa,KAAK;CACnC,MAAM,iBAAiB,OAAoE,IAAI;CAC/F,MAAM,CAAC,UAAU,gBAA2C,EAC1D,aAAa,SAAS,QAAQ,EAChC,EAAE;CAEF,gBAAgB;EACd,IAAI,CAAC,WAAW;EAEhB,MAAM,cAAc,kCAAkC,SAAS;EAC/D,eAAe,UAAU;EAEzB,OAAO,YAAY,SAAS,MAAM;CACpC,GAAG,CAAC,WAAW,MAAM,CAAC;CAEtB,OAAO,kBAAkB;EACvB,eAAe,SAAS,KAAK,MAAM;CACrC,GAAG,CAAC,MAAM,CAAC;AACb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-input-action-subscription.js","names":[],"sources":["../../../../src/ui/input-indicator/use-input-action-subscription.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"use-input-action-subscription.js","names":[],"sources":["../../../../src/ui/input-indicator/use-input-action-subscription.ts"],"sourcesContent":["import type { InputActionEvent, MediaSnapshot } from '@videojs/core';\nimport { getMediaSnapshot, subscribeToInputActions } from '@videojs/core/dom';\nimport { useEffect } from 'react';\n\nimport { useContainer, usePlayer } from '../../player/context';\nimport { useLatestRef } from '../../utils/use-latest-ref';\n\nexport function useInputActionSubscription(callback: (event: InputActionEvent, snapshot: MediaSnapshot) => void): void {\n const container = useContainer();\n const store = usePlayer();\n const callbackRef = useLatestRef(callback);\n const storeRef = useLatestRef(store);\n\n useEffect(() => {\n if (!container) return;\n\n return subscribeToInputActions(container, (event) => {\n callbackRef.current(event, getMediaSnapshot(storeRef.current));\n });\n }, [container]);\n}\n"],"mappings":";;;;;AAOA,SAAgB,2BAA2B,UAA4E;CACrH,MAAM,YAAY,aAAa;CAC/B,MAAM,QAAQ,UAAU;CACxB,MAAM,cAAc,aAAa,QAAQ;CACzC,MAAM,WAAW,aAAa,KAAK;CAEnC,gBAAgB;EACd,IAAI,CAAC,WAAW;EAEhB,OAAO,wBAAwB,YAAY,UAAU;GACnD,YAAY,QAAQ,OAAO,iBAAiB,SAAS,OAAO,CAAC;EAC/D,CAAC;CACH,GAAG,CAAC,SAAS,CAAC;AAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-input-indicator-root.js","names":[],"sources":["../../../../src/ui/input-indicator/use-input-indicator-root.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"use-input-indicator-root.js","names":[],"sources":["../../../../src/ui/input-indicator/use-input-indicator-root.ts"],"sourcesContent":["import type { IndicatorLifecycleState, InputActionEvent, MediaSnapshot } from '@videojs/core';\nimport type { State as StoreState } from '@videojs/store';\nimport { useState, useSyncExternalStore } from 'react';\n\nimport { useDestroy } from '../../utils/use-destroy';\nimport { useIndicatorVisibility } from './use-indicator-visibility';\nimport { useInputActionSubscription } from './use-input-action-subscription';\nimport { type RenderedIndicatorOptions, useRenderedIndicatorState } from './use-rendered-indicator-state';\n\ninterface InputIndicatorRootCore<IndicatorState extends IndicatorLifecycleState, Props> {\n readonly state: StoreState<IndicatorState>;\n setProps(props: Props): void;\n destroy(): void;\n close(): void;\n processEvent(event: InputActionEvent, snapshot: MediaSnapshot): boolean;\n}\n\nexport function useInputIndicatorRoot<IndicatorState extends IndicatorLifecycleState, Props>(\n createCore: () => InputIndicatorRootCore<IndicatorState, Props>,\n props: Props,\n options?: RenderedIndicatorOptions\n) {\n const [core] = useState(createCore);\n useDestroy(core);\n core.setProps(props);\n const showIndicator = useIndicatorVisibility(() => core.close());\n\n useInputActionSubscription((event, snapshot) => {\n if (core.processEvent(event, snapshot)) showIndicator();\n });\n\n const currentState = useSyncExternalStore(\n (callback) => core.state.subscribe(callback),\n () => core.state.current,\n () => core.state.current\n );\n\n return useRenderedIndicatorState(currentState, options);\n}\n"],"mappings":";;;;;;AAiBA,SAAgB,sBACd,YACA,OACA,SACA;CACA,MAAM,CAAC,QAAQ,SAAS,UAAU;CAClC,WAAW,IAAI;CACf,KAAK,SAAS,KAAK;CACnB,MAAM,gBAAgB,6BAA6B,KAAK,MAAM,CAAC;CAE/D,4BAA4B,OAAO,aAAa;EAC9C,IAAI,KAAK,aAAa,OAAO,QAAQ,GAAG,cAAc;CACxD,CAAC;CAQD,OAAO,0BANc,sBAClB,aAAa,KAAK,MAAM,UAAU,QAAQ,SACrC,KAAK,MAAM,eACX,KAAK,MAAM,OAGyB,GAAG,OAAO;AACxD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-rendered-indicator-state.js","names":[],"sources":["../../../../src/ui/input-indicator/use-rendered-indicator-state.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"use-rendered-indicator-state.js","names":[],"sources":["../../../../src/ui/input-indicator/use-rendered-indicator-state.ts"],"sourcesContent":["import { getRenderedIndicatorState, type IndicatorLifecycleState, isIndicatorPresent } from '@videojs/core';\nimport { createTransition } from '@videojs/core/dom';\nimport { useLayoutEffect, useRef, useState, useSyncExternalStore } from 'react';\n\nimport { useDestroy } from '../../utils/use-destroy';\n\nexport interface RenderedIndicatorOptions {\n replayOnUpdate?: boolean | undefined;\n}\n\nexport function useRenderedIndicatorState<State extends IndicatorLifecycleState>(\n currentState: State,\n options: RenderedIndicatorOptions = {}\n) {\n const elementRef = useRef<HTMLElement>(null);\n const currentStateRef = useRef(currentState);\n const snapshotRef = useRef(currentState);\n const [transition] = useState(() => createTransition());\n useDestroy(transition);\n currentStateRef.current = currentState;\n\n const transitionState = useSyncExternalStore(\n (callback) => transition.state.subscribe(callback),\n () => transition.state.current,\n () => transition.state.current\n );\n\n const { generation, open } = currentState;\n\n useLayoutEffect(() => {\n if (open) {\n const nextState = currentStateRef.current;\n if (nextState.generation !== generation) return;\n\n snapshotRef.current = nextState;\n const transitionState = transition.state.current;\n if (!transitionState.active || options.replayOnUpdate !== false) {\n void transition.open(elementRef.current);\n } else if (transitionState.status === 'ending') {\n transition.cancel();\n }\n return;\n }\n\n const { active, status } = transition.state.current;\n if (active && status !== 'ending') {\n void transition.close(elementRef.current);\n }\n }, [generation, open, options.replayOnUpdate, transition]);\n\n return {\n elementRef,\n present: isIndicatorPresent(currentState, transitionState),\n state: getRenderedIndicatorState(currentState, snapshotRef.current, transitionState),\n };\n}\n"],"mappings":";;;;;AAUA,SAAgB,0BACd,cACA,UAAoC,CAAC,GACrC;CACA,MAAM,aAAa,OAAoB,IAAI;CAC3C,MAAM,kBAAkB,OAAO,YAAY;CAC3C,MAAM,cAAc,OAAO,YAAY;CACvC,MAAM,CAAC,cAAc,eAAe,iBAAiB,CAAC;CACtD,WAAW,UAAU;CACrB,gBAAgB,UAAU;CAE1B,MAAM,kBAAkB,sBACrB,aAAa,WAAW,MAAM,UAAU,QAAQ,SAC3C,WAAW,MAAM,eACjB,WAAW,MAAM,OACzB;CAEA,MAAM,EAAE,YAAY,SAAS;CAE7B,sBAAsB;EACpB,IAAI,MAAM;GACR,MAAM,YAAY,gBAAgB;GAClC,IAAI,UAAU,eAAe,YAAY;GAEzC,YAAY,UAAU;GACtB,MAAM,kBAAkB,WAAW,MAAM;GACzC,IAAI,CAAC,gBAAgB,UAAU,QAAQ,mBAAmB,OACxD,WAAgB,KAAK,WAAW,OAAO;QAClC,IAAI,gBAAgB,WAAW,UACpC,WAAW,OAAO;GAEpB;EACF;EAEA,MAAM,EAAE,QAAQ,WAAW,WAAW,MAAM;EAC5C,IAAI,UAAU,WAAW,UACvB,WAAgB,MAAM,WAAW,OAAO;CAE5C,GAAG;EAAC;EAAY;EAAM,QAAQ;EAAgB;CAAU,CAAC;CAEzD,OAAO;EACL;EACA,SAAS,mBAAmB,cAAc,eAAe;EACzD,OAAO,0BAA0B,cAAc,YAAY,SAAS,eAAe;CACrF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-button.d.ts","names":[],"sources":["../../../../src/ui/live-button/live-button.tsx"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"live-button.d.ts","names":[],"sources":["../../../../src/ui/live-button/live-button.tsx"],"mappings":";;;UAciB,wBAAwB,2BAA2B,eAAe,QAAQ,eAAe;;;;;;;;;;;;;;;;;;;;cAqB7F,4BAAU,0BAAA,KAAA,0CAAA,cAAA;kBA0EN;OACH,QAAQ;OACR,QAAQ,eAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-button.js","names":[],"sources":["../../../../src/ui/live-button/live-button.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"live-button.js","names":[],"sources":["../../../../src/ui/live-button/live-button.tsx"],"sourcesContent":["import { LiveButtonCore, LiveButtonDataAttrs, type LiveButtonMediaState } from '@videojs/core';\nimport { logMissingFeature, selectBuffer, selectLive, selectTime } from '@videojs/core/dom';\nimport { translateText } from '@videojs/core/i18n';\nimport { forwardRef, type ReactNode, useLayoutEffect, useState } from 'react';\n\nimport { useTranslator } from '../../i18n/context';\nimport { usePlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useButton } from '../hooks/use-button';\nimport { useOptionalTooltipContext } from '../tooltip/context';\n\nconst DISPLAY_NAME = 'LiveButton';\n\nexport interface LiveButtonProps extends UIComponentProps<'button', LiveButtonCore.State>, LiveButtonCore.Props {}\n\n/**\n * A button that indicates live status and seeks to the live edge when\n * pressed. Exposes `data-live` while the stream is live (or DVR) and\n * `data-live-edge` while playing at the live edge so skins can style a\n * red-dot ↔ grey-dot treatment.\n *\n * Selects from `live`, `time`, and `buffer` features and composes them\n * itself rather than going through `createMediaButton`, since the LiveButton\n * needs three feature slices to detect the live edge and seek.\n *\n * Displays the translated live badge when no children are provided.\n *\n * @example\n * ```tsx\n * <LiveButton />\n * ```\n *\n * @see https://github.com/video-dev/media-ui-extensions/blob/main/proposals/0007-live-edge.md\n */\nexport const LiveButton = forwardRef<HTMLButtonElement, LiveButtonProps>(\n function LiveButton(componentProps, forwardedRef): ReactNode {\n const { children, render, className, style, label, disabled, ...elementProps } = componentProps;\n\n const live = usePlayer(selectLive);\n const time = usePlayer(selectTime);\n const buffer = usePlayer(selectBuffer);\n\n const media: LiveButtonMediaState | null =\n live && time && buffer\n ? {\n currentTime: time.currentTime,\n seek: time.seek,\n seekable: buffer.seekable,\n liveEdgeStart: live.liveEdgeStart,\n targetLiveWindow: live.targetLiveWindow,\n }\n : null;\n\n const tooltipCtx = useOptionalTooltipContext();\n const translator = useTranslator();\n const [core] = useState(() => new LiveButtonCore());\n core.setProps({ label, disabled });\n\n const { getButtonProps, buttonRef } = useButton({\n displayName: DISPLAY_NAME,\n onActivate: () => {\n if (media) core.seekToLive(media);\n },\n isDisabled: () => !!disabled || !media,\n });\n\n if (media) core.setMedia(media);\n const state = media ? core.getState() : null;\n const labelText = state ? translateText(core.getLabel(state), translator) : undefined;\n\n useLayoutEffect(() => {\n if (!tooltipCtx) return;\n tooltipCtx.setContent(labelText ? { label: labelText } : undefined);\n return () => tooltipCtx.setContent(undefined);\n }, [tooltipCtx, labelText]);\n\n if (!media || !state) {\n if (__DEV__) logMissingFeature(DISPLAY_NAME, selectLive.displayName ?? 'live');\n return null;\n }\n\n const attrs = core.getAttrs(state);\n const labelAttr = attrs['aria-label'];\n const content = children ?? translateText(LiveButtonCore.defaultText, translator);\n\n return renderElement(\n 'button',\n { render, className, style },\n {\n state,\n stateAttrMap: LiveButtonDataAttrs,\n ref: [forwardedRef, buttonRef],\n props: [\n attrs,\n {\n children: content,\n ...elementProps,\n 'aria-label': labelAttr ? translateText(labelAttr, translator) : labelAttr,\n },\n getButtonProps(),\n ],\n }\n );\n }\n);\n\nLiveButton.displayName = DISPLAY_NAME;\n\nexport namespace LiveButton {\n export type Props = LiveButtonProps;\n export type State = LiveButtonCore.State;\n}\n"],"mappings":";;;;;;;;;;AAYA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;AAuBrB,MAAa,aAAa,WACxB,SAAS,WAAW,gBAAgB,cAAyB;CAC3D,MAAM,EAAE,UAAU,QAAQ,WAAW,OAAO,OAAO,UAAU,GAAG,iBAAiB;CAEjF,MAAM,OAAO,UAAU,UAAU;CACjC,MAAM,OAAO,UAAU,UAAU;CACjC,MAAM,SAAS,UAAU,YAAY;CAErC,MAAM,QACJ,QAAQ,QAAQ,SACZ;EACE,aAAa,KAAK;EAClB,MAAM,KAAK;EACX,UAAU,OAAO;EACjB,eAAe,KAAK;EACpB,kBAAkB,KAAK;CACzB,IACA;CAEN,MAAM,aAAa,0BAA0B;CAC7C,MAAM,aAAa,cAAc;CACjC,MAAM,CAAC,QAAQ,eAAe,IAAI,eAAe,CAAC;CAClD,KAAK,SAAS;EAAE;EAAO;CAAS,CAAC;CAEjC,MAAM,EAAE,gBAAgB,cAAc,UAAU;EAC9C,aAAa;EACb,kBAAkB;GAChB,IAAI,OAAO,KAAK,WAAW,KAAK;EAClC;EACA,kBAAkB,CAAC,CAAC,YAAY,CAAC;CACnC,CAAC;CAED,IAAI,OAAO,KAAK,SAAS,KAAK;CAC9B,MAAM,QAAQ,QAAQ,KAAK,SAAS,IAAI;CACxC,MAAM,YAAY,QAAQ,cAAc,KAAK,SAAS,KAAK,GAAG,UAAU,IAAI,KAAA;CAE5E,sBAAsB;EACpB,IAAI,CAAC,YAAY;EACjB,WAAW,WAAW,YAAY,EAAE,OAAO,UAAU,IAAI,KAAA,CAAS;EAClE,aAAa,WAAW,WAAW,KAAA,CAAS;CAC9C,GAAG,CAAC,YAAY,SAAS,CAAC;CAE1B,IAAI,CAAC,SAAS,CAAC,OAAO;EACP,kBAAkB,cAAc,WAAW,eAAe,MAAM;EAC7E,OAAO;CACT;CAEA,MAAM,QAAQ,KAAK,SAAS,KAAK;CACjC,MAAM,YAAY,MAAM;CACxB,MAAM,UAAU,YAAY,cAAc,eAAe,aAAa,UAAU;CAEhF,OAAO,cACL,UACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA,cAAc;EACd,KAAK,CAAC,cAAc,SAAS;EAC7B,OAAO;GACL;GACA;IACE,UAAU;IACV,GAAG;IACH,cAAc,YAAY,cAAc,WAAW,UAAU,IAAI;GACnE;GACA,eAAe;EACjB;CACF,CACF;AACF,CACF;AAEA,WAAW,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","names":[],"sources":["../../../../src/ui/menu/context.tsx"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"context.d.ts","names":[],"sources":["../../../../src/ui/menu/context.tsx"],"mappings":";;;UAIiB;EACf,MAAM;EACN,MAAM;EACN,QAAQ;EACR,OAAO;EACP,eAAe;EACf,oBAAoB,MAAM;EAC1B,cAAc,eAAa;EAC3B;EACA;EACA,UAAU;EACV,WAAW;;iBAOG,kBAAkB;iBAMlB,0BAA0B"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use client";
|
|
2
1
|
import { createContext, useContext } from "react";
|
|
3
2
|
//#region src/ui/menu/context.tsx
|
|
4
3
|
const MenuContext = createContext(null);
|
|
@@ -23,12 +22,17 @@ function useMenuRadioGroupContext() {
|
|
|
23
22
|
if (!ctx) throw new Error("Menu.RadioItem must be used within a Menu.RadioGroup");
|
|
24
23
|
return ctx;
|
|
25
24
|
}
|
|
25
|
+
const MenuRadioItemContext = createContext(false);
|
|
26
|
+
const MenuRadioItemContextProvider = MenuRadioItemContext.Provider;
|
|
27
|
+
function useOptionalMenuRadioItemContext() {
|
|
28
|
+
return useContext(MenuRadioItemContext);
|
|
29
|
+
}
|
|
26
30
|
const MenuTriggerChildContext = createContext(false);
|
|
27
31
|
const MenuTriggerChildContextProvider = MenuTriggerChildContext.Provider;
|
|
28
32
|
function useOptionalMenuTriggerChildContext() {
|
|
29
33
|
return useContext(MenuTriggerChildContext);
|
|
30
34
|
}
|
|
31
35
|
//#endregion
|
|
32
|
-
export { MenuContextProvider, MenuGroupContextProvider, MenuRadioGroupContextProvider, MenuTriggerChildContextProvider, useMenuContext, useMenuGroupContext, useMenuRadioGroupContext, useOptionalMenuContext, useOptionalMenuTriggerChildContext };
|
|
36
|
+
export { MenuContextProvider, MenuGroupContextProvider, MenuRadioGroupContextProvider, MenuRadioItemContextProvider, MenuTriggerChildContextProvider, useMenuContext, useMenuGroupContext, useMenuRadioGroupContext, useOptionalMenuContext, useOptionalMenuRadioItemContext, useOptionalMenuTriggerChildContext };
|
|
33
37
|
|
|
34
38
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/menu/context.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/menu/context.tsx"],"sourcesContent":["import type { MenuCore, MenuState, StateAttrMap } from '@videojs/core';\nimport type { MediaContainer, MenuApi, PositioningBoundary } from '@videojs/core/dom';\nimport { createContext, useContext } from 'react';\n\nexport interface MenuContextValue {\n core: MenuCore;\n menu: MenuApi;\n parent: MenuContextValue | null;\n state: MenuState;\n preferredSide: MenuState['side'];\n setPositionedSide: (side: MenuState['side']) => void;\n stateAttrMap: StateAttrMap<MenuState>;\n contentId: string;\n anchorName: string;\n boundary: PositioningBoundary;\n container: MediaContainer | null;\n}\n\nconst MenuContext = createContext<MenuContextValue | null>(null);\n\nexport const MenuContextProvider = MenuContext.Provider;\n\nexport function useMenuContext(): MenuContextValue {\n const ctx = useContext(MenuContext);\n if (!ctx) throw new Error('Menu compound components must be used within a Menu.Root');\n return ctx;\n}\n\nexport function useOptionalMenuContext(): MenuContextValue | null {\n return useContext(MenuContext);\n}\n\n// ---------------------------------------------------------------------------\n// Group context — shared by group-like parts and MenuGroupLabel\n// ---------------------------------------------------------------------------\n\nexport interface MenuGroupContextValue {\n registerLabel: (id: string) => () => void;\n}\n\nconst MenuGroupContext = createContext<MenuGroupContextValue | null>(null);\n\nexport const MenuGroupContextProvider = MenuGroupContext.Provider;\n\nexport function useMenuGroupContext(): MenuGroupContextValue | null {\n return useContext(MenuGroupContext);\n}\n\n// ---------------------------------------------------------------------------\n// Radio group context — shared between MenuRadioGroup and MenuRadioItem\n// ---------------------------------------------------------------------------\n\nexport interface MenuRadioGroupContextValue {\n value: string;\n onValueChange: (value: string) => void;\n}\n\nconst MenuRadioGroupContext = createContext<MenuRadioGroupContextValue | null>(null);\n\nexport const MenuRadioGroupContextProvider = MenuRadioGroupContext.Provider;\n\nexport function useMenuRadioGroupContext(): MenuRadioGroupContextValue {\n const ctx = useContext(MenuRadioGroupContext);\n if (!ctx) throw new Error('Menu.RadioItem must be used within a Menu.RadioGroup');\n return ctx;\n}\n\nconst MenuRadioItemContext = createContext(false);\n\nexport const MenuRadioItemContextProvider = MenuRadioItemContext.Provider;\n\nexport function useOptionalMenuRadioItemContext(): boolean {\n return useContext(MenuRadioItemContext);\n}\n\n// ---------------------------------------------------------------------------\n// Root trigger render context — provided by Menu.Trigger for render children.\n// ---------------------------------------------------------------------------\n\nconst MenuTriggerChildContext = createContext(false);\n\nexport const MenuTriggerChildContextProvider = MenuTriggerChildContext.Provider;\n\nexport function useOptionalMenuTriggerChildContext(): boolean {\n return useContext(MenuTriggerChildContext);\n}\n"],"mappings":";;AAkBA,MAAM,cAAc,cAAuC,IAAI;AAE/D,MAAa,sBAAsB,YAAY;AAE/C,SAAgB,iBAAmC;CACjD,MAAM,MAAM,WAAW,WAAW;CAClC,IAAI,CAAC,KAAK,MAAM,IAAI,MAAM,0DAA0D;CACpF,OAAO;AACT;AAEA,SAAgB,yBAAkD;CAChE,OAAO,WAAW,WAAW;AAC/B;AAUA,MAAM,mBAAmB,cAA4C,IAAI;AAEzE,MAAa,2BAA2B,iBAAiB;AAEzD,SAAgB,sBAAoD;CAClE,OAAO,WAAW,gBAAgB;AACpC;AAWA,MAAM,wBAAwB,cAAiD,IAAI;AAEnF,MAAa,gCAAgC,sBAAsB;AAEnE,SAAgB,2BAAuD;CACrE,MAAM,MAAM,WAAW,qBAAqB;CAC5C,IAAI,CAAC,KAAK,MAAM,IAAI,MAAM,sDAAsD;CAChF,OAAO;AACT;AAEA,MAAM,uBAAuB,cAAc,KAAK;AAEhD,MAAa,+BAA+B,qBAAqB;AAEjE,SAAgB,kCAA2C;CACzD,OAAO,WAAW,oBAAoB;AACxC;AAMA,MAAM,0BAA0B,cAAc,KAAK;AAEnD,MAAa,kCAAkC,wBAAwB;AAEvE,SAAgB,qCAA8C;CAC5D,OAAO,WAAW,uBAAuB;AAC3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-checkbox-item.d.ts","names":[],"sources":["../../../../src/ui/menu/menu-checkbox-item.tsx"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"menu-checkbox-item.d.ts","names":[],"sources":["../../../../src/ui/menu/menu-checkbox-item.tsx"],"mappings":";;;UAOiB,8BAA8B,wBAAwB;;EAErE;;EAEA,kBAAkB;;EAElB;;;cAIW,kCAAgB,0BAAA,KAAA,gDAAA,cAAA;kBAgDZ;OACH,QAAQ;OACR,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-checkbox-item.js","names":[],"sources":["../../../../src/ui/menu/menu-checkbox-item.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"menu-checkbox-item.js","names":[],"sources":["../../../../src/ui/menu/menu-checkbox-item.tsx"],"sourcesContent":["import type { MenuState } from '@videojs/core';\nimport { forwardRef, useCallback, useEffect, useRef } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useMenuContext } from './context';\n\nexport interface MenuCheckboxItemProps extends UIComponentProps<'div', MenuState> {\n /** Whether the item is currently checked. */\n checked: boolean;\n /** Called when the checked state should change. */\n onCheckedChange: (checked: boolean) => void;\n /** Whether the item is disabled. */\n disabled?: boolean;\n}\n\n/** A checkbox-style menu item. Renders a `<div>` with `role=\"menuitemcheckbox\"`. */\nexport const MenuCheckboxItem = forwardRef<HTMLDivElement, MenuCheckboxItemProps>(function MenuCheckboxItem(\n { render, className, style, checked, onCheckedChange, disabled, onClick, ...elementProps },\n forwardedRef\n) {\n const { menu, state } = useMenuContext();\n const elementRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const element = elementRef.current;\n if (!element) return;\n return menu.registerItem(element);\n }, [menu]);\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (disabled) return;\n onClick?.(event);\n onCheckedChange(!checked);\n },\n [disabled, onClick, onCheckedChange, checked]\n );\n\n const handlePointerEnter = useCallback(() => {\n const element = elementRef.current;\n if (!element || disabled) return;\n menu.highlight(element, { focus: false, pointer: true });\n }, [menu, disabled]);\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n ref: [forwardedRef, elementRef],\n props: [\n {\n role: 'menuitemcheckbox' as const,\n 'aria-checked': checked,\n 'aria-disabled': disabled ? true : undefined,\n onClick: handleClick,\n onPointerEnter: handlePointerEnter,\n },\n elementProps,\n ],\n }\n );\n});\n\nexport namespace MenuCheckboxItem {\n export type Props = MenuCheckboxItemProps;\n export type State = MenuState;\n}\n"],"mappings":";;;;;AAiBA,MAAa,mBAAmB,WAAkD,SAAS,iBACzF,EAAE,QAAQ,WAAW,OAAO,SAAS,iBAAiB,UAAU,SAAS,GAAG,gBAC5E,cACA;CACA,MAAM,EAAE,MAAM,UAAU,eAAe;CACvC,MAAM,aAAa,OAAuB,IAAI;CAE9C,gBAAgB;EACd,MAAM,UAAU,WAAW;EAC3B,IAAI,CAAC,SAAS;EACd,OAAO,KAAK,aAAa,OAAO;CAClC,GAAG,CAAC,IAAI,CAAC;CAET,MAAM,cAAc,aACjB,UAA4C;EAC3C,IAAI,UAAU;EACd,UAAU,KAAK;EACf,gBAAgB,CAAC,OAAO;CAC1B,GACA;EAAC;EAAU;EAAS;EAAiB;CAAO,CAC9C;CAEA,MAAM,qBAAqB,kBAAkB;EAC3C,MAAM,UAAU,WAAW;EAC3B,IAAI,CAAC,WAAW,UAAU;EAC1B,KAAK,UAAU,SAAS;GAAE,OAAO;GAAO,SAAS;EAAK,CAAC;CACzD,GAAG,CAAC,MAAM,QAAQ,CAAC;CAEnB,OAAO,cACL,OACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA,KAAK,CAAC,cAAc,UAAU;EAC9B,OAAO,CACL;GACE,MAAM;GACN,gBAAgB;GAChB,iBAAiB,WAAW,OAAO,KAAA;GACnC,SAAS;GACT,gBAAgB;EAClB,GACA,YACF;CACF,CACF;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-content.d.ts","names":[],"sources":["../../../../src/ui/menu/menu-content.tsx"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"menu-content.d.ts","names":[],"sources":["../../../../src/ui/menu/menu-content.tsx"],"mappings":";;;UAkBiB,yBAAyB,wBAAwB;;cAGrD,6BAAW,0BAAA,KAAA,2CAAA,cAAA;kBA2MP;OACH,QAAQ;OACR,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-content.js","names":[],"sources":["../../../../src/ui/menu/menu-content.tsx"],"sourcesContent":["'use client';\n\nimport type { MenuState } from '@videojs/core';\nimport {\n getRootPositionOptions,\n isMenuNavigationKey,\n MenuPositioningCSSVars,\n observeMenuSize,\n syncMenuSizeChain,\n} from '@videojs/core/dom';\nimport { forwardRef, useCallback, useLayoutEffect, useMemo, useRef } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { useComposedRefs } from '../../utils/use-composed-refs';\nimport { renderElement } from '../../utils/use-render';\nimport { usePopupPosition } from '../popover/use-popup-position';\nimport { useMenuContext } from './context';\nimport { callKeyDownHandler, preventMenuKeyDefault } from './menu-keyboard';\n\nexport interface MenuContentProps extends UIComponentProps<'div', MenuState> {}\n\n/** Container for menu items. Positioned relative to the trigger at root level; renders in-place as a submenu panel when nested. */\nexport const MenuContent = forwardRef<HTMLDivElement, MenuContentProps>(function MenuContent(\n { render, className, style, onKeyDown, onBlur, ...elementProps },\n forwardedRef\n) {\n const {\n core,\n menu,\n parent,\n state,\n preferredSide,\n setPositionedSide,\n stateAttrMap,\n anchorName,\n contentId,\n boundary,\n container,\n } = useMenuContext();\n const isSubmenu = state.isSubmenu;\n const isActive = isSubmenu && state.open;\n const wasActiveRef = useRef(false);\n\n useLayoutEffect(() => {\n if (!isSubmenu) return undefined;\n\n const wasActive = wasActiveRef.current;\n wasActiveRef.current = isActive;\n\n if (isActive && !wasActive) {\n const frame = requestAnimationFrame(() => menu.highlightFirstItem({ preventScroll: true }));\n return () => cancelAnimationFrame(frame);\n }\n\n return undefined;\n }, [isActive, isSubmenu, menu]);\n\n const setSubmenuContentElement = useCallback(\n (element: HTMLDivElement | null) => {\n menu.setContentElement(element);\n if (!element) {\n requestAnimationFrame(() => {\n syncMenuSizeChain(parent?.menu.contentElement ?? null);\n if (!menu.input.current.active) menu.restoreFocus({ preventScroll: true });\n });\n }\n },\n [menu, parent]\n );\n\n const handleSubMenuKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n const defaultPreventedByUser = callKeyDownHandler(\n onKeyDown as React.KeyboardEventHandler<HTMLDivElement> | undefined,\n event\n );\n const isNavigationKey = isMenuNavigationKey(event);\n menu.contentProps.onKeyDown(event);\n const isBackNavigationKey = event.key === 'ArrowLeft' || event.key === 'Escape';\n\n if (isBackNavigationKey && !defaultPreventedByUser) {\n event.preventDefault();\n menu.close('escape');\n }\n\n if (isNavigationKey) event.stopPropagation();\n },\n [onKeyDown, menu]\n );\n\n const handleRootMenuKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n (onKeyDown as React.KeyboardEventHandler<HTMLDivElement> | undefined)?.(event);\n menu.contentProps.onKeyDown(event);\n if (event.key === 'Escape') return;\n if (isMenuNavigationKey(event)) event.stopPropagation();\n },\n [onKeyDown, menu]\n );\n\n const handleRootMenuBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n (onBlur as React.FocusEventHandler<HTMLDivElement> | undefined)?.(event);\n menu.contentProps.onFocusOut(event);\n },\n [onBlur, menu]\n );\n\n const handleSubMenuBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n (onBlur as React.FocusEventHandler<HTMLDivElement> | undefined)?.(event);\n menu.contentProps.onFocusOut(event);\n },\n [onBlur, menu]\n );\n\n const internalRef = useRef<HTMLDivElement>(null);\n const contentRef = useCallback(\n (element: HTMLDivElement | null) => {\n if (!isSubmenu) menu.setContentElement(element);\n },\n [isSubmenu, menu]\n );\n const rootComposedRef = useComposedRefs(forwardedRef, contentRef, internalRef);\n const submenuComposedRef = useComposedRefs(forwardedRef, setSubmenuContentElement);\n const positionOptions = useMemo(\n () => getRootPositionOptions(preferredSide, state.align),\n [preferredSide, state.align]\n );\n const positioningStyle = usePopupPosition({\n open: state.open && !isSubmenu,\n anchorName,\n position: positionOptions,\n triggerSource: menu,\n popupRef: internalRef,\n boundary,\n container,\n cssVars: MenuPositioningCSSVars,\n onSideChange: setPositionedSide,\n });\n\n useLayoutEffect(() => {\n if (isSubmenu || !state.open) return;\n\n const contentElement = internalRef.current;\n if (!contentElement) return;\n\n const sync = () => syncMenuSizeChain(contentElement);\n sync();\n const frame = requestAnimationFrame(sync);\n const stopObserving = observeMenuSize(contentElement, sync);\n\n return () => {\n cancelAnimationFrame(frame);\n stopObserving();\n };\n }, [isSubmenu, state.open]);\n\n useLayoutEffect(() => {\n if (!isSubmenu) return;\n\n const isEnding = state.status === 'ending';\n const parentContentElement = parent?.menu.contentElement ?? null;\n const sync = () => syncMenuSizeChain(parentContentElement);\n sync();\n const frame = requestAnimationFrame(sync);\n const stopObserving =\n state.open && !isEnding && parentContentElement ? observeMenuSize(parentContentElement, sync) : null;\n\n return () => {\n cancelAnimationFrame(frame);\n stopObserving?.();\n };\n }, [isSubmenu, parent, state.open, state.status]);\n\n if (isSubmenu) {\n if (!isActive && state.status !== 'ending') return null;\n\n const subMenuContent = renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: submenuComposedRef,\n props: [\n {\n id: contentId,\n role: 'menu' as const,\n tabIndex: -1,\n onKeyDownCapture: preventMenuKeyDefault,\n onKeyDown: handleSubMenuKeyDown,\n onBlur: handleSubMenuBlur,\n },\n elementProps,\n ],\n }\n );\n\n const parentContentElement = parent?.menu.contentElement ?? null;\n return parentContentElement ? createPortal(subMenuContent, parentContentElement) : subMenuContent;\n }\n\n if (!state.open && state.status !== 'ending') return null;\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: rootComposedRef,\n props: [\n {\n id: contentId,\n style: positioningStyle,\n ...core.getContentAttrs(state),\n },\n { onKeyDownCapture: preventMenuKeyDefault, onKeyDown: handleRootMenuKeyDown, onBlur: handleRootMenuBlur },\n elementProps,\n ],\n }\n );\n});\n\nexport namespace MenuContent {\n export type Props = MenuContentProps;\n export type State = MenuState;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"menu-content.js","names":[],"sources":["../../../../src/ui/menu/menu-content.tsx"],"sourcesContent":["import type { MenuState } from '@videojs/core';\nimport {\n getRootPositionOptions,\n isMenuNavigationKey,\n MenuPositioningCSSVars,\n observeMenuSize,\n syncMenuSizeChain,\n} from '@videojs/core/dom';\nimport { forwardRef, useCallback, useLayoutEffect, useMemo, useRef } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { useComposedRefs } from '../../utils/use-composed-refs';\nimport { renderElement } from '../../utils/use-render';\nimport { usePopupPosition } from '../popover/use-popup-position';\nimport { useMenuContext } from './context';\nimport { callKeyDownHandler, preventMenuKeyDefault } from './menu-keyboard';\n\nexport interface MenuContentProps extends UIComponentProps<'div', MenuState> {}\n\n/** Container for menu items. Positioned relative to the trigger at root level; renders in-place as a submenu panel when nested. */\nexport const MenuContent = forwardRef<HTMLDivElement, MenuContentProps>(function MenuContent(\n { render, className, style, onKeyDown, onBlur, ...elementProps },\n forwardedRef\n) {\n const {\n core,\n menu,\n parent,\n state,\n preferredSide,\n setPositionedSide,\n stateAttrMap,\n anchorName,\n contentId,\n boundary,\n container,\n } = useMenuContext();\n const isSubmenu = state.isSubmenu;\n const isActive = isSubmenu && state.open;\n const wasActiveRef = useRef(false);\n\n useLayoutEffect(() => {\n if (!isSubmenu) return undefined;\n\n const wasActive = wasActiveRef.current;\n wasActiveRef.current = isActive;\n\n if (isActive && !wasActive) {\n const frame = requestAnimationFrame(() => menu.highlightFirstItem({ preventScroll: true }));\n return () => cancelAnimationFrame(frame);\n }\n\n return undefined;\n }, [isActive, isSubmenu, menu]);\n\n const setSubmenuContentElement = useCallback(\n (element: HTMLDivElement | null) => {\n menu.setContentElement(element);\n if (!element) {\n requestAnimationFrame(() => {\n syncMenuSizeChain(parent?.menu.contentElement ?? null);\n if (!menu.input.current.active) menu.restoreFocus({ preventScroll: true });\n });\n }\n },\n [menu, parent]\n );\n\n const handleSubMenuKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n const defaultPreventedByUser = callKeyDownHandler(\n onKeyDown as React.KeyboardEventHandler<HTMLDivElement> | undefined,\n event\n );\n const isNavigationKey = isMenuNavigationKey(event);\n menu.contentProps.onKeyDown(event);\n const isBackNavigationKey = event.key === 'ArrowLeft' || event.key === 'Escape';\n\n if (isBackNavigationKey && !defaultPreventedByUser) {\n event.preventDefault();\n menu.close('escape');\n }\n\n if (isNavigationKey) event.stopPropagation();\n },\n [onKeyDown, menu]\n );\n\n const handleRootMenuKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n (onKeyDown as React.KeyboardEventHandler<HTMLDivElement> | undefined)?.(event);\n menu.contentProps.onKeyDown(event);\n if (event.key === 'Escape') return;\n if (isMenuNavigationKey(event)) event.stopPropagation();\n },\n [onKeyDown, menu]\n );\n\n const handleRootMenuBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n (onBlur as React.FocusEventHandler<HTMLDivElement> | undefined)?.(event);\n menu.contentProps.onFocusOut(event);\n },\n [onBlur, menu]\n );\n\n const handleSubMenuBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n (onBlur as React.FocusEventHandler<HTMLDivElement> | undefined)?.(event);\n menu.contentProps.onFocusOut(event);\n },\n [onBlur, menu]\n );\n\n const internalRef = useRef<HTMLDivElement>(null);\n const contentRef = useCallback(\n (element: HTMLDivElement | null) => {\n if (!isSubmenu) menu.setContentElement(element);\n },\n [isSubmenu, menu]\n );\n const rootComposedRef = useComposedRefs(forwardedRef, contentRef, internalRef);\n const submenuComposedRef = useComposedRefs(forwardedRef, setSubmenuContentElement);\n const positionOptions = useMemo(\n () => getRootPositionOptions(preferredSide, state.align),\n [preferredSide, state.align]\n );\n const positioningStyle = usePopupPosition({\n open: state.open && !isSubmenu,\n anchorName,\n position: positionOptions,\n triggerSource: menu,\n popupRef: internalRef,\n boundary,\n container,\n cssVars: MenuPositioningCSSVars,\n onSideChange: setPositionedSide,\n });\n\n useLayoutEffect(() => {\n if (isSubmenu || !state.open) return;\n\n const contentElement = internalRef.current;\n if (!contentElement) return;\n\n const sync = () => syncMenuSizeChain(contentElement);\n sync();\n const frame = requestAnimationFrame(sync);\n const stopObserving = observeMenuSize(contentElement, sync);\n\n return () => {\n cancelAnimationFrame(frame);\n stopObserving();\n };\n }, [isSubmenu, state.open]);\n\n useLayoutEffect(() => {\n if (!isSubmenu) return;\n\n const isEnding = state.status === 'ending';\n const parentContentElement = parent?.menu.contentElement ?? null;\n const sync = () => syncMenuSizeChain(parentContentElement);\n sync();\n const frame = requestAnimationFrame(sync);\n const stopObserving =\n state.open && !isEnding && parentContentElement ? observeMenuSize(parentContentElement, sync) : null;\n\n return () => {\n cancelAnimationFrame(frame);\n stopObserving?.();\n };\n }, [isSubmenu, parent, state.open, state.status]);\n\n if (isSubmenu) {\n if (!isActive && state.status !== 'ending') return null;\n\n const subMenuContent = renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: submenuComposedRef,\n props: [\n {\n id: contentId,\n role: 'menu' as const,\n tabIndex: -1,\n onKeyDownCapture: preventMenuKeyDefault,\n onKeyDown: handleSubMenuKeyDown,\n onBlur: handleSubMenuBlur,\n },\n elementProps,\n ],\n }\n );\n\n const parentContentElement = parent?.menu.contentElement ?? null;\n return parentContentElement ? createPortal(subMenuContent, parentContentElement) : subMenuContent;\n }\n\n if (!state.open && state.status !== 'ending') return null;\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: rootComposedRef,\n props: [\n {\n id: contentId,\n style: positioningStyle,\n ...core.getContentAttrs(state),\n },\n { onKeyDownCapture: preventMenuKeyDefault, onKeyDown: handleRootMenuKeyDown, onBlur: handleRootMenuBlur },\n elementProps,\n ],\n }\n );\n});\n\nexport namespace MenuContent {\n export type Props = MenuContentProps;\n export type State = MenuState;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-group-label.d.ts","names":[],"sources":["../../../../src/ui/menu/menu-group-label.tsx"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"menu-group-label.d.ts","names":[],"sources":["../../../../src/ui/menu/menu-group-label.tsx"],"mappings":";;;UAQiB,4BAA4B,wBAAwB;;cAGxD,gCAAc,0BAAA,KAAA,8CAAA,cAAA;kBAwBV;OACH,QAAQ;OACR,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-group-label.js","names":[],"sources":["../../../../src/ui/menu/menu-group-label.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"menu-group-label.js","names":[],"sources":["../../../../src/ui/menu/menu-group-label.tsx"],"sourcesContent":["import type { MenuState } from '@videojs/core';\nimport { forwardRef, useLayoutEffect } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useSafeId } from '../../utils/use-safe-id';\nimport { useMenuContext, useMenuGroupContext } from './context';\n\nexport interface MenuGroupLabelProps extends UIComponentProps<'div', MenuState> {}\n\n/** Non-interactive label for a group of items. Renders a `<div>`. */\nexport const MenuGroupLabel = forwardRef<HTMLDivElement, MenuGroupLabelProps>(function MenuGroupLabel(\n { render, className, style, id: idProp, ...elementProps },\n forwardedRef\n) {\n const { state } = useMenuContext();\n const group = useMenuGroupContext();\n const generatedId = useSafeId('menu-group-label');\n const id = idProp ?? generatedId;\n\n useLayoutEffect(() => {\n return group?.registerLabel(id);\n }, [group, id]);\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n ref: [forwardedRef],\n props: [{ id }, elementProps],\n }\n );\n});\n\nexport namespace MenuGroupLabel {\n export type Props = MenuGroupLabelProps;\n export type State = MenuState;\n}\n"],"mappings":";;;;;;AAWA,MAAa,iBAAiB,WAAgD,SAAS,eACrF,EAAE,QAAQ,WAAW,OAAO,IAAI,QAAQ,GAAG,gBAC3C,cACA;CACA,MAAM,EAAE,UAAU,eAAe;CACjC,MAAM,QAAQ,oBAAoB;CAClC,MAAM,cAAc,UAAU,kBAAkB;CAChD,MAAM,KAAK,UAAU;CAErB,sBAAsB;EACpB,OAAO,OAAO,cAAc,EAAE;CAChC,GAAG,CAAC,OAAO,EAAE,CAAC;CAEd,OAAO,cACL,OACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA,KAAK,CAAC,YAAY;EAClB,OAAO,CAAC,EAAE,GAAG,GAAG,YAAY;CAC9B,CACF;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-group.d.ts","names":[],"sources":["../../../../src/ui/menu/menu-group.tsx"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"menu-group.d.ts","names":[],"sources":["../../../../src/ui/menu/menu-group.tsx"],"mappings":";;;UAQiB,uBAAuB,wBAAwB;;cAGnD,2BAAS,0BAAA,KAAA,yCAAA,cAAA;kBAuBL;OACH,QAAQ;OACR,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-group.js","names":[],"sources":["../../../../src/ui/menu/menu-group.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"menu-group.js","names":[],"sources":["../../../../src/ui/menu/menu-group.tsx"],"sourcesContent":["import type { MenuState } from '@videojs/core';\nimport { forwardRef } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useMenuContext } from './context';\nimport { getMenuGroupProps, MenuGroupProvider } from './use-menu-group';\n\nexport interface MenuGroupProps extends UIComponentProps<'div', MenuState> {}\n\n/** Groups related menu items. Renders a `<div>` with `role=\"group\"`. */\nexport const MenuGroup = forwardRef<HTMLDivElement, MenuGroupProps>(function MenuGroup(\n { render, className, style, ...elementProps },\n forwardedRef\n) {\n const { state } = useMenuContext();\n\n return (\n <MenuGroupProvider>\n {(labelId) =>\n renderElement(\n 'div',\n { render, className, style },\n {\n state,\n ref: [forwardedRef],\n props: [getMenuGroupProps(labelId, elementProps), elementProps],\n }\n )\n }\n </MenuGroupProvider>\n );\n});\n\nexport namespace MenuGroup {\n export type Props = MenuGroupProps;\n export type State = MenuState;\n}\n"],"mappings":";;;;;;;AAWA,MAAa,YAAY,WAA2C,SAAS,UAC3E,EAAE,QAAQ,WAAW,OAAO,GAAG,gBAC/B,cACA;CACA,MAAM,EAAE,UAAU,eAAe;CAEjC,OACE,oBAAC,mBAAD,EAAA,WACI,YACA,cACE,OACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA,KAAK,CAAC,YAAY;EAClB,OAAO,CAAC,kBAAkB,SAAS,YAAY,GAAG,YAAY;CAChE,CACF,EAEe,CAAA;AAEvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-item-indicator.d.ts","names":[],"sources":["../../../../src/ui/menu/menu-item-indicator.tsx"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"menu-item-indicator.d.ts","names":[],"sources":["../../../../src/ui/menu/menu-item-indicator.tsx"],"mappings":";;;UAOiB,+BAA+B,yBAAyB;;EAEvE;;EAEA;;;cAIW,mCAAiB,0BAAA,KAAA,iDAAA,cAAA;kBAqBb;OACH,QAAQ;OACR,QAAQ"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
"use client";
|
|
2
1
|
import { renderElement } from "../../utils/use-render.js";
|
|
3
|
-
import { useMenuContext } from "./context.js";
|
|
2
|
+
import { useMenuContext, useOptionalMenuRadioItemContext } from "./context.js";
|
|
4
3
|
import { forwardRef } from "react";
|
|
5
4
|
//#region src/ui/menu/menu-item-indicator.tsx
|
|
6
5
|
/** Visual indicator for a checked state. Only renders when `checked` is `true` (or `forceMount` is set). */
|
|
7
6
|
const MenuItemIndicator = forwardRef(function MenuItemIndicator({ render, className, style, checked, forceMount = false, ...elementProps }, forwardedRef) {
|
|
8
7
|
const { state } = useMenuContext();
|
|
9
|
-
|
|
8
|
+
const itemChecked = useOptionalMenuRadioItemContext();
|
|
9
|
+
if (!(checked ?? itemChecked) && !forceMount) return null;
|
|
10
10
|
return renderElement("span", {
|
|
11
11
|
render,
|
|
12
12
|
className,
|