{ if (e.target === e.currentTarget) enterEditMode(false); }}
>
{#if editMode}
{ ddIdx = -1; onChange(e.target.value); }}
onkeydown={(e) => {
if (matches.length) {
if (e.key === "ArrowDown") { e.preventDefault(); ddIdx = (ddIdx + 1) % matches.length; return; }
if (e.key === "ArrowUp") { e.preventDefault(); ddIdx = ddIdx <= 0 ? matches.length - 1 : ddIdx - 1; return; }
if (e.key === "Enter" && ddIdx >= 0) { e.preventDefault(); e.stopPropagation(); pick(matches[ddIdx]); return; }
}
if (e.key === "Enter" || e.key === "Escape") { e.preventDefault(); e.stopPropagation(); editMode = false; }
}}
onfocus={() => { focused = true; }}
onblur={() => { focused = false; editMode = false; ddIdx = -1; }}
/>
{:else}
{#each chips as chip, i}
/
{/each}
{ focused = true; }}
onblur={() => { focused = false; ddIdx = -1; }}
/>
{/if}
{#if focused && matches.length}
{#each matches as m, i}
{ e.preventDefault(); pick(m); }}
>
{m}
{/each}
{/if}