|
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 |
|
} |
|
const useIsVarFileAttribute = ({ |
|
nodeId, |
|
isInIteration, |
|
}: 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 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: iterationNode, |
|
valueSelector: parentVariable, |
|
availableNodes, |
|
isChatMode, |
|
isConstant: false, |
|
}) |
|
return varType === VarType.file |
|
} |
|
return { |
|
getIsVarFileAttribute, |
|
} |
|
} |
|
|
|
export default useIsVarFileAttribute |
|
|