{#snippet nodes(list: TreeNode[])} {#each list as node (`${node.type}:${node.path}`)} {#if node.type === "dir"} {@const open = !closed[node.path]}
(closed[node.path] = !e.currentTarget.open)}> {#if open}
{@render nodes(node.children)}
{:else} { event.preventDefault(); onSelect(node.path); } : undefined} > {/if} {/each} {/snippet}
{@render nodes(tree)}