You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
memos/web/src/components/MemoContent/MermaidBlock.tsx

28 lines
600 B
TypeScript

import mermaid from "mermaid";
import { useEffect, useRef } from "react";
interface Props {
content: string;
}
const MermaidBlock: React.FC<Props> = ({ content }: Props) => {
const mermaidDockBlock = useRef<null>(null);
useEffect(() => {
if (!mermaidDockBlock.current) {
return;
}
// Render mermaid when mounted
mermaid.run({
nodes: [mermaidDockBlock.current],
});
});
return (
<pre ref={mermaidDockBlock} className="w-full p-2 whitespace-pre-wrap relative" dangerouslySetInnerHTML={{ __html: content }}></pre>
);
};
export default MermaidBlock;