@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
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useComposedRefs } from "../../utils/use-composed-refs.js";
|
|
4
|
+
import { renderElement } from "../../utils/use-render.js";
|
|
5
|
+
import { usePopoverContext } from "./context.js";
|
|
6
|
+
import { getAnchorPositionStyle, resolveOffsets } from "@videojs/core/dom";
|
|
7
|
+
import { forwardRef, useCallback, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
8
|
+
import { supportsAnchorPositioning } from "@videojs/utils/dom";
|
|
9
|
+
|
|
10
|
+
//#region src/ui/popover/popover-popup.tsx
|
|
11
|
+
const POPOVER_RESET = {
|
|
12
|
+
position: "fixed",
|
|
13
|
+
inset: "auto",
|
|
14
|
+
margin: 0
|
|
15
|
+
};
|
|
16
|
+
/** Container for the popover content. Positioned relative to the trigger using CSS anchor positioning with a JavaScript fallback. */
|
|
17
|
+
const PopoverPopup = forwardRef(function PopoverPopup({ render, className, style, ...elementProps }, forwardedRef) {
|
|
18
|
+
const { core, popover, state, stateAttrMap, anchorName, popupId } = usePopoverContext();
|
|
19
|
+
const internalRef = useRef(null);
|
|
20
|
+
const composedRef = useComposedRefs(forwardedRef, useCallback((el) => {
|
|
21
|
+
popover.setPopupElement(el);
|
|
22
|
+
}, [popover]), internalRef);
|
|
23
|
+
const posOpts = useMemo(() => ({
|
|
24
|
+
side: state.side,
|
|
25
|
+
align: state.align
|
|
26
|
+
}), [state.side, state.align]);
|
|
27
|
+
const anchorStyle = useMemo(() => {
|
|
28
|
+
if (!supportsAnchorPositioning()) return null;
|
|
29
|
+
return getAnchorPositionStyle(anchorName, posOpts);
|
|
30
|
+
}, [anchorName, posOpts]);
|
|
31
|
+
const [manualStyle, setManualStyle] = useState(null);
|
|
32
|
+
useLayoutEffect(() => {
|
|
33
|
+
if (supportsAnchorPositioning()) return;
|
|
34
|
+
if (!state.open) {
|
|
35
|
+
setManualStyle(null);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
function measure() {
|
|
39
|
+
const triggerEl = popover.triggerElement;
|
|
40
|
+
const popupEl = internalRef.current;
|
|
41
|
+
if (!triggerEl || !popupEl) return;
|
|
42
|
+
setManualStyle(getAnchorPositionStyle(anchorName, posOpts, triggerEl.getBoundingClientRect(), popupEl.getBoundingClientRect(), document.documentElement.getBoundingClientRect(), resolveOffsets(popupEl)));
|
|
43
|
+
}
|
|
44
|
+
measure();
|
|
45
|
+
let rafId = 0;
|
|
46
|
+
function reposition() {
|
|
47
|
+
cancelAnimationFrame(rafId);
|
|
48
|
+
rafId = requestAnimationFrame(measure);
|
|
49
|
+
}
|
|
50
|
+
window.addEventListener("scroll", reposition, {
|
|
51
|
+
capture: true,
|
|
52
|
+
passive: true
|
|
53
|
+
});
|
|
54
|
+
window.addEventListener("resize", reposition);
|
|
55
|
+
return () => {
|
|
56
|
+
cancelAnimationFrame(rafId);
|
|
57
|
+
window.removeEventListener("scroll", reposition, true);
|
|
58
|
+
window.removeEventListener("resize", reposition);
|
|
59
|
+
};
|
|
60
|
+
}, [
|
|
61
|
+
state.open,
|
|
62
|
+
anchorName,
|
|
63
|
+
posOpts,
|
|
64
|
+
popover
|
|
65
|
+
]);
|
|
66
|
+
const positioningStyle = anchorStyle ?? manualStyle ?? POPOVER_RESET;
|
|
67
|
+
if (!state.open) return null;
|
|
68
|
+
const { onFocusOut, ...restPopupProps } = popover.popupProps;
|
|
69
|
+
return renderElement("div", {
|
|
70
|
+
render,
|
|
71
|
+
className,
|
|
72
|
+
style
|
|
73
|
+
}, {
|
|
74
|
+
state,
|
|
75
|
+
stateAttrMap,
|
|
76
|
+
ref: composedRef,
|
|
77
|
+
props: [
|
|
78
|
+
{
|
|
79
|
+
id: popupId,
|
|
80
|
+
style: positioningStyle,
|
|
81
|
+
...core.getPopupAttrs(state)
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
...restPopupProps,
|
|
85
|
+
onBlur: onFocusOut
|
|
86
|
+
},
|
|
87
|
+
elementProps
|
|
88
|
+
]
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
//#endregion
|
|
93
|
+
export { PopoverPopup };
|
|
94
|
+
//# sourceMappingURL=popover-popup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover-popup.js","names":[],"sources":["../../../../src/ui/popover/popover-popup.tsx"],"sourcesContent":["'use client';\n\nimport type { PopoverState } from '@videojs/core';\nimport { getAnchorPositionStyle, resolveOffsets } from '@videojs/core/dom';\nimport { supportsAnchorPositioning } from '@videojs/utils/dom';\nimport type { CSSProperties } from 'react';\nimport { forwardRef, useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { useComposedRefs } from '../../utils/use-composed-refs';\nimport { renderElement } from '../../utils/use-render';\nimport { usePopoverContext } from './context';\n\nexport interface PopoverPopupProps extends UIComponentProps<'div', PopoverState> {}\n\nconst POPOVER_RESET: CSSProperties = { position: 'fixed', inset: 'auto', margin: 0 };\n\n/** Container for the popover content. Positioned relative to the trigger using CSS anchor positioning with a JavaScript fallback. */\nexport const PopoverPopup = forwardRef<HTMLDivElement, PopoverPopupProps>(function PopoverPopup(\n { render, className, style, ...elementProps },\n forwardedRef\n) {\n const { core, popover, state, stateAttrMap, anchorName, popupId } = usePopoverContext();\n const internalRef = useRef<HTMLDivElement>(null);\n\n const popupRef = useCallback(\n (el: HTMLDivElement | null) => {\n popover.setPopupElement(el);\n },\n [popover]\n );\n\n const composedRef = useComposedRefs(forwardedRef, popupRef, internalRef);\n\n // --- Positioning ---\n\n const posOpts = useMemo(() => ({ side: state.side, align: state.align }), [state.side, state.align]);\n\n // CSS Anchor Positioning — computed from state, no measurement needed.\n // getAnchorPositionStyle returns camelCase keys, directly compatible\n // with React's style prop.\n const anchorStyle = useMemo(() => {\n if (!supportsAnchorPositioning()) return null;\n return getAnchorPositionStyle(anchorName, posOpts) as CSSProperties;\n }, [anchorName, posOpts]);\n\n // Manual fallback — measure rects after layout, before paint.\n const [manualStyle, setManualStyle] = useState<CSSProperties | null>(null);\n\n useLayoutEffect(() => {\n if (supportsAnchorPositioning()) return;\n if (!state.open) {\n setManualStyle(null);\n return;\n }\n\n function measure(): void {\n const triggerEl = popover.triggerElement;\n const popupEl = internalRef.current;\n if (!triggerEl || !popupEl) return;\n\n const triggerRect = triggerEl.getBoundingClientRect();\n const popupRect = popupEl.getBoundingClientRect();\n const boundaryRect = document.documentElement.getBoundingClientRect();\n const offsets = resolveOffsets(popupEl);\n\n setManualStyle(\n getAnchorPositionStyle(anchorName, posOpts, triggerRect, popupRect, boundaryRect, offsets) as CSSProperties\n );\n }\n\n measure();\n\n // Recompute on scroll/resize so the popover tracks its trigger.\n let rafId = 0;\n function reposition(): void {\n cancelAnimationFrame(rafId);\n rafId = requestAnimationFrame(measure);\n }\n\n window.addEventListener('scroll', reposition, { capture: true, passive: true });\n window.addEventListener('resize', reposition);\n\n return () => {\n cancelAnimationFrame(rafId);\n window.removeEventListener('scroll', reposition, true);\n window.removeEventListener('resize', reposition);\n };\n }, [state.open, anchorName, posOpts, popover]);\n\n // Anchor path uses computed styles; manual path uses measured styles;\n // fallback resets UA [popover] defaults until positioning is computed.\n const positioningStyle = anchorStyle ?? manualStyle ?? POPOVER_RESET;\n\n // --- Visibility ---\n\n if (!state.open) {\n return null;\n }\n\n // Remap DOM focus events to React synthetic event names.\n const { onFocusOut, ...restPopupProps } = popover.popupProps;\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: composedRef,\n props: [\n {\n id: popupId,\n style: positioningStyle,\n ...core.getPopupAttrs(state),\n },\n { ...restPopupProps, onBlur: onFocusOut },\n elementProps,\n ],\n }\n );\n});\n\nexport namespace PopoverPopup {\n export type Props = PopoverPopupProps;\n export type State = PopoverState;\n}\n"],"mappings":";;;;;;;;;;AAeA,MAAM,gBAA+B;CAAE,UAAU;CAAS,OAAO;CAAQ,QAAQ;CAAG;;AAGpF,MAAa,eAAe,WAA8C,SAAS,aACjF,EAAE,QAAQ,WAAW,OAAO,GAAG,gBAC/B,cACA;CACA,MAAM,EAAE,MAAM,SAAS,OAAO,cAAc,YAAY,YAAY,mBAAmB;CACvF,MAAM,cAAc,OAAuB,KAAK;CAShD,MAAM,cAAc,gBAAgB,cAPnB,aACd,OAA8B;AAC7B,UAAQ,gBAAgB,GAAG;IAE7B,CAAC,QAAQ,CACV,EAE2D,YAAY;CAIxE,MAAM,UAAU,eAAe;EAAE,MAAM,MAAM;EAAM,OAAO,MAAM;EAAO,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC;CAKpG,MAAM,cAAc,cAAc;AAChC,MAAI,CAAC,2BAA2B,CAAE,QAAO;AACzC,SAAO,uBAAuB,YAAY,QAAQ;IACjD,CAAC,YAAY,QAAQ,CAAC;CAGzB,MAAM,CAAC,aAAa,kBAAkB,SAA+B,KAAK;AAE1E,uBAAsB;AACpB,MAAI,2BAA2B,CAAE;AACjC,MAAI,CAAC,MAAM,MAAM;AACf,kBAAe,KAAK;AACpB;;EAGF,SAAS,UAAgB;GACvB,MAAM,YAAY,QAAQ;GAC1B,MAAM,UAAU,YAAY;AAC5B,OAAI,CAAC,aAAa,CAAC,QAAS;AAO5B,kBACE,uBAAuB,YAAY,SANjB,UAAU,uBAAuB,EACnC,QAAQ,uBAAuB,EAC5B,SAAS,gBAAgB,uBAAuB,EACrD,eAAe,QAAQ,CAGqD,CAC3F;;AAGH,WAAS;EAGT,IAAI,QAAQ;EACZ,SAAS,aAAmB;AAC1B,wBAAqB,MAAM;AAC3B,WAAQ,sBAAsB,QAAQ;;AAGxC,SAAO,iBAAiB,UAAU,YAAY;GAAE,SAAS;GAAM,SAAS;GAAM,CAAC;AAC/E,SAAO,iBAAiB,UAAU,WAAW;AAE7C,eAAa;AACX,wBAAqB,MAAM;AAC3B,UAAO,oBAAoB,UAAU,YAAY,KAAK;AACtD,UAAO,oBAAoB,UAAU,WAAW;;IAEjD;EAAC,MAAM;EAAM;EAAY;EAAS;EAAQ,CAAC;CAI9C,MAAM,mBAAmB,eAAe,eAAe;AAIvD,KAAI,CAAC,MAAM,KACT,QAAO;CAIT,MAAM,EAAE,YAAY,GAAG,mBAAmB,QAAQ;AAElD,QAAO,cACL,OACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA;EACA,KAAK;EACL,OAAO;GACL;IACE,IAAI;IACJ,OAAO;IACP,GAAG,KAAK,cAAc,MAAM;IAC7B;GACD;IAAE,GAAG;IAAgB,QAAQ;IAAY;GACzC;GACD;EACF,CACF;EACD"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { PopoverChangeDetails } from "@videojs/core/dom";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
import { PopoverProps } from "@videojs/core";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/popover/popover-root.d.ts
|
|
6
|
+
interface PopoverRootProps extends PopoverProps {
|
|
7
|
+
/** Called when the popover open state changes (fires immediately, before animations). */
|
|
8
|
+
onOpenChange?: (open: boolean, details: PopoverChangeDetails) => void;
|
|
9
|
+
/** Called after open/close animations complete. */
|
|
10
|
+
onOpenChangeComplete?: (open: boolean) => void;
|
|
11
|
+
children?: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
declare function PopoverRoot({
|
|
14
|
+
open: controlledOpen,
|
|
15
|
+
defaultOpen,
|
|
16
|
+
onOpenChange: onOpenChangeProp,
|
|
17
|
+
onOpenChangeComplete: onOpenChangeCompleteProp,
|
|
18
|
+
openOnHover,
|
|
19
|
+
delay,
|
|
20
|
+
closeDelay,
|
|
21
|
+
children,
|
|
22
|
+
...coreProps
|
|
23
|
+
}: PopoverRootProps): ReactNode;
|
|
24
|
+
declare namespace PopoverRoot {
|
|
25
|
+
type Props = PopoverRootProps;
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { PopoverRoot, PopoverRootProps };
|
|
29
|
+
//# sourceMappingURL=popover-root.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover-root.d.ts","names":[],"sources":["../../../../src/ui/popover/popover-root.tsx"],"mappings":";;;;;UAYiB,gBAAA,SAAyB,YAAA;;EAExC,YAAA,IAAgB,IAAA,WAAe,OAAA,EAAS,oBAAA;EAFR;EAIhC,oBAAA,IAAwB,IAAA;EACxB,QAAA,GAAW,SAAA;AAAA;AAAA,iBAGG,WAAA,CAAA;EACd,IAAA,EAAM,cAAA;EACN,WAAA;EACA,YAAA,EAAc,gBAAA;EACd,oBAAA,EAAsB,wBAAA;EACtB,WAAA;EACA,KAAA;EACA,UAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,gBAAA,GAAmB,SAAA;AAAA,kBAuEL,WAAA;EAAA,KACH,KAAA,GAAQ,gBAAA;AAAA"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useLatestRef } from "../../utils/use-latest-ref.js";
|
|
4
|
+
import { PopoverContextProvider } from "./context.js";
|
|
5
|
+
import { useSafeId } from "../../utils/use-safe-id.js";
|
|
6
|
+
import { createPopover, createTransition } from "@videojs/core/dom";
|
|
7
|
+
import { useSnapshot } from "@videojs/store/react";
|
|
8
|
+
import { useEffect, useState } from "react";
|
|
9
|
+
import { jsx } from "react/jsx-runtime";
|
|
10
|
+
import { PopoverCore, PopoverDataAttrs } from "@videojs/core";
|
|
11
|
+
|
|
12
|
+
//#region src/ui/popover/popover-root.tsx
|
|
13
|
+
function PopoverRoot({ open: controlledOpen, defaultOpen = PopoverCore.defaultProps.defaultOpen, onOpenChange: onOpenChangeProp, onOpenChangeComplete: onOpenChangeCompleteProp, openOnHover = PopoverCore.defaultProps.openOnHover, delay = PopoverCore.defaultProps.delay, closeDelay = PopoverCore.defaultProps.closeDelay, children, ...coreProps }) {
|
|
14
|
+
const [core] = useState(() => new PopoverCore(coreProps));
|
|
15
|
+
core.setProps(coreProps);
|
|
16
|
+
const isControlled = controlledOpen !== void 0;
|
|
17
|
+
const onOpenChangeRef = useLatestRef(onOpenChangeProp);
|
|
18
|
+
const onOpenChangeCompleteRef = useLatestRef(onOpenChangeCompleteProp);
|
|
19
|
+
const closeOnEscapeRef = useLatestRef(coreProps.closeOnEscape);
|
|
20
|
+
const closeOnOutsideClickRef = useLatestRef(coreProps.closeOnOutsideClick);
|
|
21
|
+
const openOnHoverRef = useLatestRef(openOnHover);
|
|
22
|
+
const delayRef = useLatestRef(delay);
|
|
23
|
+
const closeDelayRef = useLatestRef(closeDelay);
|
|
24
|
+
const [popover] = useState(() => {
|
|
25
|
+
const instance = createPopover({
|
|
26
|
+
transition: createTransition(),
|
|
27
|
+
onOpenChange: (nextOpen, details) => {
|
|
28
|
+
onOpenChangeRef.current?.(nextOpen, details);
|
|
29
|
+
},
|
|
30
|
+
onOpenChangeComplete: (nextOpen) => {
|
|
31
|
+
onOpenChangeCompleteRef.current?.(nextOpen);
|
|
32
|
+
},
|
|
33
|
+
closeOnEscape: () => closeOnEscapeRef.current ?? PopoverCore.defaultProps.closeOnEscape,
|
|
34
|
+
closeOnOutsideClick: () => closeOnOutsideClickRef.current ?? PopoverCore.defaultProps.closeOnOutsideClick,
|
|
35
|
+
openOnHover: () => openOnHoverRef.current,
|
|
36
|
+
delay: () => delayRef.current,
|
|
37
|
+
closeDelay: () => closeDelayRef.current
|
|
38
|
+
});
|
|
39
|
+
if (!isControlled && defaultOpen) instance.open("click");
|
|
40
|
+
return instance;
|
|
41
|
+
});
|
|
42
|
+
const anchorName = useSafeId();
|
|
43
|
+
const popupId = useSafeId("popup-");
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
if (controlledOpen === void 0) return;
|
|
46
|
+
const { active: inputOpen } = popover.input.current;
|
|
47
|
+
if (controlledOpen === inputOpen) return;
|
|
48
|
+
if (controlledOpen) popover.open("click");
|
|
49
|
+
else popover.close("click");
|
|
50
|
+
}, [controlledOpen, popover]);
|
|
51
|
+
useEffect(() => () => popover.destroy(), [popover]);
|
|
52
|
+
const input = useSnapshot(popover.input);
|
|
53
|
+
core.setInput(input);
|
|
54
|
+
return /* @__PURE__ */ jsx(PopoverContextProvider, {
|
|
55
|
+
value: {
|
|
56
|
+
core,
|
|
57
|
+
popover,
|
|
58
|
+
state: core.getState(),
|
|
59
|
+
stateAttrMap: PopoverDataAttrs,
|
|
60
|
+
anchorName,
|
|
61
|
+
popupId
|
|
62
|
+
},
|
|
63
|
+
children
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
//#endregion
|
|
68
|
+
export { PopoverRoot };
|
|
69
|
+
//# sourceMappingURL=popover-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover-root.js","names":[],"sources":["../../../../src/ui/popover/popover-root.tsx"],"sourcesContent":["'use client';\n\nimport { type PopoverProps as CorePopoverProps, PopoverCore, PopoverDataAttrs } from '@videojs/core';\nimport { createPopover, createTransition, type PopoverChangeDetails } from '@videojs/core/dom';\nimport { useSnapshot } from '@videojs/store/react';\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\n\nimport { useLatestRef } from '../../utils/use-latest-ref';\nimport { useSafeId } from '../../utils/use-safe-id';\nimport { PopoverContextProvider } from './context';\n\nexport interface PopoverRootProps extends CorePopoverProps {\n /** Called when the popover open state changes (fires immediately, before animations). */\n onOpenChange?: (open: boolean, details: PopoverChangeDetails) => void;\n /** Called after open/close animations complete. */\n onOpenChangeComplete?: (open: boolean) => void;\n children?: ReactNode;\n}\n\nexport function PopoverRoot({\n open: controlledOpen,\n defaultOpen = PopoverCore.defaultProps.defaultOpen,\n onOpenChange: onOpenChangeProp,\n onOpenChangeComplete: onOpenChangeCompleteProp,\n openOnHover = PopoverCore.defaultProps.openOnHover,\n delay = PopoverCore.defaultProps.delay,\n closeDelay = PopoverCore.defaultProps.closeDelay,\n children,\n ...coreProps\n}: PopoverRootProps): ReactNode {\n const [core] = useState(() => new PopoverCore(coreProps));\n core.setProps(coreProps);\n\n const isControlled = controlledOpen !== undefined;\n\n // Keep refs that always point to the latest values so the\n // createPopover closure never reads stale props.\n const onOpenChangeRef = useLatestRef(onOpenChangeProp);\n const onOpenChangeCompleteRef = useLatestRef(onOpenChangeCompleteProp);\n const closeOnEscapeRef = useLatestRef(coreProps.closeOnEscape);\n const closeOnOutsideClickRef = useLatestRef(coreProps.closeOnOutsideClick);\n const openOnHoverRef = useLatestRef(openOnHover);\n const delayRef = useLatestRef(delay);\n const closeDelayRef = useLatestRef(closeDelay);\n\n const [popover] = useState(() => {\n const instance = createPopover({\n transition: createTransition(),\n onOpenChange: (nextOpen: boolean, details: PopoverChangeDetails) => {\n onOpenChangeRef.current?.(nextOpen, details);\n },\n onOpenChangeComplete: (nextOpen: boolean) => {\n onOpenChangeCompleteRef.current?.(nextOpen);\n },\n closeOnEscape: () => closeOnEscapeRef.current ?? PopoverCore.defaultProps.closeOnEscape,\n closeOnOutsideClick: () => closeOnOutsideClickRef.current ?? PopoverCore.defaultProps.closeOnOutsideClick,\n openOnHover: () => openOnHoverRef.current,\n delay: () => delayRef.current,\n closeDelay: () => closeDelayRef.current,\n });\n\n // Apply defaultOpen on creation (uncontrolled only)\n if (!isControlled && defaultOpen) {\n instance.open('click');\n }\n\n return instance;\n });\n\n const anchorName = useSafeId();\n const popupId = useSafeId('popup-');\n\n // Sync controlled open prop -> internal input state.\n useEffect(() => {\n if (controlledOpen === undefined) return;\n\n const { active: inputOpen } = popover.input.current;\n if (controlledOpen === inputOpen) return;\n\n if (controlledOpen) {\n popover.open('click');\n } else {\n popover.close('click');\n }\n }, [controlledOpen, popover]);\n\n // Cleanup on unmount\n useEffect(() => () => popover.destroy(), [popover]);\n\n const input = useSnapshot(popover.input);\n core.setInput(input);\n const state = core.getState();\n\n return (\n <PopoverContextProvider value={{ core, popover, state, stateAttrMap: PopoverDataAttrs, anchorName, popupId }}>\n {children}\n </PopoverContextProvider>\n );\n}\n\nexport namespace PopoverRoot {\n export type Props = PopoverRootProps;\n}\n"],"mappings":";;;;;;;;;;;;AAoBA,SAAgB,YAAY,EAC1B,MAAM,gBACN,cAAc,YAAY,aAAa,aACvC,cAAc,kBACd,sBAAsB,0BACtB,cAAc,YAAY,aAAa,aACvC,QAAQ,YAAY,aAAa,OACjC,aAAa,YAAY,aAAa,YACtC,UACA,GAAG,aAC2B;CAC9B,MAAM,CAAC,QAAQ,eAAe,IAAI,YAAY,UAAU,CAAC;AACzD,MAAK,SAAS,UAAU;CAExB,MAAM,eAAe,mBAAmB;CAIxC,MAAM,kBAAkB,aAAa,iBAAiB;CACtD,MAAM,0BAA0B,aAAa,yBAAyB;CACtE,MAAM,mBAAmB,aAAa,UAAU,cAAc;CAC9D,MAAM,yBAAyB,aAAa,UAAU,oBAAoB;CAC1E,MAAM,iBAAiB,aAAa,YAAY;CAChD,MAAM,WAAW,aAAa,MAAM;CACpC,MAAM,gBAAgB,aAAa,WAAW;CAE9C,MAAM,CAAC,WAAW,eAAe;EAC/B,MAAM,WAAW,cAAc;GAC7B,YAAY,kBAAkB;GAC9B,eAAe,UAAmB,YAAkC;AAClE,oBAAgB,UAAU,UAAU,QAAQ;;GAE9C,uBAAuB,aAAsB;AAC3C,4BAAwB,UAAU,SAAS;;GAE7C,qBAAqB,iBAAiB,WAAW,YAAY,aAAa;GAC1E,2BAA2B,uBAAuB,WAAW,YAAY,aAAa;GACtF,mBAAmB,eAAe;GAClC,aAAa,SAAS;GACtB,kBAAkB,cAAc;GACjC,CAAC;AAGF,MAAI,CAAC,gBAAgB,YACnB,UAAS,KAAK,QAAQ;AAGxB,SAAO;GACP;CAEF,MAAM,aAAa,WAAW;CAC9B,MAAM,UAAU,UAAU,SAAS;AAGnC,iBAAgB;AACd,MAAI,mBAAmB,OAAW;EAElC,MAAM,EAAE,QAAQ,cAAc,QAAQ,MAAM;AAC5C,MAAI,mBAAmB,UAAW;AAElC,MAAI,eACF,SAAQ,KAAK,QAAQ;MAErB,SAAQ,MAAM,QAAQ;IAEvB,CAAC,gBAAgB,QAAQ,CAAC;AAG7B,uBAAsB,QAAQ,SAAS,EAAE,CAAC,QAAQ,CAAC;CAEnD,MAAM,QAAQ,YAAY,QAAQ,MAAM;AACxC,MAAK,SAAS,MAAM;AAGpB,QACE,oBAAC;EAAuB,OAAO;GAAE;GAAM;GAAS,OAHpC,KAAK,UAAU;GAG4B,cAAc;GAAkB;GAAY;GAAS;EACzG;GACsB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { UIComponentProps } from "../../utils/types.js";
|
|
2
|
+
import * as react from "react";
|
|
3
|
+
import { PopoverState } from "@videojs/core";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/popover/popover-trigger.d.ts
|
|
6
|
+
interface PopoverTriggerProps extends UIComponentProps<'button', PopoverState> {}
|
|
7
|
+
/** Button that toggles the popover visibility. Renders a `<button>` element. */
|
|
8
|
+
declare const PopoverTrigger: react.ForwardRefExoticComponent<Omit<PopoverTriggerProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
|
|
9
|
+
declare namespace PopoverTrigger {
|
|
10
|
+
type Props = PopoverTriggerProps;
|
|
11
|
+
type State = PopoverState;
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { PopoverTrigger, PopoverTriggerProps };
|
|
15
|
+
//# sourceMappingURL=popover-trigger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover-trigger.d.ts","names":[],"sources":["../../../../src/ui/popover/popover-trigger.tsx"],"mappings":";;;;;UAUiB,mBAAA,SAA4B,gBAAA,WAA2B,YAAA;;cAG3D,cAAA,EAAc,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,mBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,kBAwCV,cAAA;EAAA,KACH,KAAA,GAAQ,mBAAA;EAAA,KACR,KAAA,GAAQ,YAAA;AAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { renderElement } from "../../utils/use-render.js";
|
|
4
|
+
import { usePopoverContext } from "./context.js";
|
|
5
|
+
import { getAnchorNameStyle } from "@videojs/core/dom";
|
|
6
|
+
import { forwardRef, useCallback, useMemo } from "react";
|
|
7
|
+
|
|
8
|
+
//#region src/ui/popover/popover-trigger.tsx
|
|
9
|
+
/** Button that toggles the popover visibility. Renders a `<button>` element. */
|
|
10
|
+
const PopoverTrigger = forwardRef(function PopoverTrigger({ render, className, style, ...elementProps }, forwardedRef) {
|
|
11
|
+
const { core, popover, state, stateAttrMap, anchorName, popupId } = usePopoverContext();
|
|
12
|
+
const triggerRef = useCallback((el) => {
|
|
13
|
+
popover.setTriggerElement(el);
|
|
14
|
+
}, [popover]);
|
|
15
|
+
const anchorStyle = useMemo(() => getAnchorNameStyle(anchorName), [anchorName]);
|
|
16
|
+
const { onFocusIn, onFocusOut, ...restTriggerProps } = popover.triggerProps;
|
|
17
|
+
return renderElement("button", {
|
|
18
|
+
render,
|
|
19
|
+
className,
|
|
20
|
+
style
|
|
21
|
+
}, {
|
|
22
|
+
state,
|
|
23
|
+
stateAttrMap,
|
|
24
|
+
ref: [forwardedRef, triggerRef],
|
|
25
|
+
props: [
|
|
26
|
+
{
|
|
27
|
+
type: "button",
|
|
28
|
+
style: anchorStyle,
|
|
29
|
+
...core.getTriggerAttrs(state, popupId)
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
...restTriggerProps,
|
|
33
|
+
onFocus: onFocusIn,
|
|
34
|
+
onBlur: onFocusOut
|
|
35
|
+
},
|
|
36
|
+
elementProps
|
|
37
|
+
]
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
export { PopoverTrigger };
|
|
43
|
+
//# sourceMappingURL=popover-trigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover-trigger.js","names":[],"sources":["../../../../src/ui/popover/popover-trigger.tsx"],"sourcesContent":["'use client';\n\nimport type { PopoverState } from '@videojs/core';\nimport { getAnchorNameStyle } from '@videojs/core/dom';\nimport { forwardRef, useCallback, useMemo } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { usePopoverContext } from './context';\n\nexport interface PopoverTriggerProps extends UIComponentProps<'button', PopoverState> {}\n\n/** Button that toggles the popover visibility. Renders a `<button>` element. */\nexport const PopoverTrigger = forwardRef<HTMLButtonElement, PopoverTriggerProps>(function PopoverTrigger(\n { render, className, style, ...elementProps },\n forwardedRef\n) {\n const { core, popover, state, stateAttrMap, anchorName, popupId } = usePopoverContext();\n\n const triggerRef = useCallback(\n (el: HTMLButtonElement | null) => {\n popover.setTriggerElement(el);\n },\n [popover]\n );\n\n const anchorStyle = useMemo(() => getAnchorNameStyle(anchorName), [anchorName]);\n\n // Remap DOM focus events to React synthetic event names.\n // createPopover() uses onFocusIn/onFocusOut (matching DOM focusin/focusout),\n // but React maps those to onFocus/onBlur.\n const { onFocusIn, onFocusOut, ...restTriggerProps } = popover.triggerProps;\n\n return renderElement(\n 'button',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: [forwardedRef, triggerRef],\n props: [\n {\n type: 'button' as const,\n style: anchorStyle,\n ...core.getTriggerAttrs(state, popupId),\n },\n { ...restTriggerProps, onFocus: onFocusIn, onBlur: onFocusOut },\n elementProps,\n ],\n }\n );\n});\n\nexport namespace PopoverTrigger {\n export type Props = PopoverTriggerProps;\n export type State = PopoverState;\n}\n"],"mappings":";;;;;;;;;AAaA,MAAa,iBAAiB,WAAmD,SAAS,eACxF,EAAE,QAAQ,WAAW,OAAO,GAAG,gBAC/B,cACA;CACA,MAAM,EAAE,MAAM,SAAS,OAAO,cAAc,YAAY,YAAY,mBAAmB;CAEvF,MAAM,aAAa,aAChB,OAAiC;AAChC,UAAQ,kBAAkB,GAAG;IAE/B,CAAC,QAAQ,CACV;CAED,MAAM,cAAc,cAAc,mBAAmB,WAAW,EAAE,CAAC,WAAW,CAAC;CAK/E,MAAM,EAAE,WAAW,YAAY,GAAG,qBAAqB,QAAQ;AAE/D,QAAO,cACL,UACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA;EACA,KAAK,CAAC,cAAc,WAAW;EAC/B,OAAO;GACL;IACE,MAAM;IACN,OAAO;IACP,GAAG,KAAK,gBAAgB,OAAO,QAAQ;IACxC;GACD;IAAE,GAAG;IAAkB,SAAS;IAAW,QAAQ;IAAY;GAC/D;GACD;EACF,CACF;EACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poster.d.ts","names":[],"sources":["../../../../src/ui/poster/poster.tsx"],"mappings":";;;;;UAWiB,WAAA,SAAoB,gBAAA,QAAwB,UAAA,CAAW,KAAA;;AAAxE;;;;;;;;;AAgBA;;;;cAAa,MAAA,EAAM,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,WAAA,WAAA,KAAA,CAAA,aAAA,CAAA,gBAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"poster.d.ts","names":[],"sources":["../../../../src/ui/poster/poster.tsx"],"mappings":";;;;;UAWiB,WAAA,SAAoB,gBAAA,QAAwB,UAAA,CAAW,KAAA;;AAAxE;;;;;;;;;AAgBA;;;;cAAa,MAAA,EAAM,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,WAAA,WAAA,KAAA,CAAA,aAAA,CAAA,gBAAA;AAAA,kBA6BF,MAAA;EAAA,KACH,KAAA,GAAQ,WAAA;EAAA,KACR,KAAA,GAAQ,UAAA,CAAW,KAAA;AAAA"}
|
|
@@ -29,12 +29,13 @@ const Poster = forwardRef(function Poster(componentProps, forwardedRef) {
|
|
|
29
29
|
logMissingFeature("Poster", "playback");
|
|
30
30
|
return null;
|
|
31
31
|
}
|
|
32
|
+
core.setMedia(playback);
|
|
32
33
|
return renderElement("img", {
|
|
33
34
|
render,
|
|
34
35
|
className,
|
|
35
36
|
style
|
|
36
37
|
}, {
|
|
37
|
-
state: core.getState(
|
|
38
|
+
state: core.getState(),
|
|
38
39
|
stateAttrMap: PosterDataAttrs,
|
|
39
40
|
ref: [forwardedRef],
|
|
40
41
|
props: [elementProps]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poster.js","names":[],"sources":["../../../../src/ui/poster/poster.tsx"],"sourcesContent":["'use client';\n\nimport { PosterCore, PosterDataAttrs } from '@videojs/core';\nimport { logMissingFeature, selectPlayback } from '@videojs/core/dom';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef, useState } from 'react';\n\nimport { usePlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\n\nexport interface PosterProps extends UIComponentProps<'img', PosterCore.State> {}\n\n/**\n * Displays the video poster image. Shows before playback starts, hides after.\n *\n * @example\n * ```tsx\n * <Poster src=\"poster.jpg\" alt=\"Video description\" />\n *\n * <Poster\n * src=\"poster.jpg\"\n * alt=\"Video description\"\n * className={(state) => state.visible ? 'visible' : 'hidden'}\n * />\n * ```\n */\nexport const Poster = forwardRef(function Poster(\n componentProps: PosterProps,\n forwardedRef: ForwardedRef<HTMLImageElement>\n) {\n const { render, className, style, ...elementProps } = componentProps;\n\n const playback = usePlayer(selectPlayback);\n\n const [core] = useState(() => new PosterCore());\n\n if (!playback) {\n if (__DEV__) logMissingFeature('Poster', 'playback');\n return null;\n }\n\n return renderElement(\n 'img',\n { render, className, style },\n {\n state: core.getState(
|
|
1
|
+
{"version":3,"file":"poster.js","names":[],"sources":["../../../../src/ui/poster/poster.tsx"],"sourcesContent":["'use client';\n\nimport { PosterCore, PosterDataAttrs } from '@videojs/core';\nimport { logMissingFeature, selectPlayback } from '@videojs/core/dom';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef, useState } from 'react';\n\nimport { usePlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\n\nexport interface PosterProps extends UIComponentProps<'img', PosterCore.State> {}\n\n/**\n * Displays the video poster image. Shows before playback starts, hides after.\n *\n * @example\n * ```tsx\n * <Poster src=\"poster.jpg\" alt=\"Video description\" />\n *\n * <Poster\n * src=\"poster.jpg\"\n * alt=\"Video description\"\n * className={(state) => state.visible ? 'visible' : 'hidden'}\n * />\n * ```\n */\nexport const Poster = forwardRef(function Poster(\n componentProps: PosterProps,\n forwardedRef: ForwardedRef<HTMLImageElement>\n) {\n const { render, className, style, ...elementProps } = componentProps;\n\n const playback = usePlayer(selectPlayback);\n\n const [core] = useState(() => new PosterCore());\n\n if (!playback) {\n if (__DEV__) logMissingFeature('Poster', 'playback');\n return null;\n }\n\n core.setMedia(playback);\n\n return renderElement(\n 'img',\n { render, className, style },\n {\n state: core.getState(),\n stateAttrMap: PosterDataAttrs,\n ref: [forwardedRef],\n props: [elementProps],\n }\n );\n});\n\nexport namespace Poster {\n export type Props = PosterProps;\n export type State = PosterCore.State;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAa,SAAS,WAAW,SAAS,OACxC,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,GAAG,iBAAiB;CAEtD,MAAM,WAAW,UAAU,eAAe;CAE1C,MAAM,CAAC,QAAQ,eAAe,IAAI,YAAY,CAAC;AAE/C,KAAI,CAAC,UAAU;AACA,oBAAkB,UAAU,WAAW;AACpD,SAAO;;AAGT,MAAK,SAAS,SAAS;AAEvB,QAAO,cACL,OACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE,OAAO,KAAK,UAAU;EACtB,cAAc;EACd,KAAK,CAAC,aAAa;EACnB,OAAO,CAAC,aAAa;EACtB,CACF;EACD"}
|
|
@@ -21,7 +21,7 @@ interface SeekButtonProps extends UIComponentProps<'button', SeekButtonCore.Stat
|
|
|
21
21
|
* />
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
|
-
declare const SeekButton: react.ForwardRefExoticComponent<
|
|
24
|
+
declare const SeekButton: react.ForwardRefExoticComponent<SeekButtonProps & react.RefAttributes<HTMLButtonElement>>;
|
|
25
25
|
declare namespace SeekButton {
|
|
26
26
|
type Props = SeekButtonProps;
|
|
27
27
|
type State = SeekButtonCore.State;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seek-button.d.ts","names":[],"sources":["../../../../src/ui/seek-button/seek-button.tsx"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"seek-button.d.ts","names":[],"sources":["../../../../src/ui/seek-button/seek-button.tsx"],"mappings":";;;;;UAQiB,eAAA,SAAwB,gBAAA,WAA2B,cAAA,CAAe,KAAA,GAAQ,cAAA,CAAe,KAAA;;AAA1G;;;;;;;;;;;;;;;AAmBA;cAAa,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,eAAA,GAAA,KAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,kBAQN,UAAA;EAAA,KACH,KAAA,GAAQ,eAAA;EAAA,KACR,KAAA,GAAQ,cAAA,CAAe,KAAA;AAAA"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { useButton } from "../hooks/use-button.js";
|
|
6
|
-
import { logMissingFeature, selectTime } from "@videojs/core/dom";
|
|
7
|
-
import { forwardRef, useState } from "react";
|
|
3
|
+
import { createMediaButton } from "../create-media-button.js";
|
|
4
|
+
import { selectTime } from "@videojs/core/dom";
|
|
8
5
|
import { SeekButtonCore, SeekButtonDataAttrs } from "@videojs/core";
|
|
9
6
|
|
|
10
7
|
//#region src/ui/seek-button/seek-button.tsx
|
|
@@ -25,39 +22,12 @@ import { SeekButtonCore, SeekButtonDataAttrs } from "@videojs/core";
|
|
|
25
22
|
* />
|
|
26
23
|
* ```
|
|
27
24
|
*/
|
|
28
|
-
const SeekButton =
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
label,
|
|
35
|
-
disabled
|
|
36
|
-
});
|
|
37
|
-
const { getButtonProps, buttonRef } = useButton({
|
|
38
|
-
displayName: "SeekButton",
|
|
39
|
-
onActivate: () => core.seek(time),
|
|
40
|
-
isDisabled: () => disabled || !time
|
|
41
|
-
});
|
|
42
|
-
if (!time) {
|
|
43
|
-
logMissingFeature("SeekButton", "time");
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
const state = core.getState(time);
|
|
47
|
-
return renderElement("button", {
|
|
48
|
-
render,
|
|
49
|
-
className,
|
|
50
|
-
style
|
|
51
|
-
}, {
|
|
52
|
-
state,
|
|
53
|
-
stateAttrMap: SeekButtonDataAttrs,
|
|
54
|
-
ref: [forwardedRef, buttonRef],
|
|
55
|
-
props: [
|
|
56
|
-
core.getAttrs(state),
|
|
57
|
-
elementProps,
|
|
58
|
-
getButtonProps()
|
|
59
|
-
]
|
|
60
|
-
});
|
|
25
|
+
const SeekButton = createMediaButton({
|
|
26
|
+
displayName: "SeekButton",
|
|
27
|
+
core: SeekButtonCore,
|
|
28
|
+
stateAttrMap: SeekButtonDataAttrs,
|
|
29
|
+
selector: selectTime,
|
|
30
|
+
action: (core, state) => core.seek(state)
|
|
61
31
|
});
|
|
62
32
|
|
|
63
33
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seek-button.js","names":[],"sources":["../../../../src/ui/seek-button/seek-button.tsx"],"sourcesContent":["'use client';\n\nimport { SeekButtonCore, SeekButtonDataAttrs } from '@videojs/core';\nimport {
|
|
1
|
+
{"version":3,"file":"seek-button.js","names":[],"sources":["../../../../src/ui/seek-button/seek-button.tsx"],"sourcesContent":["'use client';\n\nimport { SeekButtonCore, SeekButtonDataAttrs } from '@videojs/core';\nimport { selectTime } from '@videojs/core/dom';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { createMediaButton } from '../create-media-button';\n\nexport interface SeekButtonProps extends UIComponentProps<'button', SeekButtonCore.State>, SeekButtonCore.Props {}\n\n/**\n * A button that seeks forward or backward by a configurable number of seconds.\n *\n * @example\n * ```tsx\n * <SeekButton seconds={-10} />\n *\n * <SeekButton\n * seconds={30}\n * render={(props, state) => (\n * <button {...props}>\n * {state.direction === 'backward' ? <RewindIcon /> : <FastForwardIcon />}\n * </button>\n * )}\n * />\n * ```\n */\nexport const SeekButton = createMediaButton<SeekButtonCore, SeekButtonProps>({\n displayName: 'SeekButton',\n core: SeekButtonCore,\n stateAttrMap: SeekButtonDataAttrs,\n selector: selectTime,\n action: (core, state) => core.seek(state),\n});\n\nexport namespace SeekButton {\n export type Props = SeekButtonProps;\n export type State = SeekButtonCore.State;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAa,aAAa,kBAAmD;CAC3E,aAAa;CACb,MAAM;CACN,cAAc;CACd,UAAU;CACV,SAAS,MAAM,UAAU,KAAK,KAAK,MAAM;CAC1C,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { createContext, useContext } from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
|
|
6
|
+
//#region src/ui/slider/context.tsx
|
|
7
|
+
const SliderContext = createContext(null);
|
|
8
|
+
function SliderProvider({ value, children }) {
|
|
9
|
+
return /* @__PURE__ */ jsx(SliderContext.Provider, {
|
|
10
|
+
value,
|
|
11
|
+
children
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
function useSliderContext() {
|
|
15
|
+
const ctx = useContext(SliderContext);
|
|
16
|
+
if (!ctx) throw new Error("Slider compound components must be used within a Slider.Root");
|
|
17
|
+
return ctx;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
export { SliderProvider, useSliderContext };
|
|
22
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/slider/context.tsx"],"sourcesContent":["'use client';\n\nimport type { SliderState, StateAttrMap } from '@videojs/core';\nimport type { SliderThumbProps } from '@videojs/core/dom';\nimport type { RefCallback } from 'react';\nimport { createContext, useContext } from 'react';\n\nexport interface SliderContextValue {\n state: SliderState;\n /** Pointer position converted to the value domain (not 0–100 percent). */\n pointerValue: number;\n thumbRef: RefCallback<HTMLElement>;\n thumbProps: SliderThumbProps;\n stateAttrMap: StateAttrMap<SliderState>;\n getAttrs: (state: SliderState) => object;\n formatValue?: ((value: number, type: 'current' | 'pointer') => string) | undefined;\n}\n\nconst SliderContext = createContext<SliderContextValue | null>(null);\n\nexport function SliderProvider({ value, children }: { value: SliderContextValue; children: React.ReactNode }) {\n return <SliderContext.Provider value={value}>{children}</SliderContext.Provider>;\n}\n\nexport function useSliderContext(): SliderContextValue {\n const ctx = useContext(SliderContext);\n if (!ctx) throw new Error('Slider compound components must be used within a Slider.Root');\n return ctx;\n}\n"],"mappings":";;;;;;AAkBA,MAAM,gBAAgB,cAAyC,KAAK;AAEpE,SAAgB,eAAe,EAAE,OAAO,YAAsE;AAC5G,QAAO,oBAAC,cAAc;EAAgB;EAAQ;GAAkC;;AAGlF,SAAgB,mBAAuC;CACrD,MAAM,MAAM,WAAW,cAAc;AACrC,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,+DAA+D;AACzF,QAAO"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SliderBuffer, SliderBufferProps } from "./slider-buffer.js";
|
|
2
|
+
import { SliderFill, SliderFillProps } from "./slider-fill.js";
|
|
3
|
+
import { SliderRoot, SliderRootProps } from "./slider-root.js";
|
|
4
|
+
import { SliderThumb, SliderThumbProps } from "./slider-thumb.js";
|
|
5
|
+
import { SliderTrack, SliderTrackProps } from "./slider-track.js";
|
|
6
|
+
import { SliderValue, SliderValueProps } from "./slider-value.js";
|
|
7
|
+
|
|
8
|
+
//#region src/ui/slider/index.parts.d.ts
|
|
9
|
+
declare namespace index_parts_d_exports {
|
|
10
|
+
export { SliderBuffer as Buffer, SliderBufferProps as BufferProps, SliderFill as Fill, SliderFillProps as FillProps, SliderRoot as Root, SliderRootProps as RootProps, SliderThumb as Thumb, SliderThumbProps as ThumbProps, SliderTrack as Track, SliderTrackProps as TrackProps, SliderValue as Value, SliderValueProps as ValueProps };
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { index_parts_d_exports };
|
|
14
|
+
//# sourceMappingURL=index.parts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.parts.d.ts","names":[],"sources":["../../../../src/ui/slider/index.parts.ts"],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { SliderBuffer } from "./slider-buffer.js";
|
|
3
|
+
import { SliderFill } from "./slider-fill.js";
|
|
4
|
+
import { SliderRoot } from "./slider-root.js";
|
|
5
|
+
import { SliderThumb } from "./slider-thumb.js";
|
|
6
|
+
import { SliderTrack } from "./slider-track.js";
|
|
7
|
+
import { SliderValue } from "./slider-value.js";
|
|
8
|
+
|
|
9
|
+
//#region src/ui/slider/index.parts.ts
|
|
10
|
+
var index_parts_exports = /* @__PURE__ */ __exportAll({
|
|
11
|
+
Buffer: () => SliderBuffer,
|
|
12
|
+
Fill: () => SliderFill,
|
|
13
|
+
Root: () => SliderRoot,
|
|
14
|
+
Thumb: () => SliderThumb,
|
|
15
|
+
Track: () => SliderTrack,
|
|
16
|
+
Value: () => SliderValue
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
export { index_parts_exports };
|
|
21
|
+
//# sourceMappingURL=index.parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.parts.js","names":[],"sources":["../../../../src/ui/slider/index.parts.ts"],"sourcesContent":["export { SliderBuffer as Buffer, type SliderBufferProps as BufferProps } from './slider-buffer';\nexport { SliderFill as Fill, type SliderFillProps as FillProps } from './slider-fill';\nexport { SliderRoot as Root, type SliderRootProps as RootProps } from './slider-root';\nexport { SliderThumb as Thumb, type SliderThumbProps as ThumbProps } from './slider-thumb';\nexport { SliderTrack as Track, type SliderTrackProps as TrackProps } from './slider-track';\nexport { SliderValue as Value, type SliderValueProps as ValueProps } from './slider-value';\n"],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { UIComponentProps } from "../../utils/types.js";
|
|
2
|
+
import * as react from "react";
|
|
3
|
+
import { SliderState } from "@videojs/core";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/slider/slider-buffer.d.ts
|
|
6
|
+
interface SliderBufferProps extends UIComponentProps<'div', SliderState> {}
|
|
7
|
+
/** Displays the buffered range on the slider track. */
|
|
8
|
+
declare const SliderBuffer: react.ForwardRefExoticComponent<SliderBufferProps>;
|
|
9
|
+
declare namespace SliderBuffer {
|
|
10
|
+
type Props = SliderBufferProps;
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { SliderBuffer, SliderBufferProps };
|
|
14
|
+
//# sourceMappingURL=slider-buffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-buffer.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-buffer.tsx"],"mappings":";;;;;UAQiB,iBAAA,SAA0B,gBAAA,QAAwB,WAAA;;cAGtD,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,iBAAA;AAAA,kBAMR,YAAA;EAAA,KACH,KAAA,GAAQ,iBAAA;AAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { createContextPart } from "../create-context-part.js";
|
|
4
|
+
import { useSliderContext } from "./context.js";
|
|
5
|
+
|
|
6
|
+
//#region src/ui/slider/slider-buffer.tsx
|
|
7
|
+
/** Displays the buffered range on the slider track. */
|
|
8
|
+
const SliderBuffer = createContextPart({
|
|
9
|
+
displayName: "SliderBuffer",
|
|
10
|
+
tag: "div",
|
|
11
|
+
useContext: useSliderContext
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { SliderBuffer };
|
|
16
|
+
//# sourceMappingURL=slider-buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-buffer.js","names":[],"sources":["../../../../src/ui/slider/slider-buffer.tsx"],"sourcesContent":["'use client';\n\nimport type { SliderState } from '@videojs/core';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { createContextPart } from '../create-context-part';\nimport { useSliderContext } from './context';\n\nexport interface SliderBufferProps extends UIComponentProps<'div', SliderState> {}\n\n/** Displays the buffered range on the slider track. */\nexport const SliderBuffer = createContextPart<SliderBufferProps, SliderState>({\n displayName: 'SliderBuffer',\n tag: 'div',\n useContext: useSliderContext,\n});\n\nexport namespace SliderBuffer {\n export type Props = SliderBufferProps;\n}\n"],"mappings":";;;;;;;AAWA,MAAa,eAAe,kBAAkD;CAC5E,aAAa;CACb,KAAK;CACL,YAAY;CACb,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { UIComponentProps } from "../../utils/types.js";
|
|
2
|
+
import * as react from "react";
|
|
3
|
+
import { SliderState } from "@videojs/core";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/slider/slider-fill.d.ts
|
|
6
|
+
interface SliderFillProps extends UIComponentProps<'div', SliderState> {}
|
|
7
|
+
/** Displays the filled portion from start to the current value. */
|
|
8
|
+
declare const SliderFill: react.ForwardRefExoticComponent<SliderFillProps>;
|
|
9
|
+
declare namespace SliderFill {
|
|
10
|
+
type Props = SliderFillProps;
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { SliderFill, SliderFillProps };
|
|
14
|
+
//# sourceMappingURL=slider-fill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-fill.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-fill.tsx"],"mappings":";;;;;UAQiB,eAAA,SAAwB,gBAAA,QAAwB,WAAA;;cAGpD,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,eAAA;AAAA,kBAMN,UAAA;EAAA,KACH,KAAA,GAAQ,eAAA;AAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { createContextPart } from "../create-context-part.js";
|
|
4
|
+
import { useSliderContext } from "./context.js";
|
|
5
|
+
|
|
6
|
+
//#region src/ui/slider/slider-fill.tsx
|
|
7
|
+
/** Displays the filled portion from start to the current value. */
|
|
8
|
+
const SliderFill = createContextPart({
|
|
9
|
+
displayName: "SliderFill",
|
|
10
|
+
tag: "div",
|
|
11
|
+
useContext: useSliderContext
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { SliderFill };
|
|
16
|
+
//# sourceMappingURL=slider-fill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-fill.js","names":[],"sources":["../../../../src/ui/slider/slider-fill.tsx"],"sourcesContent":["'use client';\n\nimport type { SliderState } from '@videojs/core';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { createContextPart } from '../create-context-part';\nimport { useSliderContext } from './context';\n\nexport interface SliderFillProps extends UIComponentProps<'div', SliderState> {}\n\n/** Displays the filled portion from start to the current value. */\nexport const SliderFill = createContextPart<SliderFillProps, SliderState>({\n displayName: 'SliderFill',\n tag: 'div',\n useContext: useSliderContext,\n});\n\nexport namespace SliderFill {\n export type Props = SliderFillProps;\n}\n"],"mappings":";;;;;;;AAWA,MAAa,aAAa,kBAAgD;CACxE,aAAa;CACb,KAAK;CACL,YAAY;CACb,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { UIComponentProps } from "../../utils/types.js";
|
|
2
|
+
import * as react from "react";
|
|
3
|
+
import { SliderCore } from "@videojs/core";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/slider/slider-root.d.ts
|
|
6
|
+
interface SliderRootProps extends UIComponentProps<'div', SliderCore.State>, SliderCore.Props {
|
|
7
|
+
onValueChange?: ((value: number) => void) | undefined;
|
|
8
|
+
onValueCommit?: ((value: number) => void) | undefined;
|
|
9
|
+
onDragStart?: (() => void) | undefined;
|
|
10
|
+
onDragEnd?: (() => void) | undefined;
|
|
11
|
+
}
|
|
12
|
+
declare const SliderRoot: react.ForwardRefExoticComponent<Omit<SliderRootProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
13
|
+
declare namespace SliderRoot {
|
|
14
|
+
type Props = SliderRootProps;
|
|
15
|
+
type State = SliderCore.State;
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { SliderRoot, SliderRootProps };
|
|
19
|
+
//# sourceMappingURL=slider-root.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-root.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-root.tsx"],"mappings":";;;;;UAYiB,eAAA,SAAwB,gBAAA,QAAwB,UAAA,CAAW,KAAA,GAAQ,UAAA,CAAW,KAAA;EAC7F,aAAA,KAAkB,KAAA;EAClB,aAAA,KAAkB,KAAA;EAClB,WAAA;EACA,SAAA;AAAA;AAAA,cAGW,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,eAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBA+EN,UAAA;EAAA,KACH,KAAA,GAAQ,eAAA;EAAA,KACR,KAAA,GAAQ,UAAA,CAAW,KAAA;AAAA"}
|