import { useMemo } from 'react'; import { IoPause, IoPlay, IoPlaySkipBack, IoPlaySkipForward, IoReload, IoStop, IoTime } from 'react-icons/io5'; import { Tooltip } from '@chakra-ui/react'; import { Playback, TimerPhase } from 'ontime-types'; import { validatePlayback } from 'ontime-utils'; import { setPlayback } from '../../../../common/hooks/useSocket'; import { tooltipDelayMid } from '../../../../ontimeConfig'; import TapButton from '../tap-button/TapButton'; import style from './PlaybackButtons.module.scss'; interface PlaybackButtonsProps { playback: Playback; numEvents: number; selectedEventIndex: number | null; timerPhase: TimerPhase; } export default function PlaybackButtons(props: PlaybackButtonsProps) { const { playback, numEvents, selectedEventIndex, timerPhase } = props; const isRolling = playback === Playback.Roll; const isPlaying = playback === Playback.Play; const isPaused = playback === Playback.Pause; const isArmed = playback === Playback.Armed; const isFirst = selectedEventIndex === 0; const isLast = selectedEventIndex === numEvents - 1; const noEvents = numEvents === 0; const disableGo = isRolling || noEvents; const disableNext = isRolling || noEvents || isLast; const disablePrev = isRolling || noEvents || isFirst; const playbackCan = validatePlayback(playback, timerPhase); const disableStart = !playbackCan.start; const disablePause = !playbackCan.pause; const disableRoll = !playbackCan.roll || noEvents; const disableStop = !playbackCan.stop; const disableReload = !playbackCan.reload; const [goModeAction, goModeText] = useMemo(() => { if (isArmed) { return [setPlayback.start, 'Start']; } else if (isLast) { return [setPlayback.stop, 'Finish']; } else if (selectedEventIndex === null) { return [setPlayback.startNext, 'Start']; } return [setPlayback.startNext, 'Next']; }, [isArmed, isLast, selectedEventIndex]); return (