diff --git a/plugins/plugin-md-power/package.json b/plugins/plugin-md-power/package.json index a34673eb..bff2224d 100644 --- a/plugins/plugin-md-power/package.json +++ b/plugins/plugin-md-power/package.json @@ -40,7 +40,13 @@ "vuepress": "2.0.0-rc.15" }, "dependencies": { + "@mdit/plugin-attrs": "^0.13.1", + "@mdit/plugin-footnote": "^0.13.1", + "@mdit/plugin-mark": "^0.13.1", + "@mdit/plugin-sub": "^0.13.1", + "@mdit/plugin-sup": "^0.13.1", "@mdit/plugin-tab": "^0.13.1", + "@mdit/plugin-tasklist": "^0.13.1", "@vuepress/helper": "2.0.0-rc.47", "@vueuse/core": "^11.1.0", "image-size": "^1.1.1", diff --git a/plugins/plugin-md-power/src/node/container/align.ts b/plugins/plugin-md-power/src/node/container/align.ts new file mode 100644 index 00000000..ec70fd41 --- /dev/null +++ b/plugins/plugin-md-power/src/node/container/align.ts @@ -0,0 +1,21 @@ +import type Token from 'markdown-it/lib/token.mjs' +import type { Markdown } from 'vuepress/markdown' +import container from 'markdown-it-container' + +const alignList = ['left', 'center', 'right', 'justify'] + +export function alignPlugin(md: Markdown): void { + for (const name of alignList) { + md.use(container, name, { + validate: (info: string) => info.trim() === name, + render: (tokens: Token[], idx: number): string => { + if (tokens[idx].nesting === 1) { + return `
` + } + else { + return '
' + } + }, + }) + } +} diff --git a/plugins/plugin-md-power/src/node/container/index.ts b/plugins/plugin-md-power/src/node/container/index.ts index 31c8b1fc..9b4ae23f 100644 --- a/plugins/plugin-md-power/src/node/container/index.ts +++ b/plugins/plugin-md-power/src/node/container/index.ts @@ -1,6 +1,7 @@ import type { App } from 'vuepress' import type { Markdown } from 'vuepress/markdown' import type { MarkdownPowerPluginOptions } from '../../shared/index.js' +import { alignPlugin } from './align.js' import { codeTabs } from './codeTabs.js' import { fileTreePlugin } from './fileTree.js' import { langReplPlugin } from './langRepl.js' @@ -11,6 +12,8 @@ export async function containerPlugin( md: Markdown, options: MarkdownPowerPluginOptions, ) { + // ::: left / right / center / justify + alignPlugin(md) // ::: tabs tabs(md) // ::: code-tabs diff --git a/plugins/plugin-md-power/src/node/inline/index.ts b/plugins/plugin-md-power/src/node/inline/index.ts index 312d66c6..536960b1 100644 --- a/plugins/plugin-md-power/src/node/inline/index.ts +++ b/plugins/plugin-md-power/src/node/inline/index.ts @@ -1,5 +1,11 @@ import type { Markdown } from 'vuepress/markdown' import type { MarkdownPowerPluginOptions } from '../../shared/index.js' +import { attrs } from '@mdit/plugin-attrs' +import { footnote } from '@mdit/plugin-footnote' +import { mark } from '@mdit/plugin-mark' +import { sub } from '@mdit/plugin-sub' +import { sup } from '@mdit/plugin-sup' +import { tasklist } from '@mdit/plugin-tasklist' import { iconsPlugin } from './icons.js' import { plotPlugin } from './plot.js' @@ -7,6 +13,13 @@ export function inlineSyntaxPlugin( md: Markdown, options: MarkdownPowerPluginOptions, ): void { + md.use(attrs) + md.use(mark) + md.use(sub) + md.use(sup) + md.use(footnote) + md.use(tasklist) + if (options.icons) { // :[collect:name]: md.use(iconsPlugin) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e9fdfb1e..900bbe65 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -156,9 +156,27 @@ importers: plugins/plugin-md-power: dependencies: + '@mdit/plugin-attrs': + specifier: ^0.13.1 + version: 0.13.1(markdown-it@14.1.0) + '@mdit/plugin-footnote': + specifier: ^0.13.1 + version: 0.13.1(markdown-it@14.1.0) + '@mdit/plugin-mark': + specifier: ^0.13.1 + version: 0.13.1(markdown-it@14.1.0) + '@mdit/plugin-sub': + specifier: ^0.13.1 + version: 0.13.1(markdown-it@14.1.0) + '@mdit/plugin-sup': + specifier: ^0.13.1 + version: 0.13.1(markdown-it@14.1.0) '@mdit/plugin-tab': specifier: ^0.13.1 version: 0.13.1(markdown-it@14.1.0) + '@mdit/plugin-tasklist': + specifier: ^0.13.1 + version: 0.13.1(markdown-it@14.1.0) '@vuepress/helper': specifier: 2.0.0-rc.47 version: 2.0.0-rc.47(typescript@5.6.2)(vuepress@2.0.0-rc.15(@vuepress/bundler-vite@2.0.0-rc.15(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.79.3)(sass@1.79.3)(typescript@5.6.2)(yaml@2.5.1))(typescript@5.6.2)(vue@3.5.8(typescript@5.6.2))) diff --git a/theme/src/client/components/VPDocFooter.vue b/theme/src/client/components/VPDocFooter.vue index 89a83e3a..13b1faa6 100644 --- a/theme/src/client/components/VPDocFooter.vue +++ b/theme/src/client/components/VPDocFooter.vue @@ -87,7 +87,7 @@ const showFooter = computed(() => {