{#snippet expander(how: 'down' | 'up' | 'all', g: Gap)}
{@const label = how === 'all' ? 'Expand all' : how === 'down' ? 'Expand down' : 'Expand up'}
{/snippet}
{path}{#if tag}{tag}{/if}+{f.added}−{f.removed}
{#if f.note}
{#each drawn.shown as s (s.key)}
{@const row = s.row}
{@const line = row.line && !s.back ? at(row) : undefined}
{#if row.line}
{#if line && notes?.has(line)}{#if line && notes?.add}{@const to = line}{/if}
{row.text} {/if}
{:else if s.gap}
{@const g = s.gap}
{@const few = s.left != null && s.left <= STEP}
{:else}
{#if g.to === null}{@render expander('down', g)}{:else if few}{@render expander(
'all',
g
)}{:else}{#if g.from > 1}{@render expander('down', g)}{/if}{@render expander(
'up',
g
)}{/if} {row.text}
{/if}
{/each}
{row.text}