{#each citations.reduce((acc, citation) => { citation.document.forEach((document, index) => { const metadata = citation.metadata?.[index]; const id = metadata?.source ?? 'N/A'; let source = citation?.source; if (metadata?.name) { source = { ...source, name: metadata.name }; } // Check if ID looks like a URL if (id.startsWith('http://') || id.startsWith('https://')) { source = { name: id }; } const existingSource = acc.find((item) => item.id === id); if (existingSource) { existingSource.document.push(document); existingSource.metadata.push(metadata); } else { acc.push( { id: id, source: source, document: [document], metadata: metadata ? [metadata] : [] } ); } }); return acc; }, []) as citation, idx}
{/each}