Spaces:
Paused
Paused
| import type { MouseEvent } from 'react' | |
| import { useCallback } from 'react' | |
| import { useWorkflowStore } from '../store' | |
| export const usePanelInteractions = () => { | |
| const workflowStore = useWorkflowStore() | |
| const handlePaneContextMenu = useCallback((e: MouseEvent) => { | |
| e.preventDefault() | |
| const container = document.querySelector('#workflow-container') | |
| const { x, y } = container!.getBoundingClientRect() | |
| workflowStore.setState({ | |
| panelMenu: { | |
| top: e.clientY - y, | |
| left: e.clientX - x, | |
| }, | |
| }) | |
| }, [workflowStore]) | |
| const handlePaneContextmenuCancel = useCallback(() => { | |
| workflowStore.setState({ | |
| panelMenu: undefined, | |
| }) | |
| }, [workflowStore]) | |
| const handleNodeContextmenuCancel = useCallback(() => { | |
| workflowStore.setState({ | |
| nodeMenu: undefined, | |
| }) | |
| }, [workflowStore]) | |
| return { | |
| handlePaneContextMenu, | |
| handlePaneContextmenuCancel, | |
| handleNodeContextmenuCancel, | |
| } | |
| } | |