{#snippet table_region({ region, rows, on_cell_click, }: { region: "main" | "inserter"; rows: Row[]; on_cell_click(ev: MouseEvent, coords: Coords): void; })} {#if lazy_data} {#each rows as row, row_idx}
{#each lazy_data.fields as field, field_idx} { focus_cursor = focus; }} ondblclick={() => datum_editor?.focus()} onkeydown={(ev) => handle_cell_keydown(ev)} onmousedown={on_cell_click} onpaste={handle_cell_paste} selected={selections.some( (sel) => sel.coords.region === region && coords_eq(sel.coords, { region, row_idx, field_idx }), )} table_region={region} value={row.data[field_idx]} /> {/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, }); } }} onresize={(new_width_px) => { update_field_table_width_px(field_index, new_width_px); }} /> {/each}
{#if subfilter && subfilter !== "null"}
{/if}
{@render table_region({ region: "main", rows: lazy_data.rows, on_cell_click: (ev: MouseEvent, coords: Coords) => { if (ev.metaKey || ev.ctrlKey) { set_selections([ coords, ...selections .filter((sel) => !coords_eq(sel.coords, coords)) .map((sel) => sel.coords), ]); } else if (ev.shiftKey) { move_cursor(coords, { additive: true }); } else { move_cursor(coords); } }, })}
{lazy_data.count} records total {#if lazy_data.count > lazy_data.rows.length} ({lazy_data.count - lazy_data.rows.length} hidden; use filters to narrow your search) {/if}

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

{@render table_region({ region: "inserter", rows: inserter_rows, on_cell_click: (ev: MouseEvent, coords: Coords) => { if (ev.metaKey || ev.ctrlKey) { set_selections([ coords, ...selections .filter((sel) => !coords_eq(sel.coords, coords)) .map((sel) => sel.coords), ]); } else if (ev.shiftKey) { move_cursor(coords, { additive: true }); } else { move_cursor(coords); } }, })}
{#each inserter_rows as row} {#each lazy_data.fields as field, field_index} {/each} {/each}
{#if selections.length !== 0 && selections.every(({ coords: { field_idx } }) => field_idx === selections[0]?.coords.field_idx)} try_queue_delta()} on_cancel_edit={cancel_edit} on_change={() => { try_sync_edit_to_cells(); }} on_restore_focus={handle_restore_focus} /> {/if}
{/if}