-
Notifications
You must be signed in to change notification settings - Fork 3
/
.eleventy.js
24 lines (21 loc) · 1.02 KB
/
.eleventy.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const htmlencode = require('htmlencode');
module.exports = (eleventyConfig, options) => {
const highlighter = eleventyConfig.markdownHighlighter;
const html_tag = options?.html_tag || 'pre';
const extra_classes = options?.extra_classes ? ' ' + options.extra_classes : '';
let mermaid_config = {...options?.mermaid_config || {}, ...{loadOnSave: true}};
let src = options?.mermaid_js_src || "https://unpkg.com/mermaid@10/dist/mermaid.esm.min.mjs";
eleventyConfig.addShortcode("mermaid_js", () => {
return `<script type="module" async>import mermaid from "${src}";document.addEventListener('DOMContentLoaded', mermaid.initialize(${JSON.stringify(mermaid_config)}));</script>`
});
eleventyConfig.addMarkdownHighlighter((str, language) => {
if (language === "mermaid") {
return `<${html_tag} class="mermaid${extra_classes}">${htmlencode.htmlEncode(str)}</${html_tag}>`;
}
if (highlighter) {
return highlighter(str, language)
}
return `<pre class="${language}">${str}</pre>`;
});
return {}
};