Spaces:
Build error
Build error
import { | |
memo, | |
useEffect, | |
useRef, | |
} from 'react' | |
import { useClickAway } from 'ahooks' | |
import { useNodes } from 'reactflow' | |
import PanelOperatorPopup from './nodes/_base/components/panel-operator/panel-operator-popup' | |
import type { Node } from './types' | |
import { useStore } from './store' | |
import { usePanelInteractions } from './hooks' | |
const NodeContextmenu = () => { | |
const ref = useRef(null) | |
const nodes = useNodes() | |
const { handleNodeContextmenuCancel, handlePaneContextmenuCancel } = usePanelInteractions() | |
const nodeMenu = useStore(s => s.nodeMenu) | |
const currentNode = nodes.find(node => node.id === nodeMenu?.nodeId) as Node | |
useEffect(() => { | |
if (nodeMenu) | |
handlePaneContextmenuCancel() | |
}, [nodeMenu, handlePaneContextmenuCancel]) | |
useClickAway(() => { | |
handleNodeContextmenuCancel() | |
}, ref) | |
if (!nodeMenu || !currentNode) | |
return null | |
return ( | |
<div | |
className='absolute z-[9]' | |
style={{ | |
left: nodeMenu.left, | |
top: nodeMenu.top, | |
}} | |
ref={ref} | |
> | |
<PanelOperatorPopup | |
id={currentNode.id} | |
data={currentNode.data} | |
onClosePopup={() => handleNodeContextmenuCancel()} | |
showHelpLink | |
/> | |
</div> | |
) | |
} | |
export default memo(NodeContextmenu) | |