import type { WalkthroughDiagram } from "./types.ts"; interface ViewerOptions { mode?: "local" | "server"; shareServerUrl?: string; diagramId?: string; existingShareUrl?: string; baseUrl?: string; } export function generateViewerHTML(diagram: WalkthroughDiagram, gitHash: string = "dev", projectRoot: string = "", options: ViewerOptions = {}): string { const diagramJSON = JSON.stringify(diagram).replace(/<\//g, "<\\/"); const { mode = "local", shareServerUrl = "", diagramId = "", existingShareUrl = "", baseUrl = "" } = options; return ` Traverse — ${escapeHTML(diagram.summary)} ${baseUrl && diagramId ? ` ` : ""}
Traverse ${escapeHTML(diagram.summary)} ${mode === "local" && shareServerUrl ? `` : ""}
${escapeHTML(diagram.code)}
`; } function escapeHTML(str: string): string { return str .replace(/&/g, "&") .replace(//g, ">") .replace(/"/g, """); }