;
+
+ const promise = setPromise();
+ cache.set(key, promise);
+ return promise;
+}
+
+function MermaidContent({ chart }: { chart: string }) {
+ const id = useId();
+ const { resolvedTheme } = useTheme();
+ const { default: mermaid } = use(cachePromise('mermaid', () => import('mermaid')));
+
+ mermaid.initialize({
+ startOnLoad: false,
+ securityLevel: 'loose',
+ fontFamily: 'inherit',
+ themeCSS: 'margin: 1.5rem auto 0;',
+ theme: resolvedTheme === 'dark' ? 'dark' : 'default',
+ });
+
+ const { svg, bindFunctions } = use(
+ cachePromise(`${chart}-${resolvedTheme}`, () => {
+ return mermaid.render(id, chart.replaceAll('\\n', '\n'));
+ }),
+ );
+
+ return (
+ {
+ if (container) bindFunctions?.(container);
+ }}
+ // biome-ignore lint/security/noDangerouslySetInnerHtml: conform usage
+ dangerouslySetInnerHTML={{ __html: svg }}
+ />
+ );
+}
\ No newline at end of file