1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
| 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,
| availableNodes,
| isChatMode,
| isConstant,
| }: {
| valueSelector: ValueSelector
| parentNode?: Node | null
| isIterationItem?: boolean
| availableNodes: any[]
| isChatMode: boolean
| isConstant?: boolean
| }) => {
| return getVarType({
| parentNode,
| valueSelector,
| isIterationItem,
| availableNodes,
| isChatMode,
| isConstant,
| environmentVariables,
| conversationVariables,
| })
| }, [conversationVariables, environmentVariables])
|
| return {
| getNodeAvailableVars,
| getCurrentVariableType,
| }
| }
|
|