From 3dd6107e7640394b90df16e49779dc93c77644d1 Mon Sep 17 00:00:00 2001 From: Anthony Juckel Date: Mon, 3 Mar 2025 14:58:17 -0600 Subject: [PATCH 01/57] fix: Allow equals sign in sequenceDiagram labels --- .../sequence/parser/sequenceDiagram.jison | 4 ++-- .../diagrams/sequence/sequenceDiagram.spec.js | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/src/diagrams/sequence/parser/sequenceDiagram.jison b/packages/mermaid/src/diagrams/sequence/parser/sequenceDiagram.jison index 11b39d232..784aff82f 100644 --- a/packages/mermaid/src/diagrams/sequence/parser/sequenceDiagram.jison +++ b/packages/mermaid/src/diagrams/sequence/parser/sequenceDiagram.jison @@ -33,7 +33,7 @@ "actor" { this.begin('ID'); return 'participant_actor'; } "create" return 'create'; "destroy" { this.begin('ID'); return 'destroy'; } -[^\<->\->:\n,;]+?([\-]*[^\<->\->:\n,;]+?)*?(?=((?!\n)\s)+"as"(?!\n)\s|[#\n;]|$) { yytext = yytext.trim(); this.begin('ALIAS'); return 'ACTOR'; } +[^<\->\->:\n,;]+?([\-]*[^<\->\->:\n,;]+?)*?(?=((?!\n)\s)+"as"(?!\n)\s|[#\n;]|$) { yytext = yytext.trim(); this.begin('ALIAS'); return 'ACTOR'; } "as" { this.popState(); this.popState(); this.begin('LINE'); return 'AS'; } (?:) { this.popState(); this.popState(); return 'NEWLINE'; } "loop" { this.begin('LINE'); return 'loop'; } @@ -73,7 +73,7 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multili "off" return 'off'; "," return ','; ";" return 'NEWLINE'; -[^\+\<->\->:\n,;]+((?!(\-x|\-\-x|\-\)|\-\-\)))[\-]*[^\+\<->\->:\n,;]+)* { yytext = yytext.trim(); return 'ACTOR'; } +[^+<\->\->:\n,;]+((?!(\-x|\-\-x|\-\)|\-\-\)))[\-]*[^\+<\->\->:\n,;]+)* { yytext = yytext.trim(); return 'ACTOR'; } "->>" return 'SOLID_ARROW'; "<<->>" return 'BIDIRECTIONAL_SOLID_ARROW'; "-->>" return 'DOTTED_ARROW'; diff --git a/packages/mermaid/src/diagrams/sequence/sequenceDiagram.spec.js b/packages/mermaid/src/diagrams/sequence/sequenceDiagram.spec.js index 1fb35bce6..1610bd72a 100644 --- a/packages/mermaid/src/diagrams/sequence/sequenceDiagram.spec.js +++ b/packages/mermaid/src/diagrams/sequence/sequenceDiagram.spec.js @@ -350,6 +350,26 @@ Bob-->Alice-in-Wonderland:I am good thanks!`); expect(messages[1].from).toBe('Bob'); }); + it('should handle equals in participant names', async () => { + const diagram = await Diagram.fromText(` +sequenceDiagram +participant Alice=Wonderland +participant Bob +Alice=Wonderland->Bob:Hello Bob, how are - you? +Bob-->Alice=Wonderland:I am good thanks!`); + + const actors = diagram.db.getActors(); + expect([...actors.keys()]).toEqual(['Alice=Wonderland', 'Bob']); + expect(actors.get('Alice=Wonderland').description).toBe('Alice=Wonderland'); + expect(actors.get('Bob').description).toBe('Bob'); + + const messages = diagram.db.getMessages(); + + expect(messages.length).toBe(2); + expect(messages[0].from).toBe('Alice=Wonderland'); + expect(messages[1].from).toBe('Bob'); + }); + it('should alias participants', async () => { const diagram = await Diagram.fromText(` sequenceDiagram From 6cc192680a2531cab28f87a8061a53b786e010f3 Mon Sep 17 00:00:00 2001 From: Anthony Juckel Date: Mon, 3 Mar 2025 15:09:17 -0600 Subject: [PATCH 02/57] Added changeset --- .changeset/red-zebras-happen.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/red-zebras-happen.md diff --git a/.changeset/red-zebras-happen.md b/.changeset/red-zebras-happen.md new file mode 100644 index 000000000..cadf3d0fb --- /dev/null +++ b/.changeset/red-zebras-happen.md @@ -0,0 +1,5 @@ +--- +'mermaid': patch +--- + +fix: Allow equals sign in sequenceDiagram labels From 8693be56ee78382b491387f77c6a2bed9599fcdd Mon Sep 17 00:00:00 2001 From: rajat-ht Date: Fri, 27 Jun 2025 17:26:54 +0530 Subject: [PATCH 03/57] feat: Add start pro trial button. --- .../.vitepress/components/EditorSelectionModal.vue | 11 +++++++++++ packages/mermaid/src/docs/.vitepress/config.ts | 6 ++---- packages/mermaid/src/docs/.vitepress/theme/index.ts | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/mermaid/src/docs/.vitepress/components/EditorSelectionModal.vue b/packages/mermaid/src/docs/.vitepress/components/EditorSelectionModal.vue index e41a7096d..52b635392 100644 --- a/packages/mermaid/src/docs/.vitepress/components/EditorSelectionModal.vue +++ b/packages/mermaid/src/docs/.vitepress/components/EditorSelectionModal.vue @@ -11,6 +11,7 @@ interface EditorColumn { description: string; redirectUrl: string; highlighted?: boolean; + proTrialUrl?: string; features: Feature[]; } @@ -32,6 +33,8 @@ const editorColumns: EditorColumn[] = [ redirectUrl: 'https://www.mermaidchart.com/app/sign-up?utm_source=mermaid_js&utm_medium=editor_selection&utm_campaign=mermaid_chart&redirect=%2Fapp%2Fdiagrams%2Fnew', highlighted: true, + proTrialUrl: + 'https://www.mermaidchart.com/app/sign-up?utm_source=mermaid_js&utm_medium=editor_selection&utm_campaign=mermaid_chart_trial&redirect=%2Fapp%2Fuser%2Fbilling%2Fcheckout', features: [ { iconUrl: '/icons/folder.svg', featureName: 'Storage' }, { iconUrl: '/icons/terminal.svg', featureName: 'Code editor' }, @@ -121,6 +124,14 @@ onUnmounted(() => { > Start free + + Start Pro trial +
  • h(TopBar), 'doc-before': () => h(TopBar), 'layout-bottom': () => h(Tooltip), - 'home-hero-after': () => h(EditorSelectionModal), + 'layout-top': () => h(EditorSelectionModal), }); }, enhanceApp({ app, router }: EnhanceAppContext) { From 4a86b68e01d1ba4acaa9c755beed6f356f076c2e Mon Sep 17 00:00:00 2001 From: rajat-ht Date: Wed, 2 Jul 2025 18:51:06 +0530 Subject: [PATCH 04/57] chore: update UI as per suggestion --- .../components/EditorSelectionModal.vue | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/mermaid/src/docs/.vitepress/components/EditorSelectionModal.vue b/packages/mermaid/src/docs/.vitepress/components/EditorSelectionModal.vue index 52b635392..c78b10de1 100644 --- a/packages/mermaid/src/docs/.vitepress/components/EditorSelectionModal.vue +++ b/packages/mermaid/src/docs/.vitepress/components/EditorSelectionModal.vue @@ -10,6 +10,7 @@ interface EditorColumn { title: string; description: string; redirectUrl: string; + buttonText: string; highlighted?: boolean; proTrialUrl?: string; features: Feature[]; @@ -21,6 +22,7 @@ const editorColumns: EditorColumn[] = [ description: 'Basic features, no login', redirectUrl: 'https://www.mermaidchart.com/play?utm_source=mermaid_js&utm_medium=editor_selection&utm_campaign=playground', + buttonText: 'Start free', features: [ { iconUrl: '/icons/public.svg', featureName: 'Diagram stored in URL' }, { iconUrl: '/icons/terminal.svg', featureName: 'Code editor' }, @@ -28,10 +30,11 @@ const editorColumns: EditorColumn[] = [ ], }, { - title: 'Free', - description: 'Advanced features, free account', + title: 'Free or Pro', + description: 'Advanced features, Free or Pro account', redirectUrl: 'https://www.mermaidchart.com/app/sign-up?utm_source=mermaid_js&utm_medium=editor_selection&utm_campaign=mermaid_chart&redirect=%2Fapp%2Fdiagrams%2Fnew', + buttonText: 'Start Free', highlighted: true, proTrialUrl: 'https://www.mermaidchart.com/app/sign-up?utm_source=mermaid_js&utm_medium=editor_selection&utm_campaign=mermaid_chart_trial&redirect=%2Fapp%2Fuser%2Fbilling%2Fcheckout', @@ -53,6 +56,7 @@ const editorColumns: EditorColumn[] = [ title: 'Open Source', description: 'Code only, no login', redirectUrl: 'https://mermaid.live/edit', + buttonText: 'Start free', features: [ { iconUrl: '/icons/public.svg', featureName: 'Diagram stored in URL' }, { iconUrl: '/icons/terminal.svg', featureName: 'Code editor' }, @@ -87,15 +91,17 @@ onUnmounted(() => {