{#if hasBlocks}
{reviewedCount} / {totalCount}
geprüft
{#each sortedBlocks as block, i (block.id)} {#if dragDrop.dropTargetIdx === i}
{/if}
dragDrop.handleGripDown(e, block.id)} class="relative transition-all duration-150 {dragDrop.draggedBlockId === block.id ? 'z-10 rounded-lg shadow-xl ring-2 ring-turquoise/40' : ''}" style={dragDrop.draggedBlockId === block.id ? `transform: translateY(${dragDrop.dragOffsetY}px) scale(1.02); opacity: 0.9;` : ''} >
autoSave.handleTextChange(block.id, text)} onFocus={() => handleFocus(block.id)} onDeleteClick={() => handleDelete(block.id)} onRetry={() => autoSave.handleRetry(block.id, block.text)} onReviewToggle={() => onReviewToggle(block.id)} onMoveUp={() => handleMoveUp(block.id)} onMoveDown={() => handleMoveDown(block.id)} isFirst={i === 0} isLast={i === sortedBlocks.length - 1} source={block.source} />
{/each} {#if dragDrop.dropTargetIdx === sortedBlocks.length}
{/if}
{m.transcription_next_block_cta({ number: sortedBlocks.length + 1 })}
{#if canRunOcr && onTriggerOcr}
{m.ocr_section_heading()}
{/if}
{:else}
{/if} {#if canWrite && hasBlocks}
Für Training vormerken
{#each [{ label: 'KURRENT_RECOGNITION', display: m.training_chip_kurrent() }, { label: 'KURRENT_SEGMENTATION', display: m.training_chip_segmentation() }] as chip (chip.label)}
handleLabelToggle(chip.label)} class="rounded-full border px-3 py-1 font-sans text-xs font-medium transition-colors {localLabels.includes(chip.label) ? 'border-brand-mint bg-brand-mint text-brand-navy' : 'border-line bg-surface text-ink-3 hover:border-brand-mint hover:text-brand-navy'}" > {chip.display}
{/each}
{/if}