feat: add support for mermaid diagrams (#244)
This commit is contained in:
		
							
								
								
									
										4
									
								
								layouts/_default/_markup/render-codeblock-mermaid.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								layouts/_default/_markup/render-codeblock-mermaid.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
<div class="mermaid">
 | 
			
		||||
  {{- .Inner | safeHTML }}
 | 
			
		||||
</div>
 | 
			
		||||
{{ .Page.Store.Set "hasMermaid" true }}
 | 
			
		||||
@@ -50,6 +50,8 @@
 | 
			
		||||
  <script src="{{$s.Permalink}}"></script>
 | 
			
		||||
  {{end}}
 | 
			
		||||
  {{partial "katex.html" .}}
 | 
			
		||||
 | 
			
		||||
  {{partial "mermaid.html" .}}
 | 
			
		||||
    
 | 
			
		||||
  <script src="https://unpkg.com/@floating-ui/core@0.7.3"></script>
 | 
			
		||||
  <script src="https://unpkg.com/@floating-ui/dom@0.5.4"></script>
 | 
			
		||||
@@ -145,6 +147,19 @@
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
      {{end}}
 | 
			
		||||
 | 
			
		||||
      {{if $data.enableMermaid | default $.Site.Data.config.enableMermaid}}
 | 
			
		||||
        var els = document.getElementsByClassName("mermaid");
 | 
			
		||||
        if (els.length > 0) {
 | 
			
		||||
          import('https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs').then(
 | 
			
		||||
            (obj) => {
 | 
			
		||||
              // init forces mermaid to render mermaid markdown without waiting
 | 
			
		||||
              // for DOMContentLoaded event
 | 
			
		||||
              obj.default.init();
 | 
			
		||||
            }
 | 
			
		||||
          )
 | 
			
		||||
        }
 | 
			
		||||
      {{end}}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const init = (doc = document) => {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								layouts/partials/mermaid.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								layouts/partials/mermaid.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
{{if $.Site.Data.config.enableMermaid}}
 | 
			
		||||
  {{ if .Page.Store.Get "hasMermaid" }}
 | 
			
		||||
    <script type="module">
 | 
			
		||||
      import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs';
 | 
			
		||||
      mermaid.initialize({ startOnLoad: true });
 | 
			
		||||
    </script>
 | 
			
		||||
  {{ end }}
 | 
			
		||||
{{ end }}
 | 
			
		||||
		Reference in New Issue
	
	Block a user