const Nunjucks = require('nunjucks');
const nunjucksDate = require('nunjucks-date');
const syntaxHighlight = require('@11ty/eleventy-plugin-syntaxhighlight');
const markdownIt = require('markdown-it');
const markdownItClass = require('@toycode/markdown-it-class');

const markdownClassMapping = {
  h1: ['hide'],
  h2: ['text-3xl'],
  h3: ['text-2xl'],
  h4: ['text-xl'],
  h5: ['text-lg'],
  h6: ['font-bold'],
  a: ['text-blue-300', 'hover:underline'],
  p: ['mb-2', 'text-gray-500'],
  img: ['max-w-lg', 'rounded-lg', 'my-8'],
};

module.exports = function(eleventyConfig) {
  let nunjucksEnvironment = new Nunjucks.Environment(
    new Nunjucks.FileSystemLoader("_includes")
  );
  nunjucksDate.setDefaultFormat('MMMM Do, YYYY');
  nunjucksDate.install(nunjucksEnvironment);

  eleventyConfig.addPlugin(syntaxHighlight);

  const md = markdownIt({ linkify: true, html: true });
  md.use(markdownItClass, markdownClassMapping);
  eleventyConfig.setLibrary('md', md);

  eleventyConfig.addPassthroughCopy('img');

  eleventyConfig.addCollection(
    "pinned",
    collection => collection.getAllSorted().filter(item => item.data.pinned),
  );

  eleventyConfig.setLibrary('njk', nunjucksEnvironment);
};
