Explorar el Código

feat: improve mermaid detection on paste (#8287)

David Luzar hace 1 año
padre
commit
2427e622b0
Se han modificado 2 ficheros con 19 adiciones y 3 borrados
  1. 15 0
      packages/excalidraw/mermaid.test.ts
  2. 4 3
      packages/excalidraw/mermaid.ts

+ 15 - 0
packages/excalidraw/mermaid.test.ts

@@ -0,0 +1,15 @@
+import { isMaybeMermaidDefinition } from "./mermaid";
+
+describe("isMaybeMermaidDefinition", () => {
+  it("should return true for a valid mermaid definition", () => {
+    expect(isMaybeMermaidDefinition("flowchart")).toBe(true);
+    expect(isMaybeMermaidDefinition("flowchart LR")).toBe(true);
+    expect(isMaybeMermaidDefinition("flowchart LR\nola")).toBe(true);
+    expect(isMaybeMermaidDefinition("%%{}%%flowchart")).toBe(true);
+    expect(isMaybeMermaidDefinition("%%{}%% flowchart")).toBe(true);
+
+    expect(isMaybeMermaidDefinition("graphs")).toBe(false);
+    expect(isMaybeMermaidDefinition("this flowchart")).toBe(false);
+    expect(isMaybeMermaidDefinition("this\nflowchart")).toBe(false);
+  });
+});

+ 4 - 3
packages/excalidraw/mermaid.ts

@@ -2,6 +2,7 @@
 export const isMaybeMermaidDefinition = (text: string) => {
   const chartTypes = [
     "flowchart",
+    "graph",
     "sequenceDiagram",
     "classDiagram",
     "stateDiagram",
@@ -23,9 +24,9 @@ export const isMaybeMermaidDefinition = (text: string) => {
   ];
 
   const re = new RegExp(
-    `^(?:%%{.*?}%%[\\s\\n]*)?\\b${chartTypes
-      .map((x) => `${x}(-beta)?`)
-      .join("|")}\\b`,
+    `^(?:%%{.*?}%%[\\s\\n]*)?\\b(?:${chartTypes
+      .map((x) => `\\s*${x}(-beta)?`)
+      .join("|")})\\b`,
   );
 
   return re.test(text.trim());