Skip to content

Commit 2d72d61

Browse files
Merge pull request #2018 from Charlytoc/main
Add Mermaid renderer
2 parents 8a69190 + d8f9ab6 commit 2d72d61

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
"js-md5": "^0.8.3",
8787
"katex": "^0.16.8",
8888
"markdown-to-jsx": "7.2.0",
89+
"mermaid": "^11.6.0",
8990
"next": "^13.4.1",
9091
"next-redux-wrapper": "8.1.0",
9192
"next-remove-imports": "^1.0.11",

src/components/MarkDownParser/MDComponents/index.jsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import tomorrow from '../syntaxHighlighter/tomorrow';
1313
import { slugify } from '../../../utils';
1414
import Text from '../../Text';
1515
import Image from '../../Image';
16+
import MermaidRenderer from '../MermaidRenderer';
1617

1718
export function generateId(children) {
1819
const text = children ? children
@@ -87,6 +88,13 @@ export function MDLink({ children, href }) {
8788
export function Code({ inline, showLineNumbers, showInlineLineNumbers, className, children }) {
8889
const match = /language-(\w+)/.exec(className || '');
8990

91+
console.log('LENGUAGE ', match);
92+
93+
if (match && match.includes('mermaid')) {
94+
console.log(children, 'Children');
95+
return <MermaidRenderer code={children[0]} />;
96+
}
97+
9098
return !inline && match ? (
9199
<SyntaxHighlighter
92100
showLineNumbers={showLineNumbers}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { useEffect } from 'react';
2+
import mermaid from 'mermaid';
3+
import PropTypes from 'prop-types';
4+
5+
function MermaidRenderer({ code }) {
6+
useEffect(() => {
7+
mermaid.initialize({ startOnLoad: true });
8+
mermaid.contentLoaded();
9+
}, []);
10+
11+
return <div className="mermaid">{code}</div>;
12+
}
13+
14+
MermaidRenderer.propTypes = {
15+
code: PropTypes.string.isRequired,
16+
};
17+
export default MermaidRenderer;

0 commit comments

Comments
 (0)