import { useTranslate } from '@/hooks/common-hooks'; import { IModalProps } from '@/interfaces/common'; import { Drawer, Flex, Form, Input } from 'antd'; import { useEffect } from 'react'; import { Node } from 'reactflow'; import AnswerForm from '../answer-form'; import ArXivForm from '../arxiv-form'; import BaiduFanyiForm from '../baidu-fanyi-form'; import BaiduForm from '../baidu-form'; import BeginForm from '../begin-form'; import BingForm from '../bing-form'; import CategorizeForm from '../categorize-form'; import { Operator } from '../constant'; import DeepLForm from '../deepl-form'; import DuckDuckGoForm from '../duckduckgo-form'; import ExeSQLForm from '../exesql-form'; import GenerateForm from '../generate-form'; import GithubForm from '../github-form'; import GoogleForm from '../google-form'; import GoogleScholarForm from '../google-scholar-form'; import { useHandleFormValuesChange, useHandleNodeNameChange } from '../hooks'; import KeywordExtractForm from '../keyword-extract-form'; import MessageForm from '../message-form'; import OperatorIcon from '../operator-icon'; import PubMedForm from '../pubmed-form'; import QWeatherForm from '../qweather-form'; import RelevantForm from '../relevant-form'; import RetrievalForm from '../retrieval-form'; import RewriteQuestionForm from '../rewrite-question-form'; import SwitchForm from '../switch-form'; import WikipediaForm from '../wikipedia-form'; import styles from './index.less'; interface IProps { node?: Node; } const FormMap = { [Operator.Begin]: BeginForm, [Operator.Retrieval]: RetrievalForm, [Operator.Generate]: GenerateForm, [Operator.Answer]: AnswerForm, [Operator.Categorize]: CategorizeForm, [Operator.Message]: MessageForm, [Operator.Relevant]: RelevantForm, [Operator.RewriteQuestion]: RewriteQuestionForm, [Operator.Baidu]: BaiduForm, [Operator.DuckDuckGo]: DuckDuckGoForm, [Operator.KeywordExtract]: KeywordExtractForm, [Operator.Wikipedia]: WikipediaForm, [Operator.PubMed]: PubMedForm, [Operator.ArXiv]: ArXivForm, [Operator.Google]: GoogleForm, [Operator.Bing]: BingForm, [Operator.GoogleScholar]: GoogleScholarForm, [Operator.DeepL]: DeepLForm, [Operator.GitHub]: GithubForm, [Operator.BaiduFanyi]: BaiduFanyiForm, [Operator.QWeather]: QWeatherForm, [Operator.ExeSQL]: ExeSQLForm, [Operator.Switch]: SwitchForm, }; const EmptyContent = () =>
empty
; const FlowDrawer = ({ visible, hideModal, node, }: IModalProps & IProps) => { const operatorName: Operator = node?.data.label; const OperatorForm = FormMap[operatorName] ?? EmptyContent; const [form] = Form.useForm(); const { name, handleNameBlur, handleNameChange } = useHandleNodeNameChange(node); const { t } = useTranslate('flow'); const { handleValuesChange } = useHandleFormValuesChange(node?.id); useEffect(() => { if (visible) { form.setFieldsValue(node?.data?.form); } }, [visible, form, node?.data?.form]); return ( } placement="right" onClose={hideModal} open={visible} getContainer={false} mask={false} width={470} > {visible && ( )} ); }; export default FlowDrawer;