@videojs/react 10.0.0-beta.23 → 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 +17 -8
- package/dist/default/media/simple-hls-video/index.js +2 -2
- 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 +209 -99
- 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 +235 -99
- package/dist/default/presets/audio/skin.js +42 -7
- 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/minimal-skin.css +209 -99
- package/dist/default/presets/live-audio/minimal-skin.js +32 -4
- package/dist/default/presets/live-audio/minimal-skin.js.map +1 -1
- package/dist/default/presets/live-audio/minimal-skin.tailwind.js +32 -4
- package/dist/default/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/live-audio/skin.css +235 -99
- package/dist/default/presets/live-audio/skin.js +9 -4
- package/dist/default/presets/live-audio/skin.js.map +1 -1
- package/dist/default/presets/live-audio/skin.tailwind.js +37 -9
- package/dist/default/presets/live-audio/skin.tailwind.js.map +1 -1
- package/dist/default/presets/live-video/minimal-skin.css +553 -138
- package/dist/default/presets/live-video/minimal-skin.js +112 -4
- package/dist/default/presets/live-video/minimal-skin.js.map +1 -1
- package/dist/default/presets/live-video/minimal-skin.tailwind.js +114 -4
- package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/live-video/skin.css +563 -136
- package/dist/default/presets/live-video/skin.js +55 -3
- package/dist/default/presets/live-video/skin.js.map +1 -1
- package/dist/default/presets/live-video/skin.tailwind.js +201 -8
- package/dist/default/presets/live-video/skin.tailwind.js.map +1 -1
- package/dist/default/presets/video/minimal-skin.css +553 -138
- 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 +563 -136
- package/dist/default/presets/video/skin.js +100 -28
- 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/controls/context.js +4 -1
- package/dist/default/ui/controls/context.js.map +1 -1
- package/dist/default/ui/gesture/gesture.js +2 -1
- package/dist/default/ui/gesture/gesture.js.map +1 -1
- package/dist/default/ui/gesture/index.js +2 -0
- package/dist/default/ui/hotkey/hotkey.js +1 -0
- package/dist/default/ui/hotkey/hotkey.js.map +1 -1
- 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-render.js.map +1 -1
- 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 +25 -8
- package/dist/dev/index.js +17 -8
- package/dist/dev/media/simple-hls-video/index.d.ts +2 -2
- package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -1
- package/dist/dev/media/simple-hls-video/index.js +2 -2
- package/dist/dev/media/simple-hls-video/index.js.map +1 -1
- package/dist/dev/player/context.d.ts +5 -2
- 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 +209 -99
- 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 +235 -99
- package/dist/dev/presets/audio/skin.d.ts.map +1 -1
- package/dist/dev/presets/audio/skin.js +42 -7
- 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/live-audio/minimal-skin.css +209 -99
- package/dist/dev/presets/live-audio/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/live-audio/minimal-skin.js +32 -4
- 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 +32 -4
- package/dist/dev/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/live-audio/skin.css +235 -99
- package/dist/dev/presets/live-audio/skin.d.ts.map +1 -1
- package/dist/dev/presets/live-audio/skin.js +9 -4
- 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 +37 -9
- package/dist/dev/presets/live-audio/skin.tailwind.js.map +1 -1
- package/dist/dev/presets/live-video/minimal-skin.css +553 -138
- package/dist/dev/presets/live-video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/live-video/minimal-skin.js +112 -4
- package/dist/dev/presets/live-video/minimal-skin.js.map +1 -1
- package/dist/dev/presets/live-video/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/live-video/minimal-skin.tailwind.js +114 -4
- package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/live-video/skin.css +563 -136
- package/dist/dev/presets/live-video/skin.d.ts.map +1 -1
- package/dist/dev/presets/live-video/skin.js +55 -3
- package/dist/dev/presets/live-video/skin.js.map +1 -1
- package/dist/dev/presets/live-video/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/live-video/skin.tailwind.js +201 -8
- package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -1
- package/dist/dev/presets/video/minimal-skin.css +553 -138
- 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 +563 -136
- package/dist/dev/presets/video/skin.d.ts.map +1 -1
- package/dist/dev/presets/video/skin.js +100 -28
- 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/controls/context.js +4 -1
- package/dist/dev/ui/controls/context.js.map +1 -1
- package/dist/dev/ui/gesture/gesture.js +2 -1
- package/dist/dev/ui/gesture/gesture.js.map +1 -1
- 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.map +1 -1
- package/dist/dev/ui/hotkey/hotkey.js +1 -0
- package/dist/dev/ui/hotkey/hotkey.js.map +1 -1
- 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/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-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/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/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/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-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/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/utils/use-render.js.map +1 -1
- 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 +23 -10
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# UI components
|
|
2
|
+
|
|
3
|
+
How Video.js UI components work — one element per component, data attributes for state, and compound composition.
|
|
4
|
+
|
|
5
|
+
UI components are controls like buttons, sliders, and time displays.
|
|
6
|
+
|
|
7
|
+
Every UI component renders exactly one HTML element, taking inspiration from projects like [shadcn/ui](https://ui.shadcn.com/) and [Base UI](https://base-ui.com/). This approach gives you control over styling and behavior while handling the complex interactions for you.
|
|
8
|
+
|
|
9
|
+
## Where to put your components
|
|
10
|
+
|
|
11
|
+
UI Components can go anywhere inside a [`<Player.Provider>`](../reference/player-provider.md).
|
|
12
|
+
|
|
13
|
+
However, you should consider placing your components in `<Player.Container>`. Components in `<Player.Container>` will go fullscreen with the player, respond to user activity, and more.
|
|
14
|
+
|
|
15
|
+
[Read more about `<Player.Container>`](../reference/player-container.md)
|
|
16
|
+
|
|
17
|
+
## Styling and customization
|
|
18
|
+
|
|
19
|
+
### The `render` prop
|
|
20
|
+
|
|
21
|
+
The `render` prop is the primary customization mechanism. It accepts a function that receives `props` and `state`, and returns your element. The `props` object includes event handlers, ARIA attributes, data attributes, and a ref — always spread `{...props}` to keep everything working:
|
|
22
|
+
|
|
23
|
+
tsx
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
<PlayButton
|
|
27
|
+
render={(props, state) => (
|
|
28
|
+
<button {...props}>
|
|
29
|
+
{state.paused ? 'Play' : 'Pause'}
|
|
30
|
+
</button>
|
|
31
|
+
)}
|
|
32
|
+
/>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
`className` and `style` also accept functions of state for dynamic styling without a full render prop:
|
|
36
|
+
|
|
37
|
+
tsx
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
<PlayButton
|
|
41
|
+
className={(state) =>
|
|
42
|
+
state.paused ? 'btn btn--paused' : 'btn btn--playing'
|
|
43
|
+
}
|
|
44
|
+
/>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Data attributes and CSS custom properties
|
|
48
|
+
|
|
49
|
+
Components reflect player state as `data-*` attributes on their element. For example, `data-paused` or `data-volume-level="high"`.
|
|
50
|
+
|
|
51
|
+
This lets you style state changes in pure CSS:
|
|
52
|
+
|
|
53
|
+
css
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
/* Show/hide icons based on play state */
|
|
57
|
+
.play-icon { display: none; }
|
|
58
|
+
.pause-icon { display: none; }
|
|
59
|
+
|
|
60
|
+
button[data-paused] .play-icon { display: inline; }
|
|
61
|
+
button:not([data-paused]) .pause-icon { display: inline; }
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Each component’s reference page documents its full set of data attributes.
|
|
65
|
+
|
|
66
|
+
Some components also expose **CSS custom properties** for continuous values like fill percentage and pointer position. Sliders, for example, set `--media-slider-fill` and `--media-slider-pointer`. See individual component reference pages for specifics.
|
|
67
|
+
|
|
68
|
+
## Compound components
|
|
69
|
+
|
|
70
|
+
Complex interactions are split into composable parts. A parent manages shared state while children consume it. Each part is still one element.
|
|
71
|
+
|
|
72
|
+
Compound components use dot notation off a shared namespace:
|
|
73
|
+
|
|
74
|
+
tsx
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
<VolumeSlider.Root orientation="vertical">
|
|
78
|
+
<VolumeSlider.Track>
|
|
79
|
+
<VolumeSlider.Fill />
|
|
80
|
+
</VolumeSlider.Track>
|
|
81
|
+
<VolumeSlider.Thumb />
|
|
82
|
+
</VolumeSlider.Root>
|
|
83
|
+
```
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# v10 Roadmap
|
|
2
|
+
|
|
3
|
+
Timeline and milestones for Video.js v10 rebuild and the future of v8
|
|
4
|
+
|
|
5
|
+
Video.js v10 is a complete rebuild from the ground up, designed to be more modular, framework-flexible, and aligned with modern web development practices.
|
|
6
|
+
|
|
7
|
+
## Current versions
|
|
8
|
+
|
|
9
|
+
### Version 8
|
|
10
|
+
|
|
11
|
+
* Maintained with bug fixes and critical security patches only
|
|
12
|
+
* No new features will be planned
|
|
13
|
+
* Community contributions still welcome
|
|
14
|
+
* Documentation available at [legacy.videojs.org](https://legacy.videojs.org)
|
|
15
|
+
|
|
16
|
+
### Version 9
|
|
17
|
+
|
|
18
|
+
* Reserved only for urgent API-breaking changes that cannot be avoided
|
|
19
|
+
|
|
20
|
+
## March 2026: v10 Beta Release
|
|
21
|
+
|
|
22
|
+
Wider testing release to the community.
|
|
23
|
+
|
|
24
|
+
### Core feature parity target
|
|
25
|
+
|
|
26
|
+
* Basic control set (play, pause, seek, volume, fullscreen)
|
|
27
|
+
* Adaptive streaming support via existing community engines
|
|
28
|
+
* No plugin migrations yet, without plugin author contribution
|
|
29
|
+
|
|
30
|
+
### What to expect
|
|
31
|
+
|
|
32
|
+
* Close to stable, but API changes are still possible
|
|
33
|
+
* Intended for experimental adoption in real-world projects
|
|
34
|
+
* Developers encouraged to try it out and report issues
|
|
35
|
+
|
|
36
|
+
## Mid-2026: v10 GA Release
|
|
37
|
+
|
|
38
|
+
**Stable release** of Video.js v10
|
|
39
|
+
|
|
40
|
+
### Feature targets
|
|
41
|
+
|
|
42
|
+
* Core feature parity with v8 in terms of fundamentals
|
|
43
|
+
* Feature parity with Media Chrome, Vidstack, Plyr, and Mux Player
|
|
44
|
+
* Community encouraged to begin full reintegration projects
|
|
45
|
+
* Plugin ecosystem migration begins in earnest
|
|
46
|
+
|
|
47
|
+
### Engine development focus
|
|
48
|
+
|
|
49
|
+
* Lightweight adaptive streaming
|
|
50
|
+
* MoQ (Media over QUIC) support
|
|
51
|
+
|
|
52
|
+
## Late-2026: Feature parity with v8 Contrib
|
|
53
|
+
|
|
54
|
+
**Extended feature parity** with Video.js “contrib” plugins:
|
|
55
|
+
|
|
56
|
+
* Ads integration
|
|
57
|
+
* Analytics support
|
|
58
|
+
* Further community plugin migration dependent on contributions
|
|
59
|
+
|
|
60
|
+
## End-of-life plan for Video.js v8
|
|
61
|
+
|
|
62
|
+
### Mid-2026
|
|
63
|
+
|
|
64
|
+
* v8/v9 moved to “video.js-legacy” repository and package
|
|
65
|
+
* Documentation preserved at [legacy.videojs.org](https://legacy.videojs.org)
|
|
66
|
+
* Hosted CDN copies will remain available
|
|
67
|
+
|
|
68
|
+
### 2027 and beyond
|
|
69
|
+
|
|
70
|
+
* Security patches only
|
|
71
|
+
* Community contributions de-prioritized
|
|
72
|
+
|
|
73
|
+
* * *
|
|
74
|
+
|
|
75
|
+
**Want to contribute?** Check out the [v10 repository on GitHub](https://github.com/videojs/v10) to get involved in the rebuild
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Why Video.js?
|
|
2
|
+
|
|
3
|
+
The open-source video player for React and HTML. Lightweight, accessible components built for performance and streaming.
|
|
4
|
+
|
|
5
|
+
Video.js is the open-source video player for the web. It makes web video easy, performant, accessible, and customizable.
|
|
6
|
+
|
|
7
|
+
Let’s dig into when you’d want to use Video.js, starting with the the question we hear most…
|
|
8
|
+
|
|
9
|
+
## Why not `<video>`?
|
|
10
|
+
|
|
11
|
+
The native `<video>` tag is great if you can describe your video as an image with a play button. Past that, the gaps show up quickly.
|
|
12
|
+
|
|
13
|
+
### Cross-browser inconsistency
|
|
14
|
+
|
|
15
|
+
Chrome, Safari, and Firefox each render the default `<video>` controls differently. You can hide them, but you can’t deeply style or rearrange them. Building UI that matches your product means starting from scratch.
|
|
16
|
+
|
|
17
|
+

|
|
18
|
+
|
|
19
|
+
Chrome
|
|
20
|
+
|
|
21
|
+

|
|
22
|
+
|
|
23
|
+
Safari
|
|
24
|
+
|
|
25
|
+

|
|
26
|
+
|
|
27
|
+
Firefox
|
|
28
|
+
|
|
29
|
+
### Video interactions
|
|
30
|
+
|
|
31
|
+
Video often involves a lot more than an MP4 in `src`. Rich playback features (like thumbnail previews, adaptive bitrate, quality selection, chapters, audio track switching, control localization, error UI, live-streaming UI, analytics, ads, 360 video, Chromecast, AirPlay, DRM, and more) are *possible* with the video element but require complex wiring and deep consideration for maintainabilty and [accessibility](./accessibility.md).
|
|
32
|
+
|
|
33
|
+
Video.js aims to handle this all out of the box. (Though some features are still under development. Stay tuned!)
|
|
34
|
+
|
|
35
|
+
### Streaming formats and sources
|
|
36
|
+
|
|
37
|
+
Behind features like adaptive bitrate and quality selection are video formats like HLS or DASH — videos broken into segments that can be selected according to bandwidth and preferences. Not every browser supports HLS, and DASH support is even more limited. Video.js closes the gap so the same `src` works everywhere.
|
|
38
|
+
|
|
39
|
+
Of course, your video might not be coming from a `src` like that. It might be provided by a service. However, services like YouTube, Vimeo, and Mux each speak their own API. Switching from a self-hosted file to a hosted service shouldn’t mean switching players. Video.js abstracts the source so you can change where the video comes from without rewriting the surrounding code.
|
|
40
|
+
|
|
41
|
+
Video.js even considers sources like canvas-based MoQ or animated GIFs, all with the same components.
|
|
42
|
+
|
|
43
|
+
## Why Video.js?
|
|
44
|
+
|
|
45
|
+
Video.js is built at Mux by the teams behind Video.js, Plyr, Vidstack, and Media Chrome, with contributions from engineers across other player projects. Between us, our projects have served tens of billions of monthly video plays. Most of the choices on this page came from things we got wrong the first time, then the second, then the fifth. We’ve been supporting your edge cases for over a decade. Now we’re shipping the player we always wanted to build.
|
|
46
|
+
|
|
47
|
+
Let’s dig into some of the design principles that help explain why we built Video.js and why it may be the best choice for your project or team.
|
|
48
|
+
|
|
49
|
+
### Add only what you need
|
|
50
|
+
|
|
51
|
+
Most player libraries ship every feature in one bundle, so you carry code you don’t run. If your video doesn’t need a feature like DRM, why ship that code? Video.js turns features into independent, *composable* modules. You hand `createPlayer` the array you actually want, and what you don’t import doesn’t ship.
|
|
52
|
+
|
|
53
|
+
tsx
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
import { createPlayer, playbackFeature, timeFeature } from '@videojs/react';
|
|
57
|
+
|
|
58
|
+
const Player = createPlayer({
|
|
59
|
+
features: [playbackFeature, timeFeature],
|
|
60
|
+
});
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
[Learn more about features](./features.md)
|
|
64
|
+
|
|
65
|
+
Of course, you don’t have to think about every feature you’re going to need if you don’t want to. Pre-built feature bundles are still there if you’d rather not assemble the list by hand.
|
|
66
|
+
|
|
67
|
+
[Learn more about presets](./presets.md)
|
|
68
|
+
|
|
69
|
+
### Framework-native
|
|
70
|
+
|
|
71
|
+
Many player libraries wrap a single web component for every framework. That works, until you reach the seams: refs you can’t pass through, state that doesn’t reconcile, prop names that aren’t quite React or HTML. Video.js ships idiomatic APIs in each framework: React components and hooks for React, custom elements and controllers for HTML. (And we plan on supporting more frameworks in the futrue!)
|
|
72
|
+
|
|
73
|
+
The player feels like the rest of your app.
|
|
74
|
+
|
|
75
|
+
React
|
|
76
|
+
|
|
77
|
+
HTML
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
import { Player, Video, VideoSkin } from '@videojs/react/video';
|
|
81
|
+
|
|
82
|
+
function MyPlayer() {
|
|
83
|
+
return (
|
|
84
|
+
<Player.Provider>
|
|
85
|
+
<VideoSkin>
|
|
86
|
+
<Video src="movie.mp4" />
|
|
87
|
+
</VideoSkin>
|
|
88
|
+
</Player.Provider>
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
<script type="module" src="@videojs/html/video/player"></script>
|
|
95
|
+
|
|
96
|
+
<video-player>
|
|
97
|
+
<video-skin>
|
|
98
|
+
<video src="movie.mp4"></video>
|
|
99
|
+
</video-skin>
|
|
100
|
+
</video-player>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Eject and own
|
|
104
|
+
|
|
105
|
+
Most player libraries draw a line between “configurable through props” and “fork the source.” Cross the line and you’re on your own. Video.js lets you eject any skin and walk away with the source: components in your framework’s language that you can read and change. The skin you ship is yours; the rest of the player keeps working underneath it.
|
|
106
|
+
|
|
107
|
+
[Customize skins](../how-to/customize-skins.md)
|
|
108
|
+
|
|
109
|
+
### AI-native DX
|
|
110
|
+
|
|
111
|
+
Documentation aimed at human readers usually doesn’t help an agent. Video.js publishes an `llms.txt` index, ships every docs page as both HTML and Markdown, and has a dedicated guide for building with AI assistants. Drop the player into a Claude or Cursor session and the docs come along for the ride.
|
|
112
|
+
|
|
113
|
+
[Build with AI](../how-to/build-with-ai.md)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Build with AI
|
|
2
|
+
|
|
3
|
+
How to give AI tools the context they need to build Video.js players alongside you
|
|
4
|
+
|
|
5
|
+
Video.js publishes all of its documentation in AI-friendly formats. This page covers how to feed that documentation to your tools.
|
|
6
|
+
|
|
7
|
+
## Give your AI context
|
|
8
|
+
|
|
9
|
+
AI tools might not know the Video.js API out of the box. You need to give them documentation.
|
|
10
|
+
|
|
11
|
+
### Markdown documentation
|
|
12
|
+
|
|
13
|
+
Every doc page is available as markdown, so you can provide your model with focused content instead of HTML. Three ways to get it:
|
|
14
|
+
|
|
15
|
+
1. **Copy button** : each page has a “Copy Markdown” button in its header. Grab the pages relevant to your task and paste them in. The button looks something like this…
|
|
16
|
+
|
|
17
|
+
2. **`Accept: text/markdown` header** : AI tools that send this header when fetching a Video.js doc URL will receive markdown instead of HTML.
|
|
18
|
+
|
|
19
|
+

|
|
20
|
+
|
|
21
|
+
3. **Add `.md` to any URL** : append `.md` to any doc URL to get its markdown directly. For example, the PlayButton reference is available at [`videojs.org/docs/framework/react/reference/play-button.md`](../reference/play-button.md).
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### llms.txt
|
|
25
|
+
|
|
26
|
+
[`videojs.org/docs/framework/react/llms.txt`](../llms.txt) is an index of the full documentation: every page with a title and description. Add it to your project’s context so your AI knows what’s available.
|
|
27
|
+
|
|
28
|
+
## Set up your tools
|
|
29
|
+
|
|
30
|
+
How you use these resources depends on your tool:
|
|
31
|
+
|
|
32
|
+
* **Any AI chat** : copy markdown from a doc page and paste it into the conversation.
|
|
33
|
+
* **Claude Code** : reference doc URLs in your project’s [`CLAUDE.md`](https://docs.anthropic.com/en/docs/claude-code/overview) so the agent knows where to find Video.js docs when it needs them.
|
|
34
|
+
* **Cursor** : add the `llms.txt` URL via the [`@Docs`](https://docs.cursor.com/context/@-symbols/@-docs) feature for indexed search across the documentation.
|
|
35
|
+
* **Other coding agents** : reference doc URLs or `llms.txt` in your project’s [`AGENTS.md`](https://agents.md) or equivalent context file.
|
|
36
|
+
|
|
37
|
+
## What’s next for AI and Video.js
|
|
38
|
+
|
|
39
|
+
We’re exploring additional ways to integrate with AI tools, including MCP servers and agent skills. If you have ideas or want to share how you’re using AI with Video.js, we’d love to hear from you in [GitHub Discussions](https://github.com/videojs/v10/discussions).
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Build your own UI component
|
|
2
|
+
|
|
3
|
+
Create custom player controls that read state, dispatch actions, and stay accessible.
|
|
4
|
+
|
|
5
|
+
Custom components subscribe to player state and dispatch actions, like built-in controls.
|
|
6
|
+
|
|
7
|
+
## You might not need a custom component
|
|
8
|
+
|
|
9
|
+
Before building from scratch, check if an existing approach covers your use case:
|
|
10
|
+
|
|
11
|
+
* **Change what a control renders** : use the `render` prop on any built-in component. See [UI components](../concepts/ui-components.md).
|
|
12
|
+
* **Restyle a control** : use CSS custom properties and data attributes. See [UI components](../concepts/ui-components.md).
|
|
13
|
+
* **Rearrange or remove controls** : eject a skin and modify it. See [Customize skins](./customize-skins.md).
|
|
14
|
+
|
|
15
|
+
Build a custom component when you need new behavior, a new state display, or integration with an external system.
|
|
16
|
+
|
|
17
|
+
## Use player state and actions
|
|
18
|
+
|
|
19
|
+
Need access to player state or actions? You’ll want to familiarize yourself with [features](../concepts/features.md). Each feature exposes a set. Here are some features you might reach for first:
|
|
20
|
+
|
|
21
|
+
State
|
|
22
|
+
|
|
23
|
+
Actions
|
|
24
|
+
|
|
25
|
+
Feature
|
|
26
|
+
|
|
27
|
+
`paused`, `ended`
|
|
28
|
+
|
|
29
|
+
`play()`, `pause()`
|
|
30
|
+
|
|
31
|
+
[Playback](../reference/feature-playback.md)
|
|
32
|
+
|
|
33
|
+
`currentTime`, `duration`
|
|
34
|
+
|
|
35
|
+
`seek()`
|
|
36
|
+
|
|
37
|
+
[Time](../reference/feature-time.md)
|
|
38
|
+
|
|
39
|
+
`volume`, `muted`
|
|
40
|
+
|
|
41
|
+
`setVolume()`, `toggleMuted()`
|
|
42
|
+
|
|
43
|
+
[Volume](../reference/feature-volume.md)
|
|
44
|
+
|
|
45
|
+
`fullscreen`
|
|
46
|
+
|
|
47
|
+
`requestFullscreen()`, `exitFullscreen()`
|
|
48
|
+
|
|
49
|
+
[Fullscreen](../reference/feature-fullscreen.md)
|
|
50
|
+
|
|
51
|
+
Browse the full list in the **Features** section of the sidebar.
|
|
52
|
+
|
|
53
|
+
Each feature also has an **availability** property (`'available'`, `'unavailable'`, or `'unsupported'`) for hiding controls the platform does not support. See [Features](../concepts/features.md) for details.
|
|
54
|
+
|
|
55
|
+
Access state and actions with [`usePlayer`](../reference/use-player.md):
|
|
56
|
+
|
|
57
|
+
tsx
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
import { usePlayer } from '@videojs/react';
|
|
61
|
+
|
|
62
|
+
// Subscribe to state — re-renders only when selected values change
|
|
63
|
+
const paused = usePlayer((s) => s.paused);
|
|
64
|
+
const currentTime = usePlayer((s) => s.currentTime);
|
|
65
|
+
|
|
66
|
+
// Get the store for dispatching actions (does not subscribe)
|
|
67
|
+
const store = usePlayer();
|
|
68
|
+
|
|
69
|
+
await store.play();
|
|
70
|
+
store.setVolume(0.5);
|
|
71
|
+
store.seek(30);
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Place your component in the player
|
|
75
|
+
|
|
76
|
+
Your component needs to be inside [`<Player.Provider>`](../reference/player-provider.md) to access state. Place it inside [`<Player.Container>`](../reference/player-container.md) if it should also participate in fullscreen and respond to user activity:
|
|
77
|
+
|
|
78
|
+
tsx
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
<Player.Provider>
|
|
82
|
+
<Player.Container>
|
|
83
|
+
<VideoSkin>
|
|
84
|
+
<Video src="video.mp4" />
|
|
85
|
+
</VideoSkin>
|
|
86
|
+
<SkipIntroButton />
|
|
87
|
+
</Player.Container>
|
|
88
|
+
</Player.Provider>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Make it accessible
|
|
92
|
+
|
|
93
|
+
[Learn more about accessibility in video players](../concepts/accessibility.md)
|
|
94
|
+
|
|
95
|
+
## Full example
|
|
96
|
+
|
|
97
|
+
A “skip intro” button that appears during the first 30 seconds of playback and seeks past the intro when clicked.
|
|
98
|
+
|
|
99
|
+
SkipIntroButton.tsx
|
|
100
|
+
|
|
101
|
+
SkipIntroButton.css
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
import { usePlayer } from '@videojs/react';
|
|
105
|
+
|
|
106
|
+
function SkipIntroButton() {
|
|
107
|
+
const store = usePlayer();
|
|
108
|
+
const currentTime = usePlayer((s) => s.currentTime);
|
|
109
|
+
const paused = usePlayer((s) => s.paused);
|
|
110
|
+
|
|
111
|
+
const visible = currentTime < 30 && !paused;
|
|
112
|
+
|
|
113
|
+
return (
|
|
114
|
+
<button
|
|
115
|
+
className="skip-intro-button"
|
|
116
|
+
onClick={() => store.seek(30)}
|
|
117
|
+
aria-label="Skip intro"
|
|
118
|
+
// `undefined` removes the attribute; `false` would render data-visible="false"
|
|
119
|
+
data-visible={visible || undefined}
|
|
120
|
+
tabIndex={visible ? 0 : -1}
|
|
121
|
+
>
|
|
122
|
+
Skip intro
|
|
123
|
+
</button>
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
.skip-intro-button {
|
|
130
|
+
position: absolute;
|
|
131
|
+
bottom: 5rem;
|
|
132
|
+
right: 1rem;
|
|
133
|
+
opacity: 0;
|
|
134
|
+
pointer-events: none;
|
|
135
|
+
transition: opacity 200ms;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.skip-intro-button[data-visible] {
|
|
139
|
+
opacity: 1;
|
|
140
|
+
pointer-events: auto;
|
|
141
|
+
}
|
|
142
|
+
```
|