import type { DocumentFixture } from "./types.js"; import { listFixtures } from "./fixtures.js"; export function escapeHtml(value: string): string { return value .replace(/&/g, "&") .replace(//g, ">") .replace(/"/g, """) .replace(/'/g, "'"); } export function renderIndex(): string { const items = listFixtures() .map( (d) => `
  • ${escapeHtml(d.title)} - ${escapeHtml(d.query)}
  • `, ) .join("\n"); return ` Document QA viewer

    Capstone 04 viewer

    Pick a document. Cited regions render as canvas overlays on the page image.

    `; } export function renderDocument(doc: DocumentFixture): string { const payload = JSON.stringify({ id: doc.id, pageWidth: doc.pageWidth, pageHeight: doc.pageHeight, pageImageUrl: doc.pageImageUrl, evidence: doc.evidence, }); const evidenceLis = doc.evidence .map( (e, i) => `
  • #${i + 1} (score ${e.score.toFixed(2)}): ${escapeHtml(e.text)}
  • `, ) .join("\n"); const halfW = doc.pageWidth / 2; const halfH = doc.pageHeight / 2; return ` ${escapeHtml(doc.title)}

    ${escapeHtml(doc.title)}

    Q: ${escapeHtml(doc.query)}

    A: ${escapeHtml(doc.answer)}

    Page (page image + overlays)

    Cited regions

    `; }