| 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 |
|
|