summaryrefslogtreecommitdiff
path: root/packages/markdown/remark/src/remark-expressions.ts
blob: 0966cc0bef8cb8d07d70714e4c9fd1d2caf66548 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Vite bug: dynamically import() modules needed for CJS. Cache in memory to keep side effects
let mdxExpression: any;
let mdxExpressionFromMarkdown: any;
let mdxExpressionToMarkdown: any;

export function remarkExpressions(this: any, options: any) {
  let settings = options || {};
  let data = this.data();

  add('micromarkExtensions', mdxExpression({}));
  add('fromMarkdownExtensions', mdxExpressionFromMarkdown);
  add('toMarkdownExtensions', mdxExpressionToMarkdown);

  function add(field: any, value: any) {
    /* istanbul ignore if - other extensions. */
    if (data[field]) data[field].push(value);
    else data[field] = [value];
  }
}

export async function loadRemarkExpressions() {
  if (!mdxExpression) {
    const micromarkMdxExpression = await import('micromark-extension-mdx-expression');
    mdxExpression = micromarkMdxExpression.mdxExpression;
  }
  if (!mdxExpressionFromMarkdown || !mdxExpressionToMarkdown) {
    const mdastUtilMdxExpression = await import('mdast-util-mdx-expression');
    mdxExpressionFromMarkdown = mdastUtilMdxExpression.mdxExpressionFromMarkdown;
    mdxExpressionToMarkdown = mdastUtilMdxExpression.mdxExpressionToMarkdown;
  }
}