Skip to content

Commit 4169dd6

Browse files
committed
feat: add support for MDCSlot
1 parent b9ebe7a commit 4169dd6

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

src/module.ts

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import type { NuxtComponentMeta } from './types'
1717

1818
export * from './options'
1919

20+
const slotReplacer = (_: unknown, _before: string, slotName: string, _rest: unknown) => `<slot ${_before || ''}${slotName === 'default' ? '' : `name="${slotName}"`}`
21+
2022
export default defineNuxtModule<ModuleOptions>({
2123
meta: {
2224
name: 'nuxt-component-meta',
@@ -40,19 +42,18 @@ export default defineNuxtModule<ModuleOptions>({
4042
transformers: [
4143
// @nuxt/content support
4244
(component, code) => {
43-
code = code.replace(
44-
/<ContentSlot\s*([^>]*)?:use="\$slots\.([a-zA-Z0-9_]+)"/gm,
45-
(_, _before, slotName, _rest) => {
46-
return `<slot ${_before || ''}${slotName === 'default' ? '' : `name="${slotName}"`}`
47-
}
48-
)
49-
code = code.replace(
50-
/<ContentSlot\s*([^>]*)?name="([a-zA-Z0-9_]+)"/gm,
51-
(_, _before, slotName, _rest) => {
52-
return `<slot ${_before || ''}${slotName === 'default' ? '' : `name="${slotName}"`}`
53-
}
54-
)
55-
code = code.replace(/<\/ContentSlot>/gm, '</slot>')
45+
// MDCSlot
46+
if (code.includes('MDCSlot')) {
47+
code = code.replace(/<MDCSlot\s*([^>]*)?:use="\$slots\.([a-zA-Z0-9_]+)"/gm, slotReplacer)
48+
code = code.replace(/<MDCSlot\s*([^>]*)?name="([a-zA-Z0-9_]+)"/gm, slotReplacer)
49+
code = code.replace(/<\/MDCSlot>/gm, '</slot>')
50+
}
51+
// ContentSlot
52+
if (code.includes('ContentSlot')) {
53+
code = code.replace(/<ContentSlot\s*([^>]*)?:use="\$slots\.([a-zA-Z0-9_]+)"/gm, slotReplacer)
54+
code = code.replace(/<ContentSlot\s*([^>]*)?name="([a-zA-Z0-9_]+)"/gm, slotReplacer)
55+
code = code.replace(/<\/ContentSlot>/gm, '</slot>')
56+
}
5657

5758
// Handle `(const|let|var) slots = useSlots()`
5859
const name = code.match(/(const|let|var) ([a-zA-Z][a-zA-Z-_0-9]*) = useSlots\(\)/)?.[2] || '$slots'
@@ -97,8 +98,8 @@ export default defineNuxtModule<ModuleOptions>({
9798

9899

99100
// Retrieve transformers
100-
const transformers = options?.transformers || []
101-
await nuxt.callHook('component-meta:transformers' as any, transformers)
101+
let transformers = options?.transformers || []
102+
transformers = await nuxt.callHook('component-meta:transformers' as any, transformers) || transformers
102103

103104
let parser: ComponentMetaParser
104105
const parserOptions: ComponentMetaParserOptions = {

0 commit comments

Comments
 (0)