{#snippet renderText(text: string, marks: ArticleMark[], index = 0)} {#if index >= marks.length}{text}{:else} {@const mark = marks[index]} {#if mark.type === 'bold'}{@render renderText(text, marks, index + 1)} {:else if mark.type === 'italic'}{@render renderText(text, marks, index + 1)} {:else if mark.type === 'code'}{@render renderText(text, marks, index + 1)} {:else}{@render renderText(text, marks, index + 1)}{/if} {/if} {/snippet} {#snippet children(node: ArticleNode)} {#each node.content ?? [] as child}{@render renderNode(child)}{/each} {/snippet} {#snippet renderNode(node: ArticleNode)} {#if node.type === 'text'}{@render renderText(node.text ?? '', node.marks ?? [])} {:else if node.type === 'paragraph'}

{@render children(node)}

{:else if node.type === 'heading' && Number(node.attrs?.level) === 2}

{@render children(node)}

{:else if node.type === 'heading'}

{@render children(node)}

{:else if node.type === 'bulletList'} {:else if node.type === 'orderedList'}
    {@render children(node)}
{:else if node.type === 'listItem'}
  • {@render children(node)}
  • {:else if node.type === 'blockquote'}
    {@render children(node)}
    {:else if node.type === 'horizontalRule'}
    {:else if node.type === 'hardBreak'}
    {:else if node.type === 'buildEmbed' && builds[String(node.attrs?.embedKey ?? '')]} {:else if node.type === 'articleImage' && images[String(node.attrs?.imageId ?? '')]} {@const image = images[String(node.attrs?.imageId ?? '')]}
    {image.alt}/{#if image.caption}
    {image.caption}
    {/if}
    {/if} {/snippet}
    {@render children(document)}