| 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, |
| } |
| } |
|
|