import { Tooltip } from '@chakra-ui/react'; import { IoPause } from '@react-icons/all-files/io5/IoPause'; import { IoPlay } from '@react-icons/all-files/io5/IoPlay'; import { IoPlaySkipBack } from '@react-icons/all-files/io5/IoPlaySkipBack'; import { IoPlaySkipForward } from '@react-icons/all-files/io5/IoPlaySkipForward'; import { IoReload } from '@react-icons/all-files/io5/IoReload'; import { IoStop } from '@react-icons/all-files/io5/IoStop'; import { IoTime } from '@react-icons/all-files/io5/IoTime'; import { Playback } 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; } export default function PlaybackButtons(props: PlaybackButtonsProps) { const { playback, numEvents, selectedEventIndex } = 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 || (isLast && !isArmed); const disablePrev = isRolling || noEvents || isFirst; const playbackCan = validatePlayback(playback); const disableStart = !playbackCan.start; const disablePause = !playbackCan.pause; const disableRoll = !playbackCan.roll || noEvents; const disableStop = !playbackCan.stop; const disableReload = !playbackCan.reload; const goModeText = selectedEventIndex === null || isArmed ? 'Start' : 'Next'; const goModeAction = () => { if (isArmed) { setPlayback.start(); } else { setPlayback.startNext(); } }; return (
{goModeText}
); }