{#snippet table_region({ region_name, rows, on_cell_click, }: { region_name: "main" | "inserter"; rows: Row[]; on_cell_click(ev: MouseEvent, coords: Coords): void; })} {#if lazy_data} {#each rows as row, row_index}
{#each lazy_data.fields as field, field_index} { focus_cursor = focus; }} ondblclick={() => datum_editor?.focus()} onkeydown={(ev) => handle_table_keydown(ev)} onmousedown={on_cell_click} selected={selections.some( (sel) => sel.region === region_name && coords_eq(sel.coords, [row_index, field_index]), )} table_region={region_name} value={row.data[field_index]} /> {/each}
{/each} {/if} {/snippet}
{#if lazy_data}
{#each lazy_data.fields as _, field_index} { dragged_header = field_index; }} ondragover={(ev) => { // Enable element as drop target ev.preventDefault(); }} ondrop={(ev) => { ev.preventDefault(); if (dragged_header !== undefined) { update_field_ordinality({ field_index: dragged_header, beyond_index: field_index, }); } }} /> {/each}
{@render table_region({ region_name: "main", rows: lazy_data.rows, on_cell_click: (ev: MouseEvent, coords: Coords) => { if (ev.metaKey || ev.ctrlKey) { // TODO // selections = [...selections.filter((prev) => !coords_eq(prev, coords)), coords]; // editor_input_value = ""; } else { set_selections([{ region: "main", coords }]); } }, })}

Insert rows — press "shift + enter" to jump here or add a row

{@render table_region({ region_name: "inserter", rows: inserter_rows, on_cell_click: (ev: MouseEvent, coords: Coords) => { if (ev.metaKey || ev.ctrlKey) { // TODO // selections = [...selections.filter((prev) => !coords_eq(prev, coords)), coords]; // editor_input_value = ""; } else { set_selections([{ region: "inserter", coords }]); } }, })}
{#each inserter_rows as row} {#each lazy_data.fields as field, field_index} {/each} {/each}
{#if selections.length === 1} try_queue_delta()} on_cancel_edit={cancel_edit} on_change={() => { try_sync_edit_to_cells(); }} on_restore_focus={handle_restore_focus} /> {/if}
{/if}