1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| 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,
| }
| }
|
|