import process from 'node:process' import { BiDirectionalLinks } from '@nolebase/markdown-it-bi-directional-links' import { ElementTransform } from '@nolebase/markdown-it-element-transform' import type { MarkdownOptions } from 'vitepress' import mdkatex from '@andatoshiki/markdown-it-katex' import mdTasklist from 'markdown-it-task-lists' import mdCaption from '@andatoshiki/markdown-it-image-caption' // import mdLink from 'markdown-it-link-preview' export const markdown: MarkdownOptions = { html: true, theme: { light: 'github-light', dark: 'github-dark-dimmed' }, lineNumbers: true, config: md => { // use more markdown-it plugins! md.use(mdkatex), md.use(mdTasklist), md.use(mdCaption), // md.use(mdLink), md.use(BiDirectionalLinks({ dir: 'docs/', })), md.use(ElementTransform, (() => { let transformNextLinkCloseToken = false return { transform(token) { switch (token.type) { case 'link_open': if (token.attrGet('class') !== 'header-anchor') { token.tag = 'VPNolebaseInlineLinkPreview' transformNextLinkCloseToken = true } break case 'link_close': if (transformNextLinkCloseToken) { token.tag = 'VPNolebaseInlineLinkPreview' transformNextLinkCloseToken = false } break } }, } })()) // insert specific custom vue layout template slots under a markdown tag attributes (currenlty disabled and unncessary because applied via markdowntransform component) // md.renderer.rules.heading_close = (tokens, idx, options, env, slf) => { // let htmlResult = slf.renderToken(tokens, idx, options); // if (tokens[idx].tag === 'h1') htmlResult += `\n`; // return htmlResult; // } }, }