import { memo, useCallback, useRef } from 'react'; import { Button, Checkbox, Tooltip } from '@chakra-ui/react'; import { IoAdd } from '@react-icons/all-files/io5/IoAdd'; import { SupportedEvent } from 'ontime-types'; import { useEventAction } from '../../../common/hooks/useEventAction'; import { useEditorSettings } from '../../../common/stores/editorSettings'; import { useEmitLog } from '../../../common/stores/logger'; import { deviceAlt } from '../../../common/utils/deviceUtils'; import { tooltipDelayMid } from '../../../ontimeConfig'; import style from './QuickAddBlock.module.scss'; interface QuickAddBlockProps { showKbd: 'above' | 'below' | 'none'; previousEventId?: string; disableAddDelay?: boolean; disableAddBlock: boolean; } const QuickAddBlock = (props: QuickAddBlockProps) => { const { showKbd = 'none', previousEventId, disableAddDelay = true, disableAddBlock } = props; const { addEvent } = useEventAction(); const { emitError } = useEmitLog(); const doLinkPrevious = useRef(null); const doPublic = useRef(null); const { defaultPublic, linkPrevious } = useEditorSettings((state) => state.eventSettings); const shortcutBase = showKbd === 'none' ? '' : `${deviceAlt} ${showKbd === 'above' ? '⇧' : ''}`; const handleCreateEvent = useCallback( (eventType: SupportedEvent) => { switch (eventType) { case 'event': { const defaultPublic = doPublic?.current?.checked; const linkPrevious = doLinkPrevious?.current?.checked; const newEvent = { type: SupportedEvent.Event }; const options = { after: previousEventId, defaultPublic, lastEventId: previousEventId, linkPrevious, }; addEvent(newEvent, options); break; } case 'delay': { const options = { lastEventId: previousEventId, after: previousEventId, }; addEvent({ type: SupportedEvent.Delay }, options); break; } case 'block': { const options = { lastEventId: previousEventId, after: previousEventId, }; addEvent({ type: SupportedEvent.Block }, options); break; } default: { emitError(`Cannot create unknown event type: ${eventType}`); break; } } }, [previousEventId, addEvent, emitError], ); const canLinkPrevious = Boolean(previousEventId); const shouldLinkPrevious = Boolean(linkPrevious) && canLinkPrevious; return (
Link to previous Event is public
); }; export default memo(QuickAddBlock);