diff --git a/packages/streamdown/lib/mermaid/utils.ts b/packages/streamdown/lib/mermaid/utils.ts index 0242d786..8a0fe818 100644 --- a/packages/streamdown/lib/mermaid/utils.ts +++ b/packages/streamdown/lib/mermaid/utils.ts @@ -1,3 +1,13 @@ +/** + * Ensure SVG string has required XML namespaces for canvas rendering + */ +function normalizeSvg(svg: string): string { + if (svg.includes("xlink:href") && !svg.includes("xmlns:xlink")) { + return svg.replace(" { + const normalized = normalizeSvg(svgString); + const encoded = "data:image/svg+xml;base64," + - btoa(unescape(encodeURIComponent(svgString))); + btoa(unescape(encodeURIComponent(normalized))); const img = new Image(); img.crossOrigin = "anonymous";