diff --git a/package.json b/package.json index 27b5dc6..610181c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "unplugin-vue-markdown", "type": "module", - "version": "28.2.0", + "version": "28.3.0", "packageManager": "pnpm@9.15.4", "description": "Compile Markdown to Vue component", "author": "Anthony Fu ", diff --git a/src/core/markdown.ts b/src/core/markdown.ts index 2b9367c..95b0837 100644 --- a/src/core/markdown.ts +++ b/src/core/markdown.ts @@ -102,6 +102,7 @@ export function createMarkdown(options: ResolvedOptions) { const md = await setupPromise const { + wrapperDiv, wrapperClasses, wrapperComponent, transforms, @@ -116,18 +117,20 @@ export function createMarkdown(options: ResolvedOptions) { let html = await md.renderAsync(raw, env) const { excerpt = '', frontmatter: data = null } = env - const wrapperClassesResolved = toArray( - typeof wrapperClasses === 'function' - ? wrapperClasses(id, raw) - : wrapperClasses, - ) - .filter(Boolean) - .join(' ') - - if (wrapperClassesResolved) - html = `
${html}
` - else - html = `
${html}
` + if (wrapperDiv) { + const wrapperClassesResolved = toArray( + typeof wrapperClasses === 'function' + ? wrapperClasses(id, raw) + : wrapperClasses, + ) + .filter(Boolean) + .join(' ') + + if (wrapperClassesResolved) + html = `
${html}
` + else + html = `
${html}
` + } const wrapperComponentName = typeof wrapperComponent === 'function' ? wrapperComponent(id, raw) diff --git a/src/core/options.ts b/src/core/options.ts index f9570c6..83e21bc 100644 --- a/src/core/options.ts +++ b/src/core/options.ts @@ -17,6 +17,7 @@ export function resolveOptions(userOptions: Options): ResolvedOptions { markdownItOptions: {}, markdownItUses: [], markdownItSetup: () => {}, + wrapperDiv: true, wrapperComponent: null, transforms: {}, vueVersion: userOptions.vueVersion || getVueVersion(), diff --git a/src/types.ts b/src/types.ts index 858188c..2c8511b 100644 --- a/src/types.ts +++ b/src/types.ts @@ -169,9 +169,18 @@ export interface Options { */ markdownItSetup?: (MarkdownIt: MarkdownItAsync) => void | Promise + /** + * Wrap the rendered html in a div + * + * @default true + */ + wrapperDiv?: boolean + /** * Class names for wrapper div * + * This option will be ignored if `wrapperDiv` is set to `false` + * * @default 'markdown-body' */ wrapperClasses?: string | string[] | undefined | null | ((id: string, code: string) => string | string[] | undefined | null) @@ -199,7 +208,7 @@ export interface Options { exclude?: FilterPattern } -export interface ResolvedOptions extends Required {} +export interface ResolvedOptions extends Required { } export interface MarkdownEnv extends MarkdownItEnv { id: string