UNPKG

@studiocms/mdx

Version:

Add MDX Support to your StudioCMS project with ease!

36 lines (35 loc) 1.21 kB
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 };