返回 slidev
index.ts
根目录 / packages / slidev / node / syntax / index.ts
1 import type { CodeblockTransformer, ResolvedSlidevOptions } from '@slidev/types'
2 import type MagicString from 'magic-string'
3 import type MarkdownExit from 'markdown-exit'
4 import MarkdownItComark from '@comark/markdown-it'
5 import { taskLists as MarkdownItTaskList } from '@hedgedoc/markdown-it-plugins'
6 // @ts-expect-error missing types
7 import MarkdownItFootnote from 'markdown-it-footnote'
8 import MarkdownItGitHubAlerts from 'markdown-it-github-alerts'
9 import { MarkdownItCodeblocks } from './codeblock'
10 import MarkdownItVDrag from './drag'
11 import MarkdownItEscapeInlineCode from './escape-code'
12 import MarkdownItKatex from './katex'
13 import MarkdownItLink from './link'
14 import MarkdownItStyleScoped from './scoped'
15 import MarkdownItShiki from './shiki'
16 import MarkdownItSlotSugar from './slot-sugar'
17 import MarkdownItSnippet from './snippet'
18
19 export async function useMarkdownItPlugins(
20 md: MarkdownExit,
21 options: ResolvedSlidevOptions,
22 markdownTransformMap: Map<string, MagicString>,
23 codeblockTransformers: (CodeblockTransformer | false)[],
24 ) {
25 const { data: { features, config }, utils: { katexOptions } } = options
26
27 md.use(MarkdownItSnippet, options)
28 // @ts-expect-error @shikijs/markdown-it types expect MarkdownItAsync, but MarkdownExit is API-compatible
29 md.use(await MarkdownItShiki(options))
30 md.use(MarkdownItCodeblocks, options, codeblockTransformers)
31
32 md.use(MarkdownItLink)
33 md.use(MarkdownItEscapeInlineCode)
34 md.use(MarkdownItFootnote)
35 md.use(MarkdownItTaskList, { enabled: true, lineNumber: true, label: true })
36 if (features.katex)
37 md.use(MarkdownItKatex, katexOptions)
38 md.use(MarkdownItVDrag, markdownTransformMap)
39 md.use(MarkdownItSlotSugar)
40 if (config.comark || config.mdc)
41 md.use(MarkdownItComark)
42 md.use(MarkdownItStyleScoped)
43 md.use(MarkdownItGitHubAlerts as any)
44 }
45
45 lines TYPESCRIPT