From 695a8102e6a812322550be6b751101183b23fb79 Mon Sep 17 00:00:00 2001 From: sjat Date: Sun, 10 May 2026 18:14:02 +0200 Subject: [PATCH] fix: use parentElement and explicit mermaid.run() for reliable rendering el.closest('pre') returns null after marp's polyfill replaces
 with  on browsers without customized
built-in element support. el.parentElement works in both cases.

startOnLoad:true does not trigger in a deferred type="module" script
because DOMContentLoaded has already fired. Explicit mermaid.run()
ensures diagrams render regardless of timing.

Co-Authored-By: Claude Sonnet 4.6 
---
 build-slides.sh | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/build-slides.sh b/build-slides.sh
index dfaf746..417a5c6 100755
--- a/build-slides.sh
+++ b/build-slides.sh
@@ -61,9 +61,10 @@ document.querySelectorAll('code.language-mermaid').forEach(el => {
   const div = document.createElement('div');
   div.className = 'mermaid';
   div.textContent = el.textContent;
-  el.closest('pre').replaceWith(div);
+  el.parentElement.replaceWith(div);
 });
-mermaid.initialize({ startOnLoad: true, theme: 'dark' });
+mermaid.initialize({ startOnLoad: false, theme: 'dark' });
+await mermaid.run();
 """
 
 with open(path, encoding='utf-8') as f: