wip: mermaid

This commit is contained in:
Danny Avila 2024-08-25 02:26:15 -04:00
parent 5aee9db6de
commit 30aaf4e0d4
3 changed files with 1541 additions and 1 deletions

View file

@ -86,10 +86,12 @@
"react-speech-recognition": "^3.10.0", "react-speech-recognition": "^3.10.0",
"react-textarea-autosize": "^8.4.0", "react-textarea-autosize": "^8.4.0",
"react-transition-group": "^4.4.5", "react-transition-group": "^4.4.5",
"react-zoom-pan-pinch": "^3.6.1",
"recoil": "^0.7.7", "recoil": "^0.7.7",
"regenerator-runtime": "^0.14.1", "regenerator-runtime": "^0.14.1",
"rehype-highlight": "^6.0.0", "rehype-highlight": "^6.0.0",
"rehype-katex": "^6.0.2", "rehype-katex": "^6.0.2",
"rehype-mermaid": "^2.1.0",
"rehype-raw": "^7.0.0", "rehype-raw": "^7.0.0",
"remark-directive": "^3.0.0", "remark-directive": "^3.0.0",
"remark-gfm": "^4.0.0", "remark-gfm": "^4.0.0",

View file

@ -0,0 +1,33 @@
import React, { useEffect, useRef } from 'react';
import mermaid from 'mermaid';
interface MermaidProps {
chart: string;
}
const Mermaid: React.FC<MermaidProps> = ({ chart }) => {
const mermaidRef = useRef<HTMLDivElement>(null);
useEffect(() => {
mermaid.initialize({
startOnLoad: true,
theme: 'default',
securityLevel: 'strict',
});
mermaid.contentLoaded();
}, []);
useEffect(() => {
if (chart && mermaidRef.current) {
mermaid.render('mermaid-svg', chart).then((svgCode) => {
if (mermaidRef.current) {
mermaidRef.current.innerHTML = svgCode.svg;
}
});
}
}, [chart]);
return <div ref={mermaidRef} />;
};
export default Mermaid;

1507
package-lock.json generated

File diff suppressed because it is too large Load diff