import { escapeHtml } from './citations.js'; export function renderSourcesList(sources) { if (!sources || sources.length === 0) return '

No citations returned.

'; return sources.map(function (s, idx) { var n = s.number || idx + 1; var page = s.page || s.page_number || s.pageNumber; var meta = []; if (page) meta.push('page ' + page); if (s.source_type === 'multimodal_page') meta.push('visual PDF page'); if (s.visual_caption_source) meta.push('caption: ' + s.visual_caption_source); if (s.visual_kind || s.source_priority) meta.push(s.visual_kind || s.source_priority); if (s.category) meta.push(s.category); if (s.doc_type || s.type) meta.push(s.doc_type || s.type); if (s.score != null) meta.push('score ' + Number(s.score).toFixed(3)); return '
' + '[' + n + '] ' + escapeHtml(s.title || s.resource || 'Untitled source') + '' + renderSourceBadges(s) + '
' + escapeHtml(meta.join(' ยท ') || 'indexed source') + '
' + (s.excerpt ? '

' + escapeHtml(cleanSourceExcerpt(s.excerpt).slice(0, 900)) + '

' : '') + '
'; }).join(''); } function renderSourceBadges(source) { var badges = []; if (source.source_priority) badges.push(source.source_priority); if (source.visual_kind && badges.indexOf(source.visual_kind) === -1) badges.push(source.visual_kind); if (source.visual_caption_source && badges.indexOf(source.visual_caption_source) === -1) badges.push(source.visual_caption_source); if (source.category) badges.push(source.category); if (source.source_boost && Number(source.source_boost) !== 1) badges.push(Number(source.source_boost).toFixed(2) + 'x'); if (!badges.length) return ''; return '
' + badges.slice(0, 4).map(function (badge) { return '' + escapeHtml(badge) + ''; }).join('') + '
'; } function cleanSourceExcerpt(text) { return String(text || '') .replace(/^\[Page-image match\]\s*/i, '') .replace(//gi, ' ') .replace(/\*\*/g, '') .replace(/\|\s*-{2,}\s*/g, ' ') .replace(/\|/g, ' ') .replace(/\s+/g, ' ') .trim(); }