import { ContentImage } from "$/ui/objects/ContentImage.tsx";
import { type Node, type DefaultInlineNode } from "./schema.ts";
export function walkBlocks(
content: (Node | DefaultInlineNode)[],
fn: (_: Node | DefaultInlineNode) => unknown,
): void {
for (const node of content) {
fn(node);
switch (node.type) {
case "heading":
case "code":
case "quote":
case "paragraph":
case "list":
case "list-item":
case "link": {
return walkBlocks(node.children, fn);
}
}
}
}
function blocksNodeToTSX(node: Node | DefaultInlineNode) {
switch (true) {
case node.type === "heading": {
switch (node.level) {
case 1:
return
{blocksToTSX(node.children)}
;
case 2:
return
{blocksToTSX(node.children)}
;
case 3:
return
{blocksToTSX(node.children)}
;
case 4:
return
{blocksToTSX(node.children)}
;
case 5:
return
{blocksToTSX(node.children)}
;
default:
return
{blocksToTSX(node.children)}
;
}
}
case node.type === "image" && !!node.image.caption: {
return (
{node.image.caption}
);
}
case node.type === "image": {
return ;
}
case node.type === "code": {
return (