41 lines
		
	
	
		
			929 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			929 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*!
 | 
						|
 * reveal.js Mermaid plugin
 | 
						|
 */
 | 
						|
 | 
						|
import mermaid from "mermaid";
 | 
						|
 | 
						|
mermaid.mermaidAPI.initialize({
 | 
						|
  // The node size will be calculated incorrectly if set `startOnLoad: start`,
 | 
						|
  // so we need to manually render.
 | 
						|
  startOnLoad: false,
 | 
						|
});
 | 
						|
 | 
						|
const Plugin = {
 | 
						|
  id: "mermaid",
 | 
						|
 | 
						|
  init: function (reveal) {
 | 
						|
    const mermaidEls = reveal.getRevealElement().querySelectorAll(".mermaid");
 | 
						|
 | 
						|
    Array.from(mermaidEls).forEach(function (el) {
 | 
						|
      var insertSvg = function (svgCode, bindFunctions) {
 | 
						|
        el.innerHTML = svgCode;
 | 
						|
      };
 | 
						|
 | 
						|
      var graphDefinition = el.textContent.trim();
 | 
						|
 | 
						|
      try {
 | 
						|
        mermaid.mermaidAPI.render(
 | 
						|
          `mermaid-${Math.random().toString(36).substring(2)}`,
 | 
						|
          graphDefinition,
 | 
						|
          insertSvg
 | 
						|
        );
 | 
						|
      } catch (error) {
 | 
						|
        console.error(error, { graphDefinition, el });
 | 
						|
        el.innerHTML = error.message;
 | 
						|
      }
 | 
						|
    });
 | 
						|
  },
 | 
						|
};
 | 
						|
 | 
						|
export default () => Plugin;
 |