LibreChat/client/src/components/Messages/Content/Highlight.jsx

33 lines
940 B
React
Raw Normal View History

import React, { useState, useEffect } from 'react';
2023-03-19 11:25:12 -04:00
import Highlighter from 'react-highlight';
import hljs from 'highlight.js';
2023-03-19 01:14:19 -04:00
import { languages } from '~/utils/languages';
2023-03-19 11:25:12 -04:00
const Highlight = React.memo(({ language, code }) => {
const [highlightedCode, setHighlightedCode] = useState(code);
2023-03-19 11:25:12 -04:00
const lang = language ? language : 'javascript';
useEffect(() => {
setHighlightedCode(hljs.highlight(code, { language: lang }).value);
}, [code, lang]);
return (
<pre>
2023-03-19 11:25:12 -04:00
{!highlightedCode ? (
// <code className={`hljs !whitespace-pre language-${lang ? lang: 'javascript'}`}>
<Highlighter className={`hljs !whitespace-pre language-${lang ? lang : 'javascript'}`}>
{code}
</Highlighter>
) : (
<code
className={`hljs language-${lang}`}
dangerouslySetInnerHTML={{ __html: highlightedCode }}
/>
)}
</pre>
);
2023-03-19 11:25:12 -04:00
});
export default Highlight;