1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import { useCallback } from 'react'
- import { useReactFlow } from 'reactflow'
- import { useWorkflowStore } from '../store'
- import { WORKFLOW_DATA_UPDATE } from '../constants'
- import type { WorkflowDataUpdator } from '../types'
- import {
- initialEdges,
- initialNodes,
- } from '../utils'
- import { useEdgesInteractions } from './use-edges-interactions'
- import { useNodesInteractions } from './use-nodes-interactions'
- import { useEventEmitterContextContext } from '@/context/event-emitter'
- export const useWorkflowInteractions = () => {
- const reactflow = useReactFlow()
- const workflowStore = useWorkflowStore()
- const { handleNodeCancelRunningStatus } = useNodesInteractions()
- const { handleEdgeCancelRunningStatus } = useEdgesInteractions()
- const { eventEmitter } = useEventEmitterContextContext()
- const handleCancelDebugAndPreviewPanel = useCallback(() => {
- workflowStore.setState({
- showDebugAndPreviewPanel: false,
- })
- handleNodeCancelRunningStatus()
- handleEdgeCancelRunningStatus()
- }, [workflowStore, handleNodeCancelRunningStatus, handleEdgeCancelRunningStatus])
- const handleUpdateWorkflowCanvas = useCallback((payload: WorkflowDataUpdator) => {
- const {
- nodes,
- edges,
- viewport,
- } = payload
- const { setViewport } = reactflow
- eventEmitter?.emit({
- type: WORKFLOW_DATA_UPDATE,
- payload: {
- nodes: initialNodes(nodes, edges),
- edges: initialEdges(edges, nodes),
- },
- } as any)
- setViewport(viewport)
- }, [eventEmitter, reactflow])
- return {
- handleCancelDebugAndPreviewPanel,
- handleUpdateWorkflowCanvas,
- }
- }
|