mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 19:03:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { useStoreApi } from 'reactflow'
 | |
| import { useMemo } from 'react'
 | |
| import { useIsChatMode, useWorkflow, useWorkflowVariables } from '../../hooks'
 | |
| import type { ValueSelector } from '../../types'
 | |
| import { VarType } from '../../types'
 | |
| 
 | |
| type Params = {
 | |
|   nodeId: string
 | |
|   isInIteration: boolean
 | |
|   isInLoop: boolean
 | |
| }
 | |
| const useIsVarFileAttribute = ({
 | |
|   nodeId,
 | |
|   isInIteration,
 | |
|   isInLoop,
 | |
| }: Params) => {
 | |
|   const isChatMode = useIsChatMode()
 | |
|   const store = useStoreApi()
 | |
|   const { getBeforeNodesInSameBranch } = useWorkflow()
 | |
|   const {
 | |
|     getNodes,
 | |
|   } = store.getState()
 | |
|   const currentNode = getNodes().find(n => n.id === nodeId)
 | |
|   const iterationNode = isInIteration ? getNodes().find(n => n.id === currentNode!.parentId) : null
 | |
|   const loopNode = isInLoop ? getNodes().find(n => n.id === currentNode!.parentId) : null
 | |
|   const availableNodes = useMemo(() => {
 | |
|     return getBeforeNodesInSameBranch(nodeId)
 | |
|   }, [getBeforeNodesInSameBranch, nodeId])
 | |
|   const { getCurrentVariableType } = useWorkflowVariables()
 | |
|   const getIsVarFileAttribute = (variable: ValueSelector) => {
 | |
|     if (variable.length !== 3)
 | |
|       return false
 | |
|     const parentVariable = variable.slice(0, 2)
 | |
|     const varType = getCurrentVariableType({
 | |
|       parentNode: isInIteration ? iterationNode : loopNode,
 | |
|       valueSelector: parentVariable,
 | |
|       availableNodes,
 | |
|       isChatMode,
 | |
|       isConstant: false,
 | |
|     })
 | |
|     return varType === VarType.file
 | |
|   }
 | |
|   return {
 | |
|     getIsVarFileAttribute,
 | |
|   }
 | |
| }
 | |
| 
 | |
| export default useIsVarFileAttribute
 | 
