import Editor, { loader } from '@monaco-editor/react'; import { INextOperatorForm } from '../../interface'; import { FormContainer } from '@/components/form-container'; import { useIsDarkTheme } from '@/components/theme-provider'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@/components/ui/form'; import { Input } from '@/components/ui/input'; import { RAGFlowSelect } from '@/components/ui/select'; import { ProgrammingLanguage } from '@/constants/agent'; import { ICodeForm } from '@/interfaces/database/agent'; import { zodResolver } from '@hookform/resolvers/zod'; import { memo } from 'react'; import { useForm } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; import { buildOutputList } from '../../utils/build-output-list'; import { FormWrapper } from '../components/form-wrapper'; import { Output } from '../components/output'; import { DynamicInputVariable, TypeOptions, VariableTitle, } from './next-variable'; import { FormSchema, FormSchemaType } from './schema'; import { useValues } from './use-values'; import { useHandleLanguageChange, useWatchFormChange, } from './use-watch-change'; loader.config({ paths: { vs: '/vs' } }); const options = [ ProgrammingLanguage.Python, ProgrammingLanguage.Javascript, ].map((x) => ({ value: x, label: x })); const DynamicFieldName = 'outputs'; function CodeForm({ node }: INextOperatorForm) { const formData = node?.data.form as ICodeForm; const { t } = useTranslation(); const values = useValues(node); const isDarkTheme = useIsDarkTheme(); const form = useForm({ defaultValues: values, resolver: zodResolver(FormSchema), }); useWatchFormChange(node?.id, form); const handleLanguageChange = useHandleLanguageChange(node?.id, form); return (
( Code ( { field.onChange(val); handleLanguageChange(val); }} options={options} /> )} /> )} /> {formData.lang === ProgrammingLanguage.Python ? ( ) : (
( Name )} /> ( Type )} />
)}
); } export default memo(CodeForm);