function HighlightedExcerpt({ excerpt, highlightStart, highlightEnd, label }) { if (!excerpt) return null const start = Number(highlightStart) const end = Number(highlightEnd) if (Number.isInteger(start) && Number.isInteger(end) && start >= 0 && end <= excerpt.length && end > start) { return (
{excerpt.slice(0, start)} {excerpt.slice(start, end)} {excerpt.slice(end)}
) } const needle = label || '' const at = needle ? excerpt.toLowerCase().indexOf(needle.toLowerCase()) : -1 if (at < 0) return{excerpt}
return ({excerpt.slice(0, at)} {excerpt.slice(at, at + needle.length)} {excerpt.slice(at + needle.length)}
) } export default function MaskReviewPanel({ review, busy, onSubmit }) { if (!review?.candidates?.length) return null return (Lernmodus: nur die gelb markierte Nennung. Bestätigen legt die Bezeichnung lokal ab. „Nicht schützenswert“ verhindert die Maskierung. Beides bei demselben Wort markiert es als mehrdeutig.