import type { MarkdownRenderer } from 'vitepress'; const MermaidExample = (md: MarkdownRenderer) => { const defaultRenderer = md.renderer.rules.fence; if (!defaultRenderer) { throw new Error('defaultRenderer is undefined'); } md.renderer.rules.fence = (tokens, index, options, env, slf) => { const token = tokens[index]; const language = token.info.trim(); if (language.startsWith('mermaid')) { const key = index; return ` `; } else if (language === 'warning') { return `

WARNING

${token.content}}

`; } else if (language === 'note') { return `

NOTE

${token.content}}

`; } else if (language === 'regexp') { // shiki doesn't yet support regexp code blocks, but the javascript // one still makes RegExes look good token.info = 'javascript'; // use trimEnd to move trailing `\n` outside if the JavaScript regex `/` block token.content = `/${token.content.trimEnd()}/\n`; return defaultRenderer(tokens, index, options, env, slf); } else if (language === 'jison') { return `
jison
      ${token.content.replace(//g, '>')}
      
`; } return defaultRenderer(tokens, index, options, env, slf); }; }; export default MermaidExample;