import React, { useMemo, useState } from 'react'; import { Box, useTheme, Flex, Image } from '@chakra-ui/react'; import type { ChatHistoryItemResType } from '@fastgpt/global/core/chat/type.d'; import { useTranslation } from 'next-i18next'; import { moduleTemplatesFlat } from '@/web/core/modules/template/system'; import Tabs from '../Tabs'; import MyModal from '../MyModal'; import MyTooltip from '../MyTooltip'; import { QuestionOutlineIcon } from '@chakra-ui/icons'; import { formatStorePrice2Read } from '@fastgpt/global/support/wallet/bill/tools'; import Markdown from '../Markdown'; import { QuoteList } from './QuoteModal'; import { DatasetSearchModeMap } from '@fastgpt/global/core/dataset/constants'; function Row({ label, value, rawDom }: { label: string; value?: string | number | boolean; rawDom?: React.ReactNode; }) { const { t } = useTranslation(); const theme = useTheme(); const val = value || rawDom; const strValue = `${value}`; const isCodeBlock = strValue.startsWith('~~~json'); return val !== undefined && val !== '' && val !== 'undefined' ? ( {t(label)}: {value && } {rawDom} ) : null; } const WholeResponseModal = ({ response, isShare, onClose }: { response: ChatHistoryItemResType[]; isShare: boolean; onClose: () => void; }) => { const { t } = useTranslation(); return ( {t('core.chat.response.Complete Response')} } > ); }; export default WholeResponseModal; const ResponseBox = React.memo(function ResponseBox({ response, isShare }: { response: ChatHistoryItemResType[]; isShare: boolean; }) { const theme = useTheme(); const { t } = useTranslation(); const list = useMemo( () => response.map((item, i) => ({ label: ( item.moduleType === template.flowType) ?.avatar } alt={''} w={['14px', '16px']} /> {t(item.moduleName)} ), id: `${i}` })), [response, t] ); const [currentTab, setCurrentTab] = useState(`0`); const activeModule = useMemo(() => response[Number(currentTab)], [currentTab, response]); return ( <> <> {activeModule?.price !== undefined && ( )} {/* ai chat */} <> {activeModule.historyPreview?.map((item, i) => ( {item.obj} {item.value} ))} ) : ( '' ) } /> {activeModule.quoteList && activeModule.quoteList.length > 0 && ( } /> )} {/* dataset search */} <> {activeModule?.searchMode && ( )} {/* classify question */} <> { if (!activeModule?.cqList) return ''; return activeModule.cqList.map((item) => `* ${item.value}`).join('\n'); })()} /> {/* extract */} <> {activeModule?.extractResult && ( )} {/* http */} <> {activeModule?.body && ( )} {activeModule?.httpResult && ( )} {/* plugin */} <> {activeModule?.pluginDetail && activeModule?.pluginDetail.length > 0 && ( } /> )} {activeModule?.pluginOutput && ( )} {/* text output */} ); });