2023-02-23 23:56:55 -05:00
|
|
|
import React, { useState, useEffect } from 'react';
|
|
|
|
|
import hljs from 'highlight.js';
|
2023-03-11 10:28:46 -05:00
|
|
|
import languages from '~/utils/languages';
|
2023-02-23 23:56:55 -05:00
|
|
|
|
|
|
|
|
export default function Highlight({language, code}) {
|
|
|
|
|
const [highlightedCode, setHighlightedCode] = useState(code);
|
2023-03-11 10:28:46 -05:00
|
|
|
const lang = languages.has(language) ? language : 'shell';
|
2023-02-23 23:56:55 -05:00
|
|
|
|
|
|
|
|
useEffect(() => {
|
2023-03-11 10:28:46 -05:00
|
|
|
setHighlightedCode(hljs.highlight(code, { language: lang }).value);
|
|
|
|
|
}, [code, lang]);
|
2023-02-23 23:56:55 -05:00
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<pre>
|
2023-03-11 10:28:46 -05:00
|
|
|
<code className={`language-${lang}`} dangerouslySetInnerHTML={{__html: highlightedCode}}/>
|
2023-02-23 23:56:55 -05:00
|
|
|
</pre>
|
|
|
|
|
);
|
|
|
|
|
}
|