Spaces:
Build error
Build error
import type { FC } from 'react' | |
import React from 'react' | |
import { useTranslation } from 'react-i18next' | |
import Field from '../_base/components/field' | |
import RemoveEffectVarConfirm from '../_base/components/remove-effect-var-confirm' | |
import useConfig from './use-config' | |
import type { VariableAssignerNodeType } from './types' | |
import VarGroupItem from './components/var-group-item' | |
import cn from '@/utils/classnames' | |
import { type NodePanelProps } from '@/app/components/workflow/types' | |
import Split from '@/app/components/workflow/nodes/_base/components/split' | |
import OutputVars, { VarItem } from '@/app/components/workflow/nodes/_base/components/output-vars' | |
import Switch from '@/app/components/base/switch' | |
import AddButton from '@/app/components/workflow/nodes/_base/components/add-button' | |
const i18nPrefix = 'workflow.nodes.variableAssigner' | |
const Panel: FC<NodePanelProps<VariableAssignerNodeType>> = ({ | |
id, | |
data, | |
}) => { | |
const { t } = useTranslation() | |
const { | |
readOnly, | |
inputs, | |
handleListOrTypeChange, | |
isEnableGroup, | |
handleGroupEnabledChange, | |
handleAddGroup, | |
handleListOrTypeChangeInGroup, | |
handleGroupRemoved, | |
handleVarGroupNameChange, | |
isShowRemoveVarConfirm, | |
hideRemoveVarConfirm, | |
onRemoveVarConfirm, | |
getAvailableVars, | |
filterVar, | |
} = useConfig(id, data) | |
return ( | |
<div className='mt-2'> | |
<div className='px-4 pb-4 space-y-4'> | |
{!isEnableGroup | |
? ( | |
<VarGroupItem | |
readOnly={readOnly} | |
nodeId={id} | |
payload={{ | |
output_type: inputs.output_type, | |
variables: inputs.variables, | |
}} | |
onChange={handleListOrTypeChange} | |
groupEnabled={false} | |
availableVars={getAvailableVars(id, 'target', filterVar(inputs.output_type), true)} | |
/> | |
) | |
: (<div> | |
<div className='space-y-2'> | |
{inputs.advanced_settings?.groups.map((item, index) => ( | |
<div key={item.groupId}> | |
<VarGroupItem | |
readOnly={readOnly} | |
nodeId={id} | |
payload={item} | |
onChange={handleListOrTypeChangeInGroup(item.groupId)} | |
groupEnabled | |
canRemove={!readOnly && inputs.advanced_settings?.groups.length > 1} | |
onRemove={handleGroupRemoved(item.groupId)} | |
onGroupNameChange={handleVarGroupNameChange(item.groupId)} | |
availableVars={getAvailableVars(id, item.groupId, filterVar(item.output_type), true)} | |
/> | |
{index !== inputs.advanced_settings?.groups.length - 1 && <Split className='my-4' />} | |
</div> | |
))} | |
</div> | |
<AddButton | |
className='mt-2' | |
text={t(`${i18nPrefix}.addGroup`)} | |
onClick={handleAddGroup} | |
/> | |
</div>)} | |
</div> | |
<Split /> | |
<div className={cn('px-4 pt-4', isEnableGroup ? 'pb-4' : 'pb-2')}> | |
<Field | |
title={t(`${i18nPrefix}.aggregationGroup`)} | |
tooltip={t(`${i18nPrefix}.aggregationGroupTip`)!} | |
operations={ | |
<Switch | |
defaultValue={isEnableGroup} | |
onChange={handleGroupEnabledChange} | |
size='md' | |
disabled={readOnly} | |
/> | |
} | |
/> | |
</div> | |
{isEnableGroup && ( | |
<> | |
<Split /> | |
<div className='px-4 pt-4 pb-2'> | |
<OutputVars> | |
<> | |
{inputs.advanced_settings?.groups.map((item, index) => ( | |
<VarItem | |
key={index} | |
name={`${item.group_name}.output`} | |
type={item.output_type} | |
description={t(`${i18nPrefix}.outputVars.varDescribe`, { | |
groupName: item.group_name, | |
})} | |
/> | |
))} | |
</> | |
</OutputVars> | |
</div> | |
</> | |
)} | |
<RemoveEffectVarConfirm | |
isShow={isShowRemoveVarConfirm} | |
onCancel={hideRemoveVarConfirm} | |
onConfirm={onRemoveVarConfirm} | |
/> | |
</div> | |
) | |
} | |
export default React.memo(Panel) | |