| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | 
							- import { useCallback } from 'react'
 
- import {
 
-   useNodes,
 
- } from 'reactflow'
 
- import { uniqBy } from 'lodash-es'
 
- import {
 
-   useIsChatMode,
 
-   useWorkflow,
 
-   useWorkflowVariables,
 
- } from '../../hooks'
 
- import type {
 
-   Node,
 
-   Var,
 
- } from '../../types'
 
- import { AssignerNodeInputType, WriteMode } from './types'
 
- export const useGetAvailableVars = () => {
 
-   const nodes: Node[] = useNodes()
 
-   const { getBeforeNodesInSameBranchIncludeParent } = useWorkflow()
 
-   const { getNodeAvailableVars } = useWorkflowVariables()
 
-   const isChatMode = useIsChatMode()
 
-   const getAvailableVars = useCallback((nodeId: string, handleId: string, filterVar: (v: Var) => boolean, hideEnv = false) => {
 
-     const availableNodes: Node[] = []
 
-     const currentNode = nodes.find(node => node.id === nodeId)!
 
-     if (!currentNode)
 
-       return []
 
-     const beforeNodes = getBeforeNodesInSameBranchIncludeParent(nodeId)
 
-     availableNodes.push(...beforeNodes)
 
-     const parentNode = nodes.find(node => node.id === currentNode.parentId)
 
-     if (hideEnv) {
 
-       return getNodeAvailableVars({
 
-         parentNode,
 
-         beforeNodes: uniqBy(availableNodes, 'id').filter(node => node.id !== nodeId),
 
-         isChatMode,
 
-         hideEnv,
 
-         hideChatVar: hideEnv,
 
-         filterVar,
 
-       })
 
-         .map(node => ({
 
-           ...node,
 
-           vars: node.isStartNode ? node.vars.filter(v => !v.variable.startsWith('sys.')) : node.vars,
 
-         }))
 
-         .filter(item => item.vars.length > 0)
 
-     }
 
-     return getNodeAvailableVars({
 
-       parentNode,
 
-       beforeNodes: uniqBy(availableNodes, 'id').filter(node => node.id !== nodeId),
 
-       isChatMode,
 
-       filterVar,
 
-     })
 
-   }, [nodes, getBeforeNodesInSameBranchIncludeParent, getNodeAvailableVars, isChatMode])
 
-   return getAvailableVars
 
- }
 
- export const useHandleAddOperationItem = () => {
 
-   return useCallback((list: any[]) => {
 
-     const newItem = {
 
-       variable_selector: [],
 
-       write_mode: WriteMode.overwrite,
 
-       input_type: AssignerNodeInputType.variable,
 
-       value: '',
 
-     }
 
-     return [...list, newItem]
 
-   }, [])
 
- }
 
 
  |