import React, { useState } from 'react'; import { LinearProgress, Box } from '@mui/material'; import './SeekableProgressBar.css'; const SeekableProgressBar = ({ progress, buffer, onSeek, width = '100%', height = '10px', margin = '10px', borderRadios = '10px' }) => { const handleMouseDown = (event) => { const progressBar = event.currentTarget; const rect = progressBar.getBoundingClientRect(); const seekPosition = ((event.clientX - rect.left) / rect.width) * 100; onSeek(seekPosition); }; const handleMouseMove = (event) => { if (isSeeking) { const progressBar = event.currentTarget; const rect = progressBar.getBoundingClientRect(); const seekPosition = ((event.clientX - rect.left) / rect.width) * 100; onSeek(seekPosition); } }; const [isSeeking, setIsSeeking] = useState(false); return ( { setIsSeeking(true); handleMouseDown(event); }} onMouseUp={() => setIsSeeking(false)} onMouseLeave={() => setIsSeeking(false)} onMouseMove={handleMouseMove} sx={{ position: 'relative', width: width }} > ); }; export default SeekableProgressBar;