From 969cf8ea21ba27dc865e3764cf756299ed857244 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Sat, 12 Oct 2024 17:37:56 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=20input=20=E7=AD=89?= =?UTF-8?q?=E8=BE=93=E5=85=A5=E6=A0=87=E7=AD=BE=E7=9A=84=E6=B8=B2=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/assets/styles/markdown.scss | 2 ++ .../src/pages/home/Markdown/Markdown.tsx | 24 ++++++++++--------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/renderer/src/assets/styles/markdown.scss b/src/renderer/src/assets/styles/markdown.scss index af007f98..7b6e0656 100644 --- a/src/renderer/src/assets/styles/markdown.scss +++ b/src/renderer/src/assets/styles/markdown.scss @@ -55,6 +55,8 @@ p { margin: 1em 0; + white-space: pre-wrap; + &:last-child { margin-bottom: 5px; } diff --git a/src/renderer/src/pages/home/Markdown/Markdown.tsx b/src/renderer/src/pages/home/Markdown/Markdown.tsx index d4bb34af..0b810c49 100644 --- a/src/renderer/src/pages/home/Markdown/Markdown.tsx +++ b/src/renderer/src/pages/home/Markdown/Markdown.tsx @@ -21,15 +21,6 @@ interface Props { message: Message } -const rehypePlugins = [rehypeRaw, rehypeMathjax] -const remarkPlugins = [remarkMath, remarkGfm] - -const components = { - code: CodeBlock, - a: Link, - img: ImagePreview -} - const Markdown: FC = ({ message }) => { const { t } = useTranslation() const { renderInputMessageAsMarkdown } = useSettings() @@ -41,6 +32,11 @@ const Markdown: FC = ({ message }) => { return escapeBrackets(content) }, [message.content, message.status, t]) + const rehypePlugins = useMemo(() => { + const hasUnsafeElements = /<(input|textarea|select)/i.test(messageContent) + return hasUnsafeElements ? [rehypeMathjax] : [rehypeRaw, rehypeMathjax] + }, [messageContent]) + if (message.role === 'user' && !renderInputMessageAsMarkdown) { return

{messageContent}

} @@ -49,8 +45,14 @@ const Markdown: FC = ({ message }) => { } + remarkPlugins={[remarkMath, remarkGfm]} + components={ + { + a: Link, + code: CodeBlock, + img: ImagePreview + } as Partial + } remarkRehypeOptions={{ footnoteLabel: t('common.footnotes'), footnoteLabelTagName: 'h4',