- 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)
 
 
  |