@videojs/react 0.1.0-preview.8 → 10.0.0-alpha.3
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/README.md +1 -1
- package/dist/default/_virtual/_rolldown/runtime.js +18 -0
- package/dist/default/index.js +22 -0
- package/dist/default/media/audio.js +22 -0
- package/dist/default/media/audio.js.map +1 -0
- package/dist/default/media/background-video/index.js +28 -0
- package/dist/default/media/background-video/index.js.map +1 -0
- package/dist/default/media/hls-video/index.js +25 -0
- package/dist/default/media/hls-video/index.js.map +1 -0
- package/dist/default/media/video.js +22 -0
- package/dist/default/media/video.js.map +1 -0
- package/dist/default/player/context.js +55 -0
- package/dist/default/player/context.js.map +1 -0
- package/dist/default/player/create-player.js +38 -0
- package/dist/default/player/create-player.js.map +1 -0
- package/dist/default/presets/audio/index.js +5 -0
- package/dist/default/presets/audio/minimal-skin.css +3 -0
- package/dist/default/presets/audio/minimal-skin.js +11 -0
- package/dist/default/presets/audio/minimal-skin.js.map +1 -0
- package/dist/default/presets/audio/skin.css +3 -0
- package/dist/default/presets/audio/skin.js +11 -0
- package/dist/default/presets/audio/skin.js.map +1 -0
- package/dist/default/presets/background/index.js +4 -0
- package/dist/default/presets/background/skin.css +3 -0
- package/dist/default/presets/background/skin.js +11 -0
- package/dist/default/presets/background/skin.js.map +1 -0
- package/dist/default/presets/video/index.js +7 -0
- package/dist/default/presets/video/minimal-skin.css +637 -0
- package/dist/default/presets/video/minimal-skin.js +234 -0
- package/dist/default/presets/video/minimal-skin.js.map +1 -0
- package/dist/default/presets/video/minimal-skin.tailwind.js +231 -0
- package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -0
- package/dist/default/presets/video/skin.css +638 -0
- package/dist/default/presets/video/skin.js +223 -0
- package/dist/default/presets/video/skin.js.map +1 -0
- package/dist/default/presets/video/skin.tailwind.js +222 -0
- package/dist/default/presets/video/skin.tailwind.js.map +1 -0
- package/dist/default/ui/buffering-indicator/buffering-indicator.js +50 -0
- package/dist/default/ui/buffering-indicator/buffering-indicator.js.map +1 -0
- package/dist/default/ui/buffering-indicator/index.js +3 -0
- package/dist/default/ui/captions-button/captions-button.js +51 -0
- package/dist/default/ui/captions-button/captions-button.js.map +1 -0
- package/dist/default/ui/captions-button/index.js +3 -0
- package/dist/default/ui/controls/controls-group.js +27 -0
- package/dist/default/ui/controls/controls-group.js.map +1 -0
- package/dist/default/ui/controls/controls-root.js +31 -0
- package/dist/default/ui/controls/controls-root.js.map +1 -0
- package/dist/default/ui/controls/index.js +3 -0
- package/dist/default/ui/controls/index.parts.js +13 -0
- package/dist/default/ui/controls/index.parts.js.map +1 -0
- package/dist/default/ui/error-dialog/error-dialog.js +54 -0
- package/dist/default/ui/error-dialog/error-dialog.js.map +1 -0
- package/dist/default/ui/error-dialog/index.js +3 -0
- package/dist/default/ui/fullscreen-button/fullscreen-button.js +44 -0
- package/dist/default/ui/fullscreen-button/fullscreen-button.js.map +1 -0
- package/dist/default/ui/fullscreen-button/index.js +3 -0
- package/dist/default/ui/hooks/use-button.js +44 -0
- package/dist/default/ui/hooks/use-button.js.map +1 -0
- package/dist/default/ui/mute-button/index.js +3 -0
- package/dist/default/ui/mute-button/mute-button.js +47 -0
- package/dist/default/ui/mute-button/mute-button.js.map +1 -0
- package/dist/default/ui/pip-button/index.js +3 -0
- package/dist/default/ui/pip-button/pip-button.js +44 -0
- package/dist/default/ui/pip-button/pip-button.js.map +1 -0
- package/dist/default/ui/play-button/index.js +3 -0
- package/dist/default/ui/play-button/play-button.js +60 -0
- package/dist/default/ui/play-button/play-button.js.map +1 -0
- package/dist/default/ui/poster/index.js +3 -0
- package/dist/default/ui/poster/poster.js +43 -0
- package/dist/default/ui/poster/poster.js.map +1 -0
- package/dist/default/ui/seek-button/index.js +3 -0
- package/dist/default/ui/seek-button/seek-button.js +62 -0
- package/dist/default/ui/seek-button/seek-button.js.map +1 -0
- package/dist/default/ui/time/index.js +3 -0
- package/dist/default/ui/time/index.parts.js +15 -0
- package/dist/default/ui/time/index.parts.js.map +1 -0
- package/dist/default/ui/time/time-group.js +34 -0
- package/dist/default/ui/time/time-group.js.map +1 -0
- package/dist/default/ui/time/time-separator.js +34 -0
- package/dist/default/ui/time/time-separator.js.map +1 -0
- package/dist/default/ui/time/time-value.js +54 -0
- package/dist/default/ui/time/time-value.js.map +1 -0
- package/dist/default/utils/attach-media-element.js +12 -0
- package/dist/default/utils/attach-media-element.js.map +1 -0
- package/dist/default/utils/media-props.js +11 -0
- package/dist/default/utils/media-props.js.map +1 -0
- package/dist/default/utils/merge-props.js +85 -0
- package/dist/default/utils/merge-props.js.map +1 -0
- package/dist/default/utils/use-composed-refs.js +57 -0
- package/dist/default/utils/use-composed-refs.js.map +1 -0
- package/dist/default/utils/use-render.js +71 -0
- package/dist/default/utils/use-render.js.map +1 -0
- package/dist/dev/_virtual/_rolldown/runtime.js +18 -0
- package/dist/dev/index.d.ts +23 -0
- package/dist/dev/index.js +22 -0
- package/dist/dev/media/audio.d.ts +12 -0
- package/dist/dev/media/audio.d.ts.map +1 -0
- package/dist/dev/media/audio.js +22 -0
- package/dist/dev/media/audio.js.map +1 -0
- package/dist/dev/media/background-video/index.d.ts +12 -0
- package/dist/dev/media/background-video/index.d.ts.map +1 -0
- package/dist/dev/media/background-video/index.js +28 -0
- package/dist/dev/media/background-video/index.js.map +1 -0
- package/dist/dev/media/hls-video/index.d.ts +11 -0
- package/dist/dev/media/hls-video/index.d.ts.map +1 -0
- package/dist/dev/media/hls-video/index.js +25 -0
- package/dist/dev/media/hls-video/index.js.map +1 -0
- package/dist/dev/media/video.d.ts +12 -0
- package/dist/dev/media/video.d.ts.map +1 -0
- package/dist/dev/media/video.js +22 -0
- package/dist/dev/media/video.js.map +1 -0
- package/dist/dev/player/context.d.ts +40 -0
- package/dist/dev/player/context.d.ts.map +1 -0
- package/dist/dev/player/context.js +55 -0
- package/dist/dev/player/context.js.map +1 -0
- package/dist/dev/player/create-player.d.ts +47 -0
- package/dist/dev/player/create-player.d.ts.map +1 -0
- package/dist/dev/player/create-player.js +39 -0
- package/dist/dev/player/create-player.js.map +1 -0
- package/dist/dev/presets/audio/index.d.ts +4 -0
- package/dist/dev/presets/audio/index.js +5 -0
- package/dist/dev/presets/audio/minimal-skin.css +3 -0
- package/dist/dev/presets/audio/minimal-skin.d.ts +9 -0
- package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -0
- package/dist/dev/presets/audio/minimal-skin.js +11 -0
- package/dist/dev/presets/audio/minimal-skin.js.map +1 -0
- package/dist/dev/presets/audio/skin.css +3 -0
- package/dist/dev/presets/audio/skin.d.ts +9 -0
- package/dist/dev/presets/audio/skin.d.ts.map +1 -0
- package/dist/dev/presets/audio/skin.js +11 -0
- package/dist/dev/presets/audio/skin.js.map +1 -0
- package/dist/dev/presets/background/index.d.ts +3 -0
- package/dist/dev/presets/background/index.js +4 -0
- package/dist/dev/presets/background/skin.css +3 -0
- package/dist/dev/presets/background/skin.d.ts +9 -0
- package/dist/dev/presets/background/skin.d.ts.map +1 -0
- package/dist/dev/presets/background/skin.js +11 -0
- package/dist/dev/presets/background/skin.js.map +1 -0
- package/dist/dev/presets/types.d.ts +10 -0
- package/dist/dev/presets/types.d.ts.map +1 -0
- package/dist/dev/presets/video/index.d.ts +6 -0
- package/dist/dev/presets/video/index.js +7 -0
- package/dist/dev/presets/video/minimal-skin.css +637 -0
- package/dist/dev/presets/video/minimal-skin.d.ts +9 -0
- package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -0
- package/dist/dev/presets/video/minimal-skin.js +234 -0
- package/dist/dev/presets/video/minimal-skin.js.map +1 -0
- package/dist/dev/presets/video/minimal-skin.tailwind.d.ts +8 -0
- package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -0
- package/dist/dev/presets/video/minimal-skin.tailwind.js +231 -0
- package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -0
- package/dist/dev/presets/video/skin.css +638 -0
- package/dist/dev/presets/video/skin.d.ts +9 -0
- package/dist/dev/presets/video/skin.d.ts.map +1 -0
- package/dist/dev/presets/video/skin.js +223 -0
- package/dist/dev/presets/video/skin.js.map +1 -0
- package/dist/dev/presets/video/skin.tailwind.d.ts +8 -0
- package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -0
- package/dist/dev/presets/video/skin.tailwind.js +222 -0
- package/dist/dev/presets/video/skin.tailwind.js.map +1 -0
- package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts +32 -0
- package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts.map +1 -0
- package/dist/dev/ui/buffering-indicator/buffering-indicator.js +53 -0
- package/dist/dev/ui/buffering-indicator/buffering-indicator.js.map +1 -0
- package/dist/dev/ui/buffering-indicator/index.d.ts +2 -0
- package/dist/dev/ui/buffering-indicator/index.js +3 -0
- package/dist/dev/ui/captions-button/captions-button.d.ts +36 -0
- package/dist/dev/ui/captions-button/captions-button.d.ts.map +1 -0
- package/dist/dev/ui/captions-button/captions-button.js +51 -0
- package/dist/dev/ui/captions-button/captions-button.js.map +1 -0
- package/dist/dev/ui/captions-button/index.d.ts +2 -0
- package/dist/dev/ui/captions-button/index.js +3 -0
- package/dist/dev/ui/controls/controls-group.d.ts +17 -0
- package/dist/dev/ui/controls/controls-group.d.ts.map +1 -0
- package/dist/dev/ui/controls/controls-group.js +27 -0
- package/dist/dev/ui/controls/controls-group.js.map +1 -0
- package/dist/dev/ui/controls/controls-root.d.ts +18 -0
- package/dist/dev/ui/controls/controls-root.d.ts.map +1 -0
- package/dist/dev/ui/controls/controls-root.js +34 -0
- package/dist/dev/ui/controls/controls-root.js.map +1 -0
- package/dist/dev/ui/controls/index.d.ts +2 -0
- package/dist/dev/ui/controls/index.js +3 -0
- package/dist/dev/ui/controls/index.parts.d.ts +10 -0
- package/dist/dev/ui/controls/index.parts.d.ts.map +1 -0
- package/dist/dev/ui/controls/index.parts.js +13 -0
- package/dist/dev/ui/controls/index.parts.js.map +1 -0
- package/dist/dev/ui/error-dialog/error-dialog.d.ts +35 -0
- package/dist/dev/ui/error-dialog/error-dialog.d.ts.map +1 -0
- package/dist/dev/ui/error-dialog/error-dialog.js +54 -0
- package/dist/dev/ui/error-dialog/error-dialog.js.map +1 -0
- package/dist/dev/ui/error-dialog/index.d.ts +2 -0
- package/dist/dev/ui/error-dialog/index.js +3 -0
- package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts +14 -0
- package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts.map +1 -0
- package/dist/dev/ui/fullscreen-button/fullscreen-button.js +47 -0
- package/dist/dev/ui/fullscreen-button/fullscreen-button.js.map +1 -0
- package/dist/dev/ui/fullscreen-button/index.d.ts +2 -0
- package/dist/dev/ui/fullscreen-button/index.js +3 -0
- package/dist/dev/ui/hooks/use-button.d.ts +40 -0
- package/dist/dev/ui/hooks/use-button.d.ts.map +1 -0
- package/dist/dev/ui/hooks/use-button.js +46 -0
- package/dist/dev/ui/hooks/use-button.js.map +1 -0
- package/dist/dev/ui/mute-button/index.d.ts +2 -0
- package/dist/dev/ui/mute-button/index.js +3 -0
- package/dist/dev/ui/mute-button/mute-button.d.ts +17 -0
- package/dist/dev/ui/mute-button/mute-button.d.ts.map +1 -0
- package/dist/dev/ui/mute-button/mute-button.js +50 -0
- package/dist/dev/ui/mute-button/mute-button.js.map +1 -0
- package/dist/dev/ui/pip-button/index.d.ts +2 -0
- package/dist/dev/ui/pip-button/index.js +3 -0
- package/dist/dev/ui/pip-button/pip-button.d.ts +14 -0
- package/dist/dev/ui/pip-button/pip-button.d.ts.map +1 -0
- package/dist/dev/ui/pip-button/pip-button.js +47 -0
- package/dist/dev/ui/pip-button/pip-button.js.map +1 -0
- package/dist/dev/ui/play-button/index.d.ts +2 -0
- package/dist/dev/ui/play-button/index.js +3 -0
- package/dist/dev/ui/play-button/play-button.d.ts +30 -0
- package/dist/dev/ui/play-button/play-button.d.ts.map +1 -0
- package/dist/dev/ui/play-button/play-button.js +63 -0
- package/dist/dev/ui/play-button/play-button.js.map +1 -0
- package/dist/dev/ui/poster/index.d.ts +2 -0
- package/dist/dev/ui/poster/index.js +3 -0
- package/dist/dev/ui/poster/poster.d.ts +28 -0
- package/dist/dev/ui/poster/poster.d.ts.map +1 -0
- package/dist/dev/ui/poster/poster.js +46 -0
- package/dist/dev/ui/poster/poster.js.map +1 -0
- package/dist/dev/ui/seek-button/index.d.ts +2 -0
- package/dist/dev/ui/seek-button/index.js +3 -0
- package/dist/dev/ui/seek-button/seek-button.d.ts +31 -0
- package/dist/dev/ui/seek-button/seek-button.d.ts.map +1 -0
- package/dist/dev/ui/seek-button/seek-button.js +65 -0
- package/dist/dev/ui/seek-button/seek-button.js.map +1 -0
- package/dist/dev/ui/time/index.d.ts +2 -0
- package/dist/dev/ui/time/index.js +3 -0
- package/dist/dev/ui/time/index.parts.d.ts +11 -0
- package/dist/dev/ui/time/index.parts.d.ts.map +1 -0
- package/dist/dev/ui/time/index.parts.js +15 -0
- package/dist/dev/ui/time/index.parts.js.map +1 -0
- package/dist/dev/ui/time/time-group.d.ts +29 -0
- package/dist/dev/ui/time/time-group.d.ts.map +1 -0
- package/dist/dev/ui/time/time-group.js +34 -0
- package/dist/dev/ui/time/time-group.js.map +1 -0
- package/dist/dev/ui/time/time-separator.d.ts +26 -0
- package/dist/dev/ui/time/time-separator.d.ts.map +1 -0
- package/dist/dev/ui/time/time-separator.js +34 -0
- package/dist/dev/ui/time/time-separator.js.map +1 -0
- package/dist/dev/ui/time/time-value.d.ts +24 -0
- package/dist/dev/ui/time/time-value.d.ts.map +1 -0
- package/dist/dev/ui/time/time-value.js +57 -0
- package/dist/dev/ui/time/time-value.js.map +1 -0
- package/dist/dev/utils/attach-media-element.js +12 -0
- package/dist/dev/utils/attach-media-element.js.map +1 -0
- package/dist/dev/utils/media-props.js +11 -0
- package/dist/dev/utils/media-props.js.map +1 -0
- package/dist/dev/utils/merge-props.d.ts +26 -0
- package/dist/dev/utils/merge-props.d.ts.map +1 -0
- package/dist/dev/utils/merge-props.js +85 -0
- package/dist/dev/utils/merge-props.js.map +1 -0
- package/dist/dev/utils/types.d.ts +27 -0
- package/dist/dev/utils/types.d.ts.map +1 -0
- package/dist/dev/utils/use-composed-refs.js +57 -0
- package/dist/dev/utils/use-composed-refs.js.map +1 -0
- package/dist/dev/utils/use-render.d.ts +45 -0
- package/dist/dev/utils/use-render.d.ts.map +1 -0
- package/dist/dev/utils/use-render.js +71 -0
- package/dist/dev/utils/use-render.js.map +1 -0
- package/package.json +58 -53
- package/dist/FrostedSkin-t8edr5LV.d.ts +0 -13
- package/dist/FrostedSkin-t8edr5LV.d.ts.map +0 -1
- package/dist/MinimalSkin-DzHkJgW-.d.ts +0 -13
- package/dist/MinimalSkin-DzHkJgW-.d.ts.map +0 -1
- package/dist/VolumeSlider-DmlupkvF.js +0 -1042
- package/dist/VolumeSlider-DmlupkvF.js.map +0 -1
- package/dist/frosted-0lXuIgHt.js +0 -156
- package/dist/frosted-0lXuIgHt.js.map +0 -1
- package/dist/icons-BqfV81R8.js +0 -316
- package/dist/icons-BqfV81R8.js.map +0 -1
- package/dist/icons.d.ts +0 -71
- package/dist/icons.d.ts.map +0 -1
- package/dist/icons.js +0 -3
- package/dist/index-CM70WSkA.d.ts +0 -36
- package/dist/index-CM70WSkA.d.ts.map +0 -1
- package/dist/index.d.ts +0 -312
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -89
- package/dist/index.js.map +0 -1
- package/dist/minimal-B-R9aRNe.js +0 -162
- package/dist/minimal-B-R9aRNe.js.map +0 -1
- package/dist/skins/frosted.css +0 -4
- package/dist/skins/frosted.d.ts +0 -2
- package/dist/skins/frosted.js +0 -9
- package/dist/skins/minimal.css +0 -4
- package/dist/skins/minimal.d.ts +0 -2
- package/dist/skins/minimal.js +0 -9
- package/dist/store-hGO5HE2A.js +0 -124
- package/dist/store-hGO5HE2A.js.map +0 -1
- package/dist/store.d.ts +0 -2
- package/dist/store.js +0 -6
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { usePlayer } from "../../player/context.js";
|
|
4
|
+
import { renderElement } from "../../utils/use-render.js";
|
|
5
|
+
import { useButton } from "../hooks/use-button.js";
|
|
6
|
+
import { logMissingFeature, selectVolume } from "@videojs/core/dom";
|
|
7
|
+
import { forwardRef, useState } from "react";
|
|
8
|
+
import { MuteButtonCore, MuteButtonDataAttrs } from "@videojs/core";
|
|
9
|
+
|
|
10
|
+
//#region src/ui/mute-button/mute-button.tsx
|
|
11
|
+
/**
|
|
12
|
+
* A button that toggles mute state.
|
|
13
|
+
*/
|
|
14
|
+
const MuteButton = forwardRef(function MuteButton(componentProps, forwardedRef) {
|
|
15
|
+
const { render, className, style, label, disabled, ...elementProps } = componentProps;
|
|
16
|
+
const volume = usePlayer(selectVolume);
|
|
17
|
+
const [core] = useState(() => new MuteButtonCore());
|
|
18
|
+
core.setProps({
|
|
19
|
+
label,
|
|
20
|
+
disabled
|
|
21
|
+
});
|
|
22
|
+
const { getButtonProps, buttonRef } = useButton({
|
|
23
|
+
displayName: "MuteButton",
|
|
24
|
+
onActivate: () => core.toggle(volume),
|
|
25
|
+
isDisabled: () => disabled || !volume
|
|
26
|
+
});
|
|
27
|
+
if (!volume) {
|
|
28
|
+
logMissingFeature("MuteButton", "volume");
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const state = core.getState(volume);
|
|
32
|
+
return renderElement("button", {
|
|
33
|
+
render,
|
|
34
|
+
className,
|
|
35
|
+
style
|
|
36
|
+
}, {
|
|
37
|
+
state,
|
|
38
|
+
stateAttrMap: MuteButtonDataAttrs,
|
|
39
|
+
ref: [forwardedRef, buttonRef],
|
|
40
|
+
props: [
|
|
41
|
+
core.getAttrs(state),
|
|
42
|
+
elementProps,
|
|
43
|
+
getButtonProps()
|
|
44
|
+
]
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
//#endregion
|
|
49
|
+
export { MuteButton };
|
|
50
|
+
//# sourceMappingURL=mute-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mute-button.js","names":[],"sources":["../../../../src/ui/mute-button/mute-button.tsx"],"sourcesContent":["'use client';\n\nimport { MuteButtonCore, MuteButtonDataAttrs } from '@videojs/core';\nimport { logMissingFeature, selectVolume } 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';\nimport { useButton } from '../hooks/use-button';\n\nexport interface MuteButtonProps extends UIComponentProps<'button', MuteButtonCore.State>, MuteButtonCore.Props {}\n\n/**\n * A button that toggles mute state.\n */\nexport const MuteButton = forwardRef(function MuteButton(\n componentProps: MuteButtonProps,\n forwardedRef: ForwardedRef<HTMLButtonElement>\n) {\n const { render, className, style, label, disabled, ...elementProps } = componentProps;\n\n const volume = usePlayer(selectVolume);\n\n const [core] = useState(() => new MuteButtonCore());\n core.setProps({ label, disabled });\n\n const { getButtonProps, buttonRef } = useButton({\n displayName: 'MuteButton',\n onActivate: () => core.toggle(volume!),\n isDisabled: () => disabled || !volume,\n });\n\n if (!volume) {\n if (__DEV__) logMissingFeature('MuteButton', 'volume');\n return null;\n }\n\n const state = core.getState(volume);\n\n return renderElement(\n 'button',\n { render, className, style },\n {\n state,\n stateAttrMap: MuteButtonDataAttrs,\n ref: [forwardedRef, buttonRef],\n props: [core.getAttrs(state), elementProps, getButtonProps()],\n }\n );\n});\n\nexport namespace MuteButton {\n export type Props = MuteButtonProps;\n export type State = MuteButtonCore.State;\n}\n"],"mappings":";;;;;;;;;;;;;AAiBA,MAAa,aAAa,WAAW,SAAS,WAC5C,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,OAAO,UAAU,GAAG,iBAAiB;CAEvE,MAAM,SAAS,UAAU,aAAa;CAEtC,MAAM,CAAC,QAAQ,eAAe,IAAI,gBAAgB,CAAC;AACnD,MAAK,SAAS;EAAE;EAAO;EAAU,CAAC;CAElC,MAAM,EAAE,gBAAgB,cAAc,UAAU;EAC9C,aAAa;EACb,kBAAkB,KAAK,OAAO,OAAQ;EACtC,kBAAkB,YAAY,CAAC;EAChC,CAAC;AAEF,KAAI,CAAC,QAAQ;AACE,oBAAkB,cAAc,SAAS;AACtD,SAAO;;CAGT,MAAM,QAAQ,KAAK,SAAS,OAAO;AAEnC,QAAO,cACL,UACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc;EACd,KAAK,CAAC,cAAc,UAAU;EAC9B,OAAO;GAAC,KAAK,SAAS,MAAM;GAAE;GAAc,gBAAgB;GAAC;EAC9D,CACF;EACD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { UIComponentProps } from "../../utils/types.js";
|
|
2
|
+
import * as react from "react";
|
|
3
|
+
import { PiPButtonCore } from "@videojs/core";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/pip-button/pip-button.d.ts
|
|
6
|
+
interface PiPButtonProps extends UIComponentProps<'button', PiPButtonCore.State>, PiPButtonCore.Props {}
|
|
7
|
+
declare const PiPButton: react.ForwardRefExoticComponent<Omit<PiPButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
|
|
8
|
+
declare namespace PiPButton {
|
|
9
|
+
type Props = PiPButtonProps;
|
|
10
|
+
type State = PiPButtonCore.State;
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { PiPButton, PiPButtonProps };
|
|
14
|
+
//# sourceMappingURL=pip-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pip-button.d.ts","names":[],"sources":["../../../../src/ui/pip-button/pip-button.tsx"],"mappings":";;;;;UAYiB,cAAA,SAAuB,gBAAA,WAA2B,aAAA,CAAc,KAAA,GAAQ,aAAA,CAAc,KAAA;AAAA,cAE1F,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,cAAA,WAAA,KAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,kBAoCL,SAAA;EAAA,KACH,KAAA,GAAQ,cAAA;EAAA,KACR,KAAA,GAAQ,aAAA,CAAc,KAAA;AAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { usePlayer } from "../../player/context.js";
|
|
4
|
+
import { renderElement } from "../../utils/use-render.js";
|
|
5
|
+
import { useButton } from "../hooks/use-button.js";
|
|
6
|
+
import { logMissingFeature, selectPiP } from "@videojs/core/dom";
|
|
7
|
+
import { forwardRef, useState } from "react";
|
|
8
|
+
import { PiPButtonCore, PiPButtonDataAttrs } from "@videojs/core";
|
|
9
|
+
|
|
10
|
+
//#region src/ui/pip-button/pip-button.tsx
|
|
11
|
+
const PiPButton = forwardRef(function PiPButton(componentProps, forwardedRef) {
|
|
12
|
+
const { render, className, style, label, disabled, ...elementProps } = componentProps;
|
|
13
|
+
const pip = usePlayer(selectPiP);
|
|
14
|
+
const [core] = useState(() => new PiPButtonCore());
|
|
15
|
+
core.setProps({
|
|
16
|
+
label,
|
|
17
|
+
disabled
|
|
18
|
+
});
|
|
19
|
+
const { getButtonProps, buttonRef } = useButton({
|
|
20
|
+
displayName: "PiPButton",
|
|
21
|
+
onActivate: () => core.toggle(pip),
|
|
22
|
+
isDisabled: () => disabled || !pip
|
|
23
|
+
});
|
|
24
|
+
if (!pip) {
|
|
25
|
+
logMissingFeature("PiPButton", "pip");
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
const state = core.getState(pip);
|
|
29
|
+
return renderElement("button", {
|
|
30
|
+
render,
|
|
31
|
+
className,
|
|
32
|
+
style
|
|
33
|
+
}, {
|
|
34
|
+
state,
|
|
35
|
+
stateAttrMap: PiPButtonDataAttrs,
|
|
36
|
+
ref: [forwardedRef, buttonRef],
|
|
37
|
+
props: [
|
|
38
|
+
core.getAttrs(state),
|
|
39
|
+
elementProps,
|
|
40
|
+
getButtonProps()
|
|
41
|
+
]
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
//#endregion
|
|
46
|
+
export { PiPButton };
|
|
47
|
+
//# sourceMappingURL=pip-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pip-button.js","names":[],"sources":["../../../../src/ui/pip-button/pip-button.tsx"],"sourcesContent":["'use client';\n\nimport { PiPButtonCore, PiPButtonDataAttrs } from '@videojs/core';\nimport { logMissingFeature, selectPiP } 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';\nimport { useButton } from '../hooks/use-button';\n\nexport interface PiPButtonProps extends UIComponentProps<'button', PiPButtonCore.State>, PiPButtonCore.Props {}\n\nexport const PiPButton = forwardRef(function PiPButton(\n componentProps: PiPButtonProps,\n forwardedRef: ForwardedRef<HTMLButtonElement>\n) {\n const { render, className, style, label, disabled, ...elementProps } = componentProps;\n\n const pip = usePlayer(selectPiP);\n\n const [core] = useState(() => new PiPButtonCore());\n core.setProps({ label, disabled });\n\n const { getButtonProps, buttonRef } = useButton({\n displayName: 'PiPButton',\n onActivate: () => core.toggle(pip!),\n isDisabled: () => disabled || !pip,\n });\n\n if (!pip) {\n if (__DEV__) logMissingFeature('PiPButton', 'pip');\n return null;\n }\n\n const state = core.getState(pip);\n\n return renderElement(\n 'button',\n { render, className, style },\n {\n state,\n stateAttrMap: PiPButtonDataAttrs,\n ref: [forwardedRef, buttonRef],\n props: [core.getAttrs(state), elementProps, getButtonProps()],\n }\n );\n});\n\nexport namespace PiPButton {\n export type Props = PiPButtonProps;\n export type State = PiPButtonCore.State;\n}\n"],"mappings":";;;;;;;;;;AAcA,MAAa,YAAY,WAAW,SAAS,UAC3C,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,OAAO,UAAU,GAAG,iBAAiB;CAEvE,MAAM,MAAM,UAAU,UAAU;CAEhC,MAAM,CAAC,QAAQ,eAAe,IAAI,eAAe,CAAC;AAClD,MAAK,SAAS;EAAE;EAAO;EAAU,CAAC;CAElC,MAAM,EAAE,gBAAgB,cAAc,UAAU;EAC9C,aAAa;EACb,kBAAkB,KAAK,OAAO,IAAK;EACnC,kBAAkB,YAAY,CAAC;EAChC,CAAC;AAEF,KAAI,CAAC,KAAK;AACK,oBAAkB,aAAa,MAAM;AAClD,SAAO;;CAGT,MAAM,QAAQ,KAAK,SAAS,IAAI;AAEhC,QAAO,cACL,UACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc;EACd,KAAK,CAAC,cAAc,UAAU;EAC9B,OAAO;GAAC,KAAK,SAAS,MAAM;GAAE;GAAc,gBAAgB;GAAC;EAC9D,CACF;EACD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { UIComponentProps } from "../../utils/types.js";
|
|
2
|
+
import * as react from "react";
|
|
3
|
+
import { PlayButtonCore } from "@videojs/core";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/play-button/play-button.d.ts
|
|
6
|
+
interface PlayButtonProps extends UIComponentProps<'button', PlayButtonCore.State>, PlayButtonCore.Props {}
|
|
7
|
+
/**
|
|
8
|
+
* A button that toggles playback.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <PlayButton />
|
|
13
|
+
*
|
|
14
|
+
* <PlayButton
|
|
15
|
+
* render={(props, state) => (
|
|
16
|
+
* <button {...props}>
|
|
17
|
+
* {state.paused ? <PlayIcon /> : <PauseIcon />}
|
|
18
|
+
* </button>
|
|
19
|
+
* )}
|
|
20
|
+
* />
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
declare const PlayButton: react.ForwardRefExoticComponent<Omit<PlayButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
|
|
24
|
+
declare namespace PlayButton {
|
|
25
|
+
type Props = PlayButtonProps;
|
|
26
|
+
type State = PlayButtonCore.State;
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { PlayButton, PlayButtonProps };
|
|
30
|
+
//# sourceMappingURL=play-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"play-button.d.ts","names":[],"sources":["../../../../src/ui/play-button/play-button.tsx"],"mappings":";;;;;UAYiB,eAAA,SAAwB,gBAAA,WAA2B,cAAA,CAAe,KAAA,GAAQ,cAAA,CAAe,KAAA;;AAA1G;;;;;;;;;;;;;;;cAkBa,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,eAAA,WAAA,KAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,kBAoCN,UAAA;EAAA,KACH,KAAA,GAAQ,eAAA;EAAA,KACR,KAAA,GAAQ,cAAA,CAAe,KAAA;AAAA"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { usePlayer } from "../../player/context.js";
|
|
4
|
+
import { renderElement } from "../../utils/use-render.js";
|
|
5
|
+
import { useButton } from "../hooks/use-button.js";
|
|
6
|
+
import { logMissingFeature, selectPlayback } from "@videojs/core/dom";
|
|
7
|
+
import { forwardRef, useState } from "react";
|
|
8
|
+
import { PlayButtonCore, PlayButtonDataAttrs } from "@videojs/core";
|
|
9
|
+
|
|
10
|
+
//#region src/ui/play-button/play-button.tsx
|
|
11
|
+
/**
|
|
12
|
+
* A button that toggles playback.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* <PlayButton />
|
|
17
|
+
*
|
|
18
|
+
* <PlayButton
|
|
19
|
+
* render={(props, state) => (
|
|
20
|
+
* <button {...props}>
|
|
21
|
+
* {state.paused ? <PlayIcon /> : <PauseIcon />}
|
|
22
|
+
* </button>
|
|
23
|
+
* )}
|
|
24
|
+
* />
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
const PlayButton = forwardRef(function PlayButton(componentProps, forwardedRef) {
|
|
28
|
+
const { render, className, style, label, disabled, ...elementProps } = componentProps;
|
|
29
|
+
const playback = usePlayer(selectPlayback);
|
|
30
|
+
const [core] = useState(() => new PlayButtonCore());
|
|
31
|
+
core.setProps({
|
|
32
|
+
label,
|
|
33
|
+
disabled
|
|
34
|
+
});
|
|
35
|
+
const { getButtonProps, buttonRef } = useButton({
|
|
36
|
+
displayName: "PlayButton",
|
|
37
|
+
onActivate: () => core.toggle(playback),
|
|
38
|
+
isDisabled: () => disabled || !playback
|
|
39
|
+
});
|
|
40
|
+
if (!playback) {
|
|
41
|
+
logMissingFeature("PlayButton", "playback");
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
const state = core.getState(playback);
|
|
45
|
+
return renderElement("button", {
|
|
46
|
+
render,
|
|
47
|
+
className,
|
|
48
|
+
style
|
|
49
|
+
}, {
|
|
50
|
+
state,
|
|
51
|
+
stateAttrMap: PlayButtonDataAttrs,
|
|
52
|
+
ref: [forwardedRef, buttonRef],
|
|
53
|
+
props: [
|
|
54
|
+
core.getAttrs(state),
|
|
55
|
+
elementProps,
|
|
56
|
+
getButtonProps()
|
|
57
|
+
]
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
//#endregion
|
|
62
|
+
export { PlayButton };
|
|
63
|
+
//# sourceMappingURL=play-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"play-button.js","names":[],"sources":["../../../../src/ui/play-button/play-button.tsx"],"sourcesContent":["'use client';\n\nimport { PlayButtonCore, PlayButtonDataAttrs } 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';\nimport { useButton } from '../hooks/use-button';\n\nexport interface PlayButtonProps extends UIComponentProps<'button', PlayButtonCore.State>, PlayButtonCore.Props {}\n\n/**\n * A button that toggles playback.\n *\n * @example\n * ```tsx\n * <PlayButton />\n *\n * <PlayButton\n * render={(props, state) => (\n * <button {...props}>\n * {state.paused ? <PlayIcon /> : <PauseIcon />}\n * </button>\n * )}\n * />\n * ```\n */\nexport const PlayButton = forwardRef(function PlayButton(\n componentProps: PlayButtonProps,\n forwardedRef: ForwardedRef<HTMLButtonElement>\n) {\n const { render, className, style, label, disabled, ...elementProps } = componentProps;\n\n const playback = usePlayer(selectPlayback);\n\n const [core] = useState(() => new PlayButtonCore());\n core.setProps({ label, disabled });\n\n const { getButtonProps, buttonRef } = useButton({\n displayName: 'PlayButton',\n onActivate: () => core.toggle(playback!),\n isDisabled: () => disabled || !playback,\n });\n\n if (!playback) {\n if (__DEV__) logMissingFeature('PlayButton', 'playback');\n return null;\n }\n\n const state = core.getState(playback);\n\n return renderElement(\n 'button',\n { render, className, style },\n {\n state,\n stateAttrMap: PlayButtonDataAttrs,\n ref: [forwardedRef, buttonRef],\n props: [core.getAttrs(state), elementProps, getButtonProps()],\n }\n );\n});\n\nexport namespace PlayButton {\n export type Props = PlayButtonProps;\n export type State = PlayButtonCore.State;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,MAAa,aAAa,WAAW,SAAS,WAC5C,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,OAAO,UAAU,GAAG,iBAAiB;CAEvE,MAAM,WAAW,UAAU,eAAe;CAE1C,MAAM,CAAC,QAAQ,eAAe,IAAI,gBAAgB,CAAC;AACnD,MAAK,SAAS;EAAE;EAAO;EAAU,CAAC;CAElC,MAAM,EAAE,gBAAgB,cAAc,UAAU;EAC9C,aAAa;EACb,kBAAkB,KAAK,OAAO,SAAU;EACxC,kBAAkB,YAAY,CAAC;EAChC,CAAC;AAEF,KAAI,CAAC,UAAU;AACA,oBAAkB,cAAc,WAAW;AACxD,SAAO;;CAGT,MAAM,QAAQ,KAAK,SAAS,SAAS;AAErC,QAAO,cACL,UACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc;EACd,KAAK,CAAC,cAAc,UAAU;EAC9B,OAAO;GAAC,KAAK,SAAS,MAAM;GAAE;GAAc,gBAAgB;GAAC;EAC9D,CACF;EACD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { UIComponentProps } from "../../utils/types.js";
|
|
2
|
+
import * as react from "react";
|
|
3
|
+
import { PosterCore } from "@videojs/core";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/poster/poster.d.ts
|
|
6
|
+
interface PosterProps extends UIComponentProps<'img', PosterCore.State> {}
|
|
7
|
+
/**
|
|
8
|
+
* Displays the video poster image. Shows before playback starts, hides after.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <Poster src="poster.jpg" alt="Video description" />
|
|
13
|
+
*
|
|
14
|
+
* <Poster
|
|
15
|
+
* src="poster.jpg"
|
|
16
|
+
* alt="Video description"
|
|
17
|
+
* className={(state) => state.visible ? 'visible' : 'hidden'}
|
|
18
|
+
* />
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
declare const Poster: react.ForwardRefExoticComponent<Omit<PosterProps, "ref"> & react.RefAttributes<HTMLImageElement>>;
|
|
22
|
+
declare namespace Poster {
|
|
23
|
+
type Props = PosterProps;
|
|
24
|
+
type State = PosterCore.State;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { Poster, PosterProps };
|
|
28
|
+
//# sourceMappingURL=poster.d.ts.map
|
|
@@ -0,0 +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,kBA2BF,MAAA;EAAA,KACH,KAAA,GAAQ,WAAA;EAAA,KACR,KAAA,GAAQ,UAAA,CAAW,KAAA;AAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { usePlayer } from "../../player/context.js";
|
|
4
|
+
import { renderElement } from "../../utils/use-render.js";
|
|
5
|
+
import { logMissingFeature, selectPlayback } from "@videojs/core/dom";
|
|
6
|
+
import { forwardRef, useState } from "react";
|
|
7
|
+
import { PosterCore, PosterDataAttrs } from "@videojs/core";
|
|
8
|
+
|
|
9
|
+
//#region src/ui/poster/poster.tsx
|
|
10
|
+
/**
|
|
11
|
+
* Displays the video poster image. Shows before playback starts, hides after.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* <Poster src="poster.jpg" alt="Video description" />
|
|
16
|
+
*
|
|
17
|
+
* <Poster
|
|
18
|
+
* src="poster.jpg"
|
|
19
|
+
* alt="Video description"
|
|
20
|
+
* className={(state) => state.visible ? 'visible' : 'hidden'}
|
|
21
|
+
* />
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
const Poster = forwardRef(function Poster(componentProps, forwardedRef) {
|
|
25
|
+
const { render, className, style, ...elementProps } = componentProps;
|
|
26
|
+
const playback = usePlayer(selectPlayback);
|
|
27
|
+
const [core] = useState(() => new PosterCore());
|
|
28
|
+
if (!playback) {
|
|
29
|
+
logMissingFeature("Poster", "playback");
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
return renderElement("img", {
|
|
33
|
+
render,
|
|
34
|
+
className,
|
|
35
|
+
style
|
|
36
|
+
}, {
|
|
37
|
+
state: core.getState(playback),
|
|
38
|
+
stateAttrMap: PosterDataAttrs,
|
|
39
|
+
ref: [forwardedRef],
|
|
40
|
+
props: [elementProps]
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
//#endregion
|
|
45
|
+
export { Poster };
|
|
46
|
+
//# sourceMappingURL=poster.js.map
|
|
@@ -0,0 +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(playback),\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,QAAO,cACL,OACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE,OAAO,KAAK,SAAS,SAAS;EAC9B,cAAc;EACd,KAAK,CAAC,aAAa;EACnB,OAAO,CAAC,aAAa;EACtB,CACF;EACD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { UIComponentProps } from "../../utils/types.js";
|
|
2
|
+
import * as react from "react";
|
|
3
|
+
import { SeekButtonCore } from "@videojs/core";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/seek-button/seek-button.d.ts
|
|
6
|
+
interface SeekButtonProps extends UIComponentProps<'button', SeekButtonCore.State>, SeekButtonCore.Props {}
|
|
7
|
+
/**
|
|
8
|
+
* A button that seeks forward or backward by a configurable number of seconds.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <SeekButton seconds={-10} />
|
|
13
|
+
*
|
|
14
|
+
* <SeekButton
|
|
15
|
+
* seconds={30}
|
|
16
|
+
* render={(props, state) => (
|
|
17
|
+
* <button {...props}>
|
|
18
|
+
* {state.direction === 'backward' ? <RewindIcon /> : <FastForwardIcon />}
|
|
19
|
+
* </button>
|
|
20
|
+
* )}
|
|
21
|
+
* />
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
declare const SeekButton: react.ForwardRefExoticComponent<Omit<SeekButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
|
|
25
|
+
declare namespace SeekButton {
|
|
26
|
+
type Props = SeekButtonProps;
|
|
27
|
+
type State = SeekButtonCore.State;
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
export { SeekButton, SeekButtonProps };
|
|
31
|
+
//# sourceMappingURL=seek-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seek-button.d.ts","names":[],"sources":["../../../../src/ui/seek-button/seek-button.tsx"],"mappings":";;;;;UAYiB,eAAA,SAAwB,gBAAA,WAA2B,cAAA,CAAe,KAAA,GAAQ,cAAA,CAAe,KAAA;;AAA1G;;;;;;;;;;;;;;;AAmBA;cAAa,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,eAAA,WAAA,KAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,kBAoCN,UAAA;EAAA,KACH,KAAA,GAAQ,eAAA;EAAA,KACR,KAAA,GAAQ,cAAA,CAAe,KAAA;AAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { usePlayer } from "../../player/context.js";
|
|
4
|
+
import { renderElement } from "../../utils/use-render.js";
|
|
5
|
+
import { useButton } from "../hooks/use-button.js";
|
|
6
|
+
import { logMissingFeature, selectTime } from "@videojs/core/dom";
|
|
7
|
+
import { forwardRef, useState } from "react";
|
|
8
|
+
import { SeekButtonCore, SeekButtonDataAttrs } from "@videojs/core";
|
|
9
|
+
|
|
10
|
+
//#region src/ui/seek-button/seek-button.tsx
|
|
11
|
+
/**
|
|
12
|
+
* A button that seeks forward or backward by a configurable number of seconds.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* <SeekButton seconds={-10} />
|
|
17
|
+
*
|
|
18
|
+
* <SeekButton
|
|
19
|
+
* seconds={30}
|
|
20
|
+
* render={(props, state) => (
|
|
21
|
+
* <button {...props}>
|
|
22
|
+
* {state.direction === 'backward' ? <RewindIcon /> : <FastForwardIcon />}
|
|
23
|
+
* </button>
|
|
24
|
+
* )}
|
|
25
|
+
* />
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
const SeekButton = forwardRef(function SeekButton(componentProps, forwardedRef) {
|
|
29
|
+
const { render, className, style, seconds, label, disabled, ...elementProps } = componentProps;
|
|
30
|
+
const time = usePlayer(selectTime);
|
|
31
|
+
const [core] = useState(() => new SeekButtonCore());
|
|
32
|
+
core.setProps({
|
|
33
|
+
seconds,
|
|
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
|
+
});
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
//#endregion
|
|
64
|
+
export { SeekButton };
|
|
65
|
+
//# sourceMappingURL=seek-button.js.map
|
|
@@ -0,0 +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 { logMissingFeature, selectTime } 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';\nimport { useButton } from '../hooks/use-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 = forwardRef(function SeekButton(\n componentProps: SeekButtonProps,\n forwardedRef: ForwardedRef<HTMLButtonElement>\n) {\n const { render, className, style, seconds, label, disabled, ...elementProps } = componentProps;\n\n const time = usePlayer(selectTime);\n\n const [core] = useState(() => new SeekButtonCore());\n core.setProps({ seconds, label, disabled });\n\n const { getButtonProps, buttonRef } = useButton({\n displayName: 'SeekButton',\n onActivate: () => core.seek(time!),\n isDisabled: () => disabled || !time,\n });\n\n if (!time) {\n if (__DEV__) logMissingFeature('SeekButton', 'time');\n return null;\n }\n\n const state = core.getState(time);\n\n return renderElement(\n 'button',\n { render, className, style },\n {\n state,\n stateAttrMap: SeekButtonDataAttrs,\n ref: [forwardedRef, buttonRef],\n props: [core.getAttrs(state), elementProps, getButtonProps()],\n }\n );\n});\n\nexport namespace SeekButton {\n export type Props = SeekButtonProps;\n export type State = SeekButtonCore.State;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,MAAa,aAAa,WAAW,SAAS,WAC5C,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,SAAS,OAAO,UAAU,GAAG,iBAAiB;CAEhF,MAAM,OAAO,UAAU,WAAW;CAElC,MAAM,CAAC,QAAQ,eAAe,IAAI,gBAAgB,CAAC;AACnD,MAAK,SAAS;EAAE;EAAS;EAAO;EAAU,CAAC;CAE3C,MAAM,EAAE,gBAAgB,cAAc,UAAU;EAC9C,aAAa;EACb,kBAAkB,KAAK,KAAK,KAAM;EAClC,kBAAkB,YAAY,CAAC;EAChC,CAAC;AAEF,KAAI,CAAC,MAAM;AACI,oBAAkB,cAAc,OAAO;AACpD,SAAO;;CAGT,MAAM,QAAQ,KAAK,SAAS,KAAK;AAEjC,QAAO,cACL,UACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc;EACd,KAAK,CAAC,cAAc,UAAU;EAC9B,OAAO;GAAC,KAAK,SAAS,MAAM;GAAE;GAAc,gBAAgB;GAAC;EAC9D,CACF;EACD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Group, GroupProps } from "./time-group.js";
|
|
2
|
+
import { Separator, SeparatorProps } from "./time-separator.js";
|
|
3
|
+
import { Value, ValueProps } from "./time-value.js";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/time/index.parts.d.ts
|
|
6
|
+
declare namespace index_parts_d_exports {
|
|
7
|
+
export { Group, GroupProps, Separator, SeparatorProps, Value, ValueProps };
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { index_parts_d_exports };
|
|
11
|
+
//# sourceMappingURL=index.parts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.parts.d.ts","names":[],"sources":["../../../../src/ui/time/index.parts.ts"],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { Group } from "./time-group.js";
|
|
3
|
+
import { Separator } from "./time-separator.js";
|
|
4
|
+
import { Value } from "./time-value.js";
|
|
5
|
+
|
|
6
|
+
//#region src/ui/time/index.parts.ts
|
|
7
|
+
var index_parts_exports = /* @__PURE__ */ __exportAll({
|
|
8
|
+
Group: () => Group,
|
|
9
|
+
Separator: () => Separator,
|
|
10
|
+
Value: () => Value
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
//#endregion
|
|
14
|
+
export { index_parts_exports };
|
|
15
|
+
//# sourceMappingURL=index.parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.parts.js","names":[],"sources":["../../../../src/ui/time/index.parts.ts"],"sourcesContent":["export { Group, type GroupProps } from './time-group';\nexport { Separator, type SeparatorProps } from './time-separator';\nexport { Value, type ValueProps } from './time-value';\n"],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { UIComponentProps } from "../../utils/types.js";
|
|
2
|
+
import * as react from "react";
|
|
3
|
+
import { ReactNode } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/time/time-group.d.ts
|
|
6
|
+
type GroupState = Record<string, never>;
|
|
7
|
+
interface GroupProps extends UIComponentProps<'span', GroupState> {
|
|
8
|
+
/** Time value components to render inside the group. */
|
|
9
|
+
children?: ReactNode | undefined;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Container for composed time displays. Renders a `<span>` element.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* <Time.Group>
|
|
17
|
+
* <Time.Value type="current" />
|
|
18
|
+
* <Time.Separator />
|
|
19
|
+
* <Time.Value type="duration" />
|
|
20
|
+
* </Time.Group>
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
declare const Group: react.ForwardRefExoticComponent<Omit<GroupProps, "ref"> & react.RefAttributes<HTMLSpanElement>>;
|
|
24
|
+
declare namespace Group {
|
|
25
|
+
type Props = GroupProps;
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { Group, GroupProps };
|
|
29
|
+
//# sourceMappingURL=time-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-group.d.ts","names":[],"sources":["../../../../src/ui/time/time-group.tsx"],"mappings":";;;;;KASK,UAAA,GAAa,MAAA;AAAA,UAED,UAAA,SAAmB,gBAAA,SAAyB,UAAA;;EAE3D,QAAA,GAAW,SAAA;AAAA;;;;AAFb;;;;;;;;;cAiBa,KAAA,EAAK,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,UAAA,WAAA,KAAA,CAAA,aAAA,CAAA,eAAA;AAAA,kBAmBD,KAAA;EAAA,KACH,KAAA,GAAQ,UAAA;AAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { renderElement } from "../../utils/use-render.js";
|
|
4
|
+
import { forwardRef } from "react";
|
|
5
|
+
|
|
6
|
+
//#region src/ui/time/time-group.tsx
|
|
7
|
+
/**
|
|
8
|
+
* Container for composed time displays. Renders a `<span>` element.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <Time.Group>
|
|
13
|
+
* <Time.Value type="current" />
|
|
14
|
+
* <Time.Separator />
|
|
15
|
+
* <Time.Value type="duration" />
|
|
16
|
+
* </Time.Group>
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
const Group = forwardRef(function Group(componentProps, forwardedRef) {
|
|
20
|
+
const { render, className, style, children, ...elementProps } = componentProps;
|
|
21
|
+
return renderElement("span", {
|
|
22
|
+
render,
|
|
23
|
+
className,
|
|
24
|
+
style
|
|
25
|
+
}, {
|
|
26
|
+
state: {},
|
|
27
|
+
ref: [forwardedRef],
|
|
28
|
+
props: [{ children }, elementProps]
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
//#endregion
|
|
33
|
+
export { Group };
|
|
34
|
+
//# sourceMappingURL=time-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-group.js","names":[],"sources":["../../../../src/ui/time/time-group.tsx"],"sourcesContent":["'use client';\n\nimport type { ForwardedRef, ReactNode } from 'react';\nimport { forwardRef } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\n\n// Empty state for Group (no dynamic state)\ntype GroupState = Record<string, never>;\n\nexport interface GroupProps extends UIComponentProps<'span', GroupState> {\n /** Time value components to render inside the group. */\n children?: ReactNode | undefined;\n}\n\n/**\n * Container for composed time displays. Renders a `<span>` element.\n *\n * @example\n * ```tsx\n * <Time.Group>\n * <Time.Value type=\"current\" />\n * <Time.Separator />\n * <Time.Value type=\"duration\" />\n * </Time.Group>\n * ```\n */\nexport const Group = forwardRef(function Group(\n componentProps: GroupProps,\n forwardedRef: ForwardedRef<HTMLSpanElement>\n) {\n const { render, className, style, children, ...elementProps } = componentProps;\n\n const state: GroupState = {};\n\n return renderElement(\n 'span',\n { render, className, style },\n {\n state,\n ref: [forwardedRef],\n props: [{ children }, elementProps],\n }\n );\n});\n\nexport namespace Group {\n export type Props = GroupProps;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AA4BA,MAAa,QAAQ,WAAW,SAAS,MACvC,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,UAAU,GAAG,iBAAiB;AAIhE,QAAO,cACL,QACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE,OANsB,EAAE;EAOxB,KAAK,CAAC,aAAa;EACnB,OAAO,CAAC,EAAE,UAAU,EAAE,aAAa;EACpC,CACF;EACD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { UIComponentProps } from "../../utils/types.js";
|
|
2
|
+
import * as react from "react";
|
|
3
|
+
import { ReactNode } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/time/time-separator.d.ts
|
|
6
|
+
type SeparatorState = Record<string, never>;
|
|
7
|
+
interface SeparatorProps extends UIComponentProps<'span', SeparatorState> {
|
|
8
|
+
/** Separator content. Defaults to "/". */
|
|
9
|
+
children?: ReactNode | undefined;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Divider between time values. Hidden from screen readers.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* <Time.Separator />
|
|
17
|
+
* <Time.Separator> of </Time.Separator>
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
declare const Separator: react.ForwardRefExoticComponent<Omit<SeparatorProps, "ref"> & react.RefAttributes<HTMLSpanElement>>;
|
|
21
|
+
declare namespace Separator {
|
|
22
|
+
type Props = SeparatorProps;
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { Separator, SeparatorProps };
|
|
26
|
+
//# sourceMappingURL=time-separator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-separator.d.ts","names":[],"sources":["../../../../src/ui/time/time-separator.tsx"],"mappings":";;;;;KASK,cAAA,GAAiB,MAAA;AAAA,UAEL,cAAA,SAAuB,gBAAA,SAAyB,cAAA;;EAE/D,QAAA,GAAW,SAAA;AAAA;;;;AAFb;;;;;;cAca,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,cAAA,WAAA,KAAA,CAAA,aAAA,CAAA,eAAA;AAAA,kBAmBL,SAAA;EAAA,KACH,KAAA,GAAQ,cAAA;AAAA"}
|