Skip to content

Commit 4ae9ea0

Browse files
committed
fix: md wrap
1 parent 4281749 commit 4ae9ea0

File tree

1 file changed

+69
-20
lines changed

1 file changed

+69
-20
lines changed

src/components/MessageBubble.tsx

Lines changed: 69 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,27 @@ function MessageDetail({ chat, renderMarkdown }: MessageDetailProps) {
7979
chat.hide ? (
8080
mdt.text?.trim().slice(0, 16) + " ..."
8181
) : renderMarkdown ? (
82-
<Markdown
82+
<Markdown
8383
remarkPlugins={[remarkMath, remarkGfm]}
8484
rehypePlugins={[rehypeKatex, rehypeHighlight]}
85-
className={"prose max-w-none"}
85+
className={"prose max-w-none break-words overflow-wrap-anywhere"}
86+
components={{
87+
p: ({ children }: any) => (
88+
<p className="break-words whitespace-pre-wrap overflow-wrap-anywhere">
89+
{children}
90+
</p>
91+
),
92+
code: ({ children }: any) => (
93+
<code className="break-all whitespace-pre-wrap">
94+
{children}
95+
</code>
96+
),
97+
pre: ({ children }: any) => (
98+
<pre className="break-words whitespace-pre-wrap overflow-x-auto">
99+
{children}
100+
</pre>
101+
),
102+
}}
86103
>
87104
{mdt.text}
88105
</Markdown>
@@ -356,22 +373,35 @@ export default function Message(props: { messageIndex: number }) {
356373
"embed",
357374
"hr",
358375
]}
359-
// allowElement={(element) => {
360-
// return [
361-
// "p",
362-
// "em",
363-
// "strong",
364-
// "del",
365-
// "code",
366-
// "inlineCode",
367-
// "blockquote",
368-
// "ul",
369-
// "ol",
370-
// "li",
371-
// "pre",
372-
// ].includes(element.tagName);
373-
// }}
374-
className={"prose max-w-none"}
376+
className={
377+
"prose max-w-none break-words overflow-wrap-anywhere"
378+
}
379+
components={{
380+
p: ({ children, node }: any) => {
381+
if (node?.parent?.type === "listItem") {
382+
return (
383+
<span className="break-words whitespace-pre-wrap overflow-wrap-anywhere">
384+
{children}
385+
</span>
386+
);
387+
}
388+
return (
389+
<p className="break-words whitespace-pre-wrap overflow-wrap-anywhere">
390+
{children}
391+
</p>
392+
);
393+
},
394+
code: ({ children }: any) => (
395+
<code className="break-all whitespace-pre-wrap">
396+
{children}
397+
</code>
398+
),
399+
pre: ({ children }: any) => (
400+
<pre className="break-words whitespace-pre-wrap overflow-x-auto">
401+
{children}
402+
</pre>
403+
),
404+
}}
375405
>
376406
{getMessageText(chat)}
377407
</Markdown>
@@ -446,13 +476,32 @@ export default function Message(props: { messageIndex: number }) {
446476
<Markdown
447477
remarkPlugins={[remarkMath, remarkGfm]}
448478
rehypePlugins={[rehypeKatex, rehypeHighlight]}
479+
className={"max-w-none break-words overflow-wrap-anywhere"}
449480
components={{
450481
p: ({ children, node }: any) => {
451482
if (node?.parent?.type === "listItem") {
452-
return <>{children}</>;
483+
return (
484+
<span className="break-words whitespace-pre-wrap overflow-wrap-anywhere">
485+
{children}
486+
</span>
487+
);
453488
}
454-
return <p>{children}</p>;
489+
return (
490+
<p className="break-words whitespace-pre-wrap overflow-wrap-anywhere">
491+
{children}
492+
</p>
493+
);
455494
},
495+
code: ({ children }: any) => (
496+
<code className="break-all whitespace-pre-wrap">
497+
{children}
498+
</code>
499+
),
500+
pre: ({ children }: any) => (
501+
<pre className="break-words whitespace-pre-wrap overflow-x-auto">
502+
{children}
503+
</pre>
504+
),
456505
}}
457506
>
458507
{getMessageText(chat)}

0 commit comments

Comments
 (0)