import React, { memo, useMemo } from 'react'; import ReactMarkdown from 'react-markdown'; import { formatLinkText } from '@/utils/tools'; import remarkGfm from 'remark-gfm'; import remarkMath from 'remark-math'; import rehypeKatex from 'rehype-katex'; import 'katex/dist/katex.min.css'; import styles from './index.module.scss'; import CodeLight from './codeLight'; import Loading from './Loading'; import MermaidCodeBlock from './MermaidCodeBlock'; const Markdown = ({ source, isChatting = false, formatLink }: { source: string; formatLink?: boolean; isChatting?: boolean; }) => { const formatSource = useMemo(() => { return formatLink ? formatLinkText(source) : source; }, [source, formatLink]); return ( : ; } return ( {children} ); } }} linkTarget="_blank" > {formatSource} ); }; export default memo(Markdown);