@videojs/html 10.0.0 → 10.1.0
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 +2 -2
- package/dist/default/define/audio/compat-skin.css +42 -0
- package/dist/default/define/audio/compat-skin2.js +1 -1
- package/dist/default/define/audio/scaffold-skin.css +1771 -0
- package/dist/default/define/audio/scaffold-skin.js +6 -0
- package/dist/default/define/audio/scaffold-skin2.js +4 -0
- package/dist/default/define/live-audio/compat-skin.css +42 -0
- package/dist/default/define/live-audio/compat-skin2.js +1 -1
- package/dist/default/define/live-audio/scaffold-skin.css +1591 -0
- package/dist/default/define/live-audio/scaffold-skin.js +6 -0
- package/dist/default/define/live-audio/scaffold-skin2.js +4 -0
- package/dist/default/define/live-video/compat-skin.css +67 -23
- package/dist/default/define/live-video/compat-skin2.js +1 -1
- package/dist/default/define/live-video/neutral-skin.css +20 -9
- package/dist/default/define/live-video/neutral-skin2.js +1 -1
- package/dist/default/define/live-video/scaffold-skin.css +1976 -0
- package/dist/default/define/live-video/scaffold-skin.js +6 -0
- package/dist/default/define/live-video/scaffold-skin2.js +4 -0
- package/dist/default/define/live-video/skin.css +18 -7
- package/dist/default/define/live-video/skin2.js +1 -1
- package/dist/default/define/media/dash-video.js +1 -1
- package/dist/default/define/media/hls-video.js +1 -1
- package/dist/default/define/media/hlsjs-video.js +1 -1
- package/dist/default/define/media/native-hls-video.js +1 -1
- package/dist/default/define/media/playerjs-video.js +11 -0
- package/dist/default/define/video/compat-skin.css +67 -23
- package/dist/default/define/video/compat-skin2.js +1 -1
- package/dist/default/define/video/neutral-skin.css +26 -9
- package/dist/default/define/video/neutral-skin2.js +1 -1
- package/dist/default/define/video/scaffold-skin.css +2216 -0
- package/dist/default/define/video/scaffold-skin.js +6 -0
- package/dist/default/define/video/scaffold-skin2.js +4 -0
- package/dist/default/define/video/skin.css +24 -7
- package/dist/default/define/video/skin2.js +1 -1
- package/dist/default/extensions/mux-data/extension.js +1 -1
- package/dist/default/icons/dist/element/compat/icons.js +1 -1
- package/dist/default/icons/dist/element/index.js +1 -0
- package/dist/default/icons/dist/element/scaffold/icons.js +30 -0
- package/dist/default/icons/dist/element/scaffold/index.js +8 -0
- package/dist/default/icons/dist/html/compat/play.js +1 -1
- package/dist/default/icons/dist/html/scaffold/airplay-enter.js +4 -0
- package/dist/default/icons/dist/html/scaffold/airplay-exit.js +4 -0
- package/dist/default/icons/dist/html/scaffold/captions-off.js +4 -0
- package/dist/default/icons/dist/html/scaffold/captions-on.js +4 -0
- package/dist/default/icons/dist/html/scaffold/cast-enter.js +4 -0
- package/dist/default/icons/dist/html/scaffold/cast-exit.js +4 -0
- package/dist/default/icons/dist/html/scaffold/check.js +4 -0
- package/dist/default/icons/dist/html/scaffold/chevron.js +4 -0
- package/dist/default/icons/dist/html/scaffold/fullscreen-enter.js +4 -0
- package/dist/default/icons/dist/html/scaffold/fullscreen-exit.js +4 -0
- package/dist/default/icons/dist/html/scaffold/gear.js +4 -0
- package/dist/default/icons/dist/html/scaffold/pause.js +4 -0
- package/dist/default/icons/dist/html/scaffold/pip-enter.js +4 -0
- package/dist/default/icons/dist/html/scaffold/pip-exit.js +4 -0
- package/dist/default/icons/dist/html/scaffold/play.js +4 -0
- package/dist/default/icons/dist/html/scaffold/quality.js +4 -0
- package/dist/default/icons/dist/html/scaffold/restart.js +4 -0
- package/dist/default/icons/dist/html/scaffold/seek.js +4 -0
- package/dist/default/icons/dist/html/scaffold/speech.js +4 -0
- package/dist/default/icons/dist/html/scaffold/speed.js +4 -0
- package/dist/default/icons/dist/html/scaffold/spinner.js +4 -0
- package/dist/default/icons/dist/html/scaffold/switches.js +4 -0
- package/dist/default/icons/dist/html/scaffold/volume-high.js +4 -0
- package/dist/default/icons/dist/html/scaffold/volume-low.js +4 -0
- package/dist/default/icons/dist/html/scaffold/volume-off.js +4 -0
- package/dist/default/icons/element/scaffold/index.js +1 -0
- package/dist/default/icons/scaffold/index.js +26 -0
- package/dist/default/internal/skins/compat-audio/register.js +1 -0
- package/dist/default/internal/skins/compat-audio/skin.css +42 -0
- package/dist/default/internal/skins/compat-audio/template.js +18 -16
- package/dist/default/internal/skins/compat-live-audio/register.js +1 -0
- package/dist/default/internal/skins/compat-live-audio/skin.css +42 -0
- package/dist/default/internal/skins/compat-live-audio/template.js +11 -9
- package/dist/default/internal/skins/compat-live-video/skin.css +67 -23
- package/dist/default/internal/skins/compat-live-video/template.js +20 -18
- package/dist/default/internal/skins/compat-video/skin.css +67 -23
- package/dist/default/internal/skins/compat-video/template.js +34 -32
- package/dist/default/internal/skins/default-audio/template.js +12 -12
- package/dist/default/internal/skins/default-live-audio/template.js +5 -5
- package/dist/default/internal/skins/default-live-video/skin.css +18 -7
- package/dist/default/internal/skins/default-live-video/template.js +16 -16
- package/dist/default/internal/skins/default-video/skin.css +24 -7
- package/dist/default/internal/skins/default-video/template.js +26 -26
- package/dist/default/internal/skins/neutral-audio/template.js +12 -12
- package/dist/default/internal/skins/neutral-live-audio/template.js +5 -5
- package/dist/default/internal/skins/neutral-live-video/skin.css +20 -9
- package/dist/default/internal/skins/neutral-live-video/template.js +16 -16
- package/dist/default/internal/skins/neutral-video/skin.css +26 -9
- package/dist/default/internal/skins/neutral-video/template.js +26 -26
- package/dist/default/internal/skins/scaffold-audio/register.js +73 -0
- package/dist/default/internal/skins/scaffold-audio/skin.css +1739 -0
- package/dist/default/internal/skins/scaffold-audio/template.js +221 -0
- package/dist/default/internal/skins/scaffold-live-audio/register.js +53 -0
- package/dist/default/internal/skins/scaffold-live-audio/skin.css +1559 -0
- package/dist/default/internal/skins/scaffold-live-audio/template.js +118 -0
- package/dist/default/internal/skins/scaffold-live-video/register.js +86 -0
- package/dist/default/internal/skins/scaffold-live-video/skin.css +1944 -0
- package/dist/default/internal/skins/scaffold-live-video/template.js +241 -0
- package/dist/default/internal/skins/scaffold-video/register.js +115 -0
- package/dist/default/internal/skins/scaffold-video/skin.css +2184 -0
- package/dist/default/internal/skins/scaffold-video/template.js +461 -0
- package/dist/default/media/playerjs-video/adapter.js +25 -0
- package/dist/default/presets/audio/index.js +2 -1
- package/dist/default/presets/audio/scaffold-skin.js +19 -0
- package/dist/default/presets/background/skin.js +0 -2
- package/dist/default/presets/live-audio/index.js +2 -1
- package/dist/default/presets/live-audio/scaffold-skin.js +19 -0
- package/dist/default/presets/live-video/index.js +2 -1
- package/dist/default/presets/live-video/scaffold-skin.js +19 -0
- package/dist/default/presets/skin.js +0 -11
- package/dist/default/presets/video/index.js +2 -1
- package/dist/default/presets/video/scaffold-skin.js +19 -0
- package/dist/default/ui/thumbnail/element.js +2 -2
- package/dist/default/ui/time-slider/element.js +31 -7
- package/dist/default/version.js +1 -1
- package/dist/dev/define/audio/compat-skin.css +42 -0
- package/dist/dev/define/audio/compat-skin2.js +1 -1
- package/dist/dev/define/audio/compat-skin2.js.map +1 -1
- package/dist/dev/define/audio/neutral-skin2.js.map +1 -1
- package/dist/dev/define/audio/scaffold-skin.css +1771 -0
- package/dist/dev/define/audio/scaffold-skin.d.ts +1 -0
- package/dist/dev/define/audio/scaffold-skin.js +8 -0
- package/dist/dev/define/audio/scaffold-skin.js.map +1 -0
- package/dist/dev/define/audio/scaffold-skin2.js +6 -0
- package/dist/dev/define/audio/scaffold-skin2.js.map +1 -0
- package/dist/dev/define/audio/skin2.js.map +1 -1
- package/dist/dev/define/global.js.map +1 -1
- package/dist/dev/define/live-audio/compat-skin.css +42 -0
- package/dist/dev/define/live-audio/compat-skin2.js +1 -1
- package/dist/dev/define/live-audio/compat-skin2.js.map +1 -1
- package/dist/dev/define/live-audio/neutral-skin2.js.map +1 -1
- package/dist/dev/define/live-audio/scaffold-skin.css +1591 -0
- package/dist/dev/define/live-audio/scaffold-skin.d.ts +1 -0
- package/dist/dev/define/live-audio/scaffold-skin.js +8 -0
- package/dist/dev/define/live-audio/scaffold-skin.js.map +1 -0
- package/dist/dev/define/live-audio/scaffold-skin2.js +6 -0
- package/dist/dev/define/live-audio/scaffold-skin2.js.map +1 -0
- package/dist/dev/define/live-audio/skin2.js.map +1 -1
- package/dist/dev/define/live-video/compat-skin.css +67 -23
- package/dist/dev/define/live-video/compat-skin2.js +1 -1
- package/dist/dev/define/live-video/compat-skin2.js.map +1 -1
- package/dist/dev/define/live-video/neutral-skin.css +20 -9
- package/dist/dev/define/live-video/neutral-skin2.js +1 -1
- package/dist/dev/define/live-video/neutral-skin2.js.map +1 -1
- package/dist/dev/define/live-video/scaffold-skin.css +1976 -0
- package/dist/dev/define/live-video/scaffold-skin.d.ts +1 -0
- package/dist/dev/define/live-video/scaffold-skin.js +8 -0
- package/dist/dev/define/live-video/scaffold-skin.js.map +1 -0
- package/dist/dev/define/live-video/scaffold-skin2.js +6 -0
- package/dist/dev/define/live-video/scaffold-skin2.js.map +1 -0
- package/dist/dev/define/live-video/skin.css +18 -7
- package/dist/dev/define/live-video/skin2.js +1 -1
- package/dist/dev/define/live-video/skin2.js.map +1 -1
- package/dist/dev/define/media/dash-video.d.ts +1 -1
- package/dist/dev/define/media/dash-video.js +1 -1
- package/dist/dev/define/media/dash-video.js.map +1 -1
- package/dist/dev/define/media/hls-video.d.ts +1 -1
- package/dist/dev/define/media/hls-video.js +1 -1
- package/dist/dev/define/media/hls-video.js.map +1 -1
- package/dist/dev/define/media/hlsjs-video.d.ts +1 -1
- package/dist/dev/define/media/hlsjs-video.js +1 -1
- package/dist/dev/define/media/hlsjs-video.js.map +1 -1
- package/dist/dev/define/media/native-hls-video.d.ts +1 -1
- package/dist/dev/define/media/native-hls-video.js +1 -1
- package/dist/dev/define/media/native-hls-video.js.map +1 -1
- package/dist/dev/define/media/playerjs-video.d.ts +15 -0
- package/dist/dev/define/media/playerjs-video.js +13 -0
- package/dist/dev/define/media/playerjs-video.js.map +1 -0
- package/dist/dev/define/video/compat-skin.css +67 -23
- package/dist/dev/define/video/compat-skin2.js +1 -1
- package/dist/dev/define/video/compat-skin2.js.map +1 -1
- package/dist/dev/define/video/neutral-skin.css +26 -9
- package/dist/dev/define/video/neutral-skin2.js +1 -1
- package/dist/dev/define/video/neutral-skin2.js.map +1 -1
- package/dist/dev/define/video/scaffold-skin.css +2216 -0
- package/dist/dev/define/video/scaffold-skin.d.ts +1 -0
- package/dist/dev/define/video/scaffold-skin.js +8 -0
- package/dist/dev/define/video/scaffold-skin.js.map +1 -0
- package/dist/dev/define/video/scaffold-skin2.js +6 -0
- package/dist/dev/define/video/scaffold-skin2.js.map +1 -0
- package/dist/dev/define/video/skin.css +24 -7
- package/dist/dev/define/video/skin2.js +1 -1
- package/dist/dev/define/video/skin2.js.map +1 -1
- package/dist/dev/extensions/mux-data/extension.d.ts +1 -1
- package/dist/dev/extensions/mux-data/extension.js +1 -1
- package/dist/dev/extensions/mux-data/extension.js.map +1 -1
- package/dist/dev/icons/dist/element/compat/icons.js +1 -1
- package/dist/dev/icons/dist/element/compat/icons.js.map +1 -1
- package/dist/dev/icons/dist/element/index.js +1 -0
- package/dist/dev/icons/dist/element/index.js.map +1 -1
- package/dist/dev/icons/dist/element/scaffold/icons.js +32 -0
- package/dist/dev/icons/dist/element/scaffold/icons.js.map +1 -0
- package/dist/dev/icons/dist/element/scaffold/index.d.ts +1 -0
- package/dist/dev/icons/dist/element/scaffold/index.js +10 -0
- package/dist/dev/icons/dist/element/scaffold/index.js.map +1 -0
- package/dist/dev/icons/dist/html/compat/play.js +1 -1
- package/dist/dev/icons/dist/html/compat/play.js.map +1 -1
- package/dist/dev/icons/dist/html/scaffold/airplay-enter.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/airplay-enter.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/airplay-exit.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/airplay-exit.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/captions-off.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/captions-off.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/captions-on.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/captions-on.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/cast-enter.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/cast-enter.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/cast-exit.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/cast-exit.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/check.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/check.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/chevron.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/chevron.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/fullscreen-enter.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/fullscreen-enter.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/fullscreen-exit.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/fullscreen-exit.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/gear.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/gear.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/index.d.ts +28 -0
- package/dist/dev/icons/dist/html/scaffold/pause.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/pause.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/pip-enter.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/pip-enter.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/pip-exit.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/pip-exit.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/play.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/play.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/quality.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/quality.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/restart.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/restart.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/seek.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/seek.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/speech.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/speech.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/speed.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/speed.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/spinner.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/spinner.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/switches.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/switches.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/volume-high.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/volume-high.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/volume-low.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/volume-low.js.map +1 -0
- package/dist/dev/icons/dist/html/scaffold/volume-off.js +6 -0
- package/dist/dev/icons/dist/html/scaffold/volume-off.js.map +1 -0
- package/dist/dev/icons/element/scaffold/index.d.ts +1 -0
- package/dist/dev/icons/element/scaffold/index.js +1 -0
- package/dist/dev/icons/scaffold/index.d.ts +2 -0
- package/dist/dev/icons/scaffold/index.js +26 -0
- package/dist/dev/index.d.ts +3 -3
- package/dist/dev/internal/skins/compat-audio/register.d.ts +1 -0
- package/dist/dev/internal/skins/compat-audio/register.js +1 -0
- package/dist/dev/internal/skins/compat-audio/register.js.map +1 -1
- package/dist/dev/internal/skins/compat-audio/skin.css +42 -0
- package/dist/dev/internal/skins/compat-audio/template.js +18 -16
- package/dist/dev/internal/skins/compat-audio/template.js.map +1 -1
- package/dist/dev/internal/skins/compat-live-audio/register.d.ts +1 -0
- package/dist/dev/internal/skins/compat-live-audio/register.js +1 -0
- package/dist/dev/internal/skins/compat-live-audio/register.js.map +1 -1
- package/dist/dev/internal/skins/compat-live-audio/skin.css +42 -0
- package/dist/dev/internal/skins/compat-live-audio/template.js +11 -9
- package/dist/dev/internal/skins/compat-live-audio/template.js.map +1 -1
- package/dist/dev/internal/skins/compat-live-video/register.d.ts +1 -1
- package/dist/dev/internal/skins/compat-live-video/skin.css +67 -23
- package/dist/dev/internal/skins/compat-live-video/template.js +20 -18
- package/dist/dev/internal/skins/compat-live-video/template.js.map +1 -1
- package/dist/dev/internal/skins/compat-video/register.d.ts +1 -1
- package/dist/dev/internal/skins/compat-video/skin.css +67 -23
- package/dist/dev/internal/skins/compat-video/template.js +34 -32
- package/dist/dev/internal/skins/compat-video/template.js.map +1 -1
- package/dist/dev/internal/skins/default-audio/register.d.ts +2 -2
- package/dist/dev/internal/skins/default-audio/template.js +12 -12
- package/dist/dev/internal/skins/default-audio/template.js.map +1 -1
- package/dist/dev/internal/skins/default-live-audio/register.d.ts +1 -1
- package/dist/dev/internal/skins/default-live-audio/template.js +5 -5
- package/dist/dev/internal/skins/default-live-audio/template.js.map +1 -1
- package/dist/dev/internal/skins/default-live-video/register.d.ts +1 -1
- package/dist/dev/internal/skins/default-live-video/skin.css +18 -7
- package/dist/dev/internal/skins/default-live-video/template.js +16 -16
- package/dist/dev/internal/skins/default-live-video/template.js.map +1 -1
- package/dist/dev/internal/skins/default-video/register.d.ts +1 -1
- package/dist/dev/internal/skins/default-video/skin.css +24 -7
- package/dist/dev/internal/skins/default-video/template.js +26 -26
- package/dist/dev/internal/skins/default-video/template.js.map +1 -1
- package/dist/dev/internal/skins/neutral-audio/register.d.ts +2 -2
- package/dist/dev/internal/skins/neutral-audio/template.js +12 -12
- package/dist/dev/internal/skins/neutral-audio/template.js.map +1 -1
- package/dist/dev/internal/skins/neutral-live-audio/register.d.ts +1 -1
- package/dist/dev/internal/skins/neutral-live-audio/template.js +5 -5
- package/dist/dev/internal/skins/neutral-live-audio/template.js.map +1 -1
- package/dist/dev/internal/skins/neutral-live-video/register.d.ts +1 -1
- package/dist/dev/internal/skins/neutral-live-video/skin.css +20 -9
- package/dist/dev/internal/skins/neutral-live-video/template.js +16 -16
- package/dist/dev/internal/skins/neutral-live-video/template.js.map +1 -1
- package/dist/dev/internal/skins/neutral-video/register.d.ts +1 -1
- package/dist/dev/internal/skins/neutral-video/skin.css +26 -9
- package/dist/dev/internal/skins/neutral-video/template.js +26 -26
- package/dist/dev/internal/skins/neutral-video/template.js.map +1 -1
- package/dist/dev/internal/skins/scaffold-audio/register.d.ts +44 -0
- package/dist/dev/internal/skins/scaffold-audio/register.js +75 -0
- package/dist/dev/internal/skins/scaffold-audio/register.js.map +1 -0
- package/dist/dev/internal/skins/scaffold-audio/skin.css +1739 -0
- package/dist/dev/internal/skins/scaffold-audio/template.js +223 -0
- package/dist/dev/internal/skins/scaffold-audio/template.js.map +1 -0
- package/dist/dev/internal/skins/scaffold-live-audio/register.d.ts +28 -0
- package/dist/dev/internal/skins/scaffold-live-audio/register.js +55 -0
- package/dist/dev/internal/skins/scaffold-live-audio/register.js.map +1 -0
- package/dist/dev/internal/skins/scaffold-live-audio/skin.css +1559 -0
- package/dist/dev/internal/skins/scaffold-live-audio/template.js +120 -0
- package/dist/dev/internal/skins/scaffold-live-audio/template.js.map +1 -0
- package/dist/dev/internal/skins/scaffold-live-video/register.d.ts +45 -0
- package/dist/dev/internal/skins/scaffold-live-video/register.js +88 -0
- package/dist/dev/internal/skins/scaffold-live-video/register.js.map +1 -0
- package/dist/dev/internal/skins/scaffold-live-video/skin.css +1944 -0
- package/dist/dev/internal/skins/scaffold-live-video/template.js +243 -0
- package/dist/dev/internal/skins/scaffold-live-video/template.js.map +1 -0
- package/dist/dev/internal/skins/scaffold-video/register.d.ts +62 -0
- package/dist/dev/internal/skins/scaffold-video/register.js +117 -0
- package/dist/dev/internal/skins/scaffold-video/register.js.map +1 -0
- package/dist/dev/internal/skins/scaffold-video/skin.css +2184 -0
- package/dist/dev/internal/skins/scaffold-video/template.js +463 -0
- package/dist/dev/internal/skins/scaffold-video/template.js.map +1 -0
- package/dist/dev/media/playerjs-video/adapter.d.ts +11 -0
- package/dist/dev/media/playerjs-video/adapter.js +61 -0
- package/dist/dev/media/playerjs-video/adapter.js.map +1 -0
- package/dist/dev/media/playerjs-video/index.d.ts +2 -0
- package/dist/dev/presets/audio/index.d.ts +2 -1
- package/dist/dev/presets/audio/index.js +2 -1
- package/dist/dev/presets/audio/scaffold-skin.d.ts +15 -0
- package/dist/dev/presets/audio/scaffold-skin.js +21 -0
- package/dist/dev/presets/audio/scaffold-skin.js.map +1 -0
- package/dist/dev/presets/background/skin.js +0 -2
- package/dist/dev/presets/background/skin.js.map +1 -1
- package/dist/dev/presets/live-audio/index.d.ts +2 -1
- package/dist/dev/presets/live-audio/index.js +2 -1
- package/dist/dev/presets/live-audio/scaffold-skin.d.ts +15 -0
- package/dist/dev/presets/live-audio/scaffold-skin.js +21 -0
- package/dist/dev/presets/live-audio/scaffold-skin.js.map +1 -0
- package/dist/dev/presets/live-video/index.d.ts +2 -1
- package/dist/dev/presets/live-video/index.js +2 -1
- package/dist/dev/presets/live-video/scaffold-skin.d.ts +15 -0
- package/dist/dev/presets/live-video/scaffold-skin.js +21 -0
- package/dist/dev/presets/live-video/scaffold-skin.js.map +1 -0
- package/dist/dev/presets/skin.js +0 -11
- package/dist/dev/presets/skin.js.map +1 -1
- package/dist/dev/presets/video/index.d.ts +2 -1
- package/dist/dev/presets/video/index.js +2 -1
- package/dist/dev/presets/video/scaffold-skin.d.ts +15 -0
- package/dist/dev/presets/video/scaffold-skin.js +21 -0
- package/dist/dev/presets/video/scaffold-skin.js.map +1 -0
- package/dist/dev/ui/thumbnail/element.js +2 -2
- package/dist/dev/ui/thumbnail/element.js.map +1 -1
- package/dist/dev/ui/time-slider/element.js +31 -7
- package/dist/dev/ui/time-slider/element.js.map +1 -1
- package/dist/dev/version.js +1 -1
- package/docs/README.md +1 -1
- package/docs/guides/architecture.md +3 -3
- package/docs/guides/autoplay.md +3 -3
- package/docs/guides/build-with-ai.md +1 -1
- package/docs/guides/captions.md +5 -5
- package/docs/guides/casting.md +5 -5
- package/docs/guides/cdn.md +11 -11
- package/docs/guides/customize-skins.md +2 -2
- package/docs/guides/features.md +1 -1
- package/docs/guides/fullscreen.md +1 -1
- package/docs/guides/installation-cdn.md +4 -4
- package/docs/guides/installation-shadcn.md +6 -6
- package/docs/guides/installation-svelte.md +5 -5
- package/docs/guides/installation-vue.md +5 -5
- package/docs/guides/installation.md +5 -5
- package/docs/guides/internationalization.md +5 -5
- package/docs/guides/live-streams.md +3 -3
- package/docs/guides/llms.txt +5 -4
- package/docs/guides/media-sources.md +3 -2
- package/docs/guides/migrate-from-media-chrome.md +4 -4
- package/docs/guides/migrate-from-mux-player.md +7 -7
- package/docs/guides/migrate-from-plyr.md +8 -8
- package/docs/guides/migrate-from-video-js-8.md +18 -10
- package/docs/guides/migrate-from-vidstack.md +9 -9
- package/docs/guides/migrate.md +18 -0
- package/docs/guides/mux-data.md +1 -1
- package/docs/guides/playback-errors.md +4 -4
- package/docs/guides/presets.md +13 -13
- package/docs/guides/quality.md +3 -3
- package/docs/guides/self-hosting.md +8 -8
- package/docs/guides/skins.md +6 -6
- package/docs/guides/thumbnails.md +2 -2
- package/docs/guides/user-preferences.md +2 -2
- package/docs/guides/v10-roadmap.md +2 -2
- package/docs/guides/why-videojs.md +3 -3
- package/docs/llms.txt +10 -4
- package/docs/reference/api/error-codes.md +1 -1
- package/docs/reference/api/feature-fullscreen.md +2 -2
- package/docs/reference/api/feature-metadata.md +2 -2
- package/docs/reference/api/feature-source.md +1 -1
- package/docs/reference/api/feature-text-tracks.md +2 -2
- package/docs/reference/api/llms.txt +1 -1
- package/docs/reference/api/media-capabilities.md +1 -1
- package/docs/reference/api/player-store.md +3 -3
- package/docs/reference/api/preset-audio.md +2 -2
- package/docs/reference/api/preset-background.md +3 -3
- package/docs/reference/api/preset-live-audio.md +3 -3
- package/docs/reference/api/preset-live-video.md +3 -3
- package/docs/reference/api/preset-video.md +2 -2
- package/docs/reference/api/resolve-adapter-type.md +2 -2
- package/docs/reference/api/vjs8-legacy-init.md +2 -2
- package/docs/reference/api/vjs8-legacy-options.md +1 -1
- package/docs/reference/components/audio-compat-skin.md +33 -3
- package/docs/reference/components/audio-neutral-skin.md +34 -4
- package/docs/reference/components/audio-scaffold-skin.md +39 -0
- package/docs/reference/components/audio-skin.md +34 -4
- package/docs/reference/components/audio.md +1 -1
- package/docs/reference/components/background-video-skin.md +36 -4
- package/docs/reference/components/background-video.md +1 -1
- package/docs/reference/components/cast-button.md +1 -1
- package/docs/reference/components/cloudflare-video.md +1 -1
- package/docs/reference/components/dash-video.md +1 -1
- package/docs/reference/components/google-cast.md +1 -1
- package/docs/reference/components/hls-audio.md +3 -2
- package/docs/reference/components/hls-background-video.md +1 -1
- package/docs/reference/components/hls-video.md +13 -2
- package/docs/reference/components/hlsjs-video.md +11 -1
- package/docs/reference/components/icons.md +2 -1
- package/docs/reference/components/live-audio-compat-skin.md +35 -4
- package/docs/reference/components/live-audio-neutral-skin.md +36 -5
- package/docs/reference/components/live-audio-scaffold-skin.md +41 -0
- package/docs/reference/components/live-audio-skin.md +36 -5
- package/docs/reference/components/live-video-compat-skin.md +36 -4
- package/docs/reference/components/live-video-neutral-skin.md +37 -5
- package/docs/reference/components/live-video-scaffold-skin.md +47 -0
- package/docs/reference/components/live-video-skin.md +37 -5
- package/docs/reference/components/llms.txt +6 -1
- package/docs/reference/components/mux-audio.md +2 -2
- package/docs/reference/components/mux-background-video.md +1 -1
- package/docs/reference/components/mux-data.md +1 -1
- package/docs/reference/components/mux-video.md +2 -2
- package/docs/reference/components/native-hls-video.md +1 -1
- package/docs/reference/components/player-container.md +1 -1
- package/docs/reference/components/player.md +4 -4
- package/docs/reference/components/playerjs-video.md +197 -0
- package/docs/reference/components/shaka-video.md +1 -1
- package/docs/reference/components/spotify-audio.md +1 -1
- package/docs/reference/components/thumbnail.md +5 -5
- package/docs/reference/components/tiktok-video.md +1 -1
- package/docs/reference/components/twitch-video.md +1 -1
- package/docs/reference/components/video-compat-skin.md +36 -3
- package/docs/reference/components/video-neutral-skin.md +37 -4
- package/docs/reference/components/video-scaffold-skin.md +51 -0
- package/docs/reference/components/video-skin.md +37 -4
- package/docs/reference/components/video.md +1 -1
- package/docs/reference/components/vimeo-video.md +1 -1
- package/docs/reference/components/wistia-video.md +5 -1
- package/docs/reference/components/youtube-video.md +2 -2
- package/package.json +44 -41
|
@@ -13,17 +13,17 @@ import '@videojs/html/background/skin';
|
|
|
13
13
|
The import registers the skin and every UI element it composes. The [CDN](../../guides/cdn.md) player bundle registers this skin together with its player:
|
|
14
14
|
|
|
15
15
|
```html
|
|
16
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.
|
|
16
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.1.0/background.js"></script>
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
##
|
|
19
|
+
## Anatomy
|
|
20
20
|
|
|
21
|
-
The skin goes between the player and the media
|
|
21
|
+
The skin goes between the player and the media component. It sizes the ambient video and renders no visible controls.
|
|
22
22
|
|
|
23
23
|
```html
|
|
24
24
|
<background-video-player>
|
|
25
25
|
<background-video-skin>
|
|
26
|
-
<background-video
|
|
26
|
+
<background-video></background-video>
|
|
27
27
|
</background-video-skin>
|
|
28
28
|
</background-video-player>
|
|
29
29
|
```
|
|
@@ -32,6 +32,38 @@ The skin goes between the player and the media element. It sizes the ambient vid
|
|
|
32
32
|
|
|
33
33
|
Packaged skins style themselves and expose a small set of public CSS custom properties. Everything else inside the skin is private and may change between releases. [Customize skins](../../guides/customize-skins.md#style-a-packaged-skin) documents the properties.
|
|
34
34
|
|
|
35
|
+
## Examples
|
|
36
|
+
|
|
37
|
+
### Basic Usage
|
|
38
|
+
|
|
39
|
+
**index.html**
|
|
40
|
+
|
|
41
|
+
```html
|
|
42
|
+
<background-video-player>
|
|
43
|
+
<background-video-skin class="html-background-video-skin-basic">
|
|
44
|
+
<background-video src="https://stream.mux.com/601n4w1fq88NJiVpzvrQQeQfNnnjjfKMIN7dCGAEarTs/highest.mp4"></background-video>
|
|
45
|
+
</background-video-skin>
|
|
46
|
+
</background-video-player>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**index.css**
|
|
50
|
+
|
|
51
|
+
```css
|
|
52
|
+
.html-background-video-skin-basic {
|
|
53
|
+
display: block;
|
|
54
|
+
width: 100%;
|
|
55
|
+
aspect-ratio: 16 / 9;
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**index.ts**
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
import '@videojs/html/background/player';
|
|
63
|
+
import '@videojs/html/background/skin';
|
|
64
|
+
import '@videojs/html/background/video';
|
|
65
|
+
```
|
|
66
|
+
|
|
35
67
|
## Own the UI
|
|
36
68
|
|
|
37
69
|
Owning the UI means keeping its components, layout, styles, and interactions as local files you can change. The [Shadcn installation guide](../../guides/installation-shadcn.md) adds that source for supported skins. The registry does not provide background video skin source because it has no control UI. Follow [Add a background video](../../guides/background-video.md) to compose the media directly, then add only the UI your use case needs.
|
|
@@ -17,7 +17,7 @@ import '@videojs/html/media/background-video';
|
|
|
17
17
|
Or load it from the [CDN](../../guides/cdn.md):
|
|
18
18
|
|
|
19
19
|
```html
|
|
20
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.
|
|
20
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.1.0/media/background-video.js"></script>
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
## Examples
|
|
@@ -24,7 +24,7 @@ The button derives its presentation from `availability`:
|
|
|
24
24
|
- **`"unavailable"`** — the button remains visible and focusable with `aria-disabled="true"` and `data-disabled`, but does not open the picker. This lets a tooltip explain that no Cast device is reachable.
|
|
25
25
|
- **`"available"`** — the button is fully interactive unless the `disabled` prop is set.
|
|
26
26
|
|
|
27
|
-
Configurable Cast sessions come from the [Google Cast extension](./google-cast.md). Add it to the player next to your media
|
|
27
|
+
Configurable Cast sessions come from the [Google Cast extension](./google-cast.md). Add it to the player next to your media component; without it the button drives the browser’s native Remote Playback API instead, which offers no receiver or load-request configuration. See [Cast to AirPlay and Chromecast](../../guides/casting.md) for the complete setup.
|
|
28
28
|
|
|
29
29
|
## Styling
|
|
30
30
|
|
|
@@ -17,7 +17,7 @@ import '@videojs/html/media/cloudflare-video';
|
|
|
17
17
|
Or load it from the [CDN](../../guides/cdn.md):
|
|
18
18
|
|
|
19
19
|
```html
|
|
20
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.
|
|
20
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.1.0/media/cloudflare-video.js"></script>
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
## Load a source
|
|
@@ -21,7 +21,7 @@ import '@videojs/html/media/dash-video';
|
|
|
21
21
|
Or load it from the [CDN](../../guides/cdn.md):
|
|
22
22
|
|
|
23
23
|
```html
|
|
24
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.
|
|
24
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.1.0/media/dash-video.js"></script>
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
## Examples
|
|
@@ -17,7 +17,7 @@ import '@videojs/html/extensions/google-cast';
|
|
|
17
17
|
Or load it from the [CDN](../../guides/cdn.md):
|
|
18
18
|
|
|
19
19
|
```html
|
|
20
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.
|
|
20
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.1.0/extensions/google-cast.js"></script>
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
## Anatomy
|
|
@@ -13,7 +13,7 @@ import '@videojs/html/media/hls-audio';
|
|
|
13
13
|
Or load it from the [CDN](../../guides/cdn.md):
|
|
14
14
|
|
|
15
15
|
```html
|
|
16
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.
|
|
16
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.1.0/media/hls-audio.js"></script>
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
## Examples
|
|
@@ -59,6 +59,7 @@ These Video.js-specific attributes configure media behavior:
|
|
|
59
59
|
| --- | --- | --- | --- |
|
|
60
60
|
| `alternativeMediaSuggestion` | `string \| undefined` | — | Read-only. A complete sentence naming the Media to reach for when this one can't play a source. Appended to the copy this adapter logs. Empty here, and overridden the same way as on the video adapter — see its note. `hls-audio` has no better-equipped sibling of its own; the Mux audio Media built on this engine does, and points at the hls.js-backed one. |
|
|
61
61
|
| `contentData` | `MediaContentData \| undefined` | — | Read-only. |
|
|
62
|
+
| `crossOrigin` | `'anonymous' \| 'use-credentials' \| null` | `null` | |
|
|
62
63
|
| `disableRemotePlayback` | `boolean` | `false` | |
|
|
63
64
|
| `engine` | `{ state: { [K in keyof S]-?: Signal<S[K]> }; context: { [K in keyof C]-?: Signal<C[K]> }; destroy(): Promise<void> }` | — | Read-only. Underlying playback engine — the low-level SPF reactive composition that drives playback. An advanced escape hatch for direct engine access; normal playback is driven through this element's own properties and methods. |
|
|
64
65
|
| `error` | `{ code: number; message: string; data?: unknown } \| null` | — | Read-only. The current fatal error, or `null`. Only *fatal* conditions appear here — the engine reports non-fatal ones too, which stay in `engine.state.errors`. Resets per source. Fires `'error'` when set. |
|
|
@@ -69,7 +70,7 @@ These Video.js-specific attributes configure media behavior:
|
|
|
69
70
|
| `streamType` | `MediaStreamType` | — | Current stream type (`'on-demand'`, `'live'`, or `'unknown'`). Defaults to `'unknown'`; detecting hosts update it automatically, and consumers can set it to override detection. |
|
|
70
71
|
| `targetLiveWindow` | `number` | — | Read-only. |
|
|
71
72
|
|
|
72
|
-
Also exposes these properties from the native media API. See [HTMLAudioElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLAudioElement) for details: `autoplay`, `buffered`, `controls`, `
|
|
73
|
+
Also exposes these properties from the native media API. See [HTMLAudioElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLAudioElement) for details: `autoplay`, `buffered`, `controls`, `currentSrc`, `currentTime`, `defaultMuted`, `defaultPlaybackRate`, `duration`, `ended`, `loop`, `muted`, `paused`, `playbackRate`, `played`, `readyState`, `remote`, `seekable`, `seeking`, `textTracks`, `title`, `volume`.
|
|
73
74
|
|
|
74
75
|
### Methods
|
|
75
76
|
|
|
@@ -15,7 +15,7 @@ import '@videojs/html/media/hls-background-video';
|
|
|
15
15
|
Or load it from the [CDN](../../guides/cdn.md):
|
|
16
16
|
|
|
17
17
|
```html
|
|
18
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.
|
|
18
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.1.0/media/hls-background-video.js"></script>
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
## Source behavior
|
|
@@ -13,7 +13,7 @@ import '@videojs/html/media/hls-video';
|
|
|
13
13
|
Or load it from the [CDN](../../guides/cdn.md):
|
|
14
14
|
|
|
15
15
|
```html
|
|
16
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.
|
|
16
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.1.0/media/hls-video.js"></script>
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
## Examples
|
|
@@ -46,6 +46,16 @@ import '@videojs/html/ui/container';
|
|
|
46
46
|
import '@videojs/html/media/hls-video';
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
+
## Cookie-gated streams
|
|
50
|
+
|
|
51
|
+
A stream on another origin that is gated by cookies — CloudFront signed cookies, for example — needs those cookies on every manifest and segment request, or the CDN answers 403. Set the standard `crossorigin="use-credentials"` on the element and the engine sends them, the same way the browser does under native playback. Any other value, or no attribute, leaves requests at the platform default and sends no cross-origin cookies.
|
|
52
|
+
|
|
53
|
+
The CDN must answer with `Access-Control-Allow-Credentials: true` and a specific `Access-Control-Allow-Origin`, not `*`, or the browser refuses the credentialed response.
|
|
54
|
+
|
|
55
|
+
```html
|
|
56
|
+
<hls-video src="https://cdn.example.com/stream.m3u8" crossorigin="use-credentials"></hls-video>
|
|
57
|
+
```
|
|
58
|
+
|
|
49
59
|
## API Reference
|
|
50
60
|
|
|
51
61
|
### Attributes
|
|
@@ -64,6 +74,7 @@ These Video.js-specific attributes configure media behavior:
|
|
|
64
74
|
| --- | --- | --- | --- |
|
|
65
75
|
| `alternativeMediaSuggestion` | `string \| undefined` | — | Read-only. A complete sentence naming the Media to reach for when this one can't play a source — `Try the hls.js-backed Mux media instead: import the hls-js flavor in place of the spf one.` Appended to the copy this adapter surfaces, and to the notices it logs. Name the flavor, not an import path: a Media is reached through several packages, each with its own counterpart. Empty here: `hls-video` has no better-equipped sibling to point at. A Media that does (a Mux Video built on this engine, whose hls.js-backed counterpart plays MPEG-TS and DRM) overrides this static, and its copy gains the second sentence with no other change. |
|
|
66
76
|
| `contentData` | `MediaContentData \| undefined` | — | Read-only. |
|
|
77
|
+
| `crossOrigin` | `'anonymous' \| 'use-credentials' \| null` | `null` | |
|
|
67
78
|
| `disableRemotePlayback` | `boolean` | `false` | |
|
|
68
79
|
| `engine` | `{ state: { [K in keyof S]-?: Signal<S[K]> }; context: { [K in keyof C]-?: Signal<C[K]> }; destroy(): Promise<void> }` | — | Read-only. Underlying playback engine — the low-level SPF reactive composition that drives playback. An advanced escape hatch for direct engine access; normal playback is driven through this element's own properties and methods. |
|
|
69
80
|
| `error` | `{ code: number; message: string; data?: unknown } \| null` | — | Read-only. The current fatal error, or `null`. Only *fatal* conditions appear here — the engine reports non-fatal ones too (they stay in `engine.state.errors`), and promoting them would tell a consumer playback had failed when it hadn't. Resets per source. Fires `'error'` when set. |
|
|
@@ -79,7 +90,7 @@ These Video.js-specific attributes configure media behavior:
|
|
|
79
90
|
| `webkitPresentationMode` | `WebKitPresentationMode \| undefined` | — | Read-only. |
|
|
80
91
|
| `webkitSetPresentationMode` | `((mode: WebKitPresentationMode) => void) \| undefined` | — | Read-only. |
|
|
81
92
|
|
|
82
|
-
Also exposes these properties from the native media API. See [HTMLVideoElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement) for details: `autoplay`, `buffered`, `controls`, `
|
|
93
|
+
Also exposes these properties from the native media API. See [HTMLVideoElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement) for details: `autoplay`, `buffered`, `controls`, `currentSrc`, `currentTime`, `defaultMuted`, `defaultPlaybackRate`, `disablePictureInPicture`, `duration`, `ended`, `loop`, `muted`, `paused`, `playbackRate`, `played`, `playsInline`, `poster`, `readyState`, `remote`, `seekable`, `seeking`, `textTracks`, `title`, `videoHeight`, `videoWidth`, `volume`.
|
|
83
94
|
|
|
84
95
|
### Methods
|
|
85
96
|
|
|
@@ -17,7 +17,7 @@ import '@videojs/html/media/hlsjs-video';
|
|
|
17
17
|
Or load it from the [CDN](../../guides/cdn.md):
|
|
18
18
|
|
|
19
19
|
```html
|
|
20
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.
|
|
20
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.1.0/media/hlsjs-video.js"></script>
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
## Examples
|
|
@@ -50,6 +50,16 @@ import '@videojs/html/ui/container';
|
|
|
50
50
|
import '@videojs/html/media/hlsjs-video';
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
+
## Cookie-gated streams
|
|
54
|
+
|
|
55
|
+
A stream on another origin that is gated by cookies — CloudFront signed cookies, for example — needs those cookies on every manifest and segment request, or the CDN answers 403. Set the standard `crossorigin="use-credentials"` on the element and hls.js sends them (`withCredentials` on its XHR loader, `credentials: 'include'` on its fetch loader), the same way the browser does under native playback. Any other value, or no attribute, leaves hls.js’s default and sends no cross-origin cookies. An `xhrSetup` or `fetchSetup` you pass through `source.engine.hlsJs` still runs, after this, on the same request.
|
|
56
|
+
|
|
57
|
+
The CDN must answer with `Access-Control-Allow-Credentials: true` and a specific `Access-Control-Allow-Origin`, not `*`, or the browser refuses the credentialed response.
|
|
58
|
+
|
|
59
|
+
```html
|
|
60
|
+
<hlsjs-video src="https://cdn.example.com/stream.m3u8" crossorigin="use-credentials"></hlsjs-video>
|
|
61
|
+
```
|
|
62
|
+
|
|
53
63
|
## API Reference
|
|
54
64
|
|
|
55
65
|
### Attributes
|
|
@@ -22,13 +22,14 @@ import { playIcon } from "@videojs/html/icons";
|
|
|
22
22
|
|
|
23
23
|
## Icon sets
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Four sets ship with the same icon names and different designs.
|
|
26
26
|
|
|
27
27
|
| Set | `family` | SVG strings | Used by |
|
|
28
28
|
| --- | --- | --- | --- |
|
|
29
29
|
| Default | `default` | `@videojs/html/icons` or `@videojs/html/icons/default` | The default skins, such as [`<video-skin>`](./video-skin.md) |
|
|
30
30
|
| Neutral | `neutral` | `@videojs/html/icons/neutral` | The neutral skins, such as [`<video-neutral-skin>`](./video-neutral-skin.md) |
|
|
31
31
|
| Compat | `compat` | `@videojs/html/icons/compat` | The compat skins, such as [`<video-compat-skin>`](./video-compat-skin.md) |
|
|
32
|
+
| Scaffold | `scaffold` | `@videojs/html/icons/scaffold` | The scaffold skins, such as [`<video-scaffold-skin>`](./video-scaffold-skin.md) |
|
|
32
33
|
|
|
33
34
|
## Available icons
|
|
34
35
|
|
|
@@ -10,24 +10,55 @@ The Compat skin of the live audio preset provides basic controls and plain surfa
|
|
|
10
10
|
import '@videojs/html/live-audio/compat-skin';
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## Anatomy
|
|
14
14
|
|
|
15
|
-
The skin goes between the player and the media
|
|
15
|
+
The skin goes between the player and the media component. It renders its controls around the media.
|
|
16
16
|
|
|
17
17
|
```html
|
|
18
18
|
<live-audio-player>
|
|
19
19
|
<live-audio-compat-skin>
|
|
20
|
-
<mux-audio
|
|
20
|
+
<mux-audio></mux-audio>
|
|
21
21
|
</live-audio-compat-skin>
|
|
22
22
|
</live-audio-player>
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
This uses the [Mux audio element](./mux-audio.md): a plain `<audio>` can’t play HLS in most browsers, and this element reports the live playback state the skin’s Live button needs. See [Play live streams](../../guides/live-streams.md).
|
|
26
26
|
|
|
27
27
|
## Styling
|
|
28
28
|
|
|
29
29
|
Packaged skins style themselves and expose a small set of public CSS custom properties. Everything else inside the skin is private and may change between releases. [Customize skins](../../guides/customize-skins.md#style-a-packaged-skin) documents the properties. For deeper changes, the Video.js registry provides the skin files.
|
|
30
30
|
|
|
31
|
+
## Examples
|
|
32
|
+
|
|
33
|
+
### Basic Usage
|
|
34
|
+
|
|
35
|
+
**index.html**
|
|
36
|
+
|
|
37
|
+
```html
|
|
38
|
+
<live-audio-player>
|
|
39
|
+
<live-audio-compat-skin class="html-live-audio-compat-skin-basic">
|
|
40
|
+
<mux-audio src="https://stream.mux.com/v69RSHhFelSm4701snP22dYz2jICy4E4FUyk02rW4gxRM.m3u8" crossorigin="anonymous"></mux-audio>
|
|
41
|
+
</live-audio-compat-skin>
|
|
42
|
+
</live-audio-player>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**index.css**
|
|
46
|
+
|
|
47
|
+
```css
|
|
48
|
+
.html-live-audio-compat-skin-basic {
|
|
49
|
+
display: block;
|
|
50
|
+
width: 100%;
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**index.ts**
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
import '@videojs/html/live-audio/player';
|
|
58
|
+
import '@videojs/html/live-audio/compat-skin';
|
|
59
|
+
import '@videojs/html/media/mux-audio';
|
|
60
|
+
```
|
|
61
|
+
|
|
31
62
|
## Own the UI
|
|
32
63
|
|
|
33
64
|
Packaged skins keep their controls and layout inside Video.js. When you need to add, remove, rearrange, or deeply restyle controls, use Shadcn to add the skin source to your project. Its components, layout, styles, and interactions become local files you can change.
|
|
@@ -13,27 +13,58 @@ import '@videojs/html/live-audio/neutral-skin';
|
|
|
13
13
|
The import registers the skin and every UI element it composes. The [CDN](../../guides/cdn.md) player bundle registers this skin together with its player:
|
|
14
14
|
|
|
15
15
|
```html
|
|
16
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.
|
|
16
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.1.0/live-audio-neutral.js"></script>
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
##
|
|
19
|
+
## Anatomy
|
|
20
20
|
|
|
21
|
-
The skin goes between the player and the media
|
|
21
|
+
The skin goes between the player and the media component. It renders its controls around the media.
|
|
22
22
|
|
|
23
23
|
```html
|
|
24
24
|
<live-audio-player>
|
|
25
25
|
<live-audio-neutral-skin>
|
|
26
|
-
<mux-audio
|
|
26
|
+
<mux-audio></mux-audio>
|
|
27
27
|
</live-audio-neutral-skin>
|
|
28
28
|
</live-audio-player>
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
This uses the [Mux audio element](./mux-audio.md): a plain `<audio>` can’t play HLS in most browsers, and this element reports the live playback state the skin’s Live button needs. See [Play live streams](../../guides/live-streams.md).
|
|
32
32
|
|
|
33
33
|
## Styling
|
|
34
34
|
|
|
35
35
|
Packaged skins style themselves and expose a small set of public CSS custom properties. Everything else inside the skin is private and may change between releases. [Customize skins](../../guides/customize-skins.md#style-a-packaged-skin) documents the properties. For deeper changes, the Video.js registry provides the skin files.
|
|
36
36
|
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
### Basic Usage
|
|
40
|
+
|
|
41
|
+
**index.html**
|
|
42
|
+
|
|
43
|
+
```html
|
|
44
|
+
<live-audio-player>
|
|
45
|
+
<live-audio-neutral-skin class="html-live-audio-neutral-skin-basic">
|
|
46
|
+
<mux-audio src="https://stream.mux.com/v69RSHhFelSm4701snP22dYz2jICy4E4FUyk02rW4gxRM.m3u8" crossorigin="anonymous"></mux-audio>
|
|
47
|
+
</live-audio-neutral-skin>
|
|
48
|
+
</live-audio-player>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**index.css**
|
|
52
|
+
|
|
53
|
+
```css
|
|
54
|
+
.html-live-audio-neutral-skin-basic {
|
|
55
|
+
display: block;
|
|
56
|
+
width: 100%;
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**index.ts**
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
import '@videojs/html/live-audio/player';
|
|
64
|
+
import '@videojs/html/live-audio/neutral-skin';
|
|
65
|
+
import '@videojs/html/media/mux-audio';
|
|
66
|
+
```
|
|
67
|
+
|
|
37
68
|
## Own the UI
|
|
38
69
|
|
|
39
70
|
Packaged skins keep their controls and layout inside Video.js. When you need to add, remove, rearrange, or deeply restyle controls, use Shadcn to add the skin source to your project. Its components, layout, styles, and interactions become local files you can change.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# live-audio-scaffold-skin
|
|
2
|
+
|
|
3
|
+
A live audio skin with minimal styling for custom skins
|
|
4
|
+
|
|
5
|
+
The Scaffold skin of the live audio preset provides functional controls with minimal styling and no transitions. It is a starting point for a custom skin, intended to be restyled before use. It shows a Live button in place of time controls. See [Customize skins](../../guides/customize-skins.md) to install and edit its source.
|
|
6
|
+
|
|
7
|
+
## Import
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import '@videojs/html/live-audio/scaffold-skin';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The import registers the skin and every UI element it composes. The [CDN](../../guides/cdn.md) player bundle registers this skin together with its player:
|
|
14
|
+
|
|
15
|
+
```html
|
|
16
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.1.0/live-audio-scaffold.js"></script>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
The skin goes between the player and the media element. It renders its controls around the media.
|
|
22
|
+
|
|
23
|
+
```html
|
|
24
|
+
<live-audio-player>
|
|
25
|
+
<live-audio-scaffold-skin>
|
|
26
|
+
<mux-audio src="live.m3u8"></mux-audio>
|
|
27
|
+
</live-audio-scaffold-skin>
|
|
28
|
+
</live-audio-player>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The examples use the [Mux audio element](./mux-audio.md): a plain `<audio>` can’t play HLS in most browsers, and this element reports the live playback state the skin’s Live button needs. See [Play live streams](../../guides/live-streams.md).
|
|
32
|
+
|
|
33
|
+
## Styling
|
|
34
|
+
|
|
35
|
+
Packaged skins style themselves and expose a small set of public CSS custom properties. Everything else inside the skin is private and may change between releases. [Customize skins](../../guides/customize-skins.md#style-a-packaged-skin) documents the properties. For deeper changes, the Video.js registry provides the skin files.
|
|
36
|
+
|
|
37
|
+
## Own the UI
|
|
38
|
+
|
|
39
|
+
Packaged skins keep their controls and layout inside Video.js. When you need to add, remove, rearrange, or deeply restyle controls, use Shadcn to add the skin source to your project. Its components, layout, styles, and interactions become local files you can change.
|
|
40
|
+
|
|
41
|
+
- [Install Video.js with Shadcn](../../guides/installation-shadcn.md#choose-how-to-install): Add editable skin source and build a working React or HTML player
|
|
@@ -13,27 +13,58 @@ import '@videojs/html/live-audio/skin';
|
|
|
13
13
|
The import registers the skin and every UI element it composes. The [CDN](../../guides/cdn.md) player bundle registers this skin together with its player:
|
|
14
14
|
|
|
15
15
|
```html
|
|
16
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.
|
|
16
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.1.0/live-audio.js"></script>
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
##
|
|
19
|
+
## Anatomy
|
|
20
20
|
|
|
21
|
-
The skin goes between the player and the media
|
|
21
|
+
The skin goes between the player and the media component. It renders its controls around the media.
|
|
22
22
|
|
|
23
23
|
```html
|
|
24
24
|
<live-audio-player>
|
|
25
25
|
<live-audio-skin>
|
|
26
|
-
<mux-audio
|
|
26
|
+
<mux-audio></mux-audio>
|
|
27
27
|
</live-audio-skin>
|
|
28
28
|
</live-audio-player>
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
This uses the [Mux audio element](./mux-audio.md): a plain `<audio>` can’t play HLS in most browsers, and this element reports the live playback state the skin’s Live button needs. See [Play live streams](../../guides/live-streams.md).
|
|
32
32
|
|
|
33
33
|
## Styling
|
|
34
34
|
|
|
35
35
|
Packaged skins style themselves and expose a small set of public CSS custom properties. Everything else inside the skin is private and may change between releases. [Customize skins](../../guides/customize-skins.md#style-a-packaged-skin) documents the properties. For deeper changes, the Video.js registry provides the skin files.
|
|
36
36
|
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
### Basic Usage
|
|
40
|
+
|
|
41
|
+
**index.html**
|
|
42
|
+
|
|
43
|
+
```html
|
|
44
|
+
<live-audio-player>
|
|
45
|
+
<live-audio-skin class="html-live-audio-skin-basic">
|
|
46
|
+
<mux-audio src="https://stream.mux.com/v69RSHhFelSm4701snP22dYz2jICy4E4FUyk02rW4gxRM.m3u8" crossorigin="anonymous"></mux-audio>
|
|
47
|
+
</live-audio-skin>
|
|
48
|
+
</live-audio-player>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**index.css**
|
|
52
|
+
|
|
53
|
+
```css
|
|
54
|
+
.html-live-audio-skin-basic {
|
|
55
|
+
display: block;
|
|
56
|
+
width: 100%;
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**index.ts**
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
import '@videojs/html/live-audio/player';
|
|
64
|
+
import '@videojs/html/live-audio/skin';
|
|
65
|
+
import '@videojs/html/media/mux-audio';
|
|
66
|
+
```
|
|
67
|
+
|
|
37
68
|
## Own the UI
|
|
38
69
|
|
|
39
70
|
Packaged skins keep their controls and layout inside Video.js. When you need to add, remove, rearrange, or deeply restyle controls, use Shadcn to add the skin source to your project. Its components, layout, styles, and interactions become local files you can change.
|
|
@@ -10,19 +10,19 @@ The Compat skin of the live video preset provides basic controls and plain surfa
|
|
|
10
10
|
import '@videojs/html/live-video/compat-skin';
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## Anatomy
|
|
14
14
|
|
|
15
|
-
The skin goes between the player and the media
|
|
15
|
+
The skin goes between the player and the media component. It renders its controls around the media.
|
|
16
16
|
|
|
17
17
|
```html
|
|
18
18
|
<live-video-player>
|
|
19
19
|
<live-video-compat-skin>
|
|
20
|
-
<hls-video
|
|
20
|
+
<hls-video></hls-video>
|
|
21
21
|
</live-video-compat-skin>
|
|
22
22
|
</live-video-player>
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
This uses the lightweight [HLS video element](./hls-video.md) because most browsers can’t play HLS streams with a plain `<video>`. See [Play live streams](../../guides/live-streams.md).
|
|
26
26
|
|
|
27
27
|
## Poster
|
|
28
28
|
|
|
@@ -34,6 +34,38 @@ See [Add a poster and loading placeholder](../../guides/poster.md) for complete
|
|
|
34
34
|
|
|
35
35
|
Packaged skins style themselves and expose a small set of public CSS custom properties. Everything else inside the skin is private and may change between releases. [Customize skins](../../guides/customize-skins.md#style-a-packaged-skin) documents the properties. For deeper changes, the Video.js registry provides the skin files.
|
|
36
36
|
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
### Basic Usage
|
|
40
|
+
|
|
41
|
+
**index.html**
|
|
42
|
+
|
|
43
|
+
```html
|
|
44
|
+
<live-video-player>
|
|
45
|
+
<live-video-compat-skin class="html-live-video-compat-skin-basic">
|
|
46
|
+
<hls-video src="https://stream.mux.com/v69RSHhFelSm4701snP22dYz2jICy4E4FUyk02rW4gxRM.m3u8" playsinline crossorigin="anonymous"></hls-video>
|
|
47
|
+
</live-video-compat-skin>
|
|
48
|
+
</live-video-player>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**index.css**
|
|
52
|
+
|
|
53
|
+
```css
|
|
54
|
+
.html-live-video-compat-skin-basic {
|
|
55
|
+
display: block;
|
|
56
|
+
width: 100%;
|
|
57
|
+
aspect-ratio: 16 / 9;
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**index.ts**
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
import '@videojs/html/live-video/player';
|
|
65
|
+
import '@videojs/html/live-video/compat-skin';
|
|
66
|
+
import '@videojs/html/media/hls-video';
|
|
67
|
+
```
|
|
68
|
+
|
|
37
69
|
## Own the UI
|
|
38
70
|
|
|
39
71
|
Packaged skins keep their controls and layout inside Video.js. When you need to add, remove, rearrange, or deeply restyle controls, use Shadcn to add the skin source to your project. Its components, layout, styles, and interactions become local files you can change.
|
|
@@ -13,22 +13,22 @@ import '@videojs/html/live-video/neutral-skin';
|
|
|
13
13
|
The import registers the skin and every UI element it composes. The [CDN](../../guides/cdn.md) player bundle registers this skin together with its player:
|
|
14
14
|
|
|
15
15
|
```html
|
|
16
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.
|
|
16
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.1.0/live-video-neutral.js"></script>
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
##
|
|
19
|
+
## Anatomy
|
|
20
20
|
|
|
21
|
-
The skin goes between the player and the media
|
|
21
|
+
The skin goes between the player and the media component. It renders its controls around the media.
|
|
22
22
|
|
|
23
23
|
```html
|
|
24
24
|
<live-video-player>
|
|
25
25
|
<live-video-neutral-skin>
|
|
26
|
-
<hls-video
|
|
26
|
+
<hls-video></hls-video>
|
|
27
27
|
</live-video-neutral-skin>
|
|
28
28
|
</live-video-player>
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
This uses the lightweight [HLS video element](./hls-video.md) because most browsers can’t play HLS streams with a plain `<video>`. See [Play live streams](../../guides/live-streams.md).
|
|
32
32
|
|
|
33
33
|
## Poster
|
|
34
34
|
|
|
@@ -40,6 +40,38 @@ See [Add a poster and loading placeholder](../../guides/poster.md) for complete
|
|
|
40
40
|
|
|
41
41
|
Packaged skins style themselves and expose a small set of public CSS custom properties. Everything else inside the skin is private and may change between releases. [Customize skins](../../guides/customize-skins.md#style-a-packaged-skin) documents the properties. For deeper changes, the Video.js registry provides the skin files.
|
|
42
42
|
|
|
43
|
+
## Examples
|
|
44
|
+
|
|
45
|
+
### Basic Usage
|
|
46
|
+
|
|
47
|
+
**index.html**
|
|
48
|
+
|
|
49
|
+
```html
|
|
50
|
+
<live-video-player>
|
|
51
|
+
<live-video-neutral-skin class="html-live-video-neutral-skin-basic">
|
|
52
|
+
<hls-video src="https://stream.mux.com/v69RSHhFelSm4701snP22dYz2jICy4E4FUyk02rW4gxRM.m3u8" playsinline crossorigin="anonymous"></hls-video>
|
|
53
|
+
</live-video-neutral-skin>
|
|
54
|
+
</live-video-player>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**index.css**
|
|
58
|
+
|
|
59
|
+
```css
|
|
60
|
+
.html-live-video-neutral-skin-basic {
|
|
61
|
+
display: block;
|
|
62
|
+
width: 100%;
|
|
63
|
+
aspect-ratio: 16 / 9;
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**index.ts**
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
import '@videojs/html/live-video/player';
|
|
71
|
+
import '@videojs/html/live-video/neutral-skin';
|
|
72
|
+
import '@videojs/html/media/hls-video';
|
|
73
|
+
```
|
|
74
|
+
|
|
43
75
|
## Own the UI
|
|
44
76
|
|
|
45
77
|
Packaged skins keep their controls and layout inside Video.js. When you need to add, remove, rearrange, or deeply restyle controls, use Shadcn to add the skin source to your project. Its components, layout, styles, and interactions become local files you can change.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# live-video-scaffold-skin
|
|
2
|
+
|
|
3
|
+
A live video skin with minimal styling for custom skins
|
|
4
|
+
|
|
5
|
+
The Scaffold skin of the live video preset provides functional controls with minimal styling and no transitions. It is a starting point for a custom skin, intended to be restyled before use. It shows a Live button in place of time controls. See [Customize skins](../../guides/customize-skins.md) to install and edit its source.
|
|
6
|
+
|
|
7
|
+
## Import
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import '@videojs/html/live-video/scaffold-skin';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The import registers the skin and every UI element it composes. The [CDN](../../guides/cdn.md) player bundle registers this skin together with its player:
|
|
14
|
+
|
|
15
|
+
```html
|
|
16
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.1.0/live-video-scaffold.js"></script>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
The skin goes between the player and the media element. It renders its controls around the media.
|
|
22
|
+
|
|
23
|
+
```html
|
|
24
|
+
<live-video-player>
|
|
25
|
+
<live-video-scaffold-skin>
|
|
26
|
+
<hls-video src="live.m3u8"></hls-video>
|
|
27
|
+
</live-video-scaffold-skin>
|
|
28
|
+
</live-video-player>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The examples use the lightweight [HLS video element](./hls-video.md) because most browsers can’t play HLS streams with a plain `<video>`. See [Play live streams](../../guides/live-streams.md).
|
|
32
|
+
|
|
33
|
+
## Poster
|
|
34
|
+
|
|
35
|
+
The skin renders a poster image before playback starts. An element with `slot="poster"` replaces it.
|
|
36
|
+
|
|
37
|
+
See [Add a poster and loading placeholder](../../guides/poster.md) for complete examples.
|
|
38
|
+
|
|
39
|
+
## Styling
|
|
40
|
+
|
|
41
|
+
Packaged skins style themselves and expose a small set of public CSS custom properties. Everything else inside the skin is private and may change between releases. [Customize skins](../../guides/customize-skins.md#style-a-packaged-skin) documents the properties. For deeper changes, the Video.js registry provides the skin files.
|
|
42
|
+
|
|
43
|
+
## Own the UI
|
|
44
|
+
|
|
45
|
+
Packaged skins keep their controls and layout inside Video.js. When you need to add, remove, rearrange, or deeply restyle controls, use Shadcn to add the skin source to your project. Its components, layout, styles, and interactions become local files you can change.
|
|
46
|
+
|
|
47
|
+
- [Install Video.js with Shadcn](../../guides/installation-shadcn.md#choose-how-to-install): Add editable skin source and build a working React or HTML player
|