import type { FC } from 'react' import React from 'react' import { useTranslation } from 'react-i18next' import RemoveEffectVarConfirm from '../_base/components/remove-effect-var-confirm' import useConfig from './use-config' import type { CodeNodeType } from './types' import { CodeLanguage } from './types' import Dependencies from './dependency' import VarList from '@/app/components/workflow/nodes/_base/components/variable/var-list' import OutputVarList from '@/app/components/workflow/nodes/_base/components/variable/output-var-list' import AddButton from '@/app/components/base/button/add-button' import Field from '@/app/components/workflow/nodes/_base/components/field' import Split from '@/app/components/workflow/nodes/_base/components/split' import CodeEditor from '@/app/components/workflow/nodes/_base/components/editor/code-editor' import TypeSelector from '@/app/components/workflow/nodes/_base/components/selector' import type { NodePanelProps } from '@/app/components/workflow/types' import BeforeRunForm from '@/app/components/workflow/nodes/_base/components/before-run-form' import ResultPanel from '@/app/components/workflow/run/result-panel' const i18nPrefix = 'workflow.nodes.code' const codeLanguages = [ { label: 'Python3', value: CodeLanguage.python3, }, { label: 'JavaScript', value: CodeLanguage.javascript, }, ] const Panel: FC> = ({ id, data, }) => { const { t } = useTranslation() const { readOnly, inputs, outputKeyOrders, handleVarListChange, handleAddVariable, handleRemoveVariable, handleCodeChange, handleCodeLanguageChange, handleVarsChange, handleAddOutputVariable, filterVar, isShowRemoveVarConfirm, hideRemoveVarConfirm, onRemoveVarConfirm, // single run isShowSingleRun, hideSingleRun, runningStatus, handleRun, handleStop, runResult, varInputs, inputVarValues, setInputVarValues, allowDependencies, availableDependencies, handleAddDependency, handleRemoveDependency, handleChangeDependency, } = useConfig(id, data) return (
: undefined } > { allowDependencies ? (
handleAddDependency({ name: '', version: '' })} /> } tooltip={t(`${i18nPrefix}.advancedDependenciesTip`)!} > handleRemoveDependency(index)} handleChange={(index, dependency) => handleChangeDependency(index, dependency)} />
) : null } } language={inputs.code_language} value={inputs.code} onChange={handleCodeChange} />
} >
{ isShowSingleRun && ( } /> ) }
) } export default React.memo(Panel)