mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 19:03:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			88 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import type { FC } from 'react'
 | |
| import React from 'react'
 | |
| import { useTranslation } from 'react-i18next'
 | |
| 
 | |
| import VarReferencePicker from '../_base/components/variable/var-reference-picker'
 | |
| import OptionCard from '../_base/components/option-card'
 | |
| import useConfig from './use-config'
 | |
| import { WriteMode } from './types'
 | |
| import type { AssignerNodeType } from './types'
 | |
| import Field from '@/app/components/workflow/nodes/_base/components/field'
 | |
| import { type NodePanelProps } from '@/app/components/workflow/types'
 | |
| import cn from '@/utils/classnames'
 | |
| 
 | |
| const i18nPrefix = 'workflow.nodes.assigner'
 | |
| 
 | |
| const Panel: FC<NodePanelProps<AssignerNodeType>> = ({
 | |
|   id,
 | |
|   data,
 | |
| }) => {
 | |
|   const { t } = useTranslation()
 | |
| 
 | |
|   const {
 | |
|     readOnly,
 | |
|     inputs,
 | |
|     handleAssignedVarChanges,
 | |
|     isSupportAppend,
 | |
|     writeModeTypes,
 | |
|     handleWriteModeChange,
 | |
|     filterAssignedVar,
 | |
|     filterToAssignedVar,
 | |
|     handleToAssignedVarChange,
 | |
|     toAssignedVarType,
 | |
|   } = useConfig(id, data)
 | |
| 
 | |
|   return (
 | |
|     <div className='mt-2'>
 | |
|       <div className='px-4 pb-4 space-y-4'>
 | |
|         <Field
 | |
|           title={t(`${i18nPrefix}.assignedVariable`)}
 | |
|         >
 | |
|           <VarReferencePicker
 | |
|             readonly={readOnly}
 | |
|             nodeId={id}
 | |
|             isShowNodeName
 | |
|             value={inputs.assigned_variable_selector || []}
 | |
|             onChange={handleAssignedVarChanges}
 | |
|             filterVar={filterAssignedVar}
 | |
|           />
 | |
|         </Field>
 | |
|         <Field
 | |
|           title={t(`${i18nPrefix}.writeMode`)}
 | |
|         >
 | |
|           <div className={cn('grid gap-2 grid-cols-3')}>
 | |
|             {writeModeTypes.map(type => (
 | |
|               <OptionCard
 | |
|                 key={type}
 | |
|                 title={t(`${i18nPrefix}.${type}`)}
 | |
|                 onSelect={handleWriteModeChange(type)}
 | |
|                 selected={inputs.write_mode === type}
 | |
|                 disabled={!isSupportAppend && type === WriteMode.Append}
 | |
|                 tooltip={type === WriteMode.Append ? t(`${i18nPrefix}.writeModeTip`)! : undefined}
 | |
|               />
 | |
|             ))}
 | |
|           </div>
 | |
|         </Field>
 | |
|         {inputs.write_mode !== WriteMode.Clear && (
 | |
|           <Field
 | |
|             title={t(`${i18nPrefix}.setVariable`)}
 | |
|           >
 | |
|             <VarReferencePicker
 | |
|               readonly={readOnly}
 | |
|               nodeId={id}
 | |
|               isShowNodeName
 | |
|               value={inputs.input_variable_selector || []}
 | |
|               onChange={handleToAssignedVarChange}
 | |
|               filterVar={filterToAssignedVar}
 | |
|               valueTypePlaceHolder={toAssignedVarType}
 | |
|             />
 | |
|           </Field>
 | |
|         )}
 | |
| 
 | |
|       </div>
 | |
|     </div>
 | |
|   )
 | |
| }
 | |
| 
 | |
| export default React.memo(Panel)
 | 
