MOVED frontend out of Vaadin/Spring

This commit is contained in:
2025-05-28 12:17:45 +02:00
parent c11346ec3b
commit 59fb65d377
18 changed files with 194 additions and 216 deletions

View File

@@ -0,0 +1,51 @@
import {useEffect, useState} from "react";
import clsx from 'clsx';
import VideoMetadata from "Frontend/generated/com/ddf/vodsystem/entities/VideoMetadata";
type Props = {
videoRef: HTMLVideoElement | null;
videoMetadata: VideoMetadata;
sliderValue: number;
setSliderValue: Function;
className?: string;
};
export default function PlaybackSlider({videoRef,
videoMetadata,
sliderValue,
setSliderValue,
className}: Props) {
const updateVideo = (e: React.ChangeEvent<HTMLInputElement>) => {
if (!videoRef) return;
videoRef.currentTime = e.target.valueAsNumber;
setSliderValue(e.target.valueAsNumber);
}
// update slider
useEffect(() => {
if (!videoRef) return;
const updateSlider = () => {
setSliderValue(videoRef.currentTime);
};
videoRef.addEventListener("timeupdate", updateSlider);
return () => {
videoRef.removeEventListener("timeupdate", updateSlider);
};
}, [videoRef]);
return (
<input
type={"range"}
min={0}
max={videoMetadata.endPoint}
value={sliderValue}
onChange={updateVideo}
step={0.1}
className={clsx(className)}
/>
)
}