{#if hasBlocks}
{#each sortedBlocks as block, i (block.id)} {#if dropTargetIdx === i}
{/if}
handleGripDown(e, block.id)} class="relative transition-all duration-150 {draggedBlockId === block.id ? 'z-10 rounded-lg shadow-xl ring-2 ring-turquoise/40' : ''}" style={draggedBlockId === block.id ? `transform: translateY(${dragOffsetY}px) scale(1.02); opacity: 0.9;` : ''} > handleTextChange(block.id, text)} onFocus={() => handleFocus(block.id)} onDeleteClick={() => handleDelete(block.id)} onRetry={() => handleRetry(block.id)} onReviewToggle={() => onReviewToggle(block.id)} onMoveUp={() => handleMoveUp(block.id)} onMoveDown={() => handleMoveDown(block.id)} isFirst={i === 0} isLast={i === sortedBlocks.length - 1} />
{/each} {#if dropTargetIdx === sortedBlocks.length}
{/if}
{m.transcription_next_block_cta({ number: sortedBlocks.length + 1 })}
{:else}
{#if canRunOcr && onTriggerOcr}

{m.transcription_empty_title()}

{m.transcription_empty_desc()}

{:else}

{m.transcription_empty_cta()}

{/if}
{/if}