{#each visibleTexts as text (text.id)}
{@const bounds = graphTextScreenBounds(text, viewport)}
beginGesture(event, text)}
onpointermove={moveGesture}
onpointerup={endGesture}
onpointercancel={endGesture}
onlostpointercapture={endGesture}
>
{@html rendered[text.id] ?? escapeGraphTextHtml(text.source)}
{#if editable && selectedId === text.id}
{/if}