Skip to content

Commit 8e5fb06

Browse files
feat: add code highlight in markdown
1 parent ba97960 commit 8e5fb06

File tree

3 files changed

+446
-1
lines changed

3 files changed

+446
-1
lines changed

app/components/Message.js

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import ReactMarkdown from 'react-markdown';
2+
import {dark} from "react-syntax-highlighter/src/styles/hljs";
3+
import { Prism as SyntaxHighlighter } from "react-syntax-highlighter";
24

35
const Message = ({ message, isUser }) => {
46
let containerClass = "bg-gray-50";
@@ -27,7 +29,32 @@ const Message = ({ message, isUser }) => {
2729
)}
2830

2931
<div className="flex flex-col text-sm sm:text-base flex-1 gap-y-4 mt-1">
30-
<ReactMarkdown>{message}</ReactMarkdown>
32+
<ReactMarkdown
33+
children={message}
34+
components={{
35+
code(props) {
36+
const {children, className, node, ...rest} = props
37+
const match = /language-(\w+)/.exec(className || '')
38+
return match ? (
39+
<SyntaxHighlighter
40+
{...rest}
41+
PreTag="div"
42+
children={String(children).replace(/\n$/, '')}
43+
language={match[1]}
44+
style={dark}
45+
/>
46+
) : (
47+
<code {...rest} className={className}>
48+
{children}
49+
</code>
50+
)
51+
}
52+
}}
53+
/>
54+
{/*<ReactMarkdown*/}
55+
{/*>*/}
56+
{/* {message}*/}
57+
{/*</ReactMarkdown>*/}
3158
</div>
3259
</div>
3360
);

0 commit comments

Comments
 (0)