import { useEffect } from 'react'; import { useStopwatch } from 'react-timer-hook'; import FormatMillisecond, { FormatMilliSecondProps } from './FormatMilliSecond'; const setStopWatchOffset = (time: string) => { const providedTime = new Date(time); const currentTime = new Date(); const timeDifference = currentTime.getTime() - providedTime.getTime(); currentTime.setMilliseconds(currentTime.getMilliseconds() + timeDifference); return currentTime; }; /** * Props for the Stopwatch component. * @interface StopwatchProps * @property {Date} offsetTimestamp - The initial timestamp for the stopwatch. * @property {boolean} isPaused - Whether the stopwatch is paused. */ interface StopwatchProps extends Omit { offsetTimestamp: Date; isPaused: boolean; } /** * A stopwatch component that tracks elapsed time. * * @component * @param {StopwatchProps} props - The props for the Stopwatch component. * @returns {React.ReactElement} A stopwatch element. * * @example * ```tsx * * ``` */ const Stopwatch = ({ offsetTimestamp, isPaused, ...props }: StopwatchProps) => { const { totalSeconds, pause, start } = useStopwatch({ autoStart: true, offsetTimestamp: offsetTimestamp, }); useEffect(() => { isPaused ? pause() : start(); }, [isPaused]); return ; }; export { setStopWatchOffset, Stopwatch };