aboutsummaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/mermaid.ts
diff options
context:
space:
mode:
authorkj_sh6042026-03-15 16:19:35 -0400
committerkj_sh6042026-03-15 16:19:35 -0400
commit6ec259a0e71174651bae95d4628138bf6fd68742 (patch)
tree5e33c6a5ec091ecabfcb257fdc7b6a88ed8754ac /packages/excalidraw/mermaid.ts
parent16c8578b15c727f22921f8a80a56ee4d4e7f2272 (diff)
refactor: packages/
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());
+};