@studiocms/mdx
Version:
Add MDX Support to your StudioCMS project with ease!
36 lines (35 loc) • 1.21 kB
JavaScript
import { evaluate } from "@mdx-js/mdx";
import { createElement } from "react";
import * as runtime from "react/jsx-runtime";
import { renderToString } from "react-dom/server";
import rehypeHighlight from "rehype-highlight";
import remarkGfm from "remark-gfm";
import { shared } from "./shared.js";
const baseRemarkPlugins = [remarkGfm];
const baseRehypePlugins = [rehypeHighlight];
const { recmaPlugins, rehypePlugins, remarkPlugins, remarkRehypeOptions } = shared.mdxConfig;
const makeList = (included, userDefinedPlugins) => {
const Plugins = included;
if (userDefinedPlugins) {
for (const plugin of userDefinedPlugins) {
Plugins.push(plugin);
}
}
return Plugins;
};
async function renderMDX(content) {
const { default: MDXContent } = await evaluate(content, {
// biome-ignore lint/suspicious/noExplicitAny: this is a valid use case for explicit any
...runtime,
remarkPlugins: makeList(baseRemarkPlugins, remarkPlugins),
rehypePlugins: makeList(baseRehypePlugins, rehypePlugins),
recmaPlugins,
remarkRehypeOptions
});
return renderToString(createElement(MDXContent));
}
var render_default = renderMDX;
export {
render_default as default,
renderMDX
};