import type { ReactNode } from 'react'; import React, { useRef, useEffect } from 'react'; import mermaid from 'mermaid'; type MermaidViewerProps = { children: ReactNode, } export const MermaidViewer = React.memo((props: MermaidViewerProps): JSX.Element => { const { children } = props; const ref = useRef(null); useEffect(() => { if (ref.current != null && children != null) { mermaid.initialize({}); mermaid.run({ nodes: [ref.current] }); } }, [children]); return ( children ? (
{children}
) :
); }); MermaidViewer.displayName = 'MermaidViewer';