aboutsummaryrefslogtreecommitdiff
path: root/packages/integrations/markdoc/src/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/markdoc/src/index.ts')
-rw-r--r--packages/integrations/markdoc/src/index.ts59
1 files changed, 9 insertions, 50 deletions
diff --git a/packages/integrations/markdoc/src/index.ts b/packages/integrations/markdoc/src/index.ts
index ba8a0af84..627f08c77 100644
--- a/packages/integrations/markdoc/src/index.ts
+++ b/packages/integrations/markdoc/src/index.ts
@@ -32,11 +32,7 @@ export default function markdocIntegration(legacyConfig?: any): AstroIntegration
name: '@astrojs/markdoc',
hooks: {
'astro:config:setup': async (params) => {
- const {
- config: astroConfig,
- updateConfig,
- addContentEntryType,
- } = params as SetupHookParams;
+ const { config: astroConfig, addContentEntryType } = params as SetupHookParams;
markdocConfigResult = await loadMarkdocConfig(astroConfig);
const userMarkdocConfig = markdocConfigResult?.config ?? {};
@@ -53,9 +49,6 @@ export default function markdocIntegration(legacyConfig?: any): AstroIntegration
addContentEntryType({
extensions: ['.mdoc'],
getEntryInfo,
- // Markdoc handles script / style propagation
- // for Astro components internally
- handlePropagation: false,
async getRenderModule({ entry, viteId }) {
const ast = Markdoc.parse(entry.body);
const pluginContext = this;
@@ -95,10 +88,7 @@ export default function markdocIntegration(legacyConfig?: any): AstroIntegration
});
}
- const res = `import {
- createComponent,
- renderComponent,
- } from 'astro/runtime/server/index.js';
+ const res = `import { jsx as h } from 'astro/jsx-runtime';
import { Renderer } from '@astrojs/markdoc/components';
import { collectHeadings, setupConfig, Markdoc } from '@astrojs/markdoc/runtime';
import * as entry from ${JSON.stringify(viteId + '?astroContentCollectionEntry')};
@@ -129,24 +119,14 @@ export function getHeadings() {
const content = Markdoc.transform(ast, config);
return collectHeadings(Array.isArray(content) ? content : content.children);
}
+export async function Content (props) {
+ const config = setupConfig({
+ ...userConfig,
+ variables: { ...userConfig.variables, ...props },
+ }, entry);
-export const Content = createComponent({
- factory(result, props) {
- const config = setupConfig({
- ...userConfig,
- variables: { ...userConfig.variables, ...props },
- }, entry);
-
- return renderComponent(
- result,
- Renderer.name,
- Renderer,
- { stringifiedAst, config },
- {}
- );
- },
- propagation: 'self',
-});`;
+ return h(Renderer, { config, stringifiedAst });
+}`;
return { code: res };
},
contentModuleTypes: await fs.promises.readFile(
@@ -154,27 +134,6 @@ export const Content = createComponent({
'utf-8'
),
});
-
- updateConfig({
- vite: {
- plugins: [
- {
- name: '@astrojs/markdoc:astro-propagated-assets',
- enforce: 'pre',
- // Astro component styles and scripts should only be injected
- // When a given Markdoc file actually uses that component.
- // Add the `astroPropagatedAssets` flag to inject only when rendered.
- resolveId(this: rollup.TransformPluginContext, id: string, importer: string) {
- if (importer === markdocConfigResult?.fileUrl.pathname && id.endsWith('.astro')) {
- return this.resolve(id + '?astroPropagatedAssets', importer, {
- skipSelf: true,
- });
- }
- },
- },
- ],
- },
- });
},
'astro:server:setup': async ({ server }) => {
server.watcher.on('all', (event, entry) => {