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 */}
>
);
});