@videojs/html 10.0.1 → 10.2.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 +86 -60
- package/dist/default/define/audio/compat-skin2.js +1 -1
- package/dist/default/define/audio/neutral-skin.css +2 -11
- package/dist/default/define/audio/neutral-skin2.js +1 -1
- package/dist/default/define/audio/scaffold-skin.css +1754 -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/audio/skin.css +0 -1
- package/dist/default/define/audio/skin2.js +1 -1
- package/dist/default/define/live-audio/compat-skin.css +86 -60
- package/dist/default/define/live-audio/compat-skin2.js +1 -1
- package/dist/default/define/live-audio/neutral-skin.css +0 -1
- package/dist/default/define/live-audio/neutral-skin2.js +1 -1
- package/dist/default/define/live-audio/scaffold-skin.css +1574 -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-audio/skin.css +0 -1
- package/dist/default/define/live-audio/skin2.js +1 -1
- package/dist/default/define/live-video/compat-skin.css +75 -31
- 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 +1975 -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/playerjs-video.js +11 -0
- package/dist/default/define/video/compat-skin.css +75 -31
- package/dist/default/define/video/compat-skin2.js +1 -1
- package/dist/default/define/video/neutral-skin.css +28 -19
- package/dist/default/define/video/neutral-skin2.js +1 -1
- package/dist/default/define/video/scaffold-skin.css +2215 -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 -10
- package/dist/default/internal/skins/compat-audio/skin.css +86 -60
- package/dist/default/internal/skins/compat-audio/template.js +26 -48
- package/dist/default/internal/skins/compat-live-audio/register.js +1 -10
- package/dist/default/internal/skins/compat-live-audio/skin.css +86 -60
- package/dist/default/internal/skins/compat-live-audio/template.js +7 -29
- package/dist/default/internal/skins/compat-live-video/skin.css +75 -31
- package/dist/default/internal/skins/compat-live-video/template.js +20 -18
- package/dist/default/internal/skins/compat-video/skin.css +75 -31
- package/dist/default/internal/skins/compat-video/template.js +34 -32
- package/dist/default/internal/skins/default-audio/skin.css +0 -1
- package/dist/default/internal/skins/default-audio/template.js +12 -12
- package/dist/default/internal/skins/default-live-audio/skin.css +0 -1
- 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/skin.css +2 -11
- package/dist/default/internal/skins/neutral-audio/template.js +13 -13
- package/dist/default/internal/skins/neutral-live-audio/skin.css +0 -1
- 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 +28 -19
- package/dist/default/internal/skins/neutral-video/template.js +27 -27
- package/dist/default/internal/skins/scaffold-audio/register.js +63 -0
- package/dist/default/internal/skins/scaffold-audio/skin.css +1722 -0
- package/dist/default/internal/skins/scaffold-audio/template.js +197 -0
- package/dist/default/internal/skins/scaffold-live-audio/register.js +43 -0
- package/dist/default/internal/skins/scaffold-live-audio/skin.css +1542 -0
- package/dist/default/internal/skins/scaffold-live-audio/template.js +94 -0
- package/dist/default/internal/skins/scaffold-live-video/register.js +86 -0
- package/dist/default/internal/skins/scaffold-live-video/skin.css +1943 -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 +2183 -0
- package/dist/default/internal/skins/scaffold-video/template.js +461 -0
- package/dist/default/media/hls-audio/adapter.js +1 -1
- package/dist/default/media/hls-background-video/adapter.js +1 -1
- package/dist/default/media/hls-video/adapter.js +1 -1
- 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/slider/element.js +3 -1
- package/dist/default/ui/time-slider/element.js +45 -9
- package/dist/default/ui/volume-slider/element.js +3 -1
- package/dist/default/version.js +1 -1
- package/dist/dev/define/audio/compat-skin.css +86 -60
- 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-skin.css +2 -11
- package/dist/dev/define/audio/neutral-skin2.js +1 -1
- package/dist/dev/define/audio/neutral-skin2.js.map +1 -1
- package/dist/dev/define/audio/scaffold-skin.css +1754 -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/skin.css +0 -1
- package/dist/dev/define/audio/skin2.js +1 -1
- 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 +86 -60
- 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-skin.css +0 -1
- package/dist/dev/define/live-audio/neutral-skin2.js +1 -1
- package/dist/dev/define/live-audio/neutral-skin2.js.map +1 -1
- package/dist/dev/define/live-audio/scaffold-skin.css +1574 -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/skin.css +0 -1
- package/dist/dev/define/live-audio/skin2.js +1 -1
- package/dist/dev/define/live-audio/skin2.js.map +1 -1
- package/dist/dev/define/live-video/compat-skin.css +75 -31
- 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 +1975 -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/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 +75 -31
- 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 +28 -19
- 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 +2215 -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 +4 -5
- package/dist/dev/internal/skins/compat-audio/register.js +1 -10
- package/dist/dev/internal/skins/compat-audio/register.js.map +1 -1
- package/dist/dev/internal/skins/compat-audio/skin.css +86 -60
- package/dist/dev/internal/skins/compat-audio/template.js +26 -48
- package/dist/dev/internal/skins/compat-audio/template.js.map +1 -1
- package/dist/dev/internal/skins/compat-live-audio/register.d.ts +1 -2
- package/dist/dev/internal/skins/compat-live-audio/register.js +1 -10
- package/dist/dev/internal/skins/compat-live-audio/register.js.map +1 -1
- package/dist/dev/internal/skins/compat-live-audio/skin.css +86 -60
- package/dist/dev/internal/skins/compat-live-audio/template.js +7 -29
- package/dist/dev/internal/skins/compat-live-audio/template.js.map +1 -1
- package/dist/dev/internal/skins/compat-live-video/register.d.ts +3 -3
- package/dist/dev/internal/skins/compat-live-video/skin.css +75 -31
- 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 +6 -6
- package/dist/dev/internal/skins/compat-video/skin.css +75 -31
- 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 +3 -3
- package/dist/dev/internal/skins/default-audio/skin.css +0 -1
- 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/skin.css +0 -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 +3 -3
- 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 +4 -4
- 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 +5 -5
- package/dist/dev/internal/skins/neutral-audio/skin.css +2 -11
- package/dist/dev/internal/skins/neutral-audio/template.js +13 -13
- 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/skin.css +0 -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 +3 -3
- 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 +6 -6
- package/dist/dev/internal/skins/neutral-video/skin.css +28 -19
- package/dist/dev/internal/skins/neutral-video/template.js +27 -27
- package/dist/dev/internal/skins/neutral-video/template.js.map +1 -1
- package/dist/dev/internal/skins/scaffold-audio/register.d.ts +42 -0
- package/dist/dev/internal/skins/scaffold-audio/register.js +65 -0
- package/dist/dev/internal/skins/scaffold-audio/register.js.map +1 -0
- package/dist/dev/internal/skins/scaffold-audio/skin.css +1722 -0
- package/dist/dev/internal/skins/scaffold-audio/template.js +199 -0
- package/dist/dev/internal/skins/scaffold-audio/template.js.map +1 -0
- package/dist/dev/internal/skins/scaffold-live-audio/register.d.ts +26 -0
- package/dist/dev/internal/skins/scaffold-live-audio/register.js +45 -0
- package/dist/dev/internal/skins/scaffold-live-audio/register.js.map +1 -0
- package/dist/dev/internal/skins/scaffold-live-audio/skin.css +1542 -0
- package/dist/dev/internal/skins/scaffold-live-audio/template.js +96 -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 +1943 -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 +2183 -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/hls-audio/adapter.d.ts +1 -1
- package/dist/dev/media/hls-audio/adapter.js +1 -1
- package/dist/dev/media/hls-audio/adapter.js.map +1 -1
- package/dist/dev/media/hls-background-video/adapter.d.ts +1 -1
- package/dist/dev/media/hls-background-video/adapter.js +1 -1
- package/dist/dev/media/hls-background-video/adapter.js.map +1 -1
- package/dist/dev/media/hls-video/adapter.d.ts +1 -1
- package/dist/dev/media/hls-video/adapter.js +1 -1
- package/dist/dev/media/hls-video/adapter.js.map +1 -1
- 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/slider/element.js +3 -1
- package/dist/dev/ui/slider/element.js.map +1 -1
- package/dist/dev/ui/time-slider/element.js +45 -9
- package/dist/dev/ui/time-slider/element.js.map +1 -1
- package/dist/dev/ui/volume-slider/element.js +3 -1
- package/dist/dev/ui/volume-slider/element.js.map +1 -1
- package/dist/dev/version.js +1 -1
- package/docs/README.md +1 -1
- package/docs/guides/browser-support.md +11 -11
- package/docs/guides/build-with-ai.md +1 -1
- package/docs/guides/build-your-own-skin.md +381 -0
- package/docs/guides/cdn.md +9 -9
- package/docs/guides/customize-skins.md +2 -1
- package/docs/guides/installation-cdn.md +4 -4
- package/docs/guides/installation-shadcn.md +3 -3
- 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/llms.txt +3 -2
- package/docs/guides/media-sources.md +1 -0
- package/docs/guides/migrate-from-media-chrome.md +4 -4
- package/docs/guides/migrate-from-mux-player.md +6 -6
- package/docs/guides/migrate-from-plyr.md +7 -7
- package/docs/guides/migrate-from-video-js-8.md +15 -7
- package/docs/guides/migrate-from-vidstack.md +3 -3
- package/docs/guides/migrate.md +2 -1
- package/docs/guides/presets.md +4 -4
- package/docs/guides/self-hosting.md +11 -8
- package/docs/guides/skins.md +6 -5
- package/docs/guides/v10-roadmap.md +2 -2
- package/docs/guides/why-videojs.md +3 -3
- package/docs/llms.txt +9 -3
- package/docs/reference/api/error-codes.md +1 -1
- package/docs/reference/api/llms.txt +1 -1
- package/docs/reference/api/preset-audio.md +1 -1
- package/docs/reference/api/preset-background.md +1 -1
- package/docs/reference/api/preset-live-audio.md +1 -1
- package/docs/reference/api/preset-live-video.md +1 -1
- package/docs/reference/api/preset-video.md +1 -1
- package/docs/reference/api/vjs8-legacy-init.md +2 -2
- package/docs/reference/components/audio-neutral-skin.md +1 -1
- package/docs/reference/components/audio-scaffold-skin.md +39 -0
- package/docs/reference/components/audio-skin.md +1 -1
- package/docs/reference/components/background-video-skin.md +1 -1
- package/docs/reference/components/background-video.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 +2 -47
- package/docs/reference/components/hls-background-video.md +1 -1
- package/docs/reference/components/hls-video.md +7 -60
- package/docs/reference/components/hlsjs-video.md +11 -1
- package/docs/reference/components/icons.md +2 -1
- package/docs/reference/components/live-audio-neutral-skin.md +1 -1
- package/docs/reference/components/live-audio-scaffold-skin.md +41 -0
- package/docs/reference/components/live-audio-skin.md +1 -1
- package/docs/reference/components/live-video-neutral-skin.md +1 -1
- package/docs/reference/components/live-video-scaffold-skin.md +47 -0
- package/docs/reference/components/live-video-skin.md +1 -1
- package/docs/reference/components/llms.txt +6 -1
- package/docs/reference/components/mux-audio.md +1 -1
- package/docs/reference/components/mux-background-video.md +1 -1
- package/docs/reference/components/mux-data.md +4 -2
- package/docs/reference/components/mux-video.md +1 -1
- package/docs/reference/components/native-hls-video.md +1 -1
- package/docs/reference/components/playerjs-video.md +197 -0
- package/docs/reference/components/shaka-video.md +1 -1
- package/docs/reference/components/slider.md +2 -0
- package/docs/reference/components/spotify-audio.md +1 -1
- package/docs/reference/components/tiktok-video.md +1 -1
- package/docs/reference/components/time-slider.md +7 -5
- package/docs/reference/components/twitch-video.md +1 -1
- package/docs/reference/components/video-neutral-skin.md +1 -1
- package/docs/reference/components/video-scaffold-skin.md +51 -0
- package/docs/reference/components/video-skin.md +1 -1
- package/docs/reference/components/vimeo-video.md +1 -1
- package/docs/reference/components/volume-slider.md +8 -6
- package/docs/reference/components/wistia-video.md +5 -1
- package/docs/reference/components/youtube-video.md +2 -2
- package/package.json +46 -42
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/hls-video/adapter.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { HlsVideoAdapter } from '@videojs/spf/hls-video';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nexport class HlsVideo extends MediaAttachMixin(CustomMediaElement('video', HlsVideoAdapter)) {}\n"],"mappings":";;;;AAKA,IAAa,WAAb,cAA8B,iBAAiB,mBAAmB,SAAS,eAAe,CAAC,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/hls-video/adapter.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { HlsVideoAdapter } from '@videojs/spf/adapters/hls-video';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nexport class HlsVideo extends MediaAttachMixin(CustomMediaElement('video', HlsVideoAdapter)) {}\n"],"mappings":";;;;AAKA,IAAa,WAAb,cAA8B,iBAAiB,mBAAmB,SAAS,eAAe,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CustomMediaConstructor } from "../../index.js";
|
|
2
|
+
import { PlayerJsAdapter } from "@videojs/playerjs-video";
|
|
3
|
+
//#region src/media/playerjs-video/adapter.d.ts
|
|
4
|
+
declare const PlayerJsCustomMediaElement_base: CustomMediaConstructor<typeof PlayerJsAdapter>;
|
|
5
|
+
declare class PlayerJsCustomMediaElement extends PlayerJsCustomMediaElement_base {
|
|
6
|
+
static getTemplateHTML: (attrs: Record<string, string>) => string;
|
|
7
|
+
}
|
|
8
|
+
declare const PlayerJsVideo_base: typeof PlayerJsCustomMediaElement;
|
|
9
|
+
export declare class PlayerJsVideo extends PlayerJsVideo_base {}
|
|
10
|
+
//#endregion
|
|
11
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { MediaAttachMixin } from "../../store/media-attach-mixin.js";
|
|
2
|
+
import { CustomMediaElement } from "@videojs/media/dom";
|
|
3
|
+
import { escapeHtml } from "@videojs/utils/string";
|
|
4
|
+
import { PlayerJsAdapter, buildPlayerJsIframeSrc } from "@videojs/playerjs-video";
|
|
5
|
+
//#region src/media/playerjs-video/adapter.ts
|
|
6
|
+
var PlayerJsCustomMediaElement = class extends CustomMediaElement("iframe", PlayerJsAdapter) {
|
|
7
|
+
static {
|
|
8
|
+
this.getTemplateHTML = (attrs) => {
|
|
9
|
+
const initialSrc = buildPlayerJsIframeSrc(attrs.src ?? "", templateAttrsToEmbedProps(attrs));
|
|
10
|
+
return `
|
|
11
|
+
<style>
|
|
12
|
+
:host {
|
|
13
|
+
display: inline-block;
|
|
14
|
+
min-width: 300px;
|
|
15
|
+
min-height: 150px;
|
|
16
|
+
position: relative;
|
|
17
|
+
}
|
|
18
|
+
iframe {
|
|
19
|
+
position: absolute;
|
|
20
|
+
inset: 0;
|
|
21
|
+
width: 100%;
|
|
22
|
+
height: 100%;
|
|
23
|
+
border: 0;
|
|
24
|
+
}
|
|
25
|
+
/* A cross-origin frame swallows every pointer event, so the skin above it
|
|
26
|
+
never sees the hover that reveals the controls. Not every service lets
|
|
27
|
+
its chrome be hidden, so without controls the frame is kept out of
|
|
28
|
+
hit-testing as well. */
|
|
29
|
+
:host(:not([controls])) {
|
|
30
|
+
pointer-events: none;
|
|
31
|
+
}
|
|
32
|
+
</style>
|
|
33
|
+
<iframe
|
|
34
|
+
part="iframe"
|
|
35
|
+
title="Video player"
|
|
36
|
+
${initialSrc ? ` src="${escapeHtml(initialSrc)}"` : ""}
|
|
37
|
+
allow="accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture"
|
|
38
|
+
allowfullscreen
|
|
39
|
+
frameborder="0"
|
|
40
|
+
width="100%"
|
|
41
|
+
height="100%"
|
|
42
|
+
referrerpolicy="${escapeHtml(attrs.referrerpolicy ?? "")}"
|
|
43
|
+
></iframe>
|
|
44
|
+
`;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
function templateAttrsToEmbedProps(attrs) {
|
|
49
|
+
return {
|
|
50
|
+
autoplay: attrs.autoplay !== void 0,
|
|
51
|
+
defaultMuted: attrs.muted !== void 0,
|
|
52
|
+
loop: attrs.loop !== void 0,
|
|
53
|
+
controls: attrs.controls !== void 0,
|
|
54
|
+
preload: attrs.preload ?? PlayerJsAdapter.defaultProps.preload
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
var PlayerJsVideo = class extends MediaAttachMixin(PlayerJsCustomMediaElement) {};
|
|
58
|
+
//#endregion
|
|
59
|
+
export { PlayerJsVideo };
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/playerjs-video/adapter.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { buildPlayerJsIframeSrc, PlayerJsAdapter, type PlayerJsAdapterProps } from '@videojs/playerjs-video';\nimport { escapeHtml } from '@videojs/utils/string';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nclass PlayerJsCustomMediaElement extends CustomMediaElement('iframe', PlayerJsAdapter) {\n static override getTemplateHTML = (attrs: Record<string, string>): string => {\n const initialSrc = buildPlayerJsIframeSrc(attrs.src ?? '', templateAttrsToEmbedProps(attrs));\n const srcAttr = initialSrc ? ` src=\"${escapeHtml(initialSrc)}\"` : '';\n\n return /*html*/ `\n <style>\n :host {\n display: inline-block;\n min-width: 300px;\n min-height: 150px;\n position: relative;\n }\n iframe {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n /* A cross-origin frame swallows every pointer event, so the skin above it\n never sees the hover that reveals the controls. Not every service lets\n its chrome be hidden, so without controls the frame is kept out of\n hit-testing as well. */\n :host(:not([controls])) {\n pointer-events: none;\n }\n </style>\n <iframe\n part=\"iframe\"\n title=\"Video player\"\n ${srcAttr}\n allow=\"accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen\n frameborder=\"0\"\n width=\"100%\"\n height=\"100%\"\n referrerpolicy=\"${escapeHtml(attrs.referrerpolicy ?? '')}\"\n ></iframe>\n `;\n };\n}\n\n// The props the embed URL is built from for the services the adapter recognizes. A URL differing from the one the\n// adapter builds would have it rebuild the frame on mount.\nfunction templateAttrsToEmbedProps(attrs: Record<string, string>): Partial<PlayerJsAdapterProps> {\n return {\n autoplay: attrs.autoplay !== undefined,\n defaultMuted: attrs.muted !== undefined,\n loop: attrs.loop !== undefined,\n controls: attrs.controls !== undefined,\n preload: (attrs.preload as PlayerJsAdapterProps['preload']) ?? PlayerJsAdapter.defaultProps.preload,\n };\n}\n\nexport class PlayerJsVideo extends MediaAttachMixin(PlayerJsCustomMediaElement) {}\n"],"mappings":";;;;;AAMA,IAAM,6BAAN,cAAyC,mBAAmB,UAAU,eAAe,CAAC,CAAC;;EAClD,KAAA,mBAAA,UAA0C;GAC3E,MAAM,aAAa,uBAAuB,MAAM,OAAO,IAAI,0BAA0B,KAAK,CAAC;GAG3F,OAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;UAFA,aAAa,SAAS,WAAW,UAAU,EAAE,KAAK,GA4BpD;;;;;;0BAMQ,WAAW,MAAM,kBAAkB,EAAE,EAAE;;;EAG/D;;AACF;AAIA,SAAS,0BAA0B,OAA8D;CAC/F,OAAO;EACL,UAAU,MAAM,aAAa,KAAA;EAC7B,cAAc,MAAM,UAAU,KAAA;EAC9B,MAAM,MAAM,SAAS,KAAA;EACrB,UAAU,MAAM,aAAa,KAAA;EAC7B,SAAU,MAAM,WAA+C,gBAAgB,aAAa;CAC9F;AACF;AAEA,IAAa,gBAAb,cAAmC,iBAAiB,0BAA0B,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CompatAudioSkinElement } from "./compat-skin.js";
|
|
2
|
+
import { ScaffoldAudioSkinElement } from "./scaffold-skin.js";
|
|
2
3
|
import { AudioPlayerElement, PlayerController } from "./player.js";
|
|
3
4
|
import { AudioSkinElement } from "./skin.js";
|
|
4
5
|
import { NeutralAudioSkinElement } from "./neutral-skin.js";
|
|
5
6
|
import { audioFeatures } from "@videojs/core/dom";
|
|
6
|
-
export { AudioPlayerElement, AudioSkinElement, CompatAudioSkinElement, NeutralAudioSkinElement, PlayerController, audioFeatures };
|
|
7
|
+
export { AudioPlayerElement, AudioSkinElement, CompatAudioSkinElement, NeutralAudioSkinElement, PlayerController, ScaffoldAudioSkinElement, audioFeatures };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CompatAudioSkinElement } from "./compat-skin.js";
|
|
2
2
|
import { NeutralAudioSkinElement } from "./neutral-skin.js";
|
|
3
3
|
import { AudioPlayerElement, PlayerController } from "./player.js";
|
|
4
|
+
import { ScaffoldAudioSkinElement } from "./scaffold-skin.js";
|
|
4
5
|
import { AudioSkinElement } from "./skin.js";
|
|
5
6
|
import { audioFeatures } from "@videojs/core/dom";
|
|
6
|
-
export { AudioPlayerElement, AudioSkinElement, CompatAudioSkinElement, NeutralAudioSkinElement, PlayerController, audioFeatures };
|
|
7
|
+
export { AudioPlayerElement, AudioSkinElement, CompatAudioSkinElement, NeutralAudioSkinElement, PlayerController, ScaffoldAudioSkinElement, audioFeatures };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SkinElement } from "../skin.js";
|
|
2
|
+
//#region src/presets/audio/scaffold-skin.d.ts
|
|
3
|
+
/** Packaged scaffold audio UI registered as `<audio-scaffold-skin>`. */
|
|
4
|
+
export declare class ScaffoldAudioSkinElement extends SkinElement {
|
|
5
|
+
static readonly tagName = "audio-scaffold-skin";
|
|
6
|
+
static styles: import("@videojs/utils/dom").ShadowStyle;
|
|
7
|
+
static template: HTMLTemplateElement | null;
|
|
8
|
+
}
|
|
9
|
+
declare global {
|
|
10
|
+
interface HTMLElementTagNameMap {
|
|
11
|
+
[ScaffoldAudioSkinElement.tagName]: ScaffoldAudioSkinElement;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
//# sourceMappingURL=scaffold-skin.d.ts.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SkinElement } from "../skin.js";
|
|
2
|
+
import { template } from "../../internal/skins/scaffold-audio/template.js";
|
|
3
|
+
import scaffold_skin_default from "../../define/audio/scaffold-skin2.js";
|
|
4
|
+
import { createShadowStyle } from "@videojs/utils/dom";
|
|
5
|
+
//#region src/presets/audio/scaffold-skin.ts
|
|
6
|
+
/** Packaged scaffold audio UI registered as `<audio-scaffold-skin>`. */
|
|
7
|
+
var ScaffoldAudioSkinElement = class extends SkinElement {
|
|
8
|
+
static {
|
|
9
|
+
this.tagName = "audio-scaffold-skin";
|
|
10
|
+
}
|
|
11
|
+
static {
|
|
12
|
+
this.styles = createShadowStyle(scaffold_skin_default);
|
|
13
|
+
}
|
|
14
|
+
static {
|
|
15
|
+
this.template = template;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { ScaffoldAudioSkinElement };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=scaffold-skin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold-skin.js","names":["styles"],"sources":["../../../../src/presets/audio/scaffold-skin.ts"],"sourcesContent":["import { createShadowStyle } from '@videojs/utils/dom';\n\nimport { template } from '../../internal/skins/scaffold-audio/template';\nimport { SkinElement } from '../skin';\n\nimport styles from '../../define/audio/scaffold-skin.css?inline';\n\n/** Packaged scaffold audio UI registered as `<audio-scaffold-skin>`. */\nexport class ScaffoldAudioSkinElement extends SkinElement {\n static readonly tagName = 'audio-scaffold-skin';\n static styles = createShadowStyle(styles);\n static template = template;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ScaffoldAudioSkinElement.tagName]: ScaffoldAudioSkinElement;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,2BAAb,cAA8C,YAAY;;EAC9B,KAAA,UAAA;;;EACV,KAAA,SAAA,kBAAkBA,qBAAM;;;EACtB,KAAA,WAAA;;AACpB"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import skin_default from "../../define/background/skin2.js";
|
|
2
|
-
import { SKIN_HELP_TEXT, SKIN_HELP_URL } from "@videojs/core";
|
|
3
2
|
import { ReactiveElement } from "@videojs/element";
|
|
4
3
|
import { ensureGlobalStyle } from "@videojs/utils/dom";
|
|
5
4
|
//#region src/presets/background/skin.ts
|
|
@@ -11,7 +10,6 @@ function getTemplateHTML() {
|
|
|
11
10
|
<slot name="media"></slot>
|
|
12
11
|
<slot></slot>
|
|
13
12
|
</media-container>
|
|
14
|
-
<a rel="help" href="${SKIN_HELP_URL}" hidden>${SKIN_HELP_TEXT}</a>
|
|
15
13
|
`;
|
|
16
14
|
}
|
|
17
15
|
var BackgroundVideoSkinElement = class BackgroundVideoSkinElement extends ReactiveElement {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin.js","names":["styles"],"sources":["../../../../src/presets/background/skin.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"skin.js","names":["styles"],"sources":["../../../../src/presets/background/skin.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { ensureGlobalStyle } from '@videojs/utils/dom';\n\nimport styles from '../../define/background/skin.css?inline';\n\nconst STYLES_ID = '__media-background-styles';\n\nfunction getTemplateHTML() {\n return /* html */ `\n <media-container>\n <!-- @deprecated slot=\"media\" is no longer required, use the default slot instead -->\n <slot name=\"media\"></slot>\n <slot></slot>\n </media-container>\n `;\n}\n\nexport class BackgroundVideoSkinElement extends ReactiveElement {\n static readonly tagName = 'background-video-skin';\n static shadowRootOptions: ShadowRootInit = { mode: 'open' };\n static getTemplateHTML = getTemplateHTML;\n\n constructor() {\n super();\n\n ensureGlobalStyle(STYLES_ID, styles);\n\n if (!this.shadowRoot) {\n this.attachShadow(BackgroundVideoSkinElement.shadowRootOptions);\n this.shadowRoot!.innerHTML = getTemplateHTML();\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [BackgroundVideoSkinElement.tagName]: BackgroundVideoSkinElement;\n }\n}\n"],"mappings":";;;;AAKA,MAAM,YAAY;AAElB,SAAS,kBAAkB;CACzB,OAAkB;;;;;;;AAOpB;AAEA,IAAa,6BAAb,MAAa,mCAAmC,gBAAgB;;EACpC,KAAA,UAAA;;;EACiB,KAAA,oBAAA,EAAE,MAAM,OAAO;;;EACjC,KAAA,kBAAA;;CAEzB,cAAc;EACZ,MAAM;EAEN,kBAAkB,WAAWA,YAAM;EAEnC,IAAI,CAAC,KAAK,YAAY;GACpB,KAAK,aAAa,2BAA2B,iBAAiB;GAC9D,KAAK,WAAY,YAAY,gBAAgB;EAC/C;CACF;AACF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CompatLiveAudioSkinElement } from "./compat-skin.js";
|
|
2
|
+
import { ScaffoldLiveAudioSkinElement } from "./scaffold-skin.js";
|
|
2
3
|
import { LiveAudioPlayerElement, PlayerController } from "./player.js";
|
|
3
4
|
import { LiveAudioSkinElement } from "./skin.js";
|
|
4
5
|
import { NeutralLiveAudioSkinElement } from "./neutral-skin.js";
|
|
5
6
|
import { liveAudioFeatures } from "@videojs/core/dom";
|
|
6
|
-
export { CompatLiveAudioSkinElement, LiveAudioPlayerElement, LiveAudioSkinElement, NeutralLiveAudioSkinElement, PlayerController, liveAudioFeatures };
|
|
7
|
+
export { CompatLiveAudioSkinElement, LiveAudioPlayerElement, LiveAudioSkinElement, NeutralLiveAudioSkinElement, PlayerController, ScaffoldLiveAudioSkinElement, liveAudioFeatures };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CompatLiveAudioSkinElement } from "./compat-skin.js";
|
|
2
2
|
import { NeutralLiveAudioSkinElement } from "./neutral-skin.js";
|
|
3
3
|
import { LiveAudioPlayerElement, PlayerController } from "./player.js";
|
|
4
|
+
import { ScaffoldLiveAudioSkinElement } from "./scaffold-skin.js";
|
|
4
5
|
import { LiveAudioSkinElement } from "./skin.js";
|
|
5
6
|
import { liveAudioFeatures } from "@videojs/core/dom";
|
|
6
|
-
export { CompatLiveAudioSkinElement, LiveAudioPlayerElement, LiveAudioSkinElement, NeutralLiveAudioSkinElement, PlayerController, liveAudioFeatures };
|
|
7
|
+
export { CompatLiveAudioSkinElement, LiveAudioPlayerElement, LiveAudioSkinElement, NeutralLiveAudioSkinElement, PlayerController, ScaffoldLiveAudioSkinElement, liveAudioFeatures };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SkinElement } from "../skin.js";
|
|
2
|
+
//#region src/presets/live-audio/scaffold-skin.d.ts
|
|
3
|
+
/** Packaged scaffold live-audio UI registered as `<live-audio-scaffold-skin>`. */
|
|
4
|
+
export declare class ScaffoldLiveAudioSkinElement extends SkinElement {
|
|
5
|
+
static readonly tagName = "live-audio-scaffold-skin";
|
|
6
|
+
static styles: import("@videojs/utils/dom").ShadowStyle;
|
|
7
|
+
static template: HTMLTemplateElement | null;
|
|
8
|
+
}
|
|
9
|
+
declare global {
|
|
10
|
+
interface HTMLElementTagNameMap {
|
|
11
|
+
[ScaffoldLiveAudioSkinElement.tagName]: ScaffoldLiveAudioSkinElement;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
//# sourceMappingURL=scaffold-skin.d.ts.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SkinElement } from "../skin.js";
|
|
2
|
+
import { template } from "../../internal/skins/scaffold-live-audio/template.js";
|
|
3
|
+
import scaffold_skin_default from "../../define/live-audio/scaffold-skin2.js";
|
|
4
|
+
import { createShadowStyle } from "@videojs/utils/dom";
|
|
5
|
+
//#region src/presets/live-audio/scaffold-skin.ts
|
|
6
|
+
/** Packaged scaffold live-audio UI registered as `<live-audio-scaffold-skin>`. */
|
|
7
|
+
var ScaffoldLiveAudioSkinElement = class extends SkinElement {
|
|
8
|
+
static {
|
|
9
|
+
this.tagName = "live-audio-scaffold-skin";
|
|
10
|
+
}
|
|
11
|
+
static {
|
|
12
|
+
this.styles = createShadowStyle(scaffold_skin_default);
|
|
13
|
+
}
|
|
14
|
+
static {
|
|
15
|
+
this.template = template;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { ScaffoldLiveAudioSkinElement };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=scaffold-skin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold-skin.js","names":["styles"],"sources":["../../../../src/presets/live-audio/scaffold-skin.ts"],"sourcesContent":["import { createShadowStyle } from '@videojs/utils/dom';\n\nimport { template } from '../../internal/skins/scaffold-live-audio/template';\nimport { SkinElement } from '../skin';\n\nimport styles from '../../define/live-audio/scaffold-skin.css?inline';\n\n/** Packaged scaffold live-audio UI registered as `<live-audio-scaffold-skin>`. */\nexport class ScaffoldLiveAudioSkinElement extends SkinElement {\n static readonly tagName = 'live-audio-scaffold-skin';\n static styles = createShadowStyle(styles);\n static template = template;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ScaffoldLiveAudioSkinElement.tagName]: ScaffoldLiveAudioSkinElement;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,+BAAb,cAAkD,YAAY;;EAClC,KAAA,UAAA;;;EACV,KAAA,SAAA,kBAAkBA,qBAAM;;;EACtB,KAAA,WAAA;;AACpB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CompatLiveVideoSkinElement } from "./compat-skin.js";
|
|
2
|
+
import { ScaffoldLiveVideoSkinElement } from "./scaffold-skin.js";
|
|
2
3
|
import { LiveVideoPlayerElement, PlayerController } from "./player.js";
|
|
3
4
|
import { LiveVideoSkinElement } from "./skin.js";
|
|
4
5
|
import { NeutralLiveVideoSkinElement } from "./neutral-skin.js";
|
|
5
6
|
import { liveVideoFeatures } from "@videojs/core/dom";
|
|
6
|
-
export { CompatLiveVideoSkinElement, LiveVideoPlayerElement, LiveVideoSkinElement, NeutralLiveVideoSkinElement, PlayerController, liveVideoFeatures };
|
|
7
|
+
export { CompatLiveVideoSkinElement, LiveVideoPlayerElement, LiveVideoSkinElement, NeutralLiveVideoSkinElement, PlayerController, ScaffoldLiveVideoSkinElement, liveVideoFeatures };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CompatLiveVideoSkinElement } from "./compat-skin.js";
|
|
2
2
|
import { NeutralLiveVideoSkinElement } from "./neutral-skin.js";
|
|
3
3
|
import { LiveVideoPlayerElement, PlayerController } from "./player.js";
|
|
4
|
+
import { ScaffoldLiveVideoSkinElement } from "./scaffold-skin.js";
|
|
4
5
|
import { LiveVideoSkinElement } from "./skin.js";
|
|
5
6
|
import { liveVideoFeatures } from "@videojs/core/dom";
|
|
6
|
-
export { CompatLiveVideoSkinElement, LiveVideoPlayerElement, LiveVideoSkinElement, NeutralLiveVideoSkinElement, PlayerController, liveVideoFeatures };
|
|
7
|
+
export { CompatLiveVideoSkinElement, LiveVideoPlayerElement, LiveVideoSkinElement, NeutralLiveVideoSkinElement, PlayerController, ScaffoldLiveVideoSkinElement, liveVideoFeatures };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SkinElement } from "../skin.js";
|
|
2
|
+
//#region src/presets/live-video/scaffold-skin.d.ts
|
|
3
|
+
/** Packaged scaffold live-video UI registered as `<live-video-scaffold-skin>`. */
|
|
4
|
+
export declare class ScaffoldLiveVideoSkinElement extends SkinElement {
|
|
5
|
+
static readonly tagName = "live-video-scaffold-skin";
|
|
6
|
+
static styles: import("@videojs/utils/dom").ShadowStyle;
|
|
7
|
+
static template: HTMLTemplateElement | null;
|
|
8
|
+
}
|
|
9
|
+
declare global {
|
|
10
|
+
interface HTMLElementTagNameMap {
|
|
11
|
+
[ScaffoldLiveVideoSkinElement.tagName]: ScaffoldLiveVideoSkinElement;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
//# sourceMappingURL=scaffold-skin.d.ts.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SkinElement } from "../skin.js";
|
|
2
|
+
import { template } from "../../internal/skins/scaffold-live-video/template.js";
|
|
3
|
+
import scaffold_skin_default from "../../define/live-video/scaffold-skin2.js";
|
|
4
|
+
import { createShadowStyle } from "@videojs/utils/dom";
|
|
5
|
+
//#region src/presets/live-video/scaffold-skin.ts
|
|
6
|
+
/** Packaged scaffold live-video UI registered as `<live-video-scaffold-skin>`. */
|
|
7
|
+
var ScaffoldLiveVideoSkinElement = class extends SkinElement {
|
|
8
|
+
static {
|
|
9
|
+
this.tagName = "live-video-scaffold-skin";
|
|
10
|
+
}
|
|
11
|
+
static {
|
|
12
|
+
this.styles = createShadowStyle(scaffold_skin_default);
|
|
13
|
+
}
|
|
14
|
+
static {
|
|
15
|
+
this.template = template;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { ScaffoldLiveVideoSkinElement };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=scaffold-skin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold-skin.js","names":["styles"],"sources":["../../../../src/presets/live-video/scaffold-skin.ts"],"sourcesContent":["import { createShadowStyle } from '@videojs/utils/dom';\n\nimport { template } from '../../internal/skins/scaffold-live-video/template';\nimport { SkinElement } from '../skin';\n\nimport styles from '../../define/live-video/scaffold-skin.css?inline';\n\n/** Packaged scaffold live-video UI registered as `<live-video-scaffold-skin>`. */\nexport class ScaffoldLiveVideoSkinElement extends SkinElement {\n static readonly tagName = 'live-video-scaffold-skin';\n static styles = createShadowStyle(styles);\n static template = template;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ScaffoldLiveVideoSkinElement.tagName]: ScaffoldLiveVideoSkinElement;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,+BAAb,cAAkD,YAAY;;EAClC,KAAA,UAAA;;;EACV,KAAA,SAAA,kBAAkBA,qBAAM;;;EACtB,KAAA,WAAA;;AACpB"}
|
package/dist/dev/presets/skin.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import global_default from "../define/global.js";
|
|
2
2
|
import shadow_default from "../define/shadow.js";
|
|
3
|
-
import { SKIN_HELP_TEXT, SKIN_HELP_URL } from "@videojs/core";
|
|
4
3
|
import { ReactiveElement } from "@videojs/element";
|
|
5
4
|
import { applyShadowStyles, createShadowStyle, ensureGlobalStyle, renderTemplate } from "@videojs/utils/dom";
|
|
6
5
|
//#region src/presets/skin.ts
|
|
@@ -21,22 +20,12 @@ var SkinElement = class extends ReactiveElement {
|
|
|
21
20
|
const ctor = this.constructor;
|
|
22
21
|
this.attachShadow(ctor.shadowRootOptions);
|
|
23
22
|
if (ctor.template) renderTemplate(this.shadowRoot, ctor.template);
|
|
24
|
-
this.shadowRoot.append(createHelpLink(this.ownerDocument));
|
|
25
23
|
const sheets = [shadowSheet];
|
|
26
24
|
if (ctor.styles) sheets.push(ctor.styles);
|
|
27
25
|
applyShadowStyles(this.shadowRoot, sheets);
|
|
28
26
|
}
|
|
29
27
|
}
|
|
30
28
|
};
|
|
31
|
-
/** Every packaged skin links to the page that explains what the player is. See `SKIN_HELP_URL`. */
|
|
32
|
-
function createHelpLink(doc) {
|
|
33
|
-
const link = doc.createElement("a");
|
|
34
|
-
link.rel = "help";
|
|
35
|
-
link.href = SKIN_HELP_URL;
|
|
36
|
-
link.hidden = true;
|
|
37
|
-
link.textContent = SKIN_HELP_TEXT;
|
|
38
|
-
return link;
|
|
39
|
-
}
|
|
40
29
|
//#endregion
|
|
41
30
|
export { SkinElement };
|
|
42
31
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin.js","names":["shadowStyles","globalStyles"],"sources":["../../../src/presets/skin.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"skin.js","names":["shadowStyles","globalStyles"],"sources":["../../../src/presets/skin.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport {\n applyShadowStyles,\n createShadowStyle,\n ensureGlobalStyle,\n renderTemplate,\n type ShadowStyle,\n} from '@videojs/utils/dom';\n\nimport globalStyles from '../define/global.css?inline';\nimport shadowStyles from '../define/shadow.css?inline';\n\nconst STYLES_ID = '__media-styles';\nconst shadowSheet = createShadowStyle(shadowStyles);\n\n/**\n * Base element for skin definitions. Attaches a shadow root, clones `static template` into it, and applies shared +\n * per-skin styles via `adoptedStyleSheets` (or `<style>` fallback).\n */\nexport class SkinElement extends ReactiveElement {\n static shadowRootOptions: ShadowRootInit = { mode: 'open' };\n static styles?: ShadowStyle;\n static template?: HTMLTemplateElement | null;\n\n constructor() {\n super();\n\n ensureGlobalStyle(STYLES_ID, globalStyles);\n\n if (!this.shadowRoot) {\n const ctor = this.constructor as typeof SkinElement;\n\n this.attachShadow(ctor.shadowRootOptions);\n\n if (ctor.template) {\n renderTemplate(this.shadowRoot!, ctor.template);\n }\n\n const sheets: ShadowStyle[] = [shadowSheet];\n\n if (ctor.styles) {\n sheets.push(ctor.styles);\n }\n\n applyShadowStyles(this.shadowRoot!, sheets);\n }\n }\n}\n"],"mappings":";;;;;AAYA,MAAM,YAAY;AAClB,MAAM,cAAc,kBAAkBA,cAAY;;;;;AAMlD,IAAa,cAAb,cAAiC,gBAAgB;;EACJ,KAAA,oBAAA,EAAE,MAAM,OAAO;;CAI1D,cAAc;EACZ,MAAM;EAEN,kBAAkB,WAAWC,cAAY;EAEzC,IAAI,CAAC,KAAK,YAAY;GACpB,MAAM,OAAO,KAAK;GAElB,KAAK,aAAa,KAAK,iBAAiB;GAExC,IAAI,KAAK,UACP,eAAe,KAAK,YAAa,KAAK,QAAQ;GAGhD,MAAM,SAAwB,CAAC,WAAW;GAE1C,IAAI,KAAK,QACP,OAAO,KAAK,KAAK,MAAM;GAGzB,kBAAkB,KAAK,YAAa,MAAM;EAC5C;CACF;AACF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CompatVideoSkinElement } from "./compat-skin.js";
|
|
2
|
+
import { ScaffoldVideoSkinElement } from "./scaffold-skin.js";
|
|
2
3
|
import { NeutralVideoSkinElement } from "./neutral-skin.js";
|
|
3
4
|
import { PlayerController, VideoPlayerElement } from "./player.js";
|
|
4
5
|
import { VideoSkinElement } from "./skin.js";
|
|
5
6
|
import { videoFeatures } from "@videojs/core/dom";
|
|
6
|
-
export { CompatVideoSkinElement, NeutralVideoSkinElement, PlayerController, VideoPlayerElement, VideoSkinElement, videoFeatures };
|
|
7
|
+
export { CompatVideoSkinElement, NeutralVideoSkinElement, PlayerController, ScaffoldVideoSkinElement, VideoPlayerElement, VideoSkinElement, videoFeatures };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CompatVideoSkinElement } from "./compat-skin.js";
|
|
2
2
|
import { NeutralVideoSkinElement } from "./neutral-skin.js";
|
|
3
3
|
import { PlayerController, VideoPlayerElement } from "./player.js";
|
|
4
|
+
import { ScaffoldVideoSkinElement } from "./scaffold-skin.js";
|
|
4
5
|
import { VideoSkinElement } from "./skin.js";
|
|
5
6
|
import { videoFeatures } from "@videojs/core/dom";
|
|
6
|
-
export { CompatVideoSkinElement, NeutralVideoSkinElement, PlayerController, VideoPlayerElement, VideoSkinElement, videoFeatures };
|
|
7
|
+
export { CompatVideoSkinElement, NeutralVideoSkinElement, PlayerController, ScaffoldVideoSkinElement, VideoPlayerElement, VideoSkinElement, videoFeatures };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SkinElement } from "../skin.js";
|
|
2
|
+
//#region src/presets/video/scaffold-skin.d.ts
|
|
3
|
+
/** Packaged scaffold video UI registered as `<video-scaffold-skin>`. */
|
|
4
|
+
export declare class ScaffoldVideoSkinElement extends SkinElement {
|
|
5
|
+
static readonly tagName = "video-scaffold-skin";
|
|
6
|
+
static styles: import("@videojs/utils/dom").ShadowStyle;
|
|
7
|
+
static template: HTMLTemplateElement | null;
|
|
8
|
+
}
|
|
9
|
+
declare global {
|
|
10
|
+
interface HTMLElementTagNameMap {
|
|
11
|
+
[ScaffoldVideoSkinElement.tagName]: ScaffoldVideoSkinElement;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
//# sourceMappingURL=scaffold-skin.d.ts.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SkinElement } from "../skin.js";
|
|
2
|
+
import { template } from "../../internal/skins/scaffold-video/template.js";
|
|
3
|
+
import scaffold_skin_default from "../../define/video/scaffold-skin2.js";
|
|
4
|
+
import { createShadowStyle } from "@videojs/utils/dom";
|
|
5
|
+
//#region src/presets/video/scaffold-skin.ts
|
|
6
|
+
/** Packaged scaffold video UI registered as `<video-scaffold-skin>`. */
|
|
7
|
+
var ScaffoldVideoSkinElement = class extends SkinElement {
|
|
8
|
+
static {
|
|
9
|
+
this.tagName = "video-scaffold-skin";
|
|
10
|
+
}
|
|
11
|
+
static {
|
|
12
|
+
this.styles = createShadowStyle(scaffold_skin_default);
|
|
13
|
+
}
|
|
14
|
+
static {
|
|
15
|
+
this.template = template;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { ScaffoldVideoSkinElement };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=scaffold-skin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold-skin.js","names":["styles"],"sources":["../../../../src/presets/video/scaffold-skin.ts"],"sourcesContent":["import { createShadowStyle } from '@videojs/utils/dom';\n\nimport { template } from '../../internal/skins/scaffold-video/template';\nimport { SkinElement } from '../skin';\n\nimport styles from '../../define/video/scaffold-skin.css?inline';\n\n/** Packaged scaffold video UI registered as `<video-scaffold-skin>`. */\nexport class ScaffoldVideoSkinElement extends SkinElement {\n static readonly tagName = 'video-scaffold-skin';\n static styles = createShadowStyle(styles);\n static template = template;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ScaffoldVideoSkinElement.tagName]: ScaffoldVideoSkinElement;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,2BAAb,cAA8C,YAAY;;EAC9B,KAAA,UAAA;;;EACV,KAAA,SAAA,kBAAkBA,qBAAM;;;EACtB,KAAA,WAAA;;AACpB"}
|
|
@@ -103,7 +103,9 @@ var SliderElement = class extends UIElement {
|
|
|
103
103
|
this.dispatchEvent(new CustomEvent("drag-end", { bubbles: true }));
|
|
104
104
|
},
|
|
105
105
|
adjustPercent: (raw, thumbSize, trackSize) => this.#core.adjustPercentForAlignment(raw, thumbSize, trackSize),
|
|
106
|
-
onResize: () =>
|
|
106
|
+
onResize: () => {
|
|
107
|
+
if (this.thumbAlignment === "edge") this.requestUpdate();
|
|
108
|
+
}
|
|
107
109
|
});
|
|
108
110
|
applyElementProps(this, this.#slider.rootProps, { signal });
|
|
109
111
|
applyStyles(this, this.#slider.rootStyle);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","names":[],"sources":["../../../../src/ui/slider/element.ts"],"sourcesContent":["import { SliderCore, SliderDataAttrs, type SliderProps } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createSlider,\n getSliderCSSVars,\n type SliderApi,\n selectControls,\n} from '@videojs/core/dom';\nimport { type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\nimport { applyStyles } from '@videojs/utils/dom';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { UIElement } from '../ui-element';\nimport { sliderContext } from './context';\n\n/**\n * @fires value-change - Fired while the slider value changes during an interaction.\n * @fires value-commit - Fired when an interaction commits the slider value.\n * @fires drag-start - Fired when a pointer drag starts.\n * @fires drag-end - Fired when a pointer drag ends.\n */\nexport class SliderElement extends UIElement {\n static readonly tagName = 'media-slider';\n\n static override properties = {\n label: { type: String },\n value: { type: Number },\n min: { type: Number },\n max: { type: Number },\n step: { type: Number },\n largeStep: { type: Number, attribute: 'large-step' },\n orientation: { type: String },\n disabled: { type: Boolean },\n thumbAlignment: { type: String, attribute: 'thumb-alignment' },\n } satisfies PropertyDeclarationMap<keyof SliderProps>;\n\n label: Text | string = '';\n value = SliderCore.defaultProps.value;\n min = SliderCore.defaultProps.min;\n max = SliderCore.defaultProps.max;\n step = SliderCore.defaultProps.step;\n largeStep = SliderCore.defaultProps.largeStep;\n orientation = SliderCore.defaultProps.orientation;\n disabled = SliderCore.defaultProps.disabled;\n thumbAlignment = SliderCore.defaultProps.thumbAlignment;\n\n readonly #core = new SliderCore();\n readonly #controlsState = new PlayerController(this, playerContext, selectControls);\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #provider = new ContextProvider(this, { context: sliderContext });\n\n #slider: SliderApi | null = null;\n #disconnect: AbortController | null = null;\n #releaseControlsLock: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.destroyed) return;\n\n this.#disconnect = new AbortController();\n const signal = this.#disconnect.signal;\n\n this.#slider = createSlider({\n getElement: () => this,\n getThumbElement: () => this.querySelector<HTMLElement>('media-slider-thumb'),\n getOrientation: () => this.orientation,\n isDisabled: () => this.disabled,\n getPercent: () => this.#core.percentFromValue(this.value),\n getStepPercent: () => this.#core.getStepPercent(),\n getLargeStepPercent: () => this.#core.getLargeStepPercent(),\n onValueChange: (percent) => {\n this.value = this.#core.valueFromPercent(percent);\n this.dispatchEvent(new CustomEvent('value-change', { detail: { value: this.value }, bubbles: true }));\n },\n onValueCommit: (percent) => {\n this.value = this.#core.valueFromPercent(percent);\n this.dispatchEvent(new CustomEvent('value-commit', { detail: { value: this.value }, bubbles: true }));\n },\n onPressStart: () => {\n this.#releaseControlsLock ??= this.#controlsState.value?.requestControlsLock() ?? null;\n },\n onPressEnd: () => this.#releaseControlsVisibilityLock(),\n onDragStart: () => {\n this.dispatchEvent(new CustomEvent('drag-start', { bubbles: true }));\n },\n onDragEnd: () => {\n this.dispatchEvent(new CustomEvent('drag-end', { bubbles: true }));\n },\n adjustPercent: (raw, thumbSize, trackSize) => this.#core.adjustPercentForAlignment(raw, thumbSize, trackSize),\n onResize: () => this.requestUpdate(),\n });\n\n applyElementProps(this, this.#slider.rootProps, { signal });\n applyStyles(this, this.#slider.rootStyle);\n this.#slider.input.subscribe(() => this.requestUpdate(), { signal });\n }\n\n override disconnectedCallback(): void {\n this.#releaseControlsVisibilityLock();\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n override destroyCallback(): void {\n this.#releaseControlsVisibilityLock();\n this.#slider?.destroy();\n super.destroyCallback();\n }\n\n #releaseControlsVisibilityLock(): void {\n this.#releaseControlsLock?.();\n this.#releaseControlsLock = null;\n }\n\n protected override willUpdate(_changed: PropertyValues): void {\n super.willUpdate(_changed);\n this.#core.setProps(this);\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n if (!this.#slider) return;\n\n this.#core.setInput(this.#slider.input.current);\n const state = this.#core.getSliderState(this.value);\n\n const cssVars = getSliderCSSVars(this.#slider.adjustForAlignment(state));\n\n applyStyles(this, cssVars);\n\n // Apply state data attributes to the root element.\n applyStateDataAttrs(this, state, SliderDataAttrs);\n\n // Provide context to child elements (thumb, value, track, etc.).\n this.#provider.setValue({\n state,\n stateAttrMap: SliderDataAttrs,\n pointerValue: this.#core.valueFromPercent(state.pointerPercent),\n thumbAttrs: (() => {\n const attrs = this.#core.getAttrs(state);\n\n return { ...attrs, 'aria-label': translateText(attrs['aria-label'], this.#i18n.value) };\n })(),\n thumbProps: this.#slider.thumbProps,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AA2BA,IAAa,gBAAb,cAAmC,UAAU;;;EAepB,KAAA,QAAA;EACf,KAAA,QAAA,WAAW,aAAa;EAC1B,KAAA,MAAA,WAAW,aAAa;EACxB,KAAA,MAAA,WAAW,aAAa;EACvB,KAAA,OAAA,WAAW,aAAa;EACnB,KAAA,YAAA,WAAW,aAAa;EACtB,KAAA,cAAA,WAAW,aAAa;EAC3B,KAAA,WAAA,WAAW,aAAa;EAClB,KAAA,iBAAA,WAAW,aAAa;EAExB,KAAA,QAAA,IAAI,WAAW;EACN,KAAA,iBAAA,IAAI,iBAAiB,MAAM,eAAe,cAAc;EACjE,KAAA,QAAA,IAAI,eAAe,MAAM,WAAW;EAChC,KAAA,YAAA,IAAI,gBAAgB,MAAM,EAAE,SAAS,cAAc,CAAC;EAE7C,KAAA,UAAA;EACU,KAAA,cAAA;EACM,KAAA,uBAAA;;;EA/BlB,KAAA,UAAA;;;EAEG,KAAA,aAAA;GAC3B,OAAO,EAAE,MAAM,OAAO;GACtB,OAAO,EAAE,MAAM,OAAO;GACtB,KAAK,EAAE,MAAM,OAAO;GACpB,KAAK,EAAE,MAAM,OAAO;GACpB,MAAM,EAAE,MAAM,OAAO;GACrB,WAAW;IAAE,MAAM;IAAQ,WAAW;GAAa;GACnD,aAAa,EAAE,MAAM,OAAO;GAC5B,UAAU,EAAE,MAAM,QAAQ;GAC1B,gBAAgB;IAAE,MAAM;IAAQ,WAAW;GAAkB;EAC/D;;CAYA;CACA;CACA;CACA;CAEA;CACA;CACA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EAExB,IAAI,KAAK,WAAW;EAEpB,KAAK,cAAc,IAAI,gBAAgB;EACvC,MAAM,SAAS,KAAK,YAAY;EAEhC,KAAK,UAAU,aAAa;GAC1B,kBAAkB;GAClB,uBAAuB,KAAK,cAA2B,oBAAoB;GAC3E,sBAAsB,KAAK;GAC3B,kBAAkB,KAAK;GACvB,kBAAkB,KAAK,MAAM,iBAAiB,KAAK,KAAK;GACxD,sBAAsB,KAAK,MAAM,eAAe;GAChD,2BAA2B,KAAK,MAAM,oBAAoB;GAC1D,gBAAgB,YAAY;IAC1B,KAAK,QAAQ,KAAK,MAAM,iBAAiB,OAAO;IAChD,KAAK,cAAc,IAAI,YAAY,gBAAgB;KAAE,QAAQ,EAAE,OAAO,KAAK,MAAM;KAAG,SAAS;IAAK,CAAC,CAAC;GACtG;GACA,gBAAgB,YAAY;IAC1B,KAAK,QAAQ,KAAK,MAAM,iBAAiB,OAAO;IAChD,KAAK,cAAc,IAAI,YAAY,gBAAgB;KAAE,QAAQ,EAAE,OAAO,KAAK,MAAM;KAAG,SAAS;IAAK,CAAC,CAAC;GACtG;GACA,oBAAoB;IAClB,KAAK,yBAAyB,KAAK,eAAe,OAAO,oBAAoB,KAAK;GACpF;GACA,kBAAkB,KAAK,+BAA+B;GACtD,mBAAmB;IACjB,KAAK,cAAc,IAAI,YAAY,cAAc,EAAE,SAAS,KAAK,CAAC,CAAC;GACrE;GACA,iBAAiB;IACf,KAAK,cAAc,IAAI,YAAY,YAAY,EAAE,SAAS,KAAK,CAAC,CAAC;GACnE;GACA,gBAAgB,KAAK,WAAW,cAAc,KAAK,MAAM,0BAA0B,KAAK,WAAW,SAAS;
|
|
1
|
+
{"version":3,"file":"element.js","names":[],"sources":["../../../../src/ui/slider/element.ts"],"sourcesContent":["import { SliderCore, SliderDataAttrs, type SliderProps } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createSlider,\n getSliderCSSVars,\n type SliderApi,\n selectControls,\n} from '@videojs/core/dom';\nimport { type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\nimport { applyStyles } from '@videojs/utils/dom';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { UIElement } from '../ui-element';\nimport { sliderContext } from './context';\n\n/**\n * @fires value-change - Fired while the slider value changes during an interaction.\n * @fires value-commit - Fired when an interaction commits the slider value.\n * @fires drag-start - Fired when a pointer drag starts.\n * @fires drag-end - Fired when a pointer drag ends.\n */\nexport class SliderElement extends UIElement {\n static readonly tagName = 'media-slider';\n\n static override properties = {\n label: { type: String },\n value: { type: Number },\n min: { type: Number },\n max: { type: Number },\n step: { type: Number },\n largeStep: { type: Number, attribute: 'large-step' },\n orientation: { type: String },\n disabled: { type: Boolean },\n thumbAlignment: { type: String, attribute: 'thumb-alignment' },\n } satisfies PropertyDeclarationMap<keyof SliderProps>;\n\n label: Text | string = '';\n value = SliderCore.defaultProps.value;\n min = SliderCore.defaultProps.min;\n max = SliderCore.defaultProps.max;\n step = SliderCore.defaultProps.step;\n largeStep = SliderCore.defaultProps.largeStep;\n orientation = SliderCore.defaultProps.orientation;\n disabled = SliderCore.defaultProps.disabled;\n thumbAlignment = SliderCore.defaultProps.thumbAlignment;\n\n readonly #core = new SliderCore();\n readonly #controlsState = new PlayerController(this, playerContext, selectControls);\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #provider = new ContextProvider(this, { context: sliderContext });\n\n #slider: SliderApi | null = null;\n #disconnect: AbortController | null = null;\n #releaseControlsLock: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.destroyed) return;\n\n this.#disconnect = new AbortController();\n const signal = this.#disconnect.signal;\n\n this.#slider = createSlider({\n getElement: () => this,\n getThumbElement: () => this.querySelector<HTMLElement>('media-slider-thumb'),\n getOrientation: () => this.orientation,\n isDisabled: () => this.disabled,\n getPercent: () => this.#core.percentFromValue(this.value),\n getStepPercent: () => this.#core.getStepPercent(),\n getLargeStepPercent: () => this.#core.getLargeStepPercent(),\n onValueChange: (percent) => {\n this.value = this.#core.valueFromPercent(percent);\n this.dispatchEvent(new CustomEvent('value-change', { detail: { value: this.value }, bubbles: true }));\n },\n onValueCommit: (percent) => {\n this.value = this.#core.valueFromPercent(percent);\n this.dispatchEvent(new CustomEvent('value-commit', { detail: { value: this.value }, bubbles: true }));\n },\n onPressStart: () => {\n this.#releaseControlsLock ??= this.#controlsState.value?.requestControlsLock() ?? null;\n },\n onPressEnd: () => this.#releaseControlsVisibilityLock(),\n onDragStart: () => {\n this.dispatchEvent(new CustomEvent('drag-start', { bubbles: true }));\n },\n onDragEnd: () => {\n this.dispatchEvent(new CustomEvent('drag-end', { bubbles: true }));\n },\n adjustPercent: (raw, thumbSize, trackSize) => this.#core.adjustPercentForAlignment(raw, thumbSize, trackSize),\n // Only edge alignment depends on the slider's size.\n onResize: () => {\n if (this.thumbAlignment === 'edge') this.requestUpdate();\n },\n });\n\n applyElementProps(this, this.#slider.rootProps, { signal });\n applyStyles(this, this.#slider.rootStyle);\n this.#slider.input.subscribe(() => this.requestUpdate(), { signal });\n }\n\n override disconnectedCallback(): void {\n this.#releaseControlsVisibilityLock();\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n override destroyCallback(): void {\n this.#releaseControlsVisibilityLock();\n this.#slider?.destroy();\n super.destroyCallback();\n }\n\n #releaseControlsVisibilityLock(): void {\n this.#releaseControlsLock?.();\n this.#releaseControlsLock = null;\n }\n\n protected override willUpdate(_changed: PropertyValues): void {\n super.willUpdate(_changed);\n this.#core.setProps(this);\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n if (!this.#slider) return;\n\n this.#core.setInput(this.#slider.input.current);\n const state = this.#core.getSliderState(this.value);\n\n const cssVars = getSliderCSSVars(this.#slider.adjustForAlignment(state));\n\n applyStyles(this, cssVars);\n\n // Apply state data attributes to the root element.\n applyStateDataAttrs(this, state, SliderDataAttrs);\n\n // Provide context to child elements (thumb, value, track, etc.).\n this.#provider.setValue({\n state,\n stateAttrMap: SliderDataAttrs,\n pointerValue: this.#core.valueFromPercent(state.pointerPercent),\n thumbAttrs: (() => {\n const attrs = this.#core.getAttrs(state);\n\n return { ...attrs, 'aria-label': translateText(attrs['aria-label'], this.#i18n.value) };\n })(),\n thumbProps: this.#slider.thumbProps,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AA2BA,IAAa,gBAAb,cAAmC,UAAU;;;EAepB,KAAA,QAAA;EACf,KAAA,QAAA,WAAW,aAAa;EAC1B,KAAA,MAAA,WAAW,aAAa;EACxB,KAAA,MAAA,WAAW,aAAa;EACvB,KAAA,OAAA,WAAW,aAAa;EACnB,KAAA,YAAA,WAAW,aAAa;EACtB,KAAA,cAAA,WAAW,aAAa;EAC3B,KAAA,WAAA,WAAW,aAAa;EAClB,KAAA,iBAAA,WAAW,aAAa;EAExB,KAAA,QAAA,IAAI,WAAW;EACN,KAAA,iBAAA,IAAI,iBAAiB,MAAM,eAAe,cAAc;EACjE,KAAA,QAAA,IAAI,eAAe,MAAM,WAAW;EAChC,KAAA,YAAA,IAAI,gBAAgB,MAAM,EAAE,SAAS,cAAc,CAAC;EAE7C,KAAA,UAAA;EACU,KAAA,cAAA;EACM,KAAA,uBAAA;;;EA/BlB,KAAA,UAAA;;;EAEG,KAAA,aAAA;GAC3B,OAAO,EAAE,MAAM,OAAO;GACtB,OAAO,EAAE,MAAM,OAAO;GACtB,KAAK,EAAE,MAAM,OAAO;GACpB,KAAK,EAAE,MAAM,OAAO;GACpB,MAAM,EAAE,MAAM,OAAO;GACrB,WAAW;IAAE,MAAM;IAAQ,WAAW;GAAa;GACnD,aAAa,EAAE,MAAM,OAAO;GAC5B,UAAU,EAAE,MAAM,QAAQ;GAC1B,gBAAgB;IAAE,MAAM;IAAQ,WAAW;GAAkB;EAC/D;;CAYA;CACA;CACA;CACA;CAEA;CACA;CACA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EAExB,IAAI,KAAK,WAAW;EAEpB,KAAK,cAAc,IAAI,gBAAgB;EACvC,MAAM,SAAS,KAAK,YAAY;EAEhC,KAAK,UAAU,aAAa;GAC1B,kBAAkB;GAClB,uBAAuB,KAAK,cAA2B,oBAAoB;GAC3E,sBAAsB,KAAK;GAC3B,kBAAkB,KAAK;GACvB,kBAAkB,KAAK,MAAM,iBAAiB,KAAK,KAAK;GACxD,sBAAsB,KAAK,MAAM,eAAe;GAChD,2BAA2B,KAAK,MAAM,oBAAoB;GAC1D,gBAAgB,YAAY;IAC1B,KAAK,QAAQ,KAAK,MAAM,iBAAiB,OAAO;IAChD,KAAK,cAAc,IAAI,YAAY,gBAAgB;KAAE,QAAQ,EAAE,OAAO,KAAK,MAAM;KAAG,SAAS;IAAK,CAAC,CAAC;GACtG;GACA,gBAAgB,YAAY;IAC1B,KAAK,QAAQ,KAAK,MAAM,iBAAiB,OAAO;IAChD,KAAK,cAAc,IAAI,YAAY,gBAAgB;KAAE,QAAQ,EAAE,OAAO,KAAK,MAAM;KAAG,SAAS;IAAK,CAAC,CAAC;GACtG;GACA,oBAAoB;IAClB,KAAK,yBAAyB,KAAK,eAAe,OAAO,oBAAoB,KAAK;GACpF;GACA,kBAAkB,KAAK,+BAA+B;GACtD,mBAAmB;IACjB,KAAK,cAAc,IAAI,YAAY,cAAc,EAAE,SAAS,KAAK,CAAC,CAAC;GACrE;GACA,iBAAiB;IACf,KAAK,cAAc,IAAI,YAAY,YAAY,EAAE,SAAS,KAAK,CAAC,CAAC;GACnE;GACA,gBAAgB,KAAK,WAAW,cAAc,KAAK,MAAM,0BAA0B,KAAK,WAAW,SAAS;GAE5G,gBAAgB;IACd,IAAI,KAAK,mBAAmB,QAAQ,KAAK,cAAc;GACzD;EACF,CAAC;EAED,kBAAkB,MAAM,KAAK,QAAQ,WAAW,EAAE,OAAO,CAAC;EAC1D,YAAY,MAAM,KAAK,QAAQ,SAAS;EACxC,KAAK,QAAQ,MAAM,gBAAgB,KAAK,cAAc,GAAG,EAAE,OAAO,CAAC;CACrE;CAEA,uBAAsC;EACpC,KAAK,+BAA+B;EACpC,MAAM,qBAAqB;EAC3B,KAAK,aAAa,MAAM;EACxB,KAAK,cAAc;CACrB;CAEA,kBAAiC;EAC/B,KAAK,+BAA+B;EACpC,KAAK,SAAS,QAAQ;EACtB,MAAM,gBAAgB;CACxB;CAEA,iCAAuC;EACrC,KAAK,uBAAuB;EAC5B,KAAK,uBAAuB;CAC9B;CAEA,WAA8B,UAAgC;EAC5D,MAAM,WAAW,QAAQ;EACzB,KAAK,MAAM,SAAS,IAAI;CAC1B;CAEA,OAA0B,UAAgC;EACxD,MAAM,OAAO,QAAQ;EAErB,IAAI,CAAC,KAAK,SAAS;EAEnB,KAAK,MAAM,SAAS,KAAK,QAAQ,MAAM,OAAO;EAC9C,MAAM,QAAQ,KAAK,MAAM,eAAe,KAAK,KAAK;EAElD,MAAM,UAAU,iBAAiB,KAAK,QAAQ,mBAAmB,KAAK,CAAC;EAEvE,YAAY,MAAM,OAAO;EAGzB,oBAAoB,MAAM,OAAO,eAAe;EAGhD,KAAK,UAAU,SAAS;GACtB;GACA,cAAc;GACd,cAAc,KAAK,MAAM,iBAAiB,MAAM,cAAc;GAC9D,mBAAmB;IACjB,MAAM,QAAQ,KAAK,MAAM,SAAS,KAAK;IAEvC,OAAO;KAAE,GAAG;KAAO,cAAc,cAAc,MAAM,eAAe,KAAK,MAAM,KAAK;IAAE;GACxF,EAAA,CAAG;GACH,YAAY,KAAK,QAAQ;EAC3B,CAAC;CACH;AACF"}
|
|
@@ -4,9 +4,9 @@ import { playerContext } from "../../player/context.js";
|
|
|
4
4
|
import { PlayerController } from "../../player/controller.js";
|
|
5
5
|
import { UIElement } from "../ui-element.js";
|
|
6
6
|
import { sliderContext } from "../slider/context.js";
|
|
7
|
-
import { TimeSliderCore, TimeSliderDataAttrs } from "@videojs/core";
|
|
8
|
-
import { applyElementProps, applyStateDataAttrs, createSlider, getTimeSliderCSSVars, logMissingFeature, selectBuffer, selectControls, selectPlayback, selectTime } from "@videojs/core/dom";
|
|
9
|
-
import { hasTimeRange } from "@videojs/media";
|
|
7
|
+
import { SliderCSSVars, TimeSliderCore, TimeSliderDataAttrs } from "@videojs/core";
|
|
8
|
+
import { applyElementProps, applyStateDataAttrs, createSlider, createTimeSliderSeek, getTimeSliderCSSVars, logMissingFeature, selectBuffer, selectControls, selectPlayback, selectTime } from "@videojs/core/dom";
|
|
9
|
+
import { hasTimeRange, isMediaPlaying } from "@videojs/media";
|
|
10
10
|
import { ContextProvider } from "@videojs/element/context";
|
|
11
11
|
import { translateText } from "@videojs/core/i18n";
|
|
12
12
|
import { applyStyles } from "@videojs/utils/dom";
|
|
@@ -33,7 +33,9 @@ var TimeSliderElement = class extends UIElement {
|
|
|
33
33
|
this.#timeState = new PlayerController(this, playerContext, selectTime);
|
|
34
34
|
this.#bufferState = new PlayerController(this, playerContext, selectBuffer);
|
|
35
35
|
this.#playbackState = new PlayerController(this, playerContext, selectPlayback);
|
|
36
|
+
this.#seek = createTimeSliderSeek(SliderCSSVars.fill);
|
|
36
37
|
this.#i18n = new I18nController(this, i18nContext);
|
|
38
|
+
this.#cssVars = {};
|
|
37
39
|
this.#slider = null;
|
|
38
40
|
this.#disconnect = null;
|
|
39
41
|
this.#releaseControlsLock = null;
|
|
@@ -71,7 +73,9 @@ var TimeSliderElement = class extends UIElement {
|
|
|
71
73
|
#timeState;
|
|
72
74
|
#bufferState;
|
|
73
75
|
#playbackState;
|
|
76
|
+
#seek;
|
|
74
77
|
#i18n;
|
|
78
|
+
#cssVars;
|
|
75
79
|
#slider;
|
|
76
80
|
#disconnect;
|
|
77
81
|
#releaseControlsLock;
|
|
@@ -80,6 +84,15 @@ var TimeSliderElement = class extends UIElement {
|
|
|
80
84
|
if (this.destroyed) return;
|
|
81
85
|
this.#disconnect = new AbortController();
|
|
82
86
|
const signal = this.#disconnect.signal;
|
|
87
|
+
let dragSeekPercent;
|
|
88
|
+
const seek = (percent) => {
|
|
89
|
+
const media = this.#timeState.value;
|
|
90
|
+
if (media) {
|
|
91
|
+
const time = this.#core.rawValueFromPercent(percent);
|
|
92
|
+
this.#seek.seek(percent);
|
|
93
|
+
media.seek(time);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
83
96
|
this.#slider = createSlider({
|
|
84
97
|
getElement: () => this,
|
|
85
98
|
getThumbElement: () => this.querySelector("media-slider-thumb"),
|
|
@@ -102,9 +115,14 @@ var TimeSliderElement = class extends UIElement {
|
|
|
102
115
|
},
|
|
103
116
|
getStepPercent: () => this.#core.getStepPercent(),
|
|
104
117
|
getLargeStepPercent: () => this.#core.getLargeStepPercent(),
|
|
118
|
+
onValueChange: (percent) => {
|
|
119
|
+
if (!this.#slider?.input.current.dragging || percent === dragSeekPercent) return;
|
|
120
|
+
dragSeekPercent = percent;
|
|
121
|
+
seek(percent);
|
|
122
|
+
},
|
|
105
123
|
onValueCommit: (percent) => {
|
|
106
|
-
|
|
107
|
-
|
|
124
|
+
if (percent !== dragSeekPercent) seek(percent);
|
|
125
|
+
dragSeekPercent = void 0;
|
|
108
126
|
},
|
|
109
127
|
changeThrottle: this.changeThrottle,
|
|
110
128
|
onPressStart: () => {
|
|
@@ -120,16 +138,20 @@ var TimeSliderElement = class extends UIElement {
|
|
|
120
138
|
this.dispatchEvent(new CustomEvent("drag-end", { bubbles: true }));
|
|
121
139
|
},
|
|
122
140
|
adjustPercent: (raw, thumbSize, trackSize) => this.#core.adjustPercentForAlignment(raw, thumbSize, trackSize),
|
|
123
|
-
onResize: () =>
|
|
141
|
+
onResize: () => {
|
|
142
|
+
if (this.thumbAlignment === "edge") this.requestUpdate();
|
|
143
|
+
}
|
|
124
144
|
});
|
|
125
145
|
applyElementProps(this, this.#slider.rootProps, { signal });
|
|
126
146
|
applyStyles(this, this.#slider.rootStyle);
|
|
127
147
|
this.#slider.input.subscribe(() => this.requestUpdate(), { signal });
|
|
148
|
+
this.#seek.state.subscribe(() => this.requestUpdate(), { signal });
|
|
128
149
|
if (!this.#timeState.value) logMissingFeature(this.localName, this.#timeState.displayName);
|
|
129
150
|
}
|
|
130
151
|
disconnectedCallback() {
|
|
131
152
|
this.#releaseControlsVisibilityLock();
|
|
132
153
|
this.#resumeIfDragPaused();
|
|
154
|
+
this.#seek.destroy();
|
|
133
155
|
super.disconnectedCallback();
|
|
134
156
|
this.#disconnect?.abort();
|
|
135
157
|
this.#disconnect = null;
|
|
@@ -137,6 +159,7 @@ var TimeSliderElement = class extends UIElement {
|
|
|
137
159
|
destroyCallback() {
|
|
138
160
|
this.#releaseControlsVisibilityLock();
|
|
139
161
|
this.#resumeIfDragPaused();
|
|
162
|
+
this.#seek.destroy();
|
|
140
163
|
this.#slider?.destroy();
|
|
141
164
|
super.destroyCallback();
|
|
142
165
|
}
|
|
@@ -166,7 +189,11 @@ var TimeSliderElement = class extends UIElement {
|
|
|
166
189
|
if (!this.#slider) return;
|
|
167
190
|
const time = this.#timeState.value;
|
|
168
191
|
const buffer = this.#bufferState.value;
|
|
169
|
-
if (!time)
|
|
192
|
+
if (!time) {
|
|
193
|
+
this.#seek.destroy();
|
|
194
|
+
this.removeAttribute("data-playing");
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
170
197
|
this.#core.setInput(this.#slider.input.current);
|
|
171
198
|
const media = {
|
|
172
199
|
...time,
|
|
@@ -177,9 +204,18 @@ var TimeSliderElement = class extends UIElement {
|
|
|
177
204
|
};
|
|
178
205
|
this.#core.setMedia(media);
|
|
179
206
|
const state = this.#core.getState();
|
|
180
|
-
|
|
207
|
+
this.#seek.update(state.seeking, state.fillPercent, this);
|
|
208
|
+
const percent = this.#seek.state.current.percent;
|
|
209
|
+
this.toggleAttribute("data-playing", isMediaPlaying(this.#playbackState.value) && !state.disabled && !state.dragging && !state.seeking && percent === void 0);
|
|
210
|
+
const fill = percent === void 0 || state.dragging || state.disabled ? state : {
|
|
211
|
+
...state,
|
|
212
|
+
fillPercent: percent
|
|
213
|
+
};
|
|
214
|
+
const cssVars = getTimeSliderCSSVars(this.#slider.adjustForAlignment(fill));
|
|
215
|
+
const styles = Object.fromEntries(Object.entries(cssVars).filter(([name, value]) => this.#cssVars[name] !== value));
|
|
216
|
+
applyStyles(this, styles);
|
|
217
|
+
this.#cssVars = cssVars;
|
|
181
218
|
const thumbAttrs = this.#core.getAttrs(state);
|
|
182
|
-
applyStyles(this, cssVars);
|
|
183
219
|
applyStateDataAttrs(this, state, TimeSliderDataAttrs);
|
|
184
220
|
this.#provider.setValue({
|
|
185
221
|
state,
|