| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | import { useCallback } from 'react'import { useTranslation } from 'react-i18next'import { useStore } from '../store'import { getVarType, toNodeAvailableVars } from '@/app/components/workflow/nodes/_base/components/variable/utils'import type {  Node,  NodeOutPutVar,  ValueSelector,  Var,} from '@/app/components/workflow/types'export const useWorkflowVariables = () => {  const { t } = useTranslation()  const environmentVariables = useStore(s => s.environmentVariables)  const conversationVariables = useStore(s => s.conversationVariables)  const getNodeAvailableVars = useCallback(({    parentNode,    beforeNodes,    isChatMode,    filterVar,    hideEnv,    hideChatVar,  }: {    parentNode?: Node | null    beforeNodes: Node[]    isChatMode: boolean    filterVar: (payload: Var, selector: ValueSelector) => boolean    hideEnv?: boolean    hideChatVar?: boolean  }): NodeOutPutVar[] => {    return toNodeAvailableVars({      parentNode,      t,      beforeNodes,      isChatMode,      environmentVariables: hideEnv ? [] : environmentVariables,      conversationVariables: (isChatMode && !hideChatVar) ? conversationVariables : [],      filterVar,    })  }, [conversationVariables, environmentVariables, t])  const getCurrentVariableType = useCallback(({    parentNode,    valueSelector,    isIterationItem,    isLoopItem,    availableNodes,    isChatMode,    isConstant,  }: {    valueSelector: ValueSelector    parentNode?: Node | null    isIterationItem?: boolean    isLoopItem?: boolean    availableNodes: any[]    isChatMode: boolean    isConstant?: boolean  }) => {    return getVarType({      parentNode,      valueSelector,      isIterationItem,      isLoopItem,      availableNodes,      isChatMode,      isConstant,      environmentVariables,      conversationVariables,    })  }, [conversationVariables, environmentVariables])  return {    getNodeAvailableVars,    getCurrentVariableType,  }}
 |