// Initialize Mermaid for Hugo Book theme // Loaded via Hugo's custom head/footer (function () { var initialized = false; function renderNode(node) { var graphDefinition = node.textContent; node.innerHTML = ""; node.removeAttribute("data-processed"); if (typeof window.mermaid.render === "function") { try { var id = "mermaid-" + Math.random().toString(36).substr(2, 9); var result = window.mermaid.render(id, graphDefinition); if (result && typeof result.then === "function") { result .then(function (out) { node.innerHTML = out && out.svg ? out.svg : ""; }) .catch(function (err) { node.innerHTML = '
Error: ' +
(err && err.message ? err.message : String(err)) +
"";
});
return;
}
if (result && result.svg) {
node.innerHTML = result.svg;
return;
}
if (typeof result === "string") {
node.innerHTML = result;
return;
}
} catch (err) {
node.innerHTML =
'Error: ' +
(err && err.message ? err.message : String(err)) +
"";
return;
}
}
// Fallback
node.innerHTML = graphDefinition;
}
function renderMermaid() {
if (typeof window.mermaid === "undefined") {
setTimeout(renderMermaid, 100);
return;
}
if (!initialized) {
window.mermaid.initialize({
startOnLoad: false,
securityLevel: "loose",
theme: "default",
});
initialized = true;
}
var nodes = document.querySelectorAll(".mermaid");
if (!nodes || nodes.length === 0) {
return;
}
for (var i = 0; i < nodes.length; i++) {
renderNode(nodes[i]);
}
}
// Initial load
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", renderMermaid);
} else {
setTimeout(renderMermaid, 100);
}
})();