<h2>A diagram</h2>
<pre class="mermaid"><code>graph TD;
A-->B;
A-->C;
B-->D;
C-->D;</code></pre>
<hr>
<h2>Another diagram</h2>
<pre><code class="language-mermaid">gantt
title My Product Roadmap
dateFormat YYYY-MM-DD
section Cool Feature
A task :a1, 2022-02-25, 30d
Another task :after a1, 20d
section Rad Feature
Task in sequence :2022-03-04, 12d
Task, No. 2 :24d
</code></pre>
import mermaid from "https://cdn.skypack.dev/mermaid@8.14.0";
// select <pre class="mermaid"> _and_ <pre><code class="language-mermaid">
document.querySelectorAll("pre.mermaid, pre>code.language-mermaid").forEach($el => {
// if the second selector got a hit, reference the parent <pre>
if ($el.tagName === "CODE")
$el = $el.parentElement
// put the Mermaid contents in the expected <div class="mermaid">
// plus keep the original contents in a nice <details>
$el.outerHTML = `
<div class="mermaid">${$el.textContent}</div>
<details>
<summary>Diagram source</summary>
<pre>${$el.textContent}</pre>
</details>
`
})
// initialize Mermaid to [1] log errors, [2] have loose security for first-party
// authored diagrams, and [3] respect a preferred dark color scheme
mermaid.initialize({
logLevel: "error", // [1]
securityLevel: "loose", // [2]
theme: (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) ?
"dark" :
"default" // [3]
})
This Pen doesn't use any external JavaScript resources.