summaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/mermaid.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/excalidraw/mermaid.ts')
-rw-r--r--packages/excalidraw/mermaid.ts33
1 files changed, 33 insertions, 0 deletions
diff --git a/packages/excalidraw/mermaid.ts b/packages/excalidraw/mermaid.ts
new file mode 100644
index 0000000..cb2b400
--- /dev/null
+++ b/packages/excalidraw/mermaid.ts
@@ -0,0 +1,33 @@
+/** heuristically checks whether the text may be a mermaid diagram definition */
+export const isMaybeMermaidDefinition = (text: string) => {
+ const chartTypes = [
+ "flowchart",
+ "graph",
+ "sequenceDiagram",
+ "classDiagram",
+ "stateDiagram",
+ "stateDiagram-v2",
+ "erDiagram",
+ "journey",
+ "gantt",
+ "pie",
+ "quadrantChart",
+ "requirementDiagram",
+ "gitGraph",
+ "C4Context",
+ "mindmap",
+ "timeline",
+ "zenuml",
+ "sankey",
+ "xychart",
+ "block",
+ ];
+
+ const re = new RegExp(
+ `^(?:%%{.*?}%%[\\s\\n]*)?\\b(?:${chartTypes
+ .map((x) => `\\s*${x}(-beta)?`)
+ .join("|")})\\b`,
+ );
+
+ return re.test(text.trim());
+};