import React, { memo, useMemo } from 'react'; import ReactMarkdown from 'react-markdown'; import styles from './index.module.scss'; import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'; import { codeLight } from './codeLight'; import { Box, Flex } from '@chakra-ui/react'; import { useCopyData } from '@/utils/tools'; import Icon from '@/components/Icon'; import remarkGfm from 'remark-gfm'; import remarkMath from 'remark-math'; import rehypeKatex from 'rehype-katex'; const Markdown = ({ source, isChatting }: { source: string; isChatting: boolean }) => { const formatSource = useMemo(() => source.replace(/\n/g, ' \n'), [source]); const { copyData } = useCopyData(); return ( {match?.[1]} copyData(code)} alignItems={'center'}> 复制代码 {code} ) : ( {children} ); } }} linkTarget="_blank" > {formatSource} ); }; export default memo(Markdown);