Skip to content

Commit 3043f56

Browse files
committed
fix: update mermaid diagram rendering in extra.js to use new API
- Refactored the mermaid rendering logic to utilize the latest API for generating diagrams. - Improved error handling by displaying the error message directly instead of using a string property. - Ensured that the diagram's HTML is updated correctly after rendering. Signed-off-by: Yukai Huang <[email protected]>
1 parent 97b3ad8 commit 3043f56

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

public/js/extra.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -437,23 +437,25 @@ export function finishView (view) {
437437
// mermaid
438438
const mermaids = view.find('div.mermaid.raw').removeClass('raw')
439439
mermaids.each(async (key, value) => {
440+
const $value = $(value)
441+
const $ele = $value.closest('pre')
440442
try {
441-
var $value = $(value)
442-
const $ele = $(value).closest('pre')
443-
444443
const text = $value.text()
445444
// validate the syntax first
446445
if (window.mermaid.parse(text)) {
447446
$ele.addClass('mermaid')
448447
$ele.text(text)
449448
// render the diagram
450-
await window.mermaid.run({
451-
nodes: [$ele[0]]
452-
})
449+
const id = `mermaid-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`
450+
const { svg, bindFunctions } = await window.mermaid.render(id, text, $ele[0])
451+
$ele.html(svg)
452+
if (bindFunctions) {
453+
bindFunctions($ele[0])
454+
}
453455
}
454456
} catch (err) {
455457
$value.unwrap()
456-
$value.parent().append(`<div class="alert alert-warning">${escapeHTML(err.str)}</div>`)
458+
$ele.append(`<div class="alert alert-warning">${escapeHTML(err)}</div>`)
457459
console.warn(err)
458460
}
459461
})

0 commit comments

Comments
 (0)