import { Box, BoxProps, Flex } from '@chakra-ui/react' import { useGraph } from 'contexts/GraphContext' import { Source } from 'models' import React, { MouseEvent, useEffect, useRef, useState } from 'react' export const SourceEndpoint = ({ source, ...props }: BoxProps & { source: Source }) => { const [ranOnce, setRanOnce] = useState(false) const { setConnectingIds, addSourceEndpoint, blocksCoordinates } = useGraph() const ref = useRef(null) const handleMouseDown = (e: MouseEvent) => { e.stopPropagation() setConnectingIds({ source }) } useEffect(() => { if (ranOnce || !ref.current || Object.keys(blocksCoordinates).length === 0) return const id = source.itemId ?? source.stepId addSourceEndpoint({ id, ref, }) setRanOnce(true) // eslint-disable-next-line react-hooks/exhaustive-deps }, [ref.current, blocksCoordinates]) if (!blocksCoordinates) return <> return ( ) }