Back to Excalidraw

API

dev-docs/docs/@excalidraw/mermaid-to-excalidraw/api.mdx

0.18.15.0 KB
Original Source

API

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.

parseMermaidToExcalidraw

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 **

ts
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
}

Supported Diagram Types

Currently only flowcharts are supported. Oother diagram types will be rendered as an image in Excalidraw.

Flowchart

Excalidraw Regular Shapes

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

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

Unsupported shapes fallback to Rectangle

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

Markdown fallback to Regular text

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** ?`")

Basic FontAwesome fallback to text

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?)

Cross Arrow head fallback to Bar Arrow head

flowchart LR
  Start x--x Stop

Unsupported Diagram Types

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