in src/search/resultsPanel/components/TextWithHighlight.tsx [17:56]
render() {
const { className, textWithHighlights } = this.props;
if (isNullOrUndefined(textWithHighlights)) {
return null;
}
const text = textWithHighlights.Text;
if (isNullOrUndefined(textWithHighlights.Highlights)) {
return <span>{text}</span>;
}
// TopAnswer will be out of order, sort the highlights
const sortedHighlights = unionSortedHighlights(
textWithHighlights.Highlights!.sort(
(highlight1: any, highlight2: any) =>
highlight1.BeginOffset - highlight2.BeginOffset
)
);
const lastHighlight = sortedHighlights[sortedHighlights.length - 1];
return (
<span className={className}>
{sortedHighlights.map((highlight: any, idx: number) => (
<span key={idx}>
<span>
{text!.substring(
idx === 0 ? 0 : sortedHighlights[idx - 1].EndOffset,
highlight.BeginOffset
)}
</span>
<HighlightedText text={text} highlight={highlight} />
</span>
))}
<span>
{text!.substring(lastHighlight ? lastHighlight.EndOffset : 0)}
</span>
</span>
);
}