Skip to content

Commit 09c6115

Browse files
committed
Catch mermaid errors
1 parent 7edf948 commit 09c6115

1 file changed

Lines changed: 17 additions & 12 deletions

File tree

content/theme/templates/page.html

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,29 @@
1717
</div>
1818
</main>
1919
<script>
20+
document.addEventListener("DOMContentLoaded", () => {
2021
function decodeHtmlEntities(str) {
2122
const txt = document.createElement("textarea");
2223
txt.innerHTML = str;
2324
return txt.value;
2425
}
25-
document.addEventListener("DOMContentLoaded", () => {
26-
document.querySelectorAll("pre > code.language-mermaid").forEach(code => {
27-
const rawHtml = code.innerHTML;
28-
const decoded = decodeHtmlEntities(rawHtml);
29-
console.log("=== Mermaid block decoded text ===");
30-
console.log(Array.from(decoded).map(c => c.charCodeAt(0)));
31-
const div = document.createElement("div");
32-
div.className = "mermaid";
33-
// Replace <pre><code>…</code></pre> with <div class="mermaid">…</div>
34-
code.parentElement.replaceWith(div);
26+
document.querySelectorAll("pre > code.language-mermaid").forEach((code, i) => {
27+
let decoded = decodeHtmlEntities(code.innerHTML);
28+
// Normalize whitespace
29+
decoded = decoded.replace(/\t/g, " ");
30+
decoded = decoded.replace(/^\s*\n/, "").replace(/\n\s*$/, "");
31+
const div = document.createElement("div");
32+
div.className = "mermaid";
33+
div.textContent = decoded;
34+
code.parentElement.replaceWith(div);
35+
console.log(`=== Mermaid block ${i} ===`);
36+
console.log(decoded);
37+
});
38+
// Mermaid v10+ runs asynchronously
39+
mermaid.run({ querySelector: ".mermaid" })
40+
.catch(err => {
41+
console.error("Mermaid rendering failed:", err);
3542
});
36-
// Now render them
37-
mermaid.run({ querySelector: ".mermaid" });
3843
});
3944
</script>
4045
<script>hljs.highlightAll();</script>

0 commit comments

Comments
 (0)