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
`;
}