From 9afa4611cbddd14349dcad9bf0af1fb8b9585381 Mon Sep 17 00:00:00 2001 From: Nate Moore Date: Fri, 5 Aug 2022 17:16:34 -0500 Subject: [PATCH] Support Fragment in MDX files (#4136) * fix: Fragment for MDX files * Update core.ts * fix: better type guard for `render` Co-authored-by: Nate Moore --- .changeset/strong-cars-wash.md | 5 +++++ packages/astro/src/core/render/core.ts | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .changeset/strong-cars-wash.md diff --git a/.changeset/strong-cars-wash.md b/.changeset/strong-cars-wash.md new file mode 100644 index 000000000000..6dc8926d78ce --- /dev/null +++ b/.changeset/strong-cars-wash.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fix issue when using Fragment inside MDX diff --git a/packages/astro/src/core/render/core.ts b/packages/astro/src/core/render/core.ts index 231088fa7999..6c47d0a187ab 100644 --- a/packages/astro/src/core/render/core.ts +++ b/packages/astro/src/core/render/core.ts @@ -10,7 +10,7 @@ import type { } from '../../@types/astro'; import type { LogOptions } from '../logger/core.js'; -import { renderPage } from '../../runtime/server/index.js'; +import { renderPage, Fragment } from '../../runtime/server/index.js'; import { getParams } from '../routing/params.js'; import { createResult } from './result.js'; import { callGetStaticPaths, findPathItemByKey, RouteCache } from './route-cache.js'; @@ -157,6 +157,11 @@ export async function render(opts: RenderOptions): Promise { if (typeof (mod as any).components === 'object') { Object.assign(pageProps, { components: (mod as any).components }); } + + // HACK: expose `Fragment` for all MDX components + if (typeof mod.default === 'function' && mod.default.name.startsWith('MDX')) { + Object.assign(pageProps, { components: Object.assign((pageProps?.components as any) ?? {}, { Fragment }) }); + } return await renderPage(result, Component, pageProps, null, streaming); }