diff options
author | 2023-06-06 13:40:04 -0400 | |
---|---|---|
committer | 2023-06-06 13:40:04 -0400 | |
commit | 2a4bb23b2f7f82b3fabdad4d64101fcc778acaa4 (patch) | |
tree | 7a013dd3d6df600eebe01a07d730dc8a55a1611e /packages/integrations/markdoc/components | |
parent | f63d1d0c4d54bc643b41156f7f2a9b680ecc8904 (diff) | |
download | astro-2a4bb23b2f7f82b3fabdad4d64101fcc778acaa4.tar.gz astro-2a4bb23b2f7f82b3fabdad4d64101fcc778acaa4.tar.zst astro-2a4bb23b2f7f82b3fabdad4d64101fcc778acaa4.zip |
Fix missing styles and scripts on `document: {render:null}` (#7309)
* fix: propagate assets when using document `render: null`
* fix: reverse spread order
* refactor: use README rec in test
* chore: changeset
* chore: revert unneeded changes
Diffstat (limited to 'packages/integrations/markdoc/components')
-rw-r--r-- | packages/integrations/markdoc/components/Renderer.astro | 8 | ||||
-rw-r--r-- | packages/integrations/markdoc/components/TreeNode.ts | 14 |
2 files changed, 10 insertions, 12 deletions
diff --git a/packages/integrations/markdoc/components/Renderer.astro b/packages/integrations/markdoc/components/Renderer.astro index 6571e8c71..4b0dbb3a0 100644 --- a/packages/integrations/markdoc/components/Renderer.astro +++ b/packages/integrations/markdoc/components/Renderer.astro @@ -15,4 +15,10 @@ const ast = Markdoc.Ast.fromJSON(stringifiedAst); const content = Markdoc.transform(ast, config); --- -<ComponentNode treeNode={await createTreeNode(content)} /> +{ + Array.isArray(content) ? ( + content.map(async (c) => <ComponentNode treeNode={await createTreeNode(c)} />) + ) : ( + <ComponentNode treeNode={await createTreeNode(content)} /> + ) +} diff --git a/packages/integrations/markdoc/components/TreeNode.ts b/packages/integrations/markdoc/components/TreeNode.ts index 8ad778063..082495a87 100644 --- a/packages/integrations/markdoc/components/TreeNode.ts +++ b/packages/integrations/markdoc/components/TreeNode.ts @@ -1,5 +1,4 @@ import type { AstroInstance } from 'astro'; -import { Fragment } from 'astro/jsx-runtime'; import type { RenderableTreeNode } from '@markdoc/markdoc'; import Markdoc from '@markdoc/markdoc'; import { @@ -106,18 +105,11 @@ export const ComponentNode = createComponent({ propagation: 'self', }); -export async function createTreeNode(node: RenderableTreeNode | RenderableTreeNode[]): TreeNode { +export async function createTreeNode(node: RenderableTreeNode): Promise<TreeNode> { if (isHTMLString(node)) { return { type: 'text', content: node as HTMLString }; } else if (typeof node === 'string' || typeof node === 'number') { return { type: 'text', content: String(node) }; - } else if (Array.isArray(node)) { - return { - type: 'component', - component: Fragment, - props: {}, - children: await Promise.all(node.map((child) => createTreeNode(child))), - }; } else if (node === null || typeof node !== 'object' || !Markdoc.Tag.isTag(node)) { return { type: 'text', content: '' }; } @@ -136,7 +128,7 @@ export async function createTreeNode(node: RenderableTreeNode | RenderableTreeNo }; } else if (isPropagatedAssetsModule(node.name)) { const { collectedStyles, collectedLinks, collectedScripts } = node.name; - const component = (await node.name.getMod())?.default ?? Fragment; + const component = (await node.name.getMod()).default; const props = node.attributes; return { @@ -160,7 +152,7 @@ export async function createTreeNode(node: RenderableTreeNode | RenderableTreeNo type PropagatedAssetsModule = { __astroPropagation: true; - getMod: () => Promise<AstroInstance['default']>; + getMod: () => Promise<AstroInstance>; collectedStyles: string[]; collectedLinks: string[]; collectedScripts: string[]; |