1
0
Fork 0
mirror of synced 2024-06-22 17:01:09 -04:00
ultimate-vim/sources_non_forked/markdown-preview.nvim/app/pages/diagram.js
2022-05-19 20:12:11 +08:00

43 lines
1 KiB
JavaScript

let options = {}
const diagram = (md, opts = {}) => {
options = opts
const temp = md.renderer.rules.fence.bind(md.renderer.rules)
md.renderer.rules.fence = (tokens, idx, options, env, slf) => {
const token = tokens[idx]
try {
if (token.info && token.info.trim() === 'sequence-diagrams') {
const code = token.content.trim()
return `<div class="sequence-diagrams">${code}</div>`
}
} catch (e) {
console.error(`Parse Diagram Error: `, e)
}
return temp(tokens, idx, options, env, slf)
}
}
export const renderDiagram = () => {
let list = document.querySelectorAll('.sequence-diagrams')
if (!list) {
return
}
list.forEach(item => {
try {
let d = window.Diagram.parse(item.textContent)
item.className = ''
item.textContent = ''
d.drawSVG(item, {
theme: 'hand',
...options
})
d = null
} catch (e) {
console.error(`Parse Sequence-diagrams Error: ${e}`)
}
})
list = null
}
export default diagram