fix: Remove blank SVG

This commit is contained in:
Sidharth Vinod 2023-09-14 23:32:35 +05:30
parent 8b8b828cd1
commit 16c12a42c7
No known key found for this signature in database
GPG Key ID: FB5CCD378D3907CD
2 changed files with 17 additions and 11 deletions

View File

@ -97,7 +97,7 @@ mermaid.initialize(config);
#### Defined in #### Defined in
[mermaidAPI.ts:679](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L679) [mermaidAPI.ts:685](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L685)
## Functions ## Functions

View File

@ -420,6 +420,16 @@ const render = async function (
const enclosingDivID = 'd' + id; const enclosingDivID = 'd' + id;
const enclosingDivID_selector = '#' + enclosingDivID; const enclosingDivID_selector = '#' + enclosingDivID;
const removeTempElements = () => {
// -------------------------------------------------------------------------------
// Remove the temporary HTML element if appropriate
const tmpElementSelector = isSandboxed ? iFrameID_selector : enclosingDivID_selector;
const node = select(tmpElementSelector).node();
if (node && 'remove' in node) {
node.remove();
}
};
let root: any = select('body'); let root: any = select('body');
const isSandboxed = config.securityLevel === SECURITY_LVL_SANDBOX; const isSandboxed = config.securityLevel === SECURITY_LVL_SANDBOX;
@ -479,6 +489,7 @@ const render = async function (
diag = await getDiagramFromText(text); diag = await getDiagramFromText(text);
} catch (error) { } catch (error) {
if (config.suppressErrorRendering) { if (config.suppressErrorRendering) {
removeTempElements();
throw error; throw error;
} }
diag = new Diagram('error'); diag = new Diagram('error');
@ -510,10 +521,11 @@ const render = async function (
try { try {
await diag.renderer.draw(text, id, version, diag); await diag.renderer.draw(text, id, version, diag);
} catch (e) { } catch (e) {
if (!config.suppressErrorRendering) { if (config.suppressErrorRendering) {
errorRenderer.draw(text, id, version); removeTempElements();
throw e;
} }
throw e; errorRenderer.draw(text, id, version);
} }
// This is the d3 node for the svg element // This is the d3 node for the svg element
@ -549,13 +561,7 @@ const render = async function (
throw parseEncounteredException; throw parseEncounteredException;
} }
// ------------------------------------------------------------------------------- removeTempElements();
// Remove the temporary HTML element if appropriate
const tmpElementSelector = isSandboxed ? iFrameID_selector : enclosingDivID_selector;
const node = select(tmpElementSelector).node();
if (node && 'remove' in node) {
node.remove();
}
return { return {
svg: svgCode, svg: svgCode,