mdx/index.ts
2026-10-23 08:53:07 -04:00

14 lines
662 B
TypeScript

import { evaluate } from "@mdx-js/mdx";
import * as runtime from "react/jsx-runtime";
import { createElement } from "react";
import { renderToStaticMarkup } from "react-dom/server";
import type { Integration } from "muddle/contracts";
export async function renderMdx(source: string): Promise<string> {
const module = await evaluate(source, { ...runtime });
return renderToStaticMarkup(createElement(module.default));
}
export function mdxIntegration(): Integration {
return { name: "mdx", setup(context) { context.loader("mdx", { name: "mdx", extensions: [".mdx"], async load(file) { return { data: {}, content: await renderMdx(file.source) }; } }); } };
}