mirror of https://github.com/langgenius/dify.git
32 lines
1.0 KiB
TypeScript
32 lines
1.0 KiB
TypeScript
import { useEventListener } from 'ahooks'
|
|
import { useWorkflowStore } from './store'
|
|
import { useWorkflowComment } from './hooks/use-workflow-comment'
|
|
|
|
const CommentManager = () => {
|
|
const workflowStore = useWorkflowStore()
|
|
const { handleCreateComment } = useWorkflowComment()
|
|
|
|
useEventListener('click', (e) => {
|
|
const { controlMode, mousePosition } = workflowStore.getState()
|
|
|
|
if (controlMode === 'comment') {
|
|
const target = e.target as HTMLElement
|
|
const isInDropdown = target.closest('[data-mention-dropdown]')
|
|
const isInCommentInput = target.closest('[data-comment-input]')
|
|
const isOnCanvasPane = target.closest('.react-flow__pane')
|
|
|
|
// Only when clicking on the React Flow canvas pane (background),
|
|
// and not inside comment input or its dropdown
|
|
if (!isInDropdown && !isInCommentInput && isOnCanvasPane) {
|
|
e.preventDefault()
|
|
e.stopPropagation()
|
|
handleCreateComment(mousePosition)
|
|
}
|
|
}
|
|
})
|
|
|
|
return null
|
|
}
|
|
|
|
export default CommentManager
|