import { useState } from 'react' import { useTranslation } from 'react-i18next' import { RiArrowRightSLine, RiDeleteBinLine, RiFileList3Line, RiLoader2Line, // RiErrorWarningFill, } from '@remixicon/react' // import Button from '@/app/components/base/button' import ActionButton from '@/app/components/base/action-button' import Tooltip from '@/app/components/base/tooltip' import BlockIcon from '@/app/components/workflow/block-icon' import { BubbleX, Env, } from '@/app/components/base/icons/src/vender/line/others' import { Variable02 } from '@/app/components/base/icons/src/vender/solid/development' import type { currentVarType } from './panel' import { VarInInspectType } from '@/types/workflow' import type { NodeWithVar, VarInInspect } from '@/types/workflow' import cn from '@/utils/classnames' import { useToolIcon } from '../hooks' type Props = { nodeData?: NodeWithVar currentVar?: currentVarType varType: VarInInspectType varList: VarInInspect[] handleSelect: (state: any) => void handleView?: () => void handleClear?: () => void } const Group = ({ nodeData, currentVar, varType, varList, handleSelect, handleView, handleClear, }: Props) => { const { t } = useTranslation() const [isCollapsed, setIsCollapsed] = useState(false) const toolIcon = useToolIcon(nodeData?.nodePayload as any) const isEnv = varType === VarInInspectType.environment const isChatVar = varType === VarInInspectType.conversation const isSystem = varType === VarInInspectType.system const visibleVarList = isEnv ? varList : varList.filter(v => v.visible) const handleSelectVar = (varItem: any, type?: string) => { if (type === VarInInspectType.environment) { handleSelect({ nodeId: VarInInspectType.environment, title: VarInInspectType.environment, nodeType: VarInInspectType.environment, var: { ...varItem, type: VarInInspectType.environment, ...(varItem.value_type === 'secret' ? { value: '******************' } : {}), }, }) return } if (type === VarInInspectType.conversation) { handleSelect({ nodeId: VarInInspectType.conversation, nodeType: VarInInspectType.conversation, title: VarInInspectType.conversation, var: { ...varItem, type: VarInInspectType.conversation, }, }) return } if (type === VarInInspectType.system) { handleSelect({ nodeId: VarInInspectType.system, nodeType: VarInInspectType.system, title: VarInInspectType.system, var: { ...varItem, type: VarInInspectType.system, }, }) return } if (!nodeData) return handleSelect({ nodeId: nodeData.nodeId, nodeType: nodeData.nodeType, title: nodeData.title, var: varItem, }) } return (
{/* node item */}
{nodeData?.isSingRunRunning && ( )} {(!nodeData || !nodeData.isSingRunRunning) && visibleVarList.length > 0 && ( setIsCollapsed(!isCollapsed)} /> )}
setIsCollapsed(!isCollapsed)}> {nodeData && ( <>
{nodeData.title}
)} {!nodeData && (
{isEnv && t('workflow.debug.variableInspect.envNode')} {isChatVar && t('workflow.debug.variableInspect.chatNode')} {isSystem && t('workflow.debug.variableInspect.systemNode')}
)}
{nodeData && !nodeData.isSingRunRunning && (
)}
{/* var item list */} {!isCollapsed && !nodeData?.isSingRunRunning && (
{visibleVarList.length > 0 && visibleVarList.map(varItem => (
handleSelectVar(varItem, varType)} > {isEnv && } {isChatVar && } {(isSystem || nodeData) && }
{varItem.name}
{varItem.value_type}
))}
)}
) } export default Group