import { isOntimeDelay, isOntimeEvent, isOntimeMilestone, OntimeEntry, OntimeEvent, Playback, SupportedEntry, } from 'ontime-types'; import { useEntryActions } from '../../common/hooks/useEntryAction'; import useMemoisedFn from '../../common/hooks/useMemoisedFn'; import { cloneEvent } from '../../common/utils/clone'; import RundownDelay from './rundown-delay/RundownDelay'; import RundownEvent from './rundown-event/RundownEvent'; import RundownMilestone from './rundown-milestone/RundownMilestone'; interface RundownEntryProps { type: SupportedEntry; isPast: boolean; data: OntimeEntry; loaded: boolean; eventIndex: number; hasCursor: boolean; isNext: boolean; isNextDay: boolean; playback?: Playback; // we only care about this if this event is playing isRolling: boolean; // we need to know even if not related to this event totalGap: number; isLinkedToLoaded: boolean; } export default function RundownEntry({ isPast, data, loaded, hasCursor, isNext, playback, isRolling, eventIndex, isNextDay, totalGap, isLinkedToLoaded, }: RundownEntryProps) { const { addEntry } = useEntryActions(); const createCloneEvent = useMemoisedFn(() => { const newEvent = cloneEvent(data as OntimeEvent); addEntry(newEvent, { after: data.id }); }); if (isOntimeEvent(data)) { return ( 0} /> ); } else if (isOntimeDelay(data)) { return ; } else if (isOntimeMilestone(data)) { return ( ); } return null; }