Auswahlen
{currentSelections.length > 0 && {currentSelections.length}}
{currentSelections.length === 0
?
Noch keine Auswahlen
: currentSelections.map((sel, i) => (
{i + 1}
{sel.mode === 'rect' ? 'Rect' : 'Poly'}
{sel.mode === 'rect' && sel.bbox
? `${Math.round(sel.bbox.width)}×${Math.round(sel.bbox.height)}`
: `${sel.polygon?.length ?? 0} Pkt.`}
))}
{statusMsg &&
{statusMsg}
}
Wörter
{selectedObjectId
? ` (Objekt ${objects.findIndex(o => o.id === selectedObjectId) + 1})`
: ' (neues Objekt)'}
{/* Existing word chips for selected object */}
{selectedObjectId && (
{(objectWords[selectedObjectId] || []).map(w => (
{w.titel_de}
))}
{(objectWords[selectedObjectId] || []).length === 0 && (
Noch keine Wörter
)}
)}
{/* Pending words for new object */}
{!selectedObjectId && pendingWords.length > 0 && (
{pendingWords.map((w, i) => (
{w}
))}
)}
{/* Add word input */}
selectedObjectId
? setWordInputs(prev => ({ ...prev, [selectedObjectId]: v }))
: setNewWordInput(v)}
onSubmit={() => selectedObjectId ? handleAddObjectWord(selectedObjectId) : handleAddPendingWord()}
token={token}
placeholder="Wort hinzufügen…"
excludeTitles={selectedObjectId
? (objectWords[selectedObjectId] || []).map(w => w.titel_de)
: pendingWords}
inputStyle={{ flex:1, padding:'4px 8px', borderRadius:'var(--r-sm)', border:'1px solid var(--border)', background:'var(--surface-2)', color:'var(--text-1)', fontFamily:'var(--font)', fontSize:12, width: '100%' }}
/>