diff --git a/content/index.css b/content/index.css
index 63b8dd9..5bc3473 100644
--- a/content/index.css
+++ b/content/index.css
@@ -335,6 +335,15 @@ pre:has(> code.mermaid) {
height: 100%;
}
+/*fix: allow
line breaks inside mermaid node labels
+ The github theme sets `code br { display: none }` which hides
inside
+ mermaid `` elements, preventing multi-line node labels from rendering.
+ See: https://github.com/simov/markdown-viewer/issues/263 */
+.markdown-body code.mermaid br,
+.markdown-theme code.mermaid br {
+ display: inline !important;
+}
+
/*mermaid text bold effect*/
svg[id^=mermaid] text {
stroke: none !important;
diff --git a/content/mermaid.js b/content/mermaid.js
index 0e3e2c0..6a1c02c 100644
--- a/content/mermaid.js
+++ b/content/mermaid.js
@@ -5,6 +5,18 @@ var mmd = (() => {
var walk = (regex, string, result = [], match = regex.exec(string)) =>
!match ? result : walk(regex, string, result.concat(match[1]))
+ var fixMermaidViewBox = () => {
+ document.querySelectorAll('pre code.mermaid svg').forEach((svg) => {
+ var bbox = svg.getBBox()
+ if (bbox.height > 0) {
+ var pad = 16
+ svg.setAttribute('viewBox',
+ (bbox.x - pad) + ' ' + (bbox.y - pad) + ' ' +
+ (bbox.width + pad * 2) + ' ' + (bbox.height + pad * 2))
+ }
+ })
+ }
+
return {
render: () => {
if (loaded) {
@@ -19,7 +31,7 @@ var mmd = (() => {
state._themes[state.theme] === 'dark' ||
(state._themes[state.theme] === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches)
? 'dark' : 'default'
- mermaid.initialize({theme})
+ mermaid.initialize({theme, securityLevel: 'loose'})
mermaid.init({theme}, 'code.mermaid')
loaded = true
@@ -28,6 +40,7 @@ var mmd = (() => {
var svg = Array.from(document.querySelectorAll('pre code.mermaid svg'))
if (diagrams.length === svg.length) {
clearInterval(timeout)
+ setTimeout(fixMermaidViewBox, 100)
svg.forEach((diagram) => {
var panzoom = Panzoom(diagram, {canvas: true})
diagram.parentElement.parentElement.addEventListener('wheel', (e) => {