@videojs/react 10.0.0-beta.22 → 10.0.0-beta.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dist/default/icons/dist/react/default/captions-off.js +1 -0
- package/dist/default/icons/dist/react/default/captions-off.js.map +1 -1
- package/dist/default/icons/dist/react/default/captions-on.js +3 -5
- package/dist/default/icons/dist/react/default/captions-on.js.map +1 -1
- package/dist/default/icons/dist/react/default/cast-enter.js +38 -11
- package/dist/default/icons/dist/react/default/cast-enter.js.map +1 -1
- package/dist/default/icons/dist/react/default/cast-exit.js +55 -14
- package/dist/default/icons/dist/react/default/cast-exit.js.map +1 -1
- package/dist/default/icons/dist/react/default/check.js +22 -0
- package/dist/default/icons/dist/react/default/check.js.map +1 -0
- package/dist/default/icons/dist/react/default/chevron.js +21 -0
- package/dist/default/icons/dist/react/default/chevron.js.map +1 -0
- package/dist/default/icons/dist/react/default/fullscreen-enter.js +3 -5
- package/dist/default/icons/dist/react/default/fullscreen-enter.js.map +1 -1
- package/dist/default/icons/dist/react/default/fullscreen-exit.js +3 -5
- package/dist/default/icons/dist/react/default/fullscreen-exit.js.map +1 -1
- package/dist/default/icons/dist/react/default/pause.js +2 -3
- package/dist/default/icons/dist/react/default/pause.js.map +1 -1
- package/dist/default/icons/dist/react/default/pip-enter.js +4 -10
- package/dist/default/icons/dist/react/default/pip-enter.js.map +1 -1
- package/dist/default/icons/dist/react/default/pip-exit.js +4 -10
- package/dist/default/icons/dist/react/default/pip-exit.js.map +1 -1
- package/dist/default/icons/dist/react/default/play.js +3 -5
- package/dist/default/icons/dist/react/default/play.js.map +1 -1
- package/dist/default/icons/dist/react/default/restart.js +3 -8
- package/dist/default/icons/dist/react/default/restart.js.map +1 -1
- package/dist/default/icons/dist/react/default/seek.js +3 -5
- package/dist/default/icons/dist/react/default/seek.js.map +1 -1
- package/dist/default/icons/dist/react/default/spinner.js +38 -117
- package/dist/default/icons/dist/react/default/spinner.js.map +1 -1
- package/dist/default/icons/dist/react/default/volume-high.js +3 -8
- package/dist/default/icons/dist/react/default/volume-high.js.map +1 -1
- package/dist/default/icons/dist/react/default/volume-low.js +3 -5
- package/dist/default/icons/dist/react/default/volume-low.js.map +1 -1
- package/dist/default/icons/dist/react/default/volume-off.js +3 -5
- package/dist/default/icons/dist/react/default/volume-off.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/captions-off.js +1 -0
- package/dist/default/icons/dist/react/minimal/captions-off.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/captions-on.js +3 -5
- package/dist/default/icons/dist/react/minimal/captions-on.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/cast-enter.js +38 -7
- package/dist/default/icons/dist/react/minimal/cast-enter.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/cast-exit.js +56 -11
- package/dist/default/icons/dist/react/minimal/cast-exit.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/check.js +22 -0
- package/dist/default/icons/dist/react/minimal/check.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/chevron.js +21 -0
- package/dist/default/icons/dist/react/minimal/chevron.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/fullscreen-enter.js +5 -13
- package/dist/default/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/fullscreen-exit.js +5 -13
- package/dist/default/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/pause.js +2 -3
- package/dist/default/icons/dist/react/minimal/pause.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/pip-enter.js +5 -14
- package/dist/default/icons/dist/react/minimal/pip-enter.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/pip-exit.js +5 -14
- package/dist/default/icons/dist/react/minimal/pip-exit.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/play.js +3 -5
- package/dist/default/icons/dist/react/minimal/play.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/restart.js +3 -8
- package/dist/default/icons/dist/react/minimal/restart.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/seek.js +3 -5
- package/dist/default/icons/dist/react/minimal/seek.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/spinner.js +38 -117
- package/dist/default/icons/dist/react/minimal/spinner.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/volume-high.js +3 -8
- package/dist/default/icons/dist/react/minimal/volume-high.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/volume-low.js +3 -5
- package/dist/default/icons/dist/react/minimal/volume-low.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/volume-off.js +3 -5
- package/dist/default/icons/dist/react/minimal/volume-off.js.map +1 -1
- package/dist/default/icons/index.js +19 -0
- package/dist/default/icons/minimal/index.js +19 -0
- package/dist/default/index.js +20 -12
- package/dist/default/media/dash-video/index.js +6 -6
- package/dist/default/media/dash-video/index.js.map +1 -1
- package/dist/default/media/hls-video/index.js +6 -6
- package/dist/default/media/hls-video/index.js.map +1 -1
- package/dist/default/media/mux-audio/index.js +9 -8
- package/dist/default/media/mux-audio/index.js.map +1 -1
- package/dist/default/media/mux-video/index.js +6 -6
- package/dist/default/media/mux-video/index.js.map +1 -1
- package/dist/default/media/native-hls-video/index.js +6 -6
- package/dist/default/media/native-hls-video/index.js.map +1 -1
- package/dist/default/media/simple-hls-video/index.js +6 -5
- package/dist/default/media/simple-hls-video/index.js.map +1 -1
- package/dist/default/player/context.js +9 -1
- package/dist/default/player/context.js.map +1 -1
- package/dist/default/player/create-player.js +4 -1
- package/dist/default/player/create-player.js.map +1 -1
- package/dist/default/presets/audio/minimal-skin.css +211 -100
- package/dist/default/presets/audio/minimal-skin.js +107 -7
- package/dist/default/presets/audio/minimal-skin.js.map +1 -1
- package/dist/default/presets/audio/minimal-skin.tailwind.js +41 -7
- package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/audio/skin.css +237 -100
- package/dist/default/presets/audio/skin.js +57 -22
- package/dist/default/presets/audio/skin.js.map +1 -1
- package/dist/default/presets/audio/skin.tailwind.js +115 -14
- package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
- package/dist/default/presets/live-audio/index.js +7 -0
- package/dist/default/presets/live-audio/minimal-skin.css +846 -0
- package/dist/default/presets/live-audio/minimal-skin.js +164 -0
- package/dist/default/presets/live-audio/minimal-skin.js.map +1 -0
- package/dist/default/presets/live-audio/minimal-skin.tailwind.js +194 -0
- package/dist/default/presets/live-audio/minimal-skin.tailwind.js.map +1 -0
- package/dist/default/presets/live-audio/skin.css +888 -0
- package/dist/default/presets/live-audio/skin.js +163 -0
- package/dist/default/presets/live-audio/skin.js.map +1 -0
- package/dist/default/presets/live-audio/skin.tailwind.js +193 -0
- package/dist/default/presets/live-audio/skin.tailwind.js.map +1 -0
- package/dist/default/presets/live-video/index.js +7 -0
- package/dist/default/presets/live-video/minimal-skin.css +1542 -0
- package/dist/default/presets/live-video/minimal-skin.js +306 -0
- package/dist/default/presets/live-video/minimal-skin.js.map +1 -0
- package/dist/default/presets/live-video/minimal-skin.tailwind.js +341 -0
- package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -0
- package/dist/default/presets/live-video/skin.css +1544 -0
- package/dist/default/presets/live-video/skin.js +304 -0
- package/dist/default/presets/live-video/skin.js.map +1 -0
- package/dist/default/presets/live-video/skin.tailwind.js +426 -0
- package/dist/default/presets/live-video/skin.tailwind.js.map +1 -0
- package/dist/default/presets/video/minimal-skin.css +555 -139
- package/dist/default/presets/video/minimal-skin.js +205 -23
- package/dist/default/presets/video/minimal-skin.js.map +1 -1
- package/dist/default/presets/video/minimal-skin.tailwind.js +209 -24
- package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/video/skin.css +565 -137
- package/dist/default/presets/video/skin.js +124 -52
- package/dist/default/presets/video/skin.js.map +1 -1
- package/dist/default/presets/video/skin.tailwind.js +208 -29
- package/dist/default/presets/video/skin.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +3 -2
- package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/buffering.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/button.js +3 -2
- package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/controls.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/icon.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/input-feedback.js +40 -0
- package/dist/default/skins/dist/default/default/tailwind/components/input-feedback.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/menu.js +12 -0
- package/dist/default/skins/dist/default/default/tailwind/components/menu.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/preview.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/preview.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/reset.js +7 -0
- package/dist/default/skins/dist/default/default/tailwind/components/reset.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/root.js +2 -1
- package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +13 -4
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +5 -3
- package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +3 -2
- package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/input-feedback.js +41 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/input-feedback.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js +12 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/playback-rate.js +6 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/reset.js +7 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/reset.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +2 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +7 -4
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/tailwind.css +66 -0
- package/dist/default/ui/cast-button/cast-button.js +2 -2
- package/dist/default/ui/cast-button/cast-button.js.map +1 -1
- package/dist/default/ui/controls/context.js +4 -1
- package/dist/default/ui/controls/context.js.map +1 -1
- package/dist/default/ui/gesture/{media-gesture.js → gesture.js} +8 -5
- package/dist/default/ui/gesture/gesture.js.map +1 -0
- package/dist/default/ui/gesture/index.js +2 -0
- package/dist/default/ui/hotkey/{media-hotkey.js → hotkey.js} +7 -4
- package/dist/default/ui/hotkey/hotkey.js.map +1 -0
- package/dist/default/ui/hotkey/index.js +2 -0
- package/dist/default/ui/input-indicators/use-indicator-visibility.js +25 -0
- package/dist/default/ui/input-indicators/use-indicator-visibility.js.map +1 -0
- package/dist/default/ui/input-indicators/use-input-action-subscription.js +22 -0
- package/dist/default/ui/input-indicators/use-input-action-subscription.js.map +1 -0
- package/dist/default/ui/input-indicators/use-input-indicator-root.js +21 -0
- package/dist/default/ui/input-indicators/use-input-indicator-root.js.map +1 -0
- package/dist/default/ui/input-indicators/use-rendered-indicator-state.js +40 -0
- package/dist/default/ui/input-indicators/use-rendered-indicator-state.js.map +1 -0
- package/dist/default/ui/live-button/index.js +2 -0
- package/dist/default/ui/live-button/live-button.js +89 -0
- package/dist/default/ui/live-button/live-button.js.map +1 -0
- package/dist/default/ui/menu/context.js +29 -0
- package/dist/default/ui/menu/context.js.map +1 -0
- package/dist/default/ui/menu/index.js +3 -0
- package/dist/default/ui/menu/index.parts.js +34 -0
- package/dist/default/ui/menu/index.parts.js.map +1 -0
- package/dist/default/ui/menu/menu-back.js +31 -0
- package/dist/default/ui/menu/menu-back.js.map +1 -0
- package/dist/default/ui/menu/menu-checkbox-item.js +50 -0
- package/dist/default/ui/menu/menu-checkbox-item.js.map +1 -0
- package/dist/default/ui/menu/menu-content.js +284 -0
- package/dist/default/ui/menu/menu-content.js.map +1 -0
- package/dist/default/ui/menu/menu-group.js +26 -0
- package/dist/default/ui/menu/menu-group.js.map +1 -0
- package/dist/default/ui/menu/menu-item-indicator.js +24 -0
- package/dist/default/ui/menu/menu-item-indicator.js.map +1 -0
- package/dist/default/ui/menu/menu-item.js +53 -0
- package/dist/default/ui/menu/menu-item.js.map +1 -0
- package/dist/default/ui/menu/menu-label.js +23 -0
- package/dist/default/ui/menu/menu-label.js.map +1 -0
- package/dist/default/ui/menu/menu-radio-group.js +33 -0
- package/dist/default/ui/menu/menu-radio-group.js.map +1 -0
- package/dist/default/ui/menu/menu-radio-item.js +57 -0
- package/dist/default/ui/menu/menu-radio-item.js.map +1 -0
- package/dist/default/ui/menu/menu-root.js +136 -0
- package/dist/default/ui/menu/menu-root.js.map +1 -0
- package/dist/default/ui/menu/menu-separator.js +23 -0
- package/dist/default/ui/menu/menu-separator.js.map +1 -0
- package/dist/default/ui/menu/menu-trigger.js +124 -0
- package/dist/default/ui/menu/menu-trigger.js.map +1 -0
- package/dist/default/ui/menu/menu-view.js +23 -0
- package/dist/default/ui/menu/menu-view.js.map +1 -0
- package/dist/default/ui/playback-rate-menu/context.js +20 -0
- package/dist/default/ui/playback-rate-menu/context.js.map +1 -0
- package/dist/default/ui/playback-rate-menu/index.js +3 -0
- package/dist/default/ui/playback-rate-menu/index.parts.js +17 -0
- package/dist/default/ui/playback-rate-menu/index.parts.js.map +1 -0
- package/dist/default/ui/playback-rate-menu/playback-rate-menu-content.js +28 -0
- package/dist/default/ui/playback-rate-menu/playback-rate-menu-content.js.map +1 -0
- package/dist/default/ui/playback-rate-menu/playback-rate-menu-root.js +36 -0
- package/dist/default/ui/playback-rate-menu/playback-rate-menu-root.js.map +1 -0
- package/dist/default/ui/playback-rate-menu/playback-rate-menu-trigger.js +51 -0
- package/dist/default/ui/playback-rate-menu/playback-rate-menu-trigger.js.map +1 -0
- package/dist/default/ui/playback-rate-menu/use-playback-rate-menu.js +27 -0
- package/dist/default/ui/playback-rate-menu/use-playback-rate-menu.js.map +1 -0
- package/dist/default/ui/popover/context.js.map +1 -1
- package/dist/default/ui/popover/popover-popup.js +20 -7
- package/dist/default/ui/popover/popover-popup.js.map +1 -1
- package/dist/default/ui/popover/popover-root.js +20 -5
- package/dist/default/ui/popover/popover-root.js.map +1 -1
- package/dist/default/ui/seek-indicator/context.js +20 -0
- package/dist/default/ui/seek-indicator/context.js.map +1 -0
- package/dist/default/ui/seek-indicator/index.js +2 -0
- package/dist/default/ui/seek-indicator/index.parts.js +12 -0
- package/dist/default/ui/seek-indicator/index.parts.js.map +1 -0
- package/dist/default/ui/seek-indicator/seek-indicator-root.js +30 -0
- package/dist/default/ui/seek-indicator/seek-indicator-root.js.map +1 -0
- package/dist/default/ui/seek-indicator/seek-indicator-value.js +23 -0
- package/dist/default/ui/seek-indicator/seek-indicator-value.js.map +1 -0
- package/dist/default/ui/slider/context.js.map +1 -1
- package/dist/default/ui/status-announcer/index.js +2 -0
- package/dist/default/ui/status-announcer/status-announcer.js +36 -0
- package/dist/default/ui/status-announcer/status-announcer.js.map +1 -0
- package/dist/default/ui/status-indicator/context.js +20 -0
- package/dist/default/ui/status-indicator/context.js.map +1 -0
- package/dist/default/ui/status-indicator/index.js +2 -0
- package/dist/default/ui/status-indicator/index.parts.js +12 -0
- package/dist/default/ui/status-indicator/index.parts.js.map +1 -0
- package/dist/default/ui/status-indicator/status-indicator-root.js +34 -0
- package/dist/default/ui/status-indicator/status-indicator-root.js.map +1 -0
- package/dist/default/ui/status-indicator/status-indicator-value.js +23 -0
- package/dist/default/ui/status-indicator/status-indicator-value.js.map +1 -0
- package/dist/default/ui/tooltip/context.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-popup.js +20 -7
- package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-root.js +16 -4
- package/dist/default/ui/tooltip/tooltip-root.js.map +1 -1
- package/dist/default/ui/volume-indicator/context.js +20 -0
- package/dist/default/ui/volume-indicator/context.js.map +1 -0
- package/dist/default/ui/volume-indicator/index.js +2 -0
- package/dist/default/ui/volume-indicator/index.parts.js +14 -0
- package/dist/default/ui/volume-indicator/index.parts.js.map +1 -0
- package/dist/default/ui/volume-indicator/volume-indicator-fill.js +36 -0
- package/dist/default/ui/volume-indicator/volume-indicator-fill.js.map +1 -0
- package/dist/default/ui/volume-indicator/volume-indicator-root.js +30 -0
- package/dist/default/ui/volume-indicator/volume-indicator-root.js.map +1 -0
- package/dist/default/ui/volume-indicator/volume-indicator-value.js +23 -0
- package/dist/default/ui/volume-indicator/volume-indicator-value.js.map +1 -0
- package/dist/default/utils/use-attach-media.js +14 -0
- package/dist/default/utils/use-attach-media.js.map +1 -0
- package/dist/default/utils/use-render.js.map +1 -1
- package/dist/default/utils/use-sync-props.js +14 -0
- package/dist/default/utils/use-sync-props.js.map +1 -0
- package/dist/dev/icons/dist/react/default/captions-off.js +1 -0
- package/dist/dev/icons/dist/react/default/captions-off.js.map +1 -1
- package/dist/dev/icons/dist/react/default/captions-on.js +3 -5
- package/dist/dev/icons/dist/react/default/captions-on.js.map +1 -1
- package/dist/dev/icons/dist/react/default/cast-enter.js +38 -11
- package/dist/dev/icons/dist/react/default/cast-enter.js.map +1 -1
- package/dist/dev/icons/dist/react/default/cast-exit.js +55 -14
- package/dist/dev/icons/dist/react/default/cast-exit.js.map +1 -1
- package/dist/dev/icons/dist/react/default/check.js +22 -0
- package/dist/dev/icons/dist/react/default/check.js.map +1 -0
- package/dist/dev/icons/dist/react/default/chevron.js +21 -0
- package/dist/dev/icons/dist/react/default/chevron.js.map +1 -0
- package/dist/dev/icons/dist/react/default/fullscreen-enter.js +3 -5
- package/dist/dev/icons/dist/react/default/fullscreen-enter.js.map +1 -1
- package/dist/dev/icons/dist/react/default/fullscreen-exit.js +3 -5
- package/dist/dev/icons/dist/react/default/fullscreen-exit.js.map +1 -1
- package/dist/dev/icons/dist/react/default/index.d.ts +23 -0
- package/dist/dev/icons/dist/react/default/index.d.ts.map +1 -0
- package/dist/dev/icons/dist/react/default/pause.js +2 -3
- package/dist/dev/icons/dist/react/default/pause.js.map +1 -1
- package/dist/dev/icons/dist/react/default/pip-enter.js +4 -10
- package/dist/dev/icons/dist/react/default/pip-enter.js.map +1 -1
- package/dist/dev/icons/dist/react/default/pip-exit.js +4 -10
- package/dist/dev/icons/dist/react/default/pip-exit.js.map +1 -1
- package/dist/dev/icons/dist/react/default/play.js +3 -5
- package/dist/dev/icons/dist/react/default/play.js.map +1 -1
- package/dist/dev/icons/dist/react/default/restart.js +3 -8
- package/dist/dev/icons/dist/react/default/restart.js.map +1 -1
- package/dist/dev/icons/dist/react/default/seek.js +3 -5
- package/dist/dev/icons/dist/react/default/seek.js.map +1 -1
- package/dist/dev/icons/dist/react/default/spinner.js +38 -117
- package/dist/dev/icons/dist/react/default/spinner.js.map +1 -1
- package/dist/dev/icons/dist/react/default/volume-high.js +3 -8
- package/dist/dev/icons/dist/react/default/volume-high.js.map +1 -1
- package/dist/dev/icons/dist/react/default/volume-low.js +3 -5
- package/dist/dev/icons/dist/react/default/volume-low.js.map +1 -1
- package/dist/dev/icons/dist/react/default/volume-off.js +3 -5
- package/dist/dev/icons/dist/react/default/volume-off.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/captions-off.js +1 -0
- package/dist/dev/icons/dist/react/minimal/captions-off.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/captions-on.js +3 -5
- package/dist/dev/icons/dist/react/minimal/captions-on.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/cast-enter.js +38 -7
- package/dist/dev/icons/dist/react/minimal/cast-enter.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/cast-exit.js +56 -11
- package/dist/dev/icons/dist/react/minimal/cast-exit.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/check.js +22 -0
- package/dist/dev/icons/dist/react/minimal/check.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/chevron.js +21 -0
- package/dist/dev/icons/dist/react/minimal/chevron.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js +5 -13
- package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js +5 -13
- package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/index.d.ts +23 -0
- package/dist/dev/icons/dist/react/minimal/index.d.ts.map +1 -0
- package/dist/dev/icons/dist/react/minimal/pause.js +2 -3
- package/dist/dev/icons/dist/react/minimal/pause.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/pip-enter.js +5 -14
- package/dist/dev/icons/dist/react/minimal/pip-enter.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/pip-exit.js +5 -14
- package/dist/dev/icons/dist/react/minimal/pip-exit.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/play.js +3 -5
- package/dist/dev/icons/dist/react/minimal/play.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/restart.js +3 -8
- package/dist/dev/icons/dist/react/minimal/restart.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/seek.js +3 -5
- package/dist/dev/icons/dist/react/minimal/seek.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/spinner.js +38 -117
- package/dist/dev/icons/dist/react/minimal/spinner.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/volume-high.js +3 -8
- package/dist/dev/icons/dist/react/minimal/volume-high.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/volume-low.js +3 -5
- package/dist/dev/icons/dist/react/minimal/volume-low.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/volume-off.js +3 -5
- package/dist/dev/icons/dist/react/minimal/volume-off.js.map +1 -1
- package/dist/dev/icons/index.d.ts +2 -0
- package/dist/dev/icons/index.js +19 -0
- package/dist/dev/icons/minimal/index.d.ts +2 -0
- package/dist/dev/icons/minimal/index.js +19 -0
- package/dist/dev/index.d.ts +28 -12
- package/dist/dev/index.js +20 -12
- package/dist/dev/media/audio.d.ts +2 -2
- package/dist/dev/media/audio.d.ts.map +1 -1
- package/dist/dev/media/background-video/index.d.ts +2 -2
- package/dist/dev/media/background-video/index.d.ts.map +1 -1
- package/dist/dev/media/dash-video/index.d.ts +7 -8
- package/dist/dev/media/dash-video/index.d.ts.map +1 -1
- package/dist/dev/media/dash-video/index.js +6 -6
- package/dist/dev/media/dash-video/index.js.map +1 -1
- package/dist/dev/media/hls-video/index.d.ts +7 -8
- package/dist/dev/media/hls-video/index.d.ts.map +1 -1
- package/dist/dev/media/hls-video/index.js +6 -6
- package/dist/dev/media/hls-video/index.js.map +1 -1
- package/dist/dev/media/mux-audio/index.d.ts +11 -9
- package/dist/dev/media/mux-audio/index.d.ts.map +1 -1
- package/dist/dev/media/mux-audio/index.js +9 -8
- package/dist/dev/media/mux-audio/index.js.map +1 -1
- package/dist/dev/media/mux-video/index.d.ts +7 -8
- package/dist/dev/media/mux-video/index.d.ts.map +1 -1
- package/dist/dev/media/mux-video/index.js +6 -6
- package/dist/dev/media/mux-video/index.js.map +1 -1
- package/dist/dev/media/native-hls-video/index.d.ts +7 -8
- package/dist/dev/media/native-hls-video/index.d.ts.map +1 -1
- package/dist/dev/media/native-hls-video/index.js +6 -6
- package/dist/dev/media/native-hls-video/index.js.map +1 -1
- package/dist/dev/media/simple-hls-video/index.d.ts +7 -6
- package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -1
- package/dist/dev/media/simple-hls-video/index.js +6 -5
- package/dist/dev/media/simple-hls-video/index.js.map +1 -1
- package/dist/dev/media/video.d.ts +2 -2
- package/dist/dev/media/video.d.ts.map +1 -1
- package/dist/dev/player/context.d.ts +7 -4
- package/dist/dev/player/context.d.ts.map +1 -1
- package/dist/dev/player/context.js +9 -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 +4 -1
- package/dist/dev/player/create-player.js.map +1 -1
- package/dist/dev/presets/audio/minimal-skin.css +211 -100
- package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/audio/minimal-skin.js +107 -7
- 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 +41 -7
- package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/audio/skin.css +237 -100
- package/dist/dev/presets/audio/skin.d.ts.map +1 -1
- package/dist/dev/presets/audio/skin.js +57 -22
- 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 +115 -14
- package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
- package/dist/dev/presets/background/skin.d.ts +2 -2
- package/dist/dev/presets/background/skin.d.ts.map +1 -1
- package/dist/dev/presets/live-audio/index.d.ts +7 -0
- package/dist/dev/presets/live-audio/index.js +7 -0
- package/dist/dev/presets/live-audio/minimal-skin.css +846 -0
- package/dist/dev/presets/live-audio/minimal-skin.d.ts +16 -0
- package/dist/dev/presets/live-audio/minimal-skin.d.ts.map +1 -0
- package/dist/dev/presets/live-audio/minimal-skin.js +164 -0
- package/dist/dev/presets/live-audio/minimal-skin.js.map +1 -0
- package/dist/dev/presets/live-audio/minimal-skin.tailwind.d.ts +8 -0
- package/dist/dev/presets/live-audio/minimal-skin.tailwind.d.ts.map +1 -0
- package/dist/dev/presets/live-audio/minimal-skin.tailwind.js +194 -0
- package/dist/dev/presets/live-audio/minimal-skin.tailwind.js.map +1 -0
- package/dist/dev/presets/live-audio/skin.css +888 -0
- package/dist/dev/presets/live-audio/skin.d.ts +15 -0
- package/dist/dev/presets/live-audio/skin.d.ts.map +1 -0
- package/dist/dev/presets/live-audio/skin.js +163 -0
- package/dist/dev/presets/live-audio/skin.js.map +1 -0
- package/dist/dev/presets/live-audio/skin.tailwind.d.ts +8 -0
- package/dist/dev/presets/live-audio/skin.tailwind.d.ts.map +1 -0
- package/dist/dev/presets/live-audio/skin.tailwind.js +193 -0
- package/dist/dev/presets/live-audio/skin.tailwind.js.map +1 -0
- package/dist/dev/presets/live-video/index.d.ts +7 -0
- package/dist/dev/presets/live-video/index.js +7 -0
- package/dist/dev/presets/live-video/minimal-skin.css +1542 -0
- package/dist/dev/presets/live-video/minimal-skin.d.ts +16 -0
- package/dist/dev/presets/live-video/minimal-skin.d.ts.map +1 -0
- package/dist/dev/presets/live-video/minimal-skin.js +306 -0
- package/dist/dev/presets/live-video/minimal-skin.js.map +1 -0
- package/dist/dev/presets/live-video/minimal-skin.tailwind.d.ts +8 -0
- package/dist/dev/presets/live-video/minimal-skin.tailwind.d.ts.map +1 -0
- package/dist/dev/presets/live-video/minimal-skin.tailwind.js +341 -0
- package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -0
- package/dist/dev/presets/live-video/skin.css +1544 -0
- package/dist/dev/presets/live-video/skin.d.ts +15 -0
- package/dist/dev/presets/live-video/skin.d.ts.map +1 -0
- package/dist/dev/presets/live-video/skin.js +304 -0
- package/dist/dev/presets/live-video/skin.js.map +1 -0
- package/dist/dev/presets/live-video/skin.tailwind.d.ts +8 -0
- package/dist/dev/presets/live-video/skin.tailwind.d.ts.map +1 -0
- package/dist/dev/presets/live-video/skin.tailwind.js +426 -0
- package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -0
- package/dist/dev/presets/video/minimal-skin.css +555 -139
- package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/video/minimal-skin.js +205 -23
- package/dist/dev/presets/video/minimal-skin.js.map +1 -1
- package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/video/minimal-skin.tailwind.js +209 -24
- package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/video/skin.css +565 -137
- package/dist/dev/presets/video/skin.d.ts.map +1 -1
- package/dist/dev/presets/video/skin.js +124 -52
- package/dist/dev/presets/video/skin.js.map +1 -1
- package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/video/skin.tailwind.js +208 -29
- package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +3 -2
- package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/button.js +3 -2
- package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/icon.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/input-feedback.js +40 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/input-feedback.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/menu.js +12 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/menu.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/preview.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/preview.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/reset.js +7 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/reset.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/root.js +2 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +13 -4
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +5 -3
- package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +3 -2
- package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/input-feedback.js +41 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/input-feedback.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js +12 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/playback-rate.js +6 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/reset.js +7 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/reset.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +2 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +7 -4
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/tailwind.css +66 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-close.d.ts +2 -2
- package/dist/dev/ui/alert-dialog/alert-dialog-close.d.ts.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-description.d.ts +2 -2
- package/dist/dev/ui/alert-dialog/alert-dialog-description.d.ts.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-popup.d.ts +2 -2
- package/dist/dev/ui/alert-dialog/alert-dialog-popup.d.ts.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-title.d.ts +2 -2
- package/dist/dev/ui/alert-dialog/alert-dialog-title.d.ts.map +1 -1
- package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts +2 -2
- package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts.map +1 -1
- package/dist/dev/ui/captions-button/captions-button.d.ts +2 -2
- package/dist/dev/ui/captions-button/captions-button.d.ts.map +1 -1
- package/dist/dev/ui/cast-button/cast-button.d.ts +2 -2
- package/dist/dev/ui/cast-button/cast-button.d.ts.map +1 -1
- package/dist/dev/ui/cast-button/cast-button.js +2 -2
- package/dist/dev/ui/cast-button/cast-button.js.map +1 -1
- package/dist/dev/ui/controls/context.js +4 -1
- package/dist/dev/ui/controls/context.js.map +1 -1
- package/dist/dev/ui/controls/controls-group.d.ts +2 -2
- package/dist/dev/ui/controls/controls-group.d.ts.map +1 -1
- package/dist/dev/ui/controls/controls-root.d.ts +2 -2
- package/dist/dev/ui/controls/controls-root.d.ts.map +1 -1
- package/dist/dev/ui/error-dialog/error-dialog-description.d.ts +2 -2
- package/dist/dev/ui/error-dialog/error-dialog-description.d.ts.map +1 -1
- package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts +2 -2
- package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts.map +1 -1
- package/dist/dev/ui/gesture/gesture.d.ts +30 -0
- package/dist/dev/ui/gesture/gesture.d.ts.map +1 -0
- package/dist/dev/ui/gesture/{media-gesture.js → gesture.js} +8 -5
- package/dist/dev/ui/gesture/gesture.js.map +1 -0
- package/dist/dev/ui/gesture/index.d.ts +2 -0
- package/dist/dev/ui/gesture/index.js +2 -0
- package/dist/dev/ui/hotkey/hotkey.d.ts +28 -0
- package/dist/dev/ui/hotkey/hotkey.d.ts.map +1 -0
- package/dist/dev/ui/hotkey/{media-hotkey.js → hotkey.js} +7 -4
- package/dist/dev/ui/hotkey/hotkey.js.map +1 -0
- package/dist/dev/ui/hotkey/index.d.ts +2 -0
- package/dist/dev/ui/hotkey/index.js +2 -0
- package/dist/dev/ui/input-indicators/use-indicator-visibility.js +25 -0
- package/dist/dev/ui/input-indicators/use-indicator-visibility.js.map +1 -0
- package/dist/dev/ui/input-indicators/use-input-action-subscription.js +22 -0
- package/dist/dev/ui/input-indicators/use-input-action-subscription.js.map +1 -0
- package/dist/dev/ui/input-indicators/use-input-indicator-root.js +21 -0
- package/dist/dev/ui/input-indicators/use-input-indicator-root.js.map +1 -0
- package/dist/dev/ui/input-indicators/use-rendered-indicator-state.js +40 -0
- package/dist/dev/ui/input-indicators/use-rendered-indicator-state.js.map +1 -0
- package/dist/dev/ui/live-button/index.d.ts +2 -0
- package/dist/dev/ui/live-button/index.js +2 -0
- package/dist/dev/ui/live-button/live-button.d.ts +34 -0
- package/dist/dev/ui/live-button/live-button.d.ts.map +1 -0
- package/dist/dev/ui/live-button/live-button.js +92 -0
- package/dist/dev/ui/live-button/live-button.js.map +1 -0
- package/dist/dev/ui/menu/context.d.ts +29 -0
- package/dist/dev/ui/menu/context.d.ts.map +1 -0
- package/dist/dev/ui/menu/context.js +29 -0
- package/dist/dev/ui/menu/context.js.map +1 -0
- package/dist/dev/ui/menu/index.d.ts +3 -0
- package/dist/dev/ui/menu/index.js +3 -0
- package/dist/dev/ui/menu/index.parts.d.ts +21 -0
- package/dist/dev/ui/menu/index.parts.d.ts.map +1 -0
- package/dist/dev/ui/menu/index.parts.js +34 -0
- package/dist/dev/ui/menu/index.parts.js.map +1 -0
- package/dist/dev/ui/menu/menu-back.d.ts +18 -0
- package/dist/dev/ui/menu/menu-back.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-back.js +31 -0
- package/dist/dev/ui/menu/menu-back.js.map +1 -0
- package/dist/dev/ui/menu/menu-checkbox-item.d.ts +22 -0
- package/dist/dev/ui/menu/menu-checkbox-item.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-checkbox-item.js +50 -0
- package/dist/dev/ui/menu/menu-checkbox-item.js.map +1 -0
- package/dist/dev/ui/menu/menu-content.d.ts +15 -0
- package/dist/dev/ui/menu/menu-content.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-content.js +284 -0
- package/dist/dev/ui/menu/menu-content.js.map +1 -0
- package/dist/dev/ui/menu/menu-group.d.ts +18 -0
- package/dist/dev/ui/menu/menu-group.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-group.js +26 -0
- package/dist/dev/ui/menu/menu-group.js.map +1 -0
- package/dist/dev/ui/menu/menu-item-indicator.d.ts +20 -0
- package/dist/dev/ui/menu/menu-item-indicator.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-item-indicator.js +24 -0
- package/dist/dev/ui/menu/menu-item-indicator.js.map +1 -0
- package/dist/dev/ui/menu/menu-item.d.ts +20 -0
- package/dist/dev/ui/menu/menu-item.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-item.js +53 -0
- package/dist/dev/ui/menu/menu-item.js.map +1 -0
- package/dist/dev/ui/menu/menu-label.d.ts +15 -0
- package/dist/dev/ui/menu/menu-label.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-label.js +23 -0
- package/dist/dev/ui/menu/menu-label.js.map +1 -0
- package/dist/dev/ui/menu/menu-radio-group.d.ts +22 -0
- package/dist/dev/ui/menu/menu-radio-group.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-radio-group.js +33 -0
- package/dist/dev/ui/menu/menu-radio-group.js.map +1 -0
- package/dist/dev/ui/menu/menu-radio-item.d.ts +20 -0
- package/dist/dev/ui/menu/menu-radio-item.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-radio-item.js +57 -0
- package/dist/dev/ui/menu/menu-radio-item.js.map +1 -0
- package/dist/dev/ui/menu/menu-root.d.ts +29 -0
- package/dist/dev/ui/menu/menu-root.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-root.js +136 -0
- package/dist/dev/ui/menu/menu-root.js.map +1 -0
- package/dist/dev/ui/menu/menu-separator.d.ts +15 -0
- package/dist/dev/ui/menu/menu-separator.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-separator.js +23 -0
- package/dist/dev/ui/menu/menu-separator.js.map +1 -0
- package/dist/dev/ui/menu/menu-trigger.d.ts +22 -0
- package/dist/dev/ui/menu/menu-trigger.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-trigger.js +124 -0
- package/dist/dev/ui/menu/menu-trigger.js.map +1 -0
- package/dist/dev/ui/menu/menu-view.d.ts +15 -0
- package/dist/dev/ui/menu/menu-view.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-view.js +23 -0
- package/dist/dev/ui/menu/menu-view.js.map +1 -0
- package/dist/dev/ui/mute-button/mute-button.d.ts +2 -2
- package/dist/dev/ui/mute-button/mute-button.d.ts.map +1 -1
- package/dist/dev/ui/pip-button/pip-button.d.ts +2 -2
- package/dist/dev/ui/pip-button/pip-button.d.ts.map +1 -1
- package/dist/dev/ui/play-button/play-button.d.ts +2 -2
- package/dist/dev/ui/play-button/play-button.d.ts.map +1 -1
- package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts +2 -2
- package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts.map +1 -1
- package/dist/dev/ui/playback-rate-menu/context.js +20 -0
- package/dist/dev/ui/playback-rate-menu/context.js.map +1 -0
- package/dist/dev/ui/playback-rate-menu/index.d.ts +3 -0
- package/dist/dev/ui/playback-rate-menu/index.js +3 -0
- package/dist/dev/ui/playback-rate-menu/index.parts.d.ts +12 -0
- package/dist/dev/ui/playback-rate-menu/index.parts.d.ts.map +1 -0
- package/dist/dev/ui/playback-rate-menu/index.parts.js +17 -0
- package/dist/dev/ui/playback-rate-menu/index.parts.js.map +1 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-content.d.ts +14 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-content.d.ts.map +1 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-content.js +28 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-content.js.map +1 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-root.d.ts +23 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-root.d.ts.map +1 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-root.js +39 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-root.js.map +1 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-trigger.d.ts +14 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-trigger.d.ts.map +1 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-trigger.js +51 -0
- package/dist/dev/ui/playback-rate-menu/playback-rate-menu-trigger.js.map +1 -0
- package/dist/dev/ui/playback-rate-menu/use-playback-rate-menu.d.ts +26 -0
- package/dist/dev/ui/playback-rate-menu/use-playback-rate-menu.d.ts.map +1 -0
- package/dist/dev/ui/playback-rate-menu/use-playback-rate-menu.js +27 -0
- package/dist/dev/ui/playback-rate-menu/use-playback-rate-menu.js.map +1 -0
- package/dist/dev/ui/popover/context.d.ts +3 -1
- package/dist/dev/ui/popover/context.d.ts.map +1 -1
- package/dist/dev/ui/popover/context.js.map +1 -1
- package/dist/dev/ui/popover/popover-arrow.d.ts +2 -2
- package/dist/dev/ui/popover/popover-arrow.d.ts.map +1 -1
- package/dist/dev/ui/popover/popover-popup.d.ts +2 -2
- package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
- package/dist/dev/ui/popover/popover-popup.js +20 -7
- package/dist/dev/ui/popover/popover-popup.js.map +1 -1
- package/dist/dev/ui/popover/popover-root.d.ts +4 -1
- package/dist/dev/ui/popover/popover-root.d.ts.map +1 -1
- package/dist/dev/ui/popover/popover-root.js +20 -5
- package/dist/dev/ui/popover/popover-root.js.map +1 -1
- package/dist/dev/ui/popover/popover-trigger.d.ts +2 -2
- package/dist/dev/ui/popover/popover-trigger.d.ts.map +1 -1
- package/dist/dev/ui/poster/poster.d.ts +2 -2
- package/dist/dev/ui/poster/poster.d.ts.map +1 -1
- package/dist/dev/ui/seek-button/seek-button.d.ts +2 -2
- package/dist/dev/ui/seek-button/seek-button.d.ts.map +1 -1
- package/dist/dev/ui/seek-indicator/context.js +20 -0
- package/dist/dev/ui/seek-indicator/context.js.map +1 -0
- package/dist/dev/ui/seek-indicator/index.d.ts +2 -0
- package/dist/dev/ui/seek-indicator/index.js +2 -0
- package/dist/dev/ui/seek-indicator/index.parts.d.ts +10 -0
- package/dist/dev/ui/seek-indicator/index.parts.d.ts.map +1 -0
- package/dist/dev/ui/seek-indicator/index.parts.js +12 -0
- package/dist/dev/ui/seek-indicator/index.parts.js.map +1 -0
- package/dist/dev/ui/seek-indicator/seek-indicator-root.d.ts +14 -0
- package/dist/dev/ui/seek-indicator/seek-indicator-root.d.ts.map +1 -0
- package/dist/dev/ui/seek-indicator/seek-indicator-root.js +30 -0
- package/dist/dev/ui/seek-indicator/seek-indicator-root.js.map +1 -0
- package/dist/dev/ui/seek-indicator/seek-indicator-value.d.ts +13 -0
- package/dist/dev/ui/seek-indicator/seek-indicator-value.d.ts.map +1 -0
- package/dist/dev/ui/seek-indicator/seek-indicator-value.js +23 -0
- package/dist/dev/ui/seek-indicator/seek-indicator-value.js.map +1 -0
- package/dist/dev/ui/slider/context.js.map +1 -1
- package/dist/dev/ui/slider/slider-buffer.d.ts +2 -2
- package/dist/dev/ui/slider/slider-buffer.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-fill.d.ts +2 -2
- package/dist/dev/ui/slider/slider-fill.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-preview.d.ts +2 -2
- package/dist/dev/ui/slider/slider-preview.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-root.d.ts +2 -2
- package/dist/dev/ui/slider/slider-root.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-thumb.d.ts +2 -2
- package/dist/dev/ui/slider/slider-thumb.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-thumbnail.d.ts +2 -2
- package/dist/dev/ui/slider/slider-thumbnail.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-track.d.ts +2 -2
- package/dist/dev/ui/slider/slider-track.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-value.d.ts +2 -2
- package/dist/dev/ui/slider/slider-value.d.ts.map +1 -1
- package/dist/dev/ui/status-announcer/index.d.ts +2 -0
- package/dist/dev/ui/status-announcer/index.js +2 -0
- package/dist/dev/ui/status-announcer/status-announcer.d.ts +14 -0
- package/dist/dev/ui/status-announcer/status-announcer.d.ts.map +1 -0
- package/dist/dev/ui/status-announcer/status-announcer.js +36 -0
- package/dist/dev/ui/status-announcer/status-announcer.js.map +1 -0
- package/dist/dev/ui/status-indicator/context.js +20 -0
- package/dist/dev/ui/status-indicator/context.js.map +1 -0
- package/dist/dev/ui/status-indicator/index.d.ts +2 -0
- package/dist/dev/ui/status-indicator/index.js +2 -0
- package/dist/dev/ui/status-indicator/index.parts.d.ts +10 -0
- package/dist/dev/ui/status-indicator/index.parts.d.ts.map +1 -0
- package/dist/dev/ui/status-indicator/index.parts.js +12 -0
- package/dist/dev/ui/status-indicator/index.parts.js.map +1 -0
- package/dist/dev/ui/status-indicator/status-indicator-root.d.ts +14 -0
- package/dist/dev/ui/status-indicator/status-indicator-root.d.ts.map +1 -0
- package/dist/dev/ui/status-indicator/status-indicator-root.js +34 -0
- package/dist/dev/ui/status-indicator/status-indicator-root.js.map +1 -0
- package/dist/dev/ui/status-indicator/status-indicator-value.d.ts +13 -0
- package/dist/dev/ui/status-indicator/status-indicator-value.d.ts.map +1 -0
- package/dist/dev/ui/status-indicator/status-indicator-value.js +23 -0
- package/dist/dev/ui/status-indicator/status-indicator-value.js.map +1 -0
- package/dist/dev/ui/thumbnail/thumbnail.d.ts +2 -2
- package/dist/dev/ui/thumbnail/thumbnail.d.ts.map +1 -1
- package/dist/dev/ui/time/time-group.d.ts +2 -2
- package/dist/dev/ui/time/time-group.d.ts.map +1 -1
- package/dist/dev/ui/time/time-separator.d.ts +2 -2
- package/dist/dev/ui/time/time-separator.d.ts.map +1 -1
- package/dist/dev/ui/time/time-value.d.ts +2 -2
- package/dist/dev/ui/time/time-value.d.ts.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-root.d.ts +2 -2
- package/dist/dev/ui/time-slider/time-slider-root.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/context.d.ts +3 -1
- package/dist/dev/ui/tooltip/context.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/context.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-arrow.d.ts +2 -2
- package/dist/dev/ui/tooltip/tooltip-arrow.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-popup.d.ts +2 -2
- package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-popup.js +20 -7
- package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-root.d.ts +4 -1
- package/dist/dev/ui/tooltip/tooltip-root.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-root.js +16 -4
- package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-trigger.d.ts +2 -2
- package/dist/dev/ui/tooltip/tooltip-trigger.d.ts.map +1 -1
- package/dist/dev/ui/volume-indicator/context.js +20 -0
- package/dist/dev/ui/volume-indicator/context.js.map +1 -0
- package/dist/dev/ui/volume-indicator/index.d.ts +2 -0
- package/dist/dev/ui/volume-indicator/index.js +2 -0
- package/dist/dev/ui/volume-indicator/index.parts.d.ts +11 -0
- package/dist/dev/ui/volume-indicator/index.parts.d.ts.map +1 -0
- package/dist/dev/ui/volume-indicator/index.parts.js +14 -0
- package/dist/dev/ui/volume-indicator/index.parts.js.map +1 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-fill.d.ts +13 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-fill.d.ts.map +1 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-fill.js +36 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-fill.js.map +1 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-root.d.ts +14 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-root.d.ts.map +1 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-root.js +30 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-root.js.map +1 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-value.d.ts +13 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-value.d.ts.map +1 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-value.js +23 -0
- package/dist/dev/ui/volume-indicator/volume-indicator-value.js.map +1 -0
- package/dist/dev/ui/volume-slider/volume-slider-root.d.ts +2 -2
- package/dist/dev/ui/volume-slider/volume-slider-root.d.ts.map +1 -1
- package/dist/dev/utils/use-attach-media.d.ts +8 -0
- package/dist/dev/utils/use-attach-media.d.ts.map +1 -0
- package/dist/dev/utils/use-attach-media.js +14 -0
- package/dist/dev/utils/use-attach-media.js.map +1 -0
- package/dist/dev/utils/use-render.js.map +1 -1
- package/dist/dev/utils/use-sync-props.js +14 -0
- package/dist/dev/utils/use-sync-props.js.map +1 -0
- package/docs/README.md +7 -0
- package/docs/concepts/accessibility.md +60 -0
- package/docs/concepts/browser-support.md +37 -0
- package/docs/concepts/features.md +131 -0
- package/docs/concepts/overview.md +119 -0
- package/docs/concepts/presets.md +204 -0
- package/docs/concepts/skins.md +2094 -0
- package/docs/concepts/ui-components.md +83 -0
- package/docs/concepts/v10-roadmap.md +75 -0
- package/docs/concepts/why-videojs.md +113 -0
- package/docs/how-to/build-with-ai.md +39 -0
- package/docs/how-to/build-your-own-component.md +142 -0
- package/docs/how-to/customize-skins.md +5990 -0
- package/docs/how-to/installation.md +170 -0
- package/docs/llms.txt +91 -0
- package/docs/reference/buffering-indicator.md +152 -0
- package/docs/reference/captions-button.md +200 -0
- package/docs/reference/controls.md +238 -0
- package/docs/reference/create-player.md +261 -0
- package/docs/reference/create-selector.md +59 -0
- package/docs/reference/feature-buffer.md +54 -0
- package/docs/reference/feature-controls.md +74 -0
- package/docs/reference/feature-error.md +65 -0
- package/docs/reference/feature-fullscreen.md +94 -0
- package/docs/reference/feature-live.md +62 -0
- package/docs/reference/feature-pip.md +94 -0
- package/docs/reference/feature-playback-rate.md +70 -0
- package/docs/reference/feature-playback.md +109 -0
- package/docs/reference/feature-remote-playback.md +74 -0
- package/docs/reference/feature-source.md +70 -0
- package/docs/reference/feature-stream-type.md +46 -0
- package/docs/reference/feature-text-tracks.md +104 -0
- package/docs/reference/feature-time.md +84 -0
- package/docs/reference/feature-volume.md +99 -0
- package/docs/reference/fullscreen-button.md +212 -0
- package/docs/reference/mute-button.md +276 -0
- package/docs/reference/pip-button.md +212 -0
- package/docs/reference/play-button.md +224 -0
- package/docs/reference/playback-rate-button.md +169 -0
- package/docs/reference/player-container.md +103 -0
- package/docs/reference/player-provider.md +102 -0
- package/docs/reference/popover.md +527 -0
- package/docs/reference/poster.md +137 -0
- package/docs/reference/render-element.md +196 -0
- package/docs/reference/seek-button.md +213 -0
- package/docs/reference/slider.md +826 -0
- package/docs/reference/thumbnail.md +322 -0
- package/docs/reference/time-slider.md +741 -0
- package/docs/reference/time.md +495 -0
- package/docs/reference/tooltip.md +631 -0
- package/docs/reference/use-button.md +124 -0
- package/docs/reference/use-container-attach.md +42 -0
- package/docs/reference/use-media-attach.md +46 -0
- package/docs/reference/use-media.md +11 -0
- package/docs/reference/use-player-context.md +93 -0
- package/docs/reference/use-player.md +226 -0
- package/docs/reference/use-selector.md +132 -0
- package/docs/reference/use-snapshot.md +127 -0
- package/docs/reference/use-store.md +257 -0
- package/docs/reference/volume-slider.md +716 -0
- package/package.json +46 -12
- package/dist/default/ui/gesture/media-gesture.js.map +0 -1
- package/dist/default/ui/hotkey/media-hotkey.js.map +0 -1
- package/dist/default/utils/attach-media-element.js +0 -12
- package/dist/default/utils/attach-media-element.js.map +0 -1
- package/dist/default/utils/media-props.js +0 -19
- package/dist/default/utils/media-props.js.map +0 -1
- package/dist/dev/ui/gesture/media-gesture.d.ts +0 -23
- package/dist/dev/ui/gesture/media-gesture.d.ts.map +0 -1
- package/dist/dev/ui/gesture/media-gesture.js.map +0 -1
- package/dist/dev/ui/hotkey/media-hotkey.d.ts +0 -21
- package/dist/dev/ui/hotkey/media-hotkey.d.ts.map +0 -1
- package/dist/dev/ui/hotkey/media-hotkey.js.map +0 -1
- package/dist/dev/utils/attach-media-element.d.ts +0 -9
- package/dist/dev/utils/attach-media-element.d.ts.map +0 -1
- package/dist/dev/utils/attach-media-element.js +0 -12
- package/dist/dev/utils/attach-media-element.js.map +0 -1
- package/dist/dev/utils/media-props.d.ts +0 -8
- package/dist/dev/utils/media-props.d.ts.map +0 -1
- package/dist/dev/utils/media-props.js +0 -19
- package/dist/dev/utils/media-props.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-sync-props.js","names":[],"sources":["../../../src/utils/use-sync-props.ts"],"sourcesContent":["import { isUndefined } from '@videojs/utils/predicate';\n\nexport function useSyncProps<Props extends object, Rest extends Record<string, unknown>>(\n target: Props,\n props: Partial<Props> & Rest,\n defaults: Props\n): Omit<Rest, keyof Props> {\n const rest: Record<string, unknown> = {};\n\n for (const key in props) {\n if (key in defaults) {\n const value = isUndefined(props[key]) ? (defaults as Record<string, unknown>)[key] : props[key];\n if (target[key as keyof typeof target] !== value) target[key as keyof typeof target] = value as any;\n } else {\n rest[key] = props[key];\n }\n }\n\n return rest as Omit<Rest, keyof Props>;\n}\n"],"mappings":";;AAEA,SAAgB,aACd,QACA,OACA,UACyB;CACzB,MAAM,OAAgC,EAAE;AAExC,MAAK,MAAM,OAAO,MAChB,KAAI,OAAO,UAAU;EACnB,MAAM,QAAQ,YAAY,MAAM,KAAK,GAAI,SAAqC,OAAO,MAAM;AAC3F,MAAI,OAAO,SAAgC,MAAO,QAAO,OAA8B;OAEvF,MAAK,OAAO,MAAM;AAItB,QAAO"}
|
package/docs/README.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# @videojs/react documentation
|
|
2
|
+
|
|
3
|
+
Bundled markdown documentation for `@videojs/react` v10.0.0-beta.24.
|
|
4
|
+
|
|
5
|
+
Start at [`./llms.txt`](./llms.txt) — it's the structured index of every page in this directory.
|
|
6
|
+
|
|
7
|
+
Canonical online version: https://videojs.org/docs/framework/react
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Accessibility
|
|
2
|
+
|
|
3
|
+
How Video.js approaches accessibility, and what you should consider if you're deeply customizing your player
|
|
4
|
+
|
|
5
|
+
Video.js is built with accessibility in mind so your player can reach the widest possible audience.
|
|
6
|
+
|
|
7
|
+
Here are some of the accessibility aspects we consider. You should consider them too if you’re performing deeper customization.
|
|
8
|
+
|
|
9
|
+
## Standards we target
|
|
10
|
+
|
|
11
|
+
* [**WAI-ARIA 1.2**](https://www.w3.org/TR/wai-aria-1.2/) defines roles, states, and properties that [assistive technologies](https://www.w3.org/WAI/people-use-web/tools-techniques/) use to understand controls.
|
|
12
|
+
* [**WCAG 2.2**](https://www.w3.org/TR/WCAG22/) provides success criteria for perceivable, operable, understandable, and robust web content.
|
|
13
|
+
* [**CVAA**](https://www.fcc.gov/consumers/guides/21st-century-communications-and-video-accessibility-act-cvaa) is a U.S. federal law requiring closed captioning and accessible controls for video content.
|
|
14
|
+
* [**ADA**](https://www.ada.gov/) is a U.S. civil rights law that prohibits disability discrimination. Courts increasingly apply it to websites, including video players.
|
|
15
|
+
|
|
16
|
+
## ARIA roles and labels
|
|
17
|
+
|
|
18
|
+
Components set ARIA roles and attributes automatically. For example, sliders render with `role="slider"` and value attributes, buttons update their `aria-label` based on player state, and decorative elements like time separators are hidden with `aria-hidden="true"`.
|
|
19
|
+
|
|
20
|
+
Verify that labels are contextually correct for your content and language. Each component’s reference page documents the attributes it sets.
|
|
21
|
+
|
|
22
|
+
## Keyboard interaction
|
|
23
|
+
|
|
24
|
+
All interactive components support keyboard control. For example, buttons activate with Enter and Space, sliders respond to Arrow keys, Home, End, and Page Up/Page Down, and popovers close with Escape. Each component’s reference page lists its full keyboard support. We follow the patterns in the [WAI-ARIA Authoring Practices Guide](https://www.w3.org/WAI/ARIA/apg/).
|
|
25
|
+
|
|
26
|
+
## Focus management
|
|
27
|
+
|
|
28
|
+
Interactive elements are focusable when enabled and leave the [tab order](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) when disabled. Popover triggers link to their popups with `aria-controls` and `aria-expanded`.
|
|
29
|
+
|
|
30
|
+
## Captions and subtitles
|
|
31
|
+
|
|
32
|
+
The [text tracks feature](../reference/feature-text-tracks.md) supports captions and subtitles. Closed captions in the U.S. are governed by the [FCC](https://www.fcc.gov/) under the [CVAA](https://www.fcc.gov/consumers/guides/21st-century-communications-and-video-accessibility-act-cvaa), which requires both captioning and viewer control over caption appearance (font, size, color, opacity, and edge style). Non-compliance carries legal risk. The [WebKit Caption Display Settings explainer](https://github.com/WebKit/explainers/tree/main/CaptionDisplaySettings) tracks how browsers are bringing these customization preferences into the web platform natively.
|
|
33
|
+
|
|
34
|
+
## Color contrast
|
|
35
|
+
|
|
36
|
+
Skins respond to [`prefers-contrast: more`](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-contrast) by increasing background opacity on overlays and controls, and to [`prefers-reduced-transparency: reduce`](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-transparency) by raising baseline opacity so text stays readable over video.
|
|
37
|
+
|
|
38
|
+
Video is harder than most UI for contrast because the background is always changing. A control that passes checks over a dark frame can disappear over a bright title card. Automated tools won’t catch this, so test your controls against light, dark, and mixed video content. Custom components should test against [WCAG 1.4.3 (contrast minimum)](https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum) and [1.4.11 (non-text contrast)](https://www.w3.org/WAI/WCAG22/Understanding/non-text-contrast).
|
|
39
|
+
|
|
40
|
+
## Touch targets
|
|
41
|
+
|
|
42
|
+
Controls use rem-based sizing so they scale with the user’s font size preference. All interactive elements set [`touch-action: manipulation`](https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action) to eliminate tap delay on touch devices. Skins use [`pointer: fine` and `pointer: coarse`](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/pointer) to adapt transitions for mouse and touch input.
|
|
43
|
+
|
|
44
|
+
If you build custom controls, target at least 24x24 CSS pixels per [WCAG 2.5.8 (target size minimum)](https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum). Larger is better on touch-first surfaces.
|
|
45
|
+
|
|
46
|
+
## Color scheme
|
|
47
|
+
|
|
48
|
+
Skins adapt to [`prefers-color-scheme`](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme). Borders, backgrounds, and text colors adjust through CSS custom properties. Custom components can use the same design tokens. See [Skins](./skins.md) for details.
|
|
49
|
+
|
|
50
|
+
## Reduced motion
|
|
51
|
+
|
|
52
|
+
Skins respect [`prefers-reduced-motion`](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion) by simplifying or removing animations and transitions. Follow the same pattern in custom components.
|
|
53
|
+
|
|
54
|
+
## Test with assistive technology
|
|
55
|
+
|
|
56
|
+
Automated tools catch markup issues but miss real usability problems. Test your player with a [screen reader](https://www.w3.org/WAI/people-use-web/tools-techniques/) ([VoiceOver](https://support.apple.com/guide/voiceover/welcome/mac) on macOS, [NVDA](https://www.nvaccess.org/about-nvda/) or [JAWS](https://www.freedomscientific.com/products/software/jaws/) on Windows) and keyboard-only navigation. Verify that every control is reachable, operable, and announces its purpose and state. The [WAI “Easy Checks”](https://www.w3.org/WAI/test-evaluate/preliminary/) are a good starting point.
|
|
57
|
+
|
|
58
|
+
## Further reading
|
|
59
|
+
|
|
60
|
+
The W3C WAI guides on [making audio and video media accessible](https://www.w3.org/WAI/media/av/) and [accessible media players](https://www.w3.org/WAI/media/av/player/) go deeper on everything covered here.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Browser Support
|
|
2
|
+
|
|
3
|
+
Which browsers Video.js 10 supports and how it handles newer platform features
|
|
4
|
+
|
|
5
|
+
Video.js 10 currently targets **evergreen browsers** : the latest two stable versions of Chrome, Firefox, Safari, and Edge.
|
|
6
|
+
|
|
7
|
+
Note
|
|
8
|
+
|
|
9
|
+
Video.js 10 is in beta. The browser support matrix may expand as we approach GA based on community feedback and usage data.
|
|
10
|
+
|
|
11
|
+
## Why evergreen?
|
|
12
|
+
|
|
13
|
+
Video.js 10 builds directly on the web platform: custom elements, CSS custom properties, anchor positioning, and modern JavaScript APIs. Targeting evergreen browsers lets us:
|
|
14
|
+
|
|
15
|
+
* **Ship smaller bundles** by avoiding polyfills and transpilation for outdated syntax
|
|
16
|
+
* **Use platform-native features** like `popover` and anchor positioning instead of JavaScript equivalents
|
|
17
|
+
* **Keep the core slim** so platform-specific adapters (HTML, React) add only what they need
|
|
18
|
+
|
|
19
|
+
## Progressive enhancement
|
|
20
|
+
|
|
21
|
+
When we use a platform feature that hasn’t landed in all supported browsers yet, we provide a fallback. The player works either way; the experience may differ slightly in older browsers. For example, tooltips and popovers use CSS anchor positioning where available and fall back to absolute positioning where it isn’t.
|
|
22
|
+
|
|
23
|
+
## Rendering contexts
|
|
24
|
+
|
|
25
|
+
### WebViews and PWAs
|
|
26
|
+
|
|
27
|
+
A [WebView](https://developer.mozilla.org/en-US/docs/Glossary/WebView) is a browser engine embedded inside a native app. WebViews on iOS (WKWebView) and Android (Android WebView) behave differently from the full browser; autoplay policies, fullscreen APIs, and hardware acceleration can vary. Progressive Web Apps (PWAs) installed via “Add to Homescreen” can exhibit similar quirks, since they also run in a limited browser context rather than a full browser tab.
|
|
28
|
+
|
|
29
|
+
Video.js 10 beta targets only standard browser environments. If you embed a player inside a native app or PWA, test thoroughly for your specific platform and runtime.
|
|
30
|
+
|
|
31
|
+
### Smart TVs and set-top boxes
|
|
32
|
+
|
|
33
|
+
TV platforms run embedded browsers with limited standards support. Video.js 10’s core is not tied to any specific platform, which makes future TV adapters possible, but TV is not a supported target today.
|
|
34
|
+
|
|
35
|
+
### Server-side rendering
|
|
36
|
+
|
|
37
|
+
Video.js components render valid markup on the server. Interactivity — state management, media playback, and event handling — requires the browser and kicks in after hydration.
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Features
|
|
2
|
+
|
|
3
|
+
The state and actions each feature adds to the player
|
|
4
|
+
|
|
5
|
+
Not every player needs to support every use case. To address this, Video.js has a concept of **features** — self-contained units of player functionality. Each one adds state properties and actions to the player. For example, “playback” adds `paused` and `play()`, “volume” adds `volume` and `setVolume()`, and so on.
|
|
6
|
+
|
|
7
|
+
## Using features
|
|
8
|
+
|
|
9
|
+
### Feature bundles and presets
|
|
10
|
+
|
|
11
|
+
You probably don’t want to hand-pick every feature your player needs. A **feature bundle** groups the features needed for a specific use case into a single array.
|
|
12
|
+
|
|
13
|
+
For example, `videoFeatures` bundles playback, volume, time, fullscreen, and more — everything a general video player needs:
|
|
14
|
+
|
|
15
|
+
tsx
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
import { createPlayer } from '@videojs/react';
|
|
19
|
+
import { videoFeatures } from '@videojs/react/video';
|
|
20
|
+
|
|
21
|
+
const Player = createPlayer({ features: videoFeatures });
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Feature bundles are usually paired with specific skins and media elements in a **preset** . To learn more about this, and the available presets, you’ll want to check out the presets guide.
|
|
25
|
+
|
|
26
|
+
[Learn more about presets](./presets.md)
|
|
27
|
+
|
|
28
|
+
### Create a player with individual features
|
|
29
|
+
|
|
30
|
+
If you’re not using presets, you can create a player that has individual features.
|
|
31
|
+
|
|
32
|
+
tsx
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
import { createPlayer, playbackFeature, volumeFeature, timeFeature, controlsFeature } from '@videojs/react';
|
|
36
|
+
|
|
37
|
+
const Player = createPlayer({
|
|
38
|
+
features: [playbackFeature, volumeFeature, timeFeature, controlsFeature],
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Extending a feature bundle
|
|
43
|
+
|
|
44
|
+
Since feature bundles are just an array of features under the hood, it doesn’t take much to extend one. For example, if you were using the `/background` preset and wanted a play button on your background video, you might add the playback feature.
|
|
45
|
+
|
|
46
|
+
tsx
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
import { createPlayer, playbackFeature } from '@videojs/react';
|
|
50
|
+
import { backgroundFeatures } from '@videojs/react/background';
|
|
51
|
+
|
|
52
|
+
const Player = createPlayer({
|
|
53
|
+
features: [...backgroundFeatures, playbackFeature],
|
|
54
|
+
});
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Access features in components
|
|
58
|
+
|
|
59
|
+
You access feature state and actions through [`usePlayer`](../reference/use-player.md):
|
|
60
|
+
|
|
61
|
+
tsx
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
// Subscribe to state (re-renders when selected values change)
|
|
65
|
+
const { paused, volume } = usePlayer((s) => ({
|
|
66
|
+
paused: s.paused,
|
|
67
|
+
volume: s.volume,
|
|
68
|
+
}));
|
|
69
|
+
|
|
70
|
+
// Call actions
|
|
71
|
+
const store = usePlayer();
|
|
72
|
+
store.play();
|
|
73
|
+
store.setVolume(0.8);
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Feature selectors
|
|
77
|
+
|
|
78
|
+
Each feature also has a pre-built selector (e.g. [`selectPlayback`](../reference/feature-playback.md), [`selectVolume`](../reference/feature-volume.md)) that returns just that feature’s state and actions:
|
|
79
|
+
|
|
80
|
+
tsx
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
import { selectPlayback, usePlayer } from '@videojs/react';
|
|
84
|
+
|
|
85
|
+
const playback = usePlayer(selectPlayback);
|
|
86
|
+
playback?.play();
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Checking for feature support
|
|
90
|
+
|
|
91
|
+
Volume, fullscreen, and picture-in-picture expose an `*Availability` property because platform support varies. For example, iOS Safari doesn’t allow programmatic volume control.
|
|
92
|
+
|
|
93
|
+
Value
|
|
94
|
+
|
|
95
|
+
Meaning
|
|
96
|
+
|
|
97
|
+
`'available'`
|
|
98
|
+
|
|
99
|
+
Ready to use
|
|
100
|
+
|
|
101
|
+
`'unavailable'`
|
|
102
|
+
|
|
103
|
+
Could work, not ready yet
|
|
104
|
+
|
|
105
|
+
`'unsupported'`
|
|
106
|
+
|
|
107
|
+
Platform can never do this
|
|
108
|
+
|
|
109
|
+
Components that depend on availability (like [`PiPButton`](../reference/pip-button.md) and [`FullscreenButton`](../reference/fullscreen-button.md)) expose a `data-availability` attribute, so you can hide unsupported controls with CSS:
|
|
110
|
+
|
|
111
|
+
css
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
.pip-button[data-availability="unsupported"] {
|
|
115
|
+
display: none;
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
You can also check availability in JS:
|
|
120
|
+
|
|
121
|
+
PiPControl.tsx
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
function PiPControl() {
|
|
125
|
+
const availability = usePlayer((s) => s.pipAvailability);
|
|
126
|
+
|
|
127
|
+
if (availability === 'unsupported') return null;
|
|
128
|
+
|
|
129
|
+
return <PiPButton />;
|
|
130
|
+
}
|
|
131
|
+
```
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
How Video.js players are structured — state, UI, and media
|
|
4
|
+
|
|
5
|
+
Video.js v10 is built around a three-part architecture that separates concerns and maximizes flexibility. Each part is designed to work independently or together, allowing you to use as much or as little of Video.js as you need.
|
|
6
|
+
|
|
7
|
+
For the reasoning behind this design, see [Why Video.js?](./why-videojs.md).
|
|
8
|
+
|
|
9
|
+
## 1\. State management
|
|
10
|
+
|
|
11
|
+
State is handled by a `Player.Provider`, which creates a central state store that all components can access. When you wrap your player in a `Player.Provider`, the components automatically connect to the state.
|
|
12
|
+
|
|
13
|
+
tsx
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
{/* All components inside automatically connect to state */}
|
|
17
|
+
<Player.Provider>
|
|
18
|
+
<VideoSkin>
|
|
19
|
+
<Video src="video.mp4" />
|
|
20
|
+
</VideoSkin>
|
|
21
|
+
</Player.Provider>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
You can access state and actions from anywhere within the provider with the [`usePlayer` hook](../reference/use-player.md).
|
|
25
|
+
|
|
26
|
+
[Learn more about state and actions](./features.md)
|
|
27
|
+
|
|
28
|
+
## 2\. User interface
|
|
29
|
+
|
|
30
|
+
Use a prebuilt **skin** or build your own from the individual **UI components** .
|
|
31
|
+
|
|
32
|
+
### Skins
|
|
33
|
+
|
|
34
|
+
Skins are complete, pre-designed player UIs that package components and styles together:
|
|
35
|
+
|
|
36
|
+
tsx
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
<Player.Provider>
|
|
40
|
+
<VideoSkin>
|
|
41
|
+
<Video src="video.mp4" />
|
|
42
|
+
</VideoSkin>
|
|
43
|
+
</Player.Provider>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
[Learn more about skins](./skins.md)
|
|
47
|
+
|
|
48
|
+
### UI components
|
|
49
|
+
|
|
50
|
+
If you want more control than skins offer you, you can build your own UI from our components.
|
|
51
|
+
|
|
52
|
+
tsx
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
<Player.Provider>
|
|
56
|
+
<Player.Container>
|
|
57
|
+
<Video src="video.mp4" />
|
|
58
|
+
<MediaControls>
|
|
59
|
+
<PlayButton />
|
|
60
|
+
{/* ... */}
|
|
61
|
+
</MediaControls>
|
|
62
|
+
</Player.Container>
|
|
63
|
+
</Player.Provider>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
To get started with UI components, you might consider [ejecting a skin](../how-to/customize-skins.md) and using its pre-styled components as a foundation.
|
|
67
|
+
|
|
68
|
+
[Learn more about UI components](./ui-components.md)
|
|
69
|
+
|
|
70
|
+
[Build your own component](../how-to/build-your-own-component.md)
|
|
71
|
+
|
|
72
|
+
## 3\. Media
|
|
73
|
+
|
|
74
|
+
Media components are the components that actually display your media. They’re essentially “players with no UI”. They handle the video/audio rendering and expose a consistent API.
|
|
75
|
+
|
|
76
|
+
Media components can be format specific (HLS, DASH), service specific (YouTube, Vimeo, Mux), or use case specific (background video).
|
|
77
|
+
|
|
78
|
+
Note
|
|
79
|
+
|
|
80
|
+
DASH, YouTube, Vimeo, Mux, and more media elements are currently under development.
|
|
81
|
+
|
|
82
|
+
tsx
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
<Player.Provider>
|
|
86
|
+
<VideoSkin>
|
|
87
|
+
<HlsVideo src="https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM.m3u8" />
|
|
88
|
+
</VideoSkin>
|
|
89
|
+
</Player.Provider>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Presets
|
|
93
|
+
|
|
94
|
+
**Presets** preconfigure these parts for a specific use case.
|
|
95
|
+
|
|
96
|
+
The default presets are `@videojs/react/video` and `@videojs/react/audio`, covering the baseline set of controls you’d expect from the HTML `<video>` and `<audio>` tags.
|
|
97
|
+
|
|
98
|
+
Beyond the defaults, presets target more specific use cases. For example, `/background` includes a media element with autoplay, mute, and loop built in, a skin with no controls, and just the features needed to power it:
|
|
99
|
+
|
|
100
|
+
tsx
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
import { createPlayer } from '@videojs/react';
|
|
104
|
+
import { backgroundFeatures, BackgroundVideo, BackgroundVideoSkin } from '@videojs/react/background';
|
|
105
|
+
|
|
106
|
+
const Player = createPlayer({ features: backgroundFeatures });
|
|
107
|
+
|
|
108
|
+
function Hero() {
|
|
109
|
+
return (
|
|
110
|
+
<Player.Provider>
|
|
111
|
+
<BackgroundVideoSkin>
|
|
112
|
+
<BackgroundVideo src="hero.mp4" />
|
|
113
|
+
</BackgroundVideoSkin>
|
|
114
|
+
</Player.Provider>
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
[Learn more about presets](./presets.md)
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# Presets
|
|
2
|
+
|
|
3
|
+
Pre-packaged player configurations that bundle state management, skins, and media elements for specific use cases.
|
|
4
|
+
|
|
5
|
+
A **preset** packages what you need for a specific player use case. It can include special [state management](./features.md), one or more [skins](./skins.md) for UI, and specific media elements. Instead of assembling these pieces individually, you pick a preset that matches what you’re building.
|
|
6
|
+
|
|
7
|
+
For example, the `@videojs/react/background` preset includes a media element with autoplay, mute, and loop built in, a skin with no controls, and just the features needed to power them:
|
|
8
|
+
|
|
9
|
+
App.tsx
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
import { createPlayer } from '@videojs/react';
|
|
13
|
+
import { backgroundFeatures, BackgroundVideo, BackgroundVideoSkin } from '@videojs/react/background';
|
|
14
|
+
|
|
15
|
+
const Player = createPlayer({ features: backgroundFeatures });
|
|
16
|
+
|
|
17
|
+
function Hero() {
|
|
18
|
+
return (
|
|
19
|
+
<Player.Provider>
|
|
20
|
+
<BackgroundVideoSkin>
|
|
21
|
+
<BackgroundVideo src="hero.mp4" />
|
|
22
|
+
</BackgroundVideoSkin>
|
|
23
|
+
</Player.Provider>
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Available presets
|
|
29
|
+
|
|
30
|
+
The default presets are `/video` and `/audio`. These cover the baseline controls you’d expect from the HTML `<video>` and `<audio>` tags. Beyond the defaults, presets target more specific use cases — the `/background` preset, for example, needs layout but not controls. Over time we’ll add more: short-form players, podcast players, TV streaming players, and others.
|
|
31
|
+
|
|
32
|
+
Import
|
|
33
|
+
|
|
34
|
+
Description
|
|
35
|
+
|
|
36
|
+
Details
|
|
37
|
+
|
|
38
|
+
`@videojs/react/video`
|
|
39
|
+
|
|
40
|
+
General-purpose video player preset with full playback controls.
|
|
41
|
+
|
|
42
|
+
▸
|
|
43
|
+
|
|
44
|
+
Feature bundle
|
|
45
|
+
|
|
46
|
+
`videoFeatures`
|
|
47
|
+
|
|
48
|
+
Features
|
|
49
|
+
|
|
50
|
+
[playback](../reference/feature-playback.md), [playbackRate](../reference/feature-playback-rate.md), [volume](../reference/feature-volume.md), [time](../reference/feature-time.md), [source](../reference/feature-source.md), [buffer](../reference/feature-buffer.md), [fullscreen](../reference/feature-fullscreen.md), [pip](../reference/feature-pip.md), [remotePlayback](../reference/feature-remote-playback.md), [controls](../reference/feature-controls.md), [textTrack](../reference/feature-text-tracks.md), [error](../reference/feature-error.md)
|
|
51
|
+
|
|
52
|
+
Skins
|
|
53
|
+
|
|
54
|
+
`<MinimalVideoSkin>`, `<VideoSkin>`
|
|
55
|
+
|
|
56
|
+
Default media element
|
|
57
|
+
|
|
58
|
+
`<Video>`
|
|
59
|
+
|
|
60
|
+
`@videojs/react/audio`
|
|
61
|
+
|
|
62
|
+
Audio-only player preset with playback and volume controls.
|
|
63
|
+
|
|
64
|
+
▸
|
|
65
|
+
|
|
66
|
+
Feature bundle
|
|
67
|
+
|
|
68
|
+
`audioFeatures`
|
|
69
|
+
|
|
70
|
+
Features
|
|
71
|
+
|
|
72
|
+
[playback](../reference/feature-playback.md), [playbackRate](../reference/feature-playback-rate.md), [volume](../reference/feature-volume.md), [time](../reference/feature-time.md), [source](../reference/feature-source.md), [buffer](../reference/feature-buffer.md), [error](../reference/feature-error.md)
|
|
73
|
+
|
|
74
|
+
Skins
|
|
75
|
+
|
|
76
|
+
`<MinimalAudioSkin>`, `<AudioSkin>`
|
|
77
|
+
|
|
78
|
+
Default media element
|
|
79
|
+
|
|
80
|
+
`<Audio>`
|
|
81
|
+
|
|
82
|
+
`@videojs/react/background`
|
|
83
|
+
|
|
84
|
+
Ambient background video preset with no user controls.
|
|
85
|
+
|
|
86
|
+
▸
|
|
87
|
+
|
|
88
|
+
Feature bundle
|
|
89
|
+
|
|
90
|
+
`backgroundFeatures`
|
|
91
|
+
|
|
92
|
+
Features
|
|
93
|
+
|
|
94
|
+
–
|
|
95
|
+
|
|
96
|
+
Skins
|
|
97
|
+
|
|
98
|
+
`<BackgroundVideoSkin>`
|
|
99
|
+
|
|
100
|
+
Default media element
|
|
101
|
+
|
|
102
|
+
`<BackgroundVideo>`
|
|
103
|
+
|
|
104
|
+
`@videojs/react/live-audio`
|
|
105
|
+
|
|
106
|
+
Live audio player preset — same features as `audio` with a skin that omits duration / current-time displays.
|
|
107
|
+
|
|
108
|
+
▸
|
|
109
|
+
|
|
110
|
+
Feature bundle
|
|
111
|
+
|
|
112
|
+
`liveAudioFeatures`
|
|
113
|
+
|
|
114
|
+
Features
|
|
115
|
+
|
|
116
|
+
[playback](../reference/feature-playback.md), [volume](../reference/feature-volume.md), [time](../reference/feature-time.md), [source](../reference/feature-source.md), [buffer](../reference/feature-buffer.md), [error](../reference/feature-error.md), [live](../reference/feature-live.md)
|
|
117
|
+
|
|
118
|
+
Skins
|
|
119
|
+
|
|
120
|
+
`<MinimalLiveAudioSkin>`, `<LiveAudioSkin>`
|
|
121
|
+
|
|
122
|
+
Default media element
|
|
123
|
+
|
|
124
|
+
`<Audio>`
|
|
125
|
+
|
|
126
|
+
`@videojs/react/live-video`
|
|
127
|
+
|
|
128
|
+
Live video player preset — same features as `video` with a skin that omits duration / current-time displays.
|
|
129
|
+
|
|
130
|
+
▸
|
|
131
|
+
|
|
132
|
+
Feature bundle
|
|
133
|
+
|
|
134
|
+
`liveVideoFeatures`
|
|
135
|
+
|
|
136
|
+
Features
|
|
137
|
+
|
|
138
|
+
[playback](../reference/feature-playback.md), [volume](../reference/feature-volume.md), [time](../reference/feature-time.md), [source](../reference/feature-source.md), [buffer](../reference/feature-buffer.md), [fullscreen](../reference/feature-fullscreen.md), [pip](../reference/feature-pip.md), [remotePlayback](../reference/feature-remote-playback.md), [controls](../reference/feature-controls.md), [textTrack](../reference/feature-text-tracks.md), [error](../reference/feature-error.md), [live](../reference/feature-live.md)
|
|
139
|
+
|
|
140
|
+
Skins
|
|
141
|
+
|
|
142
|
+
`<MinimalLiveVideoSkin>`, `<LiveVideoSkin>`
|
|
143
|
+
|
|
144
|
+
Default media element
|
|
145
|
+
|
|
146
|
+
`<Video>`
|
|
147
|
+
|
|
148
|
+
## What’s in a preset
|
|
149
|
+
|
|
150
|
+
Each preset exports up to three things:
|
|
151
|
+
|
|
152
|
+
* **Feature bundle** — An array of [features](./features.md) that define the player’s state and actions. For example, the video feature bundle includes playback, volume, time, fullscreen, and more.
|
|
153
|
+
* **Skins** — Pre-built UIs designed for that feature bundle. For example, a video skin renders fullscreen and PiP controls because the video feature bundle includes those features. An audio skin doesn’t.
|
|
154
|
+
* **Media element** — A media component suited to the use case. For example, the background video element bakes in autoplay, mute, and loop.
|
|
155
|
+
|
|
156
|
+
These parts aren’t equally tied together. Skins depend tightly on their feature bundle — a skin expects specific features to exist. Media elements are more interchangeable — you can swap in an HLS or DASH provider without changing your skin or features.
|
|
157
|
+
|
|
158
|
+
## Customizing a preset
|
|
159
|
+
|
|
160
|
+
You can customize a preset in three ways: extend its feature bundle, eject its skin, or swap its media element.
|
|
161
|
+
|
|
162
|
+
### Extend the feature bundle
|
|
163
|
+
|
|
164
|
+
Add features to a preset’s feature bundle to enable new functionality. For example, adding playback controls to a background video:
|
|
165
|
+
|
|
166
|
+
App.tsx
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
import { createPlayer, playbackFeature } from '@videojs/react';
|
|
170
|
+
import { backgroundFeatures, BackgroundVideo } from '@videojs/react/background';
|
|
171
|
+
|
|
172
|
+
const Player = createPlayer({
|
|
173
|
+
features: [...backgroundFeatures, playbackFeature],
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
function Hero() {
|
|
177
|
+
return (
|
|
178
|
+
<Player.Provider>
|
|
179
|
+
<Player.Container>
|
|
180
|
+
<BackgroundVideo src="hero.mp4" />
|
|
181
|
+
<PlayButton />
|
|
182
|
+
</Player.Container>
|
|
183
|
+
</Player.Provider>
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Eject the skin
|
|
189
|
+
|
|
190
|
+
If a preset’s skin is close but not quite right, you can [eject it](../how-to/customize-skins.md) — copy its internal components into your project and customize from there.
|
|
191
|
+
|
|
192
|
+
### Swap the media element
|
|
193
|
+
|
|
194
|
+
A preset’s default media element is just the starting point. You can replace it with any compatible media provider. For example, using an HLS source with the video preset:
|
|
195
|
+
|
|
196
|
+
tsx
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
<Player.Provider>
|
|
200
|
+
<VideoSkin>
|
|
201
|
+
<HlsVideo src="https://example.com/stream.m3u8" />
|
|
202
|
+
</VideoSkin>
|
|
203
|
+
</Player.Provider>
|
|
204
|
+
```
|