@videojs/react 10.0.0-beta.23 → 10.0.0-beta.25
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/airplay-enter.js +16 -0
- package/dist/default/icons/dist/react/default/airplay-enter.js.map +1 -0
- package/dist/default/icons/dist/react/default/airplay-exit.js +28 -0
- package/dist/default/icons/dist/react/default/airplay-exit.js.map +1 -0
- package/dist/default/icons/dist/react/default/captions-off.js +6 -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/gear.js +16 -0
- package/dist/default/icons/dist/react/default/gear.js.map +1 -0
- 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/quality.js +16 -0
- package/dist/default/icons/dist/react/default/quality.js.map +1 -0
- 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/speech.js +19 -0
- package/dist/default/icons/dist/react/default/speech.js.map +1 -0
- package/dist/default/icons/dist/react/default/speed.js +52 -0
- package/dist/default/icons/dist/react/default/speed.js.map +1 -0
- 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/switches.js +19 -0
- package/dist/default/icons/dist/react/default/switches.js.map +1 -0
- 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/airplay-enter.js +16 -0
- package/dist/default/icons/dist/react/minimal/airplay-enter.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/airplay-exit.js +28 -0
- package/dist/default/icons/dist/react/minimal/airplay-exit.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/captions-off.js +6 -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/gear.js +16 -0
- package/dist/default/icons/dist/react/minimal/gear.js.map +1 -0
- 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/quality.js +16 -0
- package/dist/default/icons/dist/react/minimal/quality.js.map +1 -0
- 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/speech.js +54 -0
- package/dist/default/icons/dist/react/minimal/speech.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/speed.js +52 -0
- package/dist/default/icons/dist/react/minimal/speed.js.map +1 -0
- 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/switches.js +19 -0
- package/dist/default/icons/dist/react/minimal/switches.js.map +1 -0
- 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 +26 -0
- package/dist/default/icons/minimal/index.js +26 -0
- package/dist/default/index.js +25 -12
- package/dist/default/media/dash-video/index.js +5 -1
- package/dist/default/media/dash-video/index.js.map +1 -1
- package/dist/default/media/{hls-video → hlsjs-video}/index.js +9 -5
- package/dist/default/media/hlsjs-video/index.js.map +1 -0
- package/dist/default/media/mux-audio/index.js +9 -3
- package/dist/default/media/mux-audio/index.js.map +1 -1
- package/dist/default/media/mux-video/index.js +9 -3
- package/dist/default/media/mux-video/index.js.map +1 -1
- package/dist/default/media/native-hls-video/index.js +5 -1
- package/dist/default/media/native-hls-video/index.js.map +1 -1
- package/dist/default/media/simple-hls-audio-only/index.js +22 -0
- package/dist/default/media/simple-hls-audio-only/index.js.map +1 -0
- 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/media/vimeo-video/index.js +37 -0
- package/dist/default/media/vimeo-video/index.js.map +1 -0
- package/dist/default/player/context.js +9 -1
- package/dist/default/player/context.js.map +1 -1
- package/dist/default/player/create-player.js +17 -5
- package/dist/default/player/create-player.js.map +1 -1
- package/dist/default/presets/audio/minimal-skin.css +569 -114
- package/dist/default/presets/audio/minimal-skin.js +163 -33
- package/dist/default/presets/audio/minimal-skin.js.map +1 -1
- package/dist/default/presets/audio/minimal-skin.tailwind.js +98 -35
- package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/audio/skin.css +550 -116
- package/dist/default/presets/audio/skin.js +99 -34
- package/dist/default/presets/audio/skin.js.map +1 -1
- package/dist/default/presets/audio/skin.tailwind.js +173 -42
- package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
- package/dist/default/presets/live-audio/index.js +2 -2
- package/dist/default/presets/live-audio/minimal-skin.css +569 -114
- package/dist/default/presets/live-audio/minimal-skin.js +56 -14
- package/dist/default/presets/live-audio/minimal-skin.js.map +1 -1
- package/dist/default/presets/live-audio/minimal-skin.tailwind.js +57 -16
- package/dist/default/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/live-audio/skin.css +550 -116
- package/dist/default/presets/live-audio/skin.js +39 -16
- package/dist/default/presets/live-audio/skin.js.map +1 -1
- package/dist/default/presets/live-audio/skin.tailwind.js +61 -19
- package/dist/default/presets/live-audio/skin.tailwind.js.map +1 -1
- package/dist/default/presets/live-video/minimal-skin.css +949 -178
- package/dist/default/presets/live-video/minimal-skin.js +205 -16
- package/dist/default/presets/live-video/minimal-skin.js.map +1 -1
- package/dist/default/presets/live-video/minimal-skin.tailwind.js +208 -17
- package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/live-video/skin.css +926 -182
- package/dist/default/presets/live-video/skin.js +150 -19
- package/dist/default/presets/live-video/skin.js.map +1 -1
- package/dist/default/presets/live-video/skin.tailwind.js +295 -24
- package/dist/default/presets/live-video/skin.tailwind.js.map +1 -1
- package/dist/default/presets/video/minimal-skin.css +949 -178
- package/dist/default/presets/video/minimal-skin.js +450 -40
- package/dist/default/presets/video/minimal-skin.js.map +1 -1
- package/dist/default/presets/video/minimal-skin.tailwind.js +455 -43
- package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/video/skin.css +926 -182
- package/dist/default/presets/video/skin.js +346 -49
- package/dist/default/presets/video/skin.js.map +1 -1
- package/dist/default/presets/video/skin.tailwind.js +454 -51
- package/dist/default/presets/video/skin.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +11 -5
- package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/badge.js +6 -0
- package/dist/default/skins/dist/default/default/tailwind/components/badge.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/buffering.js +1 -4
- 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 +2 -2
- 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 +34 -0
- package/dist/default/skins/dist/default/default/tailwind/components/menu.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
- 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/popup.js +4 -3
- package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/poster.js +7 -1
- package/dist/default/skins/dist/default/default/tailwind/components/poster.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/seek.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/seek.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js +5 -3
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js +12 -0
- package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/time.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/time.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +35 -13
- 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 +17 -5
- package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/badge.js +6 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/badge.js.map +1 -0
- 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 +2 -2
- 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 +33 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
- 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/popup.js +3 -2
- package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +7 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/poster.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/seek.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +5 -3
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js +13 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -0
- package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +30 -11
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +17 -2
- package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
- package/dist/default/tailwind.css +42 -0
- package/dist/default/ui/airplay-button/airplay-button.js +17 -0
- package/dist/default/ui/airplay-button/airplay-button.js.map +1 -0
- package/dist/default/ui/airplay-button/index.js +2 -0
- package/dist/default/ui/alert-dialog/alert-dialog-close.js +1 -1
- package/dist/default/ui/alert-dialog/alert-dialog-popup.js +1 -1
- package/dist/default/ui/audio-track/index.js +2 -0
- package/dist/default/ui/audio-track/use-audio-track-options.js +31 -0
- package/dist/default/ui/audio-track/use-audio-track-options.js.map +1 -0
- package/dist/default/ui/captions-radio-group/index.js +2 -0
- package/dist/default/ui/captions-radio-group/use-captions-options.js +37 -0
- package/dist/default/ui/captions-radio-group/use-captions-options.js.map +1 -0
- package/dist/default/ui/controls/context.js +4 -1
- package/dist/default/ui/controls/context.js.map +1 -1
- package/dist/default/ui/create-media-button.js +23 -10
- package/dist/default/ui/create-media-button.js.map +1 -1
- package/dist/default/ui/error-dialog/error-dialog-description.js +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/hooks/use-button.js.map +1 -1
- 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/hotkey/use-hotkey-shortcut.js +28 -0
- package/dist/default/ui/hotkey/use-hotkey-shortcut.js.map +1 -0
- package/dist/default/ui/hotkey/use-hotkey.js +1 -2
- package/dist/default/ui/hotkey/use-hotkey.js.map +1 -1
- 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 +43 -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 +44 -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 +36 -0
- package/dist/default/ui/menu/index.parts.js.map +1 -0
- package/dist/default/ui/menu/menu-back.js +30 -0
- package/dist/default/ui/menu/menu-back.js.map +1 -0
- package/dist/default/ui/menu/menu-checkbox-item.js +49 -0
- package/dist/default/ui/menu/menu-checkbox-item.js.map +1 -0
- package/dist/default/ui/menu/menu-content.js +302 -0
- package/dist/default/ui/menu/menu-content.js.map +1 -0
- package/dist/default/ui/menu/menu-group-label.js +29 -0
- package/dist/default/ui/menu/menu-group-label.js.map +1 -0
- package/dist/default/ui/menu/menu-group.js +24 -0
- package/dist/default/ui/menu/menu-group.js.map +1 -0
- package/dist/default/ui/menu/menu-item-indicator.js +23 -0
- package/dist/default/ui/menu/menu-item-indicator.js.map +1 -0
- package/dist/default/ui/menu/menu-item-setting-provider.js +72 -0
- package/dist/default/ui/menu/menu-item-setting-provider.js.map +1 -0
- package/dist/default/ui/menu/menu-item-value.js +28 -0
- package/dist/default/ui/menu/menu-item-value.js.map +1 -0
- package/dist/default/ui/menu/menu-item.js +74 -0
- package/dist/default/ui/menu/menu-item.js.map +1 -0
- package/dist/default/ui/menu/menu-radio-group.js +30 -0
- package/dist/default/ui/menu/menu-radio-group.js.map +1 -0
- package/dist/default/ui/menu/menu-radio-item.js +56 -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 +22 -0
- package/dist/default/ui/menu/menu-separator.js.map +1 -0
- package/dist/default/ui/menu/menu-trigger.js +180 -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/menu/use-menu-group.js +31 -0
- package/dist/default/ui/menu/use-menu-group.js.map +1 -0
- package/dist/default/ui/playback-rate/index.js +2 -0
- package/dist/default/ui/playback-rate/use-playback-rate-options.js +34 -0
- package/dist/default/ui/playback-rate/use-playback-rate-options.js.map +1 -0
- package/dist/default/ui/playback-rate-button/playback-rate-button.js +2 -1
- package/dist/default/ui/playback-rate-button/playback-rate-button.js.map +1 -1
- 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/poster/poster.js +17 -3
- package/dist/default/ui/poster/poster.js.map +1 -1
- package/dist/default/ui/quality/index.js +2 -0
- package/dist/default/ui/quality/use-quality-options.js +37 -0
- package/dist/default/ui/quality/use-quality-options.js.map +1 -0
- package/dist/default/ui/seek-button/seek-button.js +3 -1
- package/dist/default/ui/seek-button/seek-button.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/time/time-value.js +32 -5
- package/dist/default/ui/time/time-value.js.map +1 -1
- package/dist/default/ui/time-slider/time-slider-root.js +18 -6
- package/dist/default/ui/time-slider/time-slider-root.js.map +1 -1
- package/dist/default/ui/tooltip/context.js.map +1 -1
- package/dist/default/ui/tooltip/index.parts.js +4 -0
- package/dist/default/ui/tooltip/index.parts.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-arrow.js +1 -1
- package/dist/default/ui/tooltip/tooltip-label.js +24 -0
- package/dist/default/ui/tooltip/tooltip-label.js.map +1 -0
- package/dist/default/ui/tooltip/tooltip-popup.js +26 -9
- package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-root.js +17 -5
- package/dist/default/ui/tooltip/tooltip-root.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-shortcut.js +25 -0
- package/dist/default/ui/tooltip/tooltip-shortcut.js.map +1 -0
- 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-iframe.js +14 -0
- package/dist/default/utils/use-attach-iframe.js.map +1 -0
- package/dist/default/utils/use-media-instance.js +11 -3
- package/dist/default/utils/use-media-instance.js.map +1 -1
- package/dist/default/utils/use-render.js +1 -1
- package/dist/default/utils/use-render.js.map +1 -1
- package/dist/dev/icons/dist/react/default/airplay-enter.js +16 -0
- package/dist/dev/icons/dist/react/default/airplay-enter.js.map +1 -0
- package/dist/dev/icons/dist/react/default/airplay-exit.js +28 -0
- package/dist/dev/icons/dist/react/default/airplay-exit.js.map +1 -0
- package/dist/dev/icons/dist/react/default/captions-off.js +6 -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/gear.js +16 -0
- package/dist/dev/icons/dist/react/default/gear.js.map +1 -0
- package/dist/dev/icons/dist/react/default/index.d.ts +30 -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/quality.js +16 -0
- package/dist/dev/icons/dist/react/default/quality.js.map +1 -0
- 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/speech.js +19 -0
- package/dist/dev/icons/dist/react/default/speech.js.map +1 -0
- package/dist/dev/icons/dist/react/default/speed.js +52 -0
- package/dist/dev/icons/dist/react/default/speed.js.map +1 -0
- 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/switches.js +19 -0
- package/dist/dev/icons/dist/react/default/switches.js.map +1 -0
- 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/airplay-enter.js +16 -0
- package/dist/dev/icons/dist/react/minimal/airplay-enter.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/airplay-exit.js +28 -0
- package/dist/dev/icons/dist/react/minimal/airplay-exit.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/captions-off.js +6 -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/gear.js +16 -0
- package/dist/dev/icons/dist/react/minimal/gear.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/index.d.ts +30 -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/quality.js +16 -0
- package/dist/dev/icons/dist/react/minimal/quality.js.map +1 -0
- 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/speech.js +54 -0
- package/dist/dev/icons/dist/react/minimal/speech.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/speed.js +52 -0
- package/dist/dev/icons/dist/react/minimal/speed.js.map +1 -0
- 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/switches.js +19 -0
- package/dist/dev/icons/dist/react/minimal/switches.js.map +1 -0
- 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 +26 -0
- package/dist/dev/icons/minimal/index.d.ts +2 -0
- package/dist/dev/icons/minimal/index.js +26 -0
- package/dist/dev/index.d.ts +32 -11
- package/dist/dev/index.js +25 -12
- package/dist/dev/media/dash-video/index.d.ts.map +1 -1
- package/dist/dev/media/dash-video/index.js +5 -1
- package/dist/dev/media/dash-video/index.js.map +1 -1
- package/dist/dev/media/hlsjs-video/index.d.ts +15 -0
- package/dist/dev/media/hlsjs-video/index.d.ts.map +1 -0
- package/dist/dev/media/{hls-video → hlsjs-video}/index.js +9 -5
- package/dist/dev/media/hlsjs-video/index.js.map +1 -0
- package/dist/dev/media/mux-audio/index.d.ts +2 -2
- package/dist/dev/media/mux-audio/index.d.ts.map +1 -1
- package/dist/dev/media/mux-audio/index.js +9 -3
- package/dist/dev/media/mux-audio/index.js.map +1 -1
- package/dist/dev/media/mux-video/index.d.ts +2 -2
- package/dist/dev/media/mux-video/index.d.ts.map +1 -1
- package/dist/dev/media/mux-video/index.js +9 -3
- package/dist/dev/media/mux-video/index.js.map +1 -1
- package/dist/dev/media/native-hls-video/index.d.ts.map +1 -1
- package/dist/dev/media/native-hls-video/index.js +5 -1
- package/dist/dev/media/native-hls-video/index.js.map +1 -1
- package/dist/dev/media/simple-hls-audio-only/index.d.ts +15 -0
- package/dist/dev/media/simple-hls-audio-only/index.d.ts.map +1 -0
- package/dist/dev/media/simple-hls-audio-only/index.js +22 -0
- package/dist/dev/media/simple-hls-audio-only/index.js.map +1 -0
- 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/media/vimeo-video/index.d.ts +15 -0
- package/dist/dev/media/vimeo-video/index.d.ts.map +1 -0
- package/dist/dev/media/vimeo-video/index.js +37 -0
- package/dist/dev/media/vimeo-video/index.js.map +1 -0
- package/dist/dev/player/context.d.ts +13 -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 +17 -5
- package/dist/dev/player/create-player.js.map +1 -1
- package/dist/dev/presets/audio/minimal-skin.css +569 -114
- package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/audio/minimal-skin.js +163 -33
- 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 +98 -35
- package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/audio/skin.css +550 -116
- package/dist/dev/presets/audio/skin.d.ts.map +1 -1
- package/dist/dev/presets/audio/skin.js +99 -34
- 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 +173 -42
- package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
- package/dist/dev/presets/live-audio/index.d.ts +2 -2
- package/dist/dev/presets/live-audio/index.js +2 -2
- package/dist/dev/presets/live-audio/minimal-skin.css +569 -114
- package/dist/dev/presets/live-audio/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/live-audio/minimal-skin.js +56 -14
- 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 +57 -16
- package/dist/dev/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/live-audio/skin.css +550 -116
- package/dist/dev/presets/live-audio/skin.d.ts +3 -1
- package/dist/dev/presets/live-audio/skin.d.ts.map +1 -1
- package/dist/dev/presets/live-audio/skin.js +39 -16
- 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 +61 -19
- package/dist/dev/presets/live-audio/skin.tailwind.js.map +1 -1
- package/dist/dev/presets/live-video/minimal-skin.css +949 -178
- package/dist/dev/presets/live-video/minimal-skin.d.ts +0 -7
- package/dist/dev/presets/live-video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/live-video/minimal-skin.js +205 -16
- 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 +208 -17
- package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/live-video/skin.css +926 -182
- package/dist/dev/presets/live-video/skin.d.ts +0 -6
- package/dist/dev/presets/live-video/skin.d.ts.map +1 -1
- package/dist/dev/presets/live-video/skin.js +150 -19
- 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 +295 -24
- package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -1
- package/dist/dev/presets/types.d.ts +2 -1
- package/dist/dev/presets/types.d.ts.map +1 -1
- package/dist/dev/presets/video/minimal-skin.css +949 -178
- package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/video/minimal-skin.js +450 -40
- 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 +455 -43
- package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/video/skin.css +926 -182
- package/dist/dev/presets/video/skin.d.ts.map +1 -1
- package/dist/dev/presets/video/skin.js +346 -49
- 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 +454 -51
- package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +11 -5
- package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/badge.js +6 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/badge.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js +1 -4
- 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 +2 -2
- 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 +34 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/menu.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
- 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/popup.js +4 -3
- package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +7 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/poster.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/seek.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/seek.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +5 -3
- package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js +12 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -0
- package/dist/dev/skins/dist/default/default/tailwind/components/time.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/time.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +35 -13
- 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 +17 -5
- package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/badge.js +6 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/badge.js.map +1 -0
- 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 +2 -2
- 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 +33 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
- 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/popup.js +3 -2
- package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +7 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.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/seek.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +5 -3
- package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js +13 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -0
- package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +30 -11
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +17 -2
- package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
- package/dist/dev/tailwind.css +42 -0
- package/dist/dev/ui/airplay-button/airplay-button.d.ts +15 -0
- package/dist/dev/ui/airplay-button/airplay-button.d.ts.map +1 -0
- package/dist/dev/ui/airplay-button/airplay-button.js +17 -0
- package/dist/dev/ui/airplay-button/airplay-button.js.map +1 -0
- package/dist/dev/ui/airplay-button/index.d.ts +2 -0
- package/dist/dev/ui/airplay-button/index.js +2 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-close.js +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-popup.js +1 -1
- package/dist/dev/ui/audio-track/index.d.ts +2 -0
- package/dist/dev/ui/audio-track/index.js +2 -0
- package/dist/dev/ui/audio-track/use-audio-track-options.d.ts +25 -0
- package/dist/dev/ui/audio-track/use-audio-track-options.d.ts.map +1 -0
- package/dist/dev/ui/audio-track/use-audio-track-options.js +34 -0
- package/dist/dev/ui/audio-track/use-audio-track-options.js.map +1 -0
- package/dist/dev/ui/captions-radio-group/index.d.ts +2 -0
- package/dist/dev/ui/captions-radio-group/index.js +2 -0
- package/dist/dev/ui/captions-radio-group/use-captions-options.d.ts +26 -0
- package/dist/dev/ui/captions-radio-group/use-captions-options.d.ts.map +1 -0
- package/dist/dev/ui/captions-radio-group/use-captions-options.js +40 -0
- package/dist/dev/ui/captions-radio-group/use-captions-options.js.map +1 -0
- package/dist/dev/ui/controls/context.js +4 -1
- package/dist/dev/ui/controls/context.js.map +1 -1
- package/dist/dev/ui/create-media-button.js +23 -10
- package/dist/dev/ui/create-media-button.js.map +1 -1
- package/dist/dev/ui/error-dialog/error-dialog-description.js +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/hooks/use-button.d.ts +2 -1
- package/dist/dev/ui/hooks/use-button.d.ts.map +1 -1
- package/dist/dev/ui/hooks/use-button.js.map +1 -1
- 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/hotkey/use-hotkey-shortcut.d.ts +7 -0
- package/dist/dev/ui/hotkey/use-hotkey-shortcut.d.ts.map +1 -0
- package/dist/dev/ui/hotkey/use-hotkey-shortcut.js +28 -0
- package/dist/dev/ui/hotkey/use-hotkey-shortcut.js.map +1 -0
- package/dist/dev/ui/hotkey/use-hotkey.js +1 -2
- package/dist/dev/ui/hotkey/use-hotkey.js.map +1 -1
- 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 +43 -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 +44 -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 +22 -0
- package/dist/dev/ui/menu/index.parts.d.ts.map +1 -0
- package/dist/dev/ui/menu/index.parts.js +36 -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 +30 -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 +49 -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 +302 -0
- package/dist/dev/ui/menu/menu-content.js.map +1 -0
- package/dist/dev/ui/menu/menu-group-label.d.ts +15 -0
- package/dist/dev/ui/menu/menu-group-label.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-group-label.js +29 -0
- package/dist/dev/ui/menu/menu-group-label.js.map +1 -0
- package/dist/dev/ui/menu/menu-group.d.ts +15 -0
- package/dist/dev/ui/menu/menu-group.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-group.js +24 -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 +23 -0
- package/dist/dev/ui/menu/menu-item-indicator.js.map +1 -0
- package/dist/dev/ui/menu/menu-item-setting-provider.js +72 -0
- package/dist/dev/ui/menu/menu-item-setting-provider.js.map +1 -0
- package/dist/dev/ui/menu/menu-item-type.d.ts +5 -0
- package/dist/dev/ui/menu/menu-item-type.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-item-value.d.ts +14 -0
- package/dist/dev/ui/menu/menu-item-value.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-item-value.js +28 -0
- package/dist/dev/ui/menu/menu-item-value.js.map +1 -0
- package/dist/dev/ui/menu/menu-item.d.ts +23 -0
- package/dist/dev/ui/menu/menu-item.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-item.js +74 -0
- package/dist/dev/ui/menu/menu-item.js.map +1 -0
- package/dist/dev/ui/menu/menu-radio-group.d.ts +20 -0
- package/dist/dev/ui/menu/menu-radio-group.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-radio-group.js +30 -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 +56 -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 +22 -0
- package/dist/dev/ui/menu/menu-separator.js.map +1 -0
- package/dist/dev/ui/menu/menu-trigger.d.ts +25 -0
- package/dist/dev/ui/menu/menu-trigger.d.ts.map +1 -0
- package/dist/dev/ui/menu/menu-trigger.js +180 -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/menu/use-menu-group.js +31 -0
- package/dist/dev/ui/menu/use-menu-group.js.map +1 -0
- package/dist/dev/ui/playback-rate/index.d.ts +2 -0
- package/dist/dev/ui/playback-rate/index.js +2 -0
- package/dist/dev/ui/playback-rate/use-playback-rate-options.d.ts +28 -0
- package/dist/dev/ui/playback-rate/use-playback-rate-options.d.ts.map +1 -0
- package/dist/dev/ui/playback-rate/use-playback-rate-options.js +37 -0
- package/dist/dev/ui/playback-rate/use-playback-rate-options.js.map +1 -0
- package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts.map +1 -1
- package/dist/dev/ui/playback-rate-button/playback-rate-button.js +2 -1
- package/dist/dev/ui/playback-rate-button/playback-rate-button.js.map +1 -1
- 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/poster/poster.d.ts.map +1 -1
- package/dist/dev/ui/poster/poster.js +17 -3
- package/dist/dev/ui/poster/poster.js.map +1 -1
- package/dist/dev/ui/quality/index.d.ts +2 -0
- package/dist/dev/ui/quality/index.js +2 -0
- package/dist/dev/ui/quality/use-quality-options.d.ts +27 -0
- package/dist/dev/ui/quality/use-quality-options.d.ts.map +1 -0
- package/dist/dev/ui/quality/use-quality-options.js +40 -0
- package/dist/dev/ui/quality/use-quality-options.js.map +1 -0
- package/dist/dev/ui/seek-button/seek-button.d.ts.map +1 -1
- package/dist/dev/ui/seek-button/seek-button.js +3 -1
- package/dist/dev/ui/seek-button/seek-button.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/time/time-value.d.ts.map +1 -1
- package/dist/dev/ui/time/time-value.js +32 -5
- package/dist/dev/ui/time/time-value.js.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-root.d.ts.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-root.js +18 -6
- package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -1
- package/dist/dev/ui/tooltip/context.d.ts +10 -4
- 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/index.d.ts +2 -2
- package/dist/dev/ui/tooltip/index.parts.d.ts +3 -1
- package/dist/dev/ui/tooltip/index.parts.js +4 -0
- package/dist/dev/ui/tooltip/index.parts.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-arrow.js +1 -1
- package/dist/dev/ui/tooltip/tooltip-label.d.ts +15 -0
- package/dist/dev/ui/tooltip/tooltip-label.d.ts.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-label.js +24 -0
- package/dist/dev/ui/tooltip/tooltip-label.js.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-popup.js +26 -9
- 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 +17 -5
- package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-shortcut.d.ts +15 -0
- package/dist/dev/ui/tooltip/tooltip-shortcut.d.ts.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-shortcut.js +25 -0
- package/dist/dev/ui/tooltip/tooltip-shortcut.js.map +1 -0
- 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-attach-iframe.js +14 -0
- package/dist/dev/utils/use-attach-iframe.js.map +1 -0
- package/dist/dev/utils/use-media-instance.d.ts +7 -2
- package/dist/dev/utils/use-media-instance.d.ts.map +1 -1
- package/dist/dev/utils/use-media-instance.js +11 -3
- package/dist/dev/utils/use-media-instance.js.map +1 -1
- package/dist/dev/utils/use-render.d.ts.map +1 -1
- package/dist/dev/utils/use-render.js +1 -1
- 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/cast.md +162 -0
- package/docs/concepts/features.md +131 -0
- package/docs/concepts/overview.md +119 -0
- package/docs/concepts/presets.md +230 -0
- package/docs/concepts/skins.md +2679 -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 +7864 -0
- package/docs/how-to/installation.md +170 -0
- package/docs/llms.txt +113 -0
- package/docs/reference/airplay-button.md +264 -0
- package/docs/reference/audio-track-radio-group.md +59 -0
- package/docs/reference/background-video.md +76 -0
- package/docs/reference/buffering-indicator.md +152 -0
- package/docs/reference/captions-button.md +216 -0
- package/docs/reference/cast-button.md +236 -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/dash-video.md +138 -0
- package/docs/reference/feature-audio-track.md +60 -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 +111 -0
- package/docs/reference/feature-live.md +62 -0
- package/docs/reference/feature-orientation-lock.md +35 -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-quality.md +70 -0
- package/docs/reference/feature-remote-playback.md +76 -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 +114 -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/hlsjs-video.md +274 -0
- package/docs/reference/menu.md +1194 -0
- package/docs/reference/mute-button.md +276 -0
- package/docs/reference/mux-audio.md +218 -0
- package/docs/reference/mux-video.md +275 -0
- package/docs/reference/native-hls-video.md +212 -0
- package/docs/reference/pip-button.md +212 -0
- package/docs/reference/play-button.md +224 -0
- package/docs/reference/playback-rate-button.md +185 -0
- package/docs/reference/player-container.md +109 -0
- package/docs/reference/player-provider.md +104 -0
- package/docs/reference/popover.md +527 -0
- package/docs/reference/poster.md +137 -0
- package/docs/reference/quality-radio-group.md +59 -0
- package/docs/reference/render-element.md +196 -0
- package/docs/reference/seek-button.md +213 -0
- package/docs/reference/simple-hls-audio-only.md +93 -0
- package/docs/reference/simple-hls-video.md +150 -0
- package/docs/reference/slider.md +826 -0
- package/docs/reference/thumbnail.md +322 -0
- package/docs/reference/time-slider.md +753 -0
- package/docs/reference/time.md +519 -0
- package/docs/reference/tooltip.md +715 -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 +112 -0
- package/docs/reference/use-player-context.md +93 -0
- package/docs/reference/use-player.md +241 -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
- package/dist/default/media/hls-video/index.js.map +0 -1
- package/dist/default/skins/dist/default/default/tailwind/components/preview.js +0 -12
- package/dist/default/skins/dist/default/default/tailwind/components/preview.js.map +0 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js +0 -13
- package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js.map +0 -1
- package/dist/default/ui/hotkey/use-aria-key-shortcuts.js +0 -16
- package/dist/default/ui/hotkey/use-aria-key-shortcuts.js.map +0 -1
- package/dist/dev/media/hls-video/index.d.ts +0 -15
- package/dist/dev/media/hls-video/index.d.ts.map +0 -1
- package/dist/dev/media/hls-video/index.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/preview.js +0 -12
- package/dist/dev/skins/dist/default/default/tailwind/components/preview.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js +0 -13
- package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js.map +0 -1
- package/dist/dev/ui/hotkey/use-aria-key-shortcuts.d.ts +0 -5
- package/dist/dev/ui/hotkey/use-aria-key-shortcuts.d.ts.map +0 -1
- package/dist/dev/ui/hotkey/use-aria-key-shortcuts.js +0 -16
- package/dist/dev/ui/hotkey/use-aria-key-shortcuts.js.map +0 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* -------------------------------------------------------------------------- */
|
|
2
|
+
/* Supporting @keyframes, @properties and @theme for Tailwind CSS */
|
|
3
|
+
/* -------------------------------------------------------------------------- */
|
|
4
|
+
|
|
5
|
+
/* -------------------------------------------------------------------------- */
|
|
6
|
+
/* Global @keyframes for all video skins (CSS & Tailwind) */
|
|
7
|
+
/* -------------------------------------------------------------------------- */
|
|
8
|
+
|
|
9
|
+
@keyframes media-shake {
|
|
10
|
+
0%,
|
|
11
|
+
100% {
|
|
12
|
+
translate: 0 0;
|
|
13
|
+
}
|
|
14
|
+
20% {
|
|
15
|
+
translate: -6px 0;
|
|
16
|
+
}
|
|
17
|
+
40% {
|
|
18
|
+
translate: 4px 0;
|
|
19
|
+
}
|
|
20
|
+
60% {
|
|
21
|
+
translate: -2px 0;
|
|
22
|
+
}
|
|
23
|
+
80% {
|
|
24
|
+
translate: 1px 0;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* -------------------------------------------------------------------------- */
|
|
29
|
+
/* Global @properties for all video skins (CSS & Tailwind) */
|
|
30
|
+
/* -------------------------------------------------------------------------- */
|
|
31
|
+
|
|
32
|
+
@property --media-progress-fill {
|
|
33
|
+
syntax: "<percentage>";
|
|
34
|
+
inherits: true;
|
|
35
|
+
initial-value: 0%;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@theme {
|
|
40
|
+
--animate-media-shake: media-shake 300ms ease-in-out;
|
|
41
|
+
}
|
|
42
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createMediaButton } from "../create-media-button.js";
|
|
3
|
+
import { selectRemotePlayback } from "@videojs/core/dom";
|
|
4
|
+
import { AirPlayButtonCore, AirPlayButtonDataAttrs } from "@videojs/core";
|
|
5
|
+
//#region src/ui/airplay-button/airplay-button.tsx
|
|
6
|
+
/** A button that toggles AirPlay to a remote device. */
|
|
7
|
+
const AirPlayButton = createMediaButton({
|
|
8
|
+
displayName: "AirPlayButton",
|
|
9
|
+
core: AirPlayButtonCore,
|
|
10
|
+
stateAttrMap: AirPlayButtonDataAttrs,
|
|
11
|
+
selector: selectRemotePlayback,
|
|
12
|
+
action: (core, state) => core.toggle(state)
|
|
13
|
+
});
|
|
14
|
+
//#endregion
|
|
15
|
+
export { AirPlayButton };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=airplay-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"airplay-button.js","names":[],"sources":["../../../../src/ui/airplay-button/airplay-button.tsx"],"sourcesContent":["'use client';\n\nimport { AirPlayButtonCore, AirPlayButtonDataAttrs } from '@videojs/core';\nimport { selectRemotePlayback } from '@videojs/core/dom';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { createMediaButton } from '../create-media-button';\n\nexport interface AirPlayButtonProps\n extends UIComponentProps<'button', AirPlayButtonCore.State>,\n AirPlayButtonCore.Props {}\n\n/** A button that toggles AirPlay to a remote device. */\nexport const AirPlayButton = createMediaButton<AirPlayButtonCore, AirPlayButtonProps>({\n displayName: 'AirPlayButton',\n core: AirPlayButtonCore,\n stateAttrMap: AirPlayButtonDataAttrs,\n selector: selectRemotePlayback,\n action: (core, state) => core.toggle(state),\n});\n\nexport namespace AirPlayButton {\n export type Props = AirPlayButtonProps;\n export type State = AirPlayButtonCore.State;\n}\n"],"mappings":";;;;;;AAaA,MAAa,gBAAgB,kBAAyD;CACpF,aAAa;CACb,MAAM;CACN,cAAc;CACd,UAAU;CACV,SAAS,MAAM,UAAU,KAAK,OAAO,MAAM;CAC5C,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useAlertDialogContext } from "./context.js";
|
|
3
2
|
import { renderElement } from "../../utils/use-render.js";
|
|
3
|
+
import { useAlertDialogContext } from "./context.js";
|
|
4
4
|
import { forwardRef, useCallback } from "react";
|
|
5
5
|
//#region src/ui/alert-dialog/alert-dialog-close.tsx
|
|
6
6
|
const AlertDialogClose = forwardRef(function AlertDialogClose({ render, className, style, disabled, ...elementProps }, forwardedRef) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useComposedRefs } from "../../utils/use-composed-refs.js";
|
|
3
|
-
import { useAlertDialogContext } from "./context.js";
|
|
4
3
|
import { renderElement } from "../../utils/use-render.js";
|
|
4
|
+
import { useAlertDialogContext } from "./context.js";
|
|
5
5
|
import { forwardRef, useCallback } from "react";
|
|
6
6
|
//#region src/ui/alert-dialog/alert-dialog-popup.tsx
|
|
7
7
|
const AlertDialogPopup = forwardRef(function AlertDialogPopup({ render, className, style, ...elementProps }, forwardedRef) {
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { usePlayer } from "../../player/context.js";
|
|
3
|
+
import { selectAudioTrack } from "@videojs/core/dom";
|
|
4
|
+
import { useCallback, useState } from "react";
|
|
5
|
+
import { AudioTrackRadioGroupCore } from "@videojs/core";
|
|
6
|
+
//#region src/ui/audio-track/use-audio-track-options.ts
|
|
7
|
+
function useAudioTrackOptions(props) {
|
|
8
|
+
"use no memo";
|
|
9
|
+
const media = usePlayer(selectAudioTrack);
|
|
10
|
+
const [core] = useState(() => new AudioTrackRadioGroupCore());
|
|
11
|
+
core.setProps(props ?? {});
|
|
12
|
+
const setValue = useCallback((value) => core.selectValue(media, value), [core, media]);
|
|
13
|
+
if (!media) return null;
|
|
14
|
+
core.setMedia(media);
|
|
15
|
+
const state = core.getState();
|
|
16
|
+
return {
|
|
17
|
+
state,
|
|
18
|
+
value: state.value,
|
|
19
|
+
options: state.tracks.map((track) => ({
|
|
20
|
+
value: track.value,
|
|
21
|
+
label: track.label,
|
|
22
|
+
disabled: state.disabled
|
|
23
|
+
})),
|
|
24
|
+
disabled: state.disabled,
|
|
25
|
+
setValue
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { useAudioTrackOptions };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=use-audio-track-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-audio-track-options.js","names":[],"sources":["../../../../src/ui/audio-track/use-audio-track-options.ts"],"sourcesContent":["'use client';\n\nimport { AudioTrackRadioGroupCore } from '@videojs/core';\nimport { logMissingFeature, selectAudioTrack } from '@videojs/core/dom';\nimport { useCallback, useState } from 'react';\n\nimport { usePlayer } from '../../player/context';\n\nexport interface AudioTrackOptionsProps extends AudioTrackRadioGroupCore.Props {}\n\nexport interface AudioTrackOption {\n value: string;\n label: string;\n disabled: boolean;\n}\n\nexport interface AudioTrackOptionsResult {\n state: AudioTrackRadioGroupCore.State;\n value: string;\n options: AudioTrackOption[];\n disabled: boolean;\n setValue: (value: string) => void;\n}\n\nexport function useAudioTrackOptions(props?: AudioTrackOptionsProps): AudioTrackOptionsResult | null {\n 'use no memo';\n\n const media = usePlayer(selectAudioTrack);\n const [core] = useState(() => new AudioTrackRadioGroupCore());\n\n core.setProps(props ?? {});\n\n const setValue = useCallback((value: string) => core.selectValue(media!, value), [core, media]);\n\n if (!media) {\n if (__DEV__) logMissingFeature('useAudioTrackOptions', selectAudioTrack.displayName ?? 'audioTrack');\n return null;\n }\n\n core.setMedia(media);\n const state = core.getState();\n\n return {\n state,\n value: state.value,\n options: state.tracks.map((track) => ({\n value: track.value,\n label: track.label,\n disabled: state.disabled,\n })),\n disabled: state.disabled,\n setValue,\n };\n}\n\nexport namespace useAudioTrackOptions {\n export type Props = AudioTrackOptionsProps;\n export type Result = AudioTrackOptionsResult;\n export type Option = AudioTrackOption;\n}\n"],"mappings":";;;;;;AAwBA,SAAgB,qBAAqB,OAAgE;AACnG;CAEA,MAAM,QAAQ,UAAU,iBAAiB;CACzC,MAAM,CAAC,QAAQ,eAAe,IAAI,0BAA0B,CAAC;AAE7D,MAAK,SAAS,SAAS,EAAE,CAAC;CAE1B,MAAM,WAAW,aAAa,UAAkB,KAAK,YAAY,OAAQ,MAAM,EAAE,CAAC,MAAM,MAAM,CAAC;AAE/F,KAAI,CAAC,MAEH,QAAO;AAGT,MAAK,SAAS,MAAM;CACpB,MAAM,QAAQ,KAAK,UAAU;AAE7B,QAAO;EACL;EACA,OAAO,MAAM;EACb,SAAS,MAAM,OAAO,KAAK,WAAW;GACpC,OAAO,MAAM;GACb,OAAO,MAAM;GACb,UAAU,MAAM;GACjB,EAAE;EACH,UAAU,MAAM;EAChB;EACD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { usePlayer } from "../../player/context.js";
|
|
3
|
+
import { selectTextTrack } from "@videojs/core/dom";
|
|
4
|
+
import { useCallback, useState } from "react";
|
|
5
|
+
import { CAPTIONS_OFF_VALUE, CaptionsRadioGroupCore } from "@videojs/core";
|
|
6
|
+
//#region src/ui/captions-radio-group/use-captions-options.ts
|
|
7
|
+
function useCaptionsOptions(props) {
|
|
8
|
+
"use no memo";
|
|
9
|
+
const media = usePlayer(selectTextTrack);
|
|
10
|
+
const [core] = useState(() => new CaptionsRadioGroupCore());
|
|
11
|
+
core.setProps(props ?? {});
|
|
12
|
+
const setValue = useCallback((value) => core.selectValue(media, value), [core, media]);
|
|
13
|
+
if (!media) return null;
|
|
14
|
+
core.setMedia(media);
|
|
15
|
+
const state = core.getState();
|
|
16
|
+
const showMenu = state.tracks.length > 1;
|
|
17
|
+
return {
|
|
18
|
+
state,
|
|
19
|
+
value: state.value,
|
|
20
|
+
options: [{
|
|
21
|
+
value: CAPTIONS_OFF_VALUE,
|
|
22
|
+
label: "Off",
|
|
23
|
+
disabled: state.disabled
|
|
24
|
+
}, ...state.tracks.map((track) => ({
|
|
25
|
+
value: track.value,
|
|
26
|
+
label: track.label,
|
|
27
|
+
disabled: state.disabled
|
|
28
|
+
}))],
|
|
29
|
+
disabled: state.disabled,
|
|
30
|
+
showMenu,
|
|
31
|
+
setValue
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { useCaptionsOptions };
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=use-captions-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-captions-options.js","names":[],"sources":["../../../../src/ui/captions-radio-group/use-captions-options.ts"],"sourcesContent":["'use client';\n\nimport { CAPTIONS_OFF_VALUE, CaptionsRadioGroupCore } from '@videojs/core';\nimport { logMissingFeature, selectTextTrack } from '@videojs/core/dom';\nimport { useCallback, useState } from 'react';\n\nimport { usePlayer } from '../../player/context';\n\nexport interface CaptionsOptionsProps extends CaptionsRadioGroupCore.Props {}\n\nexport interface CaptionsOption {\n value: string;\n label: string;\n disabled: boolean;\n}\n\nexport interface CaptionsOptionsResult {\n state: CaptionsRadioGroupCore.State;\n value: string;\n options: CaptionsOption[];\n disabled: boolean;\n showMenu: boolean;\n setValue: (value: string) => void;\n}\n\nexport function useCaptionsOptions(props?: CaptionsOptionsProps): CaptionsOptionsResult | null {\n 'use no memo';\n\n const media = usePlayer(selectTextTrack);\n const [core] = useState(() => new CaptionsRadioGroupCore());\n\n core.setProps(props ?? {});\n\n const setValue = useCallback((value: string) => core.selectValue(media!, value), [core, media]);\n\n if (!media) {\n if (__DEV__) logMissingFeature('useCaptionsOptions', selectTextTrack.displayName ?? 'textTrack');\n return null;\n }\n\n core.setMedia(media);\n const state = core.getState();\n const showMenu = state.tracks.length > 1;\n\n return {\n state,\n value: state.value,\n options: [\n {\n value: CAPTIONS_OFF_VALUE,\n label: 'Off',\n disabled: state.disabled,\n },\n ...state.tracks.map((track) => ({\n value: track.value,\n label: track.label,\n disabled: state.disabled,\n })),\n ],\n disabled: state.disabled,\n showMenu,\n setValue,\n };\n}\n\nexport namespace useCaptionsOptions {\n export type Props = CaptionsOptionsProps;\n export type Result = CaptionsOptionsResult;\n export type Option = CaptionsOption;\n}\n"],"mappings":";;;;;;AAyBA,SAAgB,mBAAmB,OAA4D;AAC7F;CAEA,MAAM,QAAQ,UAAU,gBAAgB;CACxC,MAAM,CAAC,QAAQ,eAAe,IAAI,wBAAwB,CAAC;AAE3D,MAAK,SAAS,SAAS,EAAE,CAAC;CAE1B,MAAM,WAAW,aAAa,UAAkB,KAAK,YAAY,OAAQ,MAAM,EAAE,CAAC,MAAM,MAAM,CAAC;AAE/F,KAAI,CAAC,MAEH,QAAO;AAGT,MAAK,SAAS,MAAM;CACpB,MAAM,QAAQ,KAAK,UAAU;CAC7B,MAAM,WAAW,MAAM,OAAO,SAAS;AAEvC,QAAO;EACL;EACA,OAAO,MAAM;EACb,SAAS,CACP;GACE,OAAO;GACP,OAAO;GACP,UAAU,MAAM;GACjB,EACD,GAAG,MAAM,OAAO,KAAK,WAAW;GAC9B,OAAO,MAAM;GACb,OAAO,MAAM;GACb,UAAU,MAAM;GACjB,EAAE,CACJ;EACD,UAAU,MAAM;EAChB;EACA;EACD"}
|
|
@@ -8,7 +8,10 @@ function useControlsContext() {
|
|
|
8
8
|
if (!ctx) throw new Error("Controls compound components must be used within a Controls.Root");
|
|
9
9
|
return ctx;
|
|
10
10
|
}
|
|
11
|
+
function useOptionalControlsContext() {
|
|
12
|
+
return useContext(ControlsContext);
|
|
13
|
+
}
|
|
11
14
|
//#endregion
|
|
12
|
-
export { ControlsContextProvider, useControlsContext };
|
|
15
|
+
export { ControlsContextProvider, useControlsContext, useOptionalControlsContext };
|
|
13
16
|
|
|
14
17
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/controls/context.tsx"],"sourcesContent":["'use client';\n\nimport type { ControlsState, StateAttrMap } from '@videojs/core';\nimport { createContext, useContext } from 'react';\n\nexport interface ControlsContextValue {\n state: ControlsState;\n stateAttrMap: StateAttrMap<ControlsState>;\n}\n\nconst ControlsContext = createContext<ControlsContextValue | null>(null);\n\nexport const ControlsContextProvider = ControlsContext.Provider;\n\nexport function useControlsContext(): ControlsContextValue {\n const ctx = useContext(ControlsContext);\n if (!ctx) throw new Error('Controls compound components must be used within a Controls.Root');\n return ctx;\n}\n"],"mappings":";;;AAUA,MAAM,kBAAkB,cAA2C,KAAK;AAExE,MAAa,0BAA0B,gBAAgB;AAEvD,SAAgB,qBAA2C;CACzD,MAAM,MAAM,WAAW,gBAAgB;AACvC,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,mEAAmE;AAC7F,QAAO"}
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/controls/context.tsx"],"sourcesContent":["'use client';\n\nimport type { ControlsState, StateAttrMap } from '@videojs/core';\nimport { createContext, useContext } from 'react';\n\nexport interface ControlsContextValue {\n state: ControlsState;\n stateAttrMap: StateAttrMap<ControlsState>;\n}\n\nconst ControlsContext = createContext<ControlsContextValue | null>(null);\n\nexport const ControlsContextProvider = ControlsContext.Provider;\n\nexport function useControlsContext(): ControlsContextValue {\n const ctx = useContext(ControlsContext);\n if (!ctx) throw new Error('Controls compound components must be used within a Controls.Root');\n return ctx;\n}\n\nexport function useOptionalControlsContext(): ControlsContextValue | null {\n return useContext(ControlsContext);\n}\n"],"mappings":";;;AAUA,MAAM,kBAAkB,cAA2C,KAAK;AAExE,MAAa,0BAA0B,gBAAgB;AAEvD,SAAgB,qBAA2C;CACzD,MAAM,MAAM,WAAW,gBAAgB;AACvC,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,mEAAmE;AAC7F,QAAO;;AAGT,SAAgB,6BAA0D;AACxE,QAAO,WAAW,gBAAgB"}
|
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
import { usePlayer } from "../player/context.js";
|
|
3
3
|
import { renderElement } from "../utils/use-render.js";
|
|
4
4
|
import { useButton } from "./hooks/use-button.js";
|
|
5
|
-
import {
|
|
5
|
+
import { useHotkeyShortcut } from "./hotkey/use-hotkey-shortcut.js";
|
|
6
|
+
import { useOptionalMenuTriggerChildContext } from "./menu/context.js";
|
|
6
7
|
import { useOptionalTooltipContext } from "./tooltip/context.js";
|
|
7
8
|
import "@videojs/core/dom";
|
|
8
9
|
import { forwardRef, useLayoutEffect, useState } from "react";
|
|
10
|
+
import { isUndefined } from "@videojs/utils/predicate";
|
|
9
11
|
//#region src/ui/create-media-button.tsx
|
|
10
12
|
/** Creates a media button React component from a core class and config. */
|
|
11
13
|
function createMediaButton(config) {
|
|
12
|
-
const { displayName, core: CoreClass, stateAttrMap, selector, action, hotkeyAction } = config;
|
|
14
|
+
const { displayName, core: CoreClass, stateAttrMap, selector, action, hotkeyAction, hotkeyValue, tooltipLabel } = config;
|
|
13
15
|
const corePropKeys = new Set(Object.keys(CoreClass.defaultProps));
|
|
14
16
|
const Component = forwardRef(function MediaButton(componentProps, forwardedRef) {
|
|
15
17
|
const { render, className, style, ...rest } = componentProps;
|
|
@@ -18,9 +20,12 @@ function createMediaButton(config) {
|
|
|
18
20
|
for (const key of Object.keys(rest)) if (corePropKeys.has(key)) coreProps[key] = rest[key];
|
|
19
21
|
else elementProps[key] = rest[key];
|
|
20
22
|
const tooltipCtx = useOptionalTooltipContext();
|
|
23
|
+
const menuTriggerChild = useOptionalMenuTriggerChildContext();
|
|
24
|
+
const setTooltipContent = tooltipCtx?.setContent;
|
|
21
25
|
const feature = usePlayer(selector);
|
|
22
|
-
const
|
|
26
|
+
const shortcut = useHotkeyShortcut(hotkeyAction, hotkeyValue?.(coreProps));
|
|
23
27
|
const [core] = useState(() => new CoreClass());
|
|
28
|
+
if (corePropKeys.has("menuTrigger") && isUndefined(coreProps.menuTrigger)) coreProps.menuTrigger = menuTriggerChild;
|
|
24
29
|
core.setProps(coreProps);
|
|
25
30
|
const { getButtonProps, buttonRef } = useButton({
|
|
26
31
|
displayName,
|
|
@@ -30,15 +35,23 @@ function createMediaButton(config) {
|
|
|
30
35
|
if (feature) core.setMedia(feature);
|
|
31
36
|
const state = feature ? core.getState() : null;
|
|
32
37
|
const label = state ? core.getLabel(state) : void 0;
|
|
38
|
+
const tooltipText = state ? tooltipLabel?.(core, state) ?? label : void 0;
|
|
33
39
|
useLayoutEffect(() => {
|
|
34
|
-
if (!
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
if (!setTooltipContent) return;
|
|
41
|
+
setTooltipContent(tooltipText ? {
|
|
42
|
+
label: tooltipText,
|
|
43
|
+
shortcut: shortcut.shortcut
|
|
44
|
+
} : void 0);
|
|
45
|
+
return () => setTooltipContent(void 0);
|
|
46
|
+
}, [
|
|
47
|
+
setTooltipContent,
|
|
48
|
+
tooltipText,
|
|
49
|
+
shortcut.shortcut
|
|
50
|
+
]);
|
|
38
51
|
if (!feature || !state) return null;
|
|
39
52
|
const attrs = {
|
|
40
53
|
...core.getAttrs(state),
|
|
41
|
-
"aria-keyshortcuts":
|
|
54
|
+
"aria-keyshortcuts": shortcut.aria
|
|
42
55
|
};
|
|
43
56
|
return renderElement("button", {
|
|
44
57
|
render,
|
|
@@ -49,9 +62,9 @@ function createMediaButton(config) {
|
|
|
49
62
|
stateAttrMap,
|
|
50
63
|
ref: [forwardedRef, buttonRef],
|
|
51
64
|
props: [
|
|
52
|
-
|
|
65
|
+
getButtonProps(),
|
|
53
66
|
elementProps,
|
|
54
|
-
|
|
67
|
+
attrs
|
|
55
68
|
]
|
|
56
69
|
});
|
|
57
70
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-media-button.js","names":[],"sources":["../../../src/ui/create-media-button.tsx"],"sourcesContent":["'use client';\n\nimport type { InferComponentState, InferMediaState, MediaButtonComponent, StateAttrMap } from '@videojs/core';\nimport { logMissingFeature } from '@videojs/core/dom';\nimport type { Selector } from '@videojs/store';\nimport type { ForwardedRef, ForwardRefExoticComponent, RefAttributes } from 'react';\nimport { forwardRef, useLayoutEffect, useState } from 'react';\n\nimport { usePlayer } from '../player/context';\nimport type { renderElement as renderElementFn } from '../utils/use-render';\nimport { renderElement } from '../utils/use-render';\nimport { useButton } from './hooks/use-button';\nimport {
|
|
1
|
+
{"version":3,"file":"create-media-button.js","names":[],"sources":["../../../src/ui/create-media-button.tsx"],"sourcesContent":["'use client';\n\nimport type { InferComponentState, InferMediaState, MediaButtonComponent, StateAttrMap } from '@videojs/core';\nimport { logMissingFeature } from '@videojs/core/dom';\nimport type { Selector } from '@videojs/store';\nimport { isUndefined } from '@videojs/utils/predicate';\nimport type { ForwardedRef, ForwardRefExoticComponent, RefAttributes } from 'react';\nimport { forwardRef, useLayoutEffect, useState } from 'react';\n\nimport { usePlayer } from '../player/context';\nimport type { renderElement as renderElementFn } from '../utils/use-render';\nimport { renderElement } from '../utils/use-render';\nimport { useButton } from './hooks/use-button';\nimport { useHotkeyShortcut } from './hotkey/use-hotkey-shortcut';\nimport { useOptionalMenuTriggerChildContext } from './menu/context';\nimport { useOptionalTooltipContext } from './tooltip/context';\n\ninterface MediaButtonConfig<Core extends Required<MediaButtonComponent>> {\n displayName: string;\n core: { new (): Core; defaultProps: Record<string, unknown> };\n stateAttrMap: StateAttrMap<InferComponentState<Core>>;\n selector: Selector<object, InferMediaState<Core> | undefined>;\n action: (core: Core, state: InferMediaState<Core>) => void;\n hotkeyAction?: string;\n hotkeyValue?: (props: Record<string, unknown>) => number | undefined;\n tooltipLabel?: (core: Core, state: InferComponentState<Core>) => string | undefined;\n}\n\n/** Creates a media button React component from a core class and config. */\nexport function createMediaButton<Core extends Required<MediaButtonComponent>, Props extends object>(\n config: MediaButtonConfig<Core>\n): ForwardRefExoticComponent<Props & RefAttributes<HTMLButtonElement>> {\n const {\n displayName,\n core: CoreClass,\n stateAttrMap,\n selector,\n action,\n hotkeyAction,\n hotkeyValue,\n tooltipLabel,\n } = config;\n\n // Props that exist in the core's defaultProps are routed to setProps; the rest go to the DOM element.\n const corePropKeys = new Set(Object.keys(CoreClass.defaultProps));\n\n const Component = forwardRef(function MediaButton(\n componentProps: Record<string, unknown>,\n forwardedRef: ForwardedRef<HTMLButtonElement>\n ) {\n const { render, className, style, ...rest } = componentProps;\n\n const coreProps: Record<string, unknown> = {};\n const elementProps: Record<string, unknown> = {};\n\n for (const key of Object.keys(rest)) {\n if (corePropKeys.has(key)) {\n coreProps[key] = rest[key];\n } else {\n elementProps[key] = rest[key];\n }\n }\n\n const tooltipCtx = useOptionalTooltipContext();\n const menuTriggerChild = useOptionalMenuTriggerChildContext();\n const setTooltipContent = tooltipCtx?.setContent;\n const feature = usePlayer(selector);\n const shortcut = useHotkeyShortcut(hotkeyAction, hotkeyValue?.(coreProps));\n\n const [core] = useState(() => new CoreClass());\n\n if (corePropKeys.has('menuTrigger') && isUndefined(coreProps.menuTrigger)) {\n coreProps.menuTrigger = menuTriggerChild;\n }\n\n core.setProps(coreProps);\n\n const { getButtonProps, buttonRef } = useButton({\n displayName,\n onActivate: () => action(core, feature!),\n isDisabled: () => !!coreProps.disabled || !feature,\n });\n\n // Derive state and label before the hooks boundary so the\n // useLayoutEffect below (called unconditionally) can reference them.\n type State = InferComponentState<Core>;\n if (feature) core.setMedia(feature);\n const state = feature ? (core.getState() as State) : null;\n const label = state ? core.getLabel(state) : undefined;\n const tooltipText = state ? (tooltipLabel?.(core, state) ?? label) : undefined;\n\n // Forward label to tooltip popup content when inside a Tooltip.Root.\n useLayoutEffect(() => {\n if (!setTooltipContent) return;\n setTooltipContent(tooltipText ? { label: tooltipText, shortcut: shortcut.shortcut } : undefined);\n return () => setTooltipContent(undefined);\n }, [setTooltipContent, tooltipText, shortcut.shortcut]);\n\n if (!feature || !state) {\n if (__DEV__) logMissingFeature(displayName, selector.displayName ?? displayName);\n return null;\n }\n\n const attrs = { ...core.getAttrs(state), 'aria-keyshortcuts': shortcut.aria };\n\n return renderElement(\n 'button',\n { render, className, style } as renderElementFn.ComponentProps<InferComponentState<Core>>,\n {\n state,\n stateAttrMap,\n ref: [forwardedRef, buttonRef],\n props: [getButtonProps(), elementProps, attrs],\n }\n );\n });\n\n Component.displayName = displayName;\n\n return Component as unknown as ForwardRefExoticComponent<Props & RefAttributes<HTMLButtonElement>>;\n}\n"],"mappings":";;;;;;;;;;;;AA6BA,SAAgB,kBACd,QACqE;CACrE,MAAM,EACJ,aACA,MAAM,WACN,cACA,UACA,QACA,cACA,aACA,iBACE;CAGJ,MAAM,eAAe,IAAI,IAAI,OAAO,KAAK,UAAU,aAAa,CAAC;CAEjE,MAAM,YAAY,WAAW,SAAS,YACpC,gBACA,cACA;EACA,MAAM,EAAE,QAAQ,WAAW,OAAO,GAAG,SAAS;EAE9C,MAAM,YAAqC,EAAE;EAC7C,MAAM,eAAwC,EAAE;AAEhD,OAAK,MAAM,OAAO,OAAO,KAAK,KAAK,CACjC,KAAI,aAAa,IAAI,IAAI,CACvB,WAAU,OAAO,KAAK;MAEtB,cAAa,OAAO,KAAK;EAI7B,MAAM,aAAa,2BAA2B;EAC9C,MAAM,mBAAmB,oCAAoC;EAC7D,MAAM,oBAAoB,YAAY;EACtC,MAAM,UAAU,UAAU,SAAS;EACnC,MAAM,WAAW,kBAAkB,cAAc,cAAc,UAAU,CAAC;EAE1E,MAAM,CAAC,QAAQ,eAAe,IAAI,WAAW,CAAC;AAE9C,MAAI,aAAa,IAAI,cAAc,IAAI,YAAY,UAAU,YAAY,CACvE,WAAU,cAAc;AAG1B,OAAK,SAAS,UAAU;EAExB,MAAM,EAAE,gBAAgB,cAAc,UAAU;GAC9C;GACA,kBAAkB,OAAO,MAAM,QAAS;GACxC,kBAAkB,CAAC,CAAC,UAAU,YAAY,CAAC;GAC5C,CAAC;AAKF,MAAI,QAAS,MAAK,SAAS,QAAQ;EACnC,MAAM,QAAQ,UAAW,KAAK,UAAU,GAAa;EACrD,MAAM,QAAQ,QAAQ,KAAK,SAAS,MAAM,GAAG,KAAA;EAC7C,MAAM,cAAc,QAAS,eAAe,MAAM,MAAM,IAAI,QAAS,KAAA;AAGrE,wBAAsB;AACpB,OAAI,CAAC,kBAAmB;AACxB,qBAAkB,cAAc;IAAE,OAAO;IAAa,UAAU,SAAS;IAAU,GAAG,KAAA,EAAU;AAChG,gBAAa,kBAAkB,KAAA,EAAU;KACxC;GAAC;GAAmB;GAAa,SAAS;GAAS,CAAC;AAEvD,MAAI,CAAC,WAAW,CAAC,MAEf,QAAO;EAGT,MAAM,QAAQ;GAAE,GAAG,KAAK,SAAS,MAAM;GAAE,qBAAqB,SAAS;GAAM;AAE7E,SAAO,cACL,UACA;GAAE;GAAQ;GAAW;GAAO,EAC5B;GACE;GACA;GACA,KAAK,CAAC,cAAc,UAAU;GAC9B,OAAO;IAAC,gBAAgB;IAAE;IAAc;IAAM;GAC/C,CACF;GACD;AAEF,WAAU,cAAc;AAExB,QAAO"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useAlertDialogContext } from "../alert-dialog/context.js";
|
|
3
2
|
import { renderElement } from "../../utils/use-render.js";
|
|
3
|
+
import { useAlertDialogContext } from "../alert-dialog/context.js";
|
|
4
4
|
import { useErrorDialogContext } from "./context.js";
|
|
5
5
|
import { forwardRef } from "react";
|
|
6
6
|
//#region src/ui/error-dialog/error-dialog-description.tsx
|
|
@@ -20,7 +20,8 @@ function Gesture({ type, action, value, pointer, region, disabled }) {
|
|
|
20
20
|
const options = {
|
|
21
21
|
pointer,
|
|
22
22
|
region,
|
|
23
|
-
action
|
|
23
|
+
action,
|
|
24
|
+
value
|
|
24
25
|
};
|
|
25
26
|
if (type === "doubletap") return createDoubleTapGesture(container, onActivate, options);
|
|
26
27
|
return createTapGesture(container, onActivate, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gesture.js","names":[],"sources":["../../../../src/ui/gesture/gesture.tsx"],"sourcesContent":["'use client';\n\nimport {\n type AnyPlayerStore,\n createDoubleTapGesture,\n createTapGesture,\n type GestureActionName,\n type GesturePointerType,\n type GestureRegion,\n resolveGestureAction,\n} from '@videojs/core/dom';\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\n\nimport { useContainer, usePlayer } from '../../player/context';\n\nexport interface GestureProps {\n type: 'tap' | 'doubletap' | (string & {});\n action: GestureActionName | (string & {});\n value?: number;\n pointer?: GesturePointerType;\n region?: GestureRegion;\n disabled?: boolean;\n}\n\nexport function Gesture({ type, action, value, pointer, region, disabled }: GestureProps): ReactNode {\n const store = usePlayer() as AnyPlayerStore;\n const container = useContainer();\n\n useEffect(() => {\n if (!container || !type || !action || disabled) return;\n\n const resolver = resolveGestureAction(action);\n if (!resolver) return;\n\n const onActivate = (event: PointerEvent) => {\n resolver({ store, value, event });\n };\n\n const options = { pointer, region, action };\n\n if (type === 'doubletap') {\n return createDoubleTapGesture(container, onActivate, options);\n }\n\n return createTapGesture(container, onActivate, options);\n }, [container, store, type, action, value, pointer, region, disabled]);\n\n return null;\n}\n\nexport namespace Gesture {\n export type Props = GestureProps;\n}\n\n/** @deprecated Use `GestureProps` instead. */\nexport type MediaGestureProps = GestureProps;\n\n/** @deprecated Use `Gesture` instead. */\nexport const MediaGesture = Gesture;\n"],"mappings":";;;;;AAyBA,SAAgB,QAAQ,EAAE,MAAM,QAAQ,OAAO,SAAS,QAAQ,YAAqC;CACnG,MAAM,QAAQ,WAAW;CACzB,MAAM,YAAY,cAAc;AAEhC,iBAAgB;AACd,MAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,SAAU;EAEhD,MAAM,WAAW,qBAAqB,OAAO;AAC7C,MAAI,CAAC,SAAU;EAEf,MAAM,cAAc,UAAwB;AAC1C,YAAS;IAAE;IAAO;IAAO;IAAO,CAAC;;EAGnC,MAAM,UAAU;GAAE;GAAS;GAAQ;GAAQ;
|
|
1
|
+
{"version":3,"file":"gesture.js","names":[],"sources":["../../../../src/ui/gesture/gesture.tsx"],"sourcesContent":["'use client';\n\nimport {\n type AnyPlayerStore,\n createDoubleTapGesture,\n createTapGesture,\n type GestureActionName,\n type GesturePointerType,\n type GestureRegion,\n resolveGestureAction,\n} from '@videojs/core/dom';\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\n\nimport { useContainer, usePlayer } from '../../player/context';\n\nexport interface GestureProps {\n type: 'tap' | 'doubletap' | (string & {});\n action: GestureActionName | (string & {});\n value?: number;\n pointer?: GesturePointerType;\n region?: GestureRegion;\n disabled?: boolean;\n}\n\nexport function Gesture({ type, action, value, pointer, region, disabled }: GestureProps): ReactNode {\n const store = usePlayer() as AnyPlayerStore;\n const container = useContainer();\n\n useEffect(() => {\n if (!container || !type || !action || disabled) return;\n\n const resolver = resolveGestureAction(action);\n if (!resolver) return;\n\n const onActivate = (event: PointerEvent) => {\n resolver({ store, value, event });\n };\n\n const options = { pointer, region, action, value };\n\n if (type === 'doubletap') {\n return createDoubleTapGesture(container, onActivate, options);\n }\n\n return createTapGesture(container, onActivate, options);\n }, [container, store, type, action, value, pointer, region, disabled]);\n\n return null;\n}\n\nexport namespace Gesture {\n export type Props = GestureProps;\n}\n\n/** @deprecated Use `GestureProps` instead. */\nexport type MediaGestureProps = GestureProps;\n\n/** @deprecated Use `Gesture` instead. */\nexport const MediaGesture = Gesture;\n"],"mappings":";;;;;AAyBA,SAAgB,QAAQ,EAAE,MAAM,QAAQ,OAAO,SAAS,QAAQ,YAAqC;CACnG,MAAM,QAAQ,WAAW;CACzB,MAAM,YAAY,cAAc;AAEhC,iBAAgB;AACd,MAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,SAAU;EAEhD,MAAM,WAAW,qBAAqB,OAAO;AAC7C,MAAI,CAAC,SAAU;EAEf,MAAM,cAAc,UAAwB;AAC1C,YAAS;IAAE;IAAO;IAAO;IAAO,CAAC;;EAGnC,MAAM,UAAU;GAAE;GAAS;GAAQ;GAAQ;GAAO;AAElD,MAAI,SAAS,YACX,QAAO,uBAAuB,WAAW,YAAY,QAAQ;AAG/D,SAAO,iBAAiB,WAAW,YAAY,QAAQ;IACtD;EAAC;EAAW;EAAO;EAAM;EAAQ;EAAO;EAAS;EAAQ;EAAS,CAAC;AAEtE,QAAO;;;AAWT,MAAa,eAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-button.js","names":[],"sources":["../../../../src/ui/hooks/use-button.ts"],"sourcesContent":["'use client';\n\nimport { createButton } from '@videojs/core/dom';\nimport type { ComponentPropsWithRef, Ref } from 'react';\nimport { useCallback } from 'react';\nimport { mergeProps } from '../../utils/merge-props';\n\nexport interface UseButtonParameters {\n displayName: string;\n onActivate: () => void;\n isDisabled: () => boolean;\n}\n\nexport interface UseButtonReturnValue {\n getButtonProps: (externalProps?: ComponentPropsWithRef<'button'>) => ComponentPropsWithRef<'button'>;\n buttonRef: Ref<HTMLElement>;\n}\n\n/**\n * Hook for button behavior with keyboard and pointer interaction.\n *\n * @example\n * ```tsx\n * const { getButtonProps, buttonRef } = useButton({\n * displayName: 'PlayButton',\n * onActivate: () => togglePlayback(),\n * isDisabled: () => disabled,\n * });\n *\n * return useRender('button', componentProps, {\n * state,\n * ref: [forwardedRef, buttonRef],\n * props: [elementProps, getButtonProps],\n * });\n * ```\n *\n * @param params - Button configuration with activation handler and disabled check.\n */\nexport function useButton(params: UseButtonParameters): UseButtonReturnValue {\n const { displayName, onActivate, isDisabled } = params;\n\n const buttonRef = useCallback(\n (element: HTMLElement | null) => {\n if (__DEV__ && element && element.tagName !== 'BUTTON') {\n console.warn(`${displayName} should render a <button> element for accessibility`);\n }\n },\n [displayName]\n );\n\n const getButtonProps = useCallback(\n (externalProps?: ComponentPropsWithRef<'button'>): ComponentPropsWithRef<'button'> => {\n const buttonProps = createButton({ onActivate, isDisabled });\n return mergeProps(buttonProps, externalProps);\n },\n [onActivate, isDisabled]\n );\n\n return { getButtonProps, buttonRef };\n}\n\nexport namespace useButton {\n export type Parameters = UseButtonParameters;\n export type ReturnValue = UseButtonReturnValue;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,SAAgB,UAAU,QAAmD;CAC3E,MAAM,EAAE,aAAa,YAAY,eAAe;CAEhD,MAAM,YAAY,aACf,YAAgC,IAKjC,CAAC,YAAY,CACd;AAUD,QAAO;EAAE,gBARc,aACpB,kBAAqF;AAEpF,UAAO,WADa,aAAa;IAAE;IAAY;IAAY,CAAC,EAC7B,cAAc;KAE/C,CAAC,YAAY,WAAW,CACzB;EAEwB;EAAW"}
|
|
1
|
+
{"version":3,"file":"use-button.js","names":[],"sources":["../../../../src/ui/hooks/use-button.ts"],"sourcesContent":["'use client';\n\nimport { createButton, type UIEvent } from '@videojs/core/dom';\nimport type { ComponentPropsWithRef, Ref } from 'react';\nimport { useCallback } from 'react';\nimport { mergeProps } from '../../utils/merge-props';\n\nexport interface UseButtonParameters {\n displayName: string;\n onActivate: (event: UIEvent) => void;\n isDisabled: () => boolean;\n}\n\nexport interface UseButtonReturnValue {\n getButtonProps: (externalProps?: ComponentPropsWithRef<'button'>) => ComponentPropsWithRef<'button'>;\n buttonRef: Ref<HTMLElement>;\n}\n\n/**\n * Hook for button behavior with keyboard and pointer interaction.\n *\n * @example\n * ```tsx\n * const { getButtonProps, buttonRef } = useButton({\n * displayName: 'PlayButton',\n * onActivate: () => togglePlayback(),\n * isDisabled: () => disabled,\n * });\n *\n * return useRender('button', componentProps, {\n * state,\n * ref: [forwardedRef, buttonRef],\n * props: [elementProps, getButtonProps],\n * });\n * ```\n *\n * @param params - Button configuration with activation handler and disabled check.\n */\nexport function useButton(params: UseButtonParameters): UseButtonReturnValue {\n const { displayName, onActivate, isDisabled } = params;\n\n const buttonRef = useCallback(\n (element: HTMLElement | null) => {\n if (__DEV__ && element && element.tagName !== 'BUTTON') {\n console.warn(`${displayName} should render a <button> element for accessibility`);\n }\n },\n [displayName]\n );\n\n const getButtonProps = useCallback(\n (externalProps?: ComponentPropsWithRef<'button'>): ComponentPropsWithRef<'button'> => {\n const buttonProps = createButton({ onActivate, isDisabled });\n return mergeProps(buttonProps, externalProps);\n },\n [onActivate, isDisabled]\n );\n\n return { getButtonProps, buttonRef };\n}\n\nexport namespace useButton {\n export type Parameters = UseButtonParameters;\n export type ReturnValue = UseButtonReturnValue;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,SAAgB,UAAU,QAAmD;CAC3E,MAAM,EAAE,aAAa,YAAY,eAAe;CAEhD,MAAM,YAAY,aACf,YAAgC,IAKjC,CAAC,YAAY,CACd;AAUD,QAAO;EAAE,gBARc,aACpB,kBAAqF;AAEpF,UAAO,WADa,aAAa;IAAE;IAAY;IAAY,CAAC,EAC7B,cAAc;KAE/C,CAAC,YAAY,WAAW,CACzB;EAEwB;EAAW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hotkey.js","names":[],"sources":["../../../../src/ui/hotkey/hotkey.tsx"],"sourcesContent":["'use client';\n\nimport {\n type AnyPlayerStore,\n createHotkey,\n type HotkeyActionName,\n isHotkeyToggleAction,\n resolveHotkeyAction,\n} from '@videojs/core/dom';\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\n\nimport { useContainer, usePlayer } from '../../player/context';\n\nexport interface HotkeyProps {\n keys: string;\n action: HotkeyActionName | (string & {});\n value?: number;\n disabled?: boolean;\n target?: 'player' | 'document';\n}\n\nexport function Hotkey({ keys, action, value, disabled, target }: HotkeyProps): ReactNode {\n const store = usePlayer() as AnyPlayerStore;\n const container = useContainer();\n\n useEffect(() => {\n if (!container || !keys || !action || disabled) return;\n\n const resolver = resolveHotkeyAction(action);\n if (!resolver) return;\n\n return createHotkey(container, {\n keys,\n action,\n target,\n disabled,\n repeatable: !isHotkeyToggleAction(action),\n onActivate: (_event, key) => {\n resolver({ store, key, value });\n },\n });\n }, [container, store, keys, action, value, disabled, target]);\n\n return null;\n}\n\nexport namespace Hotkey {\n export type Props = HotkeyProps;\n}\n\n/** @deprecated Use `HotkeyProps` instead. */\nexport type MediaHotkeyProps = HotkeyProps;\n\n/** @deprecated Use `Hotkey` instead. */\nexport const MediaHotkey = Hotkey;\n"],"mappings":";;;;;AAsBA,SAAgB,OAAO,EAAE,MAAM,QAAQ,OAAO,UAAU,UAAkC;CACxF,MAAM,QAAQ,WAAW;CACzB,MAAM,YAAY,cAAc;AAEhC,iBAAgB;AACd,MAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,SAAU;EAEhD,MAAM,WAAW,oBAAoB,OAAO;AAC5C,MAAI,CAAC,SAAU;AAEf,SAAO,aAAa,WAAW;GAC7B;GACA;GACA;GACA;GACA,YAAY,CAAC,qBAAqB,OAAO;GACzC,aAAa,QAAQ,QAAQ;AAC3B,aAAS;KAAE;KAAO;KAAK;KAAO,CAAC;;GAElC,CAAC;IACD;EAAC;EAAW;EAAO;EAAM;EAAQ;EAAO;EAAU;EAAO,CAAC;AAE7D,QAAO;;;AAWT,MAAa,cAAc"}
|
|
1
|
+
{"version":3,"file":"hotkey.js","names":[],"sources":["../../../../src/ui/hotkey/hotkey.tsx"],"sourcesContent":["'use client';\n\nimport {\n type AnyPlayerStore,\n createHotkey,\n type HotkeyActionName,\n isHotkeyToggleAction,\n resolveHotkeyAction,\n} from '@videojs/core/dom';\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\n\nimport { useContainer, usePlayer } from '../../player/context';\n\nexport interface HotkeyProps {\n keys: string;\n action: HotkeyActionName | (string & {});\n value?: number;\n disabled?: boolean;\n target?: 'player' | 'document';\n}\n\nexport function Hotkey({ keys, action, value, disabled, target }: HotkeyProps): ReactNode {\n const store = usePlayer() as AnyPlayerStore;\n const container = useContainer();\n\n useEffect(() => {\n if (!container || !keys || !action || disabled) return;\n\n const resolver = resolveHotkeyAction(action);\n if (!resolver) return;\n\n return createHotkey(container, {\n keys,\n action,\n value,\n target,\n disabled,\n repeatable: !isHotkeyToggleAction(action),\n onActivate: (_event, key) => {\n resolver({ store, key, value });\n },\n });\n }, [container, store, keys, action, value, disabled, target]);\n\n return null;\n}\n\nexport namespace Hotkey {\n export type Props = HotkeyProps;\n}\n\n/** @deprecated Use `HotkeyProps` instead. */\nexport type MediaHotkeyProps = HotkeyProps;\n\n/** @deprecated Use `Hotkey` instead. */\nexport const MediaHotkey = Hotkey;\n"],"mappings":";;;;;AAsBA,SAAgB,OAAO,EAAE,MAAM,QAAQ,OAAO,UAAU,UAAkC;CACxF,MAAM,QAAQ,WAAW;CACzB,MAAM,YAAY,cAAc;AAEhC,iBAAgB;AACd,MAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,SAAU;EAEhD,MAAM,WAAW,oBAAoB,OAAO;AAC5C,MAAI,CAAC,SAAU;AAEf,SAAO,aAAa,WAAW;GAC7B;GACA;GACA;GACA;GACA;GACA,YAAY,CAAC,qBAAqB,OAAO;GACzC,aAAa,QAAQ,QAAQ;AAC3B,aAAS;KAAE;KAAO;KAAK;KAAO,CAAC;;GAElC,CAAC;IACD;EAAC;EAAW;EAAO;EAAM;EAAQ;EAAO;EAAU;EAAO,CAAC;AAE7D,QAAO;;;AAWT,MAAa,cAAc"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useContainer } from "../../player/context.js";
|
|
3
|
+
import { getHotkeyCoordinator } from "@videojs/core/dom";
|
|
4
|
+
import { useEffect, useState } from "react";
|
|
5
|
+
//#region src/ui/hotkey/use-hotkey-shortcut.ts
|
|
6
|
+
function useHotkeyShortcut(action, value) {
|
|
7
|
+
const container = useContainer();
|
|
8
|
+
const [shortcut, setShortcut] = useState({});
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (!container || !action) {
|
|
11
|
+
setShortcut({});
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const coordinator = getHotkeyCoordinator(container);
|
|
15
|
+
const update = () => setShortcut(coordinator.getShortcut(action, value));
|
|
16
|
+
update();
|
|
17
|
+
return coordinator.subscribeShortcutChanges(update);
|
|
18
|
+
}, [
|
|
19
|
+
container,
|
|
20
|
+
action,
|
|
21
|
+
value
|
|
22
|
+
]);
|
|
23
|
+
return shortcut;
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { useHotkeyShortcut };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=use-hotkey-shortcut.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-hotkey-shortcut.js","names":[],"sources":["../../../../src/ui/hotkey/use-hotkey-shortcut.ts"],"sourcesContent":["'use client';\n\nimport { getHotkeyCoordinator, type HotkeyShortcutDetails } from '@videojs/core/dom';\nimport { useEffect, useState } from 'react';\n\nimport { useContainer } from '../../player/context';\n\nexport function useHotkeyShortcut(action: string | undefined, value?: number | undefined): HotkeyShortcutDetails {\n const container = useContainer();\n\n const [shortcut, setShortcut] = useState<HotkeyShortcutDetails>({});\n\n useEffect(() => {\n if (!container || !action) {\n setShortcut({});\n return;\n }\n\n const coordinator = getHotkeyCoordinator(container);\n const update = () => setShortcut(coordinator.getShortcut(action, value));\n\n update();\n return coordinator.subscribeShortcutChanges(update);\n }, [container, action, value]);\n\n return shortcut;\n}\n"],"mappings":";;;;;AAOA,SAAgB,kBAAkB,QAA4B,OAAmD;CAC/G,MAAM,YAAY,cAAc;CAEhC,MAAM,CAAC,UAAU,eAAe,SAAgC,EAAE,CAAC;AAEnE,iBAAgB;AACd,MAAI,CAAC,aAAa,CAAC,QAAQ;AACzB,eAAY,EAAE,CAAC;AACf;;EAGF,MAAM,cAAc,qBAAqB,UAAU;EACnD,MAAM,eAAe,YAAY,YAAY,YAAY,QAAQ,MAAM,CAAC;AAExE,UAAQ;AACR,SAAO,YAAY,yBAAyB,OAAO;IAClD;EAAC;EAAW;EAAQ;EAAM,CAAC;AAE9B,QAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-hotkey.js","names":[],"sources":["../../../../src/ui/hotkey/use-hotkey.ts"],"sourcesContent":["'use client';\n\nimport { createHotkey } from '@videojs/core/dom';\nimport { useEffect } from 'react';\n\nimport { useContainer } from '../../player/context';\nimport { useLatestRef } from '../../utils/use-latest-ref';\n\nexport interface UseHotkeyOptions {\n keys: string;\n onActivate: (event: KeyboardEvent, key: string) => void;\n target?: 'player' | 'document';\n repeatable?: boolean;\n disabled?: boolean;\n}\n\nexport function useHotkey(options: UseHotkeyOptions): void {\n const { keys, target = 'player', repeatable = true, disabled = false } = options;\n const container = useContainer();\n const onActivateRef = useLatestRef(options.onActivate);\n\n useEffect(() => {\n if (!container || !keys || disabled) return;\n\n return createHotkey(container, {\n keys,\n target,\n repeatable,\n disabled,\n onActivate: (event, key) => onActivateRef.current(event, key),\n });\n }, [container, keys, target, repeatable, disabled
|
|
1
|
+
{"version":3,"file":"use-hotkey.js","names":[],"sources":["../../../../src/ui/hotkey/use-hotkey.ts"],"sourcesContent":["'use client';\n\nimport { createHotkey } from '@videojs/core/dom';\nimport { useEffect } from 'react';\n\nimport { useContainer } from '../../player/context';\nimport { useLatestRef } from '../../utils/use-latest-ref';\n\nexport interface UseHotkeyOptions {\n keys: string;\n onActivate: (event: KeyboardEvent, key: string) => void;\n target?: 'player' | 'document';\n repeatable?: boolean;\n disabled?: boolean;\n}\n\nexport function useHotkey(options: UseHotkeyOptions): void {\n const { keys, target = 'player', repeatable = true, disabled = false } = options;\n const container = useContainer();\n const onActivateRef = useLatestRef(options.onActivate);\n\n useEffect(() => {\n if (!container || !keys || disabled) return;\n\n return createHotkey(container, {\n keys,\n target,\n repeatable,\n disabled,\n onActivate: (event, key) => onActivateRef.current(event, key),\n });\n }, [container, keys, target, repeatable, disabled]);\n}\n"],"mappings":";;;;;;AAgBA,SAAgB,UAAU,SAAiC;CACzD,MAAM,EAAE,MAAM,SAAS,UAAU,aAAa,MAAM,WAAW,UAAU;CACzE,MAAM,YAAY,cAAc;CAChC,MAAM,gBAAgB,aAAa,QAAQ,WAAW;AAEtD,iBAAgB;AACd,MAAI,CAAC,aAAa,CAAC,QAAQ,SAAU;AAErC,SAAO,aAAa,WAAW;GAC7B;GACA;GACA;GACA;GACA,aAAa,OAAO,QAAQ,cAAc,QAAQ,OAAO,IAAI;GAC9D,CAAC;IACD;EAAC;EAAW;EAAM;EAAQ;EAAY;EAAS,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useContainer } from "../../player/context.js";
|
|
3
|
+
import { useLatestRef } from "../../utils/use-latest-ref.js";
|
|
4
|
+
import { getIndicatorVisibilityCoordinator } from "@videojs/core/dom";
|
|
5
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
6
|
+
//#region src/ui/input-indicators/use-indicator-visibility.ts
|
|
7
|
+
function useIndicatorVisibility(close) {
|
|
8
|
+
const container = useContainer();
|
|
9
|
+
const closeRef = useLatestRef(close);
|
|
10
|
+
const coordinatorRef = useRef(null);
|
|
11
|
+
const [handle] = useState(() => ({ close: () => closeRef.current() }));
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
if (!container) return;
|
|
14
|
+
const coordinator = getIndicatorVisibilityCoordinator(container);
|
|
15
|
+
coordinatorRef.current = coordinator;
|
|
16
|
+
return coordinator.register(handle);
|
|
17
|
+
}, [container, handle]);
|
|
18
|
+
return useCallback(() => {
|
|
19
|
+
coordinatorRef.current?.show(handle);
|
|
20
|
+
}, [handle]);
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { useIndicatorVisibility };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=use-indicator-visibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-indicator-visibility.js","names":[],"sources":["../../../../src/ui/input-indicators/use-indicator-visibility.ts"],"sourcesContent":["'use client';\n\nimport type { IndicatorVisibilityHandle } from '@videojs/core';\nimport { getIndicatorVisibilityCoordinator } from '@videojs/core/dom';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { useContainer } from '../../player/context';\nimport { useLatestRef } from '../../utils/use-latest-ref';\n\nexport function useIndicatorVisibility(close: () => void): () => void {\n const container = useContainer();\n const closeRef = useLatestRef(close);\n const coordinatorRef = useRef<ReturnType<typeof getIndicatorVisibilityCoordinator> | null>(null);\n const [handle] = useState<IndicatorVisibilityHandle>(() => ({\n close: () => closeRef.current(),\n }));\n\n useEffect(() => {\n if (!container) return;\n\n const coordinator = getIndicatorVisibilityCoordinator(container);\n coordinatorRef.current = coordinator;\n\n return coordinator.register(handle);\n }, [container, handle]);\n\n return useCallback(() => {\n coordinatorRef.current?.show(handle);\n }, [handle]);\n}\n"],"mappings":";;;;;;AASA,SAAgB,uBAAuB,OAA+B;CACpE,MAAM,YAAY,cAAc;CAChC,MAAM,WAAW,aAAa,MAAM;CACpC,MAAM,iBAAiB,OAAoE,KAAK;CAChG,MAAM,CAAC,UAAU,gBAA2C,EAC1D,aAAa,SAAS,SAAS,EAChC,EAAE;AAEH,iBAAgB;AACd,MAAI,CAAC,UAAW;EAEhB,MAAM,cAAc,kCAAkC,UAAU;AAChE,iBAAe,UAAU;AAEzB,SAAO,YAAY,SAAS,OAAO;IAClC,CAAC,WAAW,OAAO,CAAC;AAEvB,QAAO,kBAAkB;AACvB,iBAAe,SAAS,KAAK,OAAO;IACnC,CAAC,OAAO,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useContainer, usePlayer } from "../../player/context.js";
|
|
3
|
+
import { useLatestRef } from "../../utils/use-latest-ref.js";
|
|
4
|
+
import { getMediaSnapshot, subscribeToInputActions } from "@videojs/core/dom";
|
|
5
|
+
import { useEffect } from "react";
|
|
6
|
+
//#region src/ui/input-indicators/use-input-action-subscription.ts
|
|
7
|
+
function useInputActionSubscription(callback) {
|
|
8
|
+
const container = useContainer();
|
|
9
|
+
const store = usePlayer();
|
|
10
|
+
const callbackRef = useLatestRef(callback);
|
|
11
|
+
const storeRef = useLatestRef(store);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
if (!container) return;
|
|
14
|
+
return subscribeToInputActions(container, (event) => {
|
|
15
|
+
callbackRef.current(event, getMediaSnapshot(storeRef.current));
|
|
16
|
+
});
|
|
17
|
+
}, [container]);
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { useInputActionSubscription };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=use-input-action-subscription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-input-action-subscription.js","names":[],"sources":["../../../../src/ui/input-indicators/use-input-action-subscription.ts"],"sourcesContent":["'use client';\n\nimport type { InputActionEvent, MediaSnapshot } from '@videojs/core';\nimport { getMediaSnapshot, subscribeToInputActions } from '@videojs/core/dom';\nimport { useEffect } from 'react';\n\nimport { useContainer, usePlayer } from '../../player/context';\nimport { useLatestRef } from '../../utils/use-latest-ref';\n\nexport function useInputActionSubscription(callback: (event: InputActionEvent, snapshot: MediaSnapshot) => void): void {\n const container = useContainer();\n const store = usePlayer();\n const callbackRef = useLatestRef(callback);\n const storeRef = useLatestRef(store);\n\n useEffect(() => {\n if (!container) return;\n\n return subscribeToInputActions(container, (event) => {\n callbackRef.current(event, getMediaSnapshot(storeRef.current));\n });\n }, [container]);\n}\n"],"mappings":";;;;;;AASA,SAAgB,2BAA2B,UAA4E;CACrH,MAAM,YAAY,cAAc;CAChC,MAAM,QAAQ,WAAW;CACzB,MAAM,cAAc,aAAa,SAAS;CAC1C,MAAM,WAAW,aAAa,MAAM;AAEpC,iBAAgB;AACd,MAAI,CAAC,UAAW;AAEhB,SAAO,wBAAwB,YAAY,UAAU;AACnD,eAAY,QAAQ,OAAO,iBAAiB,SAAS,QAAQ,CAAC;IAC9D;IACD,CAAC,UAAU,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useDestroy } from "../../utils/use-destroy.js";
|
|
3
|
+
import { useIndicatorVisibility } from "./use-indicator-visibility.js";
|
|
4
|
+
import { useInputActionSubscription } from "./use-input-action-subscription.js";
|
|
5
|
+
import { useRenderedIndicatorState } from "./use-rendered-indicator-state.js";
|
|
6
|
+
import { useState, useSyncExternalStore } from "react";
|
|
7
|
+
//#region src/ui/input-indicators/use-input-indicator-root.ts
|
|
8
|
+
function useInputIndicatorRoot(createCore, props, options) {
|
|
9
|
+
const [core] = useState(createCore);
|
|
10
|
+
useDestroy(core);
|
|
11
|
+
core.setProps(props);
|
|
12
|
+
const showIndicator = useIndicatorVisibility(() => core.close());
|
|
13
|
+
useInputActionSubscription((event, snapshot) => {
|
|
14
|
+
if (core.processEvent(event, snapshot)) showIndicator();
|
|
15
|
+
});
|
|
16
|
+
return useRenderedIndicatorState(useSyncExternalStore((callback) => core.state.subscribe(callback), () => core.state.current, () => core.state.current), options);
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { useInputIndicatorRoot };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=use-input-indicator-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-input-indicator-root.js","names":[],"sources":["../../../../src/ui/input-indicators/use-input-indicator-root.ts"],"sourcesContent":["'use client';\n\nimport type { IndicatorLifecycleState, InputActionEvent, MediaSnapshot } from '@videojs/core';\nimport type { State as StoreState } from '@videojs/store';\nimport { useState, useSyncExternalStore } from 'react';\n\nimport { useDestroy } from '../../utils/use-destroy';\nimport { useIndicatorVisibility } from './use-indicator-visibility';\nimport { useInputActionSubscription } from './use-input-action-subscription';\nimport { type RenderedIndicatorOptions, useRenderedIndicatorState } from './use-rendered-indicator-state';\n\ninterface InputIndicatorRootCore<IndicatorState extends IndicatorLifecycleState, Props> {\n readonly state: StoreState<IndicatorState>;\n setProps(props: Props): void;\n destroy(): void;\n close(): void;\n processEvent(event: InputActionEvent, snapshot: MediaSnapshot): boolean;\n}\n\nexport function useInputIndicatorRoot<IndicatorState extends IndicatorLifecycleState, Props>(\n createCore: () => InputIndicatorRootCore<IndicatorState, Props>,\n props: Props,\n options?: RenderedIndicatorOptions\n) {\n const [core] = useState(createCore);\n useDestroy(core);\n core.setProps(props);\n const showIndicator = useIndicatorVisibility(() => core.close());\n\n useInputActionSubscription((event, snapshot) => {\n if (core.processEvent(event, snapshot)) showIndicator();\n });\n\n const currentState = useSyncExternalStore(\n (callback) => core.state.subscribe(callback),\n () => core.state.current,\n () => core.state.current\n );\n\n return useRenderedIndicatorState(currentState, options);\n}\n"],"mappings":";;;;;;;AAmBA,SAAgB,sBACd,YACA,OACA,SACA;CACA,MAAM,CAAC,QAAQ,SAAS,WAAW;AACnC,YAAW,KAAK;AAChB,MAAK,SAAS,MAAM;CACpB,MAAM,gBAAgB,6BAA6B,KAAK,OAAO,CAAC;AAEhE,6BAA4B,OAAO,aAAa;AAC9C,MAAI,KAAK,aAAa,OAAO,SAAS,CAAE,gBAAe;GACvD;AAQF,QAAO,0BANc,sBAClB,aAAa,KAAK,MAAM,UAAU,SAAS,QACtC,KAAK,MAAM,eACX,KAAK,MAAM,QAClB,EAE8C,QAAQ"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useDestroy } from "../../utils/use-destroy.js";
|
|
3
|
+
import { createTransition } from "@videojs/core/dom";
|
|
4
|
+
import { useLayoutEffect, useRef, useState, useSyncExternalStore } from "react";
|
|
5
|
+
import { getRenderedIndicatorState, isIndicatorPresent } from "@videojs/core";
|
|
6
|
+
//#region src/ui/input-indicators/use-rendered-indicator-state.ts
|
|
7
|
+
function useRenderedIndicatorState(currentState, options = {}) {
|
|
8
|
+
const elementRef = useRef(null);
|
|
9
|
+
const currentStateRef = useRef(currentState);
|
|
10
|
+
const snapshotRef = useRef(currentState);
|
|
11
|
+
const [transition] = useState(() => createTransition());
|
|
12
|
+
useDestroy(transition);
|
|
13
|
+
currentStateRef.current = currentState;
|
|
14
|
+
const transitionState = useSyncExternalStore((callback) => transition.state.subscribe(callback), () => transition.state.current, () => transition.state.current);
|
|
15
|
+
const { generation, open } = currentState;
|
|
16
|
+
useLayoutEffect(() => {
|
|
17
|
+
if (open) {
|
|
18
|
+
const nextState = currentStateRef.current;
|
|
19
|
+
if (nextState.generation !== generation) return;
|
|
20
|
+
snapshotRef.current = nextState;
|
|
21
|
+
const transitionState = transition.state.current;
|
|
22
|
+
if (!transitionState.active || options.replayOnUpdate !== false) transition.open(elementRef.current);
|
|
23
|
+
else if (transitionState.status === "ending") transition.cancel();
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const { active, status } = transition.state.current;
|
|
27
|
+
if (active && status !== "ending") transition.close(elementRef.current);
|
|
28
|
+
}, [
|
|
29
|
+
generation,
|
|
30
|
+
open,
|
|
31
|
+
options.replayOnUpdate,
|
|
32
|
+
transition
|
|
33
|
+
]);
|
|
34
|
+
return {
|
|
35
|
+
elementRef,
|
|
36
|
+
present: isIndicatorPresent(currentState, transitionState),
|
|
37
|
+
state: getRenderedIndicatorState(currentState, snapshotRef.current, transitionState)
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { useRenderedIndicatorState };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=use-rendered-indicator-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-rendered-indicator-state.js","names":[],"sources":["../../../../src/ui/input-indicators/use-rendered-indicator-state.ts"],"sourcesContent":["'use client';\n\nimport { getRenderedIndicatorState, type IndicatorLifecycleState, isIndicatorPresent } from '@videojs/core';\nimport { createTransition } from '@videojs/core/dom';\nimport { useLayoutEffect, useRef, useState, useSyncExternalStore } from 'react';\n\nimport { useDestroy } from '../../utils/use-destroy';\n\nexport interface RenderedIndicatorOptions {\n replayOnUpdate?: boolean | undefined;\n}\n\nexport function useRenderedIndicatorState<State extends IndicatorLifecycleState>(\n currentState: State,\n options: RenderedIndicatorOptions = {}\n) {\n const elementRef = useRef<HTMLElement>(null);\n const currentStateRef = useRef(currentState);\n const snapshotRef = useRef(currentState);\n const [transition] = useState(() => createTransition());\n useDestroy(transition);\n currentStateRef.current = currentState;\n\n const transitionState = useSyncExternalStore(\n (callback) => transition.state.subscribe(callback),\n () => transition.state.current,\n () => transition.state.current\n );\n\n const { generation, open } = currentState;\n\n useLayoutEffect(() => {\n if (open) {\n const nextState = currentStateRef.current;\n if (nextState.generation !== generation) return;\n\n snapshotRef.current = nextState;\n const transitionState = transition.state.current;\n if (!transitionState.active || options.replayOnUpdate !== false) {\n void transition.open(elementRef.current);\n } else if (transitionState.status === 'ending') {\n transition.cancel();\n }\n return;\n }\n\n const { active, status } = transition.state.current;\n if (active && status !== 'ending') {\n void transition.close(elementRef.current);\n }\n }, [generation, open, options.replayOnUpdate, transition]);\n\n return {\n elementRef,\n present: isIndicatorPresent(currentState, transitionState),\n state: getRenderedIndicatorState(currentState, snapshotRef.current, transitionState),\n };\n}\n"],"mappings":";;;;;;AAYA,SAAgB,0BACd,cACA,UAAoC,EAAE,EACtC;CACA,MAAM,aAAa,OAAoB,KAAK;CAC5C,MAAM,kBAAkB,OAAO,aAAa;CAC5C,MAAM,cAAc,OAAO,aAAa;CACxC,MAAM,CAAC,cAAc,eAAe,kBAAkB,CAAC;AACvD,YAAW,WAAW;AACtB,iBAAgB,UAAU;CAE1B,MAAM,kBAAkB,sBACrB,aAAa,WAAW,MAAM,UAAU,SAAS,QAC5C,WAAW,MAAM,eACjB,WAAW,MAAM,QACxB;CAED,MAAM,EAAE,YAAY,SAAS;AAE7B,uBAAsB;AACpB,MAAI,MAAM;GACR,MAAM,YAAY,gBAAgB;AAClC,OAAI,UAAU,eAAe,WAAY;AAEzC,eAAY,UAAU;GACtB,MAAM,kBAAkB,WAAW,MAAM;AACzC,OAAI,CAAC,gBAAgB,UAAU,QAAQ,mBAAmB,MACnD,YAAW,KAAK,WAAW,QAAQ;YAC/B,gBAAgB,WAAW,SACpC,YAAW,QAAQ;AAErB;;EAGF,MAAM,EAAE,QAAQ,WAAW,WAAW,MAAM;AAC5C,MAAI,UAAU,WAAW,SAClB,YAAW,MAAM,WAAW,QAAQ;IAE1C;EAAC;EAAY;EAAM,QAAQ;EAAgB;EAAW,CAAC;AAE1D,QAAO;EACL;EACA,SAAS,mBAAmB,cAAc,gBAAgB;EAC1D,OAAO,0BAA0B,cAAc,YAAY,SAAS,gBAAgB;EACrF"}
|