Spaces:
Paused
Paused
| import type { FC } from 'react' | |
| import React from 'react' | |
| import { useTranslation } from 'react-i18next' | |
| import RemoveEffectVarConfirm from '../_base/components/remove-effect-var-confirm' | |
| import VarList from './components/var-list' | |
| import VarItem from './components/var-item' | |
| import useConfig from './use-config' | |
| import type { StartNodeType } from './types' | |
| import Split from '@/app/components/workflow/nodes/_base/components/split' | |
| import Field from '@/app/components/workflow/nodes/_base/components/field' | |
| import AddButton from '@/app/components/base/button/add-button' | |
| import ConfigVarModal from '@/app/components/app/configuration/config-var/config-modal' | |
| import type { InputVar, NodePanelProps } from '@/app/components/workflow/types' | |
| const i18nPrefix = 'workflow.nodes.start' | |
| const Panel: FC<NodePanelProps<StartNodeType>> = ({ | |
| id, | |
| data, | |
| }) => { | |
| const { t } = useTranslation() | |
| const { | |
| readOnly, | |
| isChatMode, | |
| inputs, | |
| isShowAddVarModal, | |
| showAddVarModal, | |
| handleAddVariable, | |
| hideAddVarModal, | |
| handleVarListChange, | |
| isShowRemoveVarConfirm, | |
| hideRemoveVarConfirm, | |
| onRemoveVarConfirm, | |
| } = useConfig(id, data) | |
| const handleAddVarConfirm = (payload: InputVar) => { | |
| handleAddVariable(payload) | |
| hideAddVarModal() | |
| } | |
| return ( | |
| <div className='mt-2'> | |
| <div className='px-4 pb-2 space-y-4'> | |
| <Field | |
| title={t(`${i18nPrefix}.inputField`)} | |
| operations={ | |
| !readOnly ? <AddButton onClick={showAddVarModal} /> : undefined | |
| } | |
| > | |
| <> | |
| <VarList | |
| readonly={readOnly} | |
| list={inputs.variables || []} | |
| onChange={handleVarListChange} | |
| /> | |
| <div className='mt-1 space-y-1'> | |
| <Split className='my-2' /> | |
| { | |
| isChatMode && ( | |
| <VarItem | |
| readonly | |
| payload={{ | |
| variable: 'sys.query', | |
| } as any} | |
| rightContent={ | |
| <div className='text-xs font-normal text-gray-500'> | |
| String | |
| </div> | |
| } | |
| />) | |
| } | |
| <VarItem | |
| readonly | |
| showLegacyBadge={!isChatMode} | |
| payload={{ | |
| variable: 'sys.files', | |
| } as any} | |
| rightContent={ | |
| <div className='text-xs font-normal text-gray-500'> | |
| Array[File] | |
| </div> | |
| } | |
| /> | |
| { | |
| isChatMode && ( | |
| <> | |
| <VarItem | |
| readonly | |
| payload={{ | |
| variable: 'sys.dialogue_count', | |
| } as any} | |
| rightContent={ | |
| <div className='text-xs font-normal text-gray-500'> | |
| Number | |
| </div> | |
| } | |
| /> | |
| <VarItem | |
| readonly | |
| payload={{ | |
| variable: 'sys.conversation_id', | |
| } as any} | |
| rightContent={ | |
| <div className='text-xs font-normal text-gray-500'> | |
| String | |
| </div> | |
| } | |
| /> | |
| </> | |
| ) | |
| } | |
| <VarItem | |
| readonly | |
| payload={{ | |
| variable: 'sys.user_id', | |
| } as any} | |
| rightContent={ | |
| <div className='text-xs font-normal text-gray-500'> | |
| String | |
| </div> | |
| } | |
| /> | |
| <VarItem | |
| readonly | |
| payload={{ | |
| variable: 'sys.app_id', | |
| } as any} | |
| rightContent={ | |
| <div className='text-xs font-normal text-gray-500'> | |
| String | |
| </div> | |
| } | |
| /> | |
| <VarItem | |
| readonly | |
| payload={{ | |
| variable: 'sys.workflow_id', | |
| } as any} | |
| rightContent={ | |
| <div className='text-xs font-normal text-gray-500'> | |
| String | |
| </div> | |
| } | |
| /> | |
| <VarItem | |
| readonly | |
| payload={{ | |
| variable: 'sys.workflow_run_id', | |
| } as any} | |
| rightContent={ | |
| <div className='text-xs font-normal text-gray-500'> | |
| String | |
| </div> | |
| } | |
| /> | |
| </div> | |
| </> | |
| </Field> | |
| </div> | |
| {isShowAddVarModal && ( | |
| <ConfigVarModal | |
| isCreate | |
| supportFile | |
| isShow={isShowAddVarModal} | |
| onClose={hideAddVarModal} | |
| onConfirm={handleAddVarConfirm} | |
| varKeys={inputs.variables.map(v => v.variable)} | |
| /> | |
| )} | |
| <RemoveEffectVarConfirm | |
| isShow={isShowRemoveVarConfirm} | |
| onCancel={hideRemoveVarConfirm} | |
| onConfirm={onRemoveVarConfirm} | |
| /> | |
| </div> | |
| ) | |
| } | |
| export default React.memo(Panel) | |