24 lines
		
	
	
		
			662 B
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			662 B
		
	
	
	
		
			JavaScript
		
	
	
	
| import {random} from '../utils.js';
 | |
| 
 | |
| export async function renderMermaid(els) {
 | |
|   if (!els || !els.length) return;
 | |
| 
 | |
|   const {mermaidAPI} = await import(/* webpackChunkName: "mermaid" */'mermaid');
 | |
| 
 | |
|   mermaidAPI.initialize({
 | |
|     startOnLoad: false,
 | |
|     theme: 'neutral',
 | |
|     securityLevel: 'strict',
 | |
|   });
 | |
| 
 | |
|   for (const el of els) {
 | |
|     mermaidAPI.render(`mermaid-${random(12)}`, el.textContent, (svg, bindFunctions) => {
 | |
|       const div = document.createElement('div');
 | |
|       div.classList.add('mermaid-chart');
 | |
|       div.innerHTML = svg;
 | |
|       if (typeof bindFunctions === 'function') bindFunctions(div);
 | |
|       el.closest('pre').replaceWith(div);
 | |
|     });
 | |
|   }
 | |
| }
 |