UNPKG

@studiocms/markdoc

Version:

Add MarkDoc Support to your StudioCMS project with ease!

75 lines (73 loc) 2.27 kB
import { addVirtualImports, createResolver } from "astro-integration-kit"; import { definePlugin } from "studiocms/plugins"; import { shared } from "./lib/shared.js"; function internalMarkDocIntegration(packageIdentifier, options) { const { resolve } = createResolver(import.meta.url); const internalRenderer = resolve("./lib/render.js"); const resolvedOptions = { type: options?.type || "html", argParse: options?.argParse, transformConfig: options?.transformConfig }; return { name: packageIdentifier, hooks: { "astro:config:setup": (params) => { addVirtualImports(params, { name: packageIdentifier, imports: { "studiocms:markdoc/renderer": ` import { renderMarkDoc as _render } from '${internalRenderer}'; export const renderMarkDoc = _render; export default renderMarkDoc; ` } }); }, "astro:config:done": () => { shared.markDocConfig = resolvedOptions; } } }; } function studiocmsMarkDoc(options) { const { resolve } = createResolver(import.meta.url); const packageIdentifier = "@studiocms/markdoc"; const renderer = resolve("./components/render.js"); const editor = resolve("./components/editor.astro"); const resolvedOptions = { type: options?.type || "html", argParse: options?.argParse, transformConfig: options?.transformConfig }; return definePlugin({ identifier: packageIdentifier, name: "StudioCMS MarkDoc", studiocmsMinimumVersion: "0.1.0-beta.21", requires: ["@studiocms/md"], hooks: { "studiocms:astro:config": ({ addIntegrations }) => { addIntegrations(internalMarkDocIntegration(packageIdentifier, resolvedOptions)); }, "studiocms:config:setup": ({ setRendering }) => { setRendering({ pageTypes: [ // Define the MarkDoc page type { identifier: "studiocms/markdoc", label: "MarkDoc", pageContentComponent: editor, rendererComponent: renderer } ] }); } } }); } var index_default = studiocmsMarkDoc; export { index_default as default, internalMarkDocIntegration, studiocmsMarkDoc };