dev-docs/docs/@excalidraw/mermaid-to-excalidraw/api.mdx
At the moment the mermaid-to-excalidraw works in two steps. First, you call parseMermaidToExcalidraw(mermaidSyntax) on the mermaid diagram definition string, which resolves with elements in a skeleton format — a simplified excalidraw JSON format (docs coming soon). You then pass them to convertToExcalidrawElements(elements) to get the fully qualified excalidraw elements you can render in the editor.
The need for these two steps is due to the @excalidraw/excalidraw being a UMD build so we currently cannot import the convertToExcalidrawElements() util alone, until we support a tree-shakeable ESM build.
This API receives the mermaid syntax as the input, and resolves to skeleton Excalidraw elements. You will need to call convertToExcalidraw API to convert them to fully qualified elements that you can render in Excalidraw.
** Example **
import { parseMermaidToExcalidraw } from "@excalidraw/mermaid-to-excalidraw";
import { convertToExcalidrawElements} from "@excalidraw/excalidraw"
try {
const { elements, files } = await parseMermaidToExcalidraw(mermaidSyntax: string, {
fontSize: number,
});
const excalidrawElements = convertToExcalidrawElements(elements);
// Render elements and files on Excalidraw
} catch (e) {
// Parse error, displaying error message to users
}
Currently only flowcharts are supported. Oother diagram types will be rendered as an image in Excalidraw.
Rectangles, Circle, Diamond, and Arrows are fully supported in Excalidraw
flowchart TD
A[Christmas] -->|Get money| B(Go shopping)
B --> C{Let me think}
C -->|One| D[Laptop]
C -->|Two| E[iPhone]
C -->|Three| F[Car]
flowchart LR
id1((Hello from Circle))
Subgraphs are grouped diagrams hence they are also supported in Excalidraw
flowchart TB
c1-->a2
subgraph one
a1-->a2
end
subgraph two
b1-->b2
end
subgraph three
c1-->c2
end
Subroutine, Cylindrical, Asymmetric, Hexagon, Parallelogram, Trapezoid are not supported in Excalidraw hence they fallback to the closest shape Rectangle
flowchart LR
id1[[Subroutine fallback to Rectangle]]
id2[(Cylindrical fallback to Rectangle)]
id3>Asymmetric fallback to Rectangle]
id4{{Hexagon fallback to Rectangle}}
id5[/Parallelogram fallback to Rectangle /]
id6[/Trapezoid fallback to Rectangle\]
The above shapes are not supported in Excalidraw hence they fallback to Rectangle
Since we don't support wysiwyg text editor yet, hence Markdown Strings will fallback to regular text.
flowchart LR
A("`Hello **World**`") --> B("`Whats **up** ?`")
The FontAwesome icons aren't support so they won't be rendered in Excalidraw
flowchart TD
B["fab:fa-twitter for peace"]
B-->C[fa:fa-ban forbidden]
B-->E(A fa:fa-camera-retro perhaps?)
flowchart LR
Start x--x Stop
Currently only flowcharts are supported. All other diagram types will be rendered as an image in Excalidraw.
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE-ITEM : contains
CUSTOMER }|..|{ DELIVERY-ADDRESS : uses
gitGraph
commit
commit
branch develop
checkout develop
commit
commit
checkout main
merge develop
commit
commit