diff options
Diffstat (limited to 'packages/integrations/markdoc/components/TreeNode.ts')
-rw-r--r-- | packages/integrations/markdoc/components/TreeNode.ts | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/packages/integrations/markdoc/components/TreeNode.ts b/packages/integrations/markdoc/components/TreeNode.ts index 8a3158589..a60597a0d 100644 --- a/packages/integrations/markdoc/components/TreeNode.ts +++ b/packages/integrations/markdoc/components/TreeNode.ts @@ -1,4 +1,5 @@ import type { AstroInstance } from 'astro'; +import { Fragment } from 'astro/jsx-runtime'; import type { RenderableTreeNode } from '@markdoc/markdoc'; import Markdoc from '@markdoc/markdoc'; import { createComponent, renderComponent, render } from 'astro/runtime/server/index.js'; @@ -44,9 +45,16 @@ export const ComponentNode = createComponent({ propagation: 'none', }); -export function createTreeNode(node: RenderableTreeNode): TreeNode { +export function createTreeNode(node: RenderableTreeNode | RenderableTreeNode[]): TreeNode { 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: node.map((child) => createTreeNode(child)), + }; } else if (node === null || typeof node !== 'object' || !Markdoc.Tag.isTag(node)) { return { type: 'text', content: '' }; } |