{i18n.t("game.calculator.col.ship")}
{i18n.t("game.calculator.col.tech")}
{#each BLOCK_ROWS as row (row.key)} {@const isComputed = computedInput === row.key}
{row.label()}
{#if isComputed}
{:else}
onBlockKey(e, row.key, row.smartStep)} oninput={(e) => capDecimals(e, (v) => (blocks[row.key] = v))} /> {/if} {#if row.tech !== null} {@const techKey = row.tech}
{#if techOverridden[techKey]}
bumpTech(e, techKey)} oninput={(e) => capDecimals(e, (v) => (techs[techKey] = v))} />
onResetTech(techKey)} > 🔒
{:else}
{formatNumber(techs[techKey])}
void activateTechOverride(techKey)} > 🔓
{/if}
{:else}
{/if}
{/each}