astro/packages/integrations/markdoc/components/RenderNode.astro

30 lines
652 B
Text

---
import stringifyAttributes from 'stringify-attributes';
import type { AstroNode } from './astroNode';
type Props = {
node: AstroNode;
};
const Node = (Astro.props as Props).node;
---
{
typeof Node === 'string' ? (
<Fragment set:text={Node} />
) : 'component' in Node ? (
<Node.component {...Node.props}>
{Node.children.map((child) => (
<Astro.self node={child} />
))}
</Node.component>
) : (
<Fragment>
<Fragment set:html={`<${Node.tag} ${stringifyAttributes(Node.attributes)}>`} />
{Node.children.map((child) => (
<Astro.self node={child} />
))}
<Fragment set:html={`</${Node.tag}>`} />
</Fragment>
)
}