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(/!\[[^\]]*\]\([^)]*\)/g, ' ')
.replace(/
/gi, ' ')
.replace(/\*\*/g, '')
.replace(/\|\s*-{2,}\s*/g, ' ')
.replace(/\|/g, ' ')
.replace(/\s+/g, ' ')
.trim();
}