UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

20 lines (19 loc) 1.23 kB
//#region src/Mermaid/SyntaxMermaid/prepareMermaidSvg.ts const voidElementPattern = new RegExp(`<(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)((?:\\s[^>]*?)?)\\s*/?>`, "gi"); const ensureXmlSafeVoidElements = (svg) => svg.replaceAll(voidElementPattern, "<$1$2/>"); const applyFirefoxSizeFix = (svg) => { if (typeof window === "undefined" || typeof navigator === "undefined" || !navigator.userAgent.includes("Firefox") || typeof DOMParser === "undefined") return svg; const svgDoc = new DOMParser().parseFromString(svg, "image/svg+xml"); if (svgDoc.querySelector("parsererror")) return svg; const svgElement = svgDoc.documentElement; if (!svgElement || svgElement.localName !== "svg" || !svgElement.hasAttribute("viewBox")) return svg; const viewBoxParts = svgElement.getAttribute("viewBox").split(" "); if (viewBoxParts.length !== 4) return svg; svgElement.setAttribute("width", viewBoxParts[2]); svgElement.setAttribute("height", viewBoxParts[3]); return new XMLSerializer().serializeToString(svgDoc); }; const prepareMermaidSvgString = (svg) => applyFirefoxSizeFix(ensureXmlSafeVoidElements(svg)); //#endregion export { prepareMermaidSvgString }; //# sourceMappingURL=prepareMermaidSvg.mjs.map