mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 10:53:02 +00:00 
			
		
		
		
	
		
			
	
	
		
			38 lines
		
	
	
		
			964 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			38 lines
		
	
	
		
			964 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|   | 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, | ||
|  |   } | ||
|  | } |