@videojs/react 10.0.0-beta.28 → 10.0.0-beta.29
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/dist/default/__generated__/skins/default-video/styles/buttons.css +132 -18
- package/dist/default/__generated__/skins/default-video/styles/captions.css +22 -0
- package/dist/default/__generated__/skins/default-video/styles/container.css +121 -8
- package/dist/default/__generated__/skins/default-video/styles/controls.css +436 -21
- package/dist/default/__generated__/skins/default-video/styles/dialog.css +169 -0
- package/dist/default/__generated__/skins/default-video/styles/indicator.css +459 -0
- package/dist/default/__generated__/skins/default-video/styles/menus.css +254 -0
- package/dist/default/__generated__/skins/default-video/styles/overlays.css +26 -2
- package/dist/default/__generated__/skins/default-video/styles/popups.css +338 -12
- package/dist/default/__generated__/skins/default-video/styles/poster.css +4 -4
- package/dist/default/__generated__/skins/default-video/styles/sliders.css +355 -31
- package/dist/default/__generated__/skins/default-video/styles/styles.css +2455 -216
- package/dist/default/__generated__/skins/default-video/styles/theme.css +4 -19
- package/dist/default/__generated__/skins/default-video/styles/video.css +29 -0
- package/dist/default/__generated__/skins/minimal-video/styles/base.css +25 -0
- package/dist/default/__generated__/skins/minimal-video/styles/buttons.css +266 -0
- package/dist/default/__generated__/skins/minimal-video/styles/captions.css +22 -0
- package/dist/default/__generated__/skins/minimal-video/styles/container.css +158 -0
- package/dist/default/__generated__/skins/minimal-video/styles/controls.css +182 -0
- package/dist/default/__generated__/skins/minimal-video/styles/dialog.css +77 -0
- package/dist/default/__generated__/skins/minimal-video/styles/indicator.css +322 -0
- package/dist/default/__generated__/skins/minimal-video/styles/menus.css +254 -0
- package/dist/default/__generated__/skins/minimal-video/styles/overlays.css +35 -0
- package/dist/default/__generated__/skins/minimal-video/styles/popups.css +371 -0
- package/dist/default/__generated__/skins/minimal-video/styles/poster.css +47 -0
- package/dist/default/__generated__/skins/minimal-video/styles/sliders.css +436 -0
- package/dist/default/__generated__/skins/minimal-video/styles/styles.css +2246 -0
- package/dist/default/__generated__/skins/minimal-video/styles/theme.css +7 -0
- package/dist/default/__generated__/skins/minimal-video/styles/video.css +29 -0
- package/dist/default/i18n/index.js +2 -1
- package/dist/default/i18n/text.js +20 -0
- package/dist/default/i18n/text.js.map +1 -0
- package/dist/default/icons/dist/react/default/airplay-exit.js +3 -3
- package/dist/default/icons/dist/react/default/airplay-exit.js.map +1 -1
- package/dist/default/icons/dist/react/minimal/airplay-exit.js +3 -3
- package/dist/default/icons/dist/react/minimal/airplay-exit.js.map +1 -1
- package/dist/default/index.js +2 -1
- package/dist/default/media/hls-background-video/media.js +18 -3
- package/dist/default/media/hls-background-video/media.js.map +1 -1
- package/dist/default/presets/audio/minimal-skin.css +103 -101
- package/dist/default/presets/audio/minimal-skin.js +1 -1
- package/dist/default/presets/audio/minimal-skin.tailwind.js +1 -1
- package/dist/default/presets/audio/skin.css +68 -69
- package/dist/default/presets/audio/skin.js +1 -1
- package/dist/default/presets/audio/skin.tailwind.js +1 -1
- package/dist/default/presets/live-audio/minimal-skin.css +103 -101
- package/dist/default/presets/live-audio/skin.css +68 -69
- package/dist/default/presets/live-video/minimal-skin.css +140 -120
- package/dist/default/presets/live-video/minimal-skin.js +3 -8
- package/dist/default/presets/live-video/minimal-skin.js.map +1 -1
- package/dist/default/presets/live-video/minimal-skin.tailwind.js +5 -8
- package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/live-video/skin.css +89 -76
- package/dist/default/presets/live-video/skin.js +3 -8
- package/dist/default/presets/live-video/skin.js.map +1 -1
- package/dist/default/presets/live-video/skin.tailwind.js +7 -10
- package/dist/default/presets/live-video/skin.tailwind.js.map +1 -1
- package/dist/default/presets/video/minimal-skin.css +140 -120
- package/dist/default/presets/video/minimal-skin.js +3 -8
- package/dist/default/presets/video/minimal-skin.js.map +1 -1
- package/dist/default/presets/video/minimal-skin.tailwind.js +5 -8
- package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/video/skin.css +89 -76
- package/dist/default/presets/video/skin.js +3 -8
- package/dist/default/presets/video/skin.js.map +1 -1
- package/dist/default/presets/video/skin.tailwind.js +6 -9
- package/dist/default/presets/video/skin.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/button.js +3 -1
- package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/poster.js +8 -1
- package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js +10 -10
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +2 -2
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +8 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +13 -12
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +6 -5
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +4 -4
- package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
- package/dist/default/ui/gesture/gesture.js.map +1 -1
- package/dist/default/ui/gesture/use-doubletap-gesture.js.map +1 -1
- package/dist/default/ui/gesture/use-tap-gesture.js.map +1 -1
- package/dist/default/ui/hotkey/hotkey.js.map +1 -1
- package/dist/default/ui/menu/context.js +6 -1
- package/dist/default/ui/menu/context.js.map +1 -1
- package/dist/default/ui/menu/menu-item-indicator.js +3 -2
- package/dist/default/ui/menu/menu-item-indicator.js.map +1 -1
- package/dist/default/ui/menu/menu-radio-item.js +19 -15
- package/dist/default/ui/menu/menu-radio-item.js.map +1 -1
- package/dist/default/ui/menu/menu-root.js +5 -6
- package/dist/default/ui/menu/menu-root.js.map +1 -1
- package/dist/default/ui/poster/poster.js +64 -17
- package/dist/default/ui/poster/poster.js.map +1 -1
- package/dist/default/ui/slider/slider-preview.js.map +1 -1
- package/dist/default/utils/use-render.js +2 -8
- package/dist/default/utils/use-render.js.map +1 -1
- package/dist/dev/__generated__/skins/default-video/styles/buttons.css +132 -18
- package/dist/dev/__generated__/skins/default-video/styles/captions.css +22 -0
- package/dist/dev/__generated__/skins/default-video/styles/container.css +121 -8
- package/dist/dev/__generated__/skins/default-video/styles/controls.css +436 -21
- package/dist/dev/__generated__/skins/default-video/styles/dialog.css +169 -0
- package/dist/dev/__generated__/skins/default-video/styles/indicator.css +459 -0
- package/dist/dev/__generated__/skins/default-video/styles/menus.css +254 -0
- package/dist/dev/__generated__/skins/default-video/styles/overlays.css +26 -2
- package/dist/dev/__generated__/skins/default-video/styles/popups.css +338 -12
- package/dist/dev/__generated__/skins/default-video/styles/poster.css +4 -4
- package/dist/dev/__generated__/skins/default-video/styles/sliders.css +355 -31
- package/dist/dev/__generated__/skins/default-video/styles/styles.css +2455 -216
- package/dist/dev/__generated__/skins/default-video/styles/theme.css +4 -19
- package/dist/dev/__generated__/skins/default-video/styles/video.css +29 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/base.css +25 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/buttons.css +266 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/captions.css +22 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/container.css +158 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/controls.css +182 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/dialog.css +77 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/indicator.css +322 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/menus.css +254 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/overlays.css +35 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/popups.css +371 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/poster.css +47 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/sliders.css +436 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/styles.css +2246 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/theme.css +7 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/video.css +29 -0
- package/dist/dev/i18n/index.d.ts +2 -1
- package/dist/dev/i18n/index.js +2 -1
- package/dist/dev/i18n/text.d.ts +11 -0
- package/dist/dev/i18n/text.d.ts.map +1 -0
- package/dist/dev/i18n/text.js +20 -0
- package/dist/dev/i18n/text.js.map +1 -0
- package/dist/dev/icons/dist/react/default/airplay-exit.js +3 -3
- package/dist/dev/icons/dist/react/default/airplay-exit.js.map +1 -1
- package/dist/dev/icons/dist/react/minimal/airplay-exit.js +3 -3
- package/dist/dev/icons/dist/react/minimal/airplay-exit.js.map +1 -1
- package/dist/dev/icons/index.d.ts +6 -1
- package/dist/dev/icons/index.d.ts.map +1 -0
- package/dist/dev/icons/minimal/index.d.ts +6 -1
- package/dist/dev/icons/minimal/index.d.ts.map +1 -0
- package/dist/dev/index.d.ts +3 -2
- package/dist/dev/index.js +2 -1
- package/dist/dev/media/hls-background-video/media.d.ts +8 -0
- package/dist/dev/media/hls-background-video/media.d.ts.map +1 -1
- package/dist/dev/media/hls-background-video/media.js +18 -3
- package/dist/dev/media/hls-background-video/media.js.map +1 -1
- package/dist/dev/presets/audio/minimal-skin.css +103 -101
- package/dist/dev/presets/audio/minimal-skin.js +1 -1
- package/dist/dev/presets/audio/minimal-skin.tailwind.js +1 -1
- package/dist/dev/presets/audio/player.d.ts +2 -2
- package/dist/dev/presets/audio/skin.css +68 -69
- package/dist/dev/presets/audio/skin.js +1 -1
- package/dist/dev/presets/audio/skin.tailwind.js +1 -1
- package/dist/dev/presets/live-audio/minimal-skin.css +103 -101
- package/dist/dev/presets/live-audio/player.d.ts +2 -2
- package/dist/dev/presets/live-audio/skin.css +68 -69
- package/dist/dev/presets/live-video/minimal-skin.css +140 -120
- package/dist/dev/presets/live-video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/live-video/minimal-skin.js +3 -8
- package/dist/dev/presets/live-video/minimal-skin.js.map +1 -1
- package/dist/dev/presets/live-video/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/live-video/minimal-skin.tailwind.js +5 -8
- package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/live-video/player.d.ts +2 -2
- package/dist/dev/presets/live-video/skin.css +89 -76
- package/dist/dev/presets/live-video/skin.d.ts.map +1 -1
- package/dist/dev/presets/live-video/skin.js +3 -8
- package/dist/dev/presets/live-video/skin.js.map +1 -1
- package/dist/dev/presets/live-video/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/live-video/skin.tailwind.js +7 -10
- package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -1
- package/dist/dev/presets/types.d.ts +15 -2
- package/dist/dev/presets/types.d.ts.map +1 -1
- package/dist/dev/presets/video/minimal-skin.css +140 -120
- package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/video/minimal-skin.js +3 -8
- package/dist/dev/presets/video/minimal-skin.js.map +1 -1
- package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/video/minimal-skin.tailwind.js +5 -8
- package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/video/player.d.ts +2 -2
- package/dist/dev/presets/video/skin.css +89 -76
- package/dist/dev/presets/video/skin.d.ts.map +1 -1
- package/dist/dev/presets/video/skin.js +3 -8
- package/dist/dev/presets/video/skin.js.map +1 -1
- package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/video/skin.tailwind.js +6 -9
- package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/button.js +3 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +8 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +10 -10
- package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +2 -2
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +8 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +13 -12
- package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +6 -5
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +4 -4
- package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
- package/dist/dev/ui/gesture/gesture.d.ts +6 -13
- package/dist/dev/ui/gesture/gesture.d.ts.map +1 -1
- package/dist/dev/ui/gesture/gesture.js.map +1 -1
- package/dist/dev/ui/gesture/use-doubletap-gesture.d.ts +2 -5
- package/dist/dev/ui/gesture/use-doubletap-gesture.d.ts.map +1 -1
- package/dist/dev/ui/gesture/use-doubletap-gesture.js.map +1 -1
- package/dist/dev/ui/gesture/use-tap-gesture.d.ts +2 -5
- package/dist/dev/ui/gesture/use-tap-gesture.d.ts.map +1 -1
- package/dist/dev/ui/gesture/use-tap-gesture.js.map +1 -1
- package/dist/dev/ui/hotkey/hotkey.d.ts +6 -12
- package/dist/dev/ui/hotkey/hotkey.d.ts.map +1 -1
- package/dist/dev/ui/hotkey/hotkey.js.map +1 -1
- package/dist/dev/ui/menu/context.js +6 -1
- package/dist/dev/ui/menu/context.js.map +1 -1
- package/dist/dev/ui/menu/menu-item-indicator.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-item-indicator.js +3 -2
- package/dist/dev/ui/menu/menu-item-indicator.js.map +1 -1
- package/dist/dev/ui/menu/menu-radio-item.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-radio-item.js +19 -15
- package/dist/dev/ui/menu/menu-radio-item.js.map +1 -1
- package/dist/dev/ui/menu/menu-root.js +5 -6
- package/dist/dev/ui/menu/menu-root.js.map +1 -1
- package/dist/dev/ui/poster/poster.d.ts +15 -4
- package/dist/dev/ui/poster/poster.d.ts.map +1 -1
- package/dist/dev/ui/poster/poster.js +64 -17
- package/dist/dev/ui/poster/poster.js.map +1 -1
- package/dist/dev/ui/slider/slider-preview.d.ts +5 -9
- package/dist/dev/ui/slider/slider-preview.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-preview.js.map +1 -1
- package/dist/dev/utils/use-render.d.ts.map +1 -1
- package/dist/dev/utils/use-render.js +2 -8
- package/dist/dev/utils/use-render.js.map +1 -1
- package/docs/README.md +1 -1
- package/docs/concepts/skins.md +97 -96
- package/docs/how-to/customize-skins.md +421 -411
- package/docs/reference/create-player.md +2 -2
- package/docs/reference/menu.md +6 -18
- package/docs/reference/popover.md +6 -6
- package/docs/reference/poster.md +187 -13
- package/docs/reference/slider.md +1 -1
- package/docs/reference/time-slider.md +1 -1
- package/docs/reference/tooltip.md +10 -10
- package/docs/reference/volume-slider.md +1 -1
- package/package.json +13 -8
package/docs/concepts/skins.md
CHANGED
|
@@ -64,10 +64,10 @@ skin.css
|
|
|
64
64
|
```
|
|
65
65
|
'use client';
|
|
66
66
|
|
|
67
|
-
import { type CSSProperties, type ComponentProps, forwardRef, type ReactNode
|
|
67
|
+
import { type CSSProperties, type ComponentProps, forwardRef, type ReactNode } from 'react';
|
|
68
68
|
import { audioText, captionsText, playbackRateText, qualityText, settingsText, speedText } from '@videojs/core/i18n/text/menu';
|
|
69
69
|
import { AirPlayEnterIcon, AirPlayExitIcon, CaptionsOffIcon, CaptionsOnIcon, CastEnterIcon, CastExitIcon, CheckIcon, ChevronIcon, FullscreenEnterIcon, FullscreenExitIcon, GearIcon, PauseIcon, PipEnterIcon, PipExitIcon, PlayIcon, QualityIcon, RestartIcon, SpeechIcon, SpeedIcon, SpinnerIcon, VolumeHighIcon, VolumeLowIcon, VolumeOffIcon } from '@videojs/react/icons';
|
|
70
|
-
import { Poster, useTranslator, Container, usePlayer, AirPlayButton, useAudioTrackOptions, AudioTrackRadioGroup, BufferingIndicator, CaptionsButton, CaptionsRadioGroup, useCaptionsOptions, CastButton, Controls, ErrorDialog, FullscreenButton, Gesture, Hotkey, Menu, MuteButton, PiPButton, PlayButton, usePlaybackRateOptions, PlaybackRateRadioGroup, Popover, useQualityOptions, QualityRadioGroup, SeekIndicator, Slider, StatusAnnouncer, StatusIndicator, Time, TimeSlider, Tooltip, VolumeIndicator, VolumeSlider
|
|
70
|
+
import { Poster, useTranslator, Container, usePlayer, AirPlayButton, useAudioTrackOptions, AudioTrackRadioGroup, BufferingIndicator, CaptionsButton, CaptionsRadioGroup, useCaptionsOptions, CastButton, Controls, ErrorDialog, FullscreenButton, Gesture, Hotkey, Menu, MuteButton, PiPButton, PlayButton, usePlaybackRateOptions, PlaybackRateRadioGroup, Popover, useQualityOptions, QualityRadioGroup, SeekIndicator, Slider, StatusAnnouncer, StatusIndicator, Time, TimeSlider, Tooltip, VolumeIndicator, VolumeSlider } from '@videojs/react';
|
|
71
71
|
import { Video } from '@videojs/react/video';
|
|
72
72
|
import './player.css';
|
|
73
73
|
import { Player } from './player';
|
|
@@ -350,9 +350,11 @@ const SEEK_TIME = 10;
|
|
|
350
350
|
|
|
351
351
|
export interface VideoPlayerProps {
|
|
352
352
|
src: string;
|
|
353
|
+
poster?: string | undefined;
|
|
353
354
|
style?: CSSProperties;
|
|
354
355
|
className?: string;
|
|
355
|
-
|
|
356
|
+
renderPoster?: Poster.Props['render'];
|
|
357
|
+
placeholder?: string | undefined;
|
|
356
358
|
}
|
|
357
359
|
|
|
358
360
|
/**
|
|
@@ -364,13 +366,13 @@ export interface VideoPlayerProps {
|
|
|
364
366
|
* />
|
|
365
367
|
* ```
|
|
366
368
|
*/
|
|
367
|
-
export function VideoPlayer({ src, className,
|
|
369
|
+
export function VideoPlayer({ src, poster, className, renderPoster, placeholder, style, ...rest }: VideoPlayerProps): ReactNode {
|
|
368
370
|
const containerStyle = placeholder
|
|
369
371
|
? ({ '--media-poster-placeholder': `url(${placeholder})`, ...style } as CSSProperties)
|
|
370
372
|
: style;
|
|
371
373
|
|
|
372
374
|
return (
|
|
373
|
-
<Player>
|
|
375
|
+
<Player poster={poster}>
|
|
374
376
|
<Container
|
|
375
377
|
className={`media-default-skin media-default-skin--video ${className ?? ''}`}
|
|
376
378
|
style={containerStyle}
|
|
@@ -378,9 +380,7 @@ export function VideoPlayer({ src, className, poster, placeholder, style, ...res
|
|
|
378
380
|
>
|
|
379
381
|
<Video src={src} playsInline />
|
|
380
382
|
|
|
381
|
-
{
|
|
382
|
-
<Poster src={isString(poster) ? poster : undefined} render={isRenderProp(poster) ? poster : undefined} />
|
|
383
|
-
)}
|
|
383
|
+
<Poster render={renderPoster} />
|
|
384
384
|
|
|
385
385
|
<BufferingIndicator
|
|
386
386
|
render={(props) => (
|
|
@@ -604,18 +604,6 @@ function VolumePopover(): ReactNode {
|
|
|
604
604
|
</Popover.Root>
|
|
605
605
|
);
|
|
606
606
|
}
|
|
607
|
-
|
|
608
|
-
// ================================================================
|
|
609
|
-
// Utilities
|
|
610
|
-
// ================================================================
|
|
611
|
-
|
|
612
|
-
function isString(value: unknown): value is string {
|
|
613
|
-
return typeof value === 'string';
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
function isRenderProp(value: unknown): value is RenderProp<unknown> {
|
|
617
|
-
return typeof value === 'function' || isValidElement(value);
|
|
618
|
-
}
|
|
619
607
|
```
|
|
620
608
|
```
|
|
621
609
|
import { createPlayer } from '@videojs/react';
|
|
@@ -1183,7 +1171,7 @@ export const { Player } = createPlayer({ features: videoFeatures });
|
|
|
1183
1171
|
position: relative;
|
|
1184
1172
|
display: block;
|
|
1185
1173
|
max-width: var(--thumbnail-max-width);
|
|
1186
|
-
max-height: var(--max-height);
|
|
1174
|
+
max-height: var(--thumbnail-max-height);
|
|
1187
1175
|
overflow: clip;
|
|
1188
1176
|
border-radius: inherit;
|
|
1189
1177
|
|
|
@@ -1238,8 +1226,7 @@ export const { Player } = createPlayer({ features: videoFeatures });
|
|
|
1238
1226
|
--track-size: calc(var(--spacing) * 1);
|
|
1239
1227
|
--track-highlighted-size: calc(var(--spacing) * 1.75);
|
|
1240
1228
|
--track-border-radius: 99px;
|
|
1241
|
-
--thumb-size: calc(var(--spacing) *
|
|
1242
|
-
--thumb-active-size: calc(var(--spacing) * 3);
|
|
1229
|
+
--thumb-size: calc(var(--spacing) * 3);
|
|
1243
1230
|
--chapter-gap: calc(var(--spacing) * 1);
|
|
1244
1231
|
--chapter-inset-start: calc(var(--chapter-gap) / 2);
|
|
1245
1232
|
--chapter-inset-end: calc(var(--chapter-gap) / 2);
|
|
@@ -1292,13 +1279,22 @@ export const { Player } = createPlayer({ features: videoFeatures });
|
|
|
1292
1279
|
inset-block: 0;
|
|
1293
1280
|
left: 0;
|
|
1294
1281
|
width: 100%;
|
|
1295
|
-
transition-property: clip-path;
|
|
1296
1282
|
}
|
|
1297
1283
|
&[data-orientation="vertical"] {
|
|
1298
1284
|
inset-inline: 0;
|
|
1299
1285
|
bottom: 0;
|
|
1300
1286
|
height: 100%;
|
|
1301
|
-
|
|
1287
|
+
}
|
|
1288
|
+
|
|
1289
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
1290
|
+
transition: clip-path 200ms ease-out;
|
|
1291
|
+
}
|
|
1292
|
+
}
|
|
1293
|
+
&[data-dragging],
|
|
1294
|
+
&[data-seeking] {
|
|
1295
|
+
.media-slider__fill,
|
|
1296
|
+
.media-slider__buffer {
|
|
1297
|
+
transition-duration: 0ms;
|
|
1302
1298
|
}
|
|
1303
1299
|
}
|
|
1304
1300
|
|
|
@@ -1325,6 +1321,14 @@ export const { Player } = createPlayer({ features: videoFeatures });
|
|
|
1325
1321
|
clip-path: inset(calc(100% - var(--media-slider-fill)) 0 0 0 round var(--track-border-radius));
|
|
1326
1322
|
}
|
|
1327
1323
|
}
|
|
1324
|
+
&[data-dragging] {
|
|
1325
|
+
.media-slider__fill[data-orientation="horizontal"] {
|
|
1326
|
+
clip-path: inset(0 calc(100% - var(--media-slider-pointer)) 0 0 round var(--track-border-radius));
|
|
1327
|
+
}
|
|
1328
|
+
.media-slider__fill[data-orientation="vertical"] {
|
|
1329
|
+
clip-path: inset(calc(100% - var(--media-slider-pointer)) 0 0 0 round var(--track-border-radius));
|
|
1330
|
+
}
|
|
1331
|
+
}
|
|
1328
1332
|
|
|
1329
1333
|
/* Chapters */
|
|
1330
1334
|
.media-slider__chapters {
|
|
@@ -1406,45 +1410,6 @@ export const { Player } = createPlayer({ features: videoFeatures });
|
|
|
1406
1410
|
}
|
|
1407
1411
|
}
|
|
1408
1412
|
|
|
1409
|
-
/* Dragging — thumb and fill follow the pointer position */
|
|
1410
|
-
&[data-dragging] {
|
|
1411
|
-
.media-slider__thumb[data-orientation="horizontal"] {
|
|
1412
|
-
left: var(--media-slider-pointer);
|
|
1413
|
-
}
|
|
1414
|
-
.media-slider__thumb[data-orientation="vertical"] {
|
|
1415
|
-
top: calc(100% - var(--media-slider-pointer));
|
|
1416
|
-
}
|
|
1417
|
-
.media-slider__fill[data-orientation="horizontal"] {
|
|
1418
|
-
clip-path: inset(0 calc(100% - var(--media-slider-pointer)) 0 0 round var(--track-border-radius));
|
|
1419
|
-
}
|
|
1420
|
-
.media-slider__fill[data-orientation="vertical"] {
|
|
1421
|
-
clip-path: inset(calc(100% - var(--media-slider-pointer)) 0 0 0 round var(--track-border-radius));
|
|
1422
|
-
}
|
|
1423
|
-
}
|
|
1424
|
-
|
|
1425
|
-
@media (prefers-reduced-motion: no-preference) {
|
|
1426
|
-
.media-slider__thumb {
|
|
1427
|
-
transition-property: opacity, height, width, outline-offset, left, top;
|
|
1428
|
-
}
|
|
1429
|
-
.media-slider__fill {
|
|
1430
|
-
transition-timing-function: linear;
|
|
1431
|
-
transition-duration: 200ms;
|
|
1432
|
-
}
|
|
1433
|
-
.media-slider__buffer {
|
|
1434
|
-
transition-timing-function: ease-out;
|
|
1435
|
-
transition-duration: 250ms;
|
|
1436
|
-
}
|
|
1437
|
-
}
|
|
1438
|
-
|
|
1439
|
-
&[data-dragging],
|
|
1440
|
-
&[data-seeking] {
|
|
1441
|
-
.media-slider__thumb,
|
|
1442
|
-
.media-slider__fill,
|
|
1443
|
-
.media-slider__buffer {
|
|
1444
|
-
transition-duration: 0ms;
|
|
1445
|
-
}
|
|
1446
|
-
}
|
|
1447
|
-
|
|
1448
1413
|
/* Thumb */
|
|
1449
1414
|
.media-slider__thumb {
|
|
1450
1415
|
position: absolute;
|
|
@@ -1461,10 +1426,8 @@ export const { Player } = createPlayer({ features: videoFeatures });
|
|
|
1461
1426
|
0 1px 3px 0 oklch(0 0 0 / 0.35),
|
|
1462
1427
|
0 1px 2px -1px oklch(0 0 0 / 0.35);
|
|
1463
1428
|
opacity: 0;
|
|
1429
|
+
scale: 0.8;
|
|
1464
1430
|
translate: -50% -50%;
|
|
1465
|
-
transition-timing-function: ease-out;
|
|
1466
|
-
transition-duration: 150ms;
|
|
1467
|
-
transition-property: opacity, height, width, outline-offset;
|
|
1468
1431
|
|
|
1469
1432
|
&[data-orientation="horizontal"] {
|
|
1470
1433
|
top: 50%;
|
|
@@ -1481,22 +1444,12 @@ export const { Player } = createPlayer({ features: videoFeatures });
|
|
|
1481
1444
|
opacity: 1;
|
|
1482
1445
|
}
|
|
1483
1446
|
|
|
1484
|
-
@media (hover: hover) and (pointer: fine) {
|
|
1485
|
-
&:hover {
|
|
1486
|
-
outline-color: oklch(from currentColor l c h / 0.15);
|
|
1487
|
-
outline-offset: 0;
|
|
1488
|
-
}
|
|
1489
|
-
}
|
|
1490
|
-
|
|
1491
1447
|
&::after {
|
|
1492
1448
|
position: absolute;
|
|
1493
1449
|
inset: -4px;
|
|
1494
1450
|
content: "";
|
|
1495
1451
|
border-radius: inherit;
|
|
1496
1452
|
box-shadow: 0 0 0 2px currentColor;
|
|
1497
|
-
transition-timing-function: ease-out;
|
|
1498
|
-
transition-duration: 150ms;
|
|
1499
|
-
transition-property: opacity, scale;
|
|
1500
1453
|
}
|
|
1501
1454
|
|
|
1502
1455
|
&:not(:focus-visible)::after {
|
|
@@ -1505,37 +1458,70 @@ export const { Player } = createPlayer({ features: videoFeatures });
|
|
|
1505
1458
|
}
|
|
1506
1459
|
|
|
1507
1460
|
&.media-slider__thumb--persistent {
|
|
1508
|
-
width: var(--thumb-active-size);
|
|
1509
|
-
height: var(--thumb-active-size);
|
|
1510
1461
|
opacity: 1;
|
|
1462
|
+
scale: 1;
|
|
1511
1463
|
}
|
|
1512
|
-
}
|
|
1513
1464
|
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1465
|
+
@media (hover: hover) and (pointer: fine) {
|
|
1466
|
+
&:hover {
|
|
1467
|
+
outline-color: oklch(from currentColor l c h / 0.15);
|
|
1468
|
+
outline-offset: 0;
|
|
1469
|
+
}
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
1473
|
+
transition-timing-function: ease-out;
|
|
1474
|
+
transition-duration: 150ms;
|
|
1475
|
+
transition-property: opacity, outline-offset, left, top, scale;
|
|
1476
|
+
|
|
1477
|
+
&::after {
|
|
1478
|
+
transition-timing-function: ease-out;
|
|
1479
|
+
transition-duration: 150ms;
|
|
1480
|
+
transition-property: opacity, scale;
|
|
1481
|
+
}
|
|
1482
|
+
}
|
|
1518
1483
|
}
|
|
1519
1484
|
|
|
1520
1485
|
@media (hover: hover) and (pointer: fine) {
|
|
1521
1486
|
&:hover .media-slider__thumb {
|
|
1522
1487
|
opacity: 1;
|
|
1488
|
+
scale: 1;
|
|
1489
|
+
}
|
|
1490
|
+
}
|
|
1491
|
+
|
|
1492
|
+
&[data-dragging] .media-slider__thumb {
|
|
1493
|
+
opacity: 1;
|
|
1494
|
+
scale: 0.9;
|
|
1495
|
+
|
|
1496
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
1497
|
+
transition-property: opacity, outline-offset, scale;
|
|
1498
|
+
}
|
|
1499
|
+
|
|
1500
|
+
&[data-orientation="horizontal"] {
|
|
1501
|
+
left: var(--media-slider-pointer);
|
|
1502
|
+
}
|
|
1503
|
+
&[data-orientation="vertical"] {
|
|
1504
|
+
top: calc(100% - var(--media-slider-pointer));
|
|
1523
1505
|
}
|
|
1524
1506
|
}
|
|
1525
1507
|
|
|
1526
1508
|
/* Preview */
|
|
1527
1509
|
.media-slider__preview {
|
|
1528
|
-
--max-
|
|
1529
|
-
--max-
|
|
1510
|
+
--max-size-factor: 36;
|
|
1511
|
+
--max-size: min(calc(var(--spacing) * var(--max-size-factor)), 100cqi);
|
|
1530
1512
|
|
|
1531
|
-
min-width: var(--max-
|
|
1513
|
+
min-width: var(--max-size);
|
|
1532
1514
|
height: calc(var(--spacing) * 1);
|
|
1533
1515
|
|
|
1516
|
+
@container media-root (width > 42rem) {
|
|
1517
|
+
--max-size-factor: 48;
|
|
1518
|
+
}
|
|
1519
|
+
|
|
1534
1520
|
.media-slider__thumbnail,
|
|
1535
1521
|
.media-slider__value {
|
|
1536
1522
|
position: absolute;
|
|
1537
1523
|
left: 50%;
|
|
1538
|
-
max-width: var(--max-
|
|
1524
|
+
max-width: var(--max-size);
|
|
1539
1525
|
opacity: 0;
|
|
1540
1526
|
filter: blur(8px);
|
|
1541
1527
|
transform-origin: bottom;
|
|
@@ -1546,7 +1532,8 @@ export const { Player } = createPlayer({ features: videoFeatures });
|
|
|
1546
1532
|
}
|
|
1547
1533
|
|
|
1548
1534
|
.media-slider__thumbnail {
|
|
1549
|
-
--thumbnail-max-width: var(--max-
|
|
1535
|
+
--thumbnail-max-width: var(--max-size);
|
|
1536
|
+
--thumbnail-max-height: var(--max-size);
|
|
1550
1537
|
bottom: calc(100% + (var(--spacing) * 9));
|
|
1551
1538
|
}
|
|
1552
1539
|
|
|
@@ -1560,7 +1547,7 @@ export const { Player } = createPlayer({ features: videoFeatures });
|
|
|
1560
1547
|
|
|
1561
1548
|
.media-slider__chapter-title {
|
|
1562
1549
|
min-width: 0;
|
|
1563
|
-
max-width: var(--max-
|
|
1550
|
+
max-width: var(--max-size);
|
|
1564
1551
|
padding-inline: calc(var(--spacing) * 6);
|
|
1565
1552
|
overflow: hidden;
|
|
1566
1553
|
text-overflow: ellipsis;
|
|
@@ -2307,8 +2294,8 @@ export const { Player } = createPlayer({ features: videoFeatures });
|
|
|
2307
2294
|
still in the DOM — just `display: none` — so its animations would keep
|
|
2308
2295
|
running. Set the variables to `none` to short-circuit the keyframes. */
|
|
2309
2296
|
.media-button--airplay:not([data-airplay-state="connected"]) {
|
|
2310
|
-
--media-icon
|
|
2311
|
-
--media-icon
|
|
2297
|
+
--media-icon-airplay-fill-animation: none;
|
|
2298
|
+
--media-icon-airplay-triangle-animation: none;
|
|
2312
2299
|
}
|
|
2313
2300
|
|
|
2314
2301
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -2475,6 +2462,12 @@ export const { Player } = createPlayer({ features: videoFeatures });
|
|
|
2475
2462
|
.media-controls--primary,
|
|
2476
2463
|
.media-controls--secondary {
|
|
2477
2464
|
position: absolute;
|
|
2465
|
+
}
|
|
2466
|
+
/* Primary must be higher for the preview/thumbnail */
|
|
2467
|
+
.media-controls--primary {
|
|
2468
|
+
z-index: 20;
|
|
2469
|
+
}
|
|
2470
|
+
.media-controls--secondary {
|
|
2478
2471
|
z-index: 10;
|
|
2479
2472
|
}
|
|
2480
2473
|
|
|
@@ -2491,6 +2484,11 @@ export const { Player } = createPlayer({ features: videoFeatures });
|
|
|
2491
2484
|
transform-origin: top;
|
|
2492
2485
|
}
|
|
2493
2486
|
|
|
2487
|
+
.media-time-controls {
|
|
2488
|
+
flex: 1;
|
|
2489
|
+
padding-inline: calc(var(--spacing) * 2);
|
|
2490
|
+
}
|
|
2491
|
+
|
|
2494
2492
|
@container media-root (width < 32rem) {
|
|
2495
2493
|
.media-controls--primary,
|
|
2496
2494
|
.media-controls--secondary {
|
|
@@ -2541,6 +2539,10 @@ export const { Player } = createPlayer({ features: videoFeatures });
|
|
|
2541
2539
|
}
|
|
2542
2540
|
}
|
|
2543
2541
|
}
|
|
2542
|
+
|
|
2543
|
+
.media-button--captions {
|
|
2544
|
+
display: none;
|
|
2545
|
+
}
|
|
2544
2546
|
}
|
|
2545
2547
|
|
|
2546
2548
|
@container media-root (width >= 32rem) {
|
|
@@ -2577,11 +2579,10 @@ export const { Player } = createPlayer({ features: videoFeatures });
|
|
|
2577
2579
|
translate: 0 4px;
|
|
2578
2580
|
}
|
|
2579
2581
|
}
|
|
2580
|
-
}
|
|
2581
2582
|
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2583
|
+
.media-time-controls {
|
|
2584
|
+
padding-inline: calc(var(--spacing) * 3);
|
|
2585
|
+
}
|
|
2585
2586
|
}
|
|
2586
2587
|
|
|
2587
2588
|
@media (pointer: fine) {
|