{#snippet tree(items: EntityTreeNode[])}
{#each items as node, i (i)}
{#if node.kind === "text"}
{node.text}
{:else}
{@render entity(node)}
{/if}
{/each}
{/snippet}
{#snippet entity(node: EntityNode)}
{@const type = node.entity.type}
{#if type === "bold"}
{@render tree(node.children)}
{:else if type === "italic"}
{@render tree(node.children)}
{:else if type === "underline"}
{@render tree(node.children)}
{:else if type === "strikethrough"}
{@render tree(node.children)}
{:else if type === "spoiler"}
{@const key = spoilerKey(node.entity)}
{:else if type === "code"}
{@render tree(node.children)}
{:else if type === "pre"}
{#if node.entity.language}{node.entity.language}{/if}{@render tree(node.children)}
{:else if type === "blockquote"}
{@render tree(node.children)}{:else if type === "url" || type === "text_link" || type === "email" || type === "phone_number"} {@render tree(node.children)} {:else if type === "mention" || type === "text_mention" || type === "hashtag" || type === "cashtag" || type === "bot_command"} {@render tree(node.children)} {:else} {@render tree(node.children)} {/if} {/snippet} 0} class:jumbo-1={jumbo === 1}> {@render tree(nodes)}