diff --git a/pages/index.html b/pages/index.html index c01e8c3..757f6d7 100644 --- a/pages/index.html +++ b/pages/index.html @@ -3,7 +3,7 @@
-${content}\n`;
+ };
+ const instance = new Marked({ gfm: true, breaks: false, renderer });
+ return DOMPurify.sanitize(instance.parse(content) as string);
+ }, [content]);
+
+ // Render mermaid diagrams and add copy buttons to code blocks after DOM update
+ useEffect(() => {
+ if (!containerRef.current) return;
+ let cancelled = false;
+
+ // Add copy buttons to all pre > code blocks (except mermaid)
+ const preBlocks = containerRef.current.querySelectorAll('pre');
+ preBlocks.forEach((pre) => {
+ const codeEl = pre.querySelector('code');
+ if (!codeEl || codeEl.classList.contains('language-mermaid')) return;
+ if (pre.querySelector('.code-copy-btn')) return; // already added
+
+ // Create copy button matching reference HTML
+ const btn = document.createElement('div');
+ btn.className = 'code-copy-btn';
+ btn.style.cssText = 'display:flex;flex-shrink:0;justify-content:flex-start;align-items:flex-start;flex-direction:column;padding-top:4px;padding-bottom:4px;cursor:pointer;';
+ btn.innerHTML = ` with rendered SVG
+ const wrapper = document.createElement('div');
+ wrapper.className = 'mermaid-rendered';
+ wrapper.innerHTML = svg;
+ pre.replaceWith(wrapper);
+ } catch (e) {
+ if (cancelled) return;
+ // If rendering fails, show the code block normally
+ (block as HTMLElement).style.display = 'block';
+ console.warn('[Mermaid] render failed:', e);
+ }
+ });
+
+ return () => { cancelled = true; };
+ }, [html]);
+
+ return (
+ <>
+
+ {ReactDOM.createPortal(
+
+ {t('quickstart.copied')}
+ ,
+ document.body
+ )}
+ >
+ );
+};
+
+export default MarkdownRenderer;
diff --git a/pages/src/components/Navbar.tsx b/pages/src/components/Navbar.tsx
index 4488d75..76ac72e 100644
--- a/pages/src/components/Navbar.tsx
+++ b/pages/src/components/Navbar.tsx
@@ -187,7 +187,7 @@ const Navbar: React.FC = () => {
rel="noopener noreferrer"
style={{ display: 'flex', alignItems: 'center', opacity: 0.6 }}
>
-
+