| 
					
				 | 
			
			
				@@ -1,6 +1,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   memo, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   useCallback, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  useState, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } from 'react' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { useTranslation } from 'react-i18next' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -10,6 +11,7 @@ import { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   useAvailableBlocks, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   useNodesInteractions, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   useNodesReadOnly, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  useWorkflow, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } from '@/app/components/workflow/hooks' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import BlockSelector from '@/app/components/workflow/block-selector' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import type { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -30,9 +32,11 @@ const Add = ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   isParallel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }: AddProps) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const { t } = useTranslation() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const [open, setOpen] = useState(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const { handleNodeAdd } = useNodesInteractions() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const { nodesReadOnly } = useNodesReadOnly() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const { availableNextBlocks } = useAvailableBlocks(nodeData.type, nodeData.isInIteration) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const { checkParallelLimit } = useWorkflow() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const handleSelect = useCallback<OnSelectBlock>((type, toolDefaultValue) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     handleNodeAdd( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -47,6 +51,13 @@ const Add = ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }, [nodeId, sourceHandle, handleNodeAdd]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const handleOpenChange = useCallback((newOpen: boolean) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (newOpen && !checkParallelLimit(nodeId, sourceHandle)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    setOpen(newOpen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, [checkParallelLimit, nodeId, sourceHandle]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const renderTrigger = useCallback((open: boolean) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <div 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -73,6 +84,8 @@ const Add = ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     <BlockSelector 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      open={open} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      onOpenChange={handleOpenChange} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       disabled={nodesReadOnly} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       onSelect={handleSelect} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       placement='top' 
			 |