import { memo, useEffect, useState } from 'react'; import { Button, Slider, SliderFilledTrack, SliderMark, SliderThumb, SliderTrack } from '@chakra-ui/react'; import { MaybeNumber } from 'ontime-types'; import { setTimerSpeed, useTimerSpeed } from '../../../../common/hooks/useSocket'; import { cx } from '../../../../common/utils/styleUtils'; import TimerSchedule from './TimerSchedule'; import style from './TimerSpeed.module.scss'; interface TimerSpeedProps { isPlaying: boolean; eventIndex: MaybeNumber; } export default memo(TimerSpeed); function TimerSpeed(props: TimerSpeedProps) { const { isPlaying, eventIndex } = props; const { speed } = useTimerSpeed(); const [newSpeed, setNewSpeed] = useState(1); const { setSpeed } = setTimerSpeed; // when a new timer is set, we want to reset the speed useEffect(() => { setNewSpeed(1); }, [eventIndex]); const handleApply = () => setSpeed(newSpeed); const handleReset = () => { setNewSpeed(1.0); setSpeed(1.0); }; const canReset = isPlaying && speed === newSpeed && newSpeed !== 1; const canApply = isPlaying && speed !== newSpeed; const willChangeSpeed = speed === 1 && !canApply; return (
{`${speed}x`} {newSpeed !== speed && {` ⇢ ${newSpeed}x`}}
setNewSpeed(v)} value={newSpeed} isDisabled={!isPlaying} > 0.5x 1.0x 1.5x 2.0x
); }