Skip to content

Commit 1a9b61c

Browse files
authored
fix(cz-git): without scope calc maxSubjectLength error (#230)
1 parent d22f98c commit 1a9b61c

File tree

29 files changed

+345
-182
lines changed

29 files changed

+345
-182
lines changed

docs/.vitepress/components.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ declare module 'vue' {
1010
AdsASide: typeof import('./theme/components/AdsASide.vue')['default']
1111
Badge: typeof import('./theme/components/Badge.vue')['default']
1212
CodeGroupItem: typeof import('./theme/components/CodeGroupItem.vue')['default']
13+
copy: typeof import('./theme/components/StepFlow copy.vue')['default']
1314
HomePage: typeof import('./theme/components/HomePage.vue')['default']
15+
StepFlow: typeof import('./theme/components/StepFlow.vue')['default']
16+
StepFlowItem: typeof import('./theme/components/StepFlowItem.vue')['default']
1417
}
1518
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import type MarkdownIt from 'markdown-it'
2+
import type { RenderRule } from 'markdown-it/lib/renderer'
3+
import container from 'markdown-it-container'
4+
5+
export async function containerPlugin(md: MarkdownIt) {
6+
md
7+
.use(...createComptContainer(
8+
'code-group',
9+
() => '<CodeGroup>\n',
10+
() => '</CodeGroup>\n',
11+
),
12+
)
13+
.use(...createComptContainer(
14+
'code-group-item',
15+
(info: string) => `<CodeGroupItem title="${info}">\n`,
16+
() => '</CodeGroupItem>\n',
17+
),
18+
)
19+
.use(...createComptContainer(
20+
'ul',
21+
() => '<StepFlow type="ul">\n',
22+
() => '</StepFlow>\n',
23+
),
24+
)
25+
.use(...createComptContainer(
26+
'ol',
27+
() => '<StepFlow type="ol">\n',
28+
() => '</StepFlow>\n',
29+
),
30+
)
31+
.use(...createComptContainer(
32+
'li',
33+
(info: string) => {
34+
return `
35+
<StepFlowItem>
36+
<template #title>
37+
${md.renderInline(info)}
38+
</template>
39+
`
40+
},
41+
() => '</StepFlowItem>\n',
42+
),
43+
)
44+
}
45+
46+
type ContainerArgs = [typeof container, string, { render: RenderRule }]
47+
type RenderPlaceFunction = (info: string) => string
48+
49+
function createComptContainer(
50+
name: string,
51+
before: RenderPlaceFunction,
52+
after: RenderPlaceFunction,
53+
): ContainerArgs {
54+
return [
55+
container,
56+
name,
57+
{
58+
render(tokens, idx) {
59+
const infoStack: string[] = []
60+
const token = tokens[idx]
61+
if (token.nesting === 1) {
62+
const info = token.info.trim().slice(name.length).trim()
63+
infoStack.push(info)
64+
return before(info)
65+
}
66+
else {
67+
const info = infoStack.pop() || ''
68+
return after(info)
69+
}
70+
},
71+
},
72+
]
73+
}
74+
75+
export default containerPlugin
File renamed without changes.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from './container'
2+
export * from './image'
File renamed without changes.

docs/.vitepress/config/share.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import process from 'node:process'
22
import { defineConfig } from 'vitepress'
33
import { generateSitemap } from '../build'
44
import { github, keywords, name, ogTitle } from '../meta'
5-
import { ImagePlugin, useCodeGroup, useCodeGroupItem } from '../theme/components/markdown'
5+
import { ImagePlugin, containerPlugin } from './markdown'
66

77
export const shareConfig = defineConfig({
88
title: name,
@@ -35,10 +35,7 @@ export const shareConfig = defineConfig({
3535
config: (md) => {
3636
// eslint-disable-next-line ts/no-require-imports
3737
md.use(require('markdown-it-mark'))
38-
md.use(useCodeGroup.container, useCodeGroup.type, { render: useCodeGroup.render })
39-
md.use(useCodeGroupItem.container, useCodeGroupItem.type, {
40-
render: useCodeGroupItem.render,
41-
})
38+
md.use(containerPlugin)
4239
md.use(ImagePlugin)
4340
},
4441
},

docs/.vitepress/theme/components/CodeGroup.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { defineComponent, h, ref } from 'vue'
2-
import type { Component, ComponentOptions, VNode } from 'vue'
2+
import type { Component, VNode } from 'vue'
33

4-
export const CodeGroup: ComponentOptions = defineComponent({
4+
export default defineComponent({
55
name: 'CodeGroup',
66

77
setup(_, { slots }) {

docs/.vitepress/theme/components/HomePage.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import { computed } from 'vue'
33
import { useData } from 'vitepress'
44
import { VPTeamMembers } from 'vitepress/theme'
5-
import { useEmojiItem, useMediumZoom } from './composables'
5+
import { useEmojiItem, useMediumZoom } from '../composables'
66
77
const emoji = useEmojiItem()
88
const { frontmatter } = useData()
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { defineComponent, h } from 'vue'
2+
import type { Component, PropType } from 'vue'
3+
4+
export default defineComponent({
5+
name: 'StepFlow',
6+
props: {
7+
type: String as PropType<'ul' | 'ol'>,
8+
},
9+
10+
setup(props, { slots }) {
11+
return () => {
12+
const items = (slots.default?.() ?? [])
13+
.filter(vnode => (vnode.type as Component).name === 'StepFlowItem')
14+
.map((vnode) => {
15+
vnode.props = vnode.props ?? {}
16+
return vnode
17+
})
18+
const Tag = props.type === 'ol' ? 'ol' : 'ul'
19+
20+
return h(Tag, { class: 'step-flow' }, items.map((item, index) => {
21+
return h(
22+
'li',
23+
{ 'class': 'step-flow-item', 'data-step': index + 1 },
24+
item,
25+
)
26+
}))
27+
}
28+
},
29+
})
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<script lang="ts">
2+
import { defineComponent } from 'vue'
3+
4+
export default defineComponent({
5+
name: 'StepFlowItem',
6+
})
7+
</script>
8+
9+
<script setup lang="ts">
10+
defineProps<{ title: string }>()
11+
</script>
12+
13+
<template>
14+
<div class="w-full">
15+
<div class="step-flow-title">
16+
<slot name="title" />
17+
</div>
18+
<div class="step-flow-content">
19+
<slot />
20+
</div>
21+
</div>
22+
</template>

0 commit comments

Comments
 (0)