@@ -718,16 +718,26 @@ const randomid = () => parseInt(String(Math.random() * 1e15), 10).toString(36);
718718const Code = ({ inline, children = [], className, ... props }) => {
719719 const demoid = useRef (` dome${ randomid ()} ` );
720720 const [container , setContainer ] = useState (null );
721- const isMermaid = className && / ^ language-mermaid/ .test (className .toLocaleLowerCase ());
722- const code = props .node && props .node .children ? getCodeString (props .node .children ) : children[0 ] || ' ' ;
721+ const isMermaid =
722+ className && / ^ language-mermaid/ .test (className .toLocaleLowerCase ());
723+ const code = children
724+ ? getCodeString (props .node .children )
725+ : children[0 ] || " " ;
726+
723727 useEffect (() => {
724- if (container && isMermaid) {
725- try {
726- const str = mermaid .render (demoid .current , code);
727- container .innerHTML = str;
728- } catch (error) {
729- container .innerHTML = error;
730- }
728+ if (container && isMermaid && demoid .current && code) {
729+ mermaid
730+ .render (demoid .current , code)
731+ .then (({ svg, bindFunctions }) => {
732+ console .log (" svg:" , svg);
733+ container .innerHTML = svg;
734+ if (bindFunctions) {
735+ bindFunctions (container);
736+ }
737+ })
738+ .catch ((error ) => {
739+ console .log (" error:" , error);
740+ });
731741 }
732742 }, [container, isMermaid, code, demoid]);
733743
@@ -741,11 +751,11 @@ const Code = ({ inline, children = [], className, ...props }) => {
741751 return (
742752 < Fragment>
743753 < code id= {demoid .current } style= {{ display: " none" }} / >
744- < code ref= {refElement} data- name= " mermaid" / >
754+ < code className = {className} ref= {refElement} data- name= " mermaid" / >
745755 < / Fragment>
746756 );
747757 }
748- return < code> {children}< / code> ;
758+ return < code className = {className} > {children}< / code> ;
749759};
750760
751761export default function App () {
0 commit comments