mermaid/docs/.vitepress/mermaid-markdown-all.ts

34 lines
1.0 KiB
TypeScript
Raw Normal View History

2022-09-23 23:33:24 -03:00
import shiki from 'shiki';
2022-09-21 19:40:49 -03:00
2022-10-25 17:54:07 -03:00
const MermaidExample = async (md) => {
const fence = md.renderer.rules.fence.bind(md.renderer.rules);
2022-09-21 19:40:49 -03:00
2022-10-25 17:54:07 -03:00
const highlighter = await shiki.getHighlighter({ theme: 'material-palenight' });
2022-09-21 19:40:49 -03:00
2022-10-25 17:54:07 -03:00
md.renderer.rules.fence = (tokens, index, options, env, slf) => {
const token = tokens[index];
// console.log("==>",token.info);
if (token.info.trim() === 'mermaid-example') {
let code = highlighter.codeToHtml(token.content, { lang: 'mermaid' });
code = code.replace('#2e3440ff', 'transparent');
code = code.replace('#292D3E', 'transparent');
code =
'<h5>Code:</h5>' +
`<div class="language-mermaid">` +
`<button class="copy"></button><span class="lang">mermaid</span>` +
code +
'</div>';
// return code;
return `${code}
2022-09-21 19:40:49 -03:00
<h5>Render:</h5>
<Mermaid id="me${index}" graph="${encodeURIComponent(token.content)}"></Mermaid>`;
2022-10-25 17:54:07 -03:00
}
return fence(tokens, index, options, env, slf);
};
2022-09-21 19:40:49 -03:00
};
2022-10-25 17:54:07 -03:00
export default MermaidExample;