mirror of
https://github.com/withastro/astro.git
synced 2025-01-13 22:11:20 -05:00
parent
faf74af522
commit
3a267f33a2
2 changed files with 25 additions and 6 deletions
5
.changeset/calm-tips-think.md
Normal file
5
.changeset/calm-tips-think.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
'@astrojs/mdx': patch
|
||||
---
|
||||
|
||||
Reverts https://github.com/withastro/astro/commit/9a3b48c5c3e8f597159454f06c5a0ce8e709bc50 which caused a regression for rendering inline MDX components and MDX files from content collections
|
|
@ -1,15 +1,29 @@
|
|||
import type { NamedSSRLoadedRendererValue } from 'astro';
|
||||
import { AstroError } from 'astro/errors';
|
||||
import { jsx } from 'astro/jsx-runtime';
|
||||
import { AstroJSX, jsx } from 'astro/jsx-runtime';
|
||||
import { renderJSX } from 'astro/runtime/server/index.js';
|
||||
|
||||
const slotName = (str: string) => str.trim().replace(/[-_]([a-z])/g, (_, w) => w.toUpperCase());
|
||||
|
||||
// MDX components are tagged with `__astro_tag_component__` in `vite-plugin-mdx-postprocess.ts`
|
||||
// and tagged componenets can directly tell Astro which renderer to use in build-time, rather
|
||||
// than checking the components in runtime. So this function is made a no-op as any untagged
|
||||
// component wouldn't have belonged to MDX.
|
||||
export async function check() {
|
||||
// NOTE: In practice, MDX components are always tagged with `__astro_tag_component__`, so the right renderer
|
||||
// is used directly, and this check is not often used to return true.
|
||||
export async function check(
|
||||
Component: any,
|
||||
props: any,
|
||||
{ default: children = null, ...slotted } = {},
|
||||
) {
|
||||
if (typeof Component !== 'function') return false;
|
||||
const slots: Record<string, any> = {};
|
||||
for (const [key, value] of Object.entries(slotted)) {
|
||||
const name = slotName(key);
|
||||
slots[name] = value;
|
||||
}
|
||||
try {
|
||||
const result = await Component({ ...props, ...slots, children });
|
||||
return result[AstroJSX];
|
||||
} catch (e) {
|
||||
throwEnhancedErrorIfMdxComponent(e as Error, Component);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue