const navigationPlugin = require('@11ty/eleventy-navigation'); const syntaxHighlightingPlugin = require('@11ty/eleventy-plugin-syntaxhighlight'); const markdownIt = require('markdown-it'); const tableOfContentsPlugin = require('@uncenter/eleventy-plugin-toc'); const markdownItClass = require('@toycode/markdown-it-class'); const markdownItAnchor = require('markdown-it-anchor'); const library = require('@fortawesome/fontawesome-svg-core').library; const icon = require('@fortawesome/fontawesome-svg-core').icon; const fas = require('@fortawesome/free-solid-svg-icons').fas; const { execSync } = require('child_process'); module.exports = function (eleventyConfig) { eleventyConfig.addPlugin(navigationPlugin); eleventyConfig.addPlugin(syntaxHighlightingPlugin); eleventyConfig.addPassthroughCopy('assets'); eleventyConfig.addPassthroughCopy('fonts'); // Font Awesome Icons library.add(fas); eleventyConfig.addShortcode('fas_icon', function (args) { var fas_svg = icon({ prefix: 'fas', iconName: args }); return `${fas_svg.html}`; }); const mapping = { h2: 'content-title', h3: 'content-title', h4: 'content-title', h5: 'content-title', h6: 'content-title', table: 'table', blockquote: 'alert', }; const mdOptions = { linkify: false, html: true }; const mdAnchorOpts = { permalink: markdownItAnchor.permalink.headerLink(), permalinkClass: 'ml-5', permalinkSymbol: '#', level: [1, 2, 3, 4], }; eleventyConfig.setLibrary( 'md', markdownIt(mdOptions).use(markdownItClass, mapping).use(markdownItAnchor, mdAnchorOpts), ); eleventyConfig.addPairedShortcode('admonition', function (content, type, title) { let titleStr = ''; if (title) { titleStr = title; } else if (type) { titleStr = type.substring(0, 1).toUpperCase() + type.substring(1).toLowerCase(); } else { titleStr = 'Info'; } return `
${titleStr}
${content}
`; }); eleventyConfig.addPlugin(tableOfContentsPlugin, { tags: ['h2', 'h3'], wrapper: function (toc) { toc = toc.replaceAll(' { execSync(`npx pagefind`, { encoding: 'utf-8' }); }); return { dir: { input: 'content', }, }; };