import { Playback, SimpleDirection, SimplePlayback } from 'ontime-types'; import { millisToString, parseUserTime } from 'ontime-utils'; import { IoArrowDown, IoArrowUp, IoPause, IoPlay, IoStop } from 'react-icons/io5'; import TimeInput from '../../../../common/components/input/time-input/TimeInput'; import { setAuxTimer, useAuxTimerControl, useAuxTimerTime } from '../../../../common/hooks/useSocket'; import TapButton from '../tap-button/TapButton'; import style from './AuxTimer.module.scss'; interface AuxTimerProps { index: number; } export function AuxTimer({ index }: AuxTimerProps) { const { playback, direction } = useAuxTimerControl(index); const { stop, setDirection } = setAuxTimer; const toggleDirection = () => { const newDirection = direction === SimpleDirection.CountDown ? SimpleDirection.CountUp : SimpleDirection.CountDown; setDirection(index, newDirection); }; const isActive = playback !== SimplePlayback.Stop; const playbackAction = playback === SimplePlayback.Start ? 'pause' : 'play'; return ( ); } interface AuxTimerInputProps { index: number; isActive: boolean; } function AuxTimerInput({ index, isActive }: AuxTimerInputProps) { const newTimeInMs = useAuxTimerTime(index); const { setDuration } = setAuxTimer; const handleTimeUpdate = (_field: string, value: string) => { const newTimeInMs = parseUserTime(value); setDuration(index, newTimeInMs); }; if (isActive) { return (
{millisToString(newTimeInMs)}
); } return ( ); } interface AuxTogglePlayProps { index: number; action: 'play' | 'pause'; } function AuxTogglePlay({ index, action }: AuxTogglePlayProps) { const { start, pause } = setAuxTimer; if (action === 'play') { return ( start(index)} theme={Playback.Play}> ); } return ( pause(index)} theme={Playback.Pause}> ); }