Skip to content

Commit 78c0951

Browse files
committed
feat: allow custom markdown-it container block, close #555
1 parent 45c8538 commit 78c0951

File tree

6 files changed

+89
-6
lines changed

6 files changed

+89
-6
lines changed

demo/yun/.valaxy/typed-router.d.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ declare module 'vue-router/auto-routes' {
5252
'/notes/': RouteRecordInfo<'/notes/', '/notes', Record<never, never>, Record<never, never>>,
5353
'/page/[page]': RouteRecordInfo<'/page/[page]', '/page/:page', { page: ParamValue<true> }, { page: ParamValue<false> }>,
5454
'/posts/': RouteRecordInfo<'/posts/', '/posts', Record<never, never>, Record<never, never>>,
55+
'/posts/中文分类': RouteRecordInfo<'/posts/中文分类', '/posts/中文分类', Record<never, never>, Record<never, never>>,
56+
'/posts/中文Post测试': RouteRecordInfo<'/posts/中文Post测试', '/posts/中文Post测试', Record<never, never>, Record<never, never>>,
5557
'/posts/abbrlink': RouteRecordInfo<'/posts/abbrlink', '/posts/abbrlink', Record<never, never>, Record<never, never>>,
5658
'/posts/about': RouteRecordInfo<'/posts/about', '/posts/about', Record<never, never>, Record<never, never>>,
5759
'/posts/aplayer': RouteRecordInfo<'/posts/aplayer', '/posts/aplayer', Record<never, never>, Record<never, never>>,
@@ -87,11 +89,10 @@ declare module 'vue-router/auto-routes' {
8789
'/posts/test-images': RouteRecordInfo<'/posts/test-images', '/posts/test-images', Record<never, never>, Record<never, never>>,
8890
'/posts/test-tags': RouteRecordInfo<'/posts/test-tags', '/posts/test-tags', Record<never, never>, Record<never, never>>,
8991
'/posts/type-link-jump': RouteRecordInfo<'/posts/type-link-jump', '/posts/type-link-jump', Record<never, never>, Record<never, never>>,
90-
'/posts/中文Post测试': RouteRecordInfo<'/posts/中文Post测试', '/posts/中文Post测试', Record<never, never>, Record<never, never>>,
91-
'/posts/中文分类': RouteRecordInfo<'/posts/中文分类', '/posts/中文分类', Record<never, never>, Record<never, never>>,
9292
'/projects/': RouteRecordInfo<'/projects/', '/projects', Record<never, never>, Record<never, never>>,
9393
'/sponsors/': RouteRecordInfo<'/sponsors/', '/sponsors', Record<never, never>, Record<never, never>>,
9494
'/tags/': RouteRecordInfo<'/tags/', '/tags', Record<never, never>, Record<never, never>>,
95+
'/test/custom-blocks': RouteRecordInfo<'/test/custom-blocks', '/test/custom-blocks', Record<never, never>, Record<never, never>>,
9596
'/test/deadlinks': RouteRecordInfo<'/test/deadlinks', '/test/deadlinks', Record<never, never>, Record<never, never>>,
9697
'/test/define-basic-loader': RouteRecordInfo<'/test/define-basic-loader', '/test/define-basic-loader', Record<never, never>, Record<never, never>>,
9798
'/test/footnotes': RouteRecordInfo<'/test/footnotes', '/test/footnotes', Record<never, never>, Record<never, never>>,
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
---
2+
title: Custom Blocks
3+
---
4+
5+
::: custom
6+
7+
I am custom block.
8+
9+
:::
10+
11+
---
12+
13+
::: tip
14+
15+
tip
16+
17+
:::
18+
19+
::: warning
20+
21+
warning
22+
23+
:::
24+
25+
::: danger
26+
27+
danger
28+
29+
:::
30+
31+
::: info
32+
33+
info
34+
35+
:::
36+
37+
::: details Click to expand
38+
39+
details
40+
41+
:::

demo/yun/valaxy.config.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ export default defineValaxyConfig<ThemeConfig>({
6262
info: {
6363
text: 'información',
6464
},
65+
66+
custom: {
67+
icon: 'i-ri:info-i',
68+
text: 'CUSTOM',
69+
},
6570
},
6671

6772
codeTransformers: [

docs/pages/guide/markdown.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,40 @@ Details Content
665665
:::
666666
```
667667

668+
::: zh-CN
669+
670+
你也可以自定义新的容器名称。
671+
672+
:::
673+
674+
::: en
675+
676+
You can also customize new container names.
677+
678+
:::
679+
680+
```md
681+
::: custom
682+
683+
I am a custom block.
684+
685+
:::
686+
```
687+
688+
```ts [valaxy.config.ts]
689+
import { defineValaxyConfig } from 'valaxy'
690+
export default defineValaxyConfig({
691+
markdown: {
692+
blocks: {
693+
custom: {
694+
icon: 'i-ri:info-i',
695+
text: 'CUSTOM',
696+
},
697+
}
698+
}
699+
})
700+
```
701+
668702
## 添加代码块标题与图标 {lang="zh-CN"}
669703

670704
## Add Code Block Title And Icons {lang="en"}

packages/valaxy/node/plugins/markdown/plugins/markdown-it/container.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,14 +112,16 @@ const defaultBlocksOptions: ContainerOptions = {
112112
}
113113

114114
export function containerPlugin(md: MarkdownIt, options: Options, containerOptions: ContainerOptions = {}) {
115-
Object.keys(defaultBlocksOptions).forEach((optionKey) => {
115+
const blockKeys = Object.keys(Object.assign(defaultBlocksOptions, containerOptions))
116+
blockKeys.forEach((optionKey) => {
116117
const option: BlockItem = {
117118
...defaultBlocksOptions[optionKey as keyof Blocks],
118119
...(containerOptions[optionKey as keyof Blocks] || {}),
119120
}
120121

121122
md.use(...createContainer(optionKey, option))
122123
})
124+
123125
md.use(...createCodeGroup(options))
124126

125127
const languages = ['zh-CN', 'en']

packages/valaxy/node/plugins/markdown/types.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ import type {
1717
ShikiTransformer,
1818
ThemeRegistration,
1919
} from 'shiki'
20-
import type { PageData } from '../../../types'
2120

2221
// import type { lazyloadOptions } from './plugins/markdown-it/lazyload'
2322

24-
import type { Blocks, ContainerOptions } from './plugins/markdown-it/container'
23+
import type { PageData } from '../../../types'
24+
import type { BlockItem, Blocks, ContainerOptions } from './plugins/markdown-it/container'
2525

2626
export type ThemeOptions
2727
= | ThemeRegistration
@@ -128,7 +128,7 @@ export interface MarkdownOptions extends Options {
128128
/**
129129
* Custom block configurations based on `markdown-it-container`
130130
*/
131-
blocks?: Blocks
131+
blocks?: Record<string, BlockItem> | Blocks
132132

133133
/**
134134
* @see [markdown-it-image-figures](https://www.npmjs.com/package/markdown-it-image-figures)

0 commit comments

Comments
 (0)