@videojs/react 10.0.0-alpha.6 → 10.0.0-alpha.9
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/index.js +11 -7
- package/dist/default/media/hls-video/index.js +4 -3
- package/dist/default/media/hls-video/index.js.map +1 -1
- package/dist/default/player/create-player.js +3 -2
- package/dist/default/player/create-player.js.map +1 -1
- package/dist/default/presets/video/error-dialog.js +51 -0
- package/dist/default/presets/video/error-dialog.js.map +1 -0
- package/dist/default/presets/video/minimal-skin.css +18 -26
- package/dist/default/presets/video/minimal-skin.js +11 -30
- package/dist/default/presets/video/minimal-skin.js.map +1 -1
- package/dist/default/presets/video/minimal-skin.tailwind.js +10 -29
- package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/video/skin.css +18 -25
- package/dist/default/presets/video/skin.js +11 -30
- package/dist/default/presets/video/skin.js.map +1 -1
- package/dist/default/presets/video/skin.tailwind.js +11 -30
- package/dist/default/presets/video/skin.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/video/default.tailwind.js +3 -3
- package/dist/default/skins/dist/default/video/default.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/video/minimal.tailwind.js +3 -3
- package/dist/default/skins/dist/default/video/minimal.tailwind.js.map +1 -1
- package/dist/default/ui/alert-dialog/alert-dialog-close.js +31 -0
- package/dist/default/ui/alert-dialog/alert-dialog-close.js.map +1 -0
- package/dist/default/ui/alert-dialog/alert-dialog-description.js +16 -0
- package/dist/default/ui/alert-dialog/alert-dialog-description.js.map +1 -0
- package/dist/default/ui/alert-dialog/alert-dialog-popup.js +32 -0
- package/dist/default/ui/alert-dialog/alert-dialog-popup.js.map +1 -0
- package/dist/default/ui/alert-dialog/alert-dialog-root.js +59 -0
- package/dist/default/ui/alert-dialog/alert-dialog-root.js.map +1 -0
- package/dist/default/ui/alert-dialog/alert-dialog-title.js +16 -0
- package/dist/default/ui/alert-dialog/alert-dialog-title.js.map +1 -0
- package/dist/default/ui/alert-dialog/context.js +16 -0
- package/dist/default/ui/alert-dialog/context.js.map +1 -0
- package/dist/default/ui/alert-dialog/index.js +4 -0
- package/dist/default/ui/alert-dialog/index.parts.js +19 -0
- package/dist/default/ui/alert-dialog/index.parts.js.map +1 -0
- package/dist/default/ui/captions-button/captions-button.js +10 -27
- package/dist/default/ui/captions-button/captions-button.js.map +1 -1
- package/dist/default/ui/create-context-part.js +7 -2
- package/dist/default/ui/create-context-part.js.map +1 -1
- package/dist/default/ui/hooks/use-slider.js +6 -17
- package/dist/default/ui/hooks/use-slider.js.map +1 -1
- package/dist/default/ui/popover/popover-arrow.js +1 -1
- package/dist/default/ui/popover/popover-popup.js +4 -2
- package/dist/default/ui/popover/popover-popup.js.map +1 -1
- package/dist/default/ui/popover/popover-root.js +3 -2
- package/dist/default/ui/popover/popover-root.js.map +1 -1
- package/dist/default/ui/popover/popover-trigger.js +4 -5
- package/dist/default/ui/popover/popover-trigger.js.map +1 -1
- package/dist/default/ui/slider/index.parts.js +4 -0
- package/dist/default/ui/slider/index.parts.js.map +1 -1
- package/dist/default/ui/slider/slider-preview.js +40 -0
- package/dist/default/ui/slider/slider-preview.js.map +1 -0
- package/dist/default/ui/slider/slider-thumbnail.js +20 -0
- package/dist/default/ui/slider/slider-thumbnail.js.map +1 -0
- package/dist/default/ui/thumbnail/thumbnail.js +3 -5
- package/dist/default/ui/thumbnail/thumbnail.js.map +1 -1
- package/dist/default/ui/time-slider/index.parts.js +2 -0
- package/dist/default/ui/time-slider/index.parts.js.map +1 -1
- package/dist/default/ui/tooltip/context.js +16 -0
- package/dist/default/ui/tooltip/context.js.map +1 -0
- package/dist/default/ui/tooltip/group-context.js +15 -0
- package/dist/default/ui/tooltip/group-context.js.map +1 -0
- package/dist/default/ui/tooltip/index.js +4 -0
- package/dist/default/ui/tooltip/index.parts.js +19 -0
- package/dist/default/ui/tooltip/index.parts.js.map +1 -0
- package/dist/default/ui/tooltip/tooltip-arrow.js +17 -0
- package/dist/default/ui/tooltip/tooltip-arrow.js.map +1 -0
- package/dist/default/ui/tooltip/tooltip-popup.js +97 -0
- package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -0
- package/dist/default/ui/tooltip/tooltip-provider.js +28 -0
- package/dist/default/ui/tooltip/tooltip-provider.js.map +1 -0
- package/dist/default/ui/tooltip/tooltip-root.js +71 -0
- package/dist/default/ui/tooltip/tooltip-root.js.map +1 -0
- package/dist/default/ui/tooltip/tooltip-trigger.js +42 -0
- package/dist/default/ui/tooltip/tooltip-trigger.js.map +1 -0
- package/dist/default/ui/volume-slider/index.parts.js +2 -0
- package/dist/default/ui/volume-slider/index.parts.js.map +1 -1
- package/dist/default/ui/volume-slider/volume-slider-root.js +4 -4
- package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -1
- package/dist/default/utils/use-destroy.js +33 -0
- package/dist/default/utils/use-destroy.js.map +1 -0
- package/dist/dev/index.d.ts +15 -8
- package/dist/dev/index.js +11 -7
- package/dist/dev/media/hls-video/index.d.ts.map +1 -1
- package/dist/dev/media/hls-video/index.js +4 -3
- package/dist/dev/media/hls-video/index.js.map +1 -1
- package/dist/dev/player/create-player.d.ts.map +1 -1
- package/dist/dev/player/create-player.js +3 -2
- package/dist/dev/player/create-player.js.map +1 -1
- package/dist/dev/presets/video/error-dialog.js +51 -0
- package/dist/dev/presets/video/error-dialog.js.map +1 -0
- package/dist/dev/presets/video/minimal-skin.css +18 -26
- package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/video/minimal-skin.js +11 -30
- 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 +10 -29
- package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/video/skin.css +18 -25
- package/dist/dev/presets/video/skin.d.ts.map +1 -1
- package/dist/dev/presets/video/skin.js +11 -30
- 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 +11 -30
- package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/video/default.tailwind.js +3 -3
- package/dist/dev/skins/dist/default/video/default.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/video/minimal.tailwind.js +3 -3
- package/dist/dev/skins/dist/default/video/minimal.tailwind.js.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-close.d.ts +14 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-close.d.ts.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-close.js +31 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-close.js.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-description.d.ts +14 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-description.d.ts.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-description.js +16 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-description.js.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-popup.d.ts +14 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-popup.d.ts.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-popup.js +32 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-popup.js.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-root.d.ts +24 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-root.d.ts.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-root.js +59 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-root.js.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-title.d.ts +14 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-title.d.ts.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-title.js +16 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-title.js.map +1 -0
- package/dist/dev/ui/alert-dialog/context.d.ts +15 -0
- package/dist/dev/ui/alert-dialog/context.d.ts.map +1 -0
- package/dist/dev/ui/alert-dialog/context.js +16 -0
- package/dist/dev/ui/alert-dialog/context.js.map +1 -0
- package/dist/dev/ui/alert-dialog/index.d.ts +3 -0
- package/dist/dev/ui/alert-dialog/index.js +4 -0
- package/dist/dev/ui/alert-dialog/index.parts.d.ts +13 -0
- package/dist/dev/ui/alert-dialog/index.parts.d.ts.map +1 -0
- package/dist/dev/ui/alert-dialog/index.parts.js +19 -0
- package/dist/dev/ui/alert-dialog/index.parts.js.map +1 -0
- package/dist/dev/ui/captions-button/captions-button.d.ts +6 -27
- package/dist/dev/ui/captions-button/captions-button.d.ts.map +1 -1
- package/dist/dev/ui/captions-button/captions-button.js +10 -27
- package/dist/dev/ui/captions-button/captions-button.js.map +1 -1
- package/dist/dev/ui/captions-button/index.d.ts +2 -2
- package/dist/dev/ui/create-context-part.js +7 -2
- package/dist/dev/ui/create-context-part.js.map +1 -1
- package/dist/dev/ui/hooks/use-slider.d.ts.map +1 -1
- package/dist/dev/ui/hooks/use-slider.js +6 -17
- package/dist/dev/ui/hooks/use-slider.js.map +1 -1
- package/dist/dev/ui/popover/popover-arrow.js +1 -1
- package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
- package/dist/dev/ui/popover/popover-popup.js +4 -2
- package/dist/dev/ui/popover/popover-popup.js.map +1 -1
- package/dist/dev/ui/popover/popover-root.d.ts.map +1 -1
- package/dist/dev/ui/popover/popover-root.js +3 -2
- package/dist/dev/ui/popover/popover-root.js.map +1 -1
- package/dist/dev/ui/popover/popover-trigger.js +4 -5
- package/dist/dev/ui/popover/popover-trigger.js.map +1 -1
- package/dist/dev/ui/slider/index.parts.d.ts +3 -1
- package/dist/dev/ui/slider/index.parts.js +4 -0
- package/dist/dev/ui/slider/index.parts.js.map +1 -1
- package/dist/dev/ui/slider/slider-preview.d.ts +18 -0
- package/dist/dev/ui/slider/slider-preview.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-preview.js +40 -0
- package/dist/dev/ui/slider/slider-preview.js.map +1 -0
- package/dist/dev/ui/slider/slider-thumbnail.d.ts +14 -0
- package/dist/dev/ui/slider/slider-thumbnail.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-thumbnail.js +20 -0
- package/dist/dev/ui/slider/slider-thumbnail.js.map +1 -0
- package/dist/dev/ui/thumbnail/thumbnail.d.ts.map +1 -1
- package/dist/dev/ui/thumbnail/thumbnail.js +3 -5
- package/dist/dev/ui/thumbnail/thumbnail.js.map +1 -1
- package/dist/dev/ui/time-slider/index.parts.d.ts +2 -1
- package/dist/dev/ui/time-slider/index.parts.js +2 -0
- package/dist/dev/ui/time-slider/index.parts.js.map +1 -1
- package/dist/dev/ui/tooltip/context.d.ts +17 -0
- package/dist/dev/ui/tooltip/context.d.ts.map +1 -0
- package/dist/dev/ui/tooltip/context.js +16 -0
- package/dist/dev/ui/tooltip/context.js.map +1 -0
- package/dist/dev/ui/tooltip/group-context.js +15 -0
- package/dist/dev/ui/tooltip/group-context.js.map +1 -0
- package/dist/dev/ui/tooltip/index.d.ts +3 -0
- package/dist/dev/ui/tooltip/index.js +4 -0
- package/dist/dev/ui/tooltip/index.parts.d.ts +13 -0
- package/dist/dev/ui/tooltip/index.parts.d.ts.map +1 -0
- package/dist/dev/ui/tooltip/index.parts.js +19 -0
- package/dist/dev/ui/tooltip/index.parts.js.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-arrow.d.ts +15 -0
- package/dist/dev/ui/tooltip/tooltip-arrow.d.ts.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-arrow.js +17 -0
- package/dist/dev/ui/tooltip/tooltip-arrow.js.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-popup.d.ts +15 -0
- package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-popup.js +97 -0
- package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-provider.d.ts +19 -0
- package/dist/dev/ui/tooltip/tooltip-provider.d.ts.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-provider.js +28 -0
- package/dist/dev/ui/tooltip/tooltip-provider.js.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-root.d.ts +30 -0
- package/dist/dev/ui/tooltip/tooltip-root.d.ts.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-root.js +71 -0
- package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-trigger.d.ts +15 -0
- package/dist/dev/ui/tooltip/tooltip-trigger.d.ts.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-trigger.js +42 -0
- package/dist/dev/ui/tooltip/tooltip-trigger.js.map +1 -0
- package/dist/dev/ui/volume-slider/index.parts.d.ts +2 -1
- package/dist/dev/ui/volume-slider/index.parts.js +2 -0
- package/dist/dev/ui/volume-slider/index.parts.js.map +1 -1
- package/dist/dev/ui/volume-slider/volume-slider-root.js +4 -4
- package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -1
- package/dist/dev/utils/use-destroy.js +33 -0
- package/dist/dev/utils/use-destroy.js.map +1 -0
- package/package.json +38 -11
- package/dist/default/ui/error-dialog/error-dialog.js +0 -54
- package/dist/default/ui/error-dialog/error-dialog.js.map +0 -1
- package/dist/default/ui/error-dialog/index.js +0 -3
- package/dist/dev/ui/error-dialog/error-dialog.d.ts +0 -35
- package/dist/dev/ui/error-dialog/error-dialog.d.ts.map +0 -1
- package/dist/dev/ui/error-dialog/error-dialog.js +0 -54
- package/dist/dev/ui/error-dialog/error-dialog.js.map +0 -1
- package/dist/dev/ui/error-dialog/index.d.ts +0 -2
- package/dist/dev/ui/error-dialog/index.js +0 -3
package/dist/dev/index.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Container, ContainerProps, PlayerContextValue, useMedia, useMediaRegistration, usePlayer, usePlayerContext } from "./player/context.js";
|
|
2
2
|
import { CreatePlayerConfig, CreatePlayerResult, ProviderProps, createPlayer } from "./player/create-player.js";
|
|
3
|
+
import { AlertDialogContextValue, useAlertDialogContext } from "./ui/alert-dialog/context.js";
|
|
3
4
|
import { HTMLProps, RenderFunction, RenderProp, UIComponentProps } from "./utils/types.js";
|
|
5
|
+
import { index_parts_d_exports } from "./ui/alert-dialog/index.parts.js";
|
|
6
|
+
import "./ui/alert-dialog/index.js";
|
|
4
7
|
import { BufferingIndicator, BufferingIndicatorProps } from "./ui/buffering-indicator/buffering-indicator.js";
|
|
5
8
|
import { ControlsGroupProps } from "./ui/controls/controls-group.js";
|
|
6
9
|
import { ControlsRootProps } from "./ui/controls/controls-root.js";
|
|
7
|
-
import { index_parts_d_exports } from "./ui/controls/index.parts.js";
|
|
10
|
+
import { index_parts_d_exports as index_parts_d_exports$1 } from "./ui/controls/index.parts.js";
|
|
8
11
|
import "./ui/controls/index.js";
|
|
9
12
|
import { FullscreenButton, FullscreenButtonProps } from "./ui/fullscreen-button/fullscreen-button.js";
|
|
10
13
|
import { useButton } from "./ui/hooks/use-button.js";
|
|
@@ -14,7 +17,7 @@ import { PiPButton, PiPButtonProps } from "./ui/pip-button/pip-button.js";
|
|
|
14
17
|
import { PlayButton, PlayButtonProps } from "./ui/play-button/play-button.js";
|
|
15
18
|
import { PlaybackRateButton, PlaybackRateButtonProps } from "./ui/playback-rate-button/playback-rate-button.js";
|
|
16
19
|
import { PopoverContextValue, usePopoverContext } from "./ui/popover/context.js";
|
|
17
|
-
import { index_parts_d_exports as index_parts_d_exports$
|
|
20
|
+
import { index_parts_d_exports as index_parts_d_exports$2 } from "./ui/popover/index.parts.js";
|
|
18
21
|
import "./ui/popover/index.js";
|
|
19
22
|
import { Poster, PosterProps } from "./ui/poster/poster.js";
|
|
20
23
|
import { SeekButton, SeekButtonProps } from "./ui/seek-button/seek-button.js";
|
|
@@ -22,20 +25,24 @@ import { SliderBufferProps } from "./ui/slider/slider-buffer.js";
|
|
|
22
25
|
import { SliderFillProps } from "./ui/slider/slider-fill.js";
|
|
23
26
|
import { SliderRootProps } from "./ui/slider/slider-root.js";
|
|
24
27
|
import { SliderThumbProps } from "./ui/slider/slider-thumb.js";
|
|
28
|
+
import { Thumbnail, ThumbnailProps } from "./ui/thumbnail/thumbnail.js";
|
|
29
|
+
import { SliderThumbnailProps } from "./ui/slider/slider-thumbnail.js";
|
|
25
30
|
import { SliderTrackProps } from "./ui/slider/slider-track.js";
|
|
26
31
|
import { SliderValueProps } from "./ui/slider/slider-value.js";
|
|
27
|
-
import { index_parts_d_exports as index_parts_d_exports$
|
|
32
|
+
import { index_parts_d_exports as index_parts_d_exports$3 } from "./ui/slider/index.parts.js";
|
|
28
33
|
import "./ui/slider/index.js";
|
|
29
|
-
import {
|
|
30
|
-
import { index_parts_d_exports as index_parts_d_exports$3 } from "./ui/time/index.parts.js";
|
|
34
|
+
import { index_parts_d_exports as index_parts_d_exports$4 } from "./ui/time/index.parts.js";
|
|
31
35
|
import "./ui/time/index.js";
|
|
32
|
-
import { index_parts_d_exports as index_parts_d_exports$
|
|
36
|
+
import { index_parts_d_exports as index_parts_d_exports$5 } from "./ui/time-slider/index.parts.js";
|
|
33
37
|
import "./ui/time-slider/index.js";
|
|
34
|
-
import {
|
|
38
|
+
import { TooltipContextValue, useTooltipContext } from "./ui/tooltip/context.js";
|
|
39
|
+
import { index_parts_d_exports as index_parts_d_exports$6 } from "./ui/tooltip/index.parts.js";
|
|
40
|
+
import "./ui/tooltip/index.js";
|
|
41
|
+
import { index_parts_d_exports as index_parts_d_exports$7 } from "./ui/volume-slider/index.parts.js";
|
|
35
42
|
import "./ui/volume-slider/index.js";
|
|
36
43
|
import { mergeProps } from "./utils/merge-props.js";
|
|
37
44
|
import { renderElement } from "./utils/use-render.js";
|
|
38
45
|
import { Comparator, Selector, createSelector, shallowEqual } from "@videojs/store";
|
|
39
46
|
import { useSelector, useStore } from "@videojs/store/react";
|
|
40
47
|
export * from "@videojs/core/dom";
|
|
41
|
-
export { BufferingIndicator, type BufferingIndicatorProps, type Comparator, Container, type ContainerProps, index_parts_d_exports as Controls, type ControlsGroupProps, type ControlsRootProps, type CreatePlayerConfig, type CreatePlayerResult, FullscreenButton, type FullscreenButtonProps, type HTMLProps, MuteButton, type MuteButtonProps, PiPButton, type PiPButtonProps, PlayButton, type PlayButtonProps, PlaybackRateButton, type PlaybackRateButtonProps, type PlayerContextValue, index_parts_d_exports$
|
|
48
|
+
export { index_parts_d_exports as AlertDialog, type AlertDialogContextValue, BufferingIndicator, type BufferingIndicatorProps, type Comparator, Container, type ContainerProps, index_parts_d_exports$1 as Controls, type ControlsGroupProps, type ControlsRootProps, type CreatePlayerConfig, type CreatePlayerResult, FullscreenButton, type FullscreenButtonProps, type HTMLProps, MuteButton, type MuteButtonProps, PiPButton, type PiPButtonProps, PlayButton, type PlayButtonProps, PlaybackRateButton, type PlaybackRateButtonProps, type PlayerContextValue, index_parts_d_exports$2 as Popover, type PopoverContextValue, Poster, type PosterProps, type ProviderProps, type RenderFunction, type RenderProp, SeekButton, type SeekButtonProps, type Selector, index_parts_d_exports$3 as Slider, type SliderBufferProps, type SliderFillProps, type SliderRootProps, type SliderThumbProps, type SliderThumbnailProps, type SliderTrackProps, type SliderValueProps, Thumbnail, type ThumbnailProps, index_parts_d_exports$4 as Time, index_parts_d_exports$5 as TimeSlider, index_parts_d_exports$6 as Tooltip, type TooltipContextValue, type UIComponentProps, index_parts_d_exports$7 as VolumeSlider, createPlayer, createSelector, mergeProps, renderElement, shallowEqual, useAlertDialogContext, useButton, useMedia, useMediaRegistration, usePlayer, usePlayerContext, usePopoverContext, useSelector, useSlider, useStore, useTooltipContext };
|
package/dist/dev/index.js
CHANGED
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
import { Container, useMedia, useMediaRegistration, usePlayer, usePlayerContext } from "./player/context.js";
|
|
4
4
|
import { createPlayer } from "./player/create-player.js";
|
|
5
|
+
import { useAlertDialogContext } from "./ui/alert-dialog/context.js";
|
|
5
6
|
import { mergeProps } from "./utils/merge-props.js";
|
|
6
7
|
import { renderElement } from "./utils/use-render.js";
|
|
8
|
+
import { index_parts_exports } from "./ui/alert-dialog/index.parts.js";
|
|
7
9
|
import { BufferingIndicator } from "./ui/buffering-indicator/buffering-indicator.js";
|
|
8
|
-
import { index_parts_exports } from "./ui/controls/index.parts.js";
|
|
10
|
+
import { index_parts_exports as index_parts_exports$1 } from "./ui/controls/index.parts.js";
|
|
9
11
|
import { useButton } from "./ui/hooks/use-button.js";
|
|
10
12
|
import { FullscreenButton } from "./ui/fullscreen-button/fullscreen-button.js";
|
|
11
13
|
import { useSlider } from "./ui/hooks/use-slider.js";
|
|
@@ -14,17 +16,19 @@ import { PiPButton } from "./ui/pip-button/pip-button.js";
|
|
|
14
16
|
import { PlayButton } from "./ui/play-button/play-button.js";
|
|
15
17
|
import { PlaybackRateButton } from "./ui/playback-rate-button/playback-rate-button.js";
|
|
16
18
|
import { usePopoverContext } from "./ui/popover/context.js";
|
|
17
|
-
import { index_parts_exports as index_parts_exports$
|
|
19
|
+
import { index_parts_exports as index_parts_exports$2 } from "./ui/popover/index.parts.js";
|
|
18
20
|
import { Poster } from "./ui/poster/poster.js";
|
|
19
21
|
import { SeekButton } from "./ui/seek-button/seek-button.js";
|
|
20
|
-
import { index_parts_exports as index_parts_exports$2 } from "./ui/slider/index.parts.js";
|
|
21
22
|
import { Thumbnail } from "./ui/thumbnail/thumbnail.js";
|
|
22
|
-
import { index_parts_exports as index_parts_exports$3 } from "./ui/
|
|
23
|
-
import { index_parts_exports as index_parts_exports$4 } from "./ui/time
|
|
24
|
-
import { index_parts_exports as index_parts_exports$5 } from "./ui/
|
|
23
|
+
import { index_parts_exports as index_parts_exports$3 } from "./ui/slider/index.parts.js";
|
|
24
|
+
import { index_parts_exports as index_parts_exports$4 } from "./ui/time/index.parts.js";
|
|
25
|
+
import { index_parts_exports as index_parts_exports$5 } from "./ui/time-slider/index.parts.js";
|
|
26
|
+
import { useTooltipContext } from "./ui/tooltip/context.js";
|
|
27
|
+
import { index_parts_exports as index_parts_exports$6 } from "./ui/tooltip/index.parts.js";
|
|
28
|
+
import { index_parts_exports as index_parts_exports$7 } from "./ui/volume-slider/index.parts.js";
|
|
25
29
|
import { createSelector, shallowEqual } from "@videojs/store";
|
|
26
30
|
import { useSelector, useStore } from "@videojs/store/react";
|
|
27
31
|
|
|
28
32
|
export * from "@videojs/core/dom"
|
|
29
33
|
|
|
30
|
-
export { BufferingIndicator, Container, index_parts_exports as Controls, FullscreenButton, MuteButton, PiPButton, PlayButton, PlaybackRateButton, index_parts_exports$
|
|
34
|
+
export { index_parts_exports as AlertDialog, BufferingIndicator, Container, index_parts_exports$1 as Controls, FullscreenButton, MuteButton, PiPButton, PlayButton, PlaybackRateButton, index_parts_exports$2 as Popover, Poster, SeekButton, index_parts_exports$3 as Slider, Thumbnail, index_parts_exports$4 as Time, index_parts_exports$5 as TimeSlider, index_parts_exports$6 as Tooltip, index_parts_exports$7 as VolumeSlider, createPlayer, createSelector, mergeProps, renderElement, shallowEqual, useAlertDialogContext, useButton, useMedia, useMediaRegistration, usePlayer, usePlayerContext, usePopoverContext, useSelector, useSlider, useStore, useTooltipContext };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/media/hls-video/index.tsx"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/media/hls-video/index.tsx"],"mappings":";;;;KASY,aAAA,GAAgB,iBAAA,CAAkB,mBAAA,CAAoB,gBAAA;AAAA,cAErD,QAAA,QAAQ,yBAAA,CAAA,mBAAA,CAAA,gBAAA;aAAA,KAAA,CAAA,SAAA;AAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { useComposedRefs } from "../../utils/use-composed-refs.js";
|
|
2
2
|
import { useMediaRegistration } from "../../player/context.js";
|
|
3
|
+
import { useDestroy } from "../../utils/use-destroy.js";
|
|
3
4
|
import { attachMediaElement } from "../../utils/attach-media-element.js";
|
|
4
5
|
import { mediaProps } from "../../utils/media-props.js";
|
|
5
|
-
import { forwardRef,
|
|
6
|
+
import { forwardRef, useMemo } from "react";
|
|
6
7
|
import { jsx } from "react/jsx-runtime";
|
|
7
8
|
import { HlsMedia } from "@videojs/core/dom/media/hls";
|
|
8
9
|
|
|
@@ -10,9 +11,9 @@ import { HlsMedia } from "@videojs/core/dom/media/hls";
|
|
|
10
11
|
const HlsVideo = forwardRef(({ children, ...props }, ref) => {
|
|
11
12
|
const mediaApi = useMemo(() => new HlsMedia(), []);
|
|
12
13
|
const setMedia = useMediaRegistration();
|
|
13
|
-
|
|
14
|
+
useDestroy(mediaApi, () => {
|
|
14
15
|
setMedia?.(mediaApi);
|
|
15
|
-
}
|
|
16
|
+
});
|
|
16
17
|
return /* @__PURE__ */ jsx("video", {
|
|
17
18
|
ref: useComposedRefs(attachMediaElement(mediaApi), ref),
|
|
18
19
|
...mediaProps(mediaApi, props),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/media/hls-video/index.tsx"],"sourcesContent":["import { HlsMedia } from '@videojs/core/dom/media/hls';\nimport type { PropsWithChildren, VideoHTMLAttributes } from 'react';\nimport { forwardRef,
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/media/hls-video/index.tsx"],"sourcesContent":["import { HlsMedia } from '@videojs/core/dom/media/hls';\nimport type { PropsWithChildren, VideoHTMLAttributes } from 'react';\nimport { forwardRef, useMemo } from 'react';\nimport { useMediaRegistration } from '../../player/context';\nimport { attachMediaElement } from '../../utils/attach-media-element';\nimport { mediaProps } from '../../utils/media-props';\nimport { useComposedRefs } from '../../utils/use-composed-refs';\nimport { useDestroy } from '../../utils/use-destroy';\n\nexport type HlsVideoProps = PropsWithChildren<VideoHTMLAttributes<HTMLVideoElement>>;\n\nexport const HlsVideo = forwardRef<HTMLVideoElement, HlsVideoProps>(({ children, ...props }, ref) => {\n const mediaApi = useMemo(() => new HlsMedia(), []);\n const setMedia = useMediaRegistration();\n\n useDestroy(mediaApi, () => {\n setMedia?.(mediaApi);\n });\n\n const composedRef = useComposedRefs(attachMediaElement(mediaApi), ref);\n return (\n <video ref={composedRef} {...mediaProps(mediaApi, props)}>\n {children}\n </video>\n );\n});\n\nexport default HlsVideo;\n"],"mappings":";;;;;;;;;;AAWA,MAAa,WAAW,YAA6C,EAAE,UAAU,GAAG,SAAS,QAAQ;CACnG,MAAM,WAAW,cAAc,IAAI,UAAU,EAAE,EAAE,CAAC;CAClD,MAAM,WAAW,sBAAsB;AAEvC,YAAW,gBAAgB;AACzB,aAAW,SAAS;GACpB;AAGF,QACE,oBAAC;EAAM,KAFW,gBAAgB,mBAAmB,SAAS,EAAE,IAAI;EAE3C,GAAI,WAAW,UAAU,MAAM;EACrD;GACK;EAEV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-player.d.ts","names":[],"sources":["../../../src/player/create-player.tsx"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"create-player.d.ts","names":[],"sources":["../../../src/player/create-player.tsx"],"mappings":";;;;;;UAsBiB,kBAAA,kBAAoC,gBAAA;EACnD,QAAA,EAAU,QAAA;EACV,WAAA;AAAA;AAAA,UAGe,aAAA;EACf,QAAA,EAAU,SAAA;AAAA;AAAA,UAGK,kBAAA,eAAiC,WAAA;EAChD,QAAA,EAAU,EAAA,CAAG,aAAA;EACb,SAAA,SAAkB,SAAA;EAClB,SAAA,EAAW,aAAA,CAAc,KAAA;EACzB,QAAA,QAAgB,KAAA;AAAA;AAAA,KAGN,aAAA,eAA4B,WAAA;EAAA,IAClC,KAAA;EAAA,IACA,QAAA,GAAW,KAAA,EAAO,eAAA,CAAgB,KAAA,MAAW,CAAA,GAAI,CAAA;AAAA;;AATvD;;;;;iBAkBgB,YAAA,CAAa,MAAA,EAAQ,kBAAA,CAAmB,aAAA,IAAiB,kBAAA,CAAmB,gBAAA;;;;;;;iBAQ5E,YAAA,CAAa,MAAA,EAAQ,kBAAA,CAAmB,aAAA,IAAiB,kBAAA,CAAmB,gBAAA;;;;;;;iBAQ5E,YAAA,wBAAoC,gBAAA,GAAA,CAClD,MAAA,EAAQ,kBAAA,CAAmB,QAAA,IAC1B,kBAAA,CAAmB,WAAA,CAAY,QAAA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { Container, PlayerContextProvider, useMedia, usePlayerContext } from "./context.js";
|
|
4
|
+
import { useDestroy } from "../utils/use-destroy.js";
|
|
4
5
|
import { combine, createStore } from "@videojs/store";
|
|
5
6
|
import { useStore } from "@videojs/store/react";
|
|
6
|
-
import {
|
|
7
|
+
import { useState } from "react";
|
|
7
8
|
import { jsx } from "react/jsx-runtime";
|
|
8
9
|
|
|
9
10
|
//#region src/player/create-player.tsx
|
|
@@ -11,7 +12,7 @@ function createPlayer(config) {
|
|
|
11
12
|
function Provider({ children }) {
|
|
12
13
|
const [store] = useState(() => createStore()(combine(...config.features)));
|
|
13
14
|
const [media, setMedia] = useState(null);
|
|
14
|
-
|
|
15
|
+
useDestroy(store);
|
|
15
16
|
return /* @__PURE__ */ jsx(PlayerContextProvider, {
|
|
16
17
|
value: {
|
|
17
18
|
store,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-player.js","names":[],"sources":["../../../src/player/create-player.tsx"],"sourcesContent":["'use client';\n\nimport type {\n AnyPlayerFeature,\n AnyPlayerStore,\n AudioFeatures,\n AudioPlayerStore,\n Media,\n PlayerStore,\n PlayerTarget,\n VideoFeatures,\n VideoPlayerStore,\n} from '@videojs/core/dom';\nimport type { InferStoreState } from '@videojs/store';\nimport { combine, createStore } from '@videojs/store';\nimport { useStore } from '@videojs/store/react';\nimport type { FC, ReactNode } from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"create-player.js","names":[],"sources":["../../../src/player/create-player.tsx"],"sourcesContent":["'use client';\n\nimport type {\n AnyPlayerFeature,\n AnyPlayerStore,\n AudioFeatures,\n AudioPlayerStore,\n Media,\n PlayerStore,\n PlayerTarget,\n VideoFeatures,\n VideoPlayerStore,\n} from '@videojs/core/dom';\nimport type { InferStoreState } from '@videojs/store';\nimport { combine, createStore } from '@videojs/store';\nimport { useStore } from '@videojs/store/react';\nimport type { FC, ReactNode } from 'react';\nimport { useState } from 'react';\n\nimport { useDestroy } from '../utils/use-destroy';\nimport { Container, PlayerContextProvider, useMedia, usePlayerContext } from './context';\n\nexport interface CreatePlayerConfig<Features extends AnyPlayerFeature[]> {\n features: Features;\n displayName?: string;\n}\n\nexport interface ProviderProps {\n children: ReactNode;\n}\n\nexport interface CreatePlayerResult<Store extends PlayerStore> {\n Provider: FC<ProviderProps>;\n Container: typeof Container;\n usePlayer: UsePlayerHook<Store>;\n useMedia: () => Media | null;\n}\n\nexport type UsePlayerHook<Store extends PlayerStore> = {\n (): Store;\n <R>(selector: (state: InferStoreState<Store>) => R): R;\n};\n\n/**\n * Create a player instance with typed store, Provider component, Container, and hooks.\n *\n * @label Video\n * @param config - Player configuration with features and optional display name.\n */\nexport function createPlayer(config: CreatePlayerConfig<VideoFeatures>): CreatePlayerResult<VideoPlayerStore>;\n\n/**\n * Create a player for audio media.\n *\n * @label Audio\n * @param config - Player configuration with features and optional display name.\n */\nexport function createPlayer(config: CreatePlayerConfig<AudioFeatures>): CreatePlayerResult<AudioPlayerStore>;\n\n/**\n * Create a player with custom features.\n *\n * @label Generic\n * @param config - Player configuration with features and optional display name.\n */\nexport function createPlayer<const Features extends AnyPlayerFeature[]>(\n config: CreatePlayerConfig<Features>\n): CreatePlayerResult<PlayerStore<Features>>;\n\nexport function createPlayer(config: CreatePlayerConfig<AnyPlayerFeature[]>): CreatePlayerResult<AnyPlayerStore> {\n function Provider({ children }: ProviderProps): ReactNode {\n const [store] = useState(() => createStore<PlayerTarget>()(combine(...config.features)));\n const [media, setMedia] = useState<Media | null>(null);\n\n useDestroy(store);\n\n return <PlayerContextProvider value={{ store, media, setMedia }}>{children}</PlayerContextProvider>;\n }\n\n if (__DEV__ && config.displayName) {\n Provider.displayName = `${config.displayName}.Provider`;\n }\n\n function usePlayer<R>(selector?: (state: object) => R): AnyPlayerStore | R {\n const { store } = usePlayerContext();\n return useStore(store, selector as any);\n }\n\n return {\n Provider,\n Container,\n usePlayer,\n useMedia,\n };\n}\n"],"mappings":";;;;;;;;;;AAqEA,SAAgB,aAAa,QAAoF;CAC/G,SAAS,SAAS,EAAE,YAAsC;EACxD,MAAM,CAAC,SAAS,eAAe,aAA2B,CAAC,QAAQ,GAAG,OAAO,SAAS,CAAC,CAAC;EACxF,MAAM,CAAC,OAAO,YAAY,SAAuB,KAAK;AAEtD,aAAW,MAAM;AAEjB,SAAO,oBAAC;GAAsB,OAAO;IAAE;IAAO;IAAO;IAAU;GAAG;IAAiC;;AAGrG,KAAe,OAAO,YACpB,UAAS,cAAc,GAAG,OAAO,YAAY;CAG/C,SAAS,UAAa,UAAqD;EACzE,MAAM,EAAE,UAAU,kBAAkB;AACpC,SAAO,SAAS,OAAO,SAAgB;;AAGzC,QAAO;EACL;EACA;EACA;EACA;EACD"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { usePlayer } from "../../player/context.js";
|
|
4
|
+
import { AlertDialogClose } from "../../ui/alert-dialog/alert-dialog-close.js";
|
|
5
|
+
import { AlertDialogDescription } from "../../ui/alert-dialog/alert-dialog-description.js";
|
|
6
|
+
import { AlertDialogPopup } from "../../ui/alert-dialog/alert-dialog-popup.js";
|
|
7
|
+
import { AlertDialogRoot } from "../../ui/alert-dialog/alert-dialog-root.js";
|
|
8
|
+
import { AlertDialogTitle } from "../../ui/alert-dialog/alert-dialog-title.js";
|
|
9
|
+
import { selectError } from "@videojs/core/dom";
|
|
10
|
+
import { useRef } from "react";
|
|
11
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
|
+
|
|
13
|
+
//#region src/presets/video/error-dialog.tsx
|
|
14
|
+
function ErrorDialog({ classes }) {
|
|
15
|
+
const errorState = usePlayer(selectError);
|
|
16
|
+
const lastError = useRef(errorState?.error);
|
|
17
|
+
if (errorState?.error) lastError.current = errorState.error;
|
|
18
|
+
if (!errorState) return null;
|
|
19
|
+
return /* @__PURE__ */ jsx(AlertDialogRoot, {
|
|
20
|
+
open: !!errorState.error,
|
|
21
|
+
onOpenChange: (open) => {
|
|
22
|
+
if (!open) errorState.dismissError();
|
|
23
|
+
},
|
|
24
|
+
children: /* @__PURE__ */ jsx(AlertDialogPopup, {
|
|
25
|
+
className: classes?.root,
|
|
26
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
27
|
+
className: classes?.dialog,
|
|
28
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
29
|
+
className: classes?.content,
|
|
30
|
+
children: [/* @__PURE__ */ jsx(AlertDialogTitle, {
|
|
31
|
+
className: classes?.title,
|
|
32
|
+
children: "Something went wrong."
|
|
33
|
+
}), /* @__PURE__ */ jsx(AlertDialogDescription, {
|
|
34
|
+
className: classes?.description,
|
|
35
|
+
children: lastError.current?.message ?? "An error occurred while trying to play the video. Please try again."
|
|
36
|
+
})]
|
|
37
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
38
|
+
className: classes?.actions,
|
|
39
|
+
children: /* @__PURE__ */ jsx(AlertDialogClose, {
|
|
40
|
+
className: classes?.close,
|
|
41
|
+
children: "OK"
|
|
42
|
+
})
|
|
43
|
+
})]
|
|
44
|
+
})
|
|
45
|
+
})
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
//#endregion
|
|
50
|
+
export { ErrorDialog };
|
|
51
|
+
//# sourceMappingURL=error-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-dialog.js","names":["AlertDialog.Root","AlertDialog.Popup","AlertDialog.Title","AlertDialog.Description","AlertDialog.Close"],"sources":["../../../../src/presets/video/error-dialog.tsx"],"sourcesContent":["'use client';\n\nimport { selectError } from '@videojs/core/dom';\nimport { type ReactNode, useRef } from 'react';\nimport { usePlayer } from '@/player/context';\nimport { AlertDialog } from '@/ui/alert-dialog';\n\nexport interface ErrorDialogClasses {\n root?: string;\n dialog?: string;\n content?: string;\n title?: string;\n description?: string;\n actions?: string;\n close?: string;\n}\n\nexport function ErrorDialog({ classes }: { classes?: ErrorDialogClasses }): ReactNode {\n const errorState = usePlayer(selectError);\n const lastError = useRef(errorState?.error);\n if (errorState?.error) lastError.current = errorState.error;\n\n if (!errorState) return null;\n\n return (\n <AlertDialog.Root\n open={!!errorState.error}\n onOpenChange={(open) => {\n if (!open) errorState.dismissError();\n }}\n >\n <AlertDialog.Popup className={classes?.root}>\n <div className={classes?.dialog}>\n <div className={classes?.content}>\n <AlertDialog.Title className={classes?.title}>Something went wrong.</AlertDialog.Title>\n <AlertDialog.Description className={classes?.description}>\n {lastError.current?.message ?? 'An error occurred while trying to play the video. Please try again.'}\n </AlertDialog.Description>\n </div>\n <div className={classes?.actions}>\n <AlertDialog.Close className={classes?.close}>OK</AlertDialog.Close>\n </div>\n </div>\n </AlertDialog.Popup>\n </AlertDialog.Root>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAiBA,SAAgB,YAAY,EAAE,WAAwD;CACpF,MAAM,aAAa,UAAU,YAAY;CACzC,MAAM,YAAY,OAAO,YAAY,MAAM;AAC3C,KAAI,YAAY,MAAO,WAAU,UAAU,WAAW;AAEtD,KAAI,CAAC,WAAY,QAAO;AAExB,QACE,oBAACA;EACC,MAAM,CAAC,CAAC,WAAW;EACnB,eAAe,SAAS;AACtB,OAAI,CAAC,KAAM,YAAW,cAAc;;YAGtC,oBAACC;GAAkB,WAAW,SAAS;aACrC,qBAAC;IAAI,WAAW,SAAS;eACvB,qBAAC;KAAI,WAAW,SAAS;gBACvB,oBAACC;MAAkB,WAAW,SAAS;gBAAO;OAAyC,EACvF,oBAACC;MAAwB,WAAW,SAAS;gBAC1C,UAAU,SAAS,WAAW;OACP;MACtB,EACN,oBAAC;KAAI,WAAW,SAAS;eACvB,oBAACC;MAAkB,WAAW,SAAS;gBAAO;OAAsB;MAChE;KACF;IACY;GACH"}
|
|
@@ -172,12 +172,12 @@
|
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
.media-minimal-skin .media-controls[data-visible] ~ .media-overlay,
|
|
175
|
-
.media-minimal-skin .media-error[data-
|
|
175
|
+
.media-minimal-skin .media-error[data-open] ~ .media-overlay {
|
|
176
176
|
opacity: 1;
|
|
177
177
|
transition-duration: 150ms;
|
|
178
178
|
transition-delay: 0ms;
|
|
179
179
|
}
|
|
180
|
-
.media-minimal-skin .media-error[data-
|
|
180
|
+
.media-minimal-skin .media-error[data-open] ~ .media-overlay {
|
|
181
181
|
backdrop-filter: blur(8px) saturate(1.2) brightness(0.9);
|
|
182
182
|
}
|
|
183
183
|
|
|
@@ -204,9 +204,6 @@
|
|
|
204
204
|
========================================================================== */
|
|
205
205
|
|
|
206
206
|
.media-minimal-skin .media-error {
|
|
207
|
-
display: none;
|
|
208
|
-
}
|
|
209
|
-
.media-minimal-skin .media-error[data-visible] {
|
|
210
207
|
position: absolute;
|
|
211
208
|
inset: 0;
|
|
212
209
|
z-index: 20;
|
|
@@ -216,11 +213,20 @@
|
|
|
216
213
|
pointer-events: none;
|
|
217
214
|
}
|
|
218
215
|
.media-minimal-skin .media-error__dialog {
|
|
219
|
-
display:
|
|
220
|
-
|
|
216
|
+
display: flex;
|
|
217
|
+
flex-direction: column;
|
|
218
|
+
gap: 0.75rem;
|
|
219
|
+
max-width: 16rem;
|
|
220
|
+
padding: 1rem;
|
|
221
|
+
color: oklch(1 0 0);
|
|
222
|
+
font-size: 0.875rem;
|
|
223
|
+
text-shadow: 0 1px 0 oklch(0 0 0 / 0.5);
|
|
224
|
+
pointer-events: auto;
|
|
225
|
+
opacity: 1;
|
|
226
|
+
transform: scale(1);
|
|
227
|
+
transition-property: opacity, transform;
|
|
221
228
|
transition-duration: 500ms;
|
|
222
229
|
transition-delay: 100ms;
|
|
223
|
-
transition-behavior: allow-discrete;
|
|
224
230
|
transition-timing-function: linear(
|
|
225
231
|
0,
|
|
226
232
|
0.034 1.5%,
|
|
@@ -233,24 +239,10 @@
|
|
|
233
239
|
1
|
|
234
240
|
);
|
|
235
241
|
}
|
|
236
|
-
.media-minimal-skin .media-error[data-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
max-width: 16rem;
|
|
241
|
-
padding: 1rem;
|
|
242
|
-
color: oklch(1 0 0);
|
|
243
|
-
font-size: 0.875rem;
|
|
244
|
-
text-shadow: 0 1px 0 oklch(0 0 0 / 0.5);
|
|
245
|
-
pointer-events: auto;
|
|
246
|
-
transform: scale(1);
|
|
247
|
-
opacity: 1;
|
|
248
|
-
color: oklch(1 0 0);
|
|
249
|
-
|
|
250
|
-
@starting-style {
|
|
251
|
-
transform: scale(0.5);
|
|
252
|
-
opacity: 0;
|
|
253
|
-
}
|
|
242
|
+
.media-minimal-skin .media-error[data-starting-style] .media-error__dialog,
|
|
243
|
+
.media-minimal-skin .media-error[data-ending-style] .media-error__dialog {
|
|
244
|
+
opacity: 0;
|
|
245
|
+
transform: scale(0.5);
|
|
254
246
|
}
|
|
255
247
|
.media-minimal-skin .media-error__content {
|
|
256
248
|
display: flex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimal-skin.d.ts","names":[],"sources":["../../../../src/presets/video/minimal-skin.tsx"],"mappings":";;;;KAoCY,qBAAA,GAAwB,aAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"minimal-skin.d.ts","names":[],"sources":["../../../../src/presets/video/minimal-skin.tsx"],"mappings":";;;;KAoCY,qBAAA,GAAwB,aAAA;AAAA,iBAgBpB,gBAAA,CAAiB,KAAA,EAAO,qBAAA,GAAwB,SAAA"}
|
|
@@ -33,7 +33,7 @@ import VolumeHighIcon from "../../icons/dist/react/minimal/volume-high.js";
|
|
|
33
33
|
import VolumeLowIcon from "../../icons/dist/react/minimal/volume-low.js";
|
|
34
34
|
import VolumeOffIcon from "../../icons/dist/react/minimal/volume-off.js";
|
|
35
35
|
import { CaptionsButton } from "../../ui/captions-button/captions-button.js";
|
|
36
|
-
import { ErrorDialog } from "
|
|
36
|
+
import { ErrorDialog } from "./error-dialog.js";
|
|
37
37
|
import { forwardRef } from "react";
|
|
38
38
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
39
39
|
import { cn } from "@videojs/utils/style";
|
|
@@ -48,6 +48,15 @@ const Button = forwardRef(function Button({ className, ...props }, ref) {
|
|
|
48
48
|
...props
|
|
49
49
|
});
|
|
50
50
|
});
|
|
51
|
+
const errorClasses = {
|
|
52
|
+
root: "media-error",
|
|
53
|
+
dialog: "media-error__dialog",
|
|
54
|
+
content: "media-error__content",
|
|
55
|
+
title: "media-error__title",
|
|
56
|
+
description: "media-error__description",
|
|
57
|
+
actions: "media-error__actions",
|
|
58
|
+
close: "media-button"
|
|
59
|
+
};
|
|
51
60
|
function MinimalVideoSkin(props) {
|
|
52
61
|
const { children, className, ...rest } = props;
|
|
53
62
|
return /* @__PURE__ */ jsxs(Container, {
|
|
@@ -59,35 +68,7 @@ function MinimalVideoSkin(props) {
|
|
|
59
68
|
className: "media-buffering-indicator",
|
|
60
69
|
children: /* @__PURE__ */ jsx(SpinnerIcon, { className: "media-icon" })
|
|
61
70
|
}) }),
|
|
62
|
-
/* @__PURE__ */ jsx(ErrorDialog, {
|
|
63
|
-
"aria-labelledby": "media-error-title",
|
|
64
|
-
"aria-describedby": "media-error-description",
|
|
65
|
-
render: (props, { onDismiss }) => /* @__PURE__ */ jsx("div", {
|
|
66
|
-
...props,
|
|
67
|
-
className: "media-error",
|
|
68
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
69
|
-
className: "media-error__dialog",
|
|
70
|
-
children: [/* @__PURE__ */ jsxs("div", {
|
|
71
|
-
className: "media-error__content",
|
|
72
|
-
children: [/* @__PURE__ */ jsx("p", {
|
|
73
|
-
id: "media-error-title",
|
|
74
|
-
className: "media-error__title",
|
|
75
|
-
children: "Something went wrong."
|
|
76
|
-
}), /* @__PURE__ */ jsx("p", {
|
|
77
|
-
id: "media-error-description",
|
|
78
|
-
className: "media-error__description",
|
|
79
|
-
children: "An error occurred while trying to play the video. Please try again."
|
|
80
|
-
})]
|
|
81
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
82
|
-
className: "media-error__actions",
|
|
83
|
-
children: /* @__PURE__ */ jsx(Button, {
|
|
84
|
-
onClick: onDismiss,
|
|
85
|
-
children: "OK"
|
|
86
|
-
})
|
|
87
|
-
})]
|
|
88
|
-
})
|
|
89
|
-
})
|
|
90
|
-
}),
|
|
71
|
+
/* @__PURE__ */ jsx(ErrorDialog, { classes: errorClasses }),
|
|
91
72
|
/* @__PURE__ */ jsxs(ControlsRoot, {
|
|
92
73
|
className: "media-controls",
|
|
93
74
|
children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimal-skin.js","names":["Controls.Root","Time.Group","Time.Value","Time.Separator","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb"],"sources":["../../../../src/presets/video/minimal-skin.tsx"],"sourcesContent":["import {\n CaptionsOffIcon,\n CaptionsOnIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n PauseIcon,\n PipIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react/minimal';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container } from '@/player/context';\nimport { BufferingIndicator } from '@/ui/buffering-indicator';\nimport { CaptionsButton } from '@/ui/captions-button';\nimport { Controls } from '@/ui/controls';\nimport { ErrorDialog } from '@/ui/error-dialog';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport type { BaseSkinProps } from '../types';\n\nconst SEEK_TIME = 10;\n\nexport type MinimalVideoSkinProps = BaseSkinProps;\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return <button ref={ref} type=\"button\" className={cn('media-button', className)} {...props} />;\n});\n\nexport function MinimalVideoSkin(props: MinimalVideoSkinProps): ReactNode {\n const { children, className, ...rest } = props;\n\n return (\n <Container className={cn('media-minimal-skin', className)} {...rest}>\n <BufferingIndicator\n render={(props) => (\n <div {...props} className=\"media-buffering-indicator\">\n <SpinnerIcon className=\"media-icon\" />\n </div>\n )}\n />\n\n <ErrorDialog\n aria-labelledby=\"media-error-title\"\n aria-describedby=\"media-error-description\"\n render={(props, { onDismiss }) => (\n <div {...props} className=\"media-error\">\n <div className=\"media-error__dialog\">\n <div className=\"media-error__content\">\n <p id=\"media-error-title\" className=\"media-error__title\">\n Something went wrong.\n </p>\n <p id=\"media-error-description\" className=\"media-error__description\">\n An error occurred while trying to play the video. Please try again.\n </p>\n </div>\n <div className=\"media-error__actions\">\n <Button onClick={onDismiss}>OK</Button>\n </div>\n </div>\n </div>\n )}\n />\n\n <Controls.Root className=\"media-controls\">\n <span className=\"media-button-group\">\n <PlayButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--play\">\n <RestartIcon className=\"media-icon media-icon--restart\" />\n <PlayIcon className=\"media-icon media-icon--play\" />\n <PauseIcon className=\"media-icon media-icon--pause\" />\n </Button>\n )}\n />\n\n <SeekButton\n seconds={-SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek media-icon--flipped\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n\n <SeekButton\n seconds={SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n </span>\n\n <span className=\"media-time-controls\">\n <Time.Group className=\"media-time\">\n <Time.Value type=\"current\" className=\"media-time__value media-time__value--current\" />\n <Time.Separator className=\"media-time__separator\" />\n <Time.Value type=\"duration\" className=\"media-time__value media-time__value--duration\" />\n </Time.Group>\n\n <TimeSlider.Root className=\"media-slider\">\n <TimeSlider.Track className=\"media-slider__track\">\n <TimeSlider.Fill className=\"media-slider__fill\" />\n <TimeSlider.Buffer className=\"media-slider__buffer\" />\n </TimeSlider.Track>\n <TimeSlider.Thumb className=\"media-slider__thumb\" />\n </TimeSlider.Root>\n </span>\n\n <span className=\"media-button-group\">\n <PlaybackRateButton\n render={(props) => <Button {...props} className=\"media-button--icon media-button--playback-rate\" />}\n />\n\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"top\">\n <Popover.Trigger\n render={\n <MuteButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--mute\">\n <VolumeOffIcon className=\"media-icon media-icon--volume-off\" />\n <VolumeLowIcon className=\"media-icon media-icon--volume-low\" />\n <VolumeHighIcon className=\"media-icon media-icon--volume-high\" />\n </Button>\n )}\n />\n }\n />\n <Popover.Popup className=\"media-surface media-popup media-popup--volume media-popup-animation\">\n <VolumeSlider.Root className=\"media-slider\" orientation=\"vertical\" thumbAlignment=\"edge\">\n <VolumeSlider.Track className=\"media-slider__track\">\n <VolumeSlider.Fill className=\"media-slider__fill\" />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb className=\"media-slider__thumb media-slider__thumb--persistent\" />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n\n <CaptionsButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--captions\">\n <CaptionsOffIcon className=\"media-icon media-icon--captions-off\" />\n <CaptionsOnIcon className=\"media-icon media-icon--captions-on\" />\n </Button>\n )}\n />\n\n <PiPButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon\">\n <PipIcon className=\"media-icon\" />\n </Button>\n )}\n />\n\n <FullscreenButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--fullscreen\">\n <FullscreenEnterIcon className=\"media-icon media-icon--fullscreen-enter\" />\n <FullscreenExitIcon className=\"media-icon media-icon--fullscreen-exit\" />\n </Button>\n )}\n />\n </span>\n </Controls.Root>\n\n {/* <div className=\"media-captions\">\n <div className=\"media-captions__container\">\n <span className=\"media-captions__text\">An example cue</span>\n <span className=\"media-captions__text\">\n <p>Another example cue with HTML</p>\n </span>\n </div>\n </div> */}\n\n <div className=\"media-overlay\" />\n\n {children}\n </Container>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"minimal-skin.js","names":["Controls.Root","Time.Group","Time.Value","Time.Separator","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb"],"sources":["../../../../src/presets/video/minimal-skin.tsx"],"sourcesContent":["import {\n CaptionsOffIcon,\n CaptionsOnIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n PauseIcon,\n PipIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react/minimal';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container } from '@/player/context';\nimport { BufferingIndicator } from '@/ui/buffering-indicator';\nimport { CaptionsButton } from '@/ui/captions-button';\nimport { Controls } from '@/ui/controls';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport type { BaseSkinProps } from '../types';\nimport { ErrorDialog } from './error-dialog';\n\nconst SEEK_TIME = 10;\n\nexport type MinimalVideoSkinProps = BaseSkinProps;\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return <button ref={ref} type=\"button\" className={cn('media-button', className)} {...props} />;\n});\n\nconst errorClasses = {\n root: 'media-error',\n dialog: 'media-error__dialog',\n content: 'media-error__content',\n title: 'media-error__title',\n description: 'media-error__description',\n actions: 'media-error__actions',\n close: 'media-button',\n};\n\nexport function MinimalVideoSkin(props: MinimalVideoSkinProps): ReactNode {\n const { children, className, ...rest } = props;\n\n return (\n <Container className={cn('media-minimal-skin', className)} {...rest}>\n <BufferingIndicator\n render={(props) => (\n <div {...props} className=\"media-buffering-indicator\">\n <SpinnerIcon className=\"media-icon\" />\n </div>\n )}\n />\n\n <ErrorDialog classes={errorClasses} />\n\n <Controls.Root className=\"media-controls\">\n <span className=\"media-button-group\">\n <PlayButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--play\">\n <RestartIcon className=\"media-icon media-icon--restart\" />\n <PlayIcon className=\"media-icon media-icon--play\" />\n <PauseIcon className=\"media-icon media-icon--pause\" />\n </Button>\n )}\n />\n\n <SeekButton\n seconds={-SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek media-icon--flipped\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n\n <SeekButton\n seconds={SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n </span>\n\n <span className=\"media-time-controls\">\n <Time.Group className=\"media-time\">\n <Time.Value type=\"current\" className=\"media-time__value media-time__value--current\" />\n <Time.Separator className=\"media-time__separator\" />\n <Time.Value type=\"duration\" className=\"media-time__value media-time__value--duration\" />\n </Time.Group>\n\n <TimeSlider.Root className=\"media-slider\">\n <TimeSlider.Track className=\"media-slider__track\">\n <TimeSlider.Fill className=\"media-slider__fill\" />\n <TimeSlider.Buffer className=\"media-slider__buffer\" />\n </TimeSlider.Track>\n <TimeSlider.Thumb className=\"media-slider__thumb\" />\n </TimeSlider.Root>\n </span>\n\n <span className=\"media-button-group\">\n <PlaybackRateButton\n render={(props) => <Button {...props} className=\"media-button--icon media-button--playback-rate\" />}\n />\n\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"top\">\n <Popover.Trigger\n render={\n <MuteButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--mute\">\n <VolumeOffIcon className=\"media-icon media-icon--volume-off\" />\n <VolumeLowIcon className=\"media-icon media-icon--volume-low\" />\n <VolumeHighIcon className=\"media-icon media-icon--volume-high\" />\n </Button>\n )}\n />\n }\n />\n <Popover.Popup className=\"media-surface media-popup media-popup--volume media-popup-animation\">\n <VolumeSlider.Root className=\"media-slider\" orientation=\"vertical\" thumbAlignment=\"edge\">\n <VolumeSlider.Track className=\"media-slider__track\">\n <VolumeSlider.Fill className=\"media-slider__fill\" />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb className=\"media-slider__thumb media-slider__thumb--persistent\" />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n\n <CaptionsButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--captions\">\n <CaptionsOffIcon className=\"media-icon media-icon--captions-off\" />\n <CaptionsOnIcon className=\"media-icon media-icon--captions-on\" />\n </Button>\n )}\n />\n\n <PiPButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon\">\n <PipIcon className=\"media-icon\" />\n </Button>\n )}\n />\n\n <FullscreenButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--fullscreen\">\n <FullscreenEnterIcon className=\"media-icon media-icon--fullscreen-enter\" />\n <FullscreenExitIcon className=\"media-icon media-icon--fullscreen-exit\" />\n </Button>\n )}\n />\n </span>\n </Controls.Root>\n\n {/* <div className=\"media-captions\">\n <div className=\"media-captions__container\">\n <span className=\"media-captions__text\">An example cue</span>\n <span className=\"media-captions__text\">\n <p>Another example cue with HTML</p>\n </span>\n </div>\n </div> */}\n\n <div className=\"media-overlay\" />\n\n {children}\n </Container>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAM,YAAY;AAIlB,MAAM,SAAS,WAAwD,SAAS,OAAO,EAAE,WAAW,GAAG,SAAS,KAAK;AACnH,QAAO,oBAAC;EAAY;EAAK,MAAK;EAAS,WAAW,GAAG,gBAAgB,UAAU;EAAE,GAAI;GAAS;EAC9F;AAEF,MAAM,eAAe;CACnB,MAAM;CACN,QAAQ;CACR,SAAS;CACT,OAAO;CACP,aAAa;CACb,SAAS;CACT,OAAO;CACR;AAED,SAAgB,iBAAiB,OAAyC;CACxE,MAAM,EAAE,UAAU,WAAW,GAAG,SAAS;AAEzC,QACE,qBAAC;EAAU,WAAW,GAAG,sBAAsB,UAAU;EAAE,GAAI;;GAC7D,oBAAC,sBACC,SAAS,UACP,oBAAC;IAAI,GAAI;IAAO,WAAU;cACxB,oBAAC,eAAY,WAAU,eAAe;KAClC,GAER;GAEF,oBAAC,eAAY,SAAS,eAAgB;GAEtC,qBAACA;IAAc,WAAU;;KACvB,qBAAC;MAAK,WAAU;;OACd,oBAAC,cACC,SAAS,UACP,qBAAC;QAAO,GAAI;QAAO,WAAU;;SAC3B,oBAAC,eAAY,WAAU,mCAAmC;SAC1D,oBAAC,YAAS,WAAU,gCAAgC;SACpD,oBAAC,aAAU,WAAU,iCAAiC;;SAC/C,GAEX;OAEF,oBAAC;QACC,SAAS,CAAC;QACV,SAAS,UACP,oBAAC;SAAO,GAAI;SAAO,WAAU;mBAC3B,qBAAC;UAAK,WAAU;qBACd,oBAAC,YAAS,WAAU,oDAAoD,EACxE,oBAAC;WAAK,WAAU;qBAAqB;YAAiB;WACjD;UACA;SAEX;OAEF,oBAAC;QACC,SAAS;QACT,SAAS,UACP,oBAAC;SAAO,GAAI;SAAO,WAAU;mBAC3B,qBAAC;UAAK,WAAU;qBACd,oBAAC,YAAS,WAAU,gCAAgC,EACpD,oBAAC;WAAK,WAAU;qBAAqB;YAAiB;WACjD;UACA;SAEX;;OACG;KAEP,qBAAC;MAAK,WAAU;iBACd,qBAACC;OAAW,WAAU;;QACpB,oBAACC;SAAW,MAAK;SAAU,WAAU;UAAiD;QACtF,oBAACC,aAAe,WAAU,0BAA0B;QACpD,oBAACD;SAAW,MAAK;SAAW,WAAU;UAAkD;;QAC7E,EAEb,qBAACE;OAAgB,WAAU;kBACzB,qBAACC;QAAiB,WAAU;mBAC1B,oBAACC,cAAgB,WAAU,uBAAuB,EAClD,oBAACC,gBAAkB,WAAU,yBAAyB;SACrC,EACnB,oBAACC,eAAiB,WAAU,wBAAwB;QACpC;OACb;KAEP,qBAAC;MAAK,WAAU;;OACd,oBAAC,sBACC,SAAS,UAAU,oBAAC;QAAO,GAAI;QAAO,WAAU;SAAmD,GACnG;OAEF,qBAACC;QAAa;QAAY,OAAO;QAAK,YAAY;QAAK,MAAK;mBAC1D,oBAACC,kBACC,QACE,oBAAC,cACC,SAAS,UACP,qBAAC;SAAO,GAAI;SAAO,WAAU;;UAC3B,oBAAC,iBAAc,WAAU,sCAAsC;UAC/D,oBAAC,iBAAc,WAAU,sCAAsC;UAC/D,oBAAC,kBAAe,WAAU,uCAAuC;;UAC1D,GAEX,GAEJ,EACF,oBAACC;SAAc,WAAU;mBACvB,qBAACC;UAAkB,WAAU;UAAe,aAAY;UAAW,gBAAe;qBAChF,oBAACC;WAAmB,WAAU;qBAC5B,oBAACC,cAAkB,WAAU,uBAAuB;YACjC,EACrB,oBAACC,eAAmB,WAAU,wDAAwD;WACpE;UACN;SACH;OAEf,oBAAC,kBACC,SAAS,UACP,qBAAC;QAAO,GAAI;QAAO,WAAU;mBAC3B,oBAAC,mBAAgB,WAAU,wCAAwC,EACnE,oBAAC,kBAAe,WAAU,uCAAuC;SAC1D,GAEX;OAEF,oBAAC,aACC,SAAS,UACP,oBAAC;QAAO,GAAI;QAAO,WAAU;kBAC3B,oBAAC,WAAQ,WAAU,eAAe;SAC3B,GAEX;OAEF,oBAAC,oBACC,SAAS,UACP,qBAAC;QAAO,GAAI;QAAO,WAAU;mBAC3B,oBAAC,uBAAoB,WAAU,4CAA4C,EAC3E,oBAAC,sBAAmB,WAAU,2CAA2C;SAClE,GAEX;;OACG;;KACO;GAWhB,oBAAC,SAAI,WAAU,kBAAkB;GAEhC;;GACS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimal-skin.tailwind.d.ts","names":[],"sources":["../../../../src/presets/video/minimal-skin.tailwind.tsx"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"minimal-skin.tailwind.d.ts","names":[],"sources":["../../../../src/presets/video/minimal-skin.tailwind.tsx"],"mappings":";;;;iBAsHgB,wBAAA,CAAyB,KAAA,EAAO,qBAAA,GAAwB,SAAA"}
|
|
@@ -33,7 +33,7 @@ import VolumeHighIcon from "../../icons/dist/react/minimal/volume-high.js";
|
|
|
33
33
|
import VolumeLowIcon from "../../icons/dist/react/minimal/volume-low.js";
|
|
34
34
|
import VolumeOffIcon from "../../icons/dist/react/minimal/volume-off.js";
|
|
35
35
|
import { CaptionsButton } from "../../ui/captions-button/captions-button.js";
|
|
36
|
-
import { ErrorDialog } from "
|
|
36
|
+
import { ErrorDialog } from "./error-dialog.js";
|
|
37
37
|
import { playbackRate } from "../../skins/dist/default/video/default.tailwind.js";
|
|
38
38
|
import { bufferingIndicator, button, buttonGroup, controls, error, icon, iconContainer, iconFlipped, iconState, overlay, popup, root, seek, slider, time } from "../../skins/dist/default/video/minimal.tailwind.js";
|
|
39
39
|
import { forwardRef } from "react";
|
|
@@ -78,6 +78,14 @@ const SliderThumb = forwardRef(function SliderThumb({ persistent, className, ...
|
|
|
78
78
|
...props
|
|
79
79
|
});
|
|
80
80
|
});
|
|
81
|
+
const errorClasses = {
|
|
82
|
+
root: error.root,
|
|
83
|
+
dialog: error.dialog,
|
|
84
|
+
content: error.content,
|
|
85
|
+
title: error.title,
|
|
86
|
+
actions: error.actions,
|
|
87
|
+
close: cn(button.base, button.default)
|
|
88
|
+
};
|
|
81
89
|
function MinimalVideoSkinTailwind(props) {
|
|
82
90
|
const { children, className, ...rest } = props;
|
|
83
91
|
return /* @__PURE__ */ jsxs(Container, {
|
|
@@ -89,34 +97,7 @@ function MinimalVideoSkinTailwind(props) {
|
|
|
89
97
|
className: bufferingIndicator,
|
|
90
98
|
children: /* @__PURE__ */ jsx(SpinnerIcon, { className: icon })
|
|
91
99
|
}) }),
|
|
92
|
-
/* @__PURE__ */ jsx(ErrorDialog, {
|
|
93
|
-
"aria-labelledby": "media-error-title",
|
|
94
|
-
"aria-describedby": "media-error-description",
|
|
95
|
-
render: (props, { onDismiss }) => /* @__PURE__ */ jsx("div", {
|
|
96
|
-
...props,
|
|
97
|
-
className: error.root,
|
|
98
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
99
|
-
className: error.dialog,
|
|
100
|
-
children: [/* @__PURE__ */ jsxs("div", {
|
|
101
|
-
className: error.content,
|
|
102
|
-
children: [/* @__PURE__ */ jsx("p", {
|
|
103
|
-
id: "media-error-title",
|
|
104
|
-
className: error.title,
|
|
105
|
-
children: "Something went wrong."
|
|
106
|
-
}), /* @__PURE__ */ jsx("p", {
|
|
107
|
-
id: "media-error-description",
|
|
108
|
-
children: "An error occurred while trying to play the video. Please try again."
|
|
109
|
-
})]
|
|
110
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
111
|
-
className: error.actions,
|
|
112
|
-
children: /* @__PURE__ */ jsx(Button, {
|
|
113
|
-
onClick: onDismiss,
|
|
114
|
-
children: "OK"
|
|
115
|
-
})
|
|
116
|
-
})]
|
|
117
|
-
})
|
|
118
|
-
})
|
|
119
|
-
}),
|
|
100
|
+
/* @__PURE__ */ jsx(ErrorDialog, { classes: errorClasses }),
|
|
120
101
|
/* @__PURE__ */ jsxs(ControlsRoot, {
|
|
121
102
|
"data-controls": "",
|
|
122
103
|
className: controls,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimal-skin.tailwind.js","names":["Controls.Root","Time.Group","Time.Value","Time.Separator","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb"],"sources":["../../../../src/presets/video/minimal-skin.tailwind.tsx"],"sourcesContent":["import {\n CaptionsOffIcon,\n CaptionsOnIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n PauseIcon,\n PipIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react/minimal';\nimport { playbackRate } from '@videojs/skins/video/default.tailwind';\nimport {\n bufferingIndicator,\n button,\n buttonGroup,\n controls,\n error,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n overlay,\n popup,\n root,\n seek,\n slider,\n time,\n} from '@videojs/skins/video/minimal.tailwind';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container } from '@/player/context';\nimport { BufferingIndicator } from '@/ui/buffering-indicator';\nimport { CaptionsButton } from '@/ui/captions-button';\nimport { Controls } from '@/ui/controls';\nimport { ErrorDialog } from '@/ui/error-dialog';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport type { MinimalVideoSkinProps } from './minimal-skin';\n\nconst SEEK_TIME = 10;\n\n/* --------------------------------------- Components ---------------------------------------- */\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'> & { variant?: 'icon' }>(function Button(\n { className, variant, ...props },\n ref\n) {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(button.base, variant === 'icon' ? button.icon : button.default, className)}\n {...props}\n />\n );\n});\n\nconst SliderRoot = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderRoot({ className, ...props }, ref) {\n return <div ref={ref} className={cn(slider.root, className)} {...props} />;\n});\n\nconst SliderTrack = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderTrack(\n { className, ...props },\n ref\n) {\n return <div ref={ref} className={cn(slider.track, className)} {...props} />;\n});\n\nconst SliderFill = forwardRef<HTMLDivElement, ComponentProps<'div'> & { type?: 'fill' | 'buffer' }>(function SliderFill(\n { type = 'fill', className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cn(slider.fill.base, type === 'fill' ? slider.fill.fill : slider.fill.buffer, className)}\n {...props}\n />\n );\n});\n\nconst SliderThumb = forwardRef<HTMLDivElement, ComponentProps<'div'> & { persistent?: boolean }>(function SliderThumb(\n { persistent, className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cn(slider.thumb.base, persistent ? undefined : slider.thumb.interactive, className)}\n {...props}\n />\n );\n});\n\n/* ------------------------------------------ Skin ------------------------------------------- */\n\nexport function MinimalVideoSkinTailwind(props: MinimalVideoSkinProps): ReactNode {\n const { children, className, ...rest } = props;\n\n return (\n <Container className={cn(root, className)} {...rest}>\n <BufferingIndicator\n render={(props) => (\n <div {...props} className={bufferingIndicator}>\n <SpinnerIcon className={icon} />\n </div>\n )}\n />\n\n <ErrorDialog\n aria-labelledby=\"media-error-title\"\n aria-describedby=\"media-error-description\"\n render={(props, { onDismiss }) => (\n <div {...props} className={error.root}>\n <div className={error.dialog}>\n <div className={error.content}>\n <p id=\"media-error-title\" className={error.title}>\n Something went wrong.\n </p>\n <p id=\"media-error-description\">An error occurred while trying to play the video. Please try again.</p>\n </div>\n <div className={error.actions}>\n <Button onClick={onDismiss}>OK</Button>\n </div>\n </div>\n </div>\n )}\n />\n\n <Controls.Root\n data-controls=\"\" // Used as a hook for Tailwind has-[] styles\n className={controls}\n >\n <span className={buttonGroup}>\n <PlayButton\n render={(props) => (\n <Button variant=\"icon\" {...props} className={iconState.play.button}>\n <RestartIcon className={cn(icon, iconState.play.restart)} />\n <PlayIcon className={cn(icon, iconState.play.play)} />\n <PauseIcon className={cn(icon, iconState.play.pause)} />\n </Button>\n )}\n />\n\n <SeekButton\n seconds={-SEEK_TIME}\n render={(props) => (\n <Button variant=\"icon\" {...props} className={seek.button}>\n <span className={iconContainer}>\n <SeekIcon className={cn(icon, iconFlipped)} />\n <span className={cn(seek.label, seek.labelBackward)}>{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n\n <SeekButton\n seconds={SEEK_TIME}\n render={(props) => (\n <Button variant=\"icon\" {...props} className={seek.button}>\n <span className={iconContainer}>\n <SeekIcon className={icon} />\n <span className={cn(seek.label, seek.labelForward)}>{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n </span>\n\n <span className={time.controls}>\n <Time.Group className={time.group}>\n <Time.Value type=\"current\" className={time.current} />\n <Time.Separator className={time.separator} />\n <Time.Value type=\"duration\" className={time.duration} />\n </Time.Group>\n\n <TimeSlider.Root render={(props) => <SliderRoot {...props} />}>\n <TimeSlider.Track render={(props) => <SliderTrack {...props} />}>\n <TimeSlider.Fill render={(props) => <SliderFill {...props} />} />\n <TimeSlider.Buffer render={(props) => <SliderFill type=\"buffer\" {...props} />} />\n </TimeSlider.Track>\n <TimeSlider.Thumb render={(props) => <SliderThumb {...props} />} />\n </TimeSlider.Root>\n </span>\n\n <span className={buttonGroup}>\n <PlaybackRateButton\n render={(props) => <Button variant=\"icon\" {...props} className={playbackRate.button} />}\n />\n\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"top\">\n <Popover.Trigger\n render={\n <MuteButton\n render={(props) => (\n <Button variant=\"icon\" {...props} className={iconState.mute.button}>\n <VolumeOffIcon className={cn(icon, iconState.mute.volumeOff)} />\n <VolumeLowIcon className={cn(icon, iconState.mute.volumeLow)} />\n <VolumeHighIcon className={cn(icon, iconState.mute.volumeHigh)} />\n </Button>\n )}\n />\n }\n />\n <Popover.Popup className={cn(popup.base, popup.volume)}>\n <VolumeSlider.Root\n orientation=\"vertical\"\n thumbAlignment=\"edge\"\n render={(props) => <SliderRoot {...props} />}\n >\n <VolumeSlider.Track render={(props) => <SliderTrack {...props} />}>\n <VolumeSlider.Fill render={(props) => <SliderFill {...props} />} />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb render={(props) => <SliderThumb persistent {...props} />} />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n\n <CaptionsButton\n render={(props) => (\n <Button variant=\"icon\" {...props} className={iconState.captions.button}>\n <CaptionsOffIcon className={cn(icon, iconState.captions.off)} />\n <CaptionsOnIcon className={cn(icon, iconState.captions.on)} />\n </Button>\n )}\n />\n\n <PiPButton\n render={(props) => (\n <Button variant=\"icon\" {...props}>\n <PipIcon className={icon} />\n </Button>\n )}\n />\n\n <FullscreenButton\n render={(props) => (\n <Button variant=\"icon\" {...props} className={iconState.fullscreen.button}>\n <FullscreenEnterIcon className={cn(icon, iconState.fullscreen.enter)} />\n <FullscreenExitIcon className={cn(icon, iconState.fullscreen.exit)} />\n </Button>\n )}\n />\n </span>\n </Controls.Root>\n\n {/* <div className={captions.root}>\n <div className={captions.container}>\n <span className={captions.cue}>\n An example cue\n </span>\n </div>\n </div> */}\n\n <div className={overlay} />\n\n {children}\n </Container>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"minimal-skin.tailwind.js","names":["Controls.Root","Time.Group","Time.Value","Time.Separator","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb"],"sources":["../../../../src/presets/video/minimal-skin.tailwind.tsx"],"sourcesContent":["import {\n CaptionsOffIcon,\n CaptionsOnIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n PauseIcon,\n PipIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react/minimal';\nimport { playbackRate } from '@videojs/skins/video/default.tailwind';\nimport {\n bufferingIndicator,\n button,\n buttonGroup,\n controls,\n error,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n overlay,\n popup,\n root,\n seek,\n slider,\n time,\n} from '@videojs/skins/video/minimal.tailwind';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container } from '@/player/context';\nimport { BufferingIndicator } from '@/ui/buffering-indicator';\nimport { CaptionsButton } from '@/ui/captions-button';\nimport { Controls } from '@/ui/controls';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport { ErrorDialog } from './error-dialog';\nimport type { MinimalVideoSkinProps } from './minimal-skin';\n\nconst SEEK_TIME = 10;\n\n/* --------------------------------------- Components ---------------------------------------- */\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'> & { variant?: 'icon' }>(function Button(\n { className, variant, ...props },\n ref\n) {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(button.base, variant === 'icon' ? button.icon : button.default, className)}\n {...props}\n />\n );\n});\n\nconst SliderRoot = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderRoot({ className, ...props }, ref) {\n return <div ref={ref} className={cn(slider.root, className)} {...props} />;\n});\n\nconst SliderTrack = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderTrack(\n { className, ...props },\n ref\n) {\n return <div ref={ref} className={cn(slider.track, className)} {...props} />;\n});\n\nconst SliderFill = forwardRef<HTMLDivElement, ComponentProps<'div'> & { type?: 'fill' | 'buffer' }>(function SliderFill(\n { type = 'fill', className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cn(slider.fill.base, type === 'fill' ? slider.fill.fill : slider.fill.buffer, className)}\n {...props}\n />\n );\n});\n\nconst SliderThumb = forwardRef<HTMLDivElement, ComponentProps<'div'> & { persistent?: boolean }>(function SliderThumb(\n { persistent, className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cn(slider.thumb.base, persistent ? undefined : slider.thumb.interactive, className)}\n {...props}\n />\n );\n});\n\nconst errorClasses = {\n root: error.root,\n dialog: error.dialog,\n content: error.content,\n title: error.title,\n actions: error.actions,\n close: cn(button.base, button.default),\n};\n\n/* ------------------------------------------ Skin ------------------------------------------- */\n\nexport function MinimalVideoSkinTailwind(props: MinimalVideoSkinProps): ReactNode {\n const { children, className, ...rest } = props;\n\n return (\n <Container className={cn(root, className)} {...rest}>\n <BufferingIndicator\n render={(props) => (\n <div {...props} className={bufferingIndicator}>\n <SpinnerIcon className={icon} />\n </div>\n )}\n />\n\n <ErrorDialog classes={errorClasses} />\n\n <Controls.Root\n data-controls=\"\" // Used as a hook for Tailwind has-[] styles\n className={controls}\n >\n <span className={buttonGroup}>\n <PlayButton\n render={(props) => (\n <Button variant=\"icon\" {...props} className={iconState.play.button}>\n <RestartIcon className={cn(icon, iconState.play.restart)} />\n <PlayIcon className={cn(icon, iconState.play.play)} />\n <PauseIcon className={cn(icon, iconState.play.pause)} />\n </Button>\n )}\n />\n\n <SeekButton\n seconds={-SEEK_TIME}\n render={(props) => (\n <Button variant=\"icon\" {...props} className={seek.button}>\n <span className={iconContainer}>\n <SeekIcon className={cn(icon, iconFlipped)} />\n <span className={cn(seek.label, seek.labelBackward)}>{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n\n <SeekButton\n seconds={SEEK_TIME}\n render={(props) => (\n <Button variant=\"icon\" {...props} className={seek.button}>\n <span className={iconContainer}>\n <SeekIcon className={icon} />\n <span className={cn(seek.label, seek.labelForward)}>{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n </span>\n\n <span className={time.controls}>\n <Time.Group className={time.group}>\n <Time.Value type=\"current\" className={time.current} />\n <Time.Separator className={time.separator} />\n <Time.Value type=\"duration\" className={time.duration} />\n </Time.Group>\n\n <TimeSlider.Root render={(props) => <SliderRoot {...props} />}>\n <TimeSlider.Track render={(props) => <SliderTrack {...props} />}>\n <TimeSlider.Fill render={(props) => <SliderFill {...props} />} />\n <TimeSlider.Buffer render={(props) => <SliderFill type=\"buffer\" {...props} />} />\n </TimeSlider.Track>\n <TimeSlider.Thumb render={(props) => <SliderThumb {...props} />} />\n </TimeSlider.Root>\n </span>\n\n <span className={buttonGroup}>\n <PlaybackRateButton\n render={(props) => <Button variant=\"icon\" {...props} className={playbackRate.button} />}\n />\n\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"top\">\n <Popover.Trigger\n render={\n <MuteButton\n render={(props) => (\n <Button variant=\"icon\" {...props} className={iconState.mute.button}>\n <VolumeOffIcon className={cn(icon, iconState.mute.volumeOff)} />\n <VolumeLowIcon className={cn(icon, iconState.mute.volumeLow)} />\n <VolumeHighIcon className={cn(icon, iconState.mute.volumeHigh)} />\n </Button>\n )}\n />\n }\n />\n <Popover.Popup className={cn(popup.base, popup.volume)}>\n <VolumeSlider.Root\n orientation=\"vertical\"\n thumbAlignment=\"edge\"\n render={(props) => <SliderRoot {...props} />}\n >\n <VolumeSlider.Track render={(props) => <SliderTrack {...props} />}>\n <VolumeSlider.Fill render={(props) => <SliderFill {...props} />} />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb render={(props) => <SliderThumb persistent {...props} />} />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n\n <CaptionsButton\n render={(props) => (\n <Button variant=\"icon\" {...props} className={iconState.captions.button}>\n <CaptionsOffIcon className={cn(icon, iconState.captions.off)} />\n <CaptionsOnIcon className={cn(icon, iconState.captions.on)} />\n </Button>\n )}\n />\n\n <PiPButton\n render={(props) => (\n <Button variant=\"icon\" {...props}>\n <PipIcon className={icon} />\n </Button>\n )}\n />\n\n <FullscreenButton\n render={(props) => (\n <Button variant=\"icon\" {...props} className={iconState.fullscreen.button}>\n <FullscreenEnterIcon className={cn(icon, iconState.fullscreen.enter)} />\n <FullscreenExitIcon className={cn(icon, iconState.fullscreen.exit)} />\n </Button>\n )}\n />\n </span>\n </Controls.Root>\n\n {/* <div className={captions.root}>\n <div className={captions.container}>\n <span className={captions.cue}>\n An example cue\n </span>\n </div>\n </div> */}\n\n <div className={overlay} />\n\n {children}\n </Container>\n );\n}\n"],"mappings":"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"}
|