@videojs/react 10.0.0-alpha.4 → 10.0.0-alpha.5
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/_virtual/_rolldown/runtime.js +1 -19
- package/dist/default/index.js +10 -33
- package/dist/default/player/context.js +11 -1
- package/dist/default/player/context.js.map +1 -1
- package/dist/default/presets/audio/index.js +2 -8
- package/dist/default/presets/audio/skin.css +1 -0
- package/dist/default/presets/background/index.js +2 -8
- package/dist/default/presets/background/skin.css +1 -0
- package/dist/default/presets/video/index.js +2 -8
- package/dist/default/presets/video/minimal-skin.css +178 -53
- package/dist/default/presets/video/minimal-skin.js +63 -90
- package/dist/default/presets/video/minimal-skin.js.map +1 -1
- package/dist/default/presets/video/minimal-skin.tailwind.js +126 -107
- package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/video/skin.css +179 -54
- package/dist/default/presets/video/skin.js +61 -88
- package/dist/default/presets/video/skin.js.map +1 -1
- package/dist/default/presets/video/skin.tailwind.js +121 -104
- package/dist/default/presets/video/skin.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/video/default.tailwind.js +90 -0
- package/dist/default/skins/dist/default/video/default.tailwind.js.map +1 -0
- package/dist/default/skins/dist/default/video/minimal.tailwind.js +86 -0
- package/dist/default/skins/dist/default/video/minimal.tailwind.js.map +1 -0
- package/dist/default/ui/captions-button/captions-button.js +1 -16
- package/dist/default/ui/captions-button/captions-button.js.map +1 -1
- package/dist/default/ui/controls/context.js +16 -0
- package/dist/default/ui/controls/context.js.map +1 -0
- package/dist/default/ui/controls/controls-group.js +4 -1
- package/dist/default/ui/controls/controls-group.js.map +1 -1
- package/dist/default/ui/controls/controls-root.js +19 -10
- package/dist/default/ui/controls/controls-root.js.map +1 -1
- package/dist/default/ui/create-context-part.js +29 -0
- package/dist/default/ui/create-context-part.js.map +1 -0
- package/dist/default/ui/create-media-button.js +52 -0
- package/dist/default/ui/create-media-button.js.map +1 -0
- package/dist/default/ui/fullscreen-button/fullscreen-button.js +8 -33
- package/dist/default/ui/fullscreen-button/fullscreen-button.js.map +1 -1
- package/dist/default/ui/hooks/use-slider.js +75 -0
- package/dist/default/ui/hooks/use-slider.js.map +1 -0
- package/dist/default/ui/mute-button/mute-button.js +8 -36
- package/dist/default/ui/mute-button/mute-button.js.map +1 -1
- package/dist/default/ui/pip-button/pip-button.js +8 -33
- package/dist/default/ui/pip-button/pip-button.js.map +1 -1
- package/dist/default/ui/play-button/play-button.js +7 -33
- package/dist/default/ui/play-button/play-button.js.map +1 -1
- package/dist/default/ui/playback-rate-button/index.js +3 -0
- package/dist/default/ui/playback-rate-button/playback-rate-button.js +34 -0
- package/dist/default/ui/playback-rate-button/playback-rate-button.js.map +1 -0
- package/dist/default/ui/popover/context.js +16 -0
- package/dist/default/ui/popover/context.js.map +1 -0
- package/dist/default/ui/popover/index.js +4 -0
- package/dist/default/ui/popover/index.parts.js +17 -0
- package/dist/default/ui/popover/index.parts.js.map +1 -0
- package/dist/default/ui/popover/popover-arrow.js +17 -0
- package/dist/default/ui/popover/popover-arrow.js.map +1 -0
- package/dist/default/ui/popover/popover-popup.js +94 -0
- package/dist/default/ui/popover/popover-popup.js.map +1 -0
- package/dist/default/ui/popover/popover-root.js +69 -0
- package/dist/default/ui/popover/popover-root.js.map +1 -0
- package/dist/default/ui/popover/popover-trigger.js +43 -0
- package/dist/default/ui/popover/popover-trigger.js.map +1 -0
- package/dist/default/ui/poster/poster.js +2 -1
- package/dist/default/ui/poster/poster.js.map +1 -1
- package/dist/default/ui/seek-button/seek-button.js +7 -34
- package/dist/default/ui/seek-button/seek-button.js.map +1 -1
- package/dist/default/ui/slider/context.js +22 -0
- package/dist/default/ui/slider/context.js.map +1 -0
- package/dist/default/ui/slider/index.js +3 -0
- package/dist/default/ui/slider/index.parts.js +21 -0
- package/dist/default/ui/slider/index.parts.js.map +1 -0
- package/dist/default/ui/slider/slider-buffer.js +16 -0
- package/dist/default/ui/slider/slider-buffer.js.map +1 -0
- package/dist/default/ui/slider/slider-fill.js +16 -0
- package/dist/default/ui/slider/slider-fill.js.map +1 -0
- package/dist/default/ui/slider/slider-root.js +71 -0
- package/dist/default/ui/slider/slider-root.js.map +1 -0
- package/dist/default/ui/slider/slider-thumb.js +32 -0
- package/dist/default/ui/slider/slider-thumb.js.map +1 -0
- package/dist/default/ui/slider/slider-track.js +16 -0
- package/dist/default/ui/slider/slider-track.js.map +1 -0
- package/dist/default/ui/slider/slider-value.js +32 -0
- package/dist/default/ui/slider/slider-value.js.map +1 -0
- package/dist/default/ui/thumbnail/thumbnail.js +87 -0
- package/dist/default/ui/thumbnail/thumbnail.js.map +1 -0
- package/dist/default/ui/time/time-value.js +2 -1
- package/dist/default/ui/time/time-value.js.map +1 -1
- package/dist/default/ui/time-slider/index.js +3 -0
- package/dist/default/ui/time-slider/index.parts.js +21 -0
- package/dist/default/ui/time-slider/index.parts.js.map +1 -0
- package/dist/default/ui/time-slider/time-slider-root.js +96 -0
- package/dist/default/ui/time-slider/time-slider-root.js.map +1 -0
- package/dist/default/ui/volume-slider/index.js +3 -0
- package/dist/default/ui/volume-slider/index.parts.js +19 -0
- package/dist/default/ui/volume-slider/index.parts.js.map +1 -0
- package/dist/default/ui/volume-slider/volume-slider-root.js +86 -0
- package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -0
- package/dist/default/utils/use-force-render.js +13 -0
- package/dist/default/utils/use-force-render.js.map +1 -0
- package/dist/default/utils/use-latest-ref.js +20 -0
- package/dist/default/utils/use-latest-ref.js.map +1 -0
- package/dist/default/utils/use-safe-id.js +22 -0
- package/dist/default/utils/use-safe-id.js.map +1 -0
- package/dist/dev/_virtual/_rolldown/runtime.js +1 -19
- package/dist/dev/index.d.ts +20 -2
- package/dist/dev/index.js +10 -33
- package/dist/dev/player/context.d.ts.map +1 -1
- package/dist/dev/player/context.js +11 -1
- package/dist/dev/player/context.js.map +1 -1
- package/dist/dev/presets/audio/index.d.ts +2 -9
- package/dist/dev/presets/audio/index.js +2 -8
- package/dist/dev/presets/audio/skin.css +1 -0
- package/dist/dev/presets/background/index.d.ts +2 -9
- package/dist/dev/presets/background/index.js +2 -8
- package/dist/dev/presets/background/skin.css +1 -0
- package/dist/dev/presets/video/index.d.ts +2 -9
- package/dist/dev/presets/video/index.js +2 -8
- package/dist/dev/presets/video/minimal-skin.css +178 -53
- package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/video/minimal-skin.js +61 -88
- 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 +124 -105
- package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/video/skin.css +179 -54
- package/dist/dev/presets/video/skin.d.ts.map +1 -1
- package/dist/dev/presets/video/skin.js +61 -88
- 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 +121 -104
- package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/video/default.tailwind.js +90 -0
- package/dist/dev/skins/dist/default/video/default.tailwind.js.map +1 -0
- package/dist/dev/skins/dist/default/video/minimal.tailwind.js +86 -0
- package/dist/dev/skins/dist/default/video/minimal.tailwind.js.map +1 -0
- package/dist/dev/ui/captions-button/captions-button.d.ts.map +1 -1
- package/dist/dev/ui/captions-button/captions-button.js +1 -16
- package/dist/dev/ui/captions-button/captions-button.js.map +1 -1
- package/dist/dev/ui/controls/context.js +16 -0
- package/dist/dev/ui/controls/context.js.map +1 -0
- package/dist/dev/ui/controls/controls-group.d.ts +2 -2
- package/dist/dev/ui/controls/controls-group.d.ts.map +1 -1
- package/dist/dev/ui/controls/controls-group.js +4 -1
- package/dist/dev/ui/controls/controls-group.js.map +1 -1
- package/dist/dev/ui/controls/controls-root.d.ts.map +1 -1
- package/dist/dev/ui/controls/controls-root.js +19 -10
- package/dist/dev/ui/controls/controls-root.js.map +1 -1
- package/dist/dev/ui/create-context-part.js +29 -0
- package/dist/dev/ui/create-context-part.js.map +1 -0
- package/dist/dev/ui/create-media-button.js +55 -0
- package/dist/dev/ui/create-media-button.js.map +1 -0
- package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts +2 -1
- package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts.map +1 -1
- package/dist/dev/ui/fullscreen-button/fullscreen-button.js +9 -37
- package/dist/dev/ui/fullscreen-button/fullscreen-button.js.map +1 -1
- package/dist/dev/ui/hooks/use-slider.d.ts +36 -0
- package/dist/dev/ui/hooks/use-slider.d.ts.map +1 -0
- package/dist/dev/ui/hooks/use-slider.js +75 -0
- package/dist/dev/ui/hooks/use-slider.js.map +1 -0
- package/dist/dev/ui/mute-button/mute-button.d.ts +2 -4
- package/dist/dev/ui/mute-button/mute-button.d.ts.map +1 -1
- package/dist/dev/ui/mute-button/mute-button.js +9 -40
- package/dist/dev/ui/mute-button/mute-button.js.map +1 -1
- package/dist/dev/ui/pip-button/pip-button.d.ts +2 -1
- package/dist/dev/ui/pip-button/pip-button.d.ts.map +1 -1
- package/dist/dev/ui/pip-button/pip-button.js +9 -37
- package/dist/dev/ui/pip-button/pip-button.js.map +1 -1
- package/dist/dev/ui/play-button/play-button.d.ts +1 -1
- package/dist/dev/ui/play-button/play-button.d.ts.map +1 -1
- package/dist/dev/ui/play-button/play-button.js +8 -37
- package/dist/dev/ui/play-button/play-button.js.map +1 -1
- package/dist/dev/ui/playback-rate-button/index.d.ts +2 -0
- package/dist/dev/ui/playback-rate-button/index.js +3 -0
- package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts +30 -0
- package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts.map +1 -0
- package/dist/dev/ui/playback-rate-button/playback-rate-button.js +34 -0
- package/dist/dev/ui/playback-rate-button/playback-rate-button.js.map +1 -0
- package/dist/dev/ui/popover/context.d.ts +17 -0
- package/dist/dev/ui/popover/context.d.ts.map +1 -0
- package/dist/dev/ui/popover/context.js +16 -0
- package/dist/dev/ui/popover/context.js.map +1 -0
- package/dist/dev/ui/popover/index.d.ts +3 -0
- package/dist/dev/ui/popover/index.js +4 -0
- package/dist/dev/ui/popover/index.parts.d.ts +12 -0
- package/dist/dev/ui/popover/index.parts.d.ts.map +1 -0
- package/dist/dev/ui/popover/index.parts.js +17 -0
- package/dist/dev/ui/popover/index.parts.js.map +1 -0
- package/dist/dev/ui/popover/popover-arrow.d.ts +15 -0
- package/dist/dev/ui/popover/popover-arrow.d.ts.map +1 -0
- package/dist/dev/ui/popover/popover-arrow.js +17 -0
- package/dist/dev/ui/popover/popover-arrow.js.map +1 -0
- package/dist/dev/ui/popover/popover-popup.d.ts +15 -0
- package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -0
- package/dist/dev/ui/popover/popover-popup.js +94 -0
- package/dist/dev/ui/popover/popover-popup.js.map +1 -0
- package/dist/dev/ui/popover/popover-root.d.ts +29 -0
- package/dist/dev/ui/popover/popover-root.d.ts.map +1 -0
- package/dist/dev/ui/popover/popover-root.js +69 -0
- package/dist/dev/ui/popover/popover-root.js.map +1 -0
- package/dist/dev/ui/popover/popover-trigger.d.ts +15 -0
- package/dist/dev/ui/popover/popover-trigger.d.ts.map +1 -0
- package/dist/dev/ui/popover/popover-trigger.js +43 -0
- package/dist/dev/ui/popover/popover-trigger.js.map +1 -0
- package/dist/dev/ui/poster/poster.d.ts.map +1 -1
- package/dist/dev/ui/poster/poster.js +2 -1
- package/dist/dev/ui/poster/poster.js.map +1 -1
- package/dist/dev/ui/seek-button/seek-button.d.ts +1 -1
- package/dist/dev/ui/seek-button/seek-button.d.ts.map +1 -1
- package/dist/dev/ui/seek-button/seek-button.js +8 -38
- package/dist/dev/ui/seek-button/seek-button.js.map +1 -1
- package/dist/dev/ui/slider/context.js +22 -0
- package/dist/dev/ui/slider/context.js.map +1 -0
- package/dist/dev/ui/slider/index.d.ts +2 -0
- package/dist/dev/ui/slider/index.js +3 -0
- package/dist/dev/ui/slider/index.parts.d.ts +14 -0
- package/dist/dev/ui/slider/index.parts.d.ts.map +1 -0
- package/dist/dev/ui/slider/index.parts.js +21 -0
- package/dist/dev/ui/slider/index.parts.js.map +1 -0
- package/dist/dev/ui/slider/slider-buffer.d.ts +14 -0
- package/dist/dev/ui/slider/slider-buffer.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-buffer.js +16 -0
- package/dist/dev/ui/slider/slider-buffer.js.map +1 -0
- package/dist/dev/ui/slider/slider-fill.d.ts +14 -0
- package/dist/dev/ui/slider/slider-fill.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-fill.js +16 -0
- package/dist/dev/ui/slider/slider-fill.js.map +1 -0
- package/dist/dev/ui/slider/slider-root.d.ts +19 -0
- package/dist/dev/ui/slider/slider-root.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-root.js +71 -0
- package/dist/dev/ui/slider/slider-root.js.map +1 -0
- package/dist/dev/ui/slider/slider-thumb.d.ts +14 -0
- package/dist/dev/ui/slider/slider-thumb.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-thumb.js +32 -0
- package/dist/dev/ui/slider/slider-thumb.js.map +1 -0
- package/dist/dev/ui/slider/slider-track.d.ts +14 -0
- package/dist/dev/ui/slider/slider-track.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-track.js +16 -0
- package/dist/dev/ui/slider/slider-track.js.map +1 -0
- package/dist/dev/ui/slider/slider-value.d.ts +19 -0
- package/dist/dev/ui/slider/slider-value.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-value.js +32 -0
- package/dist/dev/ui/slider/slider-value.js.map +1 -0
- package/dist/dev/ui/thumbnail/thumbnail.d.ts +17 -0
- package/dist/dev/ui/thumbnail/thumbnail.d.ts.map +1 -0
- package/dist/dev/ui/thumbnail/thumbnail.js +87 -0
- package/dist/dev/ui/thumbnail/thumbnail.js.map +1 -0
- package/dist/dev/ui/time/time-value.d.ts.map +1 -1
- package/dist/dev/ui/time/time-value.js +2 -1
- package/dist/dev/ui/time/time-value.js.map +1 -1
- package/dist/dev/ui/time-slider/index.d.ts +2 -0
- package/dist/dev/ui/time-slider/index.js +3 -0
- package/dist/dev/ui/time-slider/index.parts.d.ts +15 -0
- package/dist/dev/ui/time-slider/index.parts.d.ts.map +1 -0
- package/dist/dev/ui/time-slider/index.parts.js +21 -0
- package/dist/dev/ui/time-slider/index.parts.js.map +1 -0
- package/dist/dev/ui/time-slider/time-slider-root.d.ts +17 -0
- package/dist/dev/ui/time-slider/time-slider-root.d.ts.map +1 -0
- package/dist/dev/ui/time-slider/time-slider-root.js +99 -0
- package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -0
- package/dist/dev/ui/volume-slider/index.d.ts +2 -0
- package/dist/dev/ui/volume-slider/index.js +3 -0
- package/dist/dev/ui/volume-slider/index.parts.d.ts +14 -0
- package/dist/dev/ui/volume-slider/index.parts.d.ts.map +1 -0
- package/dist/dev/ui/volume-slider/index.parts.js +19 -0
- package/dist/dev/ui/volume-slider/index.parts.js.map +1 -0
- package/dist/dev/ui/volume-slider/volume-slider-root.d.ts +17 -0
- package/dist/dev/ui/volume-slider/volume-slider-root.d.ts.map +1 -0
- package/dist/dev/ui/volume-slider/volume-slider-root.js +89 -0
- package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -0
- package/dist/dev/utils/use-force-render.js +13 -0
- package/dist/dev/utils/use-force-render.js.map +1 -0
- package/dist/dev/utils/use-latest-ref.js +20 -0
- package/dist/dev/utils/use-latest-ref.js.map +1 -0
- package/dist/dev/utils/use-safe-id.js +22 -0
- package/dist/dev/utils/use-safe-id.js.map +1 -0
- package/package.json +6 -5
- package/dist/default/index.js.map +0 -1
- package/dist/default/presets/audio/index.js.map +0 -1
- package/dist/default/presets/background/index.js.map +0 -1
- package/dist/default/presets/video/index.js.map +0 -1
- package/dist/dev/index.js.map +0 -1
- package/dist/dev/presets/audio/index.d.ts.map +0 -1
- package/dist/dev/presets/audio/index.js.map +0 -1
- package/dist/dev/presets/background/index.d.ts.map +0 -1
- package/dist/dev/presets/background/index.js.map +0 -1
- package/dist/dev/presets/video/index.d.ts.map +0 -1
- package/dist/dev/presets/video/index.js.map +0 -1
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
//#region \0rolldown/runtime.js
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
3
|
var __exportAll = (all, no_symbols) => {
|
|
7
4
|
let target = {};
|
|
8
5
|
for (var name in all) {
|
|
@@ -16,21 +13,6 @@ var __exportAll = (all, no_symbols) => {
|
|
|
16
13
|
}
|
|
17
14
|
return target;
|
|
18
15
|
};
|
|
19
|
-
var __copyProps = (to, from, except, desc) => {
|
|
20
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
21
|
-
for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
22
|
-
key = keys[i];
|
|
23
|
-
if (!__hasOwnProp.call(to, key) && key !== except) {
|
|
24
|
-
__defProp(to, key, {
|
|
25
|
-
get: ((k) => from[k]).bind(null, key),
|
|
26
|
-
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return to;
|
|
32
|
-
};
|
|
33
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
34
16
|
|
|
35
17
|
//#endregion
|
|
36
|
-
export { __exportAll
|
|
18
|
+
export { __exportAll };
|
package/dist/default/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { __exportAll, __reExport } from "./_virtual/_rolldown/runtime.js";
|
|
4
3
|
import { Container, useMedia, useMediaRegistration, usePlayer, usePlayerContext } from "./player/context.js";
|
|
5
4
|
import { createPlayer } from "./player/create-player.js";
|
|
6
5
|
import { mergeProps } from "./utils/merge-props.js";
|
|
@@ -9,45 +8,23 @@ import { BufferingIndicator } from "./ui/buffering-indicator/buffering-indicator
|
|
|
9
8
|
import { index_parts_exports } from "./ui/controls/index.parts.js";
|
|
10
9
|
import { useButton } from "./ui/hooks/use-button.js";
|
|
11
10
|
import { FullscreenButton } from "./ui/fullscreen-button/fullscreen-button.js";
|
|
11
|
+
import { useSlider } from "./ui/hooks/use-slider.js";
|
|
12
12
|
import { MuteButton } from "./ui/mute-button/mute-button.js";
|
|
13
13
|
import { PiPButton } from "./ui/pip-button/pip-button.js";
|
|
14
14
|
import { PlayButton } from "./ui/play-button/play-button.js";
|
|
15
|
+
import { PlaybackRateButton } from "./ui/playback-rate-button/playback-rate-button.js";
|
|
16
|
+
import { usePopoverContext } from "./ui/popover/context.js";
|
|
17
|
+
import { index_parts_exports as index_parts_exports$1 } from "./ui/popover/index.parts.js";
|
|
15
18
|
import { Poster } from "./ui/poster/poster.js";
|
|
16
19
|
import { SeekButton } from "./ui/seek-button/seek-button.js";
|
|
17
|
-
import { index_parts_exports as index_parts_exports$
|
|
20
|
+
import { index_parts_exports as index_parts_exports$2 } from "./ui/slider/index.parts.js";
|
|
21
|
+
import { Thumbnail } from "./ui/thumbnail/thumbnail.js";
|
|
22
|
+
import { index_parts_exports as index_parts_exports$3 } from "./ui/time/index.parts.js";
|
|
23
|
+
import { index_parts_exports as index_parts_exports$4 } from "./ui/time-slider/index.parts.js";
|
|
24
|
+
import { index_parts_exports as index_parts_exports$5 } from "./ui/volume-slider/index.parts.js";
|
|
18
25
|
import { createSelector, shallowEqual } from "@videojs/store";
|
|
19
26
|
import { useSelector, useStore } from "@videojs/store/react";
|
|
20
27
|
|
|
21
28
|
export * from "@videojs/core/dom"
|
|
22
29
|
|
|
23
|
-
|
|
24
|
-
var src_exports = /* @__PURE__ */ __exportAll({
|
|
25
|
-
BufferingIndicator: () => BufferingIndicator,
|
|
26
|
-
Container: () => Container,
|
|
27
|
-
Controls: () => index_parts_exports,
|
|
28
|
-
FullscreenButton: () => FullscreenButton,
|
|
29
|
-
MuteButton: () => MuteButton,
|
|
30
|
-
PiPButton: () => PiPButton,
|
|
31
|
-
PlayButton: () => PlayButton,
|
|
32
|
-
Poster: () => Poster,
|
|
33
|
-
SeekButton: () => SeekButton,
|
|
34
|
-
Time: () => index_parts_exports$1,
|
|
35
|
-
createPlayer: () => createPlayer,
|
|
36
|
-
createSelector: () => createSelector,
|
|
37
|
-
mergeProps: () => mergeProps,
|
|
38
|
-
renderElement: () => renderElement,
|
|
39
|
-
shallowEqual: () => shallowEqual,
|
|
40
|
-
useButton: () => useButton,
|
|
41
|
-
useMedia: () => useMedia,
|
|
42
|
-
useMediaRegistration: () => useMediaRegistration,
|
|
43
|
-
usePlayer: () => usePlayer,
|
|
44
|
-
usePlayerContext: () => usePlayerContext,
|
|
45
|
-
useSelector: () => useSelector,
|
|
46
|
-
useStore: () => useStore
|
|
47
|
-
});
|
|
48
|
-
import * as import__videojs_core_dom from "@videojs/core/dom";
|
|
49
|
-
__reExport(src_exports, import__videojs_core_dom);
|
|
50
|
-
|
|
51
|
-
//#endregion
|
|
52
|
-
export { BufferingIndicator, Container, index_parts_exports as Controls, FullscreenButton, MuteButton, PiPButton, PlayButton, Poster, SeekButton, index_parts_exports$1 as Time, createPlayer, createSelector, mergeProps, renderElement, shallowEqual, src_exports, useButton, useMedia, useMediaRegistration, usePlayer, usePlayerContext, useSelector, useStore };
|
|
53
|
-
//# sourceMappingURL=index.js.map
|
|
30
|
+
export { BufferingIndicator, Container, index_parts_exports as Controls, FullscreenButton, MuteButton, PiPButton, PlayButton, PlaybackRateButton, index_parts_exports$1 as Popover, Poster, SeekButton, index_parts_exports$2 as Slider, Thumbnail, index_parts_exports$3 as Time, index_parts_exports$4 as TimeSlider, index_parts_exports$5 as VolumeSlider, createPlayer, createSelector, mergeProps, renderElement, shallowEqual, useButton, useMedia, useMediaRegistration, usePlayer, usePlayerContext, usePopoverContext, useSelector, useSlider, useStore };
|
|
@@ -7,6 +7,11 @@ import { jsx } from "react/jsx-runtime";
|
|
|
7
7
|
|
|
8
8
|
//#region src/player/context.tsx
|
|
9
9
|
const PlayerContext = createContext(null);
|
|
10
|
+
const EMPTY_UNSUBSCRIBE = () => {};
|
|
11
|
+
const EMPTY_STORE = {
|
|
12
|
+
state: {},
|
|
13
|
+
subscribe: () => EMPTY_UNSUBSCRIBE
|
|
14
|
+
};
|
|
10
15
|
function PlayerContextProvider({ value, children }) {
|
|
11
16
|
return /* @__PURE__ */ jsx(PlayerContext.Provider, {
|
|
12
17
|
value,
|
|
@@ -23,6 +28,11 @@ function usePlayer(selector) {
|
|
|
23
28
|
const { store } = usePlayerContext();
|
|
24
29
|
return useStore(store, selector);
|
|
25
30
|
}
|
|
31
|
+
function useOptionalPlayer(selector) {
|
|
32
|
+
const ctx = useContext(PlayerContext);
|
|
33
|
+
const value = useStore(ctx?.store ?? EMPTY_STORE, ctx ? selector : void 0);
|
|
34
|
+
return ctx ? value : void 0;
|
|
35
|
+
}
|
|
26
36
|
/** Access the media element from within a Player Provider. */
|
|
27
37
|
function useMedia() {
|
|
28
38
|
const { media } = usePlayerContext();
|
|
@@ -51,5 +61,5 @@ const Container = forwardRef(function Container({ children, ...props }, ref) {
|
|
|
51
61
|
});
|
|
52
62
|
|
|
53
63
|
//#endregion
|
|
54
|
-
export { Container, PlayerContextProvider, useMedia, useMediaRegistration, usePlayer, usePlayerContext };
|
|
64
|
+
export { Container, PlayerContextProvider, useMedia, useMediaRegistration, useOptionalPlayer, usePlayer, usePlayerContext };
|
|
55
65
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../src/player/context.tsx"],"sourcesContent":["'use client';\n\nimport type { Media } from '@videojs/core/dom';\nimport type { UnknownState, UnknownStore } from '@videojs/store';\nimport { useStore } from '@videojs/store/react';\nimport type { Dispatch, HTMLAttributes, ReactNode, SetStateAction } from 'react';\nimport { createContext, forwardRef, useContext, useEffect, useRef } from 'react';\n\nimport { useComposedRefs } from '../utils/use-composed-refs';\n\nexport interface PlayerContextValue {\n store: UnknownStore;\n media: Media | null;\n setMedia: Dispatch<SetStateAction<Media | null>>;\n}\n\nconst PlayerContext = createContext<PlayerContextValue | null>(null);\n\nexport function PlayerContextProvider({\n value,\n children,\n}: {\n value: PlayerContextValue;\n children: ReactNode;\n}): ReactNode {\n return <PlayerContext.Provider value={value}>{children}</PlayerContext.Provider>;\n}\n\n/** Access the full player context value. Throws if used outside a Player Provider. */\nexport function usePlayerContext(): PlayerContextValue {\n const ctx = useContext(PlayerContext);\n if (!ctx) throw new Error('usePlayerContext must be used within a Player Provider');\n return ctx;\n}\n\n/**\n * Access the player store from within a Player Provider.\n *\n * @label Without Selector\n */\nexport function usePlayer(): UnknownStore;\n/**\n * Select a value from the player store. Re-renders when the selected value changes.\n *\n * @label With Selector\n * @param selector - Derives a value from the player store state.\n */\nexport function usePlayer<R>(selector: (state: UnknownState) => R): R;\nexport function usePlayer<R>(selector?: (state: UnknownState) => R) {\n const { store } = usePlayerContext();\n return useStore(store, selector as any);\n}\n\n/** Access the media element from within a Player Provider. */\nexport function useMedia(): Media | null {\n const { media } = usePlayerContext();\n return media;\n}\n\n/** Access the media registration setter for connecting a media element to the player. */\nexport function useMediaRegistration(): Dispatch<SetStateAction<Media | null>> | undefined {\n const ctx = useContext(PlayerContext);\n return ctx?.setMedia;\n}\n\nexport interface ContainerProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(function Container({ children, ...props }, ref) {\n const { store, media } = usePlayerContext();\n const internalRef = useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs(ref, internalRef);\n\n useEffect(() => {\n if (!media) return;\n return store.attach({ media, container: internalRef.current });\n }, [media, store]);\n\n return (\n <div ref={composedRef} {...props}>\n {children}\n </div>\n );\n});\n\nexport namespace Container {\n export type Props = ContainerProps;\n}\n"],"mappings":";;;;;;;;AAgBA,MAAM,gBAAgB,cAAyC,KAAK;
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../src/player/context.tsx"],"sourcesContent":["'use client';\n\nimport type { Media } from '@videojs/core/dom';\nimport type { UnknownState, UnknownStore } from '@videojs/store';\nimport { useStore } from '@videojs/store/react';\nimport type { Dispatch, HTMLAttributes, ReactNode, SetStateAction } from 'react';\nimport { createContext, forwardRef, useContext, useEffect, useRef } from 'react';\n\nimport { useComposedRefs } from '../utils/use-composed-refs';\n\nexport interface PlayerContextValue {\n store: UnknownStore;\n media: Media | null;\n setMedia: Dispatch<SetStateAction<Media | null>>;\n}\n\nconst PlayerContext = createContext<PlayerContextValue | null>(null);\nconst EMPTY_UNSUBSCRIBE = () => {};\nconst EMPTY_STORE = {\n state: {} as UnknownState,\n subscribe: () => EMPTY_UNSUBSCRIBE,\n} as Pick<UnknownStore, 'state' | 'subscribe'>;\n\nexport function PlayerContextProvider({\n value,\n children,\n}: {\n value: PlayerContextValue;\n children: ReactNode;\n}): ReactNode {\n return <PlayerContext.Provider value={value}>{children}</PlayerContext.Provider>;\n}\n\n/** Access the full player context value. Throws if used outside a Player Provider. */\nexport function usePlayerContext(): PlayerContextValue {\n const ctx = useContext(PlayerContext);\n if (!ctx) throw new Error('usePlayerContext must be used within a Player Provider');\n return ctx;\n}\n\n/**\n * Access the player store from within a Player Provider.\n *\n * @label Without Selector\n */\nexport function usePlayer(): UnknownStore;\n/**\n * Select a value from the player store. Re-renders when the selected value changes.\n *\n * @label With Selector\n * @param selector - Derives a value from the player store state.\n */\nexport function usePlayer<R>(selector: (state: UnknownState) => R): R;\nexport function usePlayer<R>(selector?: (state: UnknownState) => R) {\n const { store } = usePlayerContext();\n return useStore(store, selector as any);\n}\n\n/**\n * Access player state when available, but return `undefined` outside Provider.\n *\n * This is useful for components that can operate without player context\n * (e.g. they accept fully explicit props as a fallback).\n */\n/** @label Without Selector */\nexport function useOptionalPlayer(): UnknownStore | undefined;\n/** @label With Selector */\nexport function useOptionalPlayer<R>(selector: (state: UnknownState) => R): R | undefined;\nexport function useOptionalPlayer<R>(selector?: (state: UnknownState) => R) {\n const ctx = useContext(PlayerContext);\n const store = (ctx?.store ?? (EMPTY_STORE as unknown as UnknownStore)) as UnknownStore;\n const value = useStore(store, (ctx ? selector : undefined) as any);\n return ctx ? value : undefined;\n}\n\n/** Access the media element from within a Player Provider. */\nexport function useMedia(): Media | null {\n const { media } = usePlayerContext();\n return media;\n}\n\n/** Access the media registration setter for connecting a media element to the player. */\nexport function useMediaRegistration(): Dispatch<SetStateAction<Media | null>> | undefined {\n const ctx = useContext(PlayerContext);\n return ctx?.setMedia;\n}\n\nexport interface ContainerProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(function Container({ children, ...props }, ref) {\n const { store, media } = usePlayerContext();\n const internalRef = useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs(ref, internalRef);\n\n useEffect(() => {\n if (!media) return;\n return store.attach({ media, container: internalRef.current });\n }, [media, store]);\n\n return (\n <div ref={composedRef} {...props}>\n {children}\n </div>\n );\n});\n\nexport namespace Container {\n export type Props = ContainerProps;\n}\n"],"mappings":";;;;;;;;AAgBA,MAAM,gBAAgB,cAAyC,KAAK;AACpE,MAAM,0BAA0B;AAChC,MAAM,cAAc;CAClB,OAAO,EAAE;CACT,iBAAiB;CAClB;AAED,SAAgB,sBAAsB,EACpC,OACA,YAIY;AACZ,QAAO,oBAAC,cAAc;EAAgB;EAAQ;GAAkC;;;AAIlF,SAAgB,mBAAuC;CACrD,MAAM,MAAM,WAAW,cAAc;AACrC,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,yDAAyD;AACnF,QAAO;;AAgBT,SAAgB,UAAa,UAAuC;CAClE,MAAM,EAAE,UAAU,kBAAkB;AACpC,QAAO,SAAS,OAAO,SAAgB;;AAazC,SAAgB,kBAAqB,UAAuC;CAC1E,MAAM,MAAM,WAAW,cAAc;CAErC,MAAM,QAAQ,SADC,KAAK,SAAU,aACC,MAAM,WAAW,OAAkB;AAClE,QAAO,MAAM,QAAQ;;;AAIvB,SAAgB,WAAyB;CACvC,MAAM,EAAE,UAAU,kBAAkB;AACpC,QAAO;;;AAIT,SAAgB,uBAA2E;AAEzF,QADY,WAAW,cAAc,EACzB;;AAOd,MAAa,YAAY,WAA2C,SAAS,UAAU,EAAE,UAAU,GAAG,SAAS,KAAK;CAClH,MAAM,EAAE,OAAO,UAAU,kBAAkB;CAC3C,MAAM,cAAc,OAAuB,KAAK;CAChD,MAAM,cAAc,gBAAgB,KAAK,YAAY;AAErD,iBAAgB;AACd,MAAI,CAAC,MAAO;AACZ,SAAO,MAAM,OAAO;GAAE;GAAO,WAAW,YAAY;GAAS,CAAC;IAC7D,CAAC,OAAO,MAAM,CAAC;AAElB,QACE,oBAAC;EAAI,KAAK;EAAa,GAAI;EACxB;GACG;EAER"}
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
import { createPlayer } from "../../player/create-player.js";
|
|
2
|
-
import { src_exports } from "../../index.js";
|
|
3
1
|
import { Audio } from "../../media/audio.js";
|
|
4
2
|
import { MinimalAudioSkin } from "./minimal-skin.js";
|
|
5
3
|
import { AudioSkin } from "./skin.js";
|
|
4
|
+
import { audioFeatures } from "@videojs/core/dom";
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
const { Provider: AudioProvider } = createPlayer({ features: src_exports.features.audio });
|
|
9
|
-
|
|
10
|
-
//#endregion
|
|
11
|
-
export { Audio, AudioProvider, AudioSkin, MinimalAudioSkin };
|
|
12
|
-
//# sourceMappingURL=index.js.map
|
|
6
|
+
export { Audio, AudioSkin, MinimalAudioSkin, audioFeatures };
|
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
import { createPlayer } from "../../player/create-player.js";
|
|
2
|
-
import { src_exports } from "../../index.js";
|
|
3
1
|
import { BackgroundVideo } from "../../media/background-video/index.js";
|
|
4
2
|
import { BackgroundVideoSkin } from "./skin.js";
|
|
3
|
+
import { backgroundFeatures } from "@videojs/core/dom";
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
const { Provider: BackgroundVideoProvider } = createPlayer({ features: src_exports.features.background });
|
|
8
|
-
|
|
9
|
-
//#endregion
|
|
10
|
-
export { BackgroundVideo, BackgroundVideoProvider, BackgroundVideoSkin };
|
|
11
|
-
//# sourceMappingURL=index.js.map
|
|
5
|
+
export { BackgroundVideo, BackgroundVideoSkin, backgroundFeatures };
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
import { createPlayer } from "../../player/create-player.js";
|
|
2
|
-
import { src_exports } from "../../index.js";
|
|
3
1
|
import { Video } from "../../media/video.js";
|
|
4
2
|
import { MinimalVideoSkin } from "./minimal-skin.js";
|
|
5
3
|
import { MinimalVideoSkinTailwind } from "./minimal-skin.tailwind.js";
|
|
6
4
|
import { VideoSkin } from "./skin.js";
|
|
7
5
|
import { VideoSkinTailwind } from "./skin.tailwind.js";
|
|
6
|
+
import { videoFeatures } from "@videojs/core/dom";
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
const { Provider: VideoProvider } = createPlayer({ features: src_exports.features.video });
|
|
11
|
-
|
|
12
|
-
//#endregion
|
|
13
|
-
export { MinimalVideoSkin, MinimalVideoSkinTailwind, Video, VideoProvider, VideoSkin, VideoSkinTailwind };
|
|
14
|
-
//# sourceMappingURL=index.js.map
|
|
8
|
+
export { MinimalVideoSkin, MinimalVideoSkinTailwind, Video, VideoSkin, VideoSkinTailwind, videoFeatures };
|
|
@@ -1,3 +1,54 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
Icon State Visibility
|
|
3
|
+
|
|
4
|
+
Data-attribute-driven visibility rules for multi-state icon buttons.
|
|
5
|
+
Uses :is() with both element selectors (for HTML custom element wrappers)
|
|
6
|
+
and class selectors (for React rendered SVG elements).
|
|
7
|
+
========================================================================== */
|
|
8
|
+
|
|
9
|
+
/* --- All icons hidden by default --- */
|
|
10
|
+
|
|
11
|
+
.media-button--play .media-icon--restart,
|
|
12
|
+
.media-button--play .media-icon--play,
|
|
13
|
+
.media-button--play .media-icon--pause,
|
|
14
|
+
.media-button--mute .media-icon--volume-off,
|
|
15
|
+
.media-button--mute .media-icon--volume-low,
|
|
16
|
+
.media-button--mute .media-icon--volume-high,
|
|
17
|
+
.media-button--fullscreen .media-icon--fullscreen-enter,
|
|
18
|
+
.media-button--fullscreen .media-icon--fullscreen-exit,
|
|
19
|
+
.media-button--captions .media-icon--captions-off,
|
|
20
|
+
.media-button--captions .media-icon--captions-on {
|
|
21
|
+
display: none;
|
|
22
|
+
opacity: 0;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* --- Active icon per state --- */
|
|
26
|
+
|
|
27
|
+
/* Play: ended → restart */
|
|
28
|
+
.media-button--play[data-ended] .media-icon--restart,
|
|
29
|
+
/* Play: paused (not ended) → play */
|
|
30
|
+
.media-button--play:not([data-ended])[data-paused] .media-icon--play,
|
|
31
|
+
/* Play: playing (not paused, not ended) → pause */
|
|
32
|
+
.media-button--play:not([data-paused]):not([data-ended]) .media-icon--pause,
|
|
33
|
+
/* Mute: muted → volume off */
|
|
34
|
+
.media-button--mute[data-muted] .media-icon--volume-off,
|
|
35
|
+
/* Mute: volume low (not muted) → volume low */
|
|
36
|
+
.media-button--mute:not([data-muted])[data-volume-level="low"] .media-icon--volume-low,
|
|
37
|
+
/* Mute: volume high (not muted, not low) → volume high */
|
|
38
|
+
.media-button--mute:not([data-muted]):not([data-volume-level="low"]) .media-icon--volume-high,
|
|
39
|
+
/* Fullscreen: not fullscreen → enter */
|
|
40
|
+
.media-button--fullscreen:not([data-fullscreen]) .media-icon--fullscreen-enter,
|
|
41
|
+
/* Fullscreen: fullscreen → exit */
|
|
42
|
+
.media-button--fullscreen[data-fullscreen] .media-icon--fullscreen-exit,
|
|
43
|
+
/* Captions: not active → captions off */
|
|
44
|
+
.media-button--captions:not([data-active]) .media-icon--captions-off,
|
|
45
|
+
/* Captions: active → captions on */
|
|
46
|
+
.media-button--captions[data-active] .media-icon--captions-on {
|
|
47
|
+
display: block;
|
|
48
|
+
opacity: 1;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
1
52
|
/* ==========================================================================
|
|
2
53
|
Reset
|
|
3
54
|
========================================================================== */
|
|
@@ -30,6 +81,7 @@
|
|
|
30
81
|
.media-minimal-skin {
|
|
31
82
|
position: relative;
|
|
32
83
|
isolation: isolate;
|
|
84
|
+
display: block;
|
|
33
85
|
container: media-root / inline-size;
|
|
34
86
|
overflow: clip;
|
|
35
87
|
border-radius: var(--media-border-radius, 0.75rem);
|
|
@@ -75,6 +127,7 @@
|
|
|
75
127
|
.media-minimal-skin > video {
|
|
76
128
|
width: 100%;
|
|
77
129
|
height: 100%;
|
|
130
|
+
border-radius: inherit;
|
|
78
131
|
}
|
|
79
132
|
|
|
80
133
|
/* ==========================================================================
|
|
@@ -86,6 +139,7 @@
|
|
|
86
139
|
inset: 0;
|
|
87
140
|
width: 100%;
|
|
88
141
|
height: 100%;
|
|
142
|
+
border-radius: inherit;
|
|
89
143
|
object-fit: cover;
|
|
90
144
|
transition: opacity 0.25s;
|
|
91
145
|
pointer-events: none;
|
|
@@ -101,6 +155,7 @@
|
|
|
101
155
|
.media-minimal-skin .media-overlay {
|
|
102
156
|
position: absolute;
|
|
103
157
|
inset: 0;
|
|
158
|
+
z-index: 1;
|
|
104
159
|
border-radius: inherit;
|
|
105
160
|
background-image: linear-gradient(to top, oklch(0 0 0 / 0.7), oklch(0 0 0 / 0.5) 7.5rem, oklch(0 0 0 / 0));
|
|
106
161
|
backdrop-filter: blur(0) saturate(1.2) brightness(0.9);
|
|
@@ -134,12 +189,15 @@
|
|
|
134
189
|
position: absolute;
|
|
135
190
|
inset: 0;
|
|
136
191
|
z-index: 10;
|
|
137
|
-
display:
|
|
192
|
+
display: none;
|
|
138
193
|
align-items: center;
|
|
139
194
|
justify-content: center;
|
|
140
195
|
color: oklch(1 0 0);
|
|
141
196
|
pointer-events: none;
|
|
142
197
|
}
|
|
198
|
+
.media-minimal-skin .media-buffering-indicator[data-visible] {
|
|
199
|
+
display: flex;
|
|
200
|
+
}
|
|
143
201
|
|
|
144
202
|
/* ==========================================================================
|
|
145
203
|
Error Dialog
|
|
@@ -327,6 +385,7 @@
|
|
|
327
385
|
outline-offset: -2px;
|
|
328
386
|
color: oklch(0 0 0);
|
|
329
387
|
font-weight: 500;
|
|
388
|
+
text-align: center;
|
|
330
389
|
transition-property: background-color, color, outline-offset;
|
|
331
390
|
transition-duration: 150ms;
|
|
332
391
|
transition-timing-function: ease-out;
|
|
@@ -346,7 +405,9 @@
|
|
|
346
405
|
/* Icon button variant */
|
|
347
406
|
.media-minimal-skin .media-button--icon {
|
|
348
407
|
display: grid;
|
|
349
|
-
|
|
408
|
+
width: 2.375rem;
|
|
409
|
+
padding: 0;
|
|
410
|
+
aspect-ratio: 1;
|
|
350
411
|
background: transparent;
|
|
351
412
|
color: oklch(1 0 0);
|
|
352
413
|
}
|
|
@@ -360,13 +421,35 @@
|
|
|
360
421
|
filter: drop-shadow(0 1px 0 oklch(0 0 0 / 0.25));
|
|
361
422
|
}
|
|
362
423
|
|
|
363
|
-
/* Seek button
|
|
424
|
+
/* Seek button */
|
|
425
|
+
.media-minimal-skin .media-button--seek .media-icon__label {
|
|
426
|
+
position: absolute;
|
|
427
|
+
right: -1px;
|
|
428
|
+
bottom: -3px;
|
|
429
|
+
font-size: 0.75em;
|
|
430
|
+
font-weight: 480;
|
|
431
|
+
font-variant-numeric: tabular-nums;
|
|
432
|
+
}
|
|
433
|
+
.media-minimal-skin .media-button--seek:has(.media-icon--flipped) .media-icon__label {
|
|
434
|
+
right: unset;
|
|
435
|
+
left: -1px;
|
|
436
|
+
}
|
|
364
437
|
@container media-controls (width < 28rem) {
|
|
365
438
|
.media-minimal-skin .media-button--seek {
|
|
366
439
|
display: none;
|
|
367
440
|
}
|
|
368
441
|
}
|
|
369
442
|
|
|
443
|
+
/* Playback rate button */
|
|
444
|
+
.media-minimal-skin .media-button--playback-rate {
|
|
445
|
+
padding: 0;
|
|
446
|
+
}
|
|
447
|
+
.media-minimal-skin .media-button--playback-rate::after {
|
|
448
|
+
content: attr(data-rate) "\00D7";
|
|
449
|
+
width: 4ch;
|
|
450
|
+
font-variant-numeric: tabular-nums;
|
|
451
|
+
}
|
|
452
|
+
|
|
370
453
|
/* ==========================================================================
|
|
371
454
|
Icons
|
|
372
455
|
========================================================================== */
|
|
@@ -375,6 +458,8 @@
|
|
|
375
458
|
position: relative;
|
|
376
459
|
}
|
|
377
460
|
.media-minimal-skin .media-icon {
|
|
461
|
+
display: block;
|
|
462
|
+
flex-shrink: 0;
|
|
378
463
|
grid-area: 1 / 1;
|
|
379
464
|
width: 18px;
|
|
380
465
|
height: 18px;
|
|
@@ -383,28 +468,10 @@
|
|
|
383
468
|
transition-duration: 150ms;
|
|
384
469
|
transition-timing-function: ease-out;
|
|
385
470
|
}
|
|
386
|
-
.media-minimal-skin .media-icon--hidden {
|
|
387
|
-
display: none;
|
|
388
|
-
opacity: 0;
|
|
389
|
-
}
|
|
390
471
|
.media-minimal-skin .media-icon--flipped {
|
|
391
472
|
scale: -1 1;
|
|
392
473
|
}
|
|
393
474
|
|
|
394
|
-
/* Seek icon label positioning */
|
|
395
|
-
.media-minimal-skin .media-icon--seek ~ .media-icon__label {
|
|
396
|
-
position: absolute;
|
|
397
|
-
right: 0;
|
|
398
|
-
bottom: -3px;
|
|
399
|
-
font-size: 0.75em;
|
|
400
|
-
font-weight: 480;
|
|
401
|
-
font-variant-numeric: tabular-nums;
|
|
402
|
-
}
|
|
403
|
-
.media-minimal-skin .media-icon--seek.media-icon--flipped ~ .media-icon__label {
|
|
404
|
-
right: unset;
|
|
405
|
-
left: 0;
|
|
406
|
-
}
|
|
407
|
-
|
|
408
475
|
/* ==========================================================================
|
|
409
476
|
Slider
|
|
410
477
|
========================================================================== */
|
|
@@ -439,10 +506,7 @@
|
|
|
439
506
|
overflow: hidden;
|
|
440
507
|
background-color: oklch(1 0 0 / 0.2);
|
|
441
508
|
border-radius: inherit;
|
|
442
|
-
outline: 2px solid transparent;
|
|
443
|
-
outline-offset: -2px;
|
|
444
509
|
box-shadow: 0 0 0 1px oklch(0 0 0 / 0.05);
|
|
445
|
-
transition: outline-offset 150ms ease-out;
|
|
446
510
|
user-select: none;
|
|
447
511
|
}
|
|
448
512
|
.media-minimal-skin .media-slider__track[data-orientation="horizontal"] {
|
|
@@ -453,13 +517,11 @@
|
|
|
453
517
|
width: 0.1875rem;
|
|
454
518
|
height: 100%;
|
|
455
519
|
}
|
|
456
|
-
.media-minimal-skin .media-slider:focus-visible .media-slider__track {
|
|
457
|
-
outline-color: oklch(1 0 0);
|
|
458
|
-
outline-offset: 6px;
|
|
459
|
-
}
|
|
460
520
|
|
|
461
521
|
/* Thumb */
|
|
462
522
|
.media-minimal-skin .media-slider__thumb {
|
|
523
|
+
position: absolute;
|
|
524
|
+
transform: translate(-50%, -50%);
|
|
463
525
|
z-index: 10;
|
|
464
526
|
width: 0.75rem;
|
|
465
527
|
height: 0.75rem;
|
|
@@ -472,32 +534,74 @@
|
|
|
472
534
|
opacity: 0;
|
|
473
535
|
scale: 0.7;
|
|
474
536
|
transform-origin: center;
|
|
475
|
-
transition-property: opacity, scale;
|
|
537
|
+
transition-property: opacity, scale, outline-offset;
|
|
476
538
|
transition-duration: 150ms;
|
|
477
539
|
transition-timing-function: ease-out;
|
|
478
540
|
user-select: none;
|
|
541
|
+
outline: 2px solid transparent;
|
|
542
|
+
outline-offset: -2px;
|
|
543
|
+
}
|
|
544
|
+
.media-minimal-skin .media-slider__thumb[data-orientation="horizontal"] {
|
|
545
|
+
top: 50%;
|
|
546
|
+
left: var(--media-slider-fill);
|
|
547
|
+
}
|
|
548
|
+
.media-minimal-skin .media-slider__thumb[data-orientation="vertical"] {
|
|
549
|
+
left: 50%;
|
|
550
|
+
top: calc(100% - var(--media-slider-fill));
|
|
551
|
+
}
|
|
552
|
+
.media-minimal-skin .media-slider__thumb:focus-visible {
|
|
553
|
+
outline-color: oklch(1 0 0);
|
|
554
|
+
outline-offset: 2px;
|
|
479
555
|
}
|
|
480
556
|
.media-minimal-skin .media-slider:hover .media-slider__thumb,
|
|
481
|
-
.media-minimal-skin .media-slider:focus-within .media-slider__thumb
|
|
557
|
+
.media-minimal-skin .media-slider:focus-within .media-slider__thumb,
|
|
558
|
+
.media-minimal-skin .media-slider__thumb--persistent {
|
|
482
559
|
opacity: 1;
|
|
483
560
|
scale: 1;
|
|
484
561
|
}
|
|
485
|
-
|
|
486
|
-
|
|
562
|
+
|
|
563
|
+
/* Shared track fills */
|
|
564
|
+
.media-minimal-skin .media-slider__buffer,
|
|
565
|
+
.media-minimal-skin .media-slider__fill {
|
|
566
|
+
position: absolute;
|
|
567
|
+
border-radius: inherit;
|
|
568
|
+
pointer-events: none;
|
|
569
|
+
}
|
|
570
|
+
.media-minimal-skin .media-slider__buffer[data-orientation="horizontal"],
|
|
571
|
+
.media-minimal-skin .media-slider__fill[data-orientation="horizontal"] {
|
|
572
|
+
inset-block: 0;
|
|
573
|
+
left: 0;
|
|
487
574
|
}
|
|
488
|
-
.media-minimal-skin .media-
|
|
489
|
-
|
|
575
|
+
.media-minimal-skin .media-slider__buffer[data-orientation="vertical"],
|
|
576
|
+
.media-minimal-skin .media-slider__fill[data-orientation="vertical"] {
|
|
577
|
+
inset-inline: 0;
|
|
578
|
+
bottom: 0;
|
|
490
579
|
}
|
|
491
580
|
|
|
492
|
-
/*
|
|
493
|
-
.media-minimal-skin .media-
|
|
494
|
-
|
|
581
|
+
/* Buffer */
|
|
582
|
+
.media-minimal-skin .media-slider__buffer {
|
|
583
|
+
background-color: oklch(1 0 0 / 0.2);
|
|
584
|
+
transition-duration: 0.25s;
|
|
585
|
+
transition-timing-function: ease-out;
|
|
586
|
+
}
|
|
587
|
+
.media-minimal-skin .media-slider__buffer[data-orientation="horizontal"] {
|
|
588
|
+
width: var(--media-slider-buffer);
|
|
589
|
+
transition-property: width;
|
|
590
|
+
}
|
|
591
|
+
.media-minimal-skin .media-slider__buffer[data-orientation="vertical"] {
|
|
592
|
+
height: var(--media-slider-buffer);
|
|
593
|
+
transition-property: height;
|
|
495
594
|
}
|
|
496
595
|
|
|
497
|
-
/*
|
|
498
|
-
.media-minimal-skin .media-
|
|
596
|
+
/* Fill */
|
|
597
|
+
.media-minimal-skin .media-slider__fill {
|
|
499
598
|
background-color: oklch(1 0 0);
|
|
500
|
-
|
|
599
|
+
}
|
|
600
|
+
.media-minimal-skin .media-slider__fill[data-orientation="horizontal"] {
|
|
601
|
+
width: var(--media-slider-fill);
|
|
602
|
+
}
|
|
603
|
+
.media-minimal-skin .media-slider__fill[data-orientation="vertical"] {
|
|
604
|
+
height: var(--media-slider-fill);
|
|
501
605
|
}
|
|
502
606
|
|
|
503
607
|
/* Time display within slider */
|
|
@@ -527,11 +631,14 @@
|
|
|
527
631
|
transition-duration: 0ms;
|
|
528
632
|
}
|
|
529
633
|
|
|
530
|
-
.media-minimal-skin .media-
|
|
634
|
+
.media-minimal-skin .media-popup {
|
|
531
635
|
margin: 0;
|
|
532
|
-
padding: 0.5rem;
|
|
533
636
|
border: 0;
|
|
534
637
|
background: transparent;
|
|
638
|
+
--media-popover-side-offset: 0.5rem;
|
|
639
|
+
}
|
|
640
|
+
.media-minimal-skin .media-popup--volume {
|
|
641
|
+
padding: 0.25rem;
|
|
535
642
|
}
|
|
536
643
|
|
|
537
644
|
/* ==========================================================================
|
|
@@ -573,16 +680,8 @@
|
|
|
573
680
|
z-index: 20;
|
|
574
681
|
font-size: 1rem;
|
|
575
682
|
text-wrap: balance;
|
|
576
|
-
/* The delay must account for the controls delay/duration */
|
|
577
|
-
transition: transform 150ms ease-out;
|
|
578
|
-
transition-delay: 600ms;
|
|
579
683
|
pointer-events: none;
|
|
580
684
|
}
|
|
581
|
-
@media (prefers-reduced-motion: reduce) {
|
|
582
|
-
.media-minimal-skin .media-captions {
|
|
583
|
-
transition-duration: 50ms;
|
|
584
|
-
}
|
|
585
|
-
}
|
|
586
685
|
.media-minimal-skin .media-captions__container {
|
|
587
686
|
display: flex;
|
|
588
687
|
flex-direction: column;
|
|
@@ -630,8 +729,34 @@
|
|
|
630
729
|
}
|
|
631
730
|
}
|
|
632
731
|
|
|
633
|
-
/*
|
|
732
|
+
/* Caption shifting styles (custom and native) */
|
|
733
|
+
.media-minimal-skin {
|
|
734
|
+
--media-caption-track-delay: 600ms;
|
|
735
|
+
--media-caption-track-y: -0.5rem;
|
|
736
|
+
}
|
|
737
|
+
.media-minimal-skin:has(.media-controls[data-visible]) {
|
|
738
|
+
--media-caption-track-delay: 25ms;
|
|
739
|
+
--media-caption-track-y: -3rem;
|
|
740
|
+
}
|
|
741
|
+
.media-minimal-skin .media-captions,
|
|
742
|
+
.media-minimal-skin video::-webkit-media-text-track-container {
|
|
743
|
+
/* NOTE: The delay must account for the controls delay/duration */
|
|
744
|
+
transition: transform 150ms ease-out;
|
|
745
|
+
transition-delay: var(--media-caption-track-delay);
|
|
746
|
+
}
|
|
747
|
+
.media-minimal-skin video::-webkit-media-text-track-container {
|
|
748
|
+
transform: translateY(var(--media-caption-track-y)) scale(0.98);
|
|
749
|
+
z-index: 1;
|
|
750
|
+
font-family: inherit;
|
|
751
|
+
}
|
|
752
|
+
/* When controls are visible, shift captions up to avoid overlap */
|
|
634
753
|
.media-minimal-skin .media-controls[data-visible] ~ .media-captions {
|
|
635
|
-
transform: translateY(-
|
|
636
|
-
transition-delay: 25ms;
|
|
754
|
+
transform: translateY(calc(var(--media-caption-track-y) - 0.5rem));
|
|
637
755
|
}
|
|
756
|
+
@media (prefers-reduced-motion: reduce) {
|
|
757
|
+
.media-minimal-skin .media-captions,
|
|
758
|
+
.media-minimal-skin video::-webkit-media-text-track-container {
|
|
759
|
+
transition-duration: 50ms;
|
|
760
|
+
}
|
|
761
|
+
}
|
|
762
|
+
|