@studiocms/md
Version:
Add Markdown Support to your StudioCMS project with ease!
51 lines (50 loc) • 1.41 kB
JavaScript
import rendererConfig from "studiocms:md/config";
import { createMarkdownProcessor as createAstroMD } from "@astrojs/markdown-remark";
import {
createMarkdownProcessor as createStudioCMSMD
} from "@studiocms/markdown-remark-processor";
import { shared } from "./shared.js";
function parseCallouts(opt) {
if (opt === false) return false;
if (!opt) return void 0;
return {
theme: opt
};
}
const parseStudioCMSMDOpts = () => {
if (shared.mdConfig?.flavor === "studiocms") {
return {
autolink: shared.mdConfig?.autoLinkHeadings,
discordSubtext: shared.mdConfig?.discordSubtext,
callouts: parseCallouts(shared.mdConfig?.callouts)
};
}
return {
autolink: false,
discordSubtext: false,
callouts: void 0
};
};
let astroMDPromise;
let studioCMSMDPromise;
function preRender() {
return async (content) => {
if (rendererConfig.flavor === "astro") {
if (!astroMDPromise) astroMDPromise = createAstroMD(shared.astroMDRemark);
const astroMD = await astroMDPromise;
return (await astroMD.render(content)).code;
}
if (!studioCMSMDPromise) {
studioCMSMDPromise = createStudioCMSMD({
...shared.astroMDRemark ?? {},
studiocms: parseStudioCMSMDOpts()
});
}
const studioCMSMD = await studioCMSMDPromise;
return (await studioCMSMD.render(content)).code;
};
}
export {
parseCallouts,
preRender
};