import {unified} from 'unified'; import remarkParse from 'remark-parse'; import remarkGfm from 'remark-gfm'; import remarkToc from 'remark-toc'; import remarkDirective from 'remark-directive'; import remarkMath from 'remark-math'; import remarkRehype from 'remark-rehype'; import rehypeSlug from 'rehype-slug'; import rehypeKaTeX from 'rehype-katex'; import rehypeRaw from 'rehype-raw'; import rehypeAutolinkHeadings from 'rehype-autolink-headings'; import rehypeStringify from 'rehype-stringify'; import rehypeHighlight from 'rehype-highlight'; import {h} from 'hastscript'; import remarkSpecialBox from './special_box.mjs'; import remarkRemoveFootnoteHeader from './remove-footnote-header.mjs'; const autoLinkOption = { behavior: 'wrap', properties: { ariaHidden: true, tabIndex: -1, className: 'anchor', }, }; const generator = unified() .use(remarkParse) .use(remarkGfm) .use(remarkToc, {heading: 'Sommaire', tight: true, ordered: true}) .use(remarkMath) .use(remarkDirective) .use(remarkSpecialBox) .use(remarkRehype, {allowDangerousHtml: true}) .use(rehypeRaw) .use(remarkRemoveFootnoteHeader) .use(rehypeKaTeX) .use(rehypeSlug) .use(rehypeHighlight) .use(rehypeAutolinkHeadings, autoLinkOption) .use(rehypeStringify); const toHtml = content => generator.processSync(content); export const toHtmlRaw = content => generator.runSync(generator.parse(content)); export const toString = content => generator.stringify(content); export default toHtml;