diff --git a/src/pages/DiagramEditor.js b/src/pages/DiagramEditor.js index 0533de90..f3e3b4f0 100755 --- a/src/pages/DiagramEditor.js +++ b/src/pages/DiagramEditor.js @@ -14,6 +14,7 @@ import { Eye, AlertTriangle, FileText, + Copy, } from "lucide-react"; import ToolLayout from "../components/ToolLayout"; import CodeMirrorEditor from "../components/CodeMirrorEditor"; @@ -22,6 +23,7 @@ import RelatedTools from "../components/RelatedTools"; import ReactFlowEditor from "../components/diagram/ReactFlowEditor"; import FullscreenAdBanner from "../components/FullscreenAdBanner"; import { toPng } from "html-to-image"; +import { generateMermaidFromGraph } from "../utils/mermaidGenerator"; const DIAGRAM_TEMPLATES = { flowchart: { @@ -214,6 +216,28 @@ const DiagramEditor = () => { downloadFile(code, "diagram.json", "application/json"); }; + const exportMermaid = () => { + const mermaidCode = generateMermaidFromGraph( + graphData.nodes, + graphData.edges, + ); + downloadFile(mermaidCode, "diagram.mmd", "text/plain"); + }; + + const copyMermaid = () => { + const mermaidCode = generateMermaidFromGraph( + graphData.nodes, + graphData.edges, + ); + navigator.clipboard + .writeText(mermaidCode) + .then(() => { + // Could add toast notification here + console.log("Mermaid code copied!"); + }) + .catch((err) => console.error("Failed to copy", err)); + }; + const exportPNG = () => { const flowElement = document.querySelector(".react-flow"); if (!flowElement) return; @@ -503,7 +527,7 @@ const DiagramEditor = () => { Export Diagram -