@videojs/react 10.0.0-alpha.3 → 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/icons/dist/react/default/captions-off.js +66 -0
- package/dist/default/icons/dist/react/default/captions-off.js.map +1 -0
- package/dist/default/icons/dist/react/default/captions-on.js +19 -0
- package/dist/default/icons/dist/react/default/captions-on.js.map +1 -0
- package/dist/default/icons/dist/react/default/fullscreen-enter.js +19 -0
- package/dist/default/icons/dist/react/default/fullscreen-enter.js.map +1 -0
- package/dist/default/icons/dist/react/default/fullscreen-exit.js +19 -0
- package/dist/default/icons/dist/react/default/fullscreen-exit.js.map +1 -0
- package/dist/default/icons/dist/react/default/pause.js +30 -0
- package/dist/default/icons/dist/react/default/pause.js.map +1 -0
- package/dist/default/icons/dist/react/default/pip.js +26 -0
- package/dist/default/icons/dist/react/default/pip.js.map +1 -0
- package/dist/default/icons/dist/react/default/play.js +19 -0
- package/dist/default/icons/dist/react/default/play.js.map +1 -0
- package/dist/default/icons/dist/react/default/restart.js +22 -0
- package/dist/default/icons/dist/react/default/restart.js.map +1 -0
- package/dist/default/icons/dist/react/default/seek.js +19 -0
- package/dist/default/icons/dist/react/default/seek.js.map +1 -0
- package/dist/default/icons/dist/react/default/spinner.js +149 -0
- package/dist/default/icons/dist/react/default/spinner.js.map +1 -0
- package/dist/default/icons/dist/react/default/volume-high.js +22 -0
- package/dist/default/icons/dist/react/default/volume-high.js.map +1 -0
- package/dist/default/icons/dist/react/default/volume-low.js +19 -0
- package/dist/default/icons/dist/react/default/volume-low.js.map +1 -0
- package/dist/default/icons/dist/react/default/volume-off.js +19 -0
- package/dist/default/icons/dist/react/default/volume-off.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/captions-off.js +66 -0
- package/dist/default/icons/dist/react/minimal/captions-off.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/captions-on.js +19 -0
- package/dist/default/icons/dist/react/minimal/captions-on.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/fullscreen-enter.js +29 -0
- package/dist/default/icons/dist/react/minimal/fullscreen-enter.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/fullscreen-exit.js +29 -0
- package/dist/default/icons/dist/react/minimal/fullscreen-exit.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/pause.js +30 -0
- package/dist/default/icons/dist/react/minimal/pause.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/pip.js +26 -0
- package/dist/default/icons/dist/react/minimal/pip.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/play.js +19 -0
- package/dist/default/icons/dist/react/minimal/play.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/restart.js +22 -0
- package/dist/default/icons/dist/react/minimal/restart.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/seek.js +19 -0
- package/dist/default/icons/dist/react/minimal/seek.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/spinner.js +149 -0
- package/dist/default/icons/dist/react/minimal/spinner.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/volume-high.js +22 -0
- package/dist/default/icons/dist/react/minimal/volume-high.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/volume-low.js +19 -0
- package/dist/default/icons/dist/react/minimal/volume-low.js.map +1 -0
- package/dist/default/icons/dist/react/minimal/volume-off.js +19 -0
- package/dist/default/icons/dist/react/minimal/volume-off.js.map +1 -0
- package/dist/default/index.js +10 -2
- 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 -1
- package/dist/default/presets/audio/skin.css +1 -0
- package/dist/default/presets/background/index.js +2 -1
- package/dist/default/presets/background/skin.css +21 -2
- package/dist/default/presets/background/skin.js +7 -2
- package/dist/default/presets/background/skin.js.map +1 -1
- package/dist/default/presets/video/index.js +2 -1
- package/dist/default/presets/video/minimal-skin.css +178 -53
- package/dist/default/presets/video/minimal-skin.js +74 -89
- package/dist/default/presets/video/minimal-skin.js.map +1 -1
- package/dist/default/presets/video/minimal-skin.tailwind.js +137 -106
- 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 +74 -89
- package/dist/default/presets/video/skin.js.map +1 -1
- package/dist/default/presets/video/skin.tailwind.js +134 -105
- 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/icons/dist/react/default/captions-off.js +66 -0
- package/dist/dev/icons/dist/react/default/captions-off.js.map +1 -0
- package/dist/dev/icons/dist/react/default/captions-on.js +19 -0
- package/dist/dev/icons/dist/react/default/captions-on.js.map +1 -0
- package/dist/dev/icons/dist/react/default/fullscreen-enter.js +19 -0
- package/dist/dev/icons/dist/react/default/fullscreen-enter.js.map +1 -0
- package/dist/dev/icons/dist/react/default/fullscreen-exit.js +19 -0
- package/dist/dev/icons/dist/react/default/fullscreen-exit.js.map +1 -0
- package/dist/dev/icons/dist/react/default/pause.js +30 -0
- package/dist/dev/icons/dist/react/default/pause.js.map +1 -0
- package/dist/dev/icons/dist/react/default/pip.js +26 -0
- package/dist/dev/icons/dist/react/default/pip.js.map +1 -0
- package/dist/dev/icons/dist/react/default/play.js +19 -0
- package/dist/dev/icons/dist/react/default/play.js.map +1 -0
- package/dist/dev/icons/dist/react/default/restart.js +22 -0
- package/dist/dev/icons/dist/react/default/restart.js.map +1 -0
- package/dist/dev/icons/dist/react/default/seek.js +19 -0
- package/dist/dev/icons/dist/react/default/seek.js.map +1 -0
- package/dist/dev/icons/dist/react/default/spinner.js +149 -0
- package/dist/dev/icons/dist/react/default/spinner.js.map +1 -0
- package/dist/dev/icons/dist/react/default/volume-high.js +22 -0
- package/dist/dev/icons/dist/react/default/volume-high.js.map +1 -0
- package/dist/dev/icons/dist/react/default/volume-low.js +19 -0
- package/dist/dev/icons/dist/react/default/volume-low.js.map +1 -0
- package/dist/dev/icons/dist/react/default/volume-off.js +19 -0
- package/dist/dev/icons/dist/react/default/volume-off.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/captions-off.js +66 -0
- package/dist/dev/icons/dist/react/minimal/captions-off.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/captions-on.js +19 -0
- package/dist/dev/icons/dist/react/minimal/captions-on.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js +29 -0
- package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js +29 -0
- package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/pause.js +30 -0
- package/dist/dev/icons/dist/react/minimal/pause.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/pip.js +26 -0
- package/dist/dev/icons/dist/react/minimal/pip.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/play.js +19 -0
- package/dist/dev/icons/dist/react/minimal/play.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/restart.js +22 -0
- package/dist/dev/icons/dist/react/minimal/restart.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/seek.js +19 -0
- package/dist/dev/icons/dist/react/minimal/seek.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/spinner.js +149 -0
- package/dist/dev/icons/dist/react/minimal/spinner.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/volume-high.js +22 -0
- package/dist/dev/icons/dist/react/minimal/volume-high.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/volume-low.js +19 -0
- package/dist/dev/icons/dist/react/minimal/volume-low.js.map +1 -0
- package/dist/dev/icons/dist/react/minimal/volume-off.js +19 -0
- package/dist/dev/icons/dist/react/minimal/volume-off.js.map +1 -0
- package/dist/dev/index.d.ts +20 -2
- package/dist/dev/index.js +10 -2
- 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 -1
- package/dist/dev/presets/audio/index.js +2 -1
- package/dist/dev/presets/audio/skin.css +1 -0
- package/dist/dev/presets/background/index.d.ts +2 -1
- package/dist/dev/presets/background/index.js +2 -1
- package/dist/dev/presets/background/skin.css +21 -2
- package/dist/dev/presets/background/skin.d.ts.map +1 -1
- package/dist/dev/presets/background/skin.js +7 -2
- package/dist/dev/presets/background/skin.js.map +1 -1
- package/dist/dev/presets/video/index.d.ts +2 -1
- package/dist/dev/presets/video/index.js +2 -1
- 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 +74 -89
- 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 +137 -106
- 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 +74 -89
- 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 +134 -105
- 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 +11 -20
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { renderElement } from "../../utils/use-render.js";
|
|
4
|
+
import { useSlider } from "../hooks/use-slider.js";
|
|
5
|
+
import { SliderProvider } from "./context.js";
|
|
6
|
+
import { getSliderCSSVars } from "@videojs/core/dom";
|
|
7
|
+
import { forwardRef, useState } from "react";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
import { SliderCore, SliderDataAttrs } from "@videojs/core";
|
|
10
|
+
|
|
11
|
+
//#region src/ui/slider/slider-root.tsx
|
|
12
|
+
const SliderRoot = forwardRef(function SliderRoot(componentProps, forwardedRef) {
|
|
13
|
+
const { render, className, style, label, min, max, step, largeStep, orientation, disabled, thumbAlignment, value = 0, onValueChange, onValueCommit, onDragStart, onDragEnd, ...elementProps } = componentProps;
|
|
14
|
+
const [core] = useState(() => new SliderCore());
|
|
15
|
+
core.setProps({
|
|
16
|
+
label,
|
|
17
|
+
min,
|
|
18
|
+
max,
|
|
19
|
+
step,
|
|
20
|
+
largeStep,
|
|
21
|
+
orientation,
|
|
22
|
+
disabled,
|
|
23
|
+
thumbAlignment
|
|
24
|
+
});
|
|
25
|
+
const { state, cssVars, rootRef, thumbRef: sliderThumbRef, rootProps, thumbProps } = useSlider({
|
|
26
|
+
computeState: (input) => {
|
|
27
|
+
core.setInput(input);
|
|
28
|
+
return core.getSliderState(value);
|
|
29
|
+
},
|
|
30
|
+
getPercent: () => core.percentFromValue(value),
|
|
31
|
+
getStepPercent: () => core.getStepPercent(),
|
|
32
|
+
getLargeStepPercent: () => core.getLargeStepPercent(),
|
|
33
|
+
orientation,
|
|
34
|
+
disabled,
|
|
35
|
+
adjustPercent: (rawPercent, thumbSize, trackSize) => core.adjustPercentForAlignment(rawPercent, thumbSize, trackSize),
|
|
36
|
+
getCSSVars: getSliderCSSVars,
|
|
37
|
+
onValueChange: (percent) => onValueChange?.(core.valueFromPercent(percent)),
|
|
38
|
+
onValueCommit: (percent) => onValueCommit?.(core.valueFromPercent(percent)),
|
|
39
|
+
onDragStart,
|
|
40
|
+
onDragEnd
|
|
41
|
+
});
|
|
42
|
+
return /* @__PURE__ */ jsx(SliderProvider, {
|
|
43
|
+
value: {
|
|
44
|
+
state,
|
|
45
|
+
pointerValue: core.valueFromPercent(state.pointerPercent),
|
|
46
|
+
thumbRef: sliderThumbRef,
|
|
47
|
+
thumbProps,
|
|
48
|
+
stateAttrMap: SliderDataAttrs,
|
|
49
|
+
getAttrs: (sliderState) => core.getAttrs(sliderState),
|
|
50
|
+
formatValue: void 0
|
|
51
|
+
},
|
|
52
|
+
children: renderElement("div", {
|
|
53
|
+
render,
|
|
54
|
+
className,
|
|
55
|
+
style
|
|
56
|
+
}, {
|
|
57
|
+
state,
|
|
58
|
+
stateAttrMap: SliderDataAttrs,
|
|
59
|
+
ref: [forwardedRef, rootRef],
|
|
60
|
+
props: [
|
|
61
|
+
{ style: cssVars },
|
|
62
|
+
rootProps,
|
|
63
|
+
elementProps
|
|
64
|
+
]
|
|
65
|
+
})
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
//#endregion
|
|
70
|
+
export { SliderRoot };
|
|
71
|
+
//# sourceMappingURL=slider-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-root.js","names":[],"sources":["../../../../src/ui/slider/slider-root.tsx"],"sourcesContent":["'use client';\n\nimport { SliderCore, SliderDataAttrs } from '@videojs/core';\nimport { getSliderCSSVars } from '@videojs/core/dom';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef, useState } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useSlider } from '../hooks/use-slider';\nimport { SliderProvider } from './context';\n\nexport interface SliderRootProps extends UIComponentProps<'div', SliderCore.State>, SliderCore.Props {\n onValueChange?: ((value: number) => void) | undefined;\n onValueCommit?: ((value: number) => void) | undefined;\n onDragStart?: (() => void) | undefined;\n onDragEnd?: (() => void) | undefined;\n}\n\nexport const SliderRoot = forwardRef(function SliderRoot(\n componentProps: SliderRootProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const {\n render,\n className,\n style,\n label,\n min,\n max,\n step,\n largeStep,\n orientation,\n disabled,\n thumbAlignment,\n value = 0,\n onValueChange,\n onValueCommit,\n onDragStart,\n onDragEnd,\n ...elementProps\n } = componentProps;\n\n const [core] = useState(() => new SliderCore());\n core.setProps({ label, min, max, step, largeStep, orientation, disabled, thumbAlignment });\n\n const {\n state,\n cssVars,\n rootRef,\n thumbRef: sliderThumbRef,\n rootProps,\n thumbProps,\n } = useSlider({\n computeState: (input) => {\n core.setInput(input);\n return core.getSliderState(value);\n },\n getPercent: () => core.percentFromValue(value),\n getStepPercent: () => core.getStepPercent(),\n getLargeStepPercent: () => core.getLargeStepPercent(),\n orientation,\n disabled,\n adjustPercent: (rawPercent, thumbSize, trackSize) =>\n core.adjustPercentForAlignment(rawPercent, thumbSize, trackSize),\n getCSSVars: getSliderCSSVars,\n onValueChange: (percent) => onValueChange?.(core.valueFromPercent(percent)),\n onValueCommit: (percent) => onValueCommit?.(core.valueFromPercent(percent)),\n onDragStart,\n onDragEnd,\n });\n\n return (\n <SliderProvider\n value={{\n state,\n pointerValue: core.valueFromPercent(state.pointerPercent),\n thumbRef: sliderThumbRef,\n thumbProps,\n stateAttrMap: SliderDataAttrs,\n getAttrs: (sliderState) => core.getAttrs(sliderState),\n formatValue: undefined,\n }}\n >\n {renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: SliderDataAttrs,\n ref: [forwardedRef, rootRef],\n props: [{ style: cssVars }, rootProps, elementProps],\n }\n )}\n </SliderProvider>\n );\n});\n\nexport namespace SliderRoot {\n export type Props = SliderRootProps;\n export type State = SliderCore.State;\n}\n"],"mappings":";;;;;;;;;;;AAmBA,MAAa,aAAa,WAAW,SAAS,WAC5C,gBACA,cACA;CACA,MAAM,EACJ,QACA,WACA,OACA,OACA,KACA,KACA,MACA,WACA,aACA,UACA,gBACA,QAAQ,GACR,eACA,eACA,aACA,WACA,GAAG,iBACD;CAEJ,MAAM,CAAC,QAAQ,eAAe,IAAI,YAAY,CAAC;AAC/C,MAAK,SAAS;EAAE;EAAO;EAAK;EAAK;EAAM;EAAW;EAAa;EAAU;EAAgB,CAAC;CAE1F,MAAM,EACJ,OACA,SACA,SACA,UAAU,gBACV,WACA,eACE,UAAU;EACZ,eAAe,UAAU;AACvB,QAAK,SAAS,MAAM;AACpB,UAAO,KAAK,eAAe,MAAM;;EAEnC,kBAAkB,KAAK,iBAAiB,MAAM;EAC9C,sBAAsB,KAAK,gBAAgB;EAC3C,2BAA2B,KAAK,qBAAqB;EACrD;EACA;EACA,gBAAgB,YAAY,WAAW,cACrC,KAAK,0BAA0B,YAAY,WAAW,UAAU;EAClE,YAAY;EACZ,gBAAgB,YAAY,gBAAgB,KAAK,iBAAiB,QAAQ,CAAC;EAC3E,gBAAgB,YAAY,gBAAgB,KAAK,iBAAiB,QAAQ,CAAC;EAC3E;EACA;EACD,CAAC;AAEF,QACE,oBAAC;EACC,OAAO;GACL;GACA,cAAc,KAAK,iBAAiB,MAAM,eAAe;GACzD,UAAU;GACV;GACA,cAAc;GACd,WAAW,gBAAgB,KAAK,SAAS,YAAY;GACrD,aAAa;GACd;YAEA,cACC,OACA;GAAE;GAAQ;GAAW;GAAO,EAC5B;GACE;GACA,cAAc;GACd,KAAK,CAAC,cAAc,QAAQ;GAC5B,OAAO;IAAC,EAAE,OAAO,SAAS;IAAE;IAAW;IAAa;GACrD,CACF;GACc;EAEnB"}
|
|
@@ -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-thumb.d.ts
|
|
6
|
+
interface SliderThumbProps extends UIComponentProps<'div', SliderState> {}
|
|
7
|
+
/** Draggable handle for setting the slider value. Receives focus and handles keyboard interaction. */
|
|
8
|
+
declare const SliderThumb: react.ForwardRefExoticComponent<Omit<SliderThumbProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
9
|
+
declare namespace SliderThumb {
|
|
10
|
+
type Props = SliderThumbProps;
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { SliderThumb, SliderThumbProps };
|
|
14
|
+
//# sourceMappingURL=slider-thumb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-thumb.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-thumb.tsx"],"mappings":";;;;;UAUiB,gBAAA,SAAyB,gBAAA,QAAwB,WAAA;;cAGrD,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,gBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBAsBP,WAAA;EAAA,KACH,KAAA,GAAQ,gBAAA;AAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { renderElement } from "../../utils/use-render.js";
|
|
4
|
+
import { useSliderContext } from "./context.js";
|
|
5
|
+
import { forwardRef } from "react";
|
|
6
|
+
|
|
7
|
+
//#region src/ui/slider/slider-thumb.tsx
|
|
8
|
+
/** Draggable handle for setting the slider value. Receives focus and handles keyboard interaction. */
|
|
9
|
+
const SliderThumb = forwardRef(function SliderThumb(componentProps, forwardedRef) {
|
|
10
|
+
const { render, className, style, ...elementProps } = componentProps;
|
|
11
|
+
const context = useSliderContext();
|
|
12
|
+
const { state, thumbRef, thumbProps, getAttrs } = context;
|
|
13
|
+
const attrs = getAttrs(state);
|
|
14
|
+
return renderElement("div", {
|
|
15
|
+
render,
|
|
16
|
+
className,
|
|
17
|
+
style
|
|
18
|
+
}, {
|
|
19
|
+
state,
|
|
20
|
+
stateAttrMap: context.stateAttrMap,
|
|
21
|
+
ref: [forwardedRef, thumbRef],
|
|
22
|
+
props: [
|
|
23
|
+
attrs,
|
|
24
|
+
thumbProps,
|
|
25
|
+
elementProps
|
|
26
|
+
]
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
//#endregion
|
|
31
|
+
export { SliderThumb };
|
|
32
|
+
//# sourceMappingURL=slider-thumb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-thumb.js","names":[],"sources":["../../../../src/ui/slider/slider-thumb.tsx"],"sourcesContent":["'use client';\n\nimport type { SliderState } from '@videojs/core';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useSliderContext } from './context';\n\nexport interface SliderThumbProps extends UIComponentProps<'div', SliderState> {}\n\n/** Draggable handle for setting the slider value. Receives focus and handles keyboard interaction. */\nexport const SliderThumb = forwardRef(function SliderThumb(\n componentProps: SliderThumbProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const { render, className, style, ...elementProps } = componentProps;\n\n const context = useSliderContext();\n const { state, thumbRef, thumbProps, getAttrs } = context;\n const attrs = getAttrs(state);\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: context.stateAttrMap,\n ref: [forwardedRef, thumbRef],\n props: [attrs, thumbProps, elementProps],\n }\n );\n});\n\nexport namespace SliderThumb {\n export type Props = SliderThumbProps;\n}\n"],"mappings":";;;;;;;;AAaA,MAAa,cAAc,WAAW,SAAS,YAC7C,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,GAAG,iBAAiB;CAEtD,MAAM,UAAU,kBAAkB;CAClC,MAAM,EAAE,OAAO,UAAU,YAAY,aAAa;CAClD,MAAM,QAAQ,SAAS,MAAM;AAE7B,QAAO,cACL,OACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc,QAAQ;EACtB,KAAK,CAAC,cAAc,SAAS;EAC7B,OAAO;GAAC;GAAO;GAAY;GAAa;EACzC,CACF;EACD"}
|
|
@@ -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-track.d.ts
|
|
6
|
+
interface SliderTrackProps extends UIComponentProps<'div', SliderState> {}
|
|
7
|
+
/** Contains the slider's visual track and interactive hit zone. */
|
|
8
|
+
declare const SliderTrack: react.ForwardRefExoticComponent<SliderTrackProps>;
|
|
9
|
+
declare namespace SliderTrack {
|
|
10
|
+
type Props = SliderTrackProps;
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { SliderTrack, SliderTrackProps };
|
|
14
|
+
//# sourceMappingURL=slider-track.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-track.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-track.tsx"],"mappings":";;;;;UAQiB,gBAAA,SAAyB,gBAAA,QAAwB,WAAA;;cAGrD,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,gBAAA;AAAA,kBAMP,WAAA;EAAA,KACH,KAAA,GAAQ,gBAAA;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-track.tsx
|
|
7
|
+
/** Contains the slider's visual track and interactive hit zone. */
|
|
8
|
+
const SliderTrack = createContextPart({
|
|
9
|
+
displayName: "SliderTrack",
|
|
10
|
+
tag: "div",
|
|
11
|
+
useContext: useSliderContext
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { SliderTrack };
|
|
16
|
+
//# sourceMappingURL=slider-track.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-track.js","names":[],"sources":["../../../../src/ui/slider/slider-track.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 SliderTrackProps extends UIComponentProps<'div', SliderState> {}\n\n/** Contains the slider's visual track and interactive hit zone. */\nexport const SliderTrack = createContextPart<SliderTrackProps, SliderState>({\n displayName: 'SliderTrack',\n tag: 'div',\n useContext: useSliderContext,\n});\n\nexport namespace SliderTrack {\n export type Props = SliderTrackProps;\n}\n"],"mappings":";;;;;;;AAWA,MAAa,cAAc,kBAAiD;CAC1E,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 { SliderState } from "@videojs/core";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/slider/slider-value.d.ts
|
|
6
|
+
interface SliderValueProps extends UIComponentProps<'output', SliderState> {
|
|
7
|
+
/** Which slider value to display: the current position or the pointer position. */
|
|
8
|
+
type?: 'current' | 'pointer' | undefined;
|
|
9
|
+
/** Custom formatter for the displayed value. Overrides the root's `formatValue`. */
|
|
10
|
+
format?: ((value: number) => string) | undefined;
|
|
11
|
+
}
|
|
12
|
+
/** Displays a formatted text representation of the slider value. Renders an `<output>` element. */
|
|
13
|
+
declare const SliderValue: react.ForwardRefExoticComponent<Omit<SliderValueProps, "ref"> & react.RefAttributes<HTMLOutputElement>>;
|
|
14
|
+
declare namespace SliderValue {
|
|
15
|
+
type Props = SliderValueProps;
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { SliderValue, SliderValueProps };
|
|
19
|
+
//# sourceMappingURL=slider-value.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-value.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-value.tsx"],"mappings":";;;;;UAUiB,gBAAA,SAAyB,gBAAA,WAA2B,WAAA;;EAEnE,IAAA;EAFe;EAIf,MAAA,KAAW,KAAA;AAAA;;cAIA,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,gBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,kBAyBP,WAAA;EAAA,KACH,KAAA,GAAQ,gBAAA;AAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { renderElement } from "../../utils/use-render.js";
|
|
4
|
+
import { useSliderContext } from "./context.js";
|
|
5
|
+
import { forwardRef } from "react";
|
|
6
|
+
|
|
7
|
+
//#region src/ui/slider/slider-value.tsx
|
|
8
|
+
/** Displays a formatted text representation of the slider value. Renders an `<output>` element. */
|
|
9
|
+
const SliderValue = forwardRef(function SliderValue(componentProps, forwardedRef) {
|
|
10
|
+
const { render, className, style, type = "current", format, ...elementProps } = componentProps;
|
|
11
|
+
const context = useSliderContext();
|
|
12
|
+
const { state, pointerValue, formatValue } = context;
|
|
13
|
+
const rawValue = type === "pointer" ? pointerValue : state.value;
|
|
14
|
+
const text = format ? format(rawValue) : formatValue ? formatValue(rawValue, type) : String(Math.round(rawValue));
|
|
15
|
+
return renderElement("output", {
|
|
16
|
+
render,
|
|
17
|
+
className,
|
|
18
|
+
style
|
|
19
|
+
}, {
|
|
20
|
+
state,
|
|
21
|
+
stateAttrMap: context.stateAttrMap,
|
|
22
|
+
ref: forwardedRef,
|
|
23
|
+
props: [{
|
|
24
|
+
"aria-live": "off",
|
|
25
|
+
children: text
|
|
26
|
+
}, elementProps]
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
//#endregion
|
|
31
|
+
export { SliderValue };
|
|
32
|
+
//# sourceMappingURL=slider-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-value.js","names":[],"sources":["../../../../src/ui/slider/slider-value.tsx"],"sourcesContent":["'use client';\n\nimport type { SliderState } from '@videojs/core';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useSliderContext } from './context';\n\nexport interface SliderValueProps extends UIComponentProps<'output', SliderState> {\n /** Which slider value to display: the current position or the pointer position. */\n type?: 'current' | 'pointer' | undefined;\n /** Custom formatter for the displayed value. Overrides the root's `formatValue`. */\n format?: ((value: number) => string) | undefined;\n}\n\n/** Displays a formatted text representation of the slider value. Renders an `<output>` element. */\nexport const SliderValue = forwardRef(function SliderValue(\n componentProps: SliderValueProps,\n forwardedRef: ForwardedRef<HTMLOutputElement>\n) {\n const { render, className, style, type = 'current', format, ...elementProps } = componentProps;\n\n const context = useSliderContext();\n const { state, pointerValue, formatValue } = context;\n\n const rawValue = type === 'pointer' ? pointerValue : state.value;\n\n const text = format ? format(rawValue) : formatValue ? formatValue(rawValue, type) : String(Math.round(rawValue));\n\n return renderElement(\n 'output',\n { render, className, style },\n {\n state,\n stateAttrMap: context.stateAttrMap,\n ref: forwardedRef,\n props: [{ 'aria-live': 'off', children: text }, elementProps],\n }\n );\n});\n\nexport namespace SliderValue {\n export type Props = SliderValueProps;\n}\n"],"mappings":";;;;;;;;AAkBA,MAAa,cAAc,WAAW,SAAS,YAC7C,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,OAAO,WAAW,QAAQ,GAAG,iBAAiB;CAEhF,MAAM,UAAU,kBAAkB;CAClC,MAAM,EAAE,OAAO,cAAc,gBAAgB;CAE7C,MAAM,WAAW,SAAS,YAAY,eAAe,MAAM;CAE3D,MAAM,OAAO,SAAS,OAAO,SAAS,GAAG,cAAc,YAAY,UAAU,KAAK,GAAG,OAAO,KAAK,MAAM,SAAS,CAAC;AAEjH,QAAO,cACL,UACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc,QAAQ;EACtB,KAAK;EACL,OAAO,CAAC;GAAE,aAAa;GAAO,UAAU;GAAM,EAAE,aAAa;EAC9D,CACF;EACD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { UIComponentProps } from "../../utils/types.js";
|
|
2
|
+
import * as react from "react";
|
|
3
|
+
import { ThumbnailCore, ThumbnailImage } from "@videojs/core";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/thumbnail/thumbnail.d.ts
|
|
6
|
+
interface ThumbnailProps extends UIComponentProps<'div', ThumbnailCore.State>, ThumbnailCore.Props {
|
|
7
|
+
/** Pre-parsed thumbnail images — bypasses the automatic `<track>` detection. */
|
|
8
|
+
thumbnails?: ThumbnailImage[] | undefined;
|
|
9
|
+
}
|
|
10
|
+
declare const Thumbnail: react.ForwardRefExoticComponent<Omit<ThumbnailProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
declare namespace Thumbnail {
|
|
12
|
+
type Props = ThumbnailProps;
|
|
13
|
+
type State = ThumbnailCore.State;
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { Thumbnail, ThumbnailProps };
|
|
17
|
+
//# sourceMappingURL=thumbnail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thumbnail.d.ts","names":[],"sources":["../../../../src/ui/thumbnail/thumbnail.tsx"],"mappings":";;;;;UAiBiB,cAAA,SAAuB,gBAAA,QAAwB,aAAA,CAAc,KAAA,GAAQ,aAAA,CAAc,KAAA;;EAElG,UAAA,GAAa,cAAA;AAAA;AAAA,cAGF,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,cAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBAwGL,SAAA;EAAA,KACH,KAAA,GAAQ,cAAA;EAAA,KACR,KAAA,GAAQ,aAAA,CAAc,KAAA;AAAA"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useOptionalPlayer } from "../../player/context.js";
|
|
4
|
+
import { renderElement } from "../../utils/use-render.js";
|
|
5
|
+
import { createThumbnail, selectTextTrack } from "@videojs/core/dom";
|
|
6
|
+
import { forwardRef, useEffect, useMemo, useRef, useState } from "react";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
import { ThumbnailCore, ThumbnailDataAttrs, mapCuesToThumbnails } from "@videojs/core";
|
|
9
|
+
|
|
10
|
+
//#region src/ui/thumbnail/thumbnail.tsx
|
|
11
|
+
const Thumbnail = forwardRef(function Thumbnail(componentProps, forwardedRef) {
|
|
12
|
+
const { render, className, style, time = 0, thumbnails: externalThumbnails, crossOrigin, loading, fetchPriority, ...elementProps } = componentProps;
|
|
13
|
+
const [core] = useState(() => new ThumbnailCore());
|
|
14
|
+
const divRef = useRef(null);
|
|
15
|
+
const imgRef = useRef(null);
|
|
16
|
+
const textTrack = useOptionalPlayer(selectTextTrack);
|
|
17
|
+
const [, setRenderToken] = useState(0);
|
|
18
|
+
const [handle] = useState(() => createThumbnail({
|
|
19
|
+
getContainer: () => divRef.current,
|
|
20
|
+
getImg: () => imgRef.current,
|
|
21
|
+
onStateChange: () => setRenderToken((n) => n + 1)
|
|
22
|
+
}));
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
handle.connect();
|
|
25
|
+
return () => handle.destroy();
|
|
26
|
+
}, [handle]);
|
|
27
|
+
const thumbnails = useMemo(() => {
|
|
28
|
+
if (externalThumbnails && externalThumbnails.length > 0) return externalThumbnails;
|
|
29
|
+
if (!textTrack?.thumbnailCues.length) return [];
|
|
30
|
+
return mapCuesToThumbnails(textTrack.thumbnailCues, textTrack.thumbnailTrackSrc ?? void 0);
|
|
31
|
+
}, [externalThumbnails, textTrack]);
|
|
32
|
+
const thumbnail = useMemo(() => core.findActiveThumbnail(thumbnails, time), [
|
|
33
|
+
core,
|
|
34
|
+
thumbnails,
|
|
35
|
+
time
|
|
36
|
+
]);
|
|
37
|
+
handle.updateSrc(thumbnail?.url);
|
|
38
|
+
const state = core.getState(handle.loading, handle.error, thumbnail);
|
|
39
|
+
let containerStyle = { overflow: "hidden" };
|
|
40
|
+
let imgStyle;
|
|
41
|
+
if (thumbnail && handle.naturalWidth && handle.naturalHeight) {
|
|
42
|
+
const constraints = handle.readConstraints();
|
|
43
|
+
const result = core.resize(thumbnail, handle.naturalWidth, handle.naturalHeight, constraints);
|
|
44
|
+
if (result) {
|
|
45
|
+
containerStyle = {
|
|
46
|
+
overflow: "hidden",
|
|
47
|
+
width: result.containerWidth,
|
|
48
|
+
height: result.containerHeight
|
|
49
|
+
};
|
|
50
|
+
imgStyle = {
|
|
51
|
+
width: result.imageWidth,
|
|
52
|
+
height: result.imageHeight,
|
|
53
|
+
maxWidth: "none",
|
|
54
|
+
transform: result.offsetX || result.offsetY ? `translate(-${result.offsetX}px, -${result.offsetY}px)` : void 0
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return renderElement("div", {
|
|
59
|
+
render,
|
|
60
|
+
className,
|
|
61
|
+
style
|
|
62
|
+
}, {
|
|
63
|
+
state,
|
|
64
|
+
stateAttrMap: ThumbnailDataAttrs,
|
|
65
|
+
ref: [forwardedRef, divRef],
|
|
66
|
+
props: [
|
|
67
|
+
core.getAttrs(state),
|
|
68
|
+
{ style: containerStyle },
|
|
69
|
+
elementProps,
|
|
70
|
+
{ children: /* @__PURE__ */ jsx("img", {
|
|
71
|
+
ref: imgRef,
|
|
72
|
+
alt: "",
|
|
73
|
+
"aria-hidden": "true",
|
|
74
|
+
decoding: "async",
|
|
75
|
+
src: thumbnail?.url,
|
|
76
|
+
crossOrigin: crossOrigin === "" || crossOrigin === null ? void 0 : crossOrigin,
|
|
77
|
+
loading,
|
|
78
|
+
style: imgStyle,
|
|
79
|
+
fetchPriority
|
|
80
|
+
}) }
|
|
81
|
+
]
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
//#endregion
|
|
86
|
+
export { Thumbnail };
|
|
87
|
+
//# sourceMappingURL=thumbnail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thumbnail.js","names":[],"sources":["../../../../src/ui/thumbnail/thumbnail.tsx"],"sourcesContent":["'use client';\n\nimport {\n mapCuesToThumbnails,\n ThumbnailCore,\n ThumbnailDataAttrs,\n type ThumbnailFetchPriority,\n type ThumbnailImage,\n} from '@videojs/core';\nimport { createThumbnail, selectTextTrack } from '@videojs/core/dom';\nimport type { CSSProperties } from 'react';\nimport { forwardRef, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useOptionalPlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\n\nexport interface ThumbnailProps extends UIComponentProps<'div', ThumbnailCore.State>, ThumbnailCore.Props {\n /** Pre-parsed thumbnail images — bypasses the automatic `<track>` detection. */\n thumbnails?: ThumbnailImage[] | undefined;\n}\n\nexport const Thumbnail = forwardRef<HTMLDivElement, ThumbnailProps>(function Thumbnail(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n time = 0,\n thumbnails: externalThumbnails,\n crossOrigin,\n loading,\n fetchPriority,\n ...elementProps\n } = componentProps;\n\n const [core] = useState(() => new ThumbnailCore());\n const divRef = useRef<HTMLDivElement>(null);\n const imgRef = useRef<HTMLImageElement>(null);\n const textTrack = useOptionalPlayer(selectTextTrack);\n\n // Force re-render when the handle's state changes (img load/error, resize).\n const [, setRenderToken] = useState(0);\n\n const [handle] = useState(() =>\n createThumbnail({\n getContainer: () => divRef.current,\n getImg: () => imgRef.current,\n onStateChange: () => setRenderToken((n) => n + 1),\n })\n );\n\n useEffect(() => {\n handle.connect();\n return () => handle.destroy();\n }, [handle]);\n\n // Resolve thumbnails: external prop takes priority over auto <track> path.\n const thumbnails = useMemo(() => {\n if (externalThumbnails && externalThumbnails.length > 0) return externalThumbnails;\n if (!textTrack?.thumbnailCues.length) return [];\n return mapCuesToThumbnails(textTrack.thumbnailCues, textTrack.thumbnailTrackSrc ?? undefined);\n }, [externalThumbnails, textTrack]);\n\n const thumbnail = useMemo(() => core.findActiveThumbnail(thumbnails, time), [core, thumbnails, time]);\n\n // Track src changes via the handle.\n handle.updateSrc(thumbnail?.url);\n\n const state = core.getState(handle.loading, handle.error, thumbnail);\n\n // Compute styles declaratively from resize result.\n let containerStyle: CSSProperties = { overflow: 'hidden' };\n let imgStyle: CSSProperties | undefined;\n\n if (thumbnail && handle.naturalWidth && handle.naturalHeight) {\n const constraints = handle.readConstraints();\n const result = core.resize(thumbnail, handle.naturalWidth, handle.naturalHeight, constraints);\n\n if (result) {\n containerStyle = {\n overflow: 'hidden',\n width: result.containerWidth,\n height: result.containerHeight,\n };\n imgStyle = {\n width: result.imageWidth,\n height: result.imageHeight,\n maxWidth: 'none',\n transform:\n result.offsetX || result.offsetY ? `translate(-${result.offsetX}px, -${result.offsetY}px)` : undefined,\n };\n }\n }\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: ThumbnailDataAttrs,\n ref: [forwardedRef, divRef],\n props: [\n core.getAttrs(state),\n { style: containerStyle },\n elementProps,\n {\n children: (\n <img\n ref={imgRef}\n alt=\"\"\n aria-hidden=\"true\"\n decoding=\"async\"\n src={thumbnail?.url}\n crossOrigin={crossOrigin === '' || crossOrigin === null ? undefined : crossOrigin}\n loading={loading}\n style={imgStyle}\n // React's types omit `| undefined` from fetchPriority — cast to satisfy exactOptionalPropertyTypes.\n fetchPriority={fetchPriority as ThumbnailFetchPriority}\n />\n ),\n },\n ],\n }\n );\n});\n\nexport namespace Thumbnail {\n export type Props = ThumbnailProps;\n export type State = ThumbnailCore.State;\n}\n"],"mappings":";;;;;;;;;;AAsBA,MAAa,YAAY,WAA2C,SAAS,UAAU,gBAAgB,cAAc;CACnH,MAAM,EACJ,QACA,WACA,OACA,OAAO,GACP,YAAY,oBACZ,aACA,SACA,eACA,GAAG,iBACD;CAEJ,MAAM,CAAC,QAAQ,eAAe,IAAI,eAAe,CAAC;CAClD,MAAM,SAAS,OAAuB,KAAK;CAC3C,MAAM,SAAS,OAAyB,KAAK;CAC7C,MAAM,YAAY,kBAAkB,gBAAgB;CAGpD,MAAM,GAAG,kBAAkB,SAAS,EAAE;CAEtC,MAAM,CAAC,UAAU,eACf,gBAAgB;EACd,oBAAoB,OAAO;EAC3B,cAAc,OAAO;EACrB,qBAAqB,gBAAgB,MAAM,IAAI,EAAE;EAClD,CAAC,CACH;AAED,iBAAgB;AACd,SAAO,SAAS;AAChB,eAAa,OAAO,SAAS;IAC5B,CAAC,OAAO,CAAC;CAGZ,MAAM,aAAa,cAAc;AAC/B,MAAI,sBAAsB,mBAAmB,SAAS,EAAG,QAAO;AAChE,MAAI,CAAC,WAAW,cAAc,OAAQ,QAAO,EAAE;AAC/C,SAAO,oBAAoB,UAAU,eAAe,UAAU,qBAAqB,OAAU;IAC5F,CAAC,oBAAoB,UAAU,CAAC;CAEnC,MAAM,YAAY,cAAc,KAAK,oBAAoB,YAAY,KAAK,EAAE;EAAC;EAAM;EAAY;EAAK,CAAC;AAGrG,QAAO,UAAU,WAAW,IAAI;CAEhC,MAAM,QAAQ,KAAK,SAAS,OAAO,SAAS,OAAO,OAAO,UAAU;CAGpE,IAAI,iBAAgC,EAAE,UAAU,UAAU;CAC1D,IAAI;AAEJ,KAAI,aAAa,OAAO,gBAAgB,OAAO,eAAe;EAC5D,MAAM,cAAc,OAAO,iBAAiB;EAC5C,MAAM,SAAS,KAAK,OAAO,WAAW,OAAO,cAAc,OAAO,eAAe,YAAY;AAE7F,MAAI,QAAQ;AACV,oBAAiB;IACf,UAAU;IACV,OAAO,OAAO;IACd,QAAQ,OAAO;IAChB;AACD,cAAW;IACT,OAAO,OAAO;IACd,QAAQ,OAAO;IACf,UAAU;IACV,WACE,OAAO,WAAW,OAAO,UAAU,cAAc,OAAO,QAAQ,OAAO,OAAO,QAAQ,OAAO;IAChG;;;AAIL,QAAO,cACL,OACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc;EACd,KAAK,CAAC,cAAc,OAAO;EAC3B,OAAO;GACL,KAAK,SAAS,MAAM;GACpB,EAAE,OAAO,gBAAgB;GACzB;GACA,EACE,UACE,oBAAC;IACC,KAAK;IACL,KAAI;IACJ,eAAY;IACZ,UAAS;IACT,KAAK,WAAW;IAChB,aAAa,gBAAgB,MAAM,gBAAgB,OAAO,SAAY;IAC7D;IACT,OAAO;IAEQ;KACf,EAEL;GACF;EACF,CACF;EACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-value.d.ts","names":[],"sources":["../../../../src/ui/time/time-value.tsx"],"mappings":";;;;;UAWiB,UAAA,SAAmB,IAAA,CAAK,gBAAA,SAAyB,QAAA,CAAS,KAAA,gBAAqB,QAAA,CAAS,KAAA;;AAAzG;;;;;;;;;cAYa,KAAA,EAAK,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,UAAA,WAAA,KAAA,CAAA,aAAA,CAAA,eAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"time-value.d.ts","names":[],"sources":["../../../../src/ui/time/time-value.tsx"],"mappings":";;;;;UAWiB,UAAA,SAAmB,IAAA,CAAK,gBAAA,SAAyB,QAAA,CAAS,KAAA,gBAAqB,QAAA,CAAS,KAAA;;AAAzG;;;;;;;;;cAYa,KAAA,EAAK,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,UAAA,WAAA,KAAA,CAAA,aAAA,CAAA,eAAA;AAAA,kBA+CD,KAAA;EAAA,KACH,KAAA,GAAQ,UAAA;EAAA,KACR,KAAA,GAAQ,QAAA,CAAS,KAAA;AAAA"}
|
|
@@ -31,7 +31,8 @@ const Value = forwardRef(function Value(componentProps, forwardedRef) {
|
|
|
31
31
|
logMissingFeature("Time.Value", "time");
|
|
32
32
|
return null;
|
|
33
33
|
}
|
|
34
|
-
|
|
34
|
+
core.setMedia(time);
|
|
35
|
+
const state = core.getState();
|
|
35
36
|
const content = state.negative ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
|
|
36
37
|
"aria-hidden": "true",
|
|
37
38
|
children: negativeSign ?? TimeCore.defaultProps.negativeSign
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-value.js","names":[],"sources":["../../../../src/ui/time/time-value.tsx"],"sourcesContent":["'use client';\n\nimport { TimeCore, TimeDataAttrs } 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';\n\nexport interface ValueProps extends Omit<UIComponentProps<'time', TimeCore.State>, 'children'>, TimeCore.Props {}\n\n/**\n * Displays a formatted time value (current, duration, or remaining).\n *\n * @example\n * ```tsx\n * <Time.Value />\n * <Time.Value type=\"duration\" />\n * <Time.Value type=\"remaining\" negativeSign=\"−\" />\n * ```\n */\nexport const Value = forwardRef(function Value(\n componentProps: ValueProps,\n forwardedRef: ForwardedRef<HTMLTimeElement>\n) {\n const { render, className, style, type, negativeSign, label, ...elementProps } = componentProps;\n\n const time = usePlayer(selectTime);\n\n const [core] = useState(() => new TimeCore());\n core.setProps({ type, negativeSign, label });\n\n if (!time) {\n if (__DEV__) logMissingFeature('Time.Value', 'time');\n return null;\n }\n\n const state = core.getState(
|
|
1
|
+
{"version":3,"file":"time-value.js","names":[],"sources":["../../../../src/ui/time/time-value.tsx"],"sourcesContent":["'use client';\n\nimport { TimeCore, TimeDataAttrs } 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';\n\nexport interface ValueProps extends Omit<UIComponentProps<'time', TimeCore.State>, 'children'>, TimeCore.Props {}\n\n/**\n * Displays a formatted time value (current, duration, or remaining).\n *\n * @example\n * ```tsx\n * <Time.Value />\n * <Time.Value type=\"duration\" />\n * <Time.Value type=\"remaining\" negativeSign=\"−\" />\n * ```\n */\nexport const Value = forwardRef(function Value(\n componentProps: ValueProps,\n forwardedRef: ForwardedRef<HTMLTimeElement>\n) {\n const { render, className, style, type, negativeSign, label, ...elementProps } = componentProps;\n\n const time = usePlayer(selectTime);\n\n const [core] = useState(() => new TimeCore());\n core.setProps({ type, negativeSign, label });\n\n if (!time) {\n if (__DEV__) logMissingFeature('Time.Value', 'time');\n return null;\n }\n\n core.setMedia(time);\n const state = core.getState();\n\n const content = state.negative ? (\n <>\n <span aria-hidden=\"true\">{negativeSign ?? TimeCore.defaultProps.negativeSign}</span>\n {state.text}\n </>\n ) : (\n state.text\n );\n\n return renderElement(\n 'time',\n { render, className, style },\n {\n state,\n stateAttrMap: TimeDataAttrs,\n ref: [forwardedRef],\n props: [\n {\n dateTime: state.datetime,\n children: content,\n ...core.getAttrs(state),\n },\n elementProps,\n ],\n }\n );\n});\n\nexport namespace Value {\n export type Props = ValueProps;\n export type State = TimeCore.State;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuBA,MAAa,QAAQ,WAAW,SAAS,MACvC,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,MAAM,cAAc,OAAO,GAAG,iBAAiB;CAEjF,MAAM,OAAO,UAAU,WAAW;CAElC,MAAM,CAAC,QAAQ,eAAe,IAAI,UAAU,CAAC;AAC7C,MAAK,SAAS;EAAE;EAAM;EAAc;EAAO,CAAC;AAE5C,KAAI,CAAC,MAAM;AACI,oBAAkB,cAAc,OAAO;AACpD,SAAO;;AAGT,MAAK,SAAS,KAAK;CACnB,MAAM,QAAQ,KAAK,UAAU;CAE7B,MAAM,UAAU,MAAM,WACpB,4CACE,oBAAC;EAAK,eAAY;YAAQ,gBAAgB,SAAS,aAAa;GAAoB,EACnF,MAAM,QACN,GAEH,MAAM;AAGR,QAAO,cACL,QACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc;EACd,KAAK,CAAC,aAAa;EACnB,OAAO,CACL;GACE,UAAU,MAAM;GAChB,UAAU;GACV,GAAG,KAAK,SAAS,MAAM;GACxB,EACD,aACD;EACF,CACF;EACD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SliderBuffer, SliderBufferProps } from "../slider/slider-buffer.js";
|
|
2
|
+
import { SliderFill, SliderFillProps } from "../slider/slider-fill.js";
|
|
3
|
+
import { SliderThumb, SliderThumbProps } from "../slider/slider-thumb.js";
|
|
4
|
+
import { SliderTrack, SliderTrackProps } from "../slider/slider-track.js";
|
|
5
|
+
import { SliderValue, SliderValueProps } from "../slider/slider-value.js";
|
|
6
|
+
import "../slider/index.parts.js";
|
|
7
|
+
import { TimeSliderRoot, TimeSliderRootProps } from "./time-slider-root.js";
|
|
8
|
+
|
|
9
|
+
//#region src/ui/time-slider/index.parts.d.ts
|
|
10
|
+
declare namespace index_parts_d_exports {
|
|
11
|
+
export { SliderBuffer as Buffer, SliderBufferProps as BufferProps, SliderFill as Fill, SliderFillProps as FillProps, TimeSliderRoot as Root, TimeSliderRootProps as RootProps, SliderThumb as Thumb, SliderThumbProps as ThumbProps, SliderTrack as Track, SliderTrackProps as TrackProps, SliderValue as Value, SliderValueProps as ValueProps };
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { index_parts_d_exports };
|
|
15
|
+
//# sourceMappingURL=index.parts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.parts.d.ts","names":[],"sources":["../../../../src/ui/time-slider/index.parts.ts"],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { SliderBuffer } from "../slider/slider-buffer.js";
|
|
3
|
+
import { SliderFill } from "../slider/slider-fill.js";
|
|
4
|
+
import { SliderThumb } from "../slider/slider-thumb.js";
|
|
5
|
+
import { SliderTrack } from "../slider/slider-track.js";
|
|
6
|
+
import { SliderValue } from "../slider/slider-value.js";
|
|
7
|
+
import { TimeSliderRoot } from "./time-slider-root.js";
|
|
8
|
+
|
|
9
|
+
//#region src/ui/time-slider/index.parts.ts
|
|
10
|
+
var index_parts_exports = /* @__PURE__ */ __exportAll({
|
|
11
|
+
Buffer: () => SliderBuffer,
|
|
12
|
+
Fill: () => SliderFill,
|
|
13
|
+
Root: () => TimeSliderRoot,
|
|
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/time-slider/index.parts.ts"],"sourcesContent":["export {\n Buffer,\n type BufferProps,\n Fill,\n type FillProps,\n Thumb,\n type ThumbProps,\n Track,\n type TrackProps,\n Value,\n type ValueProps,\n} from '../slider/index.parts';\nexport { TimeSliderRoot as Root, type TimeSliderRootProps as RootProps } from './time-slider-root';\n"],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { UIComponentProps } from "../../utils/types.js";
|
|
2
|
+
import * as react from "react";
|
|
3
|
+
import { TimeSliderCore } from "@videojs/core";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/time-slider/time-slider-root.d.ts
|
|
6
|
+
interface TimeSliderRootProps extends UIComponentProps<'div', TimeSliderCore.State>, TimeSliderCore.Props {
|
|
7
|
+
onDragStart?: (() => void) | undefined;
|
|
8
|
+
onDragEnd?: (() => void) | undefined;
|
|
9
|
+
}
|
|
10
|
+
declare const TimeSliderRoot: react.ForwardRefExoticComponent<Omit<TimeSliderRootProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
declare namespace TimeSliderRoot {
|
|
12
|
+
type Props = TimeSliderRootProps;
|
|
13
|
+
type State = TimeSliderCore.State;
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { TimeSliderRoot, TimeSliderRootProps };
|
|
17
|
+
//# sourceMappingURL=time-slider-root.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-slider-root.d.ts","names":[],"sources":["../../../../src/ui/time-slider/time-slider-root.tsx"],"mappings":";;;;;UAgBiB,mBAAA,SAA4B,gBAAA,QAAwB,cAAA,CAAe,KAAA,GAAQ,cAAA,CAAe,KAAA;EACzG,WAAA;EACA,SAAA;AAAA;AAAA,cAGW,cAAA,EAAc,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,mBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBAgGV,cAAA;EAAA,KACH,KAAA,GAAQ,mBAAA;EAAA,KACR,KAAA,GAAQ,cAAA,CAAe,KAAA;AAAA"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { usePlayer } from "../../player/context.js";
|
|
4
|
+
import { renderElement } from "../../utils/use-render.js";
|
|
5
|
+
import { useLatestRef } from "../../utils/use-latest-ref.js";
|
|
6
|
+
import { useSlider } from "../hooks/use-slider.js";
|
|
7
|
+
import { SliderProvider } from "../slider/context.js";
|
|
8
|
+
import { getTimeSliderCSSVars, logMissingFeature, selectBuffer, selectTime } from "@videojs/core/dom";
|
|
9
|
+
import { forwardRef, useState } from "react";
|
|
10
|
+
import { jsx } from "react/jsx-runtime";
|
|
11
|
+
import { TimeSliderCore, TimeSliderDataAttrs } from "@videojs/core";
|
|
12
|
+
import { formatTime } from "@videojs/utils/time";
|
|
13
|
+
|
|
14
|
+
//#region src/ui/time-slider/time-slider-root.tsx
|
|
15
|
+
const noopSeek = () => Promise.resolve(0);
|
|
16
|
+
const TimeSliderRoot = forwardRef(function TimeSliderRoot(componentProps, forwardedRef) {
|
|
17
|
+
const { render, className, style, label, commitThrottle = TimeSliderCore.defaultProps.commitThrottle, step = TimeSliderCore.defaultProps.step, largeStep = TimeSliderCore.defaultProps.largeStep, orientation, disabled, thumbAlignment, onDragStart, onDragEnd, ...elementProps } = componentProps;
|
|
18
|
+
const time = usePlayer(selectTime);
|
|
19
|
+
const buffer = usePlayer(selectBuffer);
|
|
20
|
+
const [core] = useState(() => new TimeSliderCore());
|
|
21
|
+
core.setProps({
|
|
22
|
+
label,
|
|
23
|
+
step,
|
|
24
|
+
largeStep,
|
|
25
|
+
orientation,
|
|
26
|
+
disabled,
|
|
27
|
+
thumbAlignment
|
|
28
|
+
});
|
|
29
|
+
const mediaRef = useLatestRef(time && buffer ? {
|
|
30
|
+
...time,
|
|
31
|
+
...buffer
|
|
32
|
+
} : null);
|
|
33
|
+
const duration = time?.duration ?? 0;
|
|
34
|
+
const { state, cssVars, rootRef, thumbRef, rootProps, thumbProps } = useSlider({
|
|
35
|
+
computeState: (input) => {
|
|
36
|
+
core.setInput(input);
|
|
37
|
+
if (!time || !buffer) core.setMedia({
|
|
38
|
+
currentTime: 0,
|
|
39
|
+
duration: 0,
|
|
40
|
+
seeking: false,
|
|
41
|
+
seek: noopSeek,
|
|
42
|
+
buffered: [],
|
|
43
|
+
seekable: []
|
|
44
|
+
});
|
|
45
|
+
else core.setMedia({
|
|
46
|
+
...time,
|
|
47
|
+
...buffer
|
|
48
|
+
});
|
|
49
|
+
return core.getState();
|
|
50
|
+
},
|
|
51
|
+
getPercent: () => duration > 0 ? (time?.currentTime ?? 0) / duration * 100 : 0,
|
|
52
|
+
getStepPercent: () => core.getStepPercent(),
|
|
53
|
+
getLargeStepPercent: () => core.getLargeStepPercent(),
|
|
54
|
+
orientation,
|
|
55
|
+
disabled,
|
|
56
|
+
commitThrottle,
|
|
57
|
+
adjustPercent: (rawPercent, thumbSize, trackSize) => core.adjustPercentForAlignment(rawPercent, thumbSize, trackSize),
|
|
58
|
+
getCSSVars: getTimeSliderCSSVars,
|
|
59
|
+
onValueCommit: (percent) => {
|
|
60
|
+
const media = mediaRef.current;
|
|
61
|
+
if (media) media.seek(core.valueFromPercent(percent));
|
|
62
|
+
},
|
|
63
|
+
onDragStart,
|
|
64
|
+
onDragEnd
|
|
65
|
+
});
|
|
66
|
+
if (!time) {
|
|
67
|
+
logMissingFeature("TimeSlider", "time");
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
return /* @__PURE__ */ jsx(SliderProvider, {
|
|
71
|
+
value: {
|
|
72
|
+
state,
|
|
73
|
+
pointerValue: core.valueFromPercent(state.pointerPercent),
|
|
74
|
+
thumbRef,
|
|
75
|
+
thumbProps,
|
|
76
|
+
stateAttrMap: TimeSliderDataAttrs,
|
|
77
|
+
getAttrs: (sliderState) => core.getAttrs(sliderState),
|
|
78
|
+
formatValue: (value) => formatTime(value, duration)
|
|
79
|
+
},
|
|
80
|
+
children: renderElement("div", {
|
|
81
|
+
render,
|
|
82
|
+
className,
|
|
83
|
+
style
|
|
84
|
+
}, {
|
|
85
|
+
state,
|
|
86
|
+
stateAttrMap: TimeSliderDataAttrs,
|
|
87
|
+
ref: [forwardedRef, rootRef],
|
|
88
|
+
props: [
|
|
89
|
+
{ style: cssVars },
|
|
90
|
+
rootProps,
|
|
91
|
+
elementProps
|
|
92
|
+
]
|
|
93
|
+
})
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
//#endregion
|
|
98
|
+
export { TimeSliderRoot };
|
|
99
|
+
//# sourceMappingURL=time-slider-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-slider-root.js","names":[],"sources":["../../../../src/ui/time-slider/time-slider-root.tsx"],"sourcesContent":["'use client';\n\nimport { TimeSliderCore, TimeSliderDataAttrs } from '@videojs/core';\nimport { getTimeSliderCSSVars, logMissingFeature, selectBuffer, selectTime } from '@videojs/core/dom';\nimport { formatTime } from '@videojs/utils/time';\nimport { forwardRef, useState } from 'react';\n\nimport { usePlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { useLatestRef } from '../../utils/use-latest-ref';\nimport { renderElement } from '../../utils/use-render';\nimport { useSlider } from '../hooks/use-slider';\nimport { SliderProvider } from '../slider/context';\n\nconst noopSeek = (): Promise<number> => Promise.resolve(0);\n\nexport interface TimeSliderRootProps extends UIComponentProps<'div', TimeSliderCore.State>, TimeSliderCore.Props {\n onDragStart?: (() => void) | undefined;\n onDragEnd?: (() => void) | undefined;\n}\n\nexport const TimeSliderRoot = forwardRef<HTMLDivElement, TimeSliderRootProps>(\n function TimeSliderRoot(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n label,\n commitThrottle = TimeSliderCore.defaultProps.commitThrottle,\n step = TimeSliderCore.defaultProps.step,\n largeStep = TimeSliderCore.defaultProps.largeStep,\n orientation,\n disabled,\n thumbAlignment,\n onDragStart,\n onDragEnd,\n ...elementProps\n } = componentProps;\n\n const time = usePlayer(selectTime);\n const buffer = usePlayer(selectBuffer);\n\n const [core] = useState(() => new TimeSliderCore());\n core.setProps({ label, step, largeStep, orientation, disabled, thumbAlignment });\n\n // Keep a ref to the latest media state for callbacks that fire outside the render cycle.\n const mediaRef = useLatestRef(time && buffer ? { ...time, ...buffer } : null);\n\n const duration = time?.duration ?? 0;\n\n const { state, cssVars, rootRef, thumbRef, rootProps, thumbProps } = useSlider<TimeSliderCore.State>({\n computeState: (input) => {\n core.setInput(input);\n if (!time || !buffer) {\n core.setMedia({\n currentTime: 0,\n duration: 0,\n seeking: false,\n seek: noopSeek,\n buffered: [],\n seekable: [],\n });\n } else {\n core.setMedia({ ...time, ...buffer });\n }\n\n return core.getState();\n },\n getPercent: () => (duration > 0 ? ((time?.currentTime ?? 0) / duration) * 100 : 0),\n getStepPercent: () => core.getStepPercent(),\n getLargeStepPercent: () => core.getLargeStepPercent(),\n orientation,\n disabled,\n commitThrottle,\n adjustPercent: (rawPercent, thumbSize, trackSize) =>\n core.adjustPercentForAlignment(rawPercent, thumbSize, trackSize),\n getCSSVars: getTimeSliderCSSVars,\n onValueCommit: (percent) => {\n const media = mediaRef.current;\n if (media) media.seek(core.valueFromPercent(percent));\n },\n onDragStart,\n onDragEnd,\n });\n\n if (!time) {\n if (__DEV__) logMissingFeature('TimeSlider', 'time');\n return null;\n }\n\n return (\n <SliderProvider\n value={{\n state,\n pointerValue: core.valueFromPercent(state.pointerPercent),\n thumbRef,\n thumbProps,\n stateAttrMap: TimeSliderDataAttrs,\n getAttrs: (sliderState) => core.getAttrs(sliderState as TimeSliderCore.State),\n formatValue: (value) => formatTime(value, duration),\n }}\n >\n {renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: TimeSliderDataAttrs,\n ref: [forwardedRef, rootRef],\n props: [{ style: cssVars }, rootProps, elementProps],\n }\n )}\n </SliderProvider>\n );\n }\n);\n\nexport namespace TimeSliderRoot {\n export type Props = TimeSliderRootProps;\n export type State = TimeSliderCore.State;\n}\n"],"mappings":";;;;;;;;;;;;;;AAcA,MAAM,iBAAkC,QAAQ,QAAQ,EAAE;AAO1D,MAAa,iBAAiB,WAC5B,SAAS,eAAe,gBAAgB,cAAc;CACpD,MAAM,EACJ,QACA,WACA,OACA,OACA,iBAAiB,eAAe,aAAa,gBAC7C,OAAO,eAAe,aAAa,MACnC,YAAY,eAAe,aAAa,WACxC,aACA,UACA,gBACA,aACA,WACA,GAAG,iBACD;CAEJ,MAAM,OAAO,UAAU,WAAW;CAClC,MAAM,SAAS,UAAU,aAAa;CAEtC,MAAM,CAAC,QAAQ,eAAe,IAAI,gBAAgB,CAAC;AACnD,MAAK,SAAS;EAAE;EAAO;EAAM;EAAW;EAAa;EAAU;EAAgB,CAAC;CAGhF,MAAM,WAAW,aAAa,QAAQ,SAAS;EAAE,GAAG;EAAM,GAAG;EAAQ,GAAG,KAAK;CAE7E,MAAM,WAAW,MAAM,YAAY;CAEnC,MAAM,EAAE,OAAO,SAAS,SAAS,UAAU,WAAW,eAAe,UAAgC;EACnG,eAAe,UAAU;AACvB,QAAK,SAAS,MAAM;AACpB,OAAI,CAAC,QAAQ,CAAC,OACZ,MAAK,SAAS;IACZ,aAAa;IACb,UAAU;IACV,SAAS;IACT,MAAM;IACN,UAAU,EAAE;IACZ,UAAU,EAAE;IACb,CAAC;OAEF,MAAK,SAAS;IAAE,GAAG;IAAM,GAAG;IAAQ,CAAC;AAGvC,UAAO,KAAK,UAAU;;EAExB,kBAAmB,WAAW,KAAM,MAAM,eAAe,KAAK,WAAY,MAAM;EAChF,sBAAsB,KAAK,gBAAgB;EAC3C,2BAA2B,KAAK,qBAAqB;EACrD;EACA;EACA;EACA,gBAAgB,YAAY,WAAW,cACrC,KAAK,0BAA0B,YAAY,WAAW,UAAU;EAClE,YAAY;EACZ,gBAAgB,YAAY;GAC1B,MAAM,QAAQ,SAAS;AACvB,OAAI,MAAO,OAAM,KAAK,KAAK,iBAAiB,QAAQ,CAAC;;EAEvD;EACA;EACD,CAAC;AAEF,KAAI,CAAC,MAAM;AACI,oBAAkB,cAAc,OAAO;AACpD,SAAO;;AAGT,QACE,oBAAC;EACC,OAAO;GACL;GACA,cAAc,KAAK,iBAAiB,MAAM,eAAe;GACzD;GACA;GACA,cAAc;GACd,WAAW,gBAAgB,KAAK,SAAS,YAAoC;GAC7E,cAAc,UAAU,WAAW,OAAO,SAAS;GACpD;YAEA,cACC,OACA;GAAE;GAAQ;GAAW;GAAO,EAC5B;GACE;GACA,cAAc;GACd,KAAK,CAAC,cAAc,QAAQ;GAC5B,OAAO;IAAC,EAAE,OAAO,SAAS;IAAE;IAAW;IAAa;GACrD,CACF;GACc;EAGtB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SliderFill, SliderFillProps } from "../slider/slider-fill.js";
|
|
2
|
+
import { SliderThumb, SliderThumbProps } from "../slider/slider-thumb.js";
|
|
3
|
+
import { SliderTrack, SliderTrackProps } from "../slider/slider-track.js";
|
|
4
|
+
import { SliderValue, SliderValueProps } from "../slider/slider-value.js";
|
|
5
|
+
import "../slider/index.parts.js";
|
|
6
|
+
import { VolumeSliderRoot, VolumeSliderRootProps } from "./volume-slider-root.js";
|
|
7
|
+
|
|
8
|
+
//#region src/ui/volume-slider/index.parts.d.ts
|
|
9
|
+
declare namespace index_parts_d_exports {
|
|
10
|
+
export { SliderFill as Fill, SliderFillProps as FillProps, VolumeSliderRoot as Root, VolumeSliderRootProps 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/volume-slider/index.parts.ts"],"mappings":""}
|