From 0cab66c9d81ea2f48485a2c4bf2c187c06a01fbf Mon Sep 17 00:00:00 2001 From: Lishid Date: Thu, 29 Jun 2023 15:33:35 -0400 Subject: [PATCH 01/13] Fix flowchart tooltip typing Tooltip is an object that gets reset to an array. It is then looked up for properties without guard, causing array functions like "length" and "constructor" to run into undefined behvaior. --- packages/mermaid/src/diagrams/flowchart/flowDb.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/src/diagrams/flowchart/flowDb.js b/packages/mermaid/src/diagrams/flowchart/flowDb.js index ceb933e85..81a9afb94 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowDb.js +++ b/packages/mermaid/src/diagrams/flowchart/flowDb.js @@ -342,7 +342,8 @@ export const setLink = function (ids, linkStr, target) { setClass(ids, 'clickable'); }; export const getTooltip = function (id) { - return tooltips[id]; + if (tooltips.hasOwnProperty(id)) return tooltips[id]; + return undefined; }; /** @@ -443,7 +444,7 @@ export const clear = function (ver = 'gen-1') { subGraphs = []; subGraphLookup = {}; subCount = 0; - tooltips = []; + tooltips = {}; firstGraphFlag = true; version = ver; commonClear(); From efa3ba639765d2375578a4c8c0b5bbada142cecc Mon Sep 17 00:00:00 2001 From: Steph <35910788+huynhicode@users.noreply.github.com> Date: Fri, 30 Jun 2023 11:08:42 -0700 Subject: [PATCH 02/13] add ChatGPT plugin blog post --- docs/news/announcements.md | 6 +++--- docs/news/blog.md | 6 ++++++ packages/mermaid/src/docs/news/announcements.md | 6 +++--- packages/mermaid/src/docs/news/blog.md | 6 ++++++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/docs/news/announcements.md b/docs/news/announcements.md index 1837b33db..ff67c57d0 100644 --- a/docs/news/announcements.md +++ b/docs/news/announcements.md @@ -6,8 +6,8 @@ # Announcements -## [Sequence diagrams, the only good thing UML brought to software development](https://www.mermaidchart.com/blog/posts/sequence-diagrams-the-good-thing-uml-brought-to-software-development/) +## [Mermaid Chart’s ChatGPT Plugin Combines Generative AI and Smart Diagramming For Users](https://www.mermaidchart.com/blog/posts/mermaid-chart-chatgpt-plugin-combines-generative-ai-and-smart-diagramming) -15 June 2023 · 12 mins +29 June 2023 · 4 mins -Sequence diagrams really shine when you’re documenting different parts of a system and the various ways these parts interact with each other. +Mermaid Chart’s new ChatGPT plugin integrates AI-powered text prompts with Mermaid’s intuitive diagramming editor, enabling users to generate, edit, and share complex diagrams with ease and efficiency. diff --git a/docs/news/blog.md b/docs/news/blog.md index eb9ec6c47..6b187d406 100644 --- a/docs/news/blog.md +++ b/docs/news/blog.md @@ -6,6 +6,12 @@ # Blog +## [Mermaid Chart’s ChatGPT Plugin Combines Generative AI and Smart Diagramming For Users](https://www.mermaidchart.com/blog/posts/mermaid-chart-chatgpt-plugin-combines-generative-ai-and-smart-diagramming) + +29 June 2023 · 4 mins + +Mermaid Chart’s new ChatGPT plugin integrates AI-powered text prompts with Mermaid’s intuitive diagramming editor, enabling users to generate, edit, and share complex diagrams with ease and efficiency. + ## [Sequence diagrams, the only good thing UML brought to software development](https://www.mermaidchart.com/blog/posts/sequence-diagrams-the-good-thing-uml-brought-to-software-development/) 15 June 2023 · 12 mins diff --git a/packages/mermaid/src/docs/news/announcements.md b/packages/mermaid/src/docs/news/announcements.md index 83dafaab6..b8d0669ec 100644 --- a/packages/mermaid/src/docs/news/announcements.md +++ b/packages/mermaid/src/docs/news/announcements.md @@ -1,7 +1,7 @@ # Announcements -## [Sequence diagrams, the only good thing UML brought to software development](https://www.mermaidchart.com/blog/posts/sequence-diagrams-the-good-thing-uml-brought-to-software-development/) +## [Mermaid Chart’s ChatGPT Plugin Combines Generative AI and Smart Diagramming For Users](https://www.mermaidchart.com/blog/posts/mermaid-chart-chatgpt-plugin-combines-generative-ai-and-smart-diagramming) -15 June 2023 · 12 mins +29 June 2023 · 4 mins -Sequence diagrams really shine when you’re documenting different parts of a system and the various ways these parts interact with each other. +Mermaid Chart’s new ChatGPT plugin integrates AI-powered text prompts with Mermaid’s intuitive diagramming editor, enabling users to generate, edit, and share complex diagrams with ease and efficiency. diff --git a/packages/mermaid/src/docs/news/blog.md b/packages/mermaid/src/docs/news/blog.md index 61d53656d..b536cb87e 100644 --- a/packages/mermaid/src/docs/news/blog.md +++ b/packages/mermaid/src/docs/news/blog.md @@ -1,5 +1,11 @@ # Blog +## [Mermaid Chart’s ChatGPT Plugin Combines Generative AI and Smart Diagramming For Users](https://www.mermaidchart.com/blog/posts/mermaid-chart-chatgpt-plugin-combines-generative-ai-and-smart-diagramming) + +29 June 2023 · 4 mins + +Mermaid Chart’s new ChatGPT plugin integrates AI-powered text prompts with Mermaid’s intuitive diagramming editor, enabling users to generate, edit, and share complex diagrams with ease and efficiency. + ## [Sequence diagrams, the only good thing UML brought to software development](https://www.mermaidchart.com/blog/posts/sequence-diagrams-the-good-thing-uml-brought-to-software-development/) 15 June 2023 · 12 mins From 032830d7e0a15415e09b4d843d21b6268c2b4314 Mon Sep 17 00:00:00 2001 From: sidharthv96 Date: Fri, 30 Jun 2023 19:02:57 +0000 Subject: [PATCH 03/13] Update docs --- docs/syntax/stateDiagram.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/syntax/stateDiagram.md b/docs/syntax/stateDiagram.md index 807d6149a..4c28c82b3 100644 --- a/docs/syntax/stateDiagram.md +++ b/docs/syntax/stateDiagram.md @@ -487,7 +487,7 @@ where - the second _property_ is `color` and its _value_ is `white` - the third _property_ is `font-weight` and its _value_ is `bold` - the fourth _property_ is `stroke-width` and its _value_ is `2px` -- the fifth _property_ is `stroke` and its _value_ is `yello` +- the fifth _property_ is `stroke` and its _value_ is `yellow` ### Apply classDef styles to states From 12fe6ff26ec4fbb6518611a4a200373a73c01369 Mon Sep 17 00:00:00 2001 From: Lishid Date: Mon, 3 Jul 2023 18:56:00 -0700 Subject: [PATCH 04/13] Fix lint. --- packages/mermaid/src/diagrams/flowchart/flowDb.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/flowchart/flowDb.js b/packages/mermaid/src/diagrams/flowchart/flowDb.js index 81a9afb94..ea8fa71d2 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowDb.js +++ b/packages/mermaid/src/diagrams/flowchart/flowDb.js @@ -342,7 +342,9 @@ export const setLink = function (ids, linkStr, target) { setClass(ids, 'clickable'); }; export const getTooltip = function (id) { - if (tooltips.hasOwnProperty(id)) return tooltips[id]; + if (tooltips.hasOwnProperty(id)) { + return tooltips[id]; + } return undefined; }; From 34b2b5ba352c24c06492b9bd0207e81ae0774641 Mon Sep 17 00:00:00 2001 From: Nikolay Rozhkov Date: Wed, 5 Jul 2023 17:25:07 +0300 Subject: [PATCH 05/13] Support docs:dev in docker --- packages/mermaid/src/docs/package.json | 2 +- run | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/src/docs/package.json b/packages/mermaid/src/docs/package.json index 6e1934022..3dd83fafc 100644 --- a/packages/mermaid/src/docs/package.json +++ b/packages/mermaid/src/docs/package.json @@ -3,7 +3,7 @@ "private": true, "type": "module", "scripts": { - "dev": "vitepress --port 3333 --open", + "dev": "vitepress --port 3333 --host", "build": "pnpm prefetch && vitepress build", "build-no-prefetch": "vitepress build", "serve": "vitepress serve", diff --git a/run b/run index d9f669cab..1d5ef306f 100755 --- a/run +++ b/run @@ -27,7 +27,7 @@ $RUN --service-ports mermaid sh -c "npx pnpm run dev" ;; docs:dev) -$RUN --service-ports mermaid sh -c "cd packages/mermaid/src/docs && npx pnpm prefetch && npx vitepress --port 3333 --host" +$RUN --service-ports mermaid sh -c "npx pnpm run --filter mermaid docs:dev" ;; cypress) From 95d62367e90839fe84824ded6da7d40d355c6206 Mon Sep 17 00:00:00 2001 From: Nikolay Rozhkov Date: Wed, 5 Jul 2023 19:39:05 +0300 Subject: [PATCH 06/13] Add docker-specific command, leave commonly used command intact --- packages/mermaid/package.json | 1 + packages/mermaid/src/docs/package.json | 3 ++- run | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index c73275a6f..e630f80fb 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -30,6 +30,7 @@ "docs:pre:vitepress": "rimraf src/vitepress && pnpm docs:code && ts-node-esm src/docs.mts --vitepress && pnpm --filter ./src/vitepress install --no-frozen-lockfile --ignore-scripts ", "docs:build:vitepress": "pnpm docs:pre:vitepress && (cd src/vitepress && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing", "docs:dev": "pnpm docs:pre:vitepress && concurrently \"pnpm --filter ./src/vitepress dev\" \"ts-node-esm src/docs.mts --watch --vitepress\"", + "docs:dev:docker": "pnpm docs:pre:vitepress && concurrently \"pnpm --filter ./src/vitepress dev:docker\" \"ts-node-esm src/docs.mts --watch --vitepress\"", "docs:serve": "pnpm docs:build:vitepress && vitepress serve src/vitepress", "docs:spellcheck": "cspell --config ../../cSpell.json \"src/docs/**/*.md\"", "release": "pnpm build", diff --git a/packages/mermaid/src/docs/package.json b/packages/mermaid/src/docs/package.json index 3dd83fafc..4529a7622 100644 --- a/packages/mermaid/src/docs/package.json +++ b/packages/mermaid/src/docs/package.json @@ -3,7 +3,8 @@ "private": true, "type": "module", "scripts": { - "dev": "vitepress --port 3333 --host", + "dev": "vitepress --port 3333 --open", + "dev:docker": "vitepress --port 3333 --host", "build": "pnpm prefetch && vitepress build", "build-no-prefetch": "vitepress build", "serve": "vitepress serve", diff --git a/run b/run index 1d5ef306f..cc169e209 100755 --- a/run +++ b/run @@ -27,7 +27,7 @@ $RUN --service-ports mermaid sh -c "npx pnpm run dev" ;; docs:dev) -$RUN --service-ports mermaid sh -c "npx pnpm run --filter mermaid docs:dev" +$RUN --service-ports mermaid sh -c "npx pnpm run --filter mermaid docs:dev:docker" ;; cypress) From fcb25aee7cdaad985cbb63740a245e09d1692415 Mon Sep 17 00:00:00 2001 From: Tom PERRILLAT-COLLOMB Date: Wed, 5 Jul 2023 20:57:37 +0200 Subject: [PATCH 07/13] docs(flowchart): add documentation on multiple nodes style --- docs/syntax/flowchart.md | 18 ++++++++++++++++++ packages/mermaid/src/docs/syntax/flowchart.md | 10 ++++++++++ 2 files changed, 28 insertions(+) diff --git a/docs/syntax/flowchart.md b/docs/syntax/flowchart.md index a47061025..92678fb6e 100644 --- a/docs/syntax/flowchart.md +++ b/docs/syntax/flowchart.md @@ -991,6 +991,24 @@ flowchart LR classDef someclass fill:#f96 ``` +This form can be used when declaring multiple links between nodes: + +```mermaid-example +flowchart LR + A:::foo & B:::bar --> C:::foobar + classDef foo stroke:#f00 + classDef bar stroke:#0f0 + classDef foobar stroke:#00f +``` + +```mermaid +flowchart LR + A:::foo & B:::bar --> C:::foobar + classDef foo stroke:#f00 + classDef bar stroke:#0f0 + classDef foobar stroke:#00f +``` + ### Css classes It is also possible to predefine classes in css styles that can be applied from the graph definition as in the example diff --git a/packages/mermaid/src/docs/syntax/flowchart.md b/packages/mermaid/src/docs/syntax/flowchart.md index 80cb242d6..2e3d78c30 100644 --- a/packages/mermaid/src/docs/syntax/flowchart.md +++ b/packages/mermaid/src/docs/syntax/flowchart.md @@ -676,6 +676,16 @@ flowchart LR classDef someclass fill:#f96 ``` +This form can be used when declaring multiple links between nodes: + +```mermaid-example +flowchart LR + A:::foo & B:::bar --> C:::foobar + classDef foo stroke:#f00 + classDef bar stroke:#0f0 + classDef foobar stroke:#00f +``` + ### Css classes It is also possible to predefine classes in css styles that can be applied from the graph definition as in the example From 5e7e3e21c86ca67d3c0d629c8b1238d4cf7b3b69 Mon Sep 17 00:00:00 2001 From: Steph <35910788+huynhicode@users.noreply.github.com> Date: Wed, 5 Jul 2023 13:42:42 -0700 Subject: [PATCH 08/13] update homepage community link --- packages/mermaid/src/docs/.vitepress/components/HomePage.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/src/docs/.vitepress/components/HomePage.vue b/packages/mermaid/src/docs/.vitepress/components/HomePage.vue index 19f3912a7..70cd04c44 100644 --- a/packages/mermaid/src/docs/.vitepress/components/HomePage.vue +++ b/packages/mermaid/src/docs/.vitepress/components/HomePage.vue @@ -16,7 +16,7 @@ import { teamMembers } from '../contributors';


- Join the community and + Join the community and get involved!

From 9251e520abdd107248a2416da08ccb3485a63bb1 Mon Sep 17 00:00:00 2001 From: Steph <35910788+huynhicode@users.noreply.github.com> Date: Wed, 5 Jul 2023 13:50:33 -0700 Subject: [PATCH 09/13] fix lint --- .../mermaid/src/docs/.vitepress/components/HomePage.vue | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/src/docs/.vitepress/components/HomePage.vue b/packages/mermaid/src/docs/.vitepress/components/HomePage.vue index 70cd04c44..b6998f249 100644 --- a/packages/mermaid/src/docs/.vitepress/components/HomePage.vue +++ b/packages/mermaid/src/docs/.vitepress/components/HomePage.vue @@ -16,8 +16,12 @@ import { teamMembers } from '../contributors';


- Join the community and - get involved! + Join the community + and get involved!

From 5885f5f82a738afd439dca2f8992de110dfe7698 Mon Sep 17 00:00:00 2001 From: Alois Klink Date: Thu, 6 Jul 2023 01:19:34 +0100 Subject: [PATCH 10/13] test: rename src/config.spec.js to config.spec.ts --- packages/mermaid/src/{config.spec.js => config.spec.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/mermaid/src/{config.spec.js => config.spec.ts} (100%) diff --git a/packages/mermaid/src/config.spec.js b/packages/mermaid/src/config.spec.ts similarity index 100% rename from packages/mermaid/src/config.spec.js rename to packages/mermaid/src/config.spec.ts From f731853e01339d9cc9e7e5582d70039293a0db7e Mon Sep 17 00:00:00 2001 From: Alois Klink Date: Thu, 6 Jul 2023 01:20:24 +0100 Subject: [PATCH 11/13] style: fix lint issues in src/config.spec.ts It looks like our linter automatically converts `let` to `const` in TypeScript files, but not in JavaScript files. --- packages/mermaid/src/config.spec.ts | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/mermaid/src/config.spec.ts b/packages/mermaid/src/config.spec.ts index 1f7fd976b..c962445e6 100644 --- a/packages/mermaid/src/config.spec.ts +++ b/packages/mermaid/src/config.spec.ts @@ -6,16 +6,16 @@ describe('when working with site config', function () { configApi.setSiteConfig({}); }); it('should set site config and config properly', function () { - let config_0 = { foo: 'bar', bar: 0 }; + const config_0 = { foo: 'bar', bar: 0 }; configApi.setSiteConfig(config_0); - let config_1 = configApi.getSiteConfig(); - let config_2 = configApi.getConfig(); + const config_1 = configApi.getSiteConfig(); + const config_2 = configApi.getConfig(); expect(config_1.foo).toEqual(config_0.foo); expect(config_1.bar).toEqual(config_0.bar); expect(config_1).toEqual(config_2); }); it('should respect secure keys when applying directives', function () { - let config_0 = { + const config_0 = { foo: 'bar', bar: 'cant-be-changed', secure: [...configApi.defaultConfig.secure, 'bar'], @@ -27,30 +27,30 @@ describe('when working with site config', function () { expect(cfg.bar).toBe(config_0.bar); }); it('should set reset config properly', function () { - let config_0 = { foo: 'bar', bar: 0 }; + const config_0 = { foo: 'bar', bar: 0 }; configApi.setSiteConfig(config_0); - let config_1 = { foo: 'baf' }; + const config_1 = { foo: 'baf' }; configApi.setConfig(config_1); - let config_2 = configApi.getConfig(); + const config_2 = configApi.getConfig(); expect(config_2.foo).toEqual(config_1.foo); configApi.reset(); - let config_3 = configApi.getConfig(); + const config_3 = configApi.getConfig(); expect(config_3.foo).toEqual(config_0.foo); - let config_4 = configApi.getSiteConfig(); + const config_4 = configApi.getSiteConfig(); expect(config_4.foo).toEqual(config_0.foo); }); it('should set global reset config properly', function () { - let config_0 = { foo: 'bar', bar: 0 }; + const config_0 = { foo: 'bar', bar: 0 }; configApi.setSiteConfig(config_0); - let config_1 = configApi.getSiteConfig(); + const config_1 = configApi.getSiteConfig(); expect(config_1.foo).toEqual(config_0.foo); - let config_2 = configApi.getConfig(); + const config_2 = configApi.getConfig(); expect(config_2.foo).toEqual(config_0.foo); configApi.setConfig({ foobar: 'bar0' }); - let config_3 = configApi.getConfig(); + const config_3 = configApi.getConfig(); expect(config_3.foobar).toEqual('bar0'); configApi.reset(); - let config_4 = configApi.getConfig(); + const config_4 = configApi.getConfig(); expect(config_4.foobar).toBeUndefined(); }); }); From 6ceee7f253ddc20b76b63a7a1b90500f9db0bd11 Mon Sep 17 00:00:00 2001 From: Alois Klink Date: Thu, 6 Jul 2023 01:27:24 +0100 Subject: [PATCH 12/13] test: fix types in `config.spec.ts` The `foo`, `bar`, and `foobar` options don't exist in MermaidConfig. Instead, I've replaced them with: - `foo` -> `fontFamily` - `bar` -> `fontSize` - `foobar` -> `altfontFamily` --- packages/mermaid/src/config.spec.ts | 40 ++++++++++++++--------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/packages/mermaid/src/config.spec.ts b/packages/mermaid/src/config.spec.ts index c962445e6..7a35614a4 100644 --- a/packages/mermaid/src/config.spec.ts +++ b/packages/mermaid/src/config.spec.ts @@ -6,51 +6,51 @@ describe('when working with site config', function () { configApi.setSiteConfig({}); }); it('should set site config and config properly', function () { - const config_0 = { foo: 'bar', bar: 0 }; + const config_0 = { fontFamily: 'foo-font', fontSize: 150 }; configApi.setSiteConfig(config_0); const config_1 = configApi.getSiteConfig(); const config_2 = configApi.getConfig(); - expect(config_1.foo).toEqual(config_0.foo); - expect(config_1.bar).toEqual(config_0.bar); + expect(config_1.fontFamily).toEqual(config_0.fontFamily); + expect(config_1.fontSize).toEqual(config_0.fontSize); expect(config_1).toEqual(config_2); }); it('should respect secure keys when applying directives', function () { const config_0 = { - foo: 'bar', - bar: 'cant-be-changed', - secure: [...configApi.defaultConfig.secure, 'bar'], + fontFamily: 'foo-font', + fontSize: 12345, // can't be changed + secure: [...configApi.defaultConfig.secure!, 'fontSize'], }; configApi.setSiteConfig(config_0); - const directive = { foo: 'baf', bar: 'should-not-be-allowed' }; + const directive = { fontFamily: 'baf', fontSize: 54321 /* fontSize shouldn't be changed */ }; const cfg = configApi.updateCurrentConfig(config_0, [directive]); - expect(cfg.foo).toEqual(directive.foo); - expect(cfg.bar).toBe(config_0.bar); + expect(cfg.fontFamily).toEqual(directive.fontFamily); + expect(cfg.fontSize).toBe(config_0.fontSize); }); it('should set reset config properly', function () { - const config_0 = { foo: 'bar', bar: 0 }; + const config_0 = { fontFamily: 'foo-font', fontSize: 150 }; configApi.setSiteConfig(config_0); - const config_1 = { foo: 'baf' }; + const config_1 = { fontFamily: 'baf' }; configApi.setConfig(config_1); const config_2 = configApi.getConfig(); - expect(config_2.foo).toEqual(config_1.foo); + expect(config_2.fontFamily).toEqual(config_1.fontFamily); configApi.reset(); const config_3 = configApi.getConfig(); - expect(config_3.foo).toEqual(config_0.foo); + expect(config_3.fontFamily).toEqual(config_0.fontFamily); const config_4 = configApi.getSiteConfig(); - expect(config_4.foo).toEqual(config_0.foo); + expect(config_4.fontFamily).toEqual(config_0.fontFamily); }); it('should set global reset config properly', function () { - const config_0 = { foo: 'bar', bar: 0 }; + const config_0 = { fontFamily: 'foo-font', fontSize: 150 }; configApi.setSiteConfig(config_0); const config_1 = configApi.getSiteConfig(); - expect(config_1.foo).toEqual(config_0.foo); + expect(config_1.fontFamily).toEqual(config_0.fontFamily); const config_2 = configApi.getConfig(); - expect(config_2.foo).toEqual(config_0.foo); - configApi.setConfig({ foobar: 'bar0' }); + expect(config_2.fontFamily).toEqual(config_0.fontFamily); + configApi.setConfig({ altFontFamily: 'bar-font' }); const config_3 = configApi.getConfig(); - expect(config_3.foobar).toEqual('bar0'); + expect(config_3.altFontFamily).toEqual('bar-font'); configApi.reset(); const config_4 = configApi.getConfig(); - expect(config_4.foobar).toBeUndefined(); + expect(config_4.altFontFamily).toBeUndefined(); }); }); From a862565a24a6ffd47a689906b4b101aa7bdb80b2 Mon Sep 17 00:00:00 2001 From: Alois Klink Date: Thu, 6 Jul 2023 01:35:11 +0100 Subject: [PATCH 13/13] test: test partial QuadrantChartConfig options --- packages/mermaid/src/config.spec.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/mermaid/src/config.spec.ts b/packages/mermaid/src/config.spec.ts index 7a35614a4..457cb8244 100644 --- a/packages/mermaid/src/config.spec.ts +++ b/packages/mermaid/src/config.spec.ts @@ -26,6 +26,22 @@ describe('when working with site config', function () { expect(cfg.fontFamily).toEqual(directive.fontFamily); expect(cfg.fontSize).toBe(config_0.fontSize); }); + it('should allow setting partial options', function () { + const defaultConfig = configApi.getConfig(); + + configApi.setConfig({ + quadrantChart: { + chartHeight: 600, + }, + }); + + const updatedConfig = configApi.getConfig(); + + // deep options we didn't update should remain the same + expect(defaultConfig.quadrantChart!.chartWidth).toEqual( + updatedConfig.quadrantChart!.chartWidth + ); + }); it('should set reset config properly', function () { const config_0 = { fontFamily: 'foo-font', fontSize: 150 }; configApi.setSiteConfig(config_0);