Spaces:
Build error
Build error
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) | |