import { memo, useMemo } from 'react'; import type { FindingRecord } from '../../domain/finding'; import { highlightText } from '../../components/HighlightText/highlight-text'; import { RelatedFindingRing, useRelatedFindings } from '../related-findings/RelatedFindings'; /** Building the complete text belongs exclusively to the Raw Data view. */ export const RawDataView = memo(function RawDataView({ records, raw, filtered, search }: { records: FindingRecord[]; raw: string; filtered: boolean; search: string; }) { const related = useRelatedFindings(); const text = useMemo(() => filtered ? records.map(record => [`# Record ${record.index + 1}`, ...record.fields.filter(field => field.value).map(field => `${field.label}: ${field.value}`)].join('\n')).join('\n\n') : raw, [filtered, raw, records]); return
{!filtered && related?.groups.size ?
{records.filter(record => related.groups.has(record.id)).map(record =>
{record.title}
)}
: null} {filtered && related?.groups.size ? records.map(record =>
{highlightText([`# Record ${record.index + 1}`, ...record.fields.filter(field => field.value).map(field => `${field.label}: ${field.value}`)].join('\n'), search)}
) :
{highlightText(text, search)}
}
; });