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