@videojs/react 10.0.0-beta.8 → 10.0.0-beta.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/media/simple-hls-video/index.js.map +1 -1
- package/dist/default/presets/audio/minimal-skin.css +161 -141
- package/dist/default/presets/audio/minimal-skin.js +110 -100
- package/dist/default/presets/audio/minimal-skin.js.map +1 -1
- package/dist/default/presets/audio/minimal-skin.tailwind.js +120 -111
- package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/audio/skin.css +164 -132
- package/dist/default/presets/audio/skin.js +101 -91
- package/dist/default/presets/audio/skin.js.map +1 -1
- package/dist/default/presets/audio/skin.tailwind.js +111 -102
- package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
- package/dist/default/presets/{video/error-dialog.js → error-dialog.js} +18 -18
- package/dist/default/presets/error-dialog.js.map +1 -0
- package/dist/default/presets/video/minimal-skin.css +224 -192
- package/dist/default/presets/video/minimal-skin.js +58 -62
- package/dist/default/presets/video/minimal-skin.js.map +1 -1
- package/dist/default/presets/video/minimal-skin.tailwind.js +70 -78
- package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/video/skin.css +238 -189
- package/dist/default/presets/video/skin.js +58 -62
- package/dist/default/presets/video/skin.js.map +1 -1
- package/dist/default/presets/video/skin.tailwind.js +69 -77
- package/dist/default/presets/video/skin.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +5 -4
- package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/button.js +4 -3
- package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/error.js +2 -2
- package/dist/default/skins/dist/default/default/tailwind/components/error.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/popup.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/seek.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/seek.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +5 -3
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +9 -4
- package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +4 -3
- package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/error.js +2 -2
- package/dist/default/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +10 -4
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -1
- package/dist/dev/media/simple-hls-video/index.js.map +1 -1
- package/dist/dev/presets/audio/minimal-skin.css +161 -141
- package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/audio/minimal-skin.js +110 -100
- package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
- package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/audio/minimal-skin.tailwind.js +120 -111
- package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/audio/skin.css +164 -132
- package/dist/dev/presets/audio/skin.d.ts.map +1 -1
- package/dist/dev/presets/audio/skin.js +101 -91
- package/dist/dev/presets/audio/skin.js.map +1 -1
- package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/audio/skin.tailwind.js +111 -102
- package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
- package/dist/dev/presets/{video/error-dialog.js → error-dialog.js} +18 -18
- package/dist/dev/presets/error-dialog.js.map +1 -0
- package/dist/dev/presets/video/minimal-skin.css +224 -192
- package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/video/minimal-skin.js +58 -62
- 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 +70 -78
- package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/video/skin.css +238 -189
- package/dist/dev/presets/video/skin.d.ts.map +1 -1
- package/dist/dev/presets/video/skin.js +58 -62
- 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 +69 -77
- package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +5 -4
- package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/button.js +4 -3
- package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/error.js +2 -2
- package/dist/dev/skins/dist/default/default/tailwind/components/error.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/popup.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/seek.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/seek.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +5 -3
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +9 -4
- package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +4 -3
- package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js +2 -2
- package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +10 -4
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/package.json +7 -7
- package/dist/default/presets/video/error-dialog.js.map +0 -1
- package/dist/dev/presets/video/error-dialog.js.map +0 -1
|
@@ -27,6 +27,7 @@ import { TooltipProvider } from "../../ui/tooltip/tooltip-provider.js";
|
|
|
27
27
|
import { TooltipRoot } from "../../ui/tooltip/tooltip-root.js";
|
|
28
28
|
import { TooltipTrigger } from "../../ui/tooltip/tooltip-trigger.js";
|
|
29
29
|
import { VolumeSliderRoot } from "../../ui/volume-slider/volume-slider-root.js";
|
|
30
|
+
import { ErrorDialog } from "../error-dialog.js";
|
|
30
31
|
import CaptionsOffIcon from "../../icons/dist/react/default/captions-off.js";
|
|
31
32
|
import CaptionsOnIcon from "../../icons/dist/react/default/captions-on.js";
|
|
32
33
|
import FullscreenEnterIcon from "../../icons/dist/react/default/fullscreen-enter.js";
|
|
@@ -41,56 +42,55 @@ import SpinnerIcon from "../../icons/dist/react/default/spinner.js";
|
|
|
41
42
|
import VolumeHighIcon from "../../icons/dist/react/default/volume-high.js";
|
|
42
43
|
import VolumeLowIcon from "../../icons/dist/react/default/volume-low.js";
|
|
43
44
|
import VolumeOffIcon from "../../icons/dist/react/default/volume-off.js";
|
|
44
|
-
import { ErrorDialog } from "./error-dialog.js";
|
|
45
45
|
import { forwardRef } from "react";
|
|
46
46
|
import { isString } from "@videojs/utils/predicate";
|
|
47
|
-
import {
|
|
47
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
48
48
|
import { cn } from "@videojs/utils/style";
|
|
49
49
|
|
|
50
50
|
//#region src/presets/video/skin.tsx
|
|
51
51
|
const SEEK_TIME = 10;
|
|
52
|
-
const
|
|
53
|
-
return /* @__PURE__ */ jsx("button", {
|
|
54
|
-
ref,
|
|
55
|
-
type: "button",
|
|
56
|
-
className: cn("media-button", className),
|
|
57
|
-
...props
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
const errorClasses = {
|
|
52
|
+
const ERROR_CLASSNAMES = {
|
|
61
53
|
root: "media-error",
|
|
62
54
|
dialog: "media-error__dialog media-surface",
|
|
63
55
|
content: "media-error__content",
|
|
64
56
|
title: "media-error__title",
|
|
65
57
|
description: "media-error__description",
|
|
66
58
|
actions: "media-error__actions",
|
|
67
|
-
close: "media-button"
|
|
59
|
+
close: "media-button media-button--primary"
|
|
68
60
|
};
|
|
61
|
+
const Button = forwardRef(function Button({ className, ...props }, ref) {
|
|
62
|
+
return /* @__PURE__ */ jsx("button", {
|
|
63
|
+
ref,
|
|
64
|
+
type: "button",
|
|
65
|
+
className: cn("media-button media-button--subtle media-button--icon", className),
|
|
66
|
+
...props
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
69
|
function PlayLabel() {
|
|
70
70
|
const paused = usePlayer((s) => Boolean(s.paused));
|
|
71
|
-
if (usePlayer((s) => Boolean(s.ended))) return
|
|
72
|
-
return paused ?
|
|
71
|
+
if (usePlayer((s) => Boolean(s.ended))) return "Replay";
|
|
72
|
+
return paused ? "Play" : "Pause";
|
|
73
73
|
}
|
|
74
74
|
function CaptionsLabel() {
|
|
75
|
-
return usePlayer((s) => Boolean(s.subtitlesShowing)) ?
|
|
75
|
+
return usePlayer((s) => Boolean(s.subtitlesShowing)) ? "Disable captions" : "Enable captions";
|
|
76
76
|
}
|
|
77
77
|
function PiPLabel() {
|
|
78
|
-
return usePlayer((s) => Boolean(s.pip)) ?
|
|
78
|
+
return usePlayer((s) => Boolean(s.pip)) ? "Exit picture-in-picture" : "Enter picture-in-picture";
|
|
79
79
|
}
|
|
80
80
|
function FullscreenLabel() {
|
|
81
|
-
return usePlayer((s) => Boolean(s.fullscreen)) ?
|
|
81
|
+
return usePlayer((s) => Boolean(s.fullscreen)) ? "Exit fullscreen" : "Enter fullscreen";
|
|
82
82
|
}
|
|
83
83
|
function VolumePopover() {
|
|
84
84
|
const volumeUnsupported = usePlayer((s) => s.volumeAvailability === "unsupported");
|
|
85
|
-
const muteButton = /* @__PURE__ */
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
const muteButton = /* @__PURE__ */ jsxs(MuteButton, {
|
|
86
|
+
className: "media-button--mute",
|
|
87
|
+
render: /* @__PURE__ */ jsx(Button, {}),
|
|
88
88
|
children: [
|
|
89
89
|
/* @__PURE__ */ jsx(VolumeOffIcon, { className: "media-icon media-icon--volume-off" }),
|
|
90
90
|
/* @__PURE__ */ jsx(VolumeLowIcon, { className: "media-icon media-icon--volume-low" }),
|
|
91
91
|
/* @__PURE__ */ jsx(VolumeHighIcon, { className: "media-icon media-icon--volume-high" })
|
|
92
92
|
]
|
|
93
|
-
})
|
|
93
|
+
});
|
|
94
94
|
if (volumeUnsupported) return muteButton;
|
|
95
95
|
return /* @__PURE__ */ jsxs(PopoverRoot, {
|
|
96
96
|
openOnHover: true,
|
|
@@ -130,21 +130,21 @@ function VideoSkin(props) {
|
|
|
130
130
|
children: /* @__PURE__ */ jsx(SpinnerIcon, { className: "media-icon" })
|
|
131
131
|
})
|
|
132
132
|
}) }),
|
|
133
|
-
/* @__PURE__ */ jsx(ErrorDialog, {
|
|
133
|
+
/* @__PURE__ */ jsx(ErrorDialog, { classNames: ERROR_CLASSNAMES }),
|
|
134
134
|
/* @__PURE__ */ jsx(ControlsRoot, {
|
|
135
135
|
className: "media-surface media-controls",
|
|
136
136
|
children: /* @__PURE__ */ jsxs(TooltipProvider, { children: [
|
|
137
137
|
/* @__PURE__ */ jsxs(TooltipRoot, {
|
|
138
138
|
side: "top",
|
|
139
|
-
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(PlayButton, {
|
|
140
|
+
className: "media-button--play",
|
|
141
|
+
render: /* @__PURE__ */ jsx(Button, {}),
|
|
142
142
|
children: [
|
|
143
143
|
/* @__PURE__ */ jsx(RestartIcon, { className: "media-icon media-icon--restart" }),
|
|
144
144
|
/* @__PURE__ */ jsx(PlayIcon, { className: "media-icon media-icon--play" }),
|
|
145
145
|
/* @__PURE__ */ jsx(PauseIcon, { className: "media-icon media-icon--pause" })
|
|
146
146
|
]
|
|
147
|
-
}) })
|
|
147
|
+
}) }), /* @__PURE__ */ jsx(TooltipPopup, {
|
|
148
148
|
className: "media-surface media-tooltip",
|
|
149
149
|
children: /* @__PURE__ */ jsx(PlayLabel, {})
|
|
150
150
|
})]
|
|
@@ -153,16 +153,14 @@ function VideoSkin(props) {
|
|
|
153
153
|
side: "top",
|
|
154
154
|
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(SeekButton, {
|
|
155
155
|
seconds: -SEEK_TIME,
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
})]
|
|
165
|
-
})
|
|
156
|
+
className: "media-button--seek",
|
|
157
|
+
render: /* @__PURE__ */ jsx(Button, {}),
|
|
158
|
+
children: /* @__PURE__ */ jsxs("span", {
|
|
159
|
+
className: "media-icon__container",
|
|
160
|
+
children: [/* @__PURE__ */ jsx(SeekIcon, { className: "media-icon media-icon--seek media-icon--flipped" }), /* @__PURE__ */ jsx("span", {
|
|
161
|
+
className: "media-icon__label",
|
|
162
|
+
children: SEEK_TIME
|
|
163
|
+
})]
|
|
166
164
|
})
|
|
167
165
|
}) }), /* @__PURE__ */ jsxs(TooltipPopup, {
|
|
168
166
|
className: "media-surface media-tooltip",
|
|
@@ -177,16 +175,14 @@ function VideoSkin(props) {
|
|
|
177
175
|
side: "top",
|
|
178
176
|
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(SeekButton, {
|
|
179
177
|
seconds: SEEK_TIME,
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
})]
|
|
189
|
-
})
|
|
178
|
+
className: "media-button--seek",
|
|
179
|
+
render: /* @__PURE__ */ jsx(Button, {}),
|
|
180
|
+
children: /* @__PURE__ */ jsxs("span", {
|
|
181
|
+
className: "media-icon__container",
|
|
182
|
+
children: [/* @__PURE__ */ jsx(SeekIcon, { className: "media-icon media-icon--seek" }), /* @__PURE__ */ jsx("span", {
|
|
183
|
+
className: "media-icon__label",
|
|
184
|
+
children: SEEK_TIME
|
|
185
|
+
})]
|
|
190
186
|
})
|
|
191
187
|
}) }), /* @__PURE__ */ jsxs(TooltipPopup, {
|
|
192
188
|
className: "media-surface media-tooltip",
|
|
@@ -233,10 +229,10 @@ function VideoSkin(props) {
|
|
|
233
229
|
}),
|
|
234
230
|
/* @__PURE__ */ jsxs(TooltipRoot, {
|
|
235
231
|
side: "top",
|
|
236
|
-
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(PlaybackRateButton, {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
}) })
|
|
232
|
+
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(PlaybackRateButton, {
|
|
233
|
+
className: "media-button--playback-rate",
|
|
234
|
+
render: /* @__PURE__ */ jsx(Button, {})
|
|
235
|
+
}) }), /* @__PURE__ */ jsx(TooltipPopup, {
|
|
240
236
|
className: "media-surface media-tooltip",
|
|
241
237
|
children: "Toggle playback rate"
|
|
242
238
|
})]
|
|
@@ -244,33 +240,33 @@ function VideoSkin(props) {
|
|
|
244
240
|
/* @__PURE__ */ jsx(VolumePopover, {}),
|
|
245
241
|
/* @__PURE__ */ jsxs(TooltipRoot, {
|
|
246
242
|
side: "top",
|
|
247
|
-
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */
|
|
248
|
-
|
|
249
|
-
|
|
243
|
+
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(CaptionsButton, {
|
|
244
|
+
className: "media-button--captions",
|
|
245
|
+
render: /* @__PURE__ */ jsx(Button, {}),
|
|
250
246
|
children: [/* @__PURE__ */ jsx(CaptionsOffIcon, { className: "media-icon media-icon--captions-off" }), /* @__PURE__ */ jsx(CaptionsOnIcon, { className: "media-icon media-icon--captions-on" })]
|
|
251
|
-
}) })
|
|
247
|
+
}) }), /* @__PURE__ */ jsx(TooltipPopup, {
|
|
252
248
|
className: "media-surface media-tooltip",
|
|
253
249
|
children: /* @__PURE__ */ jsx(CaptionsLabel, {})
|
|
254
250
|
})]
|
|
255
251
|
}),
|
|
256
252
|
/* @__PURE__ */ jsxs(TooltipRoot, {
|
|
257
253
|
side: "top",
|
|
258
|
-
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */
|
|
259
|
-
|
|
260
|
-
|
|
254
|
+
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(PiPButton, {
|
|
255
|
+
className: "media-button--pip",
|
|
256
|
+
render: /* @__PURE__ */ jsx(Button, {}),
|
|
261
257
|
children: [/* @__PURE__ */ jsx(PipEnterIcon, { className: "media-icon media-icon--pip-enter" }), /* @__PURE__ */ jsx(PipExitIcon, { className: "media-icon media-icon--pip-exit" })]
|
|
262
|
-
}) })
|
|
258
|
+
}) }), /* @__PURE__ */ jsx(TooltipPopup, {
|
|
263
259
|
className: "media-surface media-tooltip",
|
|
264
260
|
children: /* @__PURE__ */ jsx(PiPLabel, {})
|
|
265
261
|
})]
|
|
266
262
|
}),
|
|
267
263
|
/* @__PURE__ */ jsxs(TooltipRoot, {
|
|
268
264
|
side: "top",
|
|
269
|
-
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */
|
|
270
|
-
|
|
271
|
-
|
|
265
|
+
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(FullscreenButton, {
|
|
266
|
+
className: "media-button--fullscreen",
|
|
267
|
+
render: /* @__PURE__ */ jsx(Button, {}),
|
|
272
268
|
children: [/* @__PURE__ */ jsx(FullscreenEnterIcon, { className: "media-icon media-icon--fullscreen-enter" }), /* @__PURE__ */ jsx(FullscreenExitIcon, { className: "media-icon media-icon--fullscreen-exit" })]
|
|
273
|
-
}) })
|
|
269
|
+
}) }), /* @__PURE__ */ jsx(TooltipPopup, {
|
|
274
270
|
className: "media-surface media-tooltip",
|
|
275
271
|
children: /* @__PURE__ */ jsx(FullscreenLabel, {})
|
|
276
272
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin.js","names":["Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb","Controls.Root","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","Time.Group","Time.Value","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Slider.Thumbnail","TimeSlider.Value"],"sources":["../../../../src/presets/video/skin.tsx"],"sourcesContent":["import {\n CaptionsOffIcon,\n CaptionsOnIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n PauseIcon,\n PipEnterIcon,\n PipExitIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react';\nimport { isString } from '@videojs/utils/predicate';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container, usePlayer } 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 { Poster } from '@/ui/poster';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Slider } from '@/ui/slider';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport { isRenderProp } from '@/utils/use-render';\nimport type { BaseVideoSkinProps } from '../types';\nimport { ErrorDialog } from './error-dialog';\n\nconst SEEK_TIME = 10;\n\nexport type VideoSkinProps = BaseVideoSkinProps;\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 media-surface',\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\nfunction PlayLabel(): ReactNode {\n const paused = usePlayer((s) => Boolean(s.paused));\n const ended = usePlayer((s) => Boolean(s.ended));\n if (ended) return <>Replay</>;\n return paused ? <>Play</> : <>Pause</>;\n}\n\nfunction CaptionsLabel(): ReactNode {\n const active = usePlayer((s) => Boolean(s.subtitlesShowing));\n return active ? <>Disable captions</> : <>Enable captions</>;\n}\n\nfunction PiPLabel(): ReactNode {\n const pip = usePlayer((s) => Boolean(s.pip));\n return pip ? <>Exit picture-in-picture</> : <>Enter picture-in-picture</>;\n}\n\nfunction FullscreenLabel(): ReactNode {\n const fullscreen = usePlayer((s) => Boolean(s.fullscreen));\n return fullscreen ? <>Exit fullscreen</> : <>Enter fullscreen</>;\n}\n\nfunction VolumePopover(): ReactNode {\n const volumeUnsupported = usePlayer((s) => s.volumeAvailability === 'unsupported');\n\n const muteButton = (\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 if (volumeUnsupported) return muteButton;\n\n return (\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"top\">\n <Popover.Trigger render={muteButton} />\n <Popover.Popup className=\"media-surface media-popover media-popover--volume\">\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}\n\nexport function VideoSkin(props: VideoSkinProps): ReactNode {\n const { children, className, poster, ...rest } = props;\n\n return (\n <Container className={cn('media-default-skin media-default-skin--video', className)} {...rest}>\n {children}\n\n {poster && (\n <Poster src={isString(poster) ? poster : undefined} render={isRenderProp(poster) ? poster : undefined} />\n )}\n\n <BufferingIndicator\n render={(props) => (\n <div {...props} className=\"media-buffering-indicator\">\n <div className=\"media-surface\">\n <SpinnerIcon className=\"media-icon\" />\n </div>\n </div>\n )}\n />\n\n <ErrorDialog classes={errorClasses} />\n\n <Controls.Root className=\"media-surface media-controls\">\n <Tooltip.Provider>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\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 />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <PlayLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\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 />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Seek backward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\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 }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Time.Group className=\"media-time\">\n <Time.Value type=\"current\" className=\"media-time__value\" />\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\n <div className=\"media-surface media-preview media-slider__preview\">\n <Slider.Thumbnail className=\"media-preview__thumbnail\" />\n <TimeSlider.Value type=\"pointer\" className=\"media-preview__timestamp\" />\n <SpinnerIcon className=\"media-preview__spinner media-icon\" />\n </div>\n </TimeSlider.Root>\n <Time.Value type=\"duration\" className=\"media-time__value\" />\n </Time.Group>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlaybackRateButton\n render={(props) => <Button {...props} className=\"media-button--icon media-button--playback-rate\" />}\n />\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Toggle playback rate</Tooltip.Popup>\n </Tooltip.Root>\n\n <VolumePopover />\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\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 />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <CaptionsLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PiPButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--pip\">\n <PipEnterIcon className=\"media-icon media-icon--pip-enter\" />\n <PipExitIcon className=\"media-icon media-icon--pip-exit\" />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <PiPLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\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 }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <FullscreenLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className=\"media-overlay\" />\n </Container>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,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,SAAS,YAAuB;CAC9B,MAAM,SAAS,WAAW,MAAM,QAAQ,EAAE,OAAO,CAAC;AAElD,KADc,WAAW,MAAM,QAAQ,EAAE,MAAM,CAAC,CACrC,QAAO,0CAAE,WAAS;AAC7B,QAAO,SAAS,0CAAE,SAAO,GAAG,0CAAE,UAAQ;;AAGxC,SAAS,gBAA2B;AAElC,QADe,WAAW,MAAM,QAAQ,EAAE,iBAAiB,CAAC,GAC5C,0CAAE,qBAAmB,GAAG,0CAAE,oBAAkB;;AAG9D,SAAS,WAAsB;AAE7B,QADY,WAAW,MAAM,QAAQ,EAAE,IAAI,CAAC,GAC/B,0CAAE,4BAA0B,GAAG,0CAAE,6BAA2B;;AAG3E,SAAS,kBAA6B;AAEpC,QADmB,WAAW,MAAM,QAAQ,EAAE,WAAW,CAAC,GACtC,0CAAE,oBAAkB,GAAG,0CAAE,qBAAmB;;AAGlE,SAAS,gBAA2B;CAClC,MAAM,oBAAoB,WAAW,MAAM,EAAE,uBAAuB,cAAc;CAElF,MAAM,aACJ,oBAAC,cACC,SAAS,UACP,qBAAC;EAAO,GAAI;EAAO,WAAU;;GAC3B,oBAAC,iBAAc,WAAU,sCAAsC;GAC/D,oBAAC,iBAAc,WAAU,sCAAsC;GAC/D,oBAAC,kBAAe,WAAU,uCAAuC;;GAC1D,GAEX;AAGJ,KAAI,kBAAmB,QAAO;AAE9B,QACE,qBAACA;EAAa;EAAY,OAAO;EAAK,YAAY;EAAK,MAAK;aAC1D,oBAACC,kBAAgB,QAAQ,aAAc,EACvC,oBAACC;GAAc,WAAU;aACvB,qBAACC;IAAkB,WAAU;IAAe,aAAY;IAAW,gBAAe;eAChF,oBAACC;KAAmB,WAAU;eAC5B,oBAACC,cAAkB,WAAU,uBAAuB;MACjC,EACrB,oBAACC,eAAmB,WAAU,wDAAwD;KACpE;IACN;GACH;;AAInB,SAAgB,UAAU,OAAkC;CAC1D,MAAM,EAAE,UAAU,WAAW,QAAQ,GAAG,SAAS;AAEjD,QACE,qBAAC;EAAU,WAAW,GAAG,gDAAgD,UAAU;EAAE,GAAI;;GACtF;GAEA,UACC,oBAAC;IAAO,KAAK,SAAS,OAAO,GAAG,SAAS;IAAW,QAAQ,aAAa,OAAO,GAAG,SAAS;KAAa;GAG3G,oBAAC,sBACC,SAAS,UACP,oBAAC;IAAI,GAAI;IAAO,WAAU;cACxB,oBAAC;KAAI,WAAU;eACb,oBAAC,eAAY,WAAU,eAAe;MAClC;KACF,GAER;GAEF,oBAAC,eAAY,SAAS,eAAgB;GAEtC,oBAACC;IAAc,WAAU;cACvB,qBAACC;KACC,qBAACC;MAAa,MAAK;iBACjB,oBAACC,kBACC,QACE,oBAAC,cACC,SAAS,UACP,qBAAC;OAAO,GAAI;OAAO,WAAU;;QAC3B,oBAAC,eAAY,WAAU,mCAAmC;QAC1D,oBAAC,YAAS,WAAU,gCAAgC;QACpD,oBAAC,aAAU,WAAU,iCAAiC;;QAC/C,GAEX,GAEJ,EACF,oBAACC;OAAc,WAAU;iBACvB,oBAAC,cAAY;QACC;OACH;KAEf,qBAACF;MAAa,MAAK;iBACjB,oBAACC,kBACC,QACE,oBAAC;OACC,SAAS,CAAC;OACV,SAAS,UACP,oBAAC;QAAO,GAAI;QAAO,WAAU;kBAC3B,qBAAC;SAAK,WAAU;oBACd,oBAAC,YAAS,WAAU,oDAAoD,EACxE,oBAAC;UAAK,WAAU;oBAAqB;WAAiB;UACjD;SACA;QAEX,GAEJ,EACF,qBAACC;OAAc,WAAU;;QAA8B;QAAe;QAAU;;QAAwB;OAC3F;KAEf,qBAACF;MAAa,MAAK;iBACjB,oBAACC,kBACC,QACE,oBAAC;OACC,SAAS;OACT,SAAS,UACP,oBAAC;QAAO,GAAI;QAAO,WAAU;kBAC3B,qBAAC;SAAK,WAAU;oBACd,oBAAC,YAAS,WAAU,gCAAgC,EACpD,oBAAC;UAAK,WAAU;oBAAqB;WAAiB;UACjD;SACA;QAEX,GAEJ,EACF,qBAACC;OAAc,WAAU;;QAA8B;QAAc;QAAU;;QAAwB;OAC1F;KAEf,qBAACC;MAAW,WAAU;;OACpB,oBAACC;QAAW,MAAK;QAAU,WAAU;SAAsB;OAC3D,qBAACC;QAAgB,WAAU;;SACzB,qBAACC;UAAiB,WAAU;qBAC1B,oBAACC,cAAgB,WAAU,uBAAuB,EAClD,oBAACC,gBAAkB,WAAU,yBAAyB;WACrC;SACnB,oBAACC,eAAiB,WAAU,wBAAwB;SAEpD,qBAAC;UAAI,WAAU;;WACb,oBAACC,mBAAiB,WAAU,6BAA6B;WACzD,oBAACC;YAAiB,MAAK;YAAU,WAAU;aAA6B;WACxE,oBAAC,eAAY,WAAU,sCAAsC;;WACzD;;SACU;OAClB,oBAACP;QAAW,MAAK;QAAW,WAAU;SAAsB;;OACjD;KAEb,qBAACJ;MAAa,MAAK;iBACjB,oBAACC,kBACC,QACE,oBAAC,sBACC,SAAS,UAAU,oBAAC;OAAO,GAAI;OAAO,WAAU;QAAmD,GACnG,GAEJ,EACF,oBAACC;OAAc,WAAU;iBAA8B;QAAoC;OAC9E;KAEf,oBAAC,kBAAgB;KAEjB,qBAACF;MAAa,MAAK;iBACjB,oBAACC,kBACC,QACE,oBAAC,kBACC,SAAS,UACP,qBAAC;OAAO,GAAI;OAAO,WAAU;kBAC3B,oBAAC,mBAAgB,WAAU,wCAAwC,EACnE,oBAAC,kBAAe,WAAU,uCAAuC;QAC1D,GAEX,GAEJ,EACF,oBAACC;OAAc,WAAU;iBACvB,oBAAC,kBAAgB;QACH;OACH;KAEf,qBAACF;MAAa,MAAK;iBACjB,oBAACC,kBACC,QACE,oBAAC,aACC,SAAS,UACP,qBAAC;OAAO,GAAI;OAAO,WAAU;kBAC3B,oBAAC,gBAAa,WAAU,qCAAqC,EAC7D,oBAAC,eAAY,WAAU,oCAAoC;QACpD,GAEX,GAEJ,EACF,oBAACC;OAAc,WAAU;iBACvB,oBAAC,aAAW;QACE;OACH;KAEf,qBAACF;MAAa,MAAK;iBACjB,oBAACC,kBACC,QACE,oBAAC,oBACC,SAAS,UACP,qBAAC;OAAO,GAAI;OAAO,WAAU;kBAC3B,oBAAC,uBAAoB,WAAU,4CAA4C,EAC3E,oBAAC,sBAAmB,WAAU,2CAA2C;QAClE,GAEX,GAEJ,EACF,oBAACC;OAAc,WAAU;iBACvB,oBAAC,oBAAkB;QACL;OACH;QACE;KACL;GAEhB,oBAAC,SAAI,WAAU,kBAAkB;;GACvB"}
|
|
1
|
+
{"version":3,"file":"skin.js","names":["Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb","Controls.Root","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","Time.Group","Time.Value","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Slider.Thumbnail","TimeSlider.Value"],"sources":["../../../../src/presets/video/skin.tsx"],"sourcesContent":["import {\n CaptionsOffIcon,\n CaptionsOnIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n PauseIcon,\n PipEnterIcon,\n PipExitIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react';\nimport { isString } from '@videojs/utils/predicate';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container, usePlayer } 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 { Poster } from '@/ui/poster';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Slider } from '@/ui/slider';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport { isRenderProp } from '@/utils/use-render';\nimport { ErrorDialog } from '../error-dialog';\nimport type { BaseVideoSkinProps } from '../types';\n\nconst SEEK_TIME = 10;\n\nconst ERROR_CLASSNAMES = {\n root: 'media-error',\n dialog: 'media-error__dialog media-surface',\n content: 'media-error__content',\n title: 'media-error__title',\n description: 'media-error__description',\n actions: 'media-error__actions',\n close: 'media-button media-button--primary',\n};\n\nexport type VideoSkinProps = BaseVideoSkinProps;\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn('media-button media-button--subtle media-button--icon', className)}\n {...props}\n />\n );\n});\n\nfunction PlayLabel(): string {\n const paused = usePlayer((s) => Boolean(s.paused));\n const ended = usePlayer((s) => Boolean(s.ended));\n if (ended) return 'Replay';\n return paused ? 'Play' : 'Pause';\n}\n\nfunction CaptionsLabel(): string {\n const active = usePlayer((s) => Boolean(s.subtitlesShowing));\n return active ? 'Disable captions' : 'Enable captions';\n}\n\nfunction PiPLabel(): string {\n const pip = usePlayer((s) => Boolean(s.pip));\n return pip ? 'Exit picture-in-picture' : 'Enter picture-in-picture';\n}\n\nfunction FullscreenLabel(): string {\n const fullscreen = usePlayer((s) => Boolean(s.fullscreen));\n return fullscreen ? 'Exit fullscreen' : 'Enter fullscreen';\n}\n\nfunction VolumePopover(): ReactNode {\n const volumeUnsupported = usePlayer((s) => s.volumeAvailability === 'unsupported');\n\n const muteButton = (\n <MuteButton className=\"media-button--mute\" render={<Button />}>\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 </MuteButton>\n );\n\n if (volumeUnsupported) return muteButton;\n\n return (\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"top\">\n <Popover.Trigger render={muteButton} />\n <Popover.Popup className=\"media-surface media-popover media-popover--volume\">\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}\n\nexport function VideoSkin(props: VideoSkinProps): ReactNode {\n const { children, className, poster, ...rest } = props;\n\n return (\n <Container className={cn('media-default-skin media-default-skin--video', className)} {...rest}>\n {children}\n\n {poster && (\n <Poster src={isString(poster) ? poster : undefined} render={isRenderProp(poster) ? poster : undefined} />\n )}\n\n <BufferingIndicator\n render={(props) => (\n <div {...props} className=\"media-buffering-indicator\">\n <div className=\"media-surface\">\n <SpinnerIcon className=\"media-icon\" />\n </div>\n </div>\n )}\n />\n\n <ErrorDialog classNames={ERROR_CLASSNAMES} />\n\n <Controls.Root className=\"media-surface media-controls\">\n <Tooltip.Provider>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlayButton className=\"media-button--play\" render={<Button />}>\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 </PlayButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <PlayLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton seconds={-SEEK_TIME} className=\"media-button--seek\" render={<Button />}>\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 </SeekButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Seek backward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton seconds={SEEK_TIME} className=\"media-button--seek\" render={<Button />}>\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 </SeekButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Time.Group className=\"media-time\">\n <Time.Value type=\"current\" className=\"media-time__value\" />\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\n <div className=\"media-surface media-preview media-slider__preview\">\n <Slider.Thumbnail className=\"media-preview__thumbnail\" />\n <TimeSlider.Value type=\"pointer\" className=\"media-preview__timestamp\" />\n <SpinnerIcon className=\"media-preview__spinner media-icon\" />\n </div>\n </TimeSlider.Root>\n <Time.Value type=\"duration\" className=\"media-time__value\" />\n </Time.Group>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={<PlaybackRateButton className=\"media-button--playback-rate\" render={<Button />} />}\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Toggle playback rate</Tooltip.Popup>\n </Tooltip.Root>\n\n <VolumePopover />\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <CaptionsButton className=\"media-button--captions\" render={<Button />}>\n <CaptionsOffIcon className=\"media-icon media-icon--captions-off\" />\n <CaptionsOnIcon className=\"media-icon media-icon--captions-on\" />\n </CaptionsButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <CaptionsLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PiPButton className=\"media-button--pip\" render={<Button />}>\n <PipEnterIcon className=\"media-icon media-icon--pip-enter\" />\n <PipExitIcon className=\"media-icon media-icon--pip-exit\" />\n </PiPButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <PiPLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <FullscreenButton className=\"media-button--fullscreen\" render={<Button />}>\n <FullscreenEnterIcon className=\"media-icon media-icon--fullscreen-enter\" />\n <FullscreenExitIcon className=\"media-icon media-icon--fullscreen-exit\" />\n </FullscreenButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <FullscreenLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className=\"media-overlay\" />\n </Container>\n );\n}\n"],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import { PopoverRoot } from "../../ui/popover/popover-root.js";
|
|
|
13
13
|
import { PopoverTrigger } from "../../ui/popover/popover-trigger.js";
|
|
14
14
|
import { Poster } from "../../ui/poster/poster.js";
|
|
15
15
|
import { SeekButton } from "../../ui/seek-button/seek-button.js";
|
|
16
|
-
import { SliderBuffer } from "../../ui/slider/slider-buffer.js";
|
|
16
|
+
import { SliderBuffer as SliderBuffer$1 } from "../../ui/slider/slider-buffer.js";
|
|
17
17
|
import { SliderFill as SliderFill$1 } from "../../ui/slider/slider-fill.js";
|
|
18
18
|
import { SliderThumb as SliderThumb$1 } from "../../ui/slider/slider-thumb.js";
|
|
19
19
|
import { SliderThumbnail } from "../../ui/slider/slider-thumbnail.js";
|
|
@@ -27,6 +27,7 @@ import { TooltipProvider } from "../../ui/tooltip/tooltip-provider.js";
|
|
|
27
27
|
import { TooltipRoot } from "../../ui/tooltip/tooltip-root.js";
|
|
28
28
|
import { TooltipTrigger } from "../../ui/tooltip/tooltip-trigger.js";
|
|
29
29
|
import { VolumeSliderRoot } from "../../ui/volume-slider/volume-slider-root.js";
|
|
30
|
+
import { ErrorDialog } from "../error-dialog.js";
|
|
30
31
|
import { iconState } from "../../skins/dist/default/shared/tailwind/icon-state.js";
|
|
31
32
|
import { button } from "../../skins/dist/default/default/tailwind/components/button.js";
|
|
32
33
|
import { icon, iconContainer, iconFlipped } from "../../skins/dist/default/default/tailwind/components/icon.js";
|
|
@@ -47,22 +48,30 @@ import SpinnerIcon from "../../icons/dist/react/default/spinner.js";
|
|
|
47
48
|
import VolumeHighIcon from "../../icons/dist/react/default/volume-high.js";
|
|
48
49
|
import VolumeLowIcon from "../../icons/dist/react/default/volume-low.js";
|
|
49
50
|
import VolumeOffIcon from "../../icons/dist/react/default/volume-off.js";
|
|
50
|
-
import { ErrorDialog } from "./error-dialog.js";
|
|
51
51
|
import { overlay } from "../../skins/dist/default/default/tailwind/components/overlay.js";
|
|
52
52
|
import { poster } from "../../skins/dist/default/default/tailwind/components/poster.js";
|
|
53
53
|
import { bufferingIndicator, controls, error, popup, preview, root, slider } from "../../skins/dist/default/default/tailwind/video.tailwind.js";
|
|
54
54
|
import { forwardRef } from "react";
|
|
55
55
|
import { isString } from "@videojs/utils/predicate";
|
|
56
|
-
import {
|
|
56
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
57
57
|
import { cn } from "@videojs/utils/style";
|
|
58
58
|
|
|
59
59
|
//#region src/presets/video/skin.tailwind.tsx
|
|
60
60
|
const SEEK_TIME = 10;
|
|
61
|
-
const
|
|
61
|
+
const ERROR_CLASSNAMES = {
|
|
62
|
+
root: error.root,
|
|
63
|
+
dialog: error.dialog,
|
|
64
|
+
content: error.content,
|
|
65
|
+
title: error.title,
|
|
66
|
+
description: error.description,
|
|
67
|
+
actions: error.actions,
|
|
68
|
+
close: cn(button.base, button.primary)
|
|
69
|
+
};
|
|
70
|
+
const Button = forwardRef(function Button({ className, ...props }, ref) {
|
|
62
71
|
return /* @__PURE__ */ jsx("button", {
|
|
63
72
|
ref,
|
|
64
73
|
type: "button",
|
|
65
|
-
className: cn(button.base,
|
|
74
|
+
className: cn(button.base, button.subtle, button.icon, className),
|
|
66
75
|
...props
|
|
67
76
|
});
|
|
68
77
|
});
|
|
@@ -87,6 +96,13 @@ const SliderFill = forwardRef(function SliderFill({ type = "fill", className, ..
|
|
|
87
96
|
...props
|
|
88
97
|
});
|
|
89
98
|
});
|
|
99
|
+
const SliderBuffer = forwardRef(function SliderBuffer(props, ref) {
|
|
100
|
+
return /* @__PURE__ */ jsx(SliderFill, {
|
|
101
|
+
type: "buffer",
|
|
102
|
+
ref,
|
|
103
|
+
...props
|
|
104
|
+
});
|
|
105
|
+
});
|
|
90
106
|
const SliderThumb = forwardRef(function SliderThumb({ persistent, className, ...props }, ref) {
|
|
91
107
|
return /* @__PURE__ */ jsx("div", {
|
|
92
108
|
ref,
|
|
@@ -94,41 +110,31 @@ const SliderThumb = forwardRef(function SliderThumb({ persistent, className, ...
|
|
|
94
110
|
...props
|
|
95
111
|
});
|
|
96
112
|
});
|
|
97
|
-
const errorClasses = {
|
|
98
|
-
root: error.root,
|
|
99
|
-
dialog: error.dialog,
|
|
100
|
-
content: error.content,
|
|
101
|
-
title: error.title,
|
|
102
|
-
description: error.description,
|
|
103
|
-
actions: error.actions,
|
|
104
|
-
close: cn(button.base, button.default)
|
|
105
|
-
};
|
|
106
113
|
function PlayLabel() {
|
|
107
114
|
const paused = usePlayer((s) => Boolean(s.paused));
|
|
108
|
-
if (usePlayer((s) => Boolean(s.ended))) return
|
|
109
|
-
return paused ?
|
|
115
|
+
if (usePlayer((s) => Boolean(s.ended))) return "Replay";
|
|
116
|
+
return paused ? "Play" : "Pause";
|
|
110
117
|
}
|
|
111
118
|
function CaptionsLabel() {
|
|
112
|
-
return usePlayer((s) => Boolean(s.subtitlesShowing)) ?
|
|
119
|
+
return usePlayer((s) => Boolean(s.subtitlesShowing)) ? "Disable captions" : "Enable captions";
|
|
113
120
|
}
|
|
114
121
|
function PiPLabel() {
|
|
115
|
-
return usePlayer((s) => Boolean(s.pip)) ?
|
|
122
|
+
return usePlayer((s) => Boolean(s.pip)) ? "Exit picture-in-picture" : "Enter picture-in-picture";
|
|
116
123
|
}
|
|
117
124
|
function FullscreenLabel() {
|
|
118
|
-
return usePlayer((s) => Boolean(s.fullscreen)) ?
|
|
125
|
+
return usePlayer((s) => Boolean(s.fullscreen)) ? "Exit fullscreen" : "Enter fullscreen";
|
|
119
126
|
}
|
|
120
127
|
function VolumePopover() {
|
|
121
128
|
const volumeUnsupported = usePlayer((s) => s.volumeAvailability === "unsupported");
|
|
122
|
-
const muteButton = /* @__PURE__ */
|
|
123
|
-
variant: "icon",
|
|
124
|
-
...props,
|
|
129
|
+
const muteButton = /* @__PURE__ */ jsxs(MuteButton, {
|
|
125
130
|
className: iconState.mute.button,
|
|
131
|
+
render: /* @__PURE__ */ jsx(Button, {}),
|
|
126
132
|
children: [
|
|
127
133
|
/* @__PURE__ */ jsx(VolumeOffIcon, { className: cn(icon, iconState.mute.volumeOff) }),
|
|
128
134
|
/* @__PURE__ */ jsx(VolumeLowIcon, { className: cn(icon, iconState.mute.volumeLow) }),
|
|
129
135
|
/* @__PURE__ */ jsx(VolumeHighIcon, { className: cn(icon, iconState.mute.volumeHigh) })
|
|
130
136
|
]
|
|
131
|
-
})
|
|
137
|
+
});
|
|
132
138
|
if (volumeUnsupported) return muteButton;
|
|
133
139
|
return /* @__PURE__ */ jsxs(PopoverRoot, {
|
|
134
140
|
openOnHover: true,
|
|
@@ -140,10 +146,10 @@ function VolumePopover() {
|
|
|
140
146
|
children: /* @__PURE__ */ jsxs(VolumeSliderRoot, {
|
|
141
147
|
orientation: "vertical",
|
|
142
148
|
thumbAlignment: "edge",
|
|
143
|
-
render:
|
|
149
|
+
render: /* @__PURE__ */ jsx(SliderRoot, {}),
|
|
144
150
|
children: [/* @__PURE__ */ jsx(SliderTrack$1, {
|
|
145
|
-
render:
|
|
146
|
-
children: /* @__PURE__ */ jsx(SliderFill$1, { render:
|
|
151
|
+
render: /* @__PURE__ */ jsx(SliderTrack, {}),
|
|
152
|
+
children: /* @__PURE__ */ jsx(SliderFill$1, { render: /* @__PURE__ */ jsx(SliderFill, {}) })
|
|
147
153
|
}), /* @__PURE__ */ jsx(SliderThumb$1, { render: (props) => /* @__PURE__ */ jsx(SliderThumb, {
|
|
148
154
|
persistent: true,
|
|
149
155
|
...props
|
|
@@ -172,23 +178,22 @@ function VideoSkinTailwind(props) {
|
|
|
172
178
|
children: /* @__PURE__ */ jsx(SpinnerIcon, { className: icon })
|
|
173
179
|
})
|
|
174
180
|
}) }),
|
|
175
|
-
/* @__PURE__ */ jsx(ErrorDialog, {
|
|
181
|
+
/* @__PURE__ */ jsx(ErrorDialog, { classNames: ERROR_CLASSNAMES }),
|
|
176
182
|
/* @__PURE__ */ jsx(ControlsRoot, {
|
|
177
183
|
"data-controls": "",
|
|
178
184
|
className: controls,
|
|
179
185
|
children: /* @__PURE__ */ jsxs(TooltipProvider, { children: [
|
|
180
186
|
/* @__PURE__ */ jsxs(TooltipRoot, {
|
|
181
187
|
side: "top",
|
|
182
|
-
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */
|
|
183
|
-
variant: "icon",
|
|
184
|
-
...props,
|
|
188
|
+
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(PlayButton, {
|
|
185
189
|
className: iconState.play.button,
|
|
190
|
+
render: /* @__PURE__ */ jsx(Button, {}),
|
|
186
191
|
children: [
|
|
187
192
|
/* @__PURE__ */ jsx(RestartIcon, { className: cn(icon, iconState.play.restart) }),
|
|
188
193
|
/* @__PURE__ */ jsx(PlayIcon, { className: cn(icon, iconState.play.play) }),
|
|
189
194
|
/* @__PURE__ */ jsx(PauseIcon, { className: cn(icon, iconState.play.pause) })
|
|
190
195
|
]
|
|
191
|
-
}) })
|
|
196
|
+
}) }), /* @__PURE__ */ jsx(TooltipPopup, {
|
|
192
197
|
className: cn(popup.tooltip),
|
|
193
198
|
children: /* @__PURE__ */ jsx(PlayLabel, {})
|
|
194
199
|
})]
|
|
@@ -197,17 +202,14 @@ function VideoSkinTailwind(props) {
|
|
|
197
202
|
side: "top",
|
|
198
203
|
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(SeekButton, {
|
|
199
204
|
seconds: -SEEK_TIME,
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
className:
|
|
204
|
-
children: /* @__PURE__ */
|
|
205
|
-
className:
|
|
206
|
-
children:
|
|
207
|
-
|
|
208
|
-
children: SEEK_TIME
|
|
209
|
-
})]
|
|
210
|
-
})
|
|
205
|
+
className: seek.button,
|
|
206
|
+
render: /* @__PURE__ */ jsx(Button, {}),
|
|
207
|
+
children: /* @__PURE__ */ jsxs("span", {
|
|
208
|
+
className: iconContainer,
|
|
209
|
+
children: [/* @__PURE__ */ jsx(SeekIcon, { className: cn(icon, iconFlipped) }), /* @__PURE__ */ jsx("span", {
|
|
210
|
+
className: cn(seek.label, seek.labelBackward),
|
|
211
|
+
children: SEEK_TIME
|
|
212
|
+
})]
|
|
211
213
|
})
|
|
212
214
|
}) }), /* @__PURE__ */ jsxs(TooltipPopup, {
|
|
213
215
|
className: cn(popup.tooltip),
|
|
@@ -222,17 +224,14 @@ function VideoSkinTailwind(props) {
|
|
|
222
224
|
side: "top",
|
|
223
225
|
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(SeekButton, {
|
|
224
226
|
seconds: SEEK_TIME,
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
className:
|
|
229
|
-
children: /* @__PURE__ */
|
|
230
|
-
className:
|
|
231
|
-
children:
|
|
232
|
-
|
|
233
|
-
children: SEEK_TIME
|
|
234
|
-
})]
|
|
235
|
-
})
|
|
227
|
+
className: seek.button,
|
|
228
|
+
render: /* @__PURE__ */ jsx(Button, {}),
|
|
229
|
+
children: /* @__PURE__ */ jsxs("span", {
|
|
230
|
+
className: iconContainer,
|
|
231
|
+
children: [/* @__PURE__ */ jsx(SeekIcon, { className: icon }), /* @__PURE__ */ jsx("span", {
|
|
232
|
+
className: cn(seek.label, seek.labelForward),
|
|
233
|
+
children: SEEK_TIME
|
|
234
|
+
})]
|
|
236
235
|
})
|
|
237
236
|
}) }), /* @__PURE__ */ jsxs(TooltipPopup, {
|
|
238
237
|
className: cn(popup.tooltip),
|
|
@@ -251,16 +250,13 @@ function VideoSkinTailwind(props) {
|
|
|
251
250
|
className: time.current
|
|
252
251
|
}),
|
|
253
252
|
/* @__PURE__ */ jsxs(TimeSliderRoot, {
|
|
254
|
-
render:
|
|
253
|
+
render: /* @__PURE__ */ jsx(SliderRoot, {}),
|
|
255
254
|
children: [
|
|
256
255
|
/* @__PURE__ */ jsxs(SliderTrack$1, {
|
|
257
|
-
render:
|
|
258
|
-
children: [/* @__PURE__ */ jsx(SliderFill$1, { render:
|
|
259
|
-
type: "buffer",
|
|
260
|
-
...props
|
|
261
|
-
}) })]
|
|
256
|
+
render: /* @__PURE__ */ jsx(SliderTrack, {}),
|
|
257
|
+
children: [/* @__PURE__ */ jsx(SliderFill$1, { render: /* @__PURE__ */ jsx(SliderFill, {}) }), /* @__PURE__ */ jsx(SliderBuffer$1, { render: /* @__PURE__ */ jsx(SliderBuffer, {}) })]
|
|
262
258
|
}),
|
|
263
|
-
/* @__PURE__ */ jsx(SliderThumb$1, { render:
|
|
259
|
+
/* @__PURE__ */ jsx(SliderThumb$1, { render: /* @__PURE__ */ jsx(SliderThumb, {}) }),
|
|
264
260
|
/* @__PURE__ */ jsxs("div", {
|
|
265
261
|
className: preview.root,
|
|
266
262
|
children: [
|
|
@@ -282,11 +278,10 @@ function VideoSkinTailwind(props) {
|
|
|
282
278
|
}),
|
|
283
279
|
/* @__PURE__ */ jsxs(TooltipRoot, {
|
|
284
280
|
side: "top",
|
|
285
|
-
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(PlaybackRateButton, {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
}) }) }), /* @__PURE__ */ jsx(TooltipPopup, {
|
|
281
|
+
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(PlaybackRateButton, {
|
|
282
|
+
className: playbackRate.button,
|
|
283
|
+
render: /* @__PURE__ */ jsx(Button, {})
|
|
284
|
+
}) }), /* @__PURE__ */ jsx(TooltipPopup, {
|
|
290
285
|
className: cn(popup.tooltip),
|
|
291
286
|
children: "Toggle playback rate"
|
|
292
287
|
})]
|
|
@@ -294,36 +289,33 @@ function VideoSkinTailwind(props) {
|
|
|
294
289
|
/* @__PURE__ */ jsx(VolumePopover, {}),
|
|
295
290
|
/* @__PURE__ */ jsxs(TooltipRoot, {
|
|
296
291
|
side: "top",
|
|
297
|
-
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */
|
|
298
|
-
variant: "icon",
|
|
299
|
-
...props,
|
|
292
|
+
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(CaptionsButton, {
|
|
300
293
|
className: iconState.captions.button,
|
|
294
|
+
render: /* @__PURE__ */ jsx(Button, {}),
|
|
301
295
|
children: [/* @__PURE__ */ jsx(CaptionsOffIcon, { className: cn(icon, iconState.captions.off) }), /* @__PURE__ */ jsx(CaptionsOnIcon, { className: cn(icon, iconState.captions.on) })]
|
|
302
|
-
}) })
|
|
296
|
+
}) }), /* @__PURE__ */ jsx(TooltipPopup, {
|
|
303
297
|
className: cn(popup.tooltip),
|
|
304
298
|
children: /* @__PURE__ */ jsx(CaptionsLabel, {})
|
|
305
299
|
})]
|
|
306
300
|
}),
|
|
307
301
|
/* @__PURE__ */ jsxs(TooltipRoot, {
|
|
308
302
|
side: "top",
|
|
309
|
-
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */
|
|
310
|
-
variant: "icon",
|
|
311
|
-
...props,
|
|
303
|
+
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(PiPButton, {
|
|
312
304
|
className: iconState.pip.button,
|
|
305
|
+
render: /* @__PURE__ */ jsx(Button, {}),
|
|
313
306
|
children: [/* @__PURE__ */ jsx(PipEnterIcon, { className: cn(icon, iconState.pip.off) }), /* @__PURE__ */ jsx(PipExitIcon, { className: cn(icon, iconState.pip.on) })]
|
|
314
|
-
}) })
|
|
307
|
+
}) }), /* @__PURE__ */ jsx(TooltipPopup, {
|
|
315
308
|
className: cn(popup.tooltip),
|
|
316
309
|
children: /* @__PURE__ */ jsx(PiPLabel, {})
|
|
317
310
|
})]
|
|
318
311
|
}),
|
|
319
312
|
/* @__PURE__ */ jsxs(TooltipRoot, {
|
|
320
313
|
side: "top",
|
|
321
|
-
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */
|
|
322
|
-
variant: "icon",
|
|
323
|
-
...props,
|
|
314
|
+
children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(FullscreenButton, {
|
|
324
315
|
className: iconState.fullscreen.button,
|
|
316
|
+
render: /* @__PURE__ */ jsx(Button, {}),
|
|
325
317
|
children: [/* @__PURE__ */ jsx(FullscreenEnterIcon, { className: cn(icon, iconState.fullscreen.enter) }), /* @__PURE__ */ jsx(FullscreenExitIcon, { className: cn(icon, iconState.fullscreen.exit) })]
|
|
326
|
-
}) })
|
|
318
|
+
}) }), /* @__PURE__ */ jsx(TooltipPopup, {
|
|
327
319
|
className: cn(popup.tooltip),
|
|
328
320
|
children: /* @__PURE__ */ jsx(FullscreenLabel, {})
|
|
329
321
|
})]
|