mirror of
https://github.com/logos-blockchain/logos-blockchain-testing.git
synced 2026-01-02 05:13:09 +00:00
58 lines
1.4 KiB
JavaScript
58 lines
1.4 KiB
JavaScript
(function () {
|
|
const openOverlay = (svg) => {
|
|
const overlay = document.createElement("div");
|
|
overlay.className = "mermaid-overlay";
|
|
|
|
const content = document.createElement("div");
|
|
content.className = "mermaid-overlay__content";
|
|
|
|
const clone = svg.cloneNode(true);
|
|
clone.removeAttribute("width");
|
|
clone.removeAttribute("height");
|
|
clone.style.width = "95vw";
|
|
clone.style.maxWidth = "1400px";
|
|
clone.style.height = "auto";
|
|
clone.style.display = "block";
|
|
clone.style.margin = "0 auto";
|
|
|
|
content.appendChild(clone);
|
|
overlay.appendChild(content);
|
|
document.body.appendChild(overlay);
|
|
|
|
const close = () => overlay.remove();
|
|
overlay.addEventListener("click", close);
|
|
document.addEventListener(
|
|
"keydown",
|
|
(e) => {
|
|
if (e.key === "Escape") {
|
|
close();
|
|
}
|
|
},
|
|
{ once: true }
|
|
);
|
|
};
|
|
|
|
const bind = () => {
|
|
document.querySelectorAll(".mermaid svg").forEach((svg) => {
|
|
if (svg.dataset.overlayBound === "true") {
|
|
return;
|
|
}
|
|
svg.style.cursor = "zoom-in";
|
|
svg.addEventListener("click", () => openOverlay(svg));
|
|
svg.dataset.overlayBound = "true";
|
|
});
|
|
};
|
|
|
|
const init = () => {
|
|
bind();
|
|
// Mermaid renders asynchronously; bind again after a short delay.
|
|
setTimeout(bind, 500);
|
|
};
|
|
|
|
if (document.readyState === "loading") {
|
|
document.addEventListener("DOMContentLoaded", init);
|
|
} else {
|
|
init();
|
|
}
|
|
})();
|