Skip to content

Commit d6713d8

Browse files
committed
review fixes
1 parent de9399e commit d6713d8

File tree

1 file changed

+31
-34
lines changed

1 file changed

+31
-34
lines changed

gui/src/components/StyledMarkdownPreview/MermaidBlock.tsx

Lines changed: 31 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -93,46 +93,43 @@ export default function MermaidDiagram({ code }: { code: string }) {
9393
mermaidRenderContainerRef.current.innerHTML = "";
9494
}
9595
const diagramId = `mermaid-id-${Math.random().toString(36).substring(2)}`;
96-
mermaid
97-
.parse(code)
98-
.then(() => mermaid.render(diagramId, code))
99-
.then(({ svg }) => {
100-
if (mermaidRenderContainerRef.current) {
101-
mermaidRenderContainerRef.current.innerHTML = svg;
102-
setError("");
103-
const panzoom = Panzoom(mermaidRenderContainerRef.current, {
104-
step: MINIMUM_ZOOM_STEP,
105-
});
106-
zoomInButtonRef.current?.addEventListener("click", () =>
107-
panzoom.zoomIn({ step: MINIMUM_ZOOM_STEP * 4 }),
108-
);
109-
zoomOutButtonRef.current?.addEventListener("click", () =>
110-
panzoom.zoomOut({ step: MINIMUM_ZOOM_STEP * 4 }),
111-
);
112-
resetZoomButtonRef.current?.addEventListener("click", () =>
113-
panzoom.reset(),
114-
);
115-
mermaidRenderContainerRef.current.parentElement?.addEventListener(
116-
"wheel",
117-
(event) => {
118-
if (!event.shiftKey) return;
119-
panzoom.zoomWithWheel(event);
120-
},
121-
);
122-
}
123-
})
124-
.catch((err) => {
96+
void (async () => {
97+
if (!mermaidRenderContainerRef.current) return;
98+
try {
99+
await mermaid.parse(code);
100+
const renderedSVG = await mermaid.render(diagramId, code);
101+
mermaidRenderContainerRef.current.innerHTML = renderedSVG.svg;
102+
setError("");
103+
const panzoom = Panzoom(mermaidRenderContainerRef.current, {
104+
step: MINIMUM_ZOOM_STEP,
105+
});
106+
zoomInButtonRef.current?.addEventListener("click", () =>
107+
panzoom.zoomIn({ step: MINIMUM_ZOOM_STEP * 4 }),
108+
);
109+
zoomOutButtonRef.current?.addEventListener("click", () =>
110+
panzoom.zoomOut({ step: MINIMUM_ZOOM_STEP * 4 }),
111+
);
112+
resetZoomButtonRef.current?.addEventListener("click", () =>
113+
panzoom.reset(),
114+
);
115+
mermaidRenderContainerRef.current.parentElement?.addEventListener(
116+
"wheel",
117+
(event) => {
118+
if (!event.shiftKey) return;
119+
panzoom.zoomWithWheel(event);
120+
},
121+
);
122+
} catch (err: any) {
125123
if (err.message) {
126124
setError(err.message);
127125
} else {
128126
setError(
129127
"Unknown error when parsing or rendering the Mermaid diagram.",
130128
);
131129
}
132-
})
133-
.finally(() => {
134-
setIsLoading(false);
135-
});
130+
}
131+
setIsLoading(false);
132+
})();
136133
},
137134
500,
138135
[code],
@@ -141,7 +138,7 @@ export default function MermaidDiagram({ code }: { code: string }) {
141138
return (
142139
<>
143140
{isLoading && (
144-
<div className="text-vsc-foreground text-sm">Generating diagram...</div>
141+
<div className="text-vsc-foreground text-xs">Generating diagram...</div>
145142
)}
146143
{!!error ? (
147144
<div className="text-error whitespace-pre text-sm">{error}</div>

0 commit comments

Comments
 (0)