{#each structure?.columns || [] as column, index} {#if index == editingColumn} { dispatchChangeColumns( $$props, cols => cols.map((col, i) => (index == i ? { columnName } : col)), row => _.mapKeys(row, (v, k) => (k == column.columnName ? columnName : k)) ); }} onBlur={() => (editingColumn = null)} focusOnCreate blurOnEnter existingNames={structure?.columns.map(x => x.columnName)} /> {:else} (editingColumn = index)} onRemove={() => { dispatchChangeColumns($$props, cols => cols.filter((c, i) => i != index)); }} onUp={() => { dispatchChangeColumns($$props, cols => exchange(cols, index, index - 1)); }} onDown={() => { dispatchChangeColumns($$props, cols => exchange(cols, index, index + 1)); }} /> {/if} {/each} { dispatchChangeColumns($$props, cols => [...cols, { columnName }]); }} placeholder="New column" existingNames={(structure?.columns || []).map(x => x.columnName)} />